From 759a15d446b7f728d2d146cb1bfd6d722df9e998 Mon Sep 17 00:00:00 2001 From: Andrea Corallo Date: Sun, 21 Jul 2019 11:38:26 +0200 Subject: [PATCH] adding non locals --- lisp/emacs-lisp/comp.el | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) 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) -- 2.39.5