1 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/eval.lisp
2 05-Feb-90 20:45:20, Edit by Ram.
3 Fixed MAKE-INTERPRETED-FUNCTION to specify the LAMBDA slot when creating the
4 function so that it is avaliable to INTERPRETED-FUNCTION-LAMBDA-EXPRESSION.
6 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/sset.lisp
7 05-Feb-90 12:07:12, Edit by Ram.
8 Fixed a problem in SSET-UNION-OF-DIFFERENCE. It was using (>= num2 num3) in
9 two places where it should have been using <=. Probably due to incorrect
10 modification of the original SSET-DIFFERENCE code into this function. The
11 original function had the inner loop over the second arg, rather than the
12 first. This effectively resulted in the difference aspect usually not
13 happening, so the KILL set in constraint propagation never took effect,
14 resulting in some over-zealous type propagation.
16 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/srctran.lisp
17 04-Feb-90 10:11:51, Edit by Ram.
18 Oops... Fixed * transform so that multiplication by 8 doesn't really
21 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
22 04-Feb-90 09:48:09, Edit by Ram.
23 Wrote CLOSE-SOURCE-INFO, and made COMPILE-FILE, ADVANCE-SOURCE-FILE and
24 COMPILE-FROM-STREAM call it.
26 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/fndb.lisp
27 04-Feb-90 08:09:06, Edit by Ram.
28 Added definition for %SP-STRING-COMPARE.
30 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/seqtran.lisp
31 04-Feb-90 08:01:21, Edit by Ram.
32 Fixed STRING<>=-BODY a bit. In addition to some query replace lossage, there
33 was also a genuine ancestral bug in computation of the result in the = case
36 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ctype.lisp
37 03-Feb-90 20:44:39, Edit by Ram.
38 Made VALID-FUNCTION-USE and VALID-APPROXIMATE-TYPE return NIL, NIL when
39 uncertainty is encountered, rather than T, NIL. Everybody was expecting this
40 to be a conservative test (and only looking at the first value.) This caused
41 spurious transforms to happen.
43 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/srctran.lisp
44 02-Feb-90 14:08:09, Edit by Ram.
45 Added NTH, NTHCDR transforms for the constant index case. Added * transform
46 for the power-of-2 case.
48 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/seqtran.lisp
49 02-Feb-90 13:00:15, Edit by Ram.
50 Added string transforms, derived from CLC sources.
52 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/srctran.lisp
53 02-Feb-90 13:25:40, Edit by Ram.
54 Added FORMAT transform derived from CLC sources.
56 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/type.lisp
57 02-Feb-90 11:23:26, Edit by Ram.
58 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
59 02-Feb-90 11:23:15, Edit by Ram.
60 Defined TYPE/= and made the "anything changed" tests use it instead of TYPE=
61 so as to be conservative in the presence of hairy types.
63 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
64 02-Feb-90 10:29:54, Edit by Ram.
65 Changed REOPTIMIZE-CONTINUATION to set BLOCK-TYPE-CHECK in the use blocks so
66 that new derived-type information will also cause type checking to be redone.
67 This mainly handles the case where new type information causes us to want to
68 negate a check that was previously simple.
70 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
71 02-Feb-90 10:12:24, Edit by Ram.
72 Fixed CONTINUATION-%DERIVED-TYPE to call CONTINUATION-%TYPE-CHECK instead of
73 CONTINUATION-TYPE-CHECK so that it won't recurse indefinitely.
75 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/globaldb.lisp
76 01-Feb-90 14:46:13, Edit by Ram.
77 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
78 01-Feb-90 14:43:26, Edit by Ram.
79 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/knownfun.lisp
80 01-Feb-90 14:40:22, Edit by Ram.
81 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
82 01-Feb-90 14:42:19, Edit by Ram.
83 Flushed *FUNCTION-INFO* in favor of (INFO FUNCTION INFO ...). Added
84 FUNCTION-INFO-PREDICATE-TYPE slot.
86 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
87 01-Feb-90 14:09:42, Edit by Ram.
88 Changed ASSERT-CONTINUATION-TYPE to set BLOCK-TYPE-ASSERTED in the use
89 blocks. Also, moved fixed the setting of BLOCK-TYPE-CHECK to be on the use
90 blocks rather than the CONTINUATION-BLOCK, since type check generation uses
91 DO-NODES, and thus ignores the BLOCK-START.
93 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/node.lisp
94 01-Feb-90 13:37:14, Edit by Ram.
95 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/checkgen.lisp
96 01-Feb-90 13:41:46, Edit by Ram.
97 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
98 01-Feb-90 13:41:48, Edit by Ram.
99 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
100 01-Feb-90 13:42:05, Edit by Ram.
101 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
102 01-Feb-90 13:42:29, Edit by Ram.
103 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ltn.lisp
104 01-Feb-90 13:43:07, Edit by Ram.
105 Renamed the CONTINUATION TYPE-CHECK slot to %TYPE-CHECK, which is filtered by
106 the new CONTINUATION-TYPE-CHECK function to make sure that it has been
107 computed recently. Changed setters of TYPE-CHECK to %TYPE-CHECK, and flushed
108 the now unnecessary calls to CONTINUATION-DERIVED-TYPE (which explicitly did
111 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
112 01-Feb-90 12:56:50, Edit by Ram.
113 Changed %CONTINUATION-DERIVED-TYPE to not set TYPE-CHECK when the assertion
114 is T or there is no DEST. In the first case, this just avoids waste motion.
115 In the second case, this prevents constraint analysis from being tricked into
116 believing such a check will be done, when in fact no checks are done on
119 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
120 01-Feb-90 12:51:41, Edit by Ram.
121 Made DELETE-CONTINUATION, FLUSH-DEST, NODE-ENDS-BLOCK and UNLINK-NODE set the
122 BLOCK-TYPE-ASSERTED and BLOCK-TEST-CHANGED flags. At least for the former,
123 this has to be done in more places than I thought, and also must be done for
124 correctness, rather than just to ensure new assertions are seen. This is
125 because if a block is split, or code needing an assertion is deleted, then we
126 must recompute the block's set of constraints or it will contain incorrect
129 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/sset.lisp
130 01-Feb-90 11:33:28, Edit by Ram.
131 Fixed SSET-INTERSECTION to blow away any extra elements in SET1 that are
132 larger than the greatest element in SET2.
134 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/node.lisp
135 01-Feb-90 10:34:17, Edit by Ram.
136 Changed initial values for TYPE-ASSERTED and TEST-MODIFIED to be T rather
139 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/vop.lisp
140 30-Jan-90 16:10:06, Edit by Ram.
141 Added IR2-ENVIRONMENT-KEEP-AROUND-TNS and IR2-COMPONENT-PRE-PACKED-SAVE-TNS
142 so that we won't have to recompile to add these features later on.
144 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/eval.lisp
145 30-Jan-90 14:54:58, Edit by Ram.
146 Added the MAKE-INTERPRETED-FUNCTION interface which allows lazy conversion of
147 functions and features bounded IR1 memory usage through a LRU cache that is
148 partially flushed on GC. Added INTERPRETED-FUNCTION-NAME,
149 INTERPRETED-FUNCTION-ARGLIST and setf functions.
151 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
152 30-Jan-90 10:08:19, Edit by Ram.
153 Now that %DEFMACRO is passed #'(lambda ... for benefit for the interpreter,
154 we don't want to unquote the definition using EVAL. Use SECOND instead.
156 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
157 29-Jan-90 14:17:06, Edit by Ram.
158 Changed FIND-COMPONENT-NAME to bind *PRINT-LEVEL* and *PRINT-PRETTY* so as to
159 prevent huge component names.
161 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/life.lisp
162 29-Jan-90 13:43:23, Edit by Ram.
163 Fixed CONFLICT-ANALYZE-BLOCK in the dead read case to do FROB-MORE-TNS on
164 NOTE-CONFLICTS as well as the addition to the live set. This was the fix to
165 the long-procrastinated-about :MORE TN bug (first noticed in fall 88.) Also,
166 changed FROB-MORE-TNS to return whether it did anything, rather than sleazily
167 hacking on the loop variable to get the loop to exit. I must have been
168 having a Pascal flashback when I wrote that code...
170 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/eval.lisp
171 29-Jan-90 13:24:23, Edit by Ram.
172 Fixed LEAF-VALUE to use FDEFINITION rather than SYMBOL-FUNCTION when the name
175 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
176 29-Jan-90 10:46:23, Edit by Ram.
177 Changed COMPILE-FIX-FUNCTION-NAME to substitute for old uses of the name so
178 that recursive calls get converted.
180 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
181 29-Jan-90 10:13:18, Edit by Ram.
182 But for the want of a single character... So that's why no functions were
183 being inline expanded! In %DEFUN the ir1 translator, I was looking at the
184 INLINEP value for the NAME in the same LET that was eval'ing the name to
187 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/debug-dump.lisp
188 27-Jan-90 18:05:15, Edit by Ram.
189 Made DEBUG-SOURCE-FOR-INFO handle the incremental compilation cases.
191 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
192 27-Jan-90 17:46:09, Edit by Ram.
193 Wrote COMPILE and UNCOMPILE.
195 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/eval.lisp
196 27-Jan-90 17:07:17, Edit by Ram.
197 Added the interfaces INTERPRETED-FUNCTION-LAMBDA-EXPRESSION and
198 INTERPRETED-FUNCTION-CLOSURE. These use the new FIND-IF-IN-CLOSURE operation
199 pick apart the closure that is an interpreted function.
201 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
202 26-Jan-90 16:35:51, Edit by Ram.
203 Moved a bunch of stuff from COMPILE-FILE to SUB-COMPILE-FILE. Wrote
204 MAKE-LISP-SOURCE-INFO and MAKE-STREAM-SOURCE-INFO. Wrote
205 COMPILE-FROM-STREAM, and added appropriate uses of the in-core compilation
206 interface to various functions.
208 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/globaldb.lisp
209 26-Jan-90 16:09:30, Edit by Ram.
210 Made the CACHE-NAME slot be duplicated in both kinds of environment rather
211 than inherited from INFO-ENV so that the inline type checks for the slot
212 access will win, allowing bootstrapping to work.
214 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/eval-comp.lisp
215 26-Jan-90 13:12:09, Edit by Ram.
216 Changed COMPILE-FOR-EVAL to call the new MAKE-LISP-SOURCE-INFO, rather than
219 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/globaldb.lisp
220 26-Jan-90 11:59:58, Edit by Ram.
221 Added code to cache the last name looked up, since we commonly consecutively
222 look up several types of info for the same name. [Maybe even some types more
225 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
226 26-Jan-90 09:30:59, Edit by Ram.
227 Fixed PROCESS-TYPE-PROCLAMATION to not try to call TYPES-INTERSECT on
228 function types so that we don't flame out. This was probably what I was
229 really trying to fix in the last change to PROCESS-TYPE-DECLARATION. Really
232 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/srctran.lisp
233 25-Jan-90 10:58:43, Edit by Ram.
234 Added transform for ARRAY-DIMENSION that converts to LENGTH when possible.
236 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/typetran.lisp
237 25-Jan-90 10:46:00, Edit by Ram.
238 Moved array typep code here from vm-type-tran, since it turned out not to be
239 VM dependent after all.
241 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/typetran.lisp
242 23-Jan-90 15:31:32, Edit by Ram.
243 Transformed array type tests to %ARRAY-TYPEP so that clever
244 implementation-dependent things can be done.
246 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
247 23-Jan-90 18:45:14, Edit by Ram.
248 Fixed up some messed up backquote stuff in DO-MACROLET-STUFF where it was
249 trying to coerce the lambda to a function.
251 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/envanal.lisp
252 23-Jan-90 13:06:41, Edit by Ram.
253 Don't annotate as TAIL-P nodes whose DERIVED-TYPE is NIL, so that we don't
254 tail-call functions such as ERROR.
256 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
257 23-Jan-90 12:44:28, Edit by Ram.
258 Fixed %DEFUN translator to record an inline expansion when the INLINEP value
259 is :MAYBE-INLINE as well as :INLINE.
261 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
262 23-Jan-90 08:49:50, Edit by Ram.
263 Changed PUSH-IN and DELETEF-IN to only call FOO-GET-SETF-METHOD when
264 CLC::*IN-THE-COMPILER* is true, so that we can still use these macros in the
267 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/seqtran.lisp
268 22-Jan-90 16:11:28, Edit by Ram.
269 Added a transform for MEMBER where the list is a constant argument (primarily
270 to help MEMBER type tests.)
272 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/eval.lisp
273 22-Jan-90 15:20:27, Edit by Ram.
274 Replaced all uses of COMBINATION- accessors with BASIC-COMBINATION- accessors
275 so that MV combinations will work.
277 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/eval.lisp
278 22-Jan-90 15:08:07, Edit by Ram.
279 Put a couple of macros in EVAL-WHEN (COMPILE LOAD EVAL) so that they are
280 avaliable to SETF in the bootstrap environment. Also, changed %SP-[UN]BIND
281 to the appropriate %PRIMITIVE calls.
283 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/fndb.lisp
284 20-Jan-90 20:21:34, Edit by Ram.
285 Fixed up FBOUNDP & stuff to correspond to the FUNCTION-NAME cleanup. Now
286 FBOUNDP can take a list as well as a symbol.
288 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
289 20-Jan-90 09:56:43, Edit by Ram.
290 In #+NEW-COMPILER, made DO-MACROLET-STUFF coerce the lambda expression to a
293 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/eval-comp.lisp
294 20-Jan-90 09:52:20, Edit by Ram.
295 Added bind of *FENV* to () in COMPILE-FOR-EVAL.
297 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
298 20-Jan-90 09:50:59, Edit by Ram.
299 And made IR1-TOP-LEVEL *not* bind *FENV* to () so that top-level MACROLETs
300 will be recognized...
302 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
303 20-Jan-90 09:47:19, Edit by Ram.
304 Added binding of *FENV* to () in SUB-COMPILE-FILE so that MACROLET processing
307 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/macros.lisp
308 19-Jan-90 22:25:15, Edit by Ram.
309 Made WITH-IR1-ENVIRONMENT bind a bunch more variables. *fenv*, etc. Wrote
310 WITH-IR1-NAMESPACE, which allocates the gloabal namespace hashtables.
312 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/eval-comp.lisp
313 19-Jan-90 22:35:44, Edit by Ram.
314 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
315 19-Jan-90 22:34:20, Edit by Ram.
316 Flushed IR1-TOP-LEVEL-FOR-EVAL and changed IR1-TOP-LEVEL to take a FOR-VALUE
317 flag so that it can do the same thing. Added use of WITH-IR1-NAMESPACE.
319 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
320 19-Jan-90 21:43:20, Edit by Ram.
321 Made SUB-COMPILE-FILE bind *CURRENT-COOKIE* so that people can randomly call
322 (POLICY NIL ...) to get at the current policy, and will never see any
323 leftover local policy from a dynamically enclosing IR1 conversion.
324 ### Maybe this should really be bound somewhere else, like COMPILE-COMPONENT.
326 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
327 19-Jan-90 22:00:35, Edit by Ram.
328 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/node.lisp
329 19-Jan-90 22:01:47, Edit by Ram.
330 Added a keyword constructor for CBLOCK, and changed all MAKE-BLOCK calls
331 outside of IR1 conversion to use this new constructor, specifying all the
332 values that would otherwise be defaulted from specials. This is necessary to
333 make stuff properly reentrant.
335 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
336 19-Jan-90 17:26:17, Edit by Ram.
337 In FIND-FREE-VARIABLE, flushed the assertion that non-constant variables
338 never have constant values. This isn't really right, but it is better.
339 ### Really, the implementation of "constant but value unknown" variables
340 should be either flushed or redone.
342 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/eval-comp.lisp
343 19-Jan-90 15:31:33, Edit by Ram.
344 New file from Chiles.
346 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/eval.lisp
347 19-Jan-90 15:30:03, Edit by Ram.
348 New file from chiles. Changed MY-EVAL to INTERNAL-EVAL and made it frob
349 *ALREADY-EVALED-THIS*.
351 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
352 19-Jan-90 14:53:28, Edit by Ram.
353 Made IR1 conversion reentrant by having IR1-TOP-LEVEL bind all of the state
354 variables. Removed DEFVAR initial values for variables that should never be
355 referenced outside of IR1 conversion. Rather than always making four new
356 hashtables every time, I kept around the global values, allowing them to be
357 used on the outermost call.
359 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
360 19-Jan-90 11:06:50, Edit by Ram.
361 Changed PROPAGATE-TO-REFS to do nothing when the variable type is a function
362 type so that we don't lose specific function type information, and also so
363 that TYPE-INTERSECTION doesn't gag.
365 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
366 19-Jan-90 11:24:07, Edit by Ram.
367 Changed PROCESS-TYPE-DECLARATION to quietly set the var type when either the
368 old or new type is a function type, rather than losing trying to do
370 ### Someday when we have a incompatible-redefinition detection capability, we
371 might want to hook it in here.
373 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
374 18-Jan-90 16:45:20, Edit by Ram.
375 In %DEFMACRO IR1 convert, when #+NEW-COMPILER, coerce the expander to a
376 function before sticking it in the MACRO-FUNCTION.
378 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
379 18-Jan-90 14:11:44, Edit by Ram.
380 Changed %DEFUN translator to dump an inline expanion when appropriate.
382 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/fndb.lisp
383 18-Jan-90 12:33:17, Edit by Ram.
384 Added %STANDARD-CHAR-P and %STRING-CHAR-P to the imports list.
386 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/globaldb.lisp
387 18-Jan-90 12:24:34, Edit by Ram.
388 In #+NEW-COMPILER, added info type defaults that get information from the
389 environment. This only affected functions and constant values, since
390 everything else is already stored in the global database.
392 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
393 18-Jan-90 11:51:45, Edit by Ram.
394 In COMPILE-FILE, fixed FROB to always pathnamify the thing so that
395 OPEN-FASL-FILE won't choke. Also, this way any syntax error always happens
398 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/life.lisp
399 18-Jan-90 10:44:11, Edit by Ram.
400 And also in NOTE-CONFLICTS, fixed the declaration for Live-List to be
401 (OR TN NULL) rather than TN.
403 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/life.lisp
404 18-Jan-90 10:39:41, Edit by Ram.
405 In NOTE-CONFLICTS, fixed the type for Live-Bits to be LOCAL-TN-BIT-VECTOR,
408 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir2tran.lisp
409 17-Jan-90 20:47:37, Edit by Ram.
410 Fixed IR2-CONVERT-NORMAL-LOCAL-CALL to set up the argument pointer. It
411 seems this was only happening in tail calls, so stack arguments did not in
412 general work in local calls.
414 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ltn.lisp
415 17-Jan-90 16:20:28, Edit by Ram.
416 Changed FIND-TEMPLATE to guard the unsafe policy "trusting" result test by a
417 check for any non-null value of TYPE-CHECK, rather than just T or :ERROR.
418 This since the value might have also been :NO-CHECK, this was usually
419 preventing us from believing the assertion.
421 This was resulting in the rather baffling efficiency note that output type
422 assertions can't be trusted in a safe policy, when the policy wasn't safe...
423 I added an assertion that the policy really is safe when we emit that note.
424 Although it should always be the case, lossage in either VALID-FUNCTION-USE
425 or template selection could cause us to end up in that branch.
427 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/globaldb.lisp
428 16-Jan-90 21:25:42, Edit by Ram.
429 Renamed the types ENTRY-INFO and ENTRIES-INDEX to be COMPACT-INFO-ENTRY and
430 COMPACT-INFO-ENTRIES-INDEX. We already had a structure called ENTRY-INFO.
432 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/proclaim.lisp
433 16-Jan-90 11:23:51, Edit by Ram.
434 Set the symbol-function of PROCLAIM to the definition of %PROCLAIM.
436 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
437 16-Jan-90 11:15:56, Edit by Ram.
438 Fixed DEFMACRO ir1 convert to unquote the original arglist before setting the
439 FUNCTIONAL-ARG-DOCUMENTATION.
441 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/codegen.lisp
442 15-Jan-90 13:04:59, Edit by Ram.
443 Oops... I seem to have broken codegen when I changed to it give each block a
444 label, sometimes emitting a label more than once.
446 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
447 13-Jan-90 13:09:05, Edit by Ram.
448 Changed DELETEF-IN and PUSH-IN to use FOO-GET-SETF-METHOD rather than
449 GET-SETF-METHOD so that they will expand correctly in the bootstrapping
452 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
453 13-Jan-90 12:27:12, Edit by Ram.
454 Fixed a CDR circularity detection in FIND-SOURCE-PATHS a bit.
456 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/globaldb.lisp
457 13-Jan-90 11:49:48, Edit by Ram.
458 In addition to initializing *INFO-CLASSES* in GLOBALDB-INIT for benefit of
459 bootstrapping, we must also init *TYPE-COUNTER* and *TYPE-NUMBERS*.
461 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/globaldb.lisp
462 12-Jan-90 16:15:25, Edit by Ram.
463 Changed to use a special FIND-TYPE-INFO function instead of FIND, since the
464 slot accessor TYPE-INFO-NAME isn't avaliable for use as a funarg before
467 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/globaldb.lisp
468 11-Jan-90 11:14:44, Edit by Ram.
469 I'm sooo embarrassed... I got the rehashing algorithm wrong in compact
470 environments. The second hash could be 0, resulting in infinite looping.
471 [b.t.w., this is a new largely rewritten version of globaldb that uses
472 special hashtables instead of standard hashtables. There are two kinds of
473 environments: volatile and compact. Volatile environments can be modified,
474 but are not especially compact (comparable to the old hashtable
475 implementation, but faster.) Compact environments are not modifiable, but
476 reduce memory usage by at least half.]
478 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
479 10-Jan-90 12:04:33, Edit by Ram.
480 Rather than asserting that (INFO FUNCTION WHERE-FROM <name>) is :ASSUMED
481 whenever the LEAF-WHERE-FROM is assumed, we just quietly skip the unknown
482 function warning code when the name no longer names an assumed function.
484 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
485 10-Jan-90 11:27:03, Edit by Ram.
486 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
487 10-Jan-90 11:24:07, Edit by Ram.
488 Added special-case top-level form processing of EVAL-WHEN, PROGN and MACROLET
489 so that we don't get huge compilations when these forms enclose lots of code
490 at top-level. To do this, I split off the environment manipulation code in
491 EVAL-WHEN and MACROLET.
492 ### Probably should expand macros to see if they turn into a magic form
493 ### before just compiling the thing.
495 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir2tran.lisp
496 09-Jan-90 13:23:41, Edit by Ram.
497 Wrote a version of PROGV. This IR1 translator is in IR2tran because it goes
498 directly from syntax to shallow-binding primitives.
500 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
501 08-Jan-90 14:39:46, Edit by Ram.
502 Made FIND-SOURCE-PATHS hack circular source code. CAR circularities are
503 detected by noticing that the cons is already in the source paths hashtable.
504 CDR circularities are detected using the two-phase trailing pointer hack.
505 This support is necessary as long as circular constants are allowed (which is
506 strongly implied by the presence of the #=/## read syntax.) Of course if
507 there is circular evaluated code, bad things will still happen...
509 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
510 08-Jan-90 13:36:03, Edit by Ram.
511 Made PRINT-SUMMARY print information about compilation units that were
512 aborted, and inhibited printing of unknown function warnings when the warning
513 compilation unit is unwound.
515 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
516 08-Jan-90 10:58:02, Edit by Ram.
517 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
518 08-Jan-90 10:49:04, Edit by Ram.
519 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/node.lisp
520 08-Jan-90 10:28:23, Edit by Ram.
521 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1final.lisp
522 08-Jan-90 10:40:20, Edit by Ram.
523 Changed *UNKNOWN-FUNCTIONS* a bit. Now it is a list of UNKNOWN-FUNCTION
524 structures. This was done primarily to allow the number of warnings to be
525 limited in IR1-CONVERT-OK-COMBINATION-FER-SHER rather than in PRINT-SUMMARY.
526 It turns out that recording hundreds of error locations for tents of
527 functions can suck down a large amount of memory.
529 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
530 05-Jan-90 16:24:40, Edit by Ram.
531 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
532 05-Jan-90 15:58:34, Edit by Ram.
533 Changed *UNKNOWN-FUNCTIONS* to be an alist with one entry for each name, with
534 the value being a list of all the error contexts for the calls. Made
535 PRINT-SUMMARY print the undefined function warnings sorted by name, limiting
536 the number of warnings per function to *UNKNOWN-FUNCTION-WARNING-LIMIT*.
538 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
539 05-Jan-90 15:51:31, Edit by Ram.
540 Changed PRINT-SUMMARY to print a warning for each unknown function.
542 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
543 05-Jan-90 15:46:02, Edit by Ram.
544 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1final.lisp
545 05-Jan-90 15:45:49, Edit by Ram.
546 Moved detection of unknown function calls to
547 IR1-CONVERT-OK-COMBINATION-FER-SHER so that we can conveniently note the
548 error context each time around. *UNKNOWN-FUNCTIONS* is now a list of conses
549 (Name . Compiler-Error-Context), with entries for each call to an unknown
552 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
553 05-Jan-90 15:22:04, Edit by Ram.
554 Split off error context determination from error printing by introducing the
555 COMPILER-ERROR-CONTEXT structure. The current error context can now be saved
556 for future use by calling FIND-ERROR-CONTEXT.
558 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/debug-dump.lisp
559 04-Jan-90 10:56:42, Edit by Ram.
562 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
563 04-Jan-90 10:39:31, Edit by Ram.
564 Put in hooks for dumping debug info.
566 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/entry.lisp
567 03-Jan-90 15:04:07, Edit by Ram.
568 Added code to dump the arg documentation. For now, we do pretty much what
569 the old compiler did, i.e. printing it to a string.
570 ### Eventually, we may want to put in code to flush package qualifiers on the
571 variable names and omit complex default forms.
573 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/node.lisp
574 03-Jan-90 14:44:54, Edit by Ram.
575 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
576 03-Jan-90 14:50:15, Edit by Ram.
577 Added FUNCTIONAL-ARG-DOCUMENTATION slot and made IR1 conversion set it.
579 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/node.lisp
580 03-Jan-90 14:34:44, Edit by Ram.
581 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
582 03-Jan-90 14:34:27, Edit by Ram.
583 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/debug.lisp
584 03-Jan-90 14:40:06, Edit by Ram.
585 Added LAMBDA-OPTIONAL-DISPATCH and made IR1 conversion set it in :OPTIONAL
586 lambdas. Made consistency checker allow this.
588 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
589 03-Jan-90 14:07:30, Edit by Ram.
590 In DELETE-OPTIONAL-DISPATCH, don't clear the ENTRY-FUNCTION in the :OPTIONAL
591 lambdas. This info is now kept in the LAMBDA-OPTIONAL-DISPATCH slot, and is
592 not cleared when the lambda stops being an entry point.
594 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/dfo.lisp
595 03-Jan-90 10:35:50, Edit by Ram.
596 But we still want to compute the component name in such components...
598 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/dfo.lisp
599 03-Jan-90 09:27:51, Edit by Ram.
600 Changed FIND-INITIAL-DFO to move all components containing a top-level lambda
601 to the end of the compilation order, even if there are XEPs. This does a
602 better job of ensuring that environment analysis is done before we compile
603 the top-level component which does cross-component references.
604 ### This probably still loses in some pathological case.
606 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
607 02-Jan-90 17:01:46, Edit by Ram.
608 Fixed CLEAR-IR2-INFO to check whether there is a tail set before attempting
611 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir2tran.lisp
612 02-Jan-90 14:51:46, Edit by Ram.
613 Changed IR2-CONVERT-CLOSURE to not use the IR2-ENVIRONMENT-ENVIRONMENT, since
614 this is now blown away after the component is compiled. Instead we use the
615 ENVIRONMENT-CLOSURE, which is just as good. Actually, this should only
616 happen with references in XEPs, since that is the only kind of function that
617 can reference functions across component boundaries.
619 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
620 17-Dec-89 15:30:10, Edit by Ram.
621 Wrote CLEAR-IR2-INFO and made COMPILE-TOP-LEVEL call it after it was done
622 with the IR2 for each component. This should allow the IR2 data structures
623 to be reclaimed after each component is compiled, even in a multi-component
626 ### Eventually it should be possible for the IR1 to be reclaimed after the
627 component is compiled, but there currently cross-component links that inhibit
628 this. It would also cause problems with IR1 consistency checking, since we
629 currently need to check all components together.
631 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
632 15-Dec-89 13:33:44, Edit by Ram.
633 In IR1-CONVERT-VARIABLE, when we find a CT-A-VAL, we convert an ALIEN-VALUE
634 form rather than referencing the CT-A-VAL as a leaf.
636 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1final.lisp
637 13-Dec-89 13:38:51, Edit by Ram.
638 In NOTE-FAILED-OPTIMIZATION, also inhibit any attempt to give a note if the
639 combination is no longer a known call.
641 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/gtn.lisp
642 12-Dec-89 12:25:57, Edit by Ram.
643 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir2tran.lisp
644 12-Dec-89 12:36:38, Edit by Ram.
645 To avoid having to fix this right right now, changed all passing locations to
646 be *ANY-PRIMITIVE-TYPE* and added code to do necessary coercions to/from the
647 actual variable representation.
649 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/type.lisp
650 12-Dec-89 10:21:15, Edit by Ram.
651 Fixed a bunch of declarations that were calling things TYPEs instead of
654 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
655 11-Dec-89 10:11:31, Edit by Ram.
656 Changed default fasl file extension from "fasl" to "nfasl", at least for now.
658 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/fndb.lisp
659 11-Dec-89 08:15:47, Edit by Ram.
660 Changed most uses of the FUNCTION type to CALLABLE, now that FUNCTION doesn't
661 encompass SYMBOL but we can still call them. Also fixed some lossage where
662 someone believed that the SUBSTITUTE/NSUBSTITUTE family of functions had the
663 same arguments as the DELETE/REMOVE family.
665 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/srctran.lisp
666 10-Dec-89 20:33:05, Edit by Ram.
667 Oops... (fifth x) /==> (nth 5 x), is really (nth 4 x). So that's why
668 PACKAGE-INIT was losing...
670 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/macros.lisp
671 10-Dec-89 09:23:47, Edit by Ram.
672 Fixed DO-NODES-BACKWARDS to work when the current node is deleted now that
673 UNLINK-NODE blasts the PREV. Also fixed two bugs in this macro that seem not
674 to have affected the sole use in FLUSH-DEAD-CODE. One was that it randomly
675 referenced the variable CONT in one place, rather than commaing in the
676 appropriate argument. The other was that it did an extra iteration binding
677 CONT to the block start and NODE to whatever its USE was (often NIL.)
679 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
680 09-Dec-89 13:31:24, Edit by Ram.
681 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1final.lisp
682 09-Dec-89 13:30:52, Edit by Ram.
683 Wrote NODE-DELETED and made NOTE-FAILED-OPTIMIZATION call it so that we won't
684 gag trying to look at deleted code. This also prevents bogus efficiency
685 notes about code that was actually optimized away.
687 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
688 09-Dec-89 13:22:39, Edit by Ram.
689 Made UNLINK-NODE set the NODE-PREV of the deleted node to NIL so that we can
690 recognize deleted nodes. Also, fixed the degenerate exit branch to add a use
691 by EXIT rather than NODE.
693 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/checkgen.lisp
694 08-Dec-89 11:28:54, Edit by Ram.
695 Changed CONVERT-TYPE-CHECK to call LOCAL-CALL-ANALYZE now that this is not
696 being done in COMPILE-COMPONENT.
698 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
699 08-Dec-89 11:24:13, Edit by Ram.
700 Fixed PROPAGATE-FUNCTION-CHANGE to call MAYBE-LET-CONVERT in addition to
701 COMVERT-CALL-IF-POSSIBLE so that IR1 optimize will let convert calls that it
702 discovers can be local.
704 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/vop.lisp
705 08-Dec-89 10:58:23, Edit by Ram.
706 Looks like when I made OLD-CONT and RETURN-PC environment TNs (and requiring
707 the IR2-ENVIRONMENT-SLOTS to be initialized after the environment was
708 created), I modified the wrong slots to allow NIL. Only detected now because
709 I was running with safe defstruct accessors.
711 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/debug.lisp
712 08-Dec-89 09:58:33, Edit by Ram.
713 IR1 invariants now a bit different: :DELETED continuations can only be
714 received by blocks with DELETE-P set, and blocks with DELETE-P set can have
717 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/locall.lisp
718 08-Dec-89 09:51:24, Edit by Ram.
719 Don't attempt to let-convert when the REF is in a block with DELETE-P set
721 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
722 08-Dec-89 09:50:13, Edit by Ram.
723 Don't attempt to do IR1 optimizations when the block has DELETE-P set, just
726 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
727 08-Dec-89 09:46:20, Edit by Ram.
728 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/node.lisp
729 08-Dec-89 09:51:26, Edit by Ram.
730 Added BLOCK-DELETE-P and made DELETE-CONTINUATION set it in the DEST block
731 and its predecessors. Changed most uses of DELETE-CONTINUATION to assert
732 that there isn't a DEST.
734 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
735 07-Dec-89 22:08:35, Edit by Ram.
736 In IR1-OPTIMIZE-IF, set COMPONENT-REANALYZE before UNLINK-NODE so that there
737 is still a component in the block.
739 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
740 07-Dec-89 21:17:43, Edit by Ram.
741 In IR1-CONVERT-OK-COMBINATION-FER-SHER, set the CONTINUATION-%DERIVED-TYPE
742 and CONTINUATION-TYPE-CHECK of the fun cont in addition to setting
743 CONTINUATION-REOPTIMIZE.
745 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/srctran.lisp
746 07-Dec-89 21:08:09, Edit by Ram.
747 Moved definitions of the arithmetic & logic functions %LDB et al. here from
748 eval.lisp, since we need them in the bootstrapping environment.
750 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
751 07-Dec-89 19:17:48, Edit by Ram.
752 Changed USE-CONTINUATION not to set the CONTINUATION-%DERIVED-TYPE, as this
753 inhibits CONTINUATION-DERIVED-TYPE from seeing whether the assertion needs to
756 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
757 07-Dec-89 18:55:32, Edit by Ram.
758 Changed IR1-OPTIMIZE to more explicitly ignore a block when it is directly
759 deleted due to :DELETED kind or no predecessors. The old code should have
760 realized not to optimize a deleted block, but in a rather obscure way.
762 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
763 07-Dec-89 13:25:38, Edit by Ram.
764 Changed IR1-OPTIMIZE-UNTIL-DONE to count the number of iterations that didn't
765 introduce any new code (set COMPONENT-REANALYZE) rather than just the total
766 number of iterations. Reduced MAX-OPTIMIZE-ITERATIONS to 3, since we now
767 don't have to worry so much about the results of transforms being adequately
768 optimized. Changed IR1-PHASES to call GENERATE-TYPE-CHECKS where it was
769 calling CHECK-TYPES. Flushed old call to GENERATE-TYPE-CHECKS in
772 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
773 07-Dec-89 13:24:20, Edit by Ram.
774 Changed IR1-OPTIMIZE-IF to set COMPONENT-REANALYZE if it does anything.
776 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/checkgen.lisp
777 07-Dec-89 12:56:18, Edit by Ram.
778 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
779 07-Dec-89 12:28:19, Edit by Ram.
780 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ltn.lisp
781 07-Dec-89 13:01:31, Edit by Ram.
782 Changed type checking around a bunch, fixing some bugs and inefficiencies.
783 The old CHECK-TYPES phase is gone. The determination of
784 CONTINUATION-TYPE-CHECK is now done on the fly by CONTINUATION-DERIVED-TYPE.
785 The compile-time type error detection has been moved into type check
786 generation. Type check generation is now driven by BLOCK-TYPE-CHECK, so it
787 doesn't have to look at everything on repeat iterations. Made
788 ASSERT-CONTINUATION-TYPE set BLOCK-TYPE-CHECK when there is a new assertion.
790 There are two new values of TYPE-CHECK: :ERROR and :NO-CHECK. These are used
791 by check generation to comminicate with itself and the back end. :ERROR
792 indicates a compile-time type error, which always causes a type check to be
793 emitted, regardless of policy. :NO-CHECK indicates that a check is needed,
794 but expected not to be generated due to policy or a safe implementation.
795 This inhibits LTN from choosing an unsafe implementation based on results of
796 new type information from the post-type-check optimization pass.
798 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/type.lisp
799 07-Dec-89 10:01:23, Edit by Ram.
800 Yep, that combined with a bug in how I hooked CTYPEP into TYPES-INTERSECT.
801 That function should return (VALUES T NIL) in the uncertain case, not
804 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/type.lisp
805 07-Dec-89 09:54:44, Edit by Ram.
806 Fixed CTYPEP to return the second value T when it calls TYPEP. Is this what
807 is causing all hell to break loose? It shouldn't, since it should just
808 result in increased type uncertainty.
810 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/proclaim.lisp
811 06-Dec-89 21:24:00, Edit by Ram.
812 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/macros.lisp
813 06-Dec-89 21:26:24, Edit by Ram.
814 Added support for the DEBUG-INFO optimization quality (DEBUG for short).
816 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/type.lisp
817 06-Dec-89 11:25:36, Edit by Ram.
818 Made CTYPEP return a second value indicating whether it was able to determine
819 the relationship. Made all callers look at the second value and propagate
822 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/proclaim.lisp
823 06-Dec-89 11:11:06, Edit by Ram.
824 Moved the actual establishing of the type definition to %%COMPILER-DEFSTRUCT
825 from %DEFSTRUCT. Part of this was actually duplicated both places. Now it
826 is only here. Hopefully this won't cause any initialization problems. Also,
827 made structure redefinition preserve the INCLUDED-BY list so that existing
828 structures won't suddenly be broken when the supertype is compiled.
830 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
831 06-Dec-89 10:43:21, Edit by Ram.
832 Changed PROCESS-TYPE-PROCLAMATION to call SINGLE-VALUE-TYPE so that we don't
833 try to call TYPE-INTERSECTION on a hairy function type (or make the type of a
834 variable, for all that matter.)
836 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
837 05-Dec-89 13:42:19, Edit by Ram.
838 Made NCOMPILE-FILE frob *DEFAULT-COOKIE* so as to make optimize proclamations
839 affect only the file that they appear in (and any compilations dynamically
840 enclosed in that file.)
842 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
843 04-Dec-89 09:38:18, Edit by Ram.
844 Flushed :SEMI-INLINE and :ALWAYS-INLINE values for INLINEP. Added
845 :MAYBE-INLINE, which is interpreted in a more advisory manner. Changed
846 IR1-CONVERT-GLOBAL-INLINE so that it does something like the old
847 :SEMI-INLINE case for all inline calls so that recursive functions can be
850 Fixed this code so that you really can have recursive inline functions. This
851 was supposedly supported for :SEMI-INLINE functions, but did not in fact
852 work. We do a hack similar to LABELS: we enter a dummy FUNCTIONAL in the
853 *FREE-FUNCTIONS* to prevent repeated attempts to convert the expansion.
855 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/srctran.lisp
856 03-Dec-89 15:03:48, Edit by Ram.
857 Defined SAME-LEAF-REF-P and made transforms for EQ, EQL, < and > use it to
858 see if both args are references to the same variable or functional or
859 whatever. Also use the EQ transform for CHAR= and EQUAL.
861 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
862 02-Dec-89 09:26:12, Edit by Ram.
863 Made MAX-OPTIMIZE-ITERATIONS be a ceiling on the number of times that
864 IR1-OPTIMIZE-UNTIL-DONE will iterate. If exceeded, we clear a bunch of
865 REOPTIMIZE flags and punt. This was made necessary by the addition of type
866 inference on set variables, which may take arbitrarily long to converge.
868 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
869 01-Dec-89 14:05:10, Edit by Ram.
870 Added code to compute the type of set LET variables as the union of the types
871 of the initial value and the set values.
873 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/checkgen.lisp
874 01-Dec-89 12:11:57, Edit by Ram.
875 Added code to check to see if it is cheaper to check against the difference
876 between the proven type and the assertion. If so, emit a check against the
877 negation of this difference.
879 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/srctran.lisp
880 01-Dec-89 09:04:37, Edit by Ram.
881 Wrote IR1 transforms for < and > that attempt to statically determine the
882 relationship using type information.
884 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/type.lisp
885 01-Dec-89 10:06:56, Edit by Ram.
886 Wrote TYPE-DIFFERENCE.
888 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir2tran.lisp
889 30-Nov-89 12:04:24, Edit by Ram.
890 Marked the error signalling funny functions as not returning by using
891 TRULY-THE NIL. Formerly this was subverting type inference, since the
892 primitive was considered to return *.
894 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
895 30-Nov-89 11:52:27, Edit by Ram.
896 Made SUBSTITUTE-CONTINUATION-USES do a REOPTIMIZE-CONTINUATION on the New
897 continuation so that we realize we need to recompute its type, etc. This was
898 seriously crippling type inference. It probably came unglued in let
899 conversion when we changed over to using the general substitute function.
901 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
902 30-Nov-89 11:31:00, Edit by Ram.
903 Changed FIND-FREE-VARIABLE to find the type of constants having values with
904 CTYPE-OF, rather than using INFO VARIABLE TYPE. This way we find a good type
905 for all constants, without interacting with the vagaries of environment query.
907 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
908 30-Nov-89 10:50:37, Edit by Ram.
909 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/locall.lisp
910 29-Nov-89 13:14:40, Edit by Ram.
911 Moved merging of tail sets from CONVERT-CALL to IR1-OPTIMIZE-RETURN. The old
912 code wasn't working because IR1 optimizations (such as deleting local EXITs)
913 could cause a local call to be tail-recursive yet the function would never
914 get added to the tail set because it had already been converted.
916 Inaccurate computation of the tail sets resulted in bad code problems, since
917 functions were returning in ways not expected by their callers.
919 ### This code still isn't quite right, since IR1 optimization is supposed to
920 be optional. One possible fix would be to do tail annotation in IR1
921 optimization, but then you would have to run IR1 optimize to get proper tail
922 recursion. This might not be much of an issue, since we will probably always
923 want to do at least some IR1 optimization.
925 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/srctran.lisp
926 27-Nov-89 12:35:17, Edit by Ram.
927 Fixed a braino in mask computation in the %DPB, %MASK-FIELD and
928 %DEPOSIT-FIELD transforms.
930 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/fndb.lisp
931 26-Nov-89 15:28:27, Edit by Ram.
932 Fixed MACRO-FUNCTION def to specify a result type of (OR FUNCTION NULL),
933 rather than just FUNCTION. This was disabling the use of this function as a
934 predicate to test whether a symbol names a macro. Also fixed the argument
937 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/srctran.lisp
938 25-Nov-89 22:44:32, Edit by Ram.
939 Fixed RPLACx transforms to return the right value.
941 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/type.lisp
942 22-Nov-89 19:27:58, Edit by Ram.
943 Fixed the definition of STRING-CHAR so that it wouldn't seem to be a subtype
946 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/seqtran.lisp
947 22-Nov-89 14:31:40, Edit by Ram.
948 In MAPPER-TRANSFORM, I seem to have inverted the sense of the exit test when
949 converting from CONSP to ENDP.
951 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
952 21-Nov-89 16:51:31, Edit by Ram.
953 Moved GTN before control analysis so that the IR2-Environment is allocated by
954 the time that control analysis runs.
956 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/control.lisp
957 21-Nov-89 16:38:24, Edit by Ram.
958 Moved to ADD-TO-EMIT-ORDER the adding of IR2-Blocks to the
959 IR2-ENVIRONMENT-BLOCKS. This way, overflow blocks created by conflict
960 analysis will appear in this list. TNs only live in overflow blocks were
961 being considered not to conflict with :ENVIRONMENT TNs.
963 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/stack.lisp
964 21-Nov-89 16:34:05, Edit by Ram.
965 Made DISCARD-UNUSED-VALUES make an IR2 block for the cleanup block and call
966 ADD-TO-EMIT-ORDER on it. I think that if this code ever ran, it would have
967 died. This code was tested at one point, so it was probably broken by the
968 move of control analysis to before all the other IR2 pre-passes.
970 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/tn.lisp
971 21-Nov-89 14:43:29, Edit by Ram.
972 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/gtn.lisp
973 21-Nov-89 14:51:36, Edit by Ram.
974 Wrote MAKE-WIRED-ENVIRONMENT-TN so that the save TNs for old-cont and
975 return-pc could be made environment-live. Made ASSIGN-IR2-ENVIRONMENT pass
976 the environment to MAKE-xxx-SAVE-TN so that they could make environment-live
979 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/assembler.lisp
980 20-Nov-89 08:58:31, Edit by Ram.
981 In NEW-LOGIOR-ARGUMENT, added code to check that the SB for :REGISTER
982 operands is really REGISTERS.
984 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir2tran.lisp
985 20-Nov-89 08:29:42, Edit by Ram.
986 In EMIT-MOVE, added code to emit a type error when moving between
987 incompatible TNs. It seems that this can happen with functions (especially
988 funny functions) that don't return. This seems like a good fix until we can
989 figure out how to hack the flow graph when there is a non-returning function.
990 [Incompatible moves may also happen if there is a compile-time type error and
991 the check is deleted due to unsafe policy, etc.]
993 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/fndb.lisp
994 17-Nov-89 15:06:51, Edit by Ram.
995 Changed %PUT's IR1 attributes from (FLUSHABLE) to (UNSAFE).
997 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/srctran.lisp
998 17-Nov-89 10:12:48, Edit by Ram.
999 Fixed some missing commas in SOURCE-TRANSFORM-TRANSITIVE that only affected
1000 LOGEQV. Good thing nobody uses it...
1002 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/vmdef.lisp
1003 16-Nov-89 09:42:37, Edit by Ram.
1004 Fixed previous fix to work when there is a more result.
1006 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/vmdef.lisp
1007 15-Nov-89 13:57:36, Edit by Ram.
1008 In TEMPLATE-TYPE-SPECIFIER, if we use a values type for the result, make it
1009 &REST T to represent the vagueness of values count matching.
1011 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/srctran.lisp
1012 15-Nov-89 09:57:48, Edit by Ram.
1013 Added missing source transform for LOGEQV, which was missed in the previous
1014 pass. This required changing SOURCE-TRANSFORM-TRANSTIVE, since that was
1015 already a source transform for LOGEQV. It's a good thing I left in *both*
1016 checks for broken interpreter stubs.
1018 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/srctran.lisp
1019 14-Nov-89 10:41:51, Edit by Ram.
1020 Added source transforms for zillions of trivial logic operations that were
1023 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
1024 14-Nov-89 10:43:24, Edit by Ram.
1025 In %DEFUN, added the presence of an IR2-CONVERT methods to the list of things
1026 that inhibits substitution of the actual definition for existing references.
1028 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/srctran.lisp
1029 13-Nov-89 12:21:52, Edit by Ram.
1030 Added source transforms for RPLACA, RPLACD.
1032 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
1033 13-Nov-89 12:17:32, Edit by Ram.
1034 Moved the test of NODE-REOPTIMIZE out of FIND-RESULT-TYPE and into
1035 IR1-OPTIMIZE-RETURN. This fixes a bug that was introduced when the clearing
1036 of NODE-REOPTIMIZE was moved to the start of the loop in IR1-OPTIMIZE-BLOCK.
1037 We were never recomputing the RETURN-RESULT-TYPE, since REOPTIMIZE was never
1038 set when we got to IR1-OPTIMIZE-RETURN. With this fix, the previous change
1039 should detect broken interpreter stubs.
1041 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1final.lisp
1042 12-Nov-89 13:05:49, Edit by Ram.
1043 Made CHECK-FREE-FUNCTION give a note when it sees a function that doesn't
1044 return (return type is NIL.) I thought that this would detect broken
1045 interpreter stubs. It turns out not to, but still seems like a useful
1048 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ltn.lisp
1049 13-Nov-89 11:47:30, Edit by Ram.
1050 Made LTN-ANALYZE-KNOWN-CALL give a warning when we are unable to find a
1051 template for a known call where there call is to the current function. This
1052 should tell result in a warning when we compile an interpreter stub for a
1053 function that the code sources assume is implemented primitively, but the
1054 compiler doesn't recognize.
1056 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir2tran.lisp
1057 12-Nov-89 10:54:25, Edit by Ram.
1058 Oops... When doing unsafe global function references, use
1059 FAST-SYMBOL-FUNCTION, not FAST-SYMBOL-VALUE.
1061 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
1062 10-Nov-89 13:37:15, Edit by Ram.
1063 Oops... Have to dump package frobbing forms specially for cold load. This
1064 might want to be on a switch someday. Instead of actually compiling them, we
1065 dump them as lists so that Genesis can eval them. The normal top-level form
1066 compilation must be suppressed, since the package system isn't initialized at
1067 the time that top-level forms run.
1069 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/dfo.lisp
1070 05-Nov-89 13:45:11, Edit by Ram.
1071 Changed FIND-INITIAL-DFO to return top-level components at the end of the
1072 list so that in a block compilation all the functions will be compiled before
1073 we compile any of the top-level references to them.
1075 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/envanal.lisp
1076 01-Nov-89 11:57:58, Edit by Ram.
1077 Changed Find-Non-Local-Exits back to a loop over all the blocks in the
1078 component, rather than trying to find the exits from the Lambda-Entries.
1079 Unfortunately, the latter is not possible, since the exit continuation may
1080 become deleted if it isn't used. A possible way to avoid this search would
1081 be to make the Entry node have a list of all the Exit nodes, rather than the
1084 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/vop.lisp
1085 31-Oct-89 12:45:20, Edit by Ram.
1086 Allow (SETF xxx) for the Entry-Info-Name, in addition to strings and symbols.
1088 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
1089 31-Oct-89 12:53:37, Edit by Ram.
1090 In Find-Source-Context, only take the car of list first args to DEFxxx forms
1091 when the form name is in a special list. This list initially only contains
1094 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
1095 31-Oct-89 12:23:57, Edit by Ram.
1096 In Convert-More-Entry, made the temporaries for the keyword and value
1097 ignorable so that we don't get "defined but never read" warnings when there
1098 aren't any keywords specified.
1100 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
1101 31-Oct-89 12:11:24, Edit by Ram.
1102 Fixed Process-Declarations to correctly deal with pervasive special
1103 declarations. Previously, a warning would be given if the varible was only
1104 locally declared, and not globally known. Also an assertion failure would
1105 have resulted (rather than a Compiler-Error) when a constant was declared
1106 pervasively special.
1108 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
1109 31-Oct-89 11:39:54, Edit by Ram.
1110 Changed Reference-Constant so that it doesn't call Reference-Leaf anymore,
1111 and made the source be an explicit argument. Changed Reference-Leaf to just
1112 use the Leaf-Name as source, rather than (sometime incorrectly) inferring the
1113 source for constants.
1115 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir2tran.lisp
1116 20-Oct-89 15:56:56, Edit by Ram.
1117 In the :UNKNOWN and :UNUSED cases of CONTINUATION-RESULT-TNS, always return
1118 TNs of the specified result types, rather than sometimes returing T TNs.
1119 This is some sort of compensation for our new belief that VOPS returining
1120 non-T results need not be prepared to accept T TNs. How many other places
1121 does this need to be fixed?
1123 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/stack.lisp
1124 17-Oct-89 12:36:38, Edit by Ram.
1125 In FIND-PUSHED-CONTINUATIONS, fix the check for pushes coming before pops.
1126 You can compare nodes and continuations all day without finding any that are
1129 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/macros.lisp
1130 17-Oct-89 11:44:40, Edit by Ram.
1131 Flushed the code in DEFTRANSFORM that was creating a THE out of the CONT's
1132 asserted type. This should be unnecessary, and was made incorrect by the
1133 continuation representation change. If the node was the last in a block and
1134 the value wasn't used, then the value would be asserted to be of the NIL
1135 type, resulting in a warning.
1137 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
1138 17-Oct-89 10:51:27, Edit by Ram.
1139 Changed Compiler-Mumble to tell whether an error message precedes from
1140 *last-format-string*, rather than *last-source-context*, since the last
1141 message might not have had a source context. Made *compiler-error-output* be
1142 globally bound to a synonym stream for *error-output* so that calls to
1143 Compiler-Error outside of the compiler will more or less work.
1145 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/checkgen.lisp
1146 16-Oct-89 15:23:13, Edit by Ram.
1147 In Convert-Type-Check, set the start & end cleanups of the new block to the
1148 *start* cleanup of the Dest's block, and not the end cleanup. Not sure this
1149 is really more correct, but it fixes one case.
1151 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/pack.lisp
1152 12-Oct-89 14:05:43, Edit by Ram.
1153 Added a before-GC hook that flushes the per-SB conflict data structure
1154 whenever they aren't being used. This should prevent megabyte-plus conflicts
1155 information from persisting after it is needed, and also reduce the cost of
1156 Init-SB-Vectors, since the vectors will stay smaller.
1158 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
1159 11-Oct-89 11:37:16, Edit by Ram.
1160 Made Propagate-Function-Change ignore references that are :Notinline.
1162 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
1163 10-Oct-89 23:28:33, Edit by Ram.
1164 In Print-Error-Message, use the *Current-Form* as the source form whenever if
1165 is non-NIL, even if there is a node in *Compiler-Error-Context*. This way,
1166 messages during IR1 conversion of a transform will be more useful.
1168 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
1169 10-Oct-89 22:47:56, Edit by Ram.
1170 Now Delete-Optional-Dispatch must be prepared for the main entry to be a let
1171 rather than just being deleted or a normal function, since let conversion is
1172 being triggered here.
1174 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/locall.lisp
1175 09-Oct-89 17:56:35, Edit by Ram.
1176 Fixed Convert-Call to change the combination kind before changing the ref
1177 leaf so that the call will appear local at that time. This allows let
1178 conversion to happen when we replace a optional dispatch with one of its EPs.
1180 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
1181 09-Oct-89 17:34:42, Edit by Ram.
1182 Fixed Delete-Optional-Dispatch to call Maybe-Let-Convert if we notice that a
1183 former EP lambda has exactly one reference.
1185 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
1186 04-Oct-89 19:05:16, Edit by Ram.
1187 In IR1-Optimize-Combination, we must be prepared for the derive-type method
1188 to return NIL. This will happen if the arglist is incompatible with the
1189 call (and if the optimizer explicitly returns NIL.)
1191 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/macros.lisp
1192 04-Oct-89 19:22:17, Edit by Ram.
1193 Check-Transform-Keys and Check-Keywords-Constant were checking the second
1194 (value) part of the key/value pair, so optimizers would never run if any
1195 keywords were supplied.
1197 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
1198 04-Oct-89 15:39:27, Edit by Ram.
1199 When I changed Propagate-Local-Call-Args to clear the Continuation-Reoptimize
1200 flags, I forgot that a local call continuation can be NIL (for an unused
1203 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
1204 04-Oct-89 11:05:48, Edit by Ram.
1205 Oops... In Propagate-Function-Change, we have to use
1206 Continuation-Derived-Type rather than Continuation-Type now that the latter
1207 changes function types to FUNCTION.
1209 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/globaldb.lisp
1210 27-Sep-89 14:24:04, Edit by Ram.
1211 Exported basic interface (but not environment vars, pending some abstract
1212 interface to environment manipulation.) Changed class and type names to be
1213 represented as strings at run time to avoid package lossage. Changed names
1214 to be arbitrary equal objects (to allow setf functions).
1216 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir2tran.lisp
1217 21-Sep-89 10:12:38, Edit by Ram.
1218 Changed OK-Result-TN to indicate need for a coercion if the result is unboxed
1219 and the TN is boxed. This prevents load-TN packing from getting confused due
1220 to there being no intersection between the SC restriction and the types
1221 allowed by the SC. This would happen when the result was restricted to a
1224 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ltn.lisp
1225 21-Sep-89 10:39:04, Edit by Ram.
1226 Changed Restrict-Descriptor-Args to restrict the argument only when a
1227 coercion was required. This allows immediate objects to be passed to
1228 templates in unboxed registers.
1230 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
1231 30-Aug-89 14:37:36, Edit by Ram.
1232 Changed Change-Leaf-Ref (and hence Substitute-Leaf) to use Derive-Node-Type
1233 on the Ref with the Leaf-Type so that substituting a variable causes the new
1236 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
1237 30-Aug-89 14:30:44, Edit by Ram.
1238 Changed IR1-Optimize-Block and all the combination optimization code to clear
1239 optimize flags *before* optimizing rather than after, so that a node will be
1240 reoptimized if necessary.
1242 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/vmdef.lisp
1243 29-Aug-89 09:20:18, Edit by Ram.
1244 Made Template-Type-Specifier hack *'s in operand type restrictions.
1246 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ltn.lisp
1247 24-Aug-89 13:55:04, Edit by Ram.
1248 In LTN-Analyze-MV-Call, have to annotate the continuations in reverse order,
1249 now that the IR2-Block-Popped isn't built in reverse order.
1251 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ltn.lisp
1252 24-Aug-89 13:25:14, Edit by Ram.
1253 In LTN-Analyze, eliminated assertion that the block containing the use of a
1254 unknown-values continuation is not already in the
1255 IR2-Component-Values-Generators. It is possible for a single block to
1256 contain uses of several MV continuations that have their DEST in a different
1259 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/dfo.lisp
1260 22-Aug-89 12:12:49, Edit by Ram.
1261 Made Find-Initial-DFO-Aux call Walk-Home-Call-Graph on each block before
1262 walking the successors. Walk-Home-Call-Graph is a new function that looks at
1263 the current block's home lambda's bind block to see if it is in a different
1264 component. We need to do this to ensure that all code in a given environment
1265 ends up in the same component, since any successor might be a non-local exit
1266 (into a different environment.)
1268 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
1269 18-Aug-89 15:46:51, Edit by Ram.
1270 Flushed the (locally (declare (optimize (safety 0))) ...) around the body of
1271 Unwind-Protect's expansion. I think that this was trying to suppress some
1272 type checking of the MV-Bind, but it was also causing unsafe compilation of
1273 the protected form. If we really need this, it must be but back some other
1276 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir2tran.lisp
1277 18-Aug-89 15:11:13, Edit by Ram.
1278 Oops... We can't use Label-Offset in the generators for Make-Catch-Block,
1279 &c. Instead, we use a :Label load-time constant. The target argument to the
1280 VOPs is now a normal integer argument, rather than a label in the
1283 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ltn.lisp
1284 18-Aug-89 14:13:51, Edit by Ram.
1285 In LTN-Analyze-Return, don't annotate NLX continuations as :Unused so that
1286 the NLX entry code doesn't have to worry about this case.
1288 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
1289 18-Aug-89 13:45:19, Edit by Ram.
1290 In Reoptimize-Continuation, don't do anything if the continuation is deleted.
1292 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
1293 17-Aug-89 11:17:13, Edit by Ram.
1294 Oops... In Node-Ends-Block, have to set the Block-Start-Uses, now that it is
1295 always supposed to hold the uses of block starts.
1297 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ltn.lisp
1298 10-Aug-89 10:49:01, Edit by Ram.
1299 Changed Find-Template to intersect the Node-Derived-Type with the
1300 Continuation-Asserted-Type rather than using the Continuation-Derived-Type in
1301 the case where we are allowed to use the result type assertion. This works
1302 better when the continuation has multiple uses.
1304 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/typetran.lisp
1305 24-Jul-89 14:25:09, Edit by Ram.
1306 Fixed Source-Transform-Union-Typep to check that there really is a MEMBER
1307 type in the union, instead of assuming there is whenever LIST is a subtype.
1308 This was losing on (OR SYMBOL CONS).
1310 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/assembler.lisp
1311 19-Jul-89 14:36:10, Edit by Ram.
1312 Made Init-Assembler nil out the Info slots in all the fixups so that the
1313 fixup freelist doesn't hold onto the entire IR. More storage allocation
1314 lossage has been caused by the explicit freelists in the assembler than
1317 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/macros.lisp
1318 12-Jul-89 15:34:09, Edit by Ram.
1319 Changed defining macros to stick the actual function object into the
1320 Function-Info &c to be compatible with the new definition of the Function
1323 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir2tran.lisp
1324 12-Jul-89 12:57:24, Edit by Ram.
1325 Fixed goof in IR2-Convert-Local-Unknown call, where it was converting the
1326 result TN list to TN-refs twice. For some reason, this was dying with a
1327 highly mysterious error in Reference-TN-List. Perhaps this file was last
1328 compiled with an unsafe policy?
1330 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/life.lisp
1331 11-Jul-89 19:29:05, Edit by Ram.
1332 In Propagate-Live-TNs, when we convert a :Read-Only conflict to :Live, we
1333 null the entry in the local TNs to represent the elimination of local
1334 conflict information.
1336 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
1337 11-Jul-89 18:46:17, Edit by Ram.
1338 Changed %Defun to only substitute the functional when it isn't notinline and
1339 isn't known to have any templates or transforms. The latter constraint fixes
1340 big problems with interpreter stubs.
1342 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
1343 05-Jul-89 22:11:10, Edit by Ram.
1344 In Return-From, put back code that made Cont start a block so that Cont will
1345 have a block assigned before IR1-Convert. So that's why that was there.
1347 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ltn.lisp
1348 05-Jul-89 18:07:48, Edit by Ram.
1349 In Annotate-Unknown-Values-Continuation, make a safety note when we delete a
1350 check and the policy is safe.
1352 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
1353 05-Jul-89 17:43:18, Edit by Ram.
1354 In IR1-Optimize-Exit, don't propagate Cont's type to the Value, since this
1355 moves checking of the assertion to the Exit, which is a bad place.
1357 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir2tran.lisp
1358 05-Jul-89 15:10:34, Edit by Ram.
1359 In Emit-Return-For-Locs, changed the test for when to use known return
1360 convention from External-Entry-Point-P to *not* External-Entry-Point-P.
1362 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir2tran.lisp
1363 05-Jul-89 14:41:55, Edit by Ram.
1364 Oops... We need a UWP-Entry VOP for Unwind-Protect entries to force random
1365 live TNs onto the stack. It doesn't actually do anything, but specifies the
1366 passing locations as results so that they aren't forced to the stack.
1368 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ltn.lisp
1369 03-Jul-89 16:46:09, Edit by Ram.
1370 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/stack.lisp
1371 03-Jul-89 16:39:53, Edit by Ram.
1372 Changed unknown values hackery to ignore non-local exits. We don't record
1373 NLX uses of unknown-values continuations as generators, and we stop
1374 our graph walk when we hit the component root. These changes were
1375 necessitated by the decision to make %NLX-Entry no longer use the values
1378 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/pack.lisp
1379 03-Jul-89 11:31:36, Edit by Ram.
1380 Fixed one-off error in Pack-Wired-TN's determination of when we have to grow
1381 the SB, and fixed it to handle SC-Element-Size /= 1 while I was at it.
1383 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/locall.lisp
1384 29-Jun-89 12:02:16, Edit by Ram.
1385 In Local-Call-Analyze-1, moved the test for the reference being by the
1386 Basic-Combination-Fun to around the entire branch that attempts to convert,
1387 rather than immediately around the call to Convert-Call-If-Possible. Before,
1388 a closure arg to a local function wouldn't get an XEP.
1390 Also, changed Reference-Entry-Point to ignore references to :Cleanup and
1393 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/envanal.lisp
1394 28-Jun-89 16:57:12, Edit by Ram.
1395 In Emit-Cleanups, if we find there is no cleanup code, then do nothing,
1396 instead of inserting a cleanup block holding NIL. This was causing blocks
1397 with no non-local uses to inhibit tail-recursion.
1399 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/checkgen.lisp
1400 28-Jun-89 14:03:45, Edit by Ram.
1401 It finally happened. A paren error that resulted in mysterious lossage. In
1402 this case, the body of the loop in Make-Type-Check-Form was moved out of the
1403 loop, and always executed once. The meant that only one value would ever be
1404 checked or propagated on to the original receiver.
1406 /afs/cs.cmu.edu/project/clisp/new-compiler/compiler/pack.lisp
1407 28-Jun-89 13:20:59, Edit by Ram.
1408 Oops... I introduced a bug in the previously correct argument case of
1409 Load-TN-Conflicts-In-SB. We terminate the loop when we reach the first
1410 reference, not the first argument. This caused conflicts with temporaries
1411 with lives beginning at :Load to be ignored.
1413 /usr1/lisp/compiler/pack.lisp, 23-Jun-89 15:54:32, Edit by Ram.
1414 Fixed logic in Load-TN-Conflicts-In-SB. We weren't recognizing conflicts
1415 with other argument/result TNs that had already been packed. This bug would
1416 only show up with multiple result load TNs. The argument case was actually
1417 correct, but was asymmetrical with the result case, and only worked becase
1418 argument load TNs were packed in evaluation order.
1420 /usr1/lisp/compiler/locall.lisp, 20-Jun-89 14:53:51, Edit by Ram.
1421 In Merge-Tail-Sets, quietly do nothing if the called function has no tail set
1422 (doesn't return), rather than dying.
1424 /usr1/lisp/compiler/globaldb.lisp, 14-Jun-89 10:14:04, Edit by Ram.
1425 Flushed Top-Level-P attribute.
1427 /usr1/lisp/compiler/macros.lisp, 14-Jun-89 10:14:03, Edit by Ram.
1428 Allow a doc string in Def-IR1-Translator (made the FUNCTION documentation).
1429 Removed support for Top-Level-P attribute.
1431 /usr1/lisp/compiler/ir1opt.lisp, 22-May-89 15:30:59, Edit by Ram.
1432 /usr1/lisp/compiler/ir1util.lisp, 22-May-89 15:22:17, Edit by Ram.
1433 Undid last change to Node-Ends-Block and Join-Blocks. This was fucking up
1434 big time, since it messed with the continuation even when it was a block
1437 /usr1/lisp/compiler/locall.lisp, 22-May-89 13:24:48, Edit by Ram.
1438 Changed Local-Call-Analyze to maintain the Component-New-Functions exactly up
1439 to date, only popping a function off exactly as it analyzes it. This way, a
1440 lambda is always referenced either in the Lambdas or New-Functions (except
1441 during a brief window), so we can do consistency checking during local call
1444 /usr1/lisp/compiler/ir1util.lisp, 19-May-89 10:05:28, Edit by Ram.
1445 /usr1/lisp/compiler/ir1opt.lisp, 19-May-89 10:05:27, Edit by Ram.
1446 In Flush-Dest and Reoptimize-Continuation, take care not to assume that the
1447 Continuation-Block is an undeleted block. Instead, we pick up the component
1448 to reoptimize from the uses or Dest.
1450 /usr1/lisp/compiler/ir2tran.lisp, 17-May-89 12:48:35, Edit by Ram.
1451 In Move-Results-Coerced and Move-Results-Checked, subtract Nsrc from Ndest,
1452 rather than the other way around.
1454 /usr1/lisp/compiler/control.lisp, 15-May-89 11:53:36, Edit by Ram.
1455 Made Control-Analyze walk XEPs first to eliminate the idiocy of never getting
1456 the drop-through in components with only one EP.
1458 /usr1/lisp/compiler/ir1util.lisp, 13-May-89 15:23:28, Edit by Ram.
1459 And similarly, in Node-Ends-Block, move the last continuation to the new
1460 block when its block is the old block.
1462 /usr1/lisp/compiler/ir1opt.lisp, 13-May-89 15:02:31, Edit by Ram.
1463 In Join-Blocks, move the Cont of the Last to Block1 when it's block is
1464 currently Block2. This way, the continuation isn't left pointing at some
1465 random deleted block.
1467 /usr1/lisp/compiler/ir1util.lisp, 14-Mar-89 10:12:04, Edit by Ram.
1468 Also, in Delete-Block, when we delete a bind, call Delete-Lambda, rather
1469 than trying to roll our own.
1471 /usr1/lisp/compiler/ir1util.lisp, 14-Mar-89 10:07:01, Edit by Ram.
1472 In Delete-Lambda, we must remove a let from its home's lets.
1474 /usr1/lisp/compiler/ir1util.lisp, 14-Mar-89 09:34:54, Edit by Ram.
1475 In Unlink-Node, the assertion that the start and end cleanups are the same
1476 must use Find-Enclosing-Cleanup, rather than just comparing the values
1479 /usr1/lisp/compiler/ir2tran.lisp, 14-Mar-89 08:26:04, Edit by Ram.
1480 Wrote Flush-Tail-Transfer and made people who do TR stuff use it. This
1481 function deletes the link between the blocks for a TR node and the block
1482 containing the return node. We have to do this so that lifetime analysis
1483 doesn't get confused when there are TNs live at the return node, but some
1484 predecessors of the return don't write the TNs because the return some other
1487 /usr1/lisp/compiler/srctran.lisp, 10-Mar-89 19:11:51, Edit by Ram.
1488 Made the transforms into %typep always pass until we do type predicates for
1491 /usr1/lisp/compiler/assembler.lisp, 10-Mar-89 18:56:45, Edit by Ram.
1492 Fixed Macrolet of Emit-Label in Def-Branch to have a paren in the right
1493 place. As written, it expanded into its argument, and didn't enclose any
1494 code anyway. But I think this would only affect instructions that both were
1495 a branch and had a load-time fixup.
1497 /usr1/lisp/compiler/assembler.lisp, 10-Mar-89 18:47:50, Edit by Ram.
1498 Added code to Def-Branch in the choose function that calls
1499 Undefined-Label-Error when the the label isn't defined. This function uses
1500 the *assembler-nodes* source info and the branch instruction location to
1501 print the source node responsible for generating the bogus branch.
1503 /usr1/lisp/compiler/assembler.lisp, 10-Mar-89 17:59:51, Edit by Ram.
1504 Made Gen-Label initalize the Elsewhere-P slot to :Undecided. Also made
1505 Merge-Code-Vectors ignore labels whose Elsewhere-P is undecided. The theory
1506 is that it should be o.k. to make labels that aren't emitted as long as you
1507 don't reference them. Of course, I will probably find that the losing labels
1508 are referenced. Renamed the Location slot in Label to %Location, and defined
1509 Label-Location to filter out undefined labels.
1511 /usr1/lisp/compiler/ltn.lisp, 10-Mar-89 17:43:39, Edit by Ram.
1512 In LTN-Analyze-Return, we must check for the Return-Info-Count being :Unknown
1513 rather than null when we want to know if a fixed number of values are
1516 /usr1/lisp/compiler/ir2tran.lisp, 07-Mar-89 18:13:12, Edit by Ram.
1517 In the Values-List IR2 convert method, we must also handle :Unused
1518 continuations, only punting when the continuation is :Fixed. When called
1519 with a TR result continuation, we have to emit the unknown-values return
1520 ourself. Otherwise, there isn't any way to write the Values-List function.
1522 /usr1/lisp/compiler/ir2tran.lisp, 06-Mar-89 21:25:12, Edit by Ram.
1523 Make-Closure takes the number of closure vars and the function-entry, rather
1524 than the other way around.
1526 /usr1/lisp/compiler/ir2tran.lisp, 06-Mar-89 20:48:29, Edit by Ram.
1527 And always pass 1 as the number of symbols to Unbind, rather than 0.
1529 /usr1/lisp/compiler/ir2tran.lisp, 06-Mar-89 20:43:47, Edit by Ram.
1530 Args to the Bind miscop are (Value, Symbol), and not the other way around.
1532 /usr1/lisp/compiler/ir2tran.lisp, 06-Mar-89 19:09:16, Edit by Ram.
1533 In IR2-Convert-IF, we have to negate the sense of the test when using an EQ
1534 NIL check. Made IR2-Convert-Conditional take an additional not-p argument.
1536 /usr1/lisp/compiler/ctype.lisp, 06-Mar-89 17:22:40, Edit by Ram.
1537 In Definition-Type, when we make the Function-Type, include the list of
1538 keyword info that we have built.
1540 /usr1/lisp/compiler/ir2tran.lisp, 02-Mar-89 18:16:40, Edit by Ram.
1541 In Init-XEP-Environment, when we are checking for whether there is a more
1542 arg, look at the entry-function rather than the XEP.
1544 /usr1/lisp/compiler/main.lisp, 01-Mar-89 15:58:32, Edit by Ram.
1545 Made Clear-Stuff clear the Finite-SB-Live-TNs in all SBs. Maybe this will
1548 /usr1/lisp/compiler/pack.lisp, 01-Mar-89 15:50:41, Edit by Ram.
1549 In Grow-SC, fill the Finite-SB-Live-TNs vector with NILs before we lose it so
1550 that if it is statically allocated, it won't hold onto garbage. But this
1551 shouldn't make any difference, since we never use the Live-TNs in unbounded
1554 /usr1/lisp/compiler/locall.lisp, 01-Mar-89 01:15:22, Edit by Ram.
1555 In Make-XEP-Lambda, in the lambda case, we now include an ignore declaration
1556 for the nargs var when policy suppresses the argument count check.
1558 /usr1/lisp/compiler/ir1util.lisp, 28-Feb-89 19:39:56, Edit by Ram.
1559 Also clear :Optional kind for the Main-Entry in Delete-Optional-Dispatch.
1561 /usr1/lisp/compiler/locall.lisp, 28-Feb-89 19:31:07, Edit by Ram.
1562 Changed Local-Call-Analyze so that it pushes new lambdas on the
1563 Component-Lambdas before it does any call analysis or let conversion. This
1564 gets the normal consistency maintenance code to handle removal of deleted
1565 and let lambdas. Before, there was a local list of new lambdas that could
1566 become inconsistent.
1568 /usr1/lisp/compiler/ir1tran.lisp, 28-Feb-89 18:12:15, Edit by Ram.
1569 Instead of trying to set the :Optional kind everywhere that hairy lambda
1570 conversion creates a lambda, we wait until we are done and set the kind only
1571 the lambdas that are actually e-ps. This was causing internal lambdas that
1572 weren't e-ps to be marked as optional. The fix is also clearer, and causes
1573 less complication in the already-hairy code.
1575 /usr1/lisp/compiler/ir1tran.lisp, 24-Feb-89 15:26:29, Edit by Ram.
1576 Changed Optional-Dispatch stuff to set the Functional-Entry-Function of the
1577 :Optional lambdas to the result Optional-Dispatch structure.
1579 /usr1/lisp/compiler/ir1opt.lisp, 24-Feb-89 14:46:57, Edit by Ram.
1580 In IR1-Optimize, changed test for being in a deleted lambda to just look at
1581 the block-lambda, rather than at it's home. The result should be the same.
1583 /usr1/lisp/compiler/entry.lisp, 24-Feb-89 14:30:37, Edit by Ram.
1584 Changed Compute-Entry-Info to use the XEP's environment to determine whether
1585 the function is a closure. The result should be the same, but is more easily
1588 /usr1/lisp/compiler/ir1util.lisp, 24-Feb-89 14:26:58, Edit by Ram.
1589 Deleted definition of Find-XEP-Call, since this doesn't make sense anymore.
1591 /usr1/lisp/compiler/debug.lisp, 24-Feb-89 14:21:09, Edit by Ram.
1592 Flushed permission of random wired live TNs at the start of an XEP.
1594 /usr1/lisp/compiler/debug.lisp, 24-Feb-89 14:18:01, Edit by Ram.
1595 In Check-Block-Successors, flushed permission of random successor count in
1598 /usr1/lisp/compiler/ir2tran.lisp, 24-Feb-89 14:14:12, Edit by Ram.
1599 Flushed check for being the bind block for an XEP that inhibited emission of
1600 a block-finishing branch in Finish-IR2-Block. Control flow is now normal in
1601 XEPs, so we don't want to randomly flush branches.
1603 /usr1/lisp/compiler/ir1opt.lisp, 24-Feb-89 14:07:52, Edit by Ram.
1604 Flushed check for being in an XEP in Join-Successor-If-Possible. Now that
1605 argument count dispatching is done explicitly, there is no need to force the
1606 call to a block boundry (for easy location). Also, we are getting more
1607 complex code in the XEP, making block merging a desirable optimization.
1609 /usr1/lisp/compiler/ir1util.lisp, 24-Feb-89 14:03:35, Edit by Ram.
1610 Fixed code in Delete-Lambda that was trying to notice when we are deleting
1611 the the XEP for an optional dispatch. The test was right, but the action was
1612 wrong: it was setting the Functional-Entry-Function for all the e-p's to NIL,
1613 yet they were already NIL. Instead, we call Delete-Optional-Dispatch, which
1614 deletes the unreferenced e-p's.
1616 /usr1/lisp/compiler/ir1tran.lisp, 23-Feb-89 20:17:21, Edit by Ram.
1617 Wrapped a (locally (declare (optimize (safety 0))) ...) around the body of
1618 the loop created in Convert-More-Entry so that no type checking is done on
1619 the fixnum arithmetic.
1621 /usr1/lisp/compiler/ir2tran.lisp, 23-Feb-89 14:34:49, Edit by Ram.
1622 Flushed most of the hair associated with the %Function-Entry funny function.
1623 What remains is now in Init-XEP-Environment, which is called by
1624 IR2-Convert-Bind when the lambda is an XEP.
1626 /usr1/lisp/compiler/gtn.lisp, 23-Feb-89 14:24:20, Edit by Ram.
1627 Flushed some special-casing of XEPs that is no longer needed now that XEP's
1628 have args. Also, allocation of argument passing locations in XEPs is now
1629 more similar to the non-XEP case: we don't allocate passing locations for
1632 /usr1/lisp/compiler/locall.lisp, 22-Feb-89 15:26:50, Edit by Ram.
1633 Change handling of XEPs. Most of the action in XEPs is now represented by
1634 explicit IR1 in the XEP: argument dispatching is done by a COND, etc.
1635 Instead of using funny functions such as %XEP-ARG to access the passed
1636 arguments, NARGS and all the positional arguments are passed as arguments to
1637 the XEP (with garbage defaults for unsupplied args). The code in the XEP
1638 just references these variables.
1640 This simplifies creation of the XEP, since we can just cons up a lambda form
1641 and convert it, instead of creating each XEP call by hand. It also moves
1642 complexity out of IR2 conversion, since argument dispatching has already been
1645 /usr1/lisp/compiler/ir2tran.lisp, 16-Feb-89 15:12:17, Edit by Ram.
1646 Fixed %XEP-Arg to use Move-Argument rather than just Move.
1648 /usr1/lisp/compiler/node.lisp, 15-Feb-89 00:36:30, Edit by Ram.
1649 Made Functional specify :Defined and Function as the defaults for the
1650 Where-From and Type slots so that we know defined functions are in fact
1653 /usr1/lisp/compiler/ir1tran.lisp, 14-Feb-89 23:48:37, Edit by Ram.
1654 In %Defun translator, fixed the test for being at top level (and thus o.k. to
1655 substitute). The sense was negated, but it was also broken so that it was
1656 always false, so the normal top-level thing happened anyway.
1658 /usr1/lisp/compiler/ir1tran.lisp, 14-Feb-89 15:02:14, Edit by Ram.
1659 Wrote Leaf-Inlinep and changed uses to (cdr (assoc leaf *inlines*)) with the
1660 new function. This means that global declarations will now affect function
1663 /usr1/lisp/compiler/main.lisp, 13-Feb-89 12:19:39, Edit by Ram.
1664 Call Init-Assembler *before* Entry-Analyze so that we don't emit labels when
1665 the assembler isn't initialized.
1667 /usr1/lisp/compiler/ltn.lisp, 02-Feb-89 15:41:40, Edit by Ram.
1668 Changed Annotate-Function-Continuation not to clear Type-Check unless the
1669 policy is unsafe. Changed LTN-Default-Call to take a policy argument and
1672 /usr1/lisp/compiler/ir1tran.lisp, 02-Feb-89 15:16:32, Edit by Ram.
1673 Changed IR1-Convert-Combination-Args and the translator for
1674 Multiple-Value-Call to assert that the function continuation yeilds a value
1677 /usr1/lisp/compiler/assembler.lisp, 31-Jan-89 14:13:54, Edit by Ram.
1678 /usr1/lisp/compiler/codegen.lisp, 31-Jan-89 14:13:53, Edit by Ram.
1679 Added a function version of Emit-Label that can be called outside of
1680 Assemble. Used this in Generate-Code so that we don't have to worry about
1681 faking the current node for Assemble, when we aren't emitting any code
1684 /usr1/lisp/compiler/assembler.lisp, 31-Jan-89 13:56:08, Edit by Ram.
1685 In Init-Assembler, Null out the Assembler-Node-Names in *Assembler-Nodes* so
1686 that we don't hold onto old garbage. Also zero the code vectors so that
1687 unitialized bytes always come up zero.
1689 /usr1/lisp/compiler/ir2tran.lisp, 31-Jan-89 12:37:21, Edit by Ram.
1690 Fixed IR2-Convert-Local-Unknown-Call to use Standard-Value-TNs to get the
1691 result TNs, rather than calling incorrectly calling Make-Standard-Value-TNs
1694 /usr1/lisp/compiler/ir1opt.lisp, 30-Jan-89 23:28:08, Edit by Ram.
1695 Changed Check-Types to not set Type-Check when the asserted type is T and the
1698 /usr1/lisp/compiler/ir1util.lisp, 30-Jan-89 19:36:09, Edit by Ram.
1699 Changed Delete-Ref not to call Delete-Lambda or Delete-Optional-Dispatch when
1700 the functional is already deleted.
1702 /usr1/lisp/compiler/locall.lisp, 30-Jan-89 19:23:26, Edit by Ram.
1703 Convert-MV-Call must add the ep to the Lambda-Calls for the home lambda (as
1704 in Convert-Call) so that DFO can detect the control transfer implicit in
1707 /usr1/lisp/compiler/ir1util.lisp, 30-Jan-89 18:30:27, Edit by Ram.
1708 Changed Delete-Optional-Dispatch to call Delete-Lambda on all entry points
1711 /usr1/lisp/compiler/ir1util.lisp, 30-Jan-89 17:04:33, Edit by Ram.
1712 Changed Delete-Lambda to mark the Lambda's lets as :Deleted as well,
1713 guaranteeing that all code in the environment of a deleted lambda is deleted
1714 (without having to do flow analysis).
1716 /usr1/lisp/compiler/locall.lisp, 30-Jan-89 16:37:31, Edit by Ram.
1717 Changed Convert-MV-Call not to call Let-Convert, since the last entry may
1718 have spurious references due to optional defaulting code that hasn't been
1719 deleted yet. Changed Maybe-Let-Convert to set the Functional-Kind of the
1720 lambda to :Let or :MV-Let, depending on the combination type.
1722 /usr1/lisp/compiler/locall.lisp, 30-Jan-89 15:35:52, Edit by Ram.
1723 Changed Merge-Cleanups-And-Lets to use Find-Enclosing-Cleanup to determine
1724 whether there is any cleanup in effect at the call site, rather than directly
1725 using the Block-End-Cleanup.
1727 /usr1/lisp/compiler/ir1util.lisp, 30-Jan-89 15:12:51, Edit by Ram.
1728 Changed Node-Ends-Block to set the start and end cleanups of the *new* block
1729 (not the old) to the ending cleanup of the old block. This is clearly more
1730 right, but may not be totally right.
1732 /usr1/lisp/compiler/life.lisp, 27-Jan-89 17:09:01, Edit by Ram.
1733 Make Clear-Lifetime-Info always set the TN-Local slot for local TNs, using
1734 some other referencing block when there there are global conflicts.
1736 /usr1/lisp/compiler/pack.lisp, 10-Jan-89 15:27:21, Edit by Ram.
1737 Fixed Select-Location not to infinite loop when Finite-Sb-Last-Offset is 0.
1739 /usr0/ram/compiler/ir2tran.lisp, 30-Jun-88 13:57:12, Edit by Ram.
1740 Fixed IR2-Convert-Bind to ignore vars with no Refs.
1742 /usr0/ram/compiler/gtn.lisp, 30-Jun-88 13:54:51, Edit by Ram.
1743 Fixed Assign-Lambda-Var-TNs and Assign-IR2-Environment to ignore vars with no
1746 /usr0/ram/compiler/life.lisp, 02-Mar-88 17:06:18, Edit by Ram.
1747 Aaaargh! When clearing the Packed-TN-Local in Clear-Lifetime-Info, iterate
1748 up to Local-TN-Limit, not SC-Number-Limit.
1750 /usr0/ram/compiler/ir1util.lisp, 20-Feb-88 22:00:37, Edit by Ram.
1751 Made Substitute-Leaf and Change-Ref-Leaf do an Up-Tick-Node on the changed
1754 /usr0/ram/compiler/ltn.lisp, 20-Feb-88 16:25:11, Edit by Ram.
1755 Changed Find-Template to deal with output assertions correctly once again.
1756 Instead of assuming that the Node-Derived-Type is true, we look at the
1757 Type-Check flag in the continuation. If the continuation type is being
1758 checked, then we only use a template when it doesn't have an output
1761 In Find-Template-For-Policy, use safe templates as a last resort, even when
1762 policy is :Small or :Fast. A safe template is surely faster and smaller than
1765 In Ltn-Analyze, clear the Type-Check flags on all continuations when our
1768 /usr0/ram/compiler/debug.lisp, 18-Feb-88 17:17:19, Edit by Ram.
1769 And fixed Check-VOP-Refs to ensure that the temporary write comes before
1770 (which is after in the reversed VOP-Refs) the read, rather than vice-versa...
1772 /usr0/ram/compiler/vmdef.lisp, 18-Feb-88 17:10:35, Edit by Ram.
1773 Fixed Compute-Reference-Order to begin temporary lifetimes with the write
1774 rather than the read.
1776 /usr0/ram/compiler/gtn.lisp, 18-Feb-88 16:06:41, Edit by Ram.
1777 Have to fetch the Equated-Returns inside the loop in Find-Equivalence
1778 classes, since Equate-Return-Info will change the returns for the current
1779 environment. This used to work, since Equate-Return-Info used to be
1782 /usr0/ram/compiler/ir1opt.lisp, 14-Feb-88 14:30:47, Edit by Ram.
1783 Oops. Fixed the test in Propagate-From-Calls for being a call to the
1784 function concerned. Now that this optimization can actually happen, who
1787 /usr0/ram/compiler/ltn.lisp, 11-Feb-88 18:01:38, Edit by Ram.
1788 Made Annotate-1-Value-Continuation delay global function references to
1789 functions that aren't notinline. Made LTN-Default-Call,
1790 LTN-Analyze-Full-Call and LTN-Analyze-MV-Call annotate their function
1793 /usr0/ram/compiler/flowsimp.lisp, 11-Feb-88 16:44:48, Edit by Ram.
1794 Now that returns aren't being picked off in flow-graph-simplify, we have to
1795 fix join-block-if-possible not to attempt to join the XEP return to the
1798 /usr0/ram/compiler/ir1util.lisp, 11-Feb-88 16:14:52, Edit by Ram.
1799 Made Delete-Ref call Maybe-Let-Convert when deleting the second-to-last
1800 reference to a lambda.
1802 /usr0/ram/compiler/flowsimp.lisp, 10-Feb-88 16:46:56, Edit by Ram.
1803 /usr0/ram/compiler/locall.lisp, 11-Feb-88 13:24:04, Edit by Ram.
1804 Moved let-conversion to locall from flowsimp, and made it be triggered by
1805 Maybe-Let-Convert. This is called on each new lambda after local call
1806 analysis, and can also be called whenever there is some reason to believe
1807 that a lambda might be eligible for let-conversion. We clear any :Optional
1808 function kinds since the entry functions can be treated as normal functions
1809 after local call analysis.
1811 This change was made to solve problems with lambdas not being let-converted
1812 when the return node was deleted due to being unreachable. This is important
1813 now that being a let has major environment significance. Originally let
1814 conversion was regarded as a way to delete a return, and thus made some kind
1815 of sense to have it be a flow graph optimization. Now that a let can have
1816 only one reference, we can trigger let conversion by noticing when references
1819 /usr0/ram/compiler/node.lisp, 11-Feb-88 13:12:38, Edit by Ram.
1820 /usr0/ram/compiler/ir1tran.lisp, 11-Feb-88 13:12:47, Edit by Ram.
1821 Added :Optional Functional-Kind that is initially specified for the
1822 entry-point lambdas in optional-dispatches so that we know there may be
1823 references to the function through the optional dispatch.
1825 /usr0/ram/compiler/ir1util.lisp, 11-Feb-88 12:23:11, Edit by Ram.
1826 Changed assertion in Control-Equate to allow an existing value-equate to the
1829 /usr0/ram/compiler/ir1tran.lisp, 25-Jan-88 19:27:57, Edit by Ram.
1830 Changed the default policy to be all 1's, and modified calls to Policy in all
1831 files so that they do "the right thing" when compared qualities are equal.
1832 The default action should be chosen so as to minimize mystification and
1833 annoyance to non-wizards. In general, the default should be chosen according
1834 to the ordering: safety > brevity > speed > space > cspeed. Checks for 0 and
1835 3 meaning "totally unimportant" and "ultimately important" are also o.k.
1837 /usr0/ram/compiler/gtn.lisp, 24-Jan-88 11:20:37, Edit by Ram.
1838 Changed Equate-Return-Info so that it effectively ignores the Count and Types
1839 in :Unused continuations, yet still combines the Entry-P and Tail-P values.
1841 /usr0/ram/compiler/locall.lisp, 23-Jan-88 21:41:28, Edit by Ram.
1842 Make Convert-XEP-Call set the Return-Point too...
1844 /usr0/ram/compiler/ir1util.lisp, 22-Jan-88 16:17:38, Edit by Ram.
1845 Made Immediately-Used-P special-case local calls by using
1846 Basic-Combination-Return-Point.
1848 /usr0/ram/compiler/locall.lisp, 22-Jan-88 16:13:32, Edit by Ram.
1849 /usr0/ram/compiler/node.lisp, 22-Jan-88 16:12:03, Edit by Ram.
1850 Added a Basic-Combination-Return-Point slot so that local calls can rebember
1851 where they are supposed to return to.
1853 /usr0/ram/compiler/gtn.lisp, 22-Jan-88 10:03:37, Edit by Ram.
1854 Fixed Assign-Lambda-Vars to set the TN-Leaf.
1856 /usr0/ram/compiler/flowsimp.lisp, 22-Jan-88 10:22:53, Edit by Ram.
1857 Made Convert-To-Let do an Intersect-Continuation-Asserted-Type on the actual
1858 continuation with the dummy's assertion when the let call is the only use of
1859 the actual continuation.
1861 /usr0/ram/compiler/ir1tran.lisp, 22-Jan-88 09:42:49, Edit by Ram.
1862 Tack NIL on the end of the forms that we convert so that no top-level form is
1863 in a for-value context.
1865 /usr0/ram/compiler/ir1opt.lisp, 21-Jan-88 17:50:52, Edit by Ram.
1866 Made Check-Types intersect the new type with the Node-Derived-Type for all
1867 the continuation uses so that IR1Opt doesn't go and change the type right
1870 /usr0/ram/compiler/main.lisp, 21-Jan-88 17:31:57, Edit by Ram.
1871 /usr0/ram/compiler/ir1opt.lisp, 21-Jan-88 17:30:31, Edit by Ram.
1872 Type checking was being done wrong. We need to check types even if IR1Opt
1873 doesn't do anything, and we need to give IR1Opt a second chance if type check
1874 does anything. Made Check-Types return whether it did anything.
1876 /usr0/ram/compiler/ir1tran.lisp, 21-Jan-88 17:14:13, Edit by Ram.
1877 Fixed IR1 translator for THE to use Find-Uses to find whether the
1878 continuation is used, rather than incorrectly doing it itself (using an old
1879 interpretation of Continuation-Use).
1881 /usr0/ram/compiler/ir1tran.lisp, 16-Nov-87 15:58:39, Edit by Ram.
1882 Made %proclaim (and hence proclaim) return (undefined-value) rather than
1883 arbitrary randomness.
1885 /usr1/ram/compiler/flowsimp.lisp, 23-Aug-87 22:00:39, Edit by Ram
1886 Changed Flow-Graph-Simplify not to merge blocks unless the cleanups for the
1887 two blocks are identical. The is a sub-optimal (but conservative) way to
1888 ensure that cleanups are only done on block boundaries.
1890 /usr1/ram/compiler/ir1opt.lisp, 23-Aug-87 21:26:53, Edit by Ram
1891 Just look for the :Let functional kind in Top-Down-Optimize, instead of
1892 figuring out from first principles.
1894 /usr1/ram/compiler/ir1util.lisp, 20-Aug-87 22:12:45, Edit by Ram
1895 The only worthwhile use for the functional nesting was in Delete-Ref, where
1896 it would walk all the inferiors, marking them as deleted as well. But I
1897 think that just marking the outer function as deleted will eventually cause
1898 all the inner functions to be deleted. As it stands, Delete-Ref is a lot
1899 simpler. If there are problems with deleted-but-somehow-undeletable
1900 references holding onto functions, we may want to look at all references in
1901 Delete-Ref and see if some enclosing function is deleted.
1903 /usr1/ram/compiler/ir1tran.lisp, 22-Aug-87 15:38:50, Edit by Ram
1904 Changed stuff to use the new Functional and Cleanup structures. Mostly
1905 involves flushing stuff.
1907 /usr1/ram/compiler/locall.lisp, 21-Aug-87 14:24:32, Edit by Ram
1908 /usr1/ram/compiler/ir1opt.lisp, 20-Aug-87 22:05:33, Edit by Ram
1909 Changed Local-Call-Analyze to just take a component and analyze the
1910 New-Functions. This simplifies (and optimizes) the late uses in IR1
1911 optimize. Also changed convert-call-if-possible to know to try to convert
1912 the call to the real function rather than the XEP.
1914 /usr1/ram/compiler/node.lisp, 23-Aug-87 20:12:58, Edit by Ram
1915 Flushed bogus hierarchical information in the Functional, Environment and
1916 Cleanup structures. Now that I've taken a stab at implementing the IR2
1917 conversion passes, it is obvious that this information is useless and
1918 difficult to maintain.
1920 We do need a way to iterate over all the functions in a component, but doing
1921 a tree walk is bogus. Instead, we have a list of all the lambdas in each
1922 component. When functions are initially converted, they are placed on the
1923 component New-Functions list. Local call analysis moves analyzed lambdas
1924 into the Lambdas list. We don't bother to remove lambdas from this list when
1927 A change needed in the cleanup stuff to make it work is to have continuations
1928 with no immediately enclosing cleanup point have their lambda as the cleanup.
1929 Then when we convert the lambda to a let, we set the Cleanup slot in the
1930 lambda to any cleanup enclosing the call so that we realize stuff needs to be
1933 /usr1/ram/compiler/flowsimp.lisp, 23-Aug-87 20:49:36, Edit by Ram
1934 Changed Find-Initial-DFO to build the Lambdas lists for the components. At
1935 the same time, we also use XEP references to (correctly) merge components
1936 with potential environment inter-dependencies, rather than attempting to use
1937 the lambda nesting. Changed Join-Components to combine the Lambdas and
1938 New-Functions lists.
1940 Changed Delete-Return to convert to a let only when there is a single call,
1941 and also to mark the lambda with the :Let functional kind. This makes
1942 let-calls exactly correspond to the functions that IR1 optimize can
1943 substitute for. This also solves problems with cleanups, since it is
1944 trivially true that all calls are in the same dynamic environment.
1946 /usr1/ram/compiler/ir1tran.lisp, 18-Aug-87 15:25:18, Edit by Ram
1947 In IR1-Convert, if the function is not a symbol, but doesn't look even
1948 vaguely like a lambda, then complain about an illegal function call,
1949 rather than having IR1-Convert-Lambda say it is an illegal lambda.
1951 /usr1/ram/compiler/numacs.lisp, 16-Aug-87 13:48:11, Edit by Ram
1952 Added a Defvar that doesn't use OR (and create a LET and freak out IR1
1955 /usr1/ram/compiler/ir1util.lisp, 16-Aug-87 18:14:10, Edit by Ram
1956 /usr1/ram/compiler/debug.lisp, 16-Aug-87 15:19:47, Edit by Ram
1957 /usr1/ram/compiler/flowsimp.lisp, 16-Aug-87 15:19:13, Edit by Ram
1958 /usr1/ram/compiler/ir1opt.lisp, 16-Aug-87 15:18:47, Edit by Ram
1959 /usr1/ram/compiler/node.lisp, 16-Aug-87 19:58:30, Edit by Ram
1960 /usr1/ram/compiler/ir1tran.lisp, 16-Aug-87 20:29:36, Edit by Ram
1961 /usr1/ram/compiler/locall.lisp, 16-Aug-87 20:22:28, Edit by Ram
1962 Changed stuff for new explicit external entry point concept. The external
1963 entry point is now a real function containing local calls to the entry
1964 points. This represents reality better, making lots of things previously
1965 special-cased automatically happen in our favor. We really needed this for
1966 environment analysis and IR2 conversion to work.
1968 Functional-Entry-Kind is replaced by Functional-Kind and
1969 Functional-Entry-Function. The Kind is kind of like the old Entry-Kind. The
1970 Entry-Function is the XEP (or a back-pointer in an XEP). Uses of Entry-Kind
1971 were replaced with Kind or Entry-Function or flushed, as appropriate.
1973 Note-Entry-Point has been flushed. %Defun doesn't need to do anything to
1974 cause the function to be an entry point. The top-level lambda is no longer
1975 a real entry-point: instead we just directly link it to the component head
1978 The more-arg XEP creates a more-arg cleanup. The local-call case still needs
1981 /usr1/ram/compiler/fndb.lisp, 16-Aug-87 20:37:28, Edit by Ram
1982 Added some definitions for %mumble magic compiler functions.
1984 /usr1/ram/compiler/ir1tran.lisp, 16-Aug-87 20:29:36, Edit by Ram
1985 Changed uses of the two-arg Arg for more-arg hackery into %More-Arg, since
1986 this isn't the user-level functionality we will ultimately want for
1989 /usr1/ram/compiler/main.lisp, 16-Aug-87 18:35:29, Edit by Ram
1990 Changed Compile-Component not to do any IR1 passes on the top-level component
1991 except for Type-Check. These optimizations are unlikely to have any useful
1992 effect on top-level code, and they might want to inject illegal stuff into
1993 the top-level component.
1995 /usr1/ram/compiler/macros.lisp, 16-Aug-87 18:26:19, Edit by Ram
1996 Changed With-IR1-Environment to bind *Converting-Top-Level*. Currently you'd
1997 better not use this on top-level code unless you are sure you won't emit
1998 anything that can't go in top-level, since IR1-Convert-Lambda will bogue out
1999 because there is no *Initial-Component* to switch to.
2001 /usr1/ram/compiler/macros.lisp, 13-Aug-87 20:16:47, Edit by Ram
2002 /usr1/ram/compiler/node.lisp, 13-Aug-87 22:24:30, Edit by Ram
2003 /usr1/ram/compiler/main.lisp, 13-Aug-87 22:35:11, Edit by Ram
2004 /usr1/ram/compiler/globaldb.lisp, 13-Aug-87 20:21:12, Edit by Ram
2005 /usr1/ram/compiler/locall.lisp, 13-Aug-87 22:57:54, Edit by Ram
2006 /usr1/ram/compiler/flowsimp.lisp, 13-Aug-87 22:52:01, Edit by Ram
2007 /usr1/ram/compiler/ir1opt.lisp, 13-Aug-87 22:59:11, Edit by Ram
2008 /usr1/ram/compiler/ir1tran.lisp, 13-Aug-87 23:06:03, Edit by Ram
2009 Changed stuff to support having separate top-level and initial components.
2010 Whenver we see a lambda or anything hairy, we switch over to the initial
2011 component. Hairyness of special-forms is determined by the :Top-Level-P
2012 keyword to Def-IR1-Translator.
2014 We make appropriate special forms hairy to guarantee that the top-level
2015 component doesn't contain any stuff that would make life hard for IR2
2016 conversion. In particular, it contains no variables, no functions other than
2017 the top-level lambda and no non-local exit targets.
2019 Local call analysis refuses to convert calls appearing in the top-level
2020 component. In other files, stuff related to Functional-Top-Level-P was
2023 /usr1/ram/compiler/ir1opt.lisp, 13-Aug-87 17:58:37, Edit by Ram
2024 Changed propagate-from-calls to punt if any use is a mv-combination. Changed
2025 Top-Down-Optimize not to Substitute-Let-Vars unless the only use is not a
2026 MV-Combination. Un-commented-out the substituion of functionals for non-set
2029 /usr1/ram/compiler/locall.lisp, 13-Aug-87 18:31:24, Edit by Ram
2030 Frobbed Find-Top-Level-Code to recognize DEFUNs with no calls as
2031 non-top-level. The entire concept is probably wrong, though.
2033 /usr1/ram/compiler/ir1tran.lisp, 13-Aug-87 19:07:22, Edit by Ram
2034 Changed IR1-Convert-OK-Combination to look at the leaf-type of the leaf
2035 rather than the derived type for the function continuation. This allows
2036 known calls to be recognized again (I'm sure that worked at one point.
2037 Perhaps before they were becoming known later on somehow?). This is all not
2038 really right anyway, given the broken interpretation of function types
2039 currently used in IR1.
2041 /usr/ram/compiler/ir1tran.slisp, 12-Jan-87 11:48:32, Edit by Ram
2042 Fixed Find-Source-Paths to use a DO with ATOM test rather than a dolist, so
2043 that it won't blow up on dotted lists.
2045 /usr/ram/compiler/ir1util.slisp, 12-Jan-87 10:28:07, Edit by Ram
2046 Fixed Delete-Block to null out the DEST for the continuations belonging to
2047 each node as we delete the node, so we don't try to deliver a result to a
2048 node that doesn't exist anymore.