diff options
Diffstat (limited to 'lisp/ChangeLog.lexbind')
-rw-r--r-- | lisp/ChangeLog.lexbind | 256 |
1 files changed, 256 insertions, 0 deletions
diff --git a/lisp/ChangeLog.lexbind b/lisp/ChangeLog.lexbind new file mode 100644 index 00000000000..ca491f961d7 --- /dev/null +++ b/lisp/ChangeLog.lexbind @@ -0,0 +1,256 @@ +2006-12-04 Miles Bader <miles@gnu.org> + + * Makefile.in (COMPILE_FIRST_STACK_DEPTH): New variable. + (compile, compile-always): Use it. + +2005-10-24 Miles Bader <miles@gnu.org> + + * subr.el (functionp): Re-remove. + + * emacs-lisp/bytecomp.el (byte-compile-closure): Add optional + ADD-LAMBDA argument, which we just pass to `byte-compile-lambda'. + (byte-compile-defun): Use ADD-LAMBDA arg to `byte-compile-closure' + instead of adding lambda ourselves. + +2004-08-09 Miles Bader <miles@gnu.org> + + Changes from merging the funvec patch: + + * emacs-lisp/bytecomp.el (byte-compile-make-closure): Use `curry' + instead of `vector' to create compiled closures. + + Merge funvec patch. + +2004-04-29 Miles Bader <miles@gnu.org> + + * emacs-lisp/bytecomp.el (byte-compile-top-level): Add new entries + to `byte-compile-lexical-environment' at the start, not end. + (byte-compile-delay-out): Correctly default STACK-ADJUST to zero. + + * emacs-lisp/byte-opt.el (byte-opt-update-stack-params): Don't + crash on no-op lapcode entries (car is nil). + + * emacs-lisp/byte-lexbind.el (byte-compile-make-lambda-lexenv): + Push a lexvar onto lexenv, not a vinfo! + +2004-04-11 Miles Bader <miles@gnu.org> + + * emacs-lisp/bytecomp.el (byte-compile-top-level): Correctly + analyze lexically-bound arguments. + + * emacs-lisp/byte-lexbind.el (byte-compile-lforminfo-analyze): + Use `append' instead of `nconc'. + + * emacs-lisp/byte-lexbind.el (byte-compile-make-lvarinfo): Don't + use backquote to make a mutable data-structure. + (byte-compile-lvarinfo-num-refs, byte-compile-lvarinfo-num-sets): + Renamed to use `num-' instead of `num'. + (byte-compile-make-lambda-lexenv): Adjusted accordingly. + +2004-04-10 Miles Bader <miles@gnu.org> + + * emacs-lisp/byte-lexbind.el (byte-compile-compute-lforminfo): + Look at variable's global specialp state too. + +2004-04-09 Miles Bader <miles@gnu.org> + + * emacs-lisp/byte-opt.el (byte-optimize-lapcode): Default + initial-stack-depth to 0. + (byte-optimize-lapcode): Discard the right number of values in + the stack-set+discard-->discard optimization. + +2004-04-02 Miles Bader <miles@gnu.org> + + * emacs-lisp/lisp-mode.el (eval-last-sexp-1): Setup the lexical + environment if lexical-binding is enabled. + +2003-10-14 Miles Bader <miles@gnu.org> + + * emacs-lisp/macroexp.el (macroexpand-all-1): Special-case + `backquote-list*' to avoid stack overflows. + +2003-04-04 Miles Bader <miles@gnu.org> + + * help-fns.el (help-function-arglist): Handle interpreted closures. + +2002-11-20 Miles Bader <miles@gnu.org> + + * emacs-lisp/bytecomp.el (byte-compile-stack-adjustment): + Correctly handle discardN* operators. + * emacs-lisp/byte-opt.el (byte-optimize-lapcode): Fix stack-depth + tracking errors. + +2002-08-26 Miles Bader <miles@gnu.org> + + * international/mule.el (make-char): Macroexpand call to + charset-id constructed by `byte-compile' hook. + + * emacs-lisp/macroexp.el (macroexpand-all-1): Expand defconst value. + + * emacs-lisp/byte-opt.el (byte-opt-update-stack-params): New macro. + (byte-optimize-lapcode): Keep track of stack-depth in final pass too. + Add more optimizations for lexical binding. + (byte-compile-inline-expand): Macroexpand result of inlining. + + * emacs-lisp/bytecomp.el (byte-compile-lambda): Update call to + byte-compile-closure-initial-lexenv-p. + (byte-discardN-preserve-tos): Alias to byte-discardN. + (byte-compile-push-binding-init): Don't push unused variables on + init-lexenv. + (byte-compile-push-binding-init): Don't use LFORMINFO if it's nil. + (byte-compile-lambda): Don't look at lexical environment unless + we're using lexical binding. + (byte-compile-defmacro): Correctly generate macros. + + * emacs-lisp/byte-lexbind.el (byte-compile-unbind): Optimize the + dynamic-bindings-only case. + (byte-compile-bind): Don't special-case unused lexical variables. + + * emacs-lisp/disass.el (disassemble-1): Print arg for discardN ops. + +2002-08-19 Miles Bader <miles@gnu.org> + + * emacs-lisp/byte-opt.el (byte-decompile-bytecode-1): Handle + `byte-discardN-preserve-tos' pseudo-op. + (byte-compile-side-effect-and-error-free-ops): Add `byte-stack-ref'. + (byte-compile-side-effect-free-ops): Add `byte-vec-ref'. + (byte-optimize-lapcode): Add some cases for stack-set/ref ops. + Add tracking of stack-depth. Unfinished code to collapse + lexical-unbinding sequences. + + * emacs-lisp/bytecomp.el (byte-compile-lapcode): Handle + `byte-discardN-preserve-tos' pseudo-op. + (byte-compile-top-level): If there are lexical args, output a TAG + op to record the initial stack-depth for the optimizer. + +2002-08-17 Miles Bader <miles@gnu.org> + + * emacs-lisp/bytecomp.el (byte-discardN): Add byte-defop. + (byte-compile-lapcode): Include byte-discardN. + (byte-compile-lambda): Fixup closure detection. + (byte-compile-top-level): Handle arguments for a lexical lambda. + (byte-compile-lexical-variable-ref, byte-compile-variable-ref) + (byte-compile-variable-set): Use byte-compile-stack-set/ref. + (byte-compile-discard): Add new parameters NUM and PRESERVE-TOS. + (byte-compile-stack-ref, byte-compile-stack-set): New functions. + (byte-compile-push-binding-init): Get the variable list properly + from LFORMINFO. + + * emacs-lisp/byte-lexbind.el (byte-compile-lforminfo-analyze): + Ignore setq'd variables we're not interested in. + (byte-compile-make-lambda-lexenv): Add assertion that closed-over + variables be heap allocated. + (byte-compile-closure-initial-lexenv-p): Renamed from + byte-compile-closure-lexenv-p. + (byte-compile-non-stack-bindings-p): Get the variable list + properly from LFORMINFO. + (byte-compile-maybe-push-heap-environment): Handle the + no-closed-over-variables case correctly. + (byte-compile-bind): Use byte-compile-stack-set/ref. + Don't bother modifying INIT-LEXENV as no one will see the changes. + (byte-compile-unbind): Call `byte-compile-discard' to handle + unbinding lexical bindings. + + * emacs-lisp/disass.el (disassemble-internal): Handle closures. + (disassemble-1): Handle new bytecodes. + * emacs-lisp/byte-opt.el (disassemble-offset): Handle new bytecodes. + +2002-06-16 Miles Bader <miles@gnu.org> + + * emacs-lisp/macroexp.el (macroexp-accumulate): New macro. + (macroexpand-all-forms, macroexpand-all-clauses): Use it. + * Makefile.in (compile): Undo previous change. + +2002-06-14 Miles Bader <miles@gnu.org> + + * Makefile.in (COMPILE_FIRST): Add `emacs-lisp/macroexp.el'. + (compile): Add a special case that compiles `emacs-lisp/macroexp.el' + with an increased max-lisp-eval-depth. + + * emacs-lisp/bytecomp.el: Provide `bytecomp-preload', at the + beginning of the file. Require `byte-lexbind' at compile time. + Add a few doc string. + (byte-compile-push-bytecodes) + (byte-compile-push-bytecode-const2): New macros. + (byte-compile-lapcode): Use them. Do general code cleanup. + (byte-compile-initial-macro-environment): Expand macros in + byte-compile-eval before passing to byte-compile-top-level. + (byte-compile): Use the `byte-compile-initial-macro-environment'. + + * emacs-lisp/byte-lexbind.el: Require `bytecomp-preload' instead of + `bytecomp'. + (byte-compile-bind): Use `byte-compile-dynamic-variable-bind' to bind + dynamic variables. + (byte-compile-maybe-push-heap-environment): Fix function name typo. + +2002-06-13 Miles Bader <miles@gnu.org> + + Byte compiler lexical binding support (not finished yet): + * emacs-lisp/bytecomp.el: Require `macroexp'. + (byte-compile-lexical-environment) + (byte-compile-current-heap-environment) + (byte-compile-current-num-closures): New variables. + (0, 178, 179, 180, 181): New byte-opcodes. + (byte-compile-lapcode): Handle stack-ref/set opcodes. Signal an + error if a delay-output placeholder is not filled in yet. + (byte-compile-file-form, byte-compile): Expand all macros with + `macroexpand-all'. + (byte-compile-file-form-defsubst, byte-compile-form): Don't expand + macros here. + (byte-compile-make-lambda-lexenv): Autoload. + (byte-compile-lambda): Initial code for handling lexically-bound + arguments and closures; doesn't work yet. + (byte-compile-closure-code-p, byte-compile-make-closure) + (byte-compile-closure): New functions. + (byte-compile-check-variable, byte-compile-dynamic-variable-op) + (byte-compile-dynamic-variable-bind) + (byte-compile-lexical-variable-ref, byte-compile-variable-set): + New functions. + (byte-compile-variable-ref): Remove second argument. Now only + handles real variable references (not setting or binding). + (byte-compile-push-unknown-constant) + (byte-compile-resolve-unknown-constant): New functions. + (byte-compile-funarg, byte-compile-funarg-2): Functions removed. + (byte-compile-function-form): Use either `byte-compile-constant' + or `byte-compile-closure'. + (byte-compile-setq): Use `byte-compile-variable-set' instead of + `byte-compile-variable-ref'. + (apply, mapcar, mapatoms, mapconcat, mapc, sort): + `byte-defop-compiler-1's removed. + (byte-compile-while): Make sure lexically-bound variables inside + the loop don't get stored in an environment outside the loop. + (byte-compile-compute-lforminfo): Autoload. + (byte-compile-push-binding-init): New function. + (byte-compile-let, byte-compile-let*): Handle lexical binding. + (byte-compile-defun): Use `byte-compile-closure' to do the work. + (byte-compile-defmacro): Use `byte-compile-make-closure'. + (byte-compile-defvar): Expand the generated call to `push' since + we're past macroexpansion already. + (byte-compile-stack-adjustment): New function. + (byte-compile-out): Make second arg optional. Rewrite for clarity. + (byte-compile-delay-out, byte-compile-delayed-out): New functions. + + * emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): Don't + expand macros here. + + * emacs-lisp/macroexp.el (macroexpand-all-1): Expand defmacro forms. + + * emacs-lisp/byte-lexbind.el (byte-compile-make-lvarinfo) + (byte-compile-lforminfo-add-var) + (byte-compile-lforminfo-note-closure) + (byte-compile-compute-lforminfo) + (byte-compile-lforminfo-from-lambda) + (byte-compile-lforminfo-analyze) + (byte-compile-heapenv-add-accessible-env) + (byte-compile-heapenv-ensure-access) + (byte-compile-rearrange-let-clauses, byte-compile-bind) + (byte-compile-unbind): Fix a bunch of typos. + +2002-06-12 Miles Bader <miles@gnu.org> + + * emacs-lisp/byte-lexbind.el, emacs-lisp/macroexp.el: New files. + + * subr.el (functionp): Function removed (now a subr). + * help-fns.el (describe-function-1): Handle interpreted closures. + +;; arch-tag: bd1b5b8b-fdb2-425d-9ac2-20689fb0ee70 |