Changeset 15137
- Timestamp:
- 11/01/19 15:52:54 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abcl/src/org/armedbear/lisp/Lisp.java
r15036 r15137 1167 1167 { 1168 1168 StringBuilder sb = new StringBuilder(prefix); 1169 SpecialBinding binding = thread.getSpecialBinding(Symbol.GENSYM_COUNTER); 1169 final Symbol gensymCounter = Symbol.GENSYM_COUNTER; 1170 SpecialBinding binding = thread.getSpecialBinding(gensymCounter); 1170 1171 final LispObject oldValue; 1171 1172 if (binding != null) { 1172 1173 oldValue = binding.value; 1173 if (oldValue instanceof Fixnum 1174 || oldValue instanceof Bignum) 1175 binding.value = oldValue.incr(); 1174 if ((oldValue instanceof Fixnum 1175 || oldValue instanceof Bignum) && Fixnum.ZERO.isLessThanOrEqualTo(oldValue)) { 1176 binding.value = oldValue.incr(); 1177 } 1176 1178 else { 1177 Symbol.GENSYM_COUNTER.setSymbolValue(Fixnum.ZERO);1179 binding.value = Fixnum.ZERO; 1178 1180 error(new TypeError("The value of *GENSYM-COUNTER* was not a nonnegative integer. Old value: " + 1179 1181 oldValue.princToString() + " New value: 0")); … … 1182 1184 // we're manipulating a global resource 1183 1185 // make sure we operate thread-safely 1184 synchronized (Symbol.GENSYM_COUNTER) { 1185 oldValue = Symbol.GENSYM_COUNTER.getSymbolValue(); 1186 if (oldValue instanceof Fixnum 1187 || oldValue instanceof Bignum) 1188 Symbol.GENSYM_COUNTER.setSymbolValue(oldValue.incr()); 1186 synchronized (gensymCounter) { 1187 oldValue = gensymCounter.getSymbolValue(); 1188 if ((oldValue instanceof Fixnum 1189 || oldValue instanceof Bignum) && Fixnum.ZERO.isLessThanOrEqualTo(oldValue)) { 1190 gensymCounter.setSymbolValue(oldValue.incr()); 1191 } 1189 1192 else { 1190 Symbol.GENSYM_COUNTER.setSymbolValue(Fixnum.ZERO);1193 gensymCounter.setSymbolValue(Fixnum.ZERO); 1191 1194 error(new TypeError("The value of *GENSYM-COUNTER* was not a nonnegative integer. Old value: " + 1192 1195 oldValue.princToString() + " New value: 0"));
Note: See TracChangeset
for help on using the changeset viewer.