Changeset 11704 for trunk/abcl/src/org/armedbear/lisp/compiler-pass2.lisp
- Timestamp:
- 03/13/09 22:21:13 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abcl/src/org/armedbear/lisp/compiler-pass2.lisp
r11703 r11704 4469 4469 (form (block-form block)) 4470 4470 (*visible-variables* *visible-variables*) 4471 (specialp nil)) 4471 (specialp nil) 4472 (label-START (gensym)) 4473 (label-END (gensym)) 4474 (label-EXIT (gensym))) 4472 4475 ;; Walk the variable list looking for special bindings and unused lexicals. 4473 4476 (dolist (variable (block-vars block)) … … 4482 4485 (emit-push-current-thread) 4483 4486 (emit 'getfield +lisp-thread-class+ "lastSpecialBinding" +lisp-special-binding+) 4484 (astore (block-environment-register block))) 4487 (astore (block-environment-register block)) 4488 (label label-START)) 4485 4489 (propagate-vars block) 4486 4490 (ecase (car form) … … 4497 4501 (compile-progn-body (cddr form) target representation)) 4498 4502 (when specialp 4503 (emit 'goto label-EXIT) 4504 (label label-END) 4499 4505 ;; Restore dynamic environment. 4500 4506 (aload *thread*) 4501 4507 (aload (block-environment-register block)) 4502 (emit 'putfield +lisp-thread-class+ "lastSpecialBinding" +lisp-special-binding+)))) 4508 (emit 'putfield +lisp-thread-class+ "lastSpecialBinding" 4509 +lisp-special-binding+) 4510 (emit 'athrow) 4511 4512 (label label-EXIT) 4513 (aload *thread*) 4514 (aload (block-environment-register block)) 4515 (emit 'putfield +lisp-thread-class+ "lastSpecialBinding" 4516 +lisp-special-binding+) 4517 4518 (push (make-handler :from label-START 4519 :to label-END 4520 :code label-END 4521 :catch-type 0) *handlers*)))) 4503 4522 4504 4523 (defun p2-locally (form target representation)
Note: See TracChangeset
for help on using the changeset viewer.