Commit | Line | Data |
---|---|---|
3e21b6a7 SM |
1 | 2011-02-21 Stefan Monnier <monnier@iro.umontreal.ca> |
2 | ||
3 | * subr.el (with-output-to-temp-buffer): New macro. | |
4 | ||
5 | * simple.el (count-words-region): Don't use interactive-p. | |
6 | ||
7 | * minibuffer.el: Use lexical-binding. Replace all uses of lexical-let. | |
8 | ||
9 | * emacs-lisp/eieio.el (eieio-defgeneric-form-primary-only-one): | |
10 | Call byte-compile rather than byte-compile-lambda. | |
11 | ||
12 | * emacs-lisp/eieio-comp.el (eieio-byte-compile-file-form-defmethod): | |
13 | Rename from byte-compile-file-form-defmethod. | |
14 | Don't byte-compile-lambda. | |
15 | (eieio-byte-compile-defmethod-param-convert): Rename from | |
16 | byte-compile-defmethod-param-convert. | |
17 | ||
18 | * emacs-lisp/cl-extra.el (cl-macroexpand-all): Don't assume that the | |
19 | value of (function (lambda ...)) is self-quoting. | |
20 | ||
21 | * emacs-lisp/cconv.el: Use lexical-binding. | |
22 | (cconv--lookup-let): Rename from cconv-lookup-let. | |
23 | (cconv-closure-convert-rec): Fix handling of captured+mutated | |
24 | arguments in defun/defmacro. | |
25 | ||
26 | * emacs-lisp/bytecomp.el (byte-compile-lapcode): | |
27 | Turn stack-ref-0 into dup. | |
28 | (byte-compile-form): Don't indirect-function since it can signal | |
29 | errors. | |
30 | (byte-compile-stack-ref, byte-compile-stack-set): Adjust to stack-refs | |
31 | being relative to top rather than to bottom in the byte-code. | |
32 | (with-output-to-temp-buffer): Remove. | |
33 | (byte-compile-with-output-to-temp-buffer): Remove. | |
34 | ||
35 | * emacs-lisp/byte-opt.el (byte-compile-side-effect-and-error-free-ops): | |
36 | Remove interactive-p. | |
37 | (byte-optimize-lapcode): Update optimizations now that stack-refs are | |
38 | relative to the top rather than to the bottom. | |
39 | ||
e0f57e65 SM |
40 | 2011-02-19 Stefan Monnier <monnier@iro.umontreal.ca> |
41 | ||
42 | * subr.el (save-window-excursion): New macro, moved from C. | |
43 | * emacs-lisp/lisp-mode.el (save-window-excursion): Don't touch. | |
44 | * emacs-lisp/cconv.el (cconv-closure-convert-rec, cconv-analyse-form): | |
45 | Don't handle save-window-excursion any more. | |
46 | * emacs-lisp/bytecomp.el (interactive-p, save-window-excursion): | |
47 | Don't use the byte-code any more. | |
48 | (byte-compile-form): Check macro expansion was done. | |
49 | (byte-compile-save-window-excursion): Remove. | |
50 | * emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): | |
51 | Ignore save-window-excursion. Don't macroepand any more. | |
52 | ||
9a05edc4 SM |
53 | 2011-02-18 Stefan Monnier <monnier@iro.umontreal.ca> |
54 | ||
55 | * emacs-lisp/pcase.el (pcase--expand, pcase--u, pcase--u1, pcase--q1): | |
56 | Avoid destructuring-bind which results in poorer code. | |
57 | ||
b38b1ec0 SM |
58 | 2011-02-17 Stefan Monnier <monnier@iro.umontreal.ca> |
59 | ||
60 | * files.el (lexical-binding): Add a safe-local-variable property. | |
61 | ||
62 | * emacs-lisp/cl-macs.el (cl-byte-compile-block): Disable optimization | |
63 | in lexbind, because it needs a different implementation. | |
64 | ||
65 | * emacs-lisp/cconv.el (cconv--set-diff, cconv--set-diff-map) | |
66 | (cconv--map-diff, cconv--map-diff-elem, cconv--map-diff-set): New funs. | |
67 | (cconv--env-var): New constant. | |
68 | (cconv-closure-convert-rec): Use it and use them. Fix a typo that | |
69 | ended up forgetting to remove entries from lmenvs in `let'. | |
70 | For `lambda' use the outer `fvrs' when building the closure and don't | |
71 | forget to remove `vars' from the `emvrs' and `lmenvs' of the body. | |
72 | ||
73 | * emacs-lisp/bytecomp.el (byte-compile-arglist-warn): | |
74 | Correctly extract arglist from `closure's. | |
75 | (byte-compile-cl-warn): Compiler-macros are run earlier now. | |
76 | (byte-compile-top-level): Bind byte-compile-lexical-environment to nil, | |
77 | except for lambdas. | |
78 | (byte-compile-form): Don't run the compiler-macro expander here. | |
79 | (byte-compile-let): Merge with byte-compile-let*. | |
80 | Don't preserve-body-value if the body's value was discarded. | |
81 | ||
82 | * emacs-lisp/byte-opt.el (byte-inline-lapcode): Check how many elements | |
83 | are added to the stack. | |
84 | (byte-compile-splice-in-already-compiled-code): Don't touch lexical nor | |
85 | byte-compile-depth now that byte-inline-lapcode does it for us. | |
86 | (byte-compile-inline-expand): Don't inline dynbind byte code into | |
87 | lexbind code, since it has to be done differently. | |
88 | ||
ce5b520a SM |
89 | 2011-02-12 Stefan Monnier <monnier@iro.umontreal.ca> |
90 | ||
91 | * emacs-lisp/byte-lexbind.el: Delete. | |
92 | ||
93 | * emacs-lisp/bytecomp.el (byte-compile-current-heap-environment) | |
94 | (byte-compile-current-num-closures): Remove vars. | |
95 | (byte-vec-ref, byte-vec-set): Remove byte codes. | |
96 | (byte-compile-arglist-vars, byte-compile-make-lambda-lexenv): Move from | |
97 | byte-lexbind.el. | |
98 | (byte-compile-lambda): Never build a closure. | |
99 | (byte-compile-closure-code-p, byte-compile-make-closure): Remove. | |
100 | (byte-compile-closure): Simplify. | |
101 | (byte-compile-top-level): Don't mess with heap environments. | |
102 | (byte-compile-dynamic-variable-bind): Always maintain | |
103 | byte-compile-bound-variables. | |
104 | (byte-compile-variable-ref, byte-compile-variable-set): Always just use | |
105 | the stack for lexical vars. | |
106 | (byte-compile-push-binding-init): Simplify. | |
107 | (byte-compile-not-lexical-var-p): New function, moved from cconv.el. | |
108 | (byte-compile-bind, byte-compile-unbind): New functions, moved and | |
109 | simplified from byte-lexbind.el. | |
110 | (byte-compile-let, byte-compile-let*): Simplify. | |
111 | (byte-compile-condition-case): Don't add :fun-body to the bound vars. | |
112 | (byte-compile-defmacro): Simplify. | |
113 | ||
114 | * emacs-lisp/cconv.el (cconv-not-lexical-var-p): Remove. | |
115 | (cconv-freevars, cconv-analyse-function, cconv-analyse-form): | |
116 | Use byte-compile-not-lexical-var-p instead. | |
117 | ||
118 | * help-fns.el (describe-function-1): Fix paren typo. | |
119 | ||
120 | * emacs-lisp/byte-opt.el (byte-compile-side-effect-free-ops) | |
121 | (byte-optimize-lapcode): Remove byte-vec-ref and byte-vec-set. | |
122 | ||
295fb2ac SM |
123 | 2011-02-11 Stefan Monnier <monnier@iro.umontreal.ca> |
124 | ||
125 | * emacs-lisp/cconv.el (cconv-closure-convert): Drop `toplevel' arg. | |
126 | (cconv-closure-convert-toplevel): Remove. | |
127 | (cconv-lookup-let): New fun. | |
128 | (cconv-closure-convert-rec): Don't bother with defs-are-legal. | |
129 | Use :fun-body to handle special forms that require closing their forms. | |
130 | ||
131 | * emacs-lisp/bytecomp.el (byte-compile-file-form, byte-compile): | |
132 | Use cconv-closure-convert instead of cconv-closure-convert-toplevel. | |
133 | (byte-compile-lambda, byte-compile-make-closure): | |
134 | * emacs-lisp/byte-lexbind.el (byte-compile-maybe-push-heap-environment): | |
135 | Make sure cconv did its job. | |
136 | ||
137 | * emacs-lisp/byte-opt.el (byte-optimize-lapcode): Check stack-depth | |
138 | before using it. | |
139 | ||
140 | * dired.el (dired-desktop-buffer-misc-data): Don't use a dynamic var as | |
141 | function argument. | |
142 | ||
43e67019 SM |
143 | 2011-02-11 Stefan Monnier <monnier@iro.umontreal.ca> |
144 | ||
145 | * emacs-lisp/bytecomp.el (byte-compile-lambda): Fix `fun' that was not | |
146 | renamed to `bytecomp-fun'. | |
147 | ||
148 | * emacs-lisp/byte-lexbind.el (byte-compile-lforminfo-analyze): | |
149 | Understand the :fun-body case for catch, save-window-excursion, and | |
150 | condition-case. | |
151 | (byte-compile-maybe-push-heap-environment): No need when nclosures is | |
152 | zero and byte-compile-current-num-closures is -1. | |
153 | ||
154 | * emacs-lisp/cconv.el (cconv-not-lexical-var-p): New function. | |
155 | (cconv-freevars): Use it. | |
156 | (cconv-closure-convert-rec): Avoid `position'. | |
157 | (cconv-analyse-function): New function. | |
158 | (cconv-analyse-form): Use it. `inclosure' can't be nil any more. | |
159 | Check lexical vars at let-binding time rather than when referenced. | |
160 | For defuns to be in an empty environment and lambdas to take lexical args. | |
161 | Pay attention to the need to build closures in catch, unwind-protect, | |
162 | save-window-excursion, condition-case, and track-mouse. | |
163 | Fix defconst/defvar handling. | |
164 | ||
d779e73c SM |
165 | 2011-02-10 Stefan Monnier <monnier@iro.umontreal.ca> |
166 | ||
167 | * emacs-lisp/cconv.el (cconv-mutated, cconv-captured) | |
168 | (cconv-captured+mutated, cconv-lambda-candidates): Fix up declaration. | |
169 | (cconv-freevars): Minor cleanup. Fix handling of the error var in | |
170 | condition-case. | |
171 | ||
172 | * emacs-lisp/bytecomp.el (byte-compile-catch) | |
173 | (byte-compile-unwind-protect, byte-compile-track-mouse) | |
174 | (byte-compile-condition-case, byte-compile-save-window-excursion): | |
175 | Provide a :fun-body alternative, so that info can be propagated from the | |
176 | surrounding context, as is the case for lexical scoping. | |
177 | ||
94d11cb5 IK |
178 | 2011-02-10 Igor Kuzmin <kuzminig@iro.umontreal.ca> |
179 | ||
180 | * emacs-lisp/cconv.el: New file. | |
181 | * emacs-lisp/bytecomp.el: Use cconv. | |
182 | (byte-compile-file-form, byte-compile): | |
183 | Call cconv-closure-convert-toplevel when requested. | |
184 | * server.el: | |
185 | * mpc.el: | |
186 | * emacs-lisp/pcase.el: | |
187 | * doc-view.el: | |
188 | * dired.el: Use lexical-binding. | |
189 | ||
590130fb SM |
190 | 2010-12-27 Stefan Monnier <monnier@iro.umontreal.ca> |
191 | ||
192 | * emacs-lisp/bytecomp.el (byte-compile-track-mouse): Don't use #'. | |
193 | ||
a0ee6f27 SM |
194 | 2010-12-15 Stefan Monnier <monnier@iro.umontreal.ca> |
195 | ||
196 | * emacs-lisp/edebug.el (edebug-eval-defun, edebug-eval): | |
197 | * emacs-lisp/lisp-mode.el (eval-last-sexp-1, eval-defun-1): | |
198 | * ielm.el (ielm-eval-input): | |
199 | * simple.el (eval-expression): Use new eval arg to obey lexical-binding. | |
200 | ||
defb1411 SM |
201 | 2010-12-14 Stefan Monnier <monnier@iro.umontreal.ca> |
202 | ||
203 | * emacs-lisp/bytecomp.el (byte-compile-condition-case): Use push. | |
204 | ||
f07a954e SM |
205 | 2010-12-13 Stefan Monnier <monnier@iro.umontreal.ca> |
206 | ||
207 | * subr.el (with-lexical-binding): Remove. | |
208 | ||
4a330052 SM |
209 | 2010-06-18 Stefan Monnier <monnier@iro.umontreal.ca> |
210 | ||
211 | * emacs-lisp/byte-lexbind.el (byte-compile-compute-lforminfo): | |
212 | specialp -> special-variable-p. | |
213 | ||
3c3ddb98 SM |
214 | 2010-06-15 Stefan Monnier <monnier@iro.umontreal.ca> |
215 | ||
216 | * emacs-lisp/bytecomp.el (byte-compile-initial-macro-environment): | |
217 | Don't macroexpand before evaluating in eval-and-compile, in case | |
218 | `body's macro expansion uses macros and functions defined in itself. | |
219 | ||
f43cb649 SM |
220 | 2010-06-14 Stefan Monnier <monnier@iro.umontreal.ca> |
221 | ||
222 | * emacs-lisp/bytecomp.el (byte-compile-check-variable): | |
223 | Update byte-compile-not-obsolete-var to byte-compile-not-obsolete-vars. | |
224 | ||
225 | * Makefile.in (.el.elc): Increase max-lisp-eval-depth. | |
226 | ||
894e369d | 227 | 2006-12-04 Miles Bader <miles@gnu.org> |
89877f5f | 228 | |
894e369d SM |
229 | * Makefile.in (COMPILE_FIRST_STACK_DEPTH): New variable. |
230 | (compile, compile-always): Use it. | |
133a8d82 | 231 | |
894e369d | 232 | 2005-10-24 Miles Bader <miles@gnu.org> |
89877f5f | 233 | |
894e369d | 234 | * subr.el (functionp): Re-remove. |
89877f5f | 235 | |
894e369d SM |
236 | * emacs-lisp/bytecomp.el (byte-compile-closure): Add optional |
237 | ADD-LAMBDA argument, which we just pass to `byte-compile-lambda'. | |
238 | (byte-compile-defun): Use ADD-LAMBDA arg to `byte-compile-closure' | |
239 | instead of adding lambda ourselves. | |
9d1f18b5 | 240 | |
894e369d | 241 | 2004-08-09 Miles Bader <miles@gnu.org> |
9d1f18b5 | 242 | |
894e369d | 243 | Changes from merging the funvec patch: |
b81a0b56 | 244 | |
894e369d SM |
245 | * emacs-lisp/bytecomp.el (byte-compile-make-closure): Use `curry' |
246 | instead of `vector' to create compiled closures. | |
b81a0b56 | 247 | |
894e369d | 248 | Merge funvec patch. |
b81a0b56 | 249 | |
894e369d | 250 | 2004-04-29 Miles Bader <miles@gnu.org> |
69f18acc | 251 | |
894e369d SM |
252 | * emacs-lisp/bytecomp.el (byte-compile-top-level): Add new entries |
253 | to `byte-compile-lexical-environment' at the start, not end. | |
254 | (byte-compile-delay-out): Correctly default STACK-ADJUST to zero. | |
5fee75d4 | 255 | |
894e369d SM |
256 | * emacs-lisp/byte-opt.el (byte-opt-update-stack-params): |
257 | Don't crash on no-op lapcode entries (car is nil). | |
69f18acc | 258 | |
894e369d SM |
259 | * emacs-lisp/byte-lexbind.el (byte-compile-make-lambda-lexenv): |
260 | Push a lexvar onto lexenv, not a vinfo! | |
9766adfb | 261 | |
894e369d | 262 | 2004-04-11 Miles Bader <miles@gnu.org> |
9766adfb | 263 | |
894e369d SM |
264 | * emacs-lisp/bytecomp.el (byte-compile-top-level): |
265 | Correctly analyze lexically-bound arguments. | |
9766adfb | 266 | |
894e369d SM |
267 | * emacs-lisp/byte-lexbind.el (byte-compile-lforminfo-analyze): |
268 | Use `append' instead of `nconc'. | |
56b2854f | 269 | |
894e369d SM |
270 | * emacs-lisp/byte-lexbind.el (byte-compile-make-lvarinfo): |
271 | Don't use backquote to make a mutable data-structure. | |
272 | (byte-compile-lvarinfo-num-refs, byte-compile-lvarinfo-num-sets): | |
273 | Rename to use `num-' instead of `num'. | |
274 | (byte-compile-make-lambda-lexenv): Adjust accordingly. | |
56b2854f | 275 | |
894e369d | 276 | 2004-04-10 Miles Bader <miles@gnu.org> |
6534e58a | 277 | |
894e369d SM |
278 | * emacs-lisp/byte-lexbind.el (byte-compile-compute-lforminfo): |
279 | Look at variable's global specialp state too. | |
d6ceb380 | 280 | |
894e369d | 281 | 2004-04-09 Miles Bader <miles@gnu.org> |
d6ceb380 | 282 | |
894e369d SM |
283 | * emacs-lisp/byte-opt.el (byte-optimize-lapcode): |
284 | Default initial-stack-depth to 0. | |
285 | (byte-optimize-lapcode): Discard the right number of values in | |
286 | the stack-set+discard-->discard optimization. | |
c760f19e | 287 | |
894e369d | 288 | 2004-04-02 Miles Bader <miles@gnu.org> |
2e9b968b | 289 | |
894e369d SM |
290 | * emacs-lisp/lisp-mode.el (eval-last-sexp-1): Setup the lexical |
291 | environment if lexical-binding is enabled. | |
2e9b968b | 292 | |
894e369d | 293 | 2003-10-14 Miles Bader <miles@gnu.org> |
6d00ce04 | 294 | |
894e369d SM |
295 | * emacs-lisp/macroexp.el (macroexpand-all-1): Special-case |
296 | `backquote-list*' to avoid stack overflows. | |
baf1a55e | 297 | |
894e369d | 298 | 2003-04-04 Miles Bader <miles@gnu.org> |
6ee21b07 | 299 | |
894e369d | 300 | * help-fns.el (help-function-arglist): Handle interpreted closures. |
f0dbdc25 | 301 | |
894e369d | 302 | 2002-11-20 Miles Bader <miles@gnu.org> |
f0dbdc25 | 303 | |
894e369d SM |
304 | * emacs-lisp/bytecomp.el (byte-compile-stack-adjustment): |
305 | Correctly handle discardN* operators. | |
306 | * emacs-lisp/byte-opt.el (byte-optimize-lapcode): Fix stack-depth | |
307 | tracking errors. | |
e044e4fc | 308 | |
894e369d | 309 | 2002-08-26 Miles Bader <miles@gnu.org> |
e044e4fc | 310 | |
894e369d SM |
311 | * international/mule.el (make-char): Macroexpand call to |
312 | charset-id constructed by `byte-compile' hook. | |
2e9b968b | 313 | |
894e369d | 314 | * emacs-lisp/macroexp.el (macroexpand-all-1): Expand defconst value. |
2e9b968b | 315 | |
894e369d SM |
316 | * emacs-lisp/byte-opt.el (byte-opt-update-stack-params): New macro. |
317 | (byte-optimize-lapcode): Keep track of stack-depth in final pass too. | |
318 | Add more optimizations for lexical binding. | |
319 | (byte-compile-inline-expand): Macroexpand result of inlining. | |
baf1a55e | 320 | |
894e369d SM |
321 | * emacs-lisp/bytecomp.el (byte-compile-lambda): Update call to |
322 | byte-compile-closure-initial-lexenv-p. | |
323 | (byte-discardN-preserve-tos): Alias to byte-discardN. | |
324 | (byte-compile-push-binding-init): Don't push unused variables on | |
325 | init-lexenv. | |
326 | (byte-compile-push-binding-init): Don't use LFORMINFO if it's nil. | |
327 | (byte-compile-lambda): Don't look at lexical environment unless | |
328 | we're using lexical binding. | |
329 | (byte-compile-defmacro): Correctly generate macros. | |
330 | ||
331 | * emacs-lisp/byte-lexbind.el (byte-compile-unbind): Optimize the | |
332 | dynamic-bindings-only case. | |
333 | (byte-compile-bind): Don't special-case unused lexical variables. | |
334 | ||
335 | * emacs-lisp/disass.el (disassemble-1): Print arg for discardN ops. | |
336 | ||
337 | 2002-08-19 Miles Bader <miles@gnu.org> | |
338 | ||
339 | * emacs-lisp/byte-opt.el (byte-decompile-bytecode-1): | |
340 | Handle `byte-discardN-preserve-tos' pseudo-op. | |
341 | (byte-compile-side-effect-and-error-free-ops): Add `byte-stack-ref'. | |
342 | (byte-compile-side-effect-free-ops): Add `byte-vec-ref'. | |
343 | (byte-optimize-lapcode): Add some cases for stack-set/ref ops. | |
344 | Add tracking of stack-depth. Unfinished code to collapse | |
345 | lexical-unbinding sequences. | |
346 | ||
347 | * emacs-lisp/bytecomp.el (byte-compile-lapcode): | |
348 | Handle `byte-discardN-preserve-tos' pseudo-op. | |
349 | (byte-compile-top-level): If there are lexical args, output a TAG | |
350 | op to record the initial stack-depth for the optimizer. | |
351 | ||
352 | 2002-08-17 Miles Bader <miles@gnu.org> | |
353 | ||
354 | * emacs-lisp/bytecomp.el (byte-discardN): Add byte-defop. | |
355 | (byte-compile-lapcode): Include byte-discardN. | |
356 | (byte-compile-lambda): Fixup closure detection. | |
357 | (byte-compile-top-level): Handle arguments for a lexical lambda. | |
358 | (byte-compile-lexical-variable-ref, byte-compile-variable-ref) | |
359 | (byte-compile-variable-set): Use byte-compile-stack-set/ref. | |
360 | (byte-compile-discard): Add new parameters NUM and PRESERVE-TOS. | |
361 | (byte-compile-stack-ref, byte-compile-stack-set): New functions. | |
362 | (byte-compile-push-binding-init): Get the variable list properly | |
363 | from LFORMINFO. | |
364 | ||
365 | * emacs-lisp/byte-lexbind.el (byte-compile-lforminfo-analyze): | |
366 | Ignore setq'd variables we're not interested in. | |
367 | (byte-compile-make-lambda-lexenv): Add assertion that closed-over | |
368 | variables be heap allocated. | |
369 | (byte-compile-closure-initial-lexenv-p): Rename from | |
370 | byte-compile-closure-lexenv-p. | |
371 | (byte-compile-non-stack-bindings-p): Get the variable list | |
372 | properly from LFORMINFO. | |
373 | (byte-compile-maybe-push-heap-environment): Handle the | |
374 | no-closed-over-variables case correctly. | |
375 | (byte-compile-bind): Use byte-compile-stack-set/ref. | |
376 | Don't bother modifying INIT-LEXENV as no one will see the changes. | |
377 | (byte-compile-unbind): Call `byte-compile-discard' to handle | |
378 | unbinding lexical bindings. | |
379 | ||
380 | * emacs-lisp/disass.el (disassemble-internal): Handle closures. | |
381 | (disassemble-1): Handle new bytecodes. | |
382 | * emacs-lisp/byte-opt.el (disassemble-offset): Handle new bytecodes. | |
383 | ||
384 | 2002-06-16 Miles Bader <miles@gnu.org> | |
385 | ||
386 | * emacs-lisp/macroexp.el (macroexp-accumulate): New macro. | |
387 | (macroexpand-all-forms, macroexpand-all-clauses): Use it. | |
388 | * Makefile.in (compile): Undo previous change. | |
389 | ||
390 | 2002-06-14 Miles Bader <miles@gnu.org> | |
391 | ||
392 | * Makefile.in (COMPILE_FIRST): Add `emacs-lisp/macroexp.el'. | |
393 | (compile): Add a special case that compiles `emacs-lisp/macroexp.el' | |
394 | with an increased max-lisp-eval-depth. | |
395 | ||
396 | * emacs-lisp/bytecomp.el: Provide `bytecomp-preload', at the | |
397 | beginning of the file. Require `byte-lexbind' at compile time. | |
398 | Add a few doc string. | |
399 | (byte-compile-push-bytecodes) | |
400 | (byte-compile-push-bytecode-const2): New macros. | |
401 | (byte-compile-lapcode): Use them. Do general code cleanup. | |
402 | (byte-compile-initial-macro-environment): Expand macros in | |
403 | byte-compile-eval before passing to byte-compile-top-level. | |
404 | (byte-compile): Use the `byte-compile-initial-macro-environment'. | |
405 | ||
406 | * emacs-lisp/byte-lexbind.el: Require `bytecomp-preload' instead of | |
407 | `bytecomp'. | |
408 | (byte-compile-bind): Use `byte-compile-dynamic-variable-bind' to bind | |
409 | dynamic variables. | |
410 | (byte-compile-maybe-push-heap-environment): Fix function name typo. | |
411 | ||
412 | 2002-06-13 Miles Bader <miles@gnu.org> | |
413 | ||
414 | Byte compiler lexical binding support (not finished yet): | |
415 | * emacs-lisp/bytecomp.el: Require `macroexp'. | |
416 | (byte-compile-lexical-environment) | |
417 | (byte-compile-current-heap-environment) | |
418 | (byte-compile-current-num-closures): New variables. | |
419 | (0, 178, 179, 180, 181): New byte-opcodes. | |
420 | (byte-compile-lapcode): Handle stack-ref/set opcodes. Signal an | |
421 | error if a delay-output placeholder is not filled in yet. | |
422 | (byte-compile-file-form, byte-compile): Expand all macros with | |
423 | `macroexpand-all'. | |
424 | (byte-compile-file-form-defsubst, byte-compile-form): Don't expand | |
425 | macros here. | |
426 | (byte-compile-make-lambda-lexenv): Autoload. | |
427 | (byte-compile-lambda): Initial code for handling lexically-bound | |
428 | arguments and closures; doesn't work yet. | |
429 | (byte-compile-closure-code-p, byte-compile-make-closure) | |
430 | (byte-compile-closure): New functions. | |
431 | (byte-compile-check-variable, byte-compile-dynamic-variable-op) | |
432 | (byte-compile-dynamic-variable-bind) | |
433 | (byte-compile-lexical-variable-ref, byte-compile-variable-set): | |
baf1a55e | 434 | New functions. |
894e369d SM |
435 | (byte-compile-variable-ref): Remove second argument. Now only |
436 | handles real variable references (not setting or binding). | |
437 | (byte-compile-push-unknown-constant) | |
438 | (byte-compile-resolve-unknown-constant): New functions. | |
439 | (byte-compile-funarg, byte-compile-funarg-2): Functions removed. | |
440 | (byte-compile-function-form): Use either `byte-compile-constant' | |
441 | or `byte-compile-closure'. | |
442 | (byte-compile-setq): Use `byte-compile-variable-set' instead of | |
443 | `byte-compile-variable-ref'. | |
444 | (apply, mapcar, mapatoms, mapconcat, mapc, sort): | |
445 | `byte-defop-compiler-1's removed. | |
446 | (byte-compile-while): Make sure lexically-bound variables inside | |
447 | the loop don't get stored in an environment outside the loop. | |
448 | (byte-compile-compute-lforminfo): Autoload. | |
449 | (byte-compile-push-binding-init): New function. | |
450 | (byte-compile-let, byte-compile-let*): Handle lexical binding. | |
451 | (byte-compile-defun): Use `byte-compile-closure' to do the work. | |
452 | (byte-compile-defmacro): Use `byte-compile-make-closure'. | |
453 | (byte-compile-defvar): Expand the generated call to `push' since | |
454 | we're past macroexpansion already. | |
455 | (byte-compile-stack-adjustment): New function. | |
456 | (byte-compile-out): Make second arg optional. Rewrite for clarity. | |
457 | (byte-compile-delay-out, byte-compile-delayed-out): New functions. | |
458 | ||
459 | * emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): | |
460 | Don't expand macros here. | |
461 | ||
462 | * emacs-lisp/macroexp.el (macroexpand-all-1): Expand defmacro forms. | |
463 | ||
464 | * emacs-lisp/byte-lexbind.el (byte-compile-make-lvarinfo) | |
465 | (byte-compile-lforminfo-add-var) | |
466 | (byte-compile-lforminfo-note-closure) | |
467 | (byte-compile-compute-lforminfo) | |
468 | (byte-compile-lforminfo-from-lambda) | |
469 | (byte-compile-lforminfo-analyze) | |
470 | (byte-compile-heapenv-add-accessible-env) | |
471 | (byte-compile-heapenv-ensure-access) | |
472 | (byte-compile-rearrange-let-clauses, byte-compile-bind) | |
473 | (byte-compile-unbind): Fix a bunch of typos. | |
474 | ||
475 | 2002-06-12 Miles Bader <miles@gnu.org> | |
476 | ||
477 | * emacs-lisp/byte-lexbind.el, emacs-lisp/macroexp.el: New files. | |
478 | ||
479 | * subr.el (functionp): Function removed (now a subr). | |
480 | * help-fns.el (describe-function-1): Handle interpreted closures. | |
481 | ||
482 | ;; arch-tag: bd1b5b8b-fdb2-425d-9ac2-20689fb0ee70 |