aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/ChangeLog.lexbind
diff options
context:
space:
mode:
authorStefan Monnier2010-06-13 16:36:17 -0400
committerStefan Monnier2010-06-13 16:36:17 -0400
commitb9598260f96ddc652cd82ab64bbe922ccfc48a29 (patch)
tree2a692a8471de07f2578ea481c99971585def8eda /lisp/ChangeLog.lexbind
parenta6e8d97c1414230e577d375c27da78c858a5fa75 (diff)
downloademacs-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.lexbind256
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 @@
12006-12-04 Miles Bader <miles@gnu.org>
2
3 * Makefile.in (COMPILE_FIRST_STACK_DEPTH): New variable.
4 (compile, compile-always): Use it.
5
62005-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
152004-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
242004-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
362004-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
502004-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
552004-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
622004-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
672003-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
722003-04-04 Miles Bader <miles@gnu.org>
73
74 * help-fns.el (help-function-arglist): Handle interpreted closures.
75
762002-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
832002-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
1112002-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
1262002-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
1582002-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
1642002-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
1862002-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
2492002-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