From: Andrea Corallo Date: Sun, 21 Jul 2019 09:38:26 +0000 (+0200) Subject: adding non locals X-Git-Tag: emacs-28.0.90~2727^2~1328 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=759a15d446b7f728d2d146cb1bfd6d722df9e998;p=emacs.git adding non locals --- diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el index a3c2db4283f..62b80a0a5ac 100644 --- a/lisp/emacs-lisp/comp.el +++ b/lisp/emacs-lisp/comp.el @@ -466,8 +466,25 @@ the annotation emission." :constant arg) ,(make-comp-mvar :const-vld t :constant nil)))) - (byte-pophandler) - (byte-pushconditioncase) + (byte-pophandler + (comp-emit '(pop-handler))) + (byte-pushconditioncase + (let ((blocks (comp-func-blocks comp-func)) + (fall-bb (comp-new-block-sym))) ;; Fall through block + (puthash fall-bb + (make-comp-block :sp (comp-sp)) + blocks) + (let ((target (comp-lap-to-limple-bb (cl-third inst))) + (handler-type (cdr (last inst)))) + (comp-emit (list 'push-handler (comp-slot-next) + handler-type + target + fall-bb)) + (puthash target + (make-comp-block :sp (comp-sp)) + blocks) + (comp-mark-block-closed)) + (comp-emit-block fall-bb))) (byte-pushcatch) (byte-nth auto) (byte-symbolp auto)