[armedbear-cvs] r11827 - trunk/abcl/src/org/armedbear/lisp
Erik Huelsmann
ehuelsmann at common-lisp.net
Sun May 3 21:00:29 UTC 2009
Author: ehuelsmann
Date: Sun May 3 17:00:28 2009
New Revision: 11827
Log:
P2-CATCH: Do what we do in P1-CATCH, which is binding
the CATCH block during compilation of the body.
Modified:
trunk/abcl/src/org/armedbear/lisp/compiler-pass2.lisp
Modified: trunk/abcl/src/org/armedbear/lisp/compiler-pass2.lisp
==============================================================================
--- trunk/abcl/src/org/armedbear/lisp/compiler-pass2.lisp (original)
+++ trunk/abcl/src/org/armedbear/lisp/compiler-pass2.lisp Sun May 3 17:00:28 2009
@@ -7792,11 +7792,12 @@
(aload tag-register)
(emit-invokevirtual +lisp-thread-class+ "pushCatchTag"
(lisp-object-arg-types 1) nil)
- ; Stack depth is 0.
- (label BEGIN-PROTECTED-RANGE) ; Start of protected range.
- (compile-progn-body (cddr form) target) ; Implicit PROGN.
- (label END-PROTECTED-RANGE) ; End of protected range.
- (emit 'goto EXIT) ; Jump over handlers.
+ (let ((*blocks* (cons block *blocks*)))
+ ; Stack depth is 0.
+ (label BEGIN-PROTECTED-RANGE) ; Start of protected range.
+ (compile-progn-body (cddr form) target) ; Implicit PROGN.
+ (label END-PROTECTED-RANGE) ; End of protected range.
+ (emit 'goto EXIT)) ; Jump over handlers.
(label THROW-HANDLER) ; Start of handler for THROW.
;; The Throw object is on the runtime stack. Stack depth is 1.
(emit 'dup) ; Stack depth is 2.
More information about the armedbear-cvs
mailing list