diff options
| author | Stefan Monnier | 2010-06-13 16:36:17 -0400 |
|---|---|---|
| committer | Stefan Monnier | 2010-06-13 16:36:17 -0400 |
| commit | b9598260f96ddc652cd82ab64bbe922ccfc48a29 (patch) | |
| tree | 2a692a8471de07f2578ea481c99971585def8eda /lisp/ChangeLog.lexbind | |
| parent | a6e8d97c1414230e577d375c27da78c858a5fa75 (diff) | |
| download | emacs-b9598260f96ddc652cd82ab64bbe922ccfc48a29.tar.gz emacs-b9598260f96ddc652cd82ab64bbe922ccfc48a29.zip | |
New branch for lexbind, losing all history.
This initial patch is based on 2002-06-27T22:39:10Z!storm@cua.dk of the original
lexbind branch.
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 @@ | |||
| 1 | 2006-12-04 Miles Bader <miles@gnu.org> | ||
| 2 | |||
| 3 | * Makefile.in (COMPILE_FIRST_STACK_DEPTH): New variable. | ||
| 4 | (compile, compile-always): Use it. | ||
| 5 | |||
| 6 | 2005-10-24 Miles Bader <miles@gnu.org> | ||
| 7 | |||
| 8 | * subr.el (functionp): Re-remove. | ||
| 9 | |||
| 10 | * emacs-lisp/bytecomp.el (byte-compile-closure): Add optional | ||
| 11 | ADD-LAMBDA argument, which we just pass to `byte-compile-lambda'. | ||
| 12 | (byte-compile-defun): Use ADD-LAMBDA arg to `byte-compile-closure' | ||
| 13 | instead of adding lambda ourselves. | ||
| 14 | |||
| 15 | 2004-08-09 Miles Bader <miles@gnu.org> | ||
| 16 | |||
| 17 | Changes from merging the funvec patch: | ||
| 18 | |||
| 19 | * emacs-lisp/bytecomp.el (byte-compile-make-closure): Use `curry' | ||
| 20 | instead of `vector' to create compiled closures. | ||
| 21 | |||
| 22 | Merge funvec patch. | ||
| 23 | |||
| 24 | 2004-04-29 Miles Bader <miles@gnu.org> | ||
| 25 | |||
| 26 | * emacs-lisp/bytecomp.el (byte-compile-top-level): Add new entries | ||
| 27 | to `byte-compile-lexical-environment' at the start, not end. | ||
| 28 | (byte-compile-delay-out): Correctly default STACK-ADJUST to zero. | ||
| 29 | |||
| 30 | * emacs-lisp/byte-opt.el (byte-opt-update-stack-params): Don't | ||
| 31 | crash on no-op lapcode entries (car is nil). | ||
| 32 | |||
| 33 | * emacs-lisp/byte-lexbind.el (byte-compile-make-lambda-lexenv): | ||
| 34 | Push a lexvar onto lexenv, not a vinfo! | ||
| 35 | |||
| 36 | 2004-04-11 Miles Bader <miles@gnu.org> | ||
| 37 | |||
| 38 | * emacs-lisp/bytecomp.el (byte-compile-top-level): Correctly | ||
| 39 | analyze lexically-bound arguments. | ||
| 40 | |||
| 41 | * emacs-lisp/byte-lexbind.el (byte-compile-lforminfo-analyze): | ||
| 42 | Use `append' instead of `nconc'. | ||
| 43 | |||
| 44 | * emacs-lisp/byte-lexbind.el (byte-compile-make-lvarinfo): Don't | ||
| 45 | use backquote to make a mutable data-structure. | ||
| 46 | (byte-compile-lvarinfo-num-refs, byte-compile-lvarinfo-num-sets): | ||
| 47 | Renamed to use `num-' instead of `num'. | ||
| 48 | (byte-compile-make-lambda-lexenv): Adjusted accordingly. | ||
| 49 | |||
| 50 | 2004-04-10 Miles Bader <miles@gnu.org> | ||
| 51 | |||
| 52 | * emacs-lisp/byte-lexbind.el (byte-compile-compute-lforminfo): | ||
| 53 | Look at variable's global specialp state too. | ||
| 54 | |||
| 55 | 2004-04-09 Miles Bader <miles@gnu.org> | ||
| 56 | |||
| 57 | * emacs-lisp/byte-opt.el (byte-optimize-lapcode): Default | ||
| 58 | initial-stack-depth to 0. | ||
| 59 | (byte-optimize-lapcode): Discard the right number of values in | ||
| 60 | the stack-set+discard-->discard optimization. | ||
| 61 | |||
| 62 | 2004-04-02 Miles Bader <miles@gnu.org> | ||
| 63 | |||
| 64 | * emacs-lisp/lisp-mode.el (eval-last-sexp-1): Setup the lexical | ||
| 65 | environment if lexical-binding is enabled. | ||
| 66 | |||
| 67 | 2003-10-14 Miles Bader <miles@gnu.org> | ||
| 68 | |||
| 69 | * emacs-lisp/macroexp.el (macroexpand-all-1): Special-case | ||
| 70 | `backquote-list*' to avoid stack overflows. | ||
| 71 | |||
| 72 | 2003-04-04 Miles Bader <miles@gnu.org> | ||
| 73 | |||
| 74 | * help-fns.el (help-function-arglist): Handle interpreted closures. | ||
| 75 | |||
| 76 | 2002-11-20 Miles Bader <miles@gnu.org> | ||
| 77 | |||
| 78 | * emacs-lisp/bytecomp.el (byte-compile-stack-adjustment): | ||
| 79 | Correctly handle discardN* operators. | ||
| 80 | * emacs-lisp/byte-opt.el (byte-optimize-lapcode): Fix stack-depth | ||
| 81 | tracking errors. | ||
| 82 | |||
| 83 | 2002-08-26 Miles Bader <miles@gnu.org> | ||
| 84 | |||
| 85 | * international/mule.el (make-char): Macroexpand call to | ||
| 86 | charset-id constructed by `byte-compile' hook. | ||
| 87 | |||
| 88 | * emacs-lisp/macroexp.el (macroexpand-all-1): Expand defconst value. | ||
| 89 | |||
| 90 | * emacs-lisp/byte-opt.el (byte-opt-update-stack-params): New macro. | ||
| 91 | (byte-optimize-lapcode): Keep track of stack-depth in final pass too. | ||
| 92 | Add more optimizations for lexical binding. | ||
| 93 | (byte-compile-inline-expand): Macroexpand result of inlining. | ||
| 94 | |||
| 95 | * emacs-lisp/bytecomp.el (byte-compile-lambda): Update call to | ||
| 96 | byte-compile-closure-initial-lexenv-p. | ||
| 97 | (byte-discardN-preserve-tos): Alias to byte-discardN. | ||
| 98 | (byte-compile-push-binding-init): Don't push unused variables on | ||
| 99 | init-lexenv. | ||
| 100 | (byte-compile-push-binding-init): Don't use LFORMINFO if it's nil. | ||
| 101 | (byte-compile-lambda): Don't look at lexical environment unless | ||
| 102 | we're using lexical binding. | ||
| 103 | (byte-compile-defmacro): Correctly generate macros. | ||
| 104 | |||
| 105 | * emacs-lisp/byte-lexbind.el (byte-compile-unbind): Optimize the | ||
| 106 | dynamic-bindings-only case. | ||
| 107 | (byte-compile-bind): Don't special-case unused lexical variables. | ||
| 108 | |||
| 109 | * emacs-lisp/disass.el (disassemble-1): Print arg for discardN ops. | ||
| 110 | |||
| 111 | 2002-08-19 Miles Bader <miles@gnu.org> | ||
| 112 | |||
| 113 | * emacs-lisp/byte-opt.el (byte-decompile-bytecode-1): Handle | ||
| 114 | `byte-discardN-preserve-tos' pseudo-op. | ||
| 115 | (byte-compile-side-effect-and-error-free-ops): Add `byte-stack-ref'. | ||
| 116 | (byte-compile-side-effect-free-ops): Add `byte-vec-ref'. | ||
| 117 | (byte-optimize-lapcode): Add some cases for stack-set/ref ops. | ||
| 118 | Add tracking of stack-depth. Unfinished code to collapse | ||
| 119 | lexical-unbinding sequences. | ||
| 120 | |||
| 121 | * emacs-lisp/bytecomp.el (byte-compile-lapcode): Handle | ||
| 122 | `byte-discardN-preserve-tos' pseudo-op. | ||
| 123 | (byte-compile-top-level): If there are lexical args, output a TAG | ||
| 124 | op to record the initial stack-depth for the optimizer. | ||
| 125 | |||
| 126 | 2002-08-17 Miles Bader <miles@gnu.org> | ||
| 127 | |||
| 128 | * emacs-lisp/bytecomp.el (byte-discardN): Add byte-defop. | ||
| 129 | (byte-compile-lapcode): Include byte-discardN. | ||
| 130 | (byte-compile-lambda): Fixup closure detection. | ||
| 131 | (byte-compile-top-level): Handle arguments for a lexical lambda. | ||
| 132 | (byte-compile-lexical-variable-ref, byte-compile-variable-ref) | ||
| 133 | (byte-compile-variable-set): Use byte-compile-stack-set/ref. | ||
| 134 | (byte-compile-discard): Add new parameters NUM and PRESERVE-TOS. | ||
| 135 | (byte-compile-stack-ref, byte-compile-stack-set): New functions. | ||
| 136 | (byte-compile-push-binding-init): Get the variable list properly | ||
| 137 | from LFORMINFO. | ||
| 138 | |||
| 139 | * emacs-lisp/byte-lexbind.el (byte-compile-lforminfo-analyze): | ||
| 140 | Ignore setq'd variables we're not interested in. | ||
| 141 | (byte-compile-make-lambda-lexenv): Add assertion that closed-over | ||
| 142 | variables be heap allocated. | ||
| 143 | (byte-compile-closure-initial-lexenv-p): Renamed from | ||
| 144 | byte-compile-closure-lexenv-p. | ||
| 145 | (byte-compile-non-stack-bindings-p): Get the variable list | ||
| 146 | properly from LFORMINFO. | ||
| 147 | (byte-compile-maybe-push-heap-environment): Handle the | ||
| 148 | no-closed-over-variables case correctly. | ||
| 149 | (byte-compile-bind): Use byte-compile-stack-set/ref. | ||
| 150 | Don't bother modifying INIT-LEXENV as no one will see the changes. | ||
| 151 | (byte-compile-unbind): Call `byte-compile-discard' to handle | ||
| 152 | unbinding lexical bindings. | ||
| 153 | |||
| 154 | * emacs-lisp/disass.el (disassemble-internal): Handle closures. | ||
| 155 | (disassemble-1): Handle new bytecodes. | ||
| 156 | * emacs-lisp/byte-opt.el (disassemble-offset): Handle new bytecodes. | ||
| 157 | |||
| 158 | 2002-06-16 Miles Bader <miles@gnu.org> | ||
| 159 | |||
| 160 | * emacs-lisp/macroexp.el (macroexp-accumulate): New macro. | ||
| 161 | (macroexpand-all-forms, macroexpand-all-clauses): Use it. | ||
| 162 | * Makefile.in (compile): Undo previous change. | ||
| 163 | |||
| 164 | 2002-06-14 Miles Bader <miles@gnu.org> | ||
| 165 | |||
| 166 | * Makefile.in (COMPILE_FIRST): Add `emacs-lisp/macroexp.el'. | ||
| 167 | (compile): Add a special case that compiles `emacs-lisp/macroexp.el' | ||
| 168 | with an increased max-lisp-eval-depth. | ||
| 169 | |||
| 170 | * emacs-lisp/bytecomp.el: Provide `bytecomp-preload', at the | ||
| 171 | beginning of the file. Require `byte-lexbind' at compile time. | ||
| 172 | Add a few doc string. | ||
| 173 | (byte-compile-push-bytecodes) | ||
| 174 | (byte-compile-push-bytecode-const2): New macros. | ||
| 175 | (byte-compile-lapcode): Use them. Do general code cleanup. | ||
| 176 | (byte-compile-initial-macro-environment): Expand macros in | ||
| 177 | byte-compile-eval before passing to byte-compile-top-level. | ||
| 178 | (byte-compile): Use the `byte-compile-initial-macro-environment'. | ||
| 179 | |||
| 180 | * emacs-lisp/byte-lexbind.el: Require `bytecomp-preload' instead of | ||
| 181 | `bytecomp'. | ||
| 182 | (byte-compile-bind): Use `byte-compile-dynamic-variable-bind' to bind | ||
| 183 | dynamic variables. | ||
| 184 | (byte-compile-maybe-push-heap-environment): Fix function name typo. | ||
| 185 | |||
| 186 | 2002-06-13 Miles Bader <miles@gnu.org> | ||
| 187 | |||
| 188 | Byte compiler lexical binding support (not finished yet): | ||
| 189 | * emacs-lisp/bytecomp.el: Require `macroexp'. | ||
| 190 | (byte-compile-lexical-environment) | ||
| 191 | (byte-compile-current-heap-environment) | ||
| 192 | (byte-compile-current-num-closures): New variables. | ||
| 193 | (0, 178, 179, 180, 181): New byte-opcodes. | ||
| 194 | (byte-compile-lapcode): Handle stack-ref/set opcodes. Signal an | ||
| 195 | error if a delay-output placeholder is not filled in yet. | ||
| 196 | (byte-compile-file-form, byte-compile): Expand all macros with | ||
| 197 | `macroexpand-all'. | ||
| 198 | (byte-compile-file-form-defsubst, byte-compile-form): Don't expand | ||
| 199 | macros here. | ||
| 200 | (byte-compile-make-lambda-lexenv): Autoload. | ||
| 201 | (byte-compile-lambda): Initial code for handling lexically-bound | ||
| 202 | arguments and closures; doesn't work yet. | ||
| 203 | (byte-compile-closure-code-p, byte-compile-make-closure) | ||
| 204 | (byte-compile-closure): New functions. | ||
| 205 | (byte-compile-check-variable, byte-compile-dynamic-variable-op) | ||
| 206 | (byte-compile-dynamic-variable-bind) | ||
| 207 | (byte-compile-lexical-variable-ref, byte-compile-variable-set): | ||
| 208 | New functions. | ||
| 209 | (byte-compile-variable-ref): Remove second argument. Now only | ||
| 210 | handles real variable references (not setting or binding). | ||
| 211 | (byte-compile-push-unknown-constant) | ||
| 212 | (byte-compile-resolve-unknown-constant): New functions. | ||
| 213 | (byte-compile-funarg, byte-compile-funarg-2): Functions removed. | ||
| 214 | (byte-compile-function-form): Use either `byte-compile-constant' | ||
| 215 | or `byte-compile-closure'. | ||
| 216 | (byte-compile-setq): Use `byte-compile-variable-set' instead of | ||
| 217 | `byte-compile-variable-ref'. | ||
| 218 | (apply, mapcar, mapatoms, mapconcat, mapc, sort): | ||
| 219 | `byte-defop-compiler-1's removed. | ||
| 220 | (byte-compile-while): Make sure lexically-bound variables inside | ||
| 221 | the loop don't get stored in an environment outside the loop. | ||
| 222 | (byte-compile-compute-lforminfo): Autoload. | ||
| 223 | (byte-compile-push-binding-init): New function. | ||
| 224 | (byte-compile-let, byte-compile-let*): Handle lexical binding. | ||
| 225 | (byte-compile-defun): Use `byte-compile-closure' to do the work. | ||
| 226 | (byte-compile-defmacro): Use `byte-compile-make-closure'. | ||
| 227 | (byte-compile-defvar): Expand the generated call to `push' since | ||
| 228 | we're past macroexpansion already. | ||
| 229 | (byte-compile-stack-adjustment): New function. | ||
| 230 | (byte-compile-out): Make second arg optional. Rewrite for clarity. | ||
| 231 | (byte-compile-delay-out, byte-compile-delayed-out): New functions. | ||
| 232 | |||
| 233 | * emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): Don't | ||
| 234 | expand macros here. | ||
| 235 | |||
| 236 | * emacs-lisp/macroexp.el (macroexpand-all-1): Expand defmacro forms. | ||
| 237 | |||
| 238 | * emacs-lisp/byte-lexbind.el (byte-compile-make-lvarinfo) | ||
| 239 | (byte-compile-lforminfo-add-var) | ||
| 240 | (byte-compile-lforminfo-note-closure) | ||
| 241 | (byte-compile-compute-lforminfo) | ||
| 242 | (byte-compile-lforminfo-from-lambda) | ||
| 243 | (byte-compile-lforminfo-analyze) | ||
| 244 | (byte-compile-heapenv-add-accessible-env) | ||
| 245 | (byte-compile-heapenv-ensure-access) | ||
| 246 | (byte-compile-rearrange-let-clauses, byte-compile-bind) | ||
| 247 | (byte-compile-unbind): Fix a bunch of typos. | ||
| 248 | |||
| 249 | 2002-06-12 Miles Bader <miles@gnu.org> | ||
| 250 | |||
| 251 | * emacs-lisp/byte-lexbind.el, emacs-lisp/macroexp.el: New files. | ||
| 252 | |||
| 253 | * subr.el (functionp): Function removed (now a subr). | ||
| 254 | * help-fns.el (describe-function-1): Handle interpreted closures. | ||
| 255 | |||
| 256 | ;; arch-tag: bd1b5b8b-fdb2-425d-9ac2-20689fb0ee70 | ||