[armedbear-cvs] r12996 - trunk/abcl/src/org/armedbear/lisp

Erik Huelsmann ehuelsmann at common-lisp.net
Thu Nov 4 13:41:41 UTC 2010


Author: ehuelsmann
Date: Thu Nov  4 09:41:38 2010
New Revision: 12996

Log:
Fix JRockit crashing on our byte code - second occurrance.

Found by: Joel Borggrén-Franck
          joel (dot) borggren (dot) franck <at> gmail.com
Patch by: me

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	Thu Nov  4 09:41:38 2010
@@ -6447,6 +6447,7 @@
            (BEGIN-PROTECTED-RANGE (gensym))
            (END-PROTECTED-RANGE (gensym))
            (THROW-HANDLER (gensym))
+           (RETHROW (gensym))
            (DEFAULT-HANDLER (gensym))
            (EXIT (gensym)))
       (compile-form (second form) tag-register nil) ; Tag.
@@ -6473,6 +6474,11 @@
                           (list +lisp-thread+) +lisp-object+)
       (emit-move-from-stack target) ; Stack depth is 0.
       (emit 'goto EXIT)
+      (label RETHROW) ; Start of handler for all other Throwables.
+      ;; A Throwable object is on the runtime stack here. Stack depth is 1.
+      (emit-push-current-thread)
+      (emit-invokevirtual +lisp-thread+ "popCatchTag" nil nil)
+      (emit 'athrow) ; Re-throw.
       (label DEFAULT-HANDLER) ; Start of handler for all other Throwables.
       ;; A Throwable object is on the runtime stack here. Stack depth is 1.
       (emit-push-current-thread)




More information about the armedbear-cvs mailing list