Changeset 15554
- Timestamp:
- 02/23/22 14:37:02 (11 months ago)
- Location:
- trunk/abcl
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abcl/contrib/abcl-introspect/abcl-introspect.lisp
r15552 r15554 373 373 (defun environment-parts(env) 374 374 (append 375 (loop for binding = 375 (loop for binding = (jss:get-java-field env "vars" t) then (jss:get-java-field binding "next" t) 376 376 while binding 377 377 for symbol = (jss:get-java-field binding "symbol" t) … … 381 381 collect (list (if special 382 382 :special-variable 383 (if (jss:jtypep value 'lisp.SymbolMacro) 384 :symbol-macro 385 :lexical-variable)) 383 386 :lexical-variable) 384 387 symbol 385 (if special386 ( symbol-value symbol)388 (if (jss:jtypep value 'lisp.SymbolMacro) 389 (#"getExpansion" value) 387 390 value)) 388 391 into them 389 392 finally (return them)) 390 (loop for binding = 393 (loop for binding = (jss:get-java-field env "lastFunctionBinding" t) 391 394 then (jss:get-java-field binding "next" t) 392 395 while binding … … 395 398 unless (find name them :key 'second) 396 399 collect (list :lexical-function name value) into them 397 finally (return them)))) 400 finally (return them)) 401 (loop for binding = (jss::get-java-field env "blocks" t) 402 then (jss::get-java-field binding "next" t) 403 while binding 404 for name = (jss::get-java-field binding "symbol" t) 405 for value = (jss::get-java-field binding "value" t) 406 unless (find name them :key 'second) 407 collect (list :block name value) into them 408 finally (return them)))) 398 409 399 410 ;; Locals -
trunk/abcl/src/org/armedbear/lisp/Primitives.java
r15552 r15554 3690 3690 { 3691 3691 Environment ext = new Environment(env); 3692 LispThread thread = LispThread.currentThread(); 3692 3693 try { 3694 thread.envStack.push(ext); 3693 3695 return processTagBody(args, preprocessTagBody(args, ext), ext); 3694 3696 } 3695 3697 finally { 3696 3698 ext.inactive = true; 3699 while (thread.envStack.pop() != ext) {}; 3697 3700 } 3698 3701 } … … 3746 3749 final LispThread thread = LispThread.currentThread(); 3747 3750 try { 3751 thread.envStack.push(ext); 3748 3752 return progn(body, ext, thread); 3749 3753 } catch (Return ret) { … … 3754 3758 } 3755 3759 finally { 3760 while (thread.envStack.pop() != ext) {}; 3756 3761 ext.inactive = true; 3757 3762 } -
trunk/abcl/src/org/armedbear/lisp/SpecialOperators.java
r15552 r15554 193 193 Environment ext = new Environment(env); 194 194 try { 195 thread.envStack.push(ext); 195 196 // Declare our free specials, this will correctly raise 196 197 LispObject body = ext.processDeclarations(args.cdr()); … … 217 218 finally { 218 219 thread.resetSpecialBindings(mark); 220 while (thread.envStack.pop() != ext) {}; 219 221 } 220 222 } … … 257 259 final LispThread thread = LispThread.currentThread(); 258 260 final Environment ext = new Environment(env); 259 args = ext.processDeclarations(args); 260 return progn(args, ext, thread); 261 try { 262 thread.envStack.push(ext); 263 args = ext.processDeclarations(args); 264 return progn(args, ext, thread); 265 } 266 finally { 267 while (thread.envStack.pop() != ext) {}; 268 } 261 269 } 262 270 };
Note: See TracChangeset
for help on using the changeset viewer.