Subject: Re: bug#15294: 24.3.50; js2-mode parser is several times slower in lexical-binding mode

From: Stefan Monnier <[email-masked]>
Date: Wed, 18 Sep 2013 19:48:48 -0400

I now have a tentative patch which introduces new bytecodes for
"catch" which avoid the need to create closures for
lexical-binding code.

Current results:
- dynbind old-bytecode: 0.84s
- dynbind new-bytecode: 0.83s
- lexbind old-bytecode: 2.14s
- lexbind new-bytecode: 0.67s

Of course, code compiled with the new bytecodes won't run on
non-bleeding edge Emacs.

On my "standard test" (i.e. time to recompile all the emacs/lisp files),
the new bytecodes make no measurable difference, so `catch' doesn't seem
to be used very much there.

Similar changes would be welcome for condition-case and
unwind-protect, and since adding new bytecodes is something I'd rather
not do too often (and since there aren't many unused bytecodes left),
I'll try to get a complete patch first to make sure I don't have to
change my mind and use different byte codes.

        Stefan