+++ /dev/null
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/eval.lisp
-05-Feb-90 20:45:20, Edit by Ram.
- Fixed MAKE-INTERPRETED-FUNCTION to specify the LAMBDA slot when creating the
- function so that it is avaliable to INTERPRETED-FUNCTION-LAMBDA-EXPRESSION.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/sset.lisp
-05-Feb-90 12:07:12, Edit by Ram.
- Fixed a problem in SSET-UNION-OF-DIFFERENCE. It was using (>= num2 num3) in
- two places where it should have been using <=. Probably due to incorrect
- modification of the original SSET-DIFFERENCE code into this function. The
- original function had the inner loop over the second arg, rather than the
- first. This effectively resulted in the difference aspect usually not
- happening, so the KILL set in constraint propagation never took effect,
- resulting in some over-zealous type propagation.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/srctran.lisp
-04-Feb-90 10:11:51, Edit by Ram.
- Oops... Fixed * transform so that multiplication by 8 doesn't really
- multiply by 256, etc.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
-04-Feb-90 09:48:09, Edit by Ram.
- Wrote CLOSE-SOURCE-INFO, and made COMPILE-FILE, ADVANCE-SOURCE-FILE and
- COMPILE-FROM-STREAM call it.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/fndb.lisp
-04-Feb-90 08:09:06, Edit by Ram.
- Added definition for %SP-STRING-COMPARE.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/seqtran.lisp
-04-Feb-90 08:01:21, Edit by Ram.
- Fixed STRING<>=-BODY a bit. In addition to some query replace lossage, there
- was also a genuine ancestral bug in computation of the result in the = case
- of = ops.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ctype.lisp
-03-Feb-90 20:44:39, Edit by Ram.
- Made VALID-FUNCTION-USE and VALID-APPROXIMATE-TYPE return NIL, NIL when
- uncertainty is encountered, rather than T, NIL. Everybody was expecting this
- to be a conservative test (and only looking at the first value.) This caused
- spurious transforms to happen.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/srctran.lisp
-02-Feb-90 14:08:09, Edit by Ram.
- Added NTH, NTHCDR transforms for the constant index case. Added * transform
- for the power-of-2 case.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/seqtran.lisp
-02-Feb-90 13:00:15, Edit by Ram.
- Added string transforms, derived from CLC sources.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/srctran.lisp
-02-Feb-90 13:25:40, Edit by Ram.
- Added FORMAT transform derived from CLC sources.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/type.lisp
-02-Feb-90 11:23:26, Edit by Ram.
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
-02-Feb-90 11:23:15, Edit by Ram.
- Defined TYPE/= and made the "anything changed" tests use it instead of TYPE=
- so as to be conservative in the presence of hairy types.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
-02-Feb-90 10:29:54, Edit by Ram.
- Changed REOPTIMIZE-CONTINUATION to set BLOCK-TYPE-CHECK in the use blocks so
- that new derived-type information will also cause type checking to be redone.
- This mainly handles the case where new type information causes us to want to
- negate a check that was previously simple.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
-02-Feb-90 10:12:24, Edit by Ram.
- Fixed CONTINUATION-%DERIVED-TYPE to call CONTINUATION-%TYPE-CHECK instead of
- CONTINUATION-TYPE-CHECK so that it won't recurse indefinitely.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/globaldb.lisp
-01-Feb-90 14:46:13, Edit by Ram.
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-01-Feb-90 14:43:26, Edit by Ram.
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/knownfun.lisp
-01-Feb-90 14:40:22, Edit by Ram.
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
-01-Feb-90 14:42:19, Edit by Ram.
- Flushed *FUNCTION-INFO* in favor of (INFO FUNCTION INFO ...). Added
- FUNCTION-INFO-PREDICATE-TYPE slot.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
-01-Feb-90 14:09:42, Edit by Ram.
- Changed ASSERT-CONTINUATION-TYPE to set BLOCK-TYPE-ASSERTED in the use
- blocks. Also, moved fixed the setting of BLOCK-TYPE-CHECK to be on the use
- blocks rather than the CONTINUATION-BLOCK, since type check generation uses
- DO-NODES, and thus ignores the BLOCK-START.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/node.lisp
-01-Feb-90 13:37:14, Edit by Ram.
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/checkgen.lisp
-01-Feb-90 13:41:46, Edit by Ram.
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
-01-Feb-90 13:41:48, Edit by Ram.
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-01-Feb-90 13:42:05, Edit by Ram.
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
-01-Feb-90 13:42:29, Edit by Ram.
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ltn.lisp
-01-Feb-90 13:43:07, Edit by Ram.
- Renamed the CONTINUATION TYPE-CHECK slot to %TYPE-CHECK, which is filtered by
- the new CONTINUATION-TYPE-CHECK function to make sure that it has been
- computed recently. Changed setters of TYPE-CHECK to %TYPE-CHECK, and flushed
- the now unnecessary calls to CONTINUATION-DERIVED-TYPE (which explicitly did
- the recomputation.)
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
-01-Feb-90 12:56:50, Edit by Ram.
- Changed %CONTINUATION-DERIVED-TYPE to not set TYPE-CHECK when the assertion
- is T or there is no DEST. In the first case, this just avoids waste motion.
- In the second case, this prevents constraint analysis from being tricked into
- believing such a check will be done, when in fact no checks are done on
- unused values.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
-01-Feb-90 12:51:41, Edit by Ram.
- Made DELETE-CONTINUATION, FLUSH-DEST, NODE-ENDS-BLOCK and UNLINK-NODE set the
- BLOCK-TYPE-ASSERTED and BLOCK-TEST-CHANGED flags. At least for the former,
- this has to be done in more places than I thought, and also must be done for
- correctness, rather than just to ensure new assertions are seen. This is
- because if a block is split, or code needing an assertion is deleted, then we
- must recompute the block's set of constraints or it will contain incorrect
- constraints.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/sset.lisp
-01-Feb-90 11:33:28, Edit by Ram.
- Fixed SSET-INTERSECTION to blow away any extra elements in SET1 that are
- larger than the greatest element in SET2.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/node.lisp
-01-Feb-90 10:34:17, Edit by Ram.
- Changed initial values for TYPE-ASSERTED and TEST-MODIFIED to be T rather
- than NIL.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/vop.lisp
-30-Jan-90 16:10:06, Edit by Ram.
- Added IR2-ENVIRONMENT-KEEP-AROUND-TNS and IR2-COMPONENT-PRE-PACKED-SAVE-TNS
- so that we won't have to recompile to add these features later on.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/eval.lisp
-30-Jan-90 14:54:58, Edit by Ram.
- Added the MAKE-INTERPRETED-FUNCTION interface which allows lazy conversion of
- functions and features bounded IR1 memory usage through a LRU cache that is
- partially flushed on GC. Added INTERPRETED-FUNCTION-NAME,
- INTERPRETED-FUNCTION-ARGLIST and setf functions.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-30-Jan-90 10:08:19, Edit by Ram.
- Now that %DEFMACRO is passed #'(lambda ... for benefit for the interpreter,
- we don't want to unquote the definition using EVAL. Use SECOND instead.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
-29-Jan-90 14:17:06, Edit by Ram.
- Changed FIND-COMPONENT-NAME to bind *PRINT-LEVEL* and *PRINT-PRETTY* so as to
- prevent huge component names.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/life.lisp
-29-Jan-90 13:43:23, Edit by Ram.
- Fixed CONFLICT-ANALYZE-BLOCK in the dead read case to do FROB-MORE-TNS on
- NOTE-CONFLICTS as well as the addition to the live set. This was the fix to
- the long-procrastinated-about :MORE TN bug (first noticed in fall 88.) Also,
- changed FROB-MORE-TNS to return whether it did anything, rather than sleazily
- hacking on the loop variable to get the loop to exit. I must have been
- having a Pascal flashback when I wrote that code...
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/eval.lisp
-29-Jan-90 13:24:23, Edit by Ram.
- Fixed LEAF-VALUE to use FDEFINITION rather than SYMBOL-FUNCTION when the name
- isn't a symbol.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
-29-Jan-90 10:46:23, Edit by Ram.
- Changed COMPILE-FIX-FUNCTION-NAME to substitute for old uses of the name so
- that recursive calls get converted.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-29-Jan-90 10:13:18, Edit by Ram.
- But for the want of a single character... So that's why no functions were
- being inline expanded! In %DEFUN the ir1 translator, I was looking at the
- INLINEP value for the NAME in the same LET that was eval'ing the name to
- unquote it.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/debug-dump.lisp
-27-Jan-90 18:05:15, Edit by Ram.
- Made DEBUG-SOURCE-FOR-INFO handle the incremental compilation cases.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
-27-Jan-90 17:46:09, Edit by Ram.
- Wrote COMPILE and UNCOMPILE.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/eval.lisp
-27-Jan-90 17:07:17, Edit by Ram.
- Added the interfaces INTERPRETED-FUNCTION-LAMBDA-EXPRESSION and
- INTERPRETED-FUNCTION-CLOSURE. These use the new FIND-IF-IN-CLOSURE operation
- pick apart the closure that is an interpreted function.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
-26-Jan-90 16:35:51, Edit by Ram.
- Moved a bunch of stuff from COMPILE-FILE to SUB-COMPILE-FILE. Wrote
- MAKE-LISP-SOURCE-INFO and MAKE-STREAM-SOURCE-INFO. Wrote
- COMPILE-FROM-STREAM, and added appropriate uses of the in-core compilation
- interface to various functions.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/globaldb.lisp
-26-Jan-90 16:09:30, Edit by Ram.
- Made the CACHE-NAME slot be duplicated in both kinds of environment rather
- than inherited from INFO-ENV so that the inline type checks for the slot
- access will win, allowing bootstrapping to work.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/eval-comp.lisp
-26-Jan-90 13:12:09, Edit by Ram.
- Changed COMPILE-FOR-EVAL to call the new MAKE-LISP-SOURCE-INFO, rather than
- rolling its own.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/globaldb.lisp
-26-Jan-90 11:59:58, Edit by Ram.
- Added code to cache the last name looked up, since we commonly consecutively
- look up several types of info for the same name. [Maybe even some types more
- than once!]
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-26-Jan-90 09:30:59, Edit by Ram.
- Fixed PROCESS-TYPE-PROCLAMATION to not try to call TYPES-INTERSECT on
- function types so that we don't flame out. This was probably what I was
- really trying to fix in the last change to PROCESS-TYPE-DECLARATION. Really
- both were broken.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/srctran.lisp
-25-Jan-90 10:58:43, Edit by Ram.
- Added transform for ARRAY-DIMENSION that converts to LENGTH when possible.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/typetran.lisp
-25-Jan-90 10:46:00, Edit by Ram.
- Moved array typep code here from vm-type-tran, since it turned out not to be
- VM dependent after all.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/typetran.lisp
-23-Jan-90 15:31:32, Edit by Ram.
- Transformed array type tests to %ARRAY-TYPEP so that clever
- implementation-dependent things can be done.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-23-Jan-90 18:45:14, Edit by Ram.
- Fixed up some messed up backquote stuff in DO-MACROLET-STUFF where it was
- trying to coerce the lambda to a function.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/envanal.lisp
-23-Jan-90 13:06:41, Edit by Ram.
- Don't annotate as TAIL-P nodes whose DERIVED-TYPE is NIL, so that we don't
- tail-call functions such as ERROR.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-23-Jan-90 12:44:28, Edit by Ram.
- Fixed %DEFUN translator to record an inline expansion when the INLINEP value
- is :MAYBE-INLINE as well as :INLINE.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
-23-Jan-90 08:49:50, Edit by Ram.
- Changed PUSH-IN and DELETEF-IN to only call FOO-GET-SETF-METHOD when
- CLC::*IN-THE-COMPILER* is true, so that we can still use these macros in the
- old compiler.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/seqtran.lisp
-22-Jan-90 16:11:28, Edit by Ram.
- Added a transform for MEMBER where the list is a constant argument (primarily
- to help MEMBER type tests.)
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/eval.lisp
-22-Jan-90 15:20:27, Edit by Ram.
- Replaced all uses of COMBINATION- accessors with BASIC-COMBINATION- accessors
- so that MV combinations will work.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/eval.lisp
-22-Jan-90 15:08:07, Edit by Ram.
- Put a couple of macros in EVAL-WHEN (COMPILE LOAD EVAL) so that they are
- avaliable to SETF in the bootstrap environment. Also, changed %SP-[UN]BIND
- to the appropriate %PRIMITIVE calls.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/fndb.lisp
-20-Jan-90 20:21:34, Edit by Ram.
- Fixed up FBOUNDP & stuff to correspond to the FUNCTION-NAME cleanup. Now
- FBOUNDP can take a list as well as a symbol.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-20-Jan-90 09:56:43, Edit by Ram.
- In #+NEW-COMPILER, made DO-MACROLET-STUFF coerce the lambda expression to a
- function.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/eval-comp.lisp
-20-Jan-90 09:52:20, Edit by Ram.
- Added bind of *FENV* to () in COMPILE-FOR-EVAL.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-20-Jan-90 09:50:59, Edit by Ram.
- And made IR1-TOP-LEVEL *not* bind *FENV* to () so that top-level MACROLETs
- will be recognized...
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
-20-Jan-90 09:47:19, Edit by Ram.
- Added binding of *FENV* to () in SUB-COMPILE-FILE so that MACROLET processing
- won't flame out.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/macros.lisp
-19-Jan-90 22:25:15, Edit by Ram.
- Made WITH-IR1-ENVIRONMENT bind a bunch more variables. *fenv*, etc. Wrote
- WITH-IR1-NAMESPACE, which allocates the gloabal namespace hashtables.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/eval-comp.lisp
-19-Jan-90 22:35:44, Edit by Ram.
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-19-Jan-90 22:34:20, Edit by Ram.
- Flushed IR1-TOP-LEVEL-FOR-EVAL and changed IR1-TOP-LEVEL to take a FOR-VALUE
- flag so that it can do the same thing. Added use of WITH-IR1-NAMESPACE.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
-19-Jan-90 21:43:20, Edit by Ram.
- Made SUB-COMPILE-FILE bind *CURRENT-COOKIE* so that people can randomly call
- (POLICY NIL ...) to get at the current policy, and will never see any
- leftover local policy from a dynamically enclosing IR1 conversion.
- ### Maybe this should really be bound somewhere else, like COMPILE-COMPONENT.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
-19-Jan-90 22:00:35, Edit by Ram.
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/node.lisp
-19-Jan-90 22:01:47, Edit by Ram.
- Added a keyword constructor for CBLOCK, and changed all MAKE-BLOCK calls
- outside of IR1 conversion to use this new constructor, specifying all the
- values that would otherwise be defaulted from specials. This is necessary to
- make stuff properly reentrant.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-19-Jan-90 17:26:17, Edit by Ram.
- In FIND-FREE-VARIABLE, flushed the assertion that non-constant variables
- never have constant values. This isn't really right, but it is better.
- ### Really, the implementation of "constant but value unknown" variables
- should be either flushed or redone.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/eval-comp.lisp
-19-Jan-90 15:31:33, Edit by Ram.
- New file from Chiles.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/eval.lisp
-19-Jan-90 15:30:03, Edit by Ram.
- New file from chiles. Changed MY-EVAL to INTERNAL-EVAL and made it frob
- *ALREADY-EVALED-THIS*.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-19-Jan-90 14:53:28, Edit by Ram.
- Made IR1 conversion reentrant by having IR1-TOP-LEVEL bind all of the state
- variables. Removed DEFVAR initial values for variables that should never be
- referenced outside of IR1 conversion. Rather than always making four new
- hashtables every time, I kept around the global values, allowing them to be
- used on the outermost call.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
-19-Jan-90 11:06:50, Edit by Ram.
- Changed PROPAGATE-TO-REFS to do nothing when the variable type is a function
- type so that we don't lose specific function type information, and also so
- that TYPE-INTERSECTION doesn't gag.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-19-Jan-90 11:24:07, Edit by Ram.
- Changed PROCESS-TYPE-DECLARATION to quietly set the var type when either the
- old or new type is a function type, rather than losing trying to do
- TYPE-INTERSECTION.
- ### Someday when we have a incompatible-redefinition detection capability, we
- might want to hook it in here.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-18-Jan-90 16:45:20, Edit by Ram.
- In %DEFMACRO IR1 convert, when #+NEW-COMPILER, coerce the expander to a
- function before sticking it in the MACRO-FUNCTION.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-18-Jan-90 14:11:44, Edit by Ram.
- Changed %DEFUN translator to dump an inline expanion when appropriate.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/fndb.lisp
-18-Jan-90 12:33:17, Edit by Ram.
- Added %STANDARD-CHAR-P and %STRING-CHAR-P to the imports list.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/globaldb.lisp
-18-Jan-90 12:24:34, Edit by Ram.
- In #+NEW-COMPILER, added info type defaults that get information from the
- environment. This only affected functions and constant values, since
- everything else is already stored in the global database.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
-18-Jan-90 11:51:45, Edit by Ram.
- In COMPILE-FILE, fixed FROB to always pathnamify the thing so that
- OPEN-FASL-FILE won't choke. Also, this way any syntax error always happens
- in COMPILE-FILE.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/life.lisp
-18-Jan-90 10:44:11, Edit by Ram.
- And also in NOTE-CONFLICTS, fixed the declaration for Live-List to be
- (OR TN NULL) rather than TN.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/life.lisp
-18-Jan-90 10:39:41, Edit by Ram.
- In NOTE-CONFLICTS, fixed the type for Live-Bits to be LOCAL-TN-BIT-VECTOR,
- not SC-BIT-VECTOR.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir2tran.lisp
-17-Jan-90 20:47:37, Edit by Ram.
- Fixed IR2-CONVERT-NORMAL-LOCAL-CALL to set up the argument pointer. It
- seems this was only happening in tail calls, so stack arguments did not in
- general work in local calls.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ltn.lisp
-17-Jan-90 16:20:28, Edit by Ram.
- Changed FIND-TEMPLATE to guard the unsafe policy "trusting" result test by a
- check for any non-null value of TYPE-CHECK, rather than just T or :ERROR.
- This since the value might have also been :NO-CHECK, this was usually
- preventing us from believing the assertion.
-
- This was resulting in the rather baffling efficiency note that output type
- assertions can't be trusted in a safe policy, when the policy wasn't safe...
- I added an assertion that the policy really is safe when we emit that note.
- Although it should always be the case, lossage in either VALID-FUNCTION-USE
- or template selection could cause us to end up in that branch.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/globaldb.lisp
-16-Jan-90 21:25:42, Edit by Ram.
- Renamed the types ENTRY-INFO and ENTRIES-INDEX to be COMPACT-INFO-ENTRY and
- COMPACT-INFO-ENTRIES-INDEX. We already had a structure called ENTRY-INFO.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/proclaim.lisp
-16-Jan-90 11:23:51, Edit by Ram.
- Set the symbol-function of PROCLAIM to the definition of %PROCLAIM.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-16-Jan-90 11:15:56, Edit by Ram.
- Fixed DEFMACRO ir1 convert to unquote the original arglist before setting the
- FUNCTIONAL-ARG-DOCUMENTATION.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/codegen.lisp
-15-Jan-90 13:04:59, Edit by Ram.
- Oops... I seem to have broken codegen when I changed to it give each block a
- label, sometimes emitting a label more than once.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
-13-Jan-90 13:09:05, Edit by Ram.
- Changed DELETEF-IN and PUSH-IN to use FOO-GET-SETF-METHOD rather than
- GET-SETF-METHOD so that they will expand correctly in the bootstrapping
- environment.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-13-Jan-90 12:27:12, Edit by Ram.
- Fixed a CDR circularity detection in FIND-SOURCE-PATHS a bit.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/globaldb.lisp
-13-Jan-90 11:49:48, Edit by Ram.
- In addition to initializing *INFO-CLASSES* in GLOBALDB-INIT for benefit of
- bootstrapping, we must also init *TYPE-COUNTER* and *TYPE-NUMBERS*.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/globaldb.lisp
-12-Jan-90 16:15:25, Edit by Ram.
- Changed to use a special FIND-TYPE-INFO function instead of FIND, since the
- slot accessor TYPE-INFO-NAME isn't avaliable for use as a funarg before
- top-level forms run.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/globaldb.lisp
-11-Jan-90 11:14:44, Edit by Ram.
- I'm sooo embarrassed... I got the rehashing algorithm wrong in compact
- environments. The second hash could be 0, resulting in infinite looping.
- [b.t.w., this is a new largely rewritten version of globaldb that uses
- special hashtables instead of standard hashtables. There are two kinds of
- environments: volatile and compact. Volatile environments can be modified,
- but are not especially compact (comparable to the old hashtable
- implementation, but faster.) Compact environments are not modifiable, but
- reduce memory usage by at least half.]
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-10-Jan-90 12:04:33, Edit by Ram.
- Rather than asserting that (INFO FUNCTION WHERE-FROM <name>) is :ASSUMED
- whenever the LEAF-WHERE-FROM is assumed, we just quietly skip the unknown
- function warning code when the name no longer names an assumed function.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
-10-Jan-90 11:27:03, Edit by Ram.
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-10-Jan-90 11:24:07, Edit by Ram.
- Added special-case top-level form processing of EVAL-WHEN, PROGN and MACROLET
- so that we don't get huge compilations when these forms enclose lots of code
- at top-level. To do this, I split off the environment manipulation code in
- EVAL-WHEN and MACROLET.
- ### Probably should expand macros to see if they turn into a magic form
- ### before just compiling the thing.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir2tran.lisp
-09-Jan-90 13:23:41, Edit by Ram.
- Wrote a version of PROGV. This IR1 translator is in IR2tran because it goes
- directly from syntax to shallow-binding primitives.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-08-Jan-90 14:39:46, Edit by Ram.
- Made FIND-SOURCE-PATHS hack circular source code. CAR circularities are
- detected by noticing that the cons is already in the source paths hashtable.
- CDR circularities are detected using the two-phase trailing pointer hack.
- This support is necessary as long as circular constants are allowed (which is
- strongly implied by the presence of the #=/## read syntax.) Of course if
- there is circular evaluated code, bad things will still happen...
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
-08-Jan-90 13:36:03, Edit by Ram.
- Made PRINT-SUMMARY print information about compilation units that were
- aborted, and inhibited printing of unknown function warnings when the warning
- compilation unit is unwound.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
-08-Jan-90 10:58:02, Edit by Ram.
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-08-Jan-90 10:49:04, Edit by Ram.
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/node.lisp
-08-Jan-90 10:28:23, Edit by Ram.
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1final.lisp
-08-Jan-90 10:40:20, Edit by Ram.
- Changed *UNKNOWN-FUNCTIONS* a bit. Now it is a list of UNKNOWN-FUNCTION
- structures. This was done primarily to allow the number of warnings to be
- limited in IR1-CONVERT-OK-COMBINATION-FER-SHER rather than in PRINT-SUMMARY.
- It turns out that recording hundreds of error locations for tents of
- functions can suck down a large amount of memory.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
-05-Jan-90 16:24:40, Edit by Ram.
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-05-Jan-90 15:58:34, Edit by Ram.
- Changed *UNKNOWN-FUNCTIONS* to be an alist with one entry for each name, with
- the value being a list of all the error contexts for the calls. Made
- PRINT-SUMMARY print the undefined function warnings sorted by name, limiting
- the number of warnings per function to *UNKNOWN-FUNCTION-WARNING-LIMIT*.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
-05-Jan-90 15:51:31, Edit by Ram.
- Changed PRINT-SUMMARY to print a warning for each unknown function.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-05-Jan-90 15:46:02, Edit by Ram.
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1final.lisp
-05-Jan-90 15:45:49, Edit by Ram.
- Moved detection of unknown function calls to
- IR1-CONVERT-OK-COMBINATION-FER-SHER so that we can conveniently note the
- error context each time around. *UNKNOWN-FUNCTIONS* is now a list of conses
- (Name . Compiler-Error-Context), with entries for each call to an unknown
- function.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
-05-Jan-90 15:22:04, Edit by Ram.
- Split off error context determination from error printing by introducing the
- COMPILER-ERROR-CONTEXT structure. The current error context can now be saved
- for future use by calling FIND-ERROR-CONTEXT.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/debug-dump.lisp
-04-Jan-90 10:56:42, Edit by Ram.
- New file.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
-04-Jan-90 10:39:31, Edit by Ram.
- Put in hooks for dumping debug info.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/entry.lisp
-03-Jan-90 15:04:07, Edit by Ram.
- Added code to dump the arg documentation. For now, we do pretty much what
- the old compiler did, i.e. printing it to a string.
- ### Eventually, we may want to put in code to flush package qualifiers on the
- variable names and omit complex default forms.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/node.lisp
-03-Jan-90 14:44:54, Edit by Ram.
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-03-Jan-90 14:50:15, Edit by Ram.
- Added FUNCTIONAL-ARG-DOCUMENTATION slot and made IR1 conversion set it.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/node.lisp
-03-Jan-90 14:34:44, Edit by Ram.
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-03-Jan-90 14:34:27, Edit by Ram.
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/debug.lisp
-03-Jan-90 14:40:06, Edit by Ram.
- Added LAMBDA-OPTIONAL-DISPATCH and made IR1 conversion set it in :OPTIONAL
- lambdas. Made consistency checker allow this.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
-03-Jan-90 14:07:30, Edit by Ram.
- In DELETE-OPTIONAL-DISPATCH, don't clear the ENTRY-FUNCTION in the :OPTIONAL
- lambdas. This info is now kept in the LAMBDA-OPTIONAL-DISPATCH slot, and is
- not cleared when the lambda stops being an entry point.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/dfo.lisp
-03-Jan-90 10:35:50, Edit by Ram.
- But we still want to compute the component name in such components...
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/dfo.lisp
-03-Jan-90 09:27:51, Edit by Ram.
- Changed FIND-INITIAL-DFO to move all components containing a top-level lambda
- to the end of the compilation order, even if there are XEPs. This does a
- better job of ensuring that environment analysis is done before we compile
- the top-level component which does cross-component references.
- ### This probably still loses in some pathological case.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
-02-Jan-90 17:01:46, Edit by Ram.
- Fixed CLEAR-IR2-INFO to check whether there is a tail set before attempting
- to clear its INFO.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir2tran.lisp
-02-Jan-90 14:51:46, Edit by Ram.
- Changed IR2-CONVERT-CLOSURE to not use the IR2-ENVIRONMENT-ENVIRONMENT, since
- this is now blown away after the component is compiled. Instead we use the
- ENVIRONMENT-CLOSURE, which is just as good. Actually, this should only
- happen with references in XEPs, since that is the only kind of function that
- can reference functions across component boundaries.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
-17-Dec-89 15:30:10, Edit by Ram.
- Wrote CLEAR-IR2-INFO and made COMPILE-TOP-LEVEL call it after it was done
- with the IR2 for each component. This should allow the IR2 data structures
- to be reclaimed after each component is compiled, even in a multi-component
- compilation.
-
- ### Eventually it should be possible for the IR1 to be reclaimed after the
- component is compiled, but there currently cross-component links that inhibit
- this. It would also cause problems with IR1 consistency checking, since we
- currently need to check all components together.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-15-Dec-89 13:33:44, Edit by Ram.
- In IR1-CONVERT-VARIABLE, when we find a CT-A-VAL, we convert an ALIEN-VALUE
- form rather than referencing the CT-A-VAL as a leaf.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1final.lisp
-13-Dec-89 13:38:51, Edit by Ram.
- In NOTE-FAILED-OPTIMIZATION, also inhibit any attempt to give a note if the
- combination is no longer a known call.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/gtn.lisp
-12-Dec-89 12:25:57, Edit by Ram.
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir2tran.lisp
-12-Dec-89 12:36:38, Edit by Ram.
- To avoid having to fix this right right now, changed all passing locations to
- be *ANY-PRIMITIVE-TYPE* and added code to do necessary coercions to/from the
- actual variable representation.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/type.lisp
-12-Dec-89 10:21:15, Edit by Ram.
- Fixed a bunch of declarations that were calling things TYPEs instead of
- CTYPEs.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
-11-Dec-89 10:11:31, Edit by Ram.
- Changed default fasl file extension from "fasl" to "nfasl", at least for now.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/fndb.lisp
-11-Dec-89 08:15:47, Edit by Ram.
- Changed most uses of the FUNCTION type to CALLABLE, now that FUNCTION doesn't
- encompass SYMBOL but we can still call them. Also fixed some lossage where
- someone believed that the SUBSTITUTE/NSUBSTITUTE family of functions had the
- same arguments as the DELETE/REMOVE family.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/srctran.lisp
-10-Dec-89 20:33:05, Edit by Ram.
- Oops... (fifth x) /==> (nth 5 x), is really (nth 4 x). So that's why
- PACKAGE-INIT was losing...
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/macros.lisp
-10-Dec-89 09:23:47, Edit by Ram.
- Fixed DO-NODES-BACKWARDS to work when the current node is deleted now that
- UNLINK-NODE blasts the PREV. Also fixed two bugs in this macro that seem not
- to have affected the sole use in FLUSH-DEAD-CODE. One was that it randomly
- referenced the variable CONT in one place, rather than commaing in the
- appropriate argument. The other was that it did an extra iteration binding
- CONT to the block start and NODE to whatever its USE was (often NIL.)
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
-09-Dec-89 13:31:24, Edit by Ram.
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1final.lisp
-09-Dec-89 13:30:52, Edit by Ram.
- Wrote NODE-DELETED and made NOTE-FAILED-OPTIMIZATION call it so that we won't
- gag trying to look at deleted code. This also prevents bogus efficiency
- notes about code that was actually optimized away.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
-09-Dec-89 13:22:39, Edit by Ram.
- Made UNLINK-NODE set the NODE-PREV of the deleted node to NIL so that we can
- recognize deleted nodes. Also, fixed the degenerate exit branch to add a use
- by EXIT rather than NODE.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/checkgen.lisp
-08-Dec-89 11:28:54, Edit by Ram.
- Changed CONVERT-TYPE-CHECK to call LOCAL-CALL-ANALYZE now that this is not
- being done in COMPILE-COMPONENT.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
-08-Dec-89 11:24:13, Edit by Ram.
- Fixed PROPAGATE-FUNCTION-CHANGE to call MAYBE-LET-CONVERT in addition to
- COMVERT-CALL-IF-POSSIBLE so that IR1 optimize will let convert calls that it
- discovers can be local.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/vop.lisp
-08-Dec-89 10:58:23, Edit by Ram.
- Looks like when I made OLD-CONT and RETURN-PC environment TNs (and requiring
- the IR2-ENVIRONMENT-SLOTS to be initialized after the environment was
- created), I modified the wrong slots to allow NIL. Only detected now because
- I was running with safe defstruct accessors.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/debug.lisp
-08-Dec-89 09:58:33, Edit by Ram.
- IR1 invariants now a bit different: :DELETED continuations can only be
- received by blocks with DELETE-P set, and blocks with DELETE-P set can have
- no successors.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/locall.lisp
-08-Dec-89 09:51:24, Edit by Ram.
- Don't attempt to let-convert when the REF is in a block with DELETE-P set
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
-08-Dec-89 09:50:13, Edit by Ram.
- Don't attempt to do IR1 optimizations when the block has DELETE-P set, just
- delete it instead.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
-08-Dec-89 09:46:20, Edit by Ram.
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/node.lisp
-08-Dec-89 09:51:26, Edit by Ram.
- Added BLOCK-DELETE-P and made DELETE-CONTINUATION set it in the DEST block
- and its predecessors. Changed most uses of DELETE-CONTINUATION to assert
- that there isn't a DEST.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
-07-Dec-89 22:08:35, Edit by Ram.
- In IR1-OPTIMIZE-IF, set COMPONENT-REANALYZE before UNLINK-NODE so that there
- is still a component in the block.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-07-Dec-89 21:17:43, Edit by Ram.
- In IR1-CONVERT-OK-COMBINATION-FER-SHER, set the CONTINUATION-%DERIVED-TYPE
- and CONTINUATION-TYPE-CHECK of the fun cont in addition to setting
- CONTINUATION-REOPTIMIZE.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/srctran.lisp
-07-Dec-89 21:08:09, Edit by Ram.
- Moved definitions of the arithmetic & logic functions %LDB et al. here from
- eval.lisp, since we need them in the bootstrapping environment.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-07-Dec-89 19:17:48, Edit by Ram.
- Changed USE-CONTINUATION not to set the CONTINUATION-%DERIVED-TYPE, as this
- inhibits CONTINUATION-DERIVED-TYPE from seeing whether the assertion needs to
- be intersected, etc.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
-07-Dec-89 18:55:32, Edit by Ram.
- Changed IR1-OPTIMIZE to more explicitly ignore a block when it is directly
- deleted due to :DELETED kind or no predecessors. The old code should have
- realized not to optimize a deleted block, but in a rather obscure way.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
-07-Dec-89 13:25:38, Edit by Ram.
- Changed IR1-OPTIMIZE-UNTIL-DONE to count the number of iterations that didn't
- introduce any new code (set COMPONENT-REANALYZE) rather than just the total
- number of iterations. Reduced MAX-OPTIMIZE-ITERATIONS to 3, since we now
- don't have to worry so much about the results of transforms being adequately
- optimized. Changed IR1-PHASES to call GENERATE-TYPE-CHECKS where it was
- calling CHECK-TYPES. Flushed old call to GENERATE-TYPE-CHECKS in
- COMPILE-COMPONENT.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
-07-Dec-89 13:24:20, Edit by Ram.
- Changed IR1-OPTIMIZE-IF to set COMPONENT-REANALYZE if it does anything.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/checkgen.lisp
-07-Dec-89 12:56:18, Edit by Ram.
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
-07-Dec-89 12:28:19, Edit by Ram.
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ltn.lisp
-07-Dec-89 13:01:31, Edit by Ram.
- Changed type checking around a bunch, fixing some bugs and inefficiencies.
- The old CHECK-TYPES phase is gone. The determination of
- CONTINUATION-TYPE-CHECK is now done on the fly by CONTINUATION-DERIVED-TYPE.
- The compile-time type error detection has been moved into type check
- generation. Type check generation is now driven by BLOCK-TYPE-CHECK, so it
- doesn't have to look at everything on repeat iterations. Made
- ASSERT-CONTINUATION-TYPE set BLOCK-TYPE-CHECK when there is a new assertion.
-
- There are two new values of TYPE-CHECK: :ERROR and :NO-CHECK. These are used
- by check generation to comminicate with itself and the back end. :ERROR
- indicates a compile-time type error, which always causes a type check to be
- emitted, regardless of policy. :NO-CHECK indicates that a check is needed,
- but expected not to be generated due to policy or a safe implementation.
- This inhibits LTN from choosing an unsafe implementation based on results of
- new type information from the post-type-check optimization pass.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/type.lisp
-07-Dec-89 10:01:23, Edit by Ram.
- Yep, that combined with a bug in how I hooked CTYPEP into TYPES-INTERSECT.
- That function should return (VALUES T NIL) in the uncertain case, not
- (VALUES NIL NIL).
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/type.lisp
-07-Dec-89 09:54:44, Edit by Ram.
- Fixed CTYPEP to return the second value T when it calls TYPEP. Is this what
- is causing all hell to break loose? It shouldn't, since it should just
- result in increased type uncertainty.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/proclaim.lisp
-06-Dec-89 21:24:00, Edit by Ram.
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/macros.lisp
-06-Dec-89 21:26:24, Edit by Ram.
- Added support for the DEBUG-INFO optimization quality (DEBUG for short).
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/type.lisp
-06-Dec-89 11:25:36, Edit by Ram.
- Made CTYPEP return a second value indicating whether it was able to determine
- the relationship. Made all callers look at the second value and propagate
- the uncertainty.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/proclaim.lisp
-06-Dec-89 11:11:06, Edit by Ram.
- Moved the actual establishing of the type definition to %%COMPILER-DEFSTRUCT
- from %DEFSTRUCT. Part of this was actually duplicated both places. Now it
- is only here. Hopefully this won't cause any initialization problems. Also,
- made structure redefinition preserve the INCLUDED-BY list so that existing
- structures won't suddenly be broken when the supertype is compiled.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-06-Dec-89 10:43:21, Edit by Ram.
- Changed PROCESS-TYPE-PROCLAMATION to call SINGLE-VALUE-TYPE so that we don't
- try to call TYPE-INTERSECTION on a hairy function type (or make the type of a
- variable, for all that matter.)
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
-05-Dec-89 13:42:19, Edit by Ram.
- Made NCOMPILE-FILE frob *DEFAULT-COOKIE* so as to make optimize proclamations
- affect only the file that they appear in (and any compilations dynamically
- enclosed in that file.)
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-04-Dec-89 09:38:18, Edit by Ram.
- Flushed :SEMI-INLINE and :ALWAYS-INLINE values for INLINEP. Added
- :MAYBE-INLINE, which is interpreted in a more advisory manner. Changed
- IR1-CONVERT-GLOBAL-INLINE so that it does something like the old
- :SEMI-INLINE case for all inline calls so that recursive functions can be
- INLINE.
-
- Fixed this code so that you really can have recursive inline functions. This
- was supposedly supported for :SEMI-INLINE functions, but did not in fact
- work. We do a hack similar to LABELS: we enter a dummy FUNCTIONAL in the
- *FREE-FUNCTIONS* to prevent repeated attempts to convert the expansion.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/srctran.lisp
-03-Dec-89 15:03:48, Edit by Ram.
- Defined SAME-LEAF-REF-P and made transforms for EQ, EQL, < and > use it to
- see if both args are references to the same variable or functional or
- whatever. Also use the EQ transform for CHAR= and EQUAL.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
-02-Dec-89 09:26:12, Edit by Ram.
- Made MAX-OPTIMIZE-ITERATIONS be a ceiling on the number of times that
- IR1-OPTIMIZE-UNTIL-DONE will iterate. If exceeded, we clear a bunch of
- REOPTIMIZE flags and punt. This was made necessary by the addition of type
- inference on set variables, which may take arbitrarily long to converge.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
-01-Dec-89 14:05:10, Edit by Ram.
- Added code to compute the type of set LET variables as the union of the types
- of the initial value and the set values.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/checkgen.lisp
-01-Dec-89 12:11:57, Edit by Ram.
- Added code to check to see if it is cheaper to check against the difference
- between the proven type and the assertion. If so, emit a check against the
- negation of this difference.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/srctran.lisp
-01-Dec-89 09:04:37, Edit by Ram.
- Wrote IR1 transforms for < and > that attempt to statically determine the
- relationship using type information.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/type.lisp
-01-Dec-89 10:06:56, Edit by Ram.
- Wrote TYPE-DIFFERENCE.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir2tran.lisp
-30-Nov-89 12:04:24, Edit by Ram.
- Marked the error signalling funny functions as not returning by using
- TRULY-THE NIL. Formerly this was subverting type inference, since the
- primitive was considered to return *.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
-30-Nov-89 11:52:27, Edit by Ram.
- Made SUBSTITUTE-CONTINUATION-USES do a REOPTIMIZE-CONTINUATION on the New
- continuation so that we realize we need to recompute its type, etc. This was
- seriously crippling type inference. It probably came unglued in let
- conversion when we changed over to using the general substitute function.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-30-Nov-89 11:31:00, Edit by Ram.
- Changed FIND-FREE-VARIABLE to find the type of constants having values with
- CTYPE-OF, rather than using INFO VARIABLE TYPE. This way we find a good type
- for all constants, without interacting with the vagaries of environment query.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
-30-Nov-89 10:50:37, Edit by Ram.
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/locall.lisp
-29-Nov-89 13:14:40, Edit by Ram.
- Moved merging of tail sets from CONVERT-CALL to IR1-OPTIMIZE-RETURN. The old
- code wasn't working because IR1 optimizations (such as deleting local EXITs)
- could cause a local call to be tail-recursive yet the function would never
- get added to the tail set because it had already been converted.
-
- Inaccurate computation of the tail sets resulted in bad code problems, since
- functions were returning in ways not expected by their callers.
-
- ### This code still isn't quite right, since IR1 optimization is supposed to
- be optional. One possible fix would be to do tail annotation in IR1
- optimization, but then you would have to run IR1 optimize to get proper tail
- recursion. This might not be much of an issue, since we will probably always
- want to do at least some IR1 optimization.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/srctran.lisp
-27-Nov-89 12:35:17, Edit by Ram.
- Fixed a braino in mask computation in the %DPB, %MASK-FIELD and
- %DEPOSIT-FIELD transforms.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/fndb.lisp
-26-Nov-89 15:28:27, Edit by Ram.
- Fixed MACRO-FUNCTION def to specify a result type of (OR FUNCTION NULL),
- rather than just FUNCTION. This was disabling the use of this function as a
- predicate to test whether a symbol names a macro. Also fixed the argument
- order to REPLACE.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/srctran.lisp
-25-Nov-89 22:44:32, Edit by Ram.
- Fixed RPLACx transforms to return the right value.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/type.lisp
-22-Nov-89 19:27:58, Edit by Ram.
- Fixed the definition of STRING-CHAR so that it wouldn't seem to be a subtype
- of STANDARD-CHAR.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/seqtran.lisp
-22-Nov-89 14:31:40, Edit by Ram.
- In MAPPER-TRANSFORM, I seem to have inverted the sense of the exit test when
- converting from CONSP to ENDP.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
-21-Nov-89 16:51:31, Edit by Ram.
- Moved GTN before control analysis so that the IR2-Environment is allocated by
- the time that control analysis runs.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/control.lisp
-21-Nov-89 16:38:24, Edit by Ram.
- Moved to ADD-TO-EMIT-ORDER the adding of IR2-Blocks to the
- IR2-ENVIRONMENT-BLOCKS. This way, overflow blocks created by conflict
- analysis will appear in this list. TNs only live in overflow blocks were
- being considered not to conflict with :ENVIRONMENT TNs.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/stack.lisp
-21-Nov-89 16:34:05, Edit by Ram.
- Made DISCARD-UNUSED-VALUES make an IR2 block for the cleanup block and call
- ADD-TO-EMIT-ORDER on it. I think that if this code ever ran, it would have
- died. This code was tested at one point, so it was probably broken by the
- move of control analysis to before all the other IR2 pre-passes.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/tn.lisp
-21-Nov-89 14:43:29, Edit by Ram.
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/gtn.lisp
-21-Nov-89 14:51:36, Edit by Ram.
- Wrote MAKE-WIRED-ENVIRONMENT-TN so that the save TNs for old-cont and
- return-pc could be made environment-live. Made ASSIGN-IR2-ENVIRONMENT pass
- the environment to MAKE-xxx-SAVE-TN so that they could make environment-live
- TNs.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/assembler.lisp
-20-Nov-89 08:58:31, Edit by Ram.
- In NEW-LOGIOR-ARGUMENT, added code to check that the SB for :REGISTER
- operands is really REGISTERS.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir2tran.lisp
-20-Nov-89 08:29:42, Edit by Ram.
- In EMIT-MOVE, added code to emit a type error when moving between
- incompatible TNs. It seems that this can happen with functions (especially
- funny functions) that don't return. This seems like a good fix until we can
- figure out how to hack the flow graph when there is a non-returning function.
- [Incompatible moves may also happen if there is a compile-time type error and
- the check is deleted due to unsafe policy, etc.]
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/fndb.lisp
-17-Nov-89 15:06:51, Edit by Ram.
- Changed %PUT's IR1 attributes from (FLUSHABLE) to (UNSAFE).
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/srctran.lisp
-17-Nov-89 10:12:48, Edit by Ram.
- Fixed some missing commas in SOURCE-TRANSFORM-TRANSITIVE that only affected
- LOGEQV. Good thing nobody uses it...
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/vmdef.lisp
-16-Nov-89 09:42:37, Edit by Ram.
- Fixed previous fix to work when there is a more result.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/vmdef.lisp
-15-Nov-89 13:57:36, Edit by Ram.
- In TEMPLATE-TYPE-SPECIFIER, if we use a values type for the result, make it
- &REST T to represent the vagueness of values count matching.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/srctran.lisp
-15-Nov-89 09:57:48, Edit by Ram.
- Added missing source transform for LOGEQV, which was missed in the previous
- pass. This required changing SOURCE-TRANSFORM-TRANSTIVE, since that was
- already a source transform for LOGEQV. It's a good thing I left in *both*
- checks for broken interpreter stubs.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/srctran.lisp
-14-Nov-89 10:41:51, Edit by Ram.
- Added source transforms for zillions of trivial logic operations that were
- missing.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-14-Nov-89 10:43:24, Edit by Ram.
- In %DEFUN, added the presence of an IR2-CONVERT methods to the list of things
- that inhibits substitution of the actual definition for existing references.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/srctran.lisp
-13-Nov-89 12:21:52, Edit by Ram.
- Added source transforms for RPLACA, RPLACD.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
-13-Nov-89 12:17:32, Edit by Ram.
- Moved the test of NODE-REOPTIMIZE out of FIND-RESULT-TYPE and into
- IR1-OPTIMIZE-RETURN. This fixes a bug that was introduced when the clearing
- of NODE-REOPTIMIZE was moved to the start of the loop in IR1-OPTIMIZE-BLOCK.
- We were never recomputing the RETURN-RESULT-TYPE, since REOPTIMIZE was never
- set when we got to IR1-OPTIMIZE-RETURN. With this fix, the previous change
- should detect broken interpreter stubs.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1final.lisp
-12-Nov-89 13:05:49, Edit by Ram.
- Made CHECK-FREE-FUNCTION give a note when it sees a function that doesn't
- return (return type is NIL.) I thought that this would detect broken
- interpreter stubs. It turns out not to, but still seems like a useful
- feature.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ltn.lisp
-13-Nov-89 11:47:30, Edit by Ram.
- Made LTN-ANALYZE-KNOWN-CALL give a warning when we are unable to find a
- template for a known call where there call is to the current function. This
- should tell result in a warning when we compile an interpreter stub for a
- function that the code sources assume is implemented primitively, but the
- compiler doesn't recognize.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir2tran.lisp
-12-Nov-89 10:54:25, Edit by Ram.
- Oops... When doing unsafe global function references, use
- FAST-SYMBOL-FUNCTION, not FAST-SYMBOL-VALUE.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/main.lisp
-10-Nov-89 13:37:15, Edit by Ram.
- Oops... Have to dump package frobbing forms specially for cold load. This
- might want to be on a switch someday. Instead of actually compiling them, we
- dump them as lists so that Genesis can eval them. The normal top-level form
- compilation must be suppressed, since the package system isn't initialized at
- the time that top-level forms run.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/dfo.lisp
-05-Nov-89 13:45:11, Edit by Ram.
- Changed FIND-INITIAL-DFO to return top-level components at the end of the
- list so that in a block compilation all the functions will be compiled before
- we compile any of the top-level references to them.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/envanal.lisp
-01-Nov-89 11:57:58, Edit by Ram.
- Changed Find-Non-Local-Exits back to a loop over all the blocks in the
- component, rather than trying to find the exits from the Lambda-Entries.
- Unfortunately, the latter is not possible, since the exit continuation may
- become deleted if it isn't used. A possible way to avoid this search would
- be to make the Entry node have a list of all the Exit nodes, rather than the
- continuations.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/vop.lisp
-31-Oct-89 12:45:20, Edit by Ram.
- Allow (SETF xxx) for the Entry-Info-Name, in addition to strings and symbols.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
-31-Oct-89 12:53:37, Edit by Ram.
- In Find-Source-Context, only take the car of list first args to DEFxxx forms
- when the form name is in a special list. This list initially only contains
- DEFSTRUCT.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-31-Oct-89 12:23:57, Edit by Ram.
- In Convert-More-Entry, made the temporaries for the keyword and value
- ignorable so that we don't get "defined but never read" warnings when there
- aren't any keywords specified.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-31-Oct-89 12:11:24, Edit by Ram.
- Fixed Process-Declarations to correctly deal with pervasive special
- declarations. Previously, a warning would be given if the varible was only
- locally declared, and not globally known. Also an assertion failure would
- have resulted (rather than a Compiler-Error) when a constant was declared
- pervasively special.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-31-Oct-89 11:39:54, Edit by Ram.
- Changed Reference-Constant so that it doesn't call Reference-Leaf anymore,
- and made the source be an explicit argument. Changed Reference-Leaf to just
- use the Leaf-Name as source, rather than (sometime incorrectly) inferring the
- source for constants.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir2tran.lisp
-20-Oct-89 15:56:56, Edit by Ram.
- In the :UNKNOWN and :UNUSED cases of CONTINUATION-RESULT-TNS, always return
- TNs of the specified result types, rather than sometimes returing T TNs.
- This is some sort of compensation for our new belief that VOPS returining
- non-T results need not be prepared to accept T TNs. How many other places
- does this need to be fixed?
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/stack.lisp
-17-Oct-89 12:36:38, Edit by Ram.
- In FIND-PUSHED-CONTINUATIONS, fix the check for pushes coming before pops.
- You can compare nodes and continuations all day without finding any that are
- EQ.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/macros.lisp
-17-Oct-89 11:44:40, Edit by Ram.
- Flushed the code in DEFTRANSFORM that was creating a THE out of the CONT's
- asserted type. This should be unnecessary, and was made incorrect by the
- continuation representation change. If the node was the last in a block and
- the value wasn't used, then the value would be asserted to be of the NIL
- type, resulting in a warning.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
-17-Oct-89 10:51:27, Edit by Ram.
- Changed Compiler-Mumble to tell whether an error message precedes from
- *last-format-string*, rather than *last-source-context*, since the last
- message might not have had a source context. Made *compiler-error-output* be
- globally bound to a synonym stream for *error-output* so that calls to
- Compiler-Error outside of the compiler will more or less work.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/checkgen.lisp
-16-Oct-89 15:23:13, Edit by Ram.
- In Convert-Type-Check, set the start & end cleanups of the new block to the
- *start* cleanup of the Dest's block, and not the end cleanup. Not sure this
- is really more correct, but it fixes one case.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/pack.lisp
-12-Oct-89 14:05:43, Edit by Ram.
- Added a before-GC hook that flushes the per-SB conflict data structure
- whenever they aren't being used. This should prevent megabyte-plus conflicts
- information from persisting after it is needed, and also reduce the cost of
- Init-SB-Vectors, since the vectors will stay smaller.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
-11-Oct-89 11:37:16, Edit by Ram.
- Made Propagate-Function-Change ignore references that are :Notinline.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
-10-Oct-89 23:28:33, Edit by Ram.
- In Print-Error-Message, use the *Current-Form* as the source form whenever if
- is non-NIL, even if there is a node in *Compiler-Error-Context*. This way,
- messages during IR1 conversion of a transform will be more useful.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
-10-Oct-89 22:47:56, Edit by Ram.
- Now Delete-Optional-Dispatch must be prepared for the main entry to be a let
- rather than just being deleted or a normal function, since let conversion is
- being triggered here.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/locall.lisp
-09-Oct-89 17:56:35, Edit by Ram.
- Fixed Convert-Call to change the combination kind before changing the ref
- leaf so that the call will appear local at that time. This allows let
- conversion to happen when we replace a optional dispatch with one of its EPs.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
-09-Oct-89 17:34:42, Edit by Ram.
- Fixed Delete-Optional-Dispatch to call Maybe-Let-Convert if we notice that a
- former EP lambda has exactly one reference.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
-04-Oct-89 19:05:16, Edit by Ram.
- In IR1-Optimize-Combination, we must be prepared for the derive-type method
- to return NIL. This will happen if the arglist is incompatible with the
- call (and if the optimizer explicitly returns NIL.)
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/macros.lisp
-04-Oct-89 19:22:17, Edit by Ram.
- Check-Transform-Keys and Check-Keywords-Constant were checking the second
- (value) part of the key/value pair, so optimizers would never run if any
- keywords were supplied.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
-04-Oct-89 15:39:27, Edit by Ram.
- When I changed Propagate-Local-Call-Args to clear the Continuation-Reoptimize
- flags, I forgot that a local call continuation can be NIL (for an unused
- argument.)
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
-04-Oct-89 11:05:48, Edit by Ram.
- Oops... In Propagate-Function-Change, we have to use
- Continuation-Derived-Type rather than Continuation-Type now that the latter
- changes function types to FUNCTION.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/globaldb.lisp
-27-Sep-89 14:24:04, Edit by Ram.
- Exported basic interface (but not environment vars, pending some abstract
- interface to environment manipulation.) Changed class and type names to be
- represented as strings at run time to avoid package lossage. Changed names
- to be arbitrary equal objects (to allow setf functions).
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir2tran.lisp
-21-Sep-89 10:12:38, Edit by Ram.
- Changed OK-Result-TN to indicate need for a coercion if the result is unboxed
- and the TN is boxed. This prevents load-TN packing from getting confused due
- to there being no intersection between the SC restriction and the types
- allowed by the SC. This would happen when the result was restricted to a
- non-descriptor SC.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ltn.lisp
-21-Sep-89 10:39:04, Edit by Ram.
- Changed Restrict-Descriptor-Args to restrict the argument only when a
- coercion was required. This allows immediate objects to be passed to
- templates in unboxed registers.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
-30-Aug-89 14:37:36, Edit by Ram.
- Changed Change-Leaf-Ref (and hence Substitute-Leaf) to use Derive-Node-Type
- on the Ref with the Leaf-Type so that substituting a variable causes the new
- type to be noticed.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
-30-Aug-89 14:30:44, Edit by Ram.
- Changed IR1-Optimize-Block and all the combination optimization code to clear
- optimize flags *before* optimizing rather than after, so that a node will be
- reoptimized if necessary.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/vmdef.lisp
-29-Aug-89 09:20:18, Edit by Ram.
- Made Template-Type-Specifier hack *'s in operand type restrictions.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ltn.lisp
-24-Aug-89 13:55:04, Edit by Ram.
- In LTN-Analyze-MV-Call, have to annotate the continuations in reverse order,
- now that the IR2-Block-Popped isn't built in reverse order.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ltn.lisp
-24-Aug-89 13:25:14, Edit by Ram.
- In LTN-Analyze, eliminated assertion that the block containing the use of a
- unknown-values continuation is not already in the
- IR2-Component-Values-Generators. It is possible for a single block to
- contain uses of several MV continuations that have their DEST in a different
- block.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/dfo.lisp
-22-Aug-89 12:12:49, Edit by Ram.
- Made Find-Initial-DFO-Aux call Walk-Home-Call-Graph on each block before
- walking the successors. Walk-Home-Call-Graph is a new function that looks at
- the current block's home lambda's bind block to see if it is in a different
- component. We need to do this to ensure that all code in a given environment
- ends up in the same component, since any successor might be a non-local exit
- (into a different environment.)
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-18-Aug-89 15:46:51, Edit by Ram.
- Flushed the (locally (declare (optimize (safety 0))) ...) around the body of
- Unwind-Protect's expansion. I think that this was trying to suppress some
- type checking of the MV-Bind, but it was also causing unsafe compilation of
- the protected form. If we really need this, it must be but back some other
- way.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir2tran.lisp
-18-Aug-89 15:11:13, Edit by Ram.
- Oops... We can't use Label-Offset in the generators for Make-Catch-Block,
- &c. Instead, we use a :Label load-time constant. The target argument to the
- VOPs is now a normal integer argument, rather than a label in the
- codegen-info.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ltn.lisp
-18-Aug-89 14:13:51, Edit by Ram.
- In LTN-Analyze-Return, don't annotate NLX continuations as :Unused so that
- the NLX entry code doesn't have to worry about this case.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
-18-Aug-89 13:45:19, Edit by Ram.
- In Reoptimize-Continuation, don't do anything if the continuation is deleted.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1util.lisp
-17-Aug-89 11:17:13, Edit by Ram.
- Oops... In Node-Ends-Block, have to set the Block-Start-Uses, now that it is
- always supposed to hold the uses of block starts.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ltn.lisp
-10-Aug-89 10:49:01, Edit by Ram.
- Changed Find-Template to intersect the Node-Derived-Type with the
- Continuation-Asserted-Type rather than using the Continuation-Derived-Type in
- the case where we are allowed to use the result type assertion. This works
- better when the continuation has multiple uses.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/typetran.lisp
-24-Jul-89 14:25:09, Edit by Ram.
- Fixed Source-Transform-Union-Typep to check that there really is a MEMBER
- type in the union, instead of assuming there is whenever LIST is a subtype.
- This was losing on (OR SYMBOL CONS).
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/assembler.lisp
-19-Jul-89 14:36:10, Edit by Ram.
- Made Init-Assembler nil out the Info slots in all the fixups so that the
- fixup freelist doesn't hold onto the entire IR. More storage allocation
- lossage has been caused by the explicit freelists in the assembler than
- anything else.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/macros.lisp
-12-Jul-89 15:34:09, Edit by Ram.
- Changed defining macros to stick the actual function object into the
- Function-Info &c to be compatible with the new definition of the Function
- type.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir2tran.lisp
-12-Jul-89 12:57:24, Edit by Ram.
- Fixed goof in IR2-Convert-Local-Unknown call, where it was converting the
- result TN list to TN-refs twice. For some reason, this was dying with a
- highly mysterious error in Reference-TN-List. Perhaps this file was last
- compiled with an unsafe policy?
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/life.lisp
-11-Jul-89 19:29:05, Edit by Ram.
- In Propagate-Live-TNs, when we convert a :Read-Only conflict to :Live, we
- null the entry in the local TNs to represent the elimination of local
- conflict information.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-11-Jul-89 18:46:17, Edit by Ram.
- Changed %Defun to only substitute the functional when it isn't notinline and
- isn't known to have any templates or transforms. The latter constraint fixes
- big problems with interpreter stubs.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1tran.lisp
-05-Jul-89 22:11:10, Edit by Ram.
- In Return-From, put back code that made Cont start a block so that Cont will
- have a block assigned before IR1-Convert. So that's why that was there.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ltn.lisp
-05-Jul-89 18:07:48, Edit by Ram.
- In Annotate-Unknown-Values-Continuation, make a safety note when we delete a
- check and the policy is safe.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir1opt.lisp
-05-Jul-89 17:43:18, Edit by Ram.
- In IR1-Optimize-Exit, don't propagate Cont's type to the Value, since this
- moves checking of the assertion to the Exit, which is a bad place.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir2tran.lisp
-05-Jul-89 15:10:34, Edit by Ram.
- In Emit-Return-For-Locs, changed the test for when to use known return
- convention from External-Entry-Point-P to *not* External-Entry-Point-P.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ir2tran.lisp
-05-Jul-89 14:41:55, Edit by Ram.
- Oops... We need a UWP-Entry VOP for Unwind-Protect entries to force random
- live TNs onto the stack. It doesn't actually do anything, but specifies the
- passing locations as results so that they aren't forced to the stack.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/ltn.lisp
-03-Jul-89 16:46:09, Edit by Ram.
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/stack.lisp
-03-Jul-89 16:39:53, Edit by Ram.
- Changed unknown values hackery to ignore non-local exits. We don't record
- NLX uses of unknown-values continuations as generators, and we stop
- our graph walk when we hit the component root. These changes were
- necessitated by the decision to make %NLX-Entry no longer use the values
- continuation.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/pack.lisp
-03-Jul-89 11:31:36, Edit by Ram.
- Fixed one-off error in Pack-Wired-TN's determination of when we have to grow
- the SB, and fixed it to handle SC-Element-Size /= 1 while I was at it.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/locall.lisp
-29-Jun-89 12:02:16, Edit by Ram.
- In Local-Call-Analyze-1, moved the test for the reference being by the
- Basic-Combination-Fun to around the entire branch that attempts to convert,
- rather than immediately around the call to Convert-Call-If-Possible. Before,
- a closure arg to a local function wouldn't get an XEP.
-
- Also, changed Reference-Entry-Point to ignore references to :Cleanup and
- :Escape functions.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/envanal.lisp
-28-Jun-89 16:57:12, Edit by Ram.
- In Emit-Cleanups, if we find there is no cleanup code, then do nothing,
- instead of inserting a cleanup block holding NIL. This was causing blocks
- with no non-local uses to inhibit tail-recursion.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/checkgen.lisp
-28-Jun-89 14:03:45, Edit by Ram.
- It finally happened. A paren error that resulted in mysterious lossage. In
- this case, the body of the loop in Make-Type-Check-Form was moved out of the
- loop, and always executed once. The meant that only one value would ever be
- checked or propagated on to the original receiver.
-
-/afs/cs.cmu.edu/project/clisp/new-compiler/compiler/pack.lisp
-28-Jun-89 13:20:59, Edit by Ram.
- Oops... I introduced a bug in the previously correct argument case of
- Load-TN-Conflicts-In-SB. We terminate the loop when we reach the first
- reference, not the first argument. This caused conflicts with temporaries
- with lives beginning at :Load to be ignored.
-
-/usr1/lisp/compiler/pack.lisp, 23-Jun-89 15:54:32, Edit by Ram.
- Fixed logic in Load-TN-Conflicts-In-SB. We weren't recognizing conflicts
- with other argument/result TNs that had already been packed. This bug would
- only show up with multiple result load TNs. The argument case was actually
- correct, but was asymmetrical with the result case, and only worked becase
- argument load TNs were packed in evaluation order.
-
-/usr1/lisp/compiler/locall.lisp, 20-Jun-89 14:53:51, Edit by Ram.
- In Merge-Tail-Sets, quietly do nothing if the called function has no tail set
- (doesn't return), rather than dying.
-
-/usr1/lisp/compiler/globaldb.lisp, 14-Jun-89 10:14:04, Edit by Ram.
- Flushed Top-Level-P attribute.
-
-/usr1/lisp/compiler/macros.lisp, 14-Jun-89 10:14:03, Edit by Ram.
- Allow a doc string in Def-IR1-Translator (made the FUNCTION documentation).
- Removed support for Top-Level-P attribute.
-
-/usr1/lisp/compiler/ir1opt.lisp, 22-May-89 15:30:59, Edit by Ram.
-/usr1/lisp/compiler/ir1util.lisp, 22-May-89 15:22:17, Edit by Ram.
- Undid last change to Node-Ends-Block and Join-Blocks. This was fucking up
- big time, since it messed with the continuation even when it was a block
- start.
-
-/usr1/lisp/compiler/locall.lisp, 22-May-89 13:24:48, Edit by Ram.
- Changed Local-Call-Analyze to maintain the Component-New-Functions exactly up
- to date, only popping a function off exactly as it analyzes it. This way, a
- lambda is always referenced either in the Lambdas or New-Functions (except
- during a brief window), so we can do consistency checking during local call
- analysis.
-
-/usr1/lisp/compiler/ir1util.lisp, 19-May-89 10:05:28, Edit by Ram.
-/usr1/lisp/compiler/ir1opt.lisp, 19-May-89 10:05:27, Edit by Ram.
- In Flush-Dest and Reoptimize-Continuation, take care not to assume that the
- Continuation-Block is an undeleted block. Instead, we pick up the component
- to reoptimize from the uses or Dest.
-
-/usr1/lisp/compiler/ir2tran.lisp, 17-May-89 12:48:35, Edit by Ram.
- In Move-Results-Coerced and Move-Results-Checked, subtract Nsrc from Ndest,
- rather than the other way around.
-
-/usr1/lisp/compiler/control.lisp, 15-May-89 11:53:36, Edit by Ram.
- Made Control-Analyze walk XEPs first to eliminate the idiocy of never getting
- the drop-through in components with only one EP.
-
-/usr1/lisp/compiler/ir1util.lisp, 13-May-89 15:23:28, Edit by Ram.
- And similarly, in Node-Ends-Block, move the last continuation to the new
- block when its block is the old block.
-
-/usr1/lisp/compiler/ir1opt.lisp, 13-May-89 15:02:31, Edit by Ram.
- In Join-Blocks, move the Cont of the Last to Block1 when it's block is
- currently Block2. This way, the continuation isn't left pointing at some
- random deleted block.
-
-/usr1/lisp/compiler/ir1util.lisp, 14-Mar-89 10:12:04, Edit by Ram.
- Also, in Delete-Block, when we delete a bind, call Delete-Lambda, rather
- than trying to roll our own.
-
-/usr1/lisp/compiler/ir1util.lisp, 14-Mar-89 10:07:01, Edit by Ram.
- In Delete-Lambda, we must remove a let from its home's lets.
-
-/usr1/lisp/compiler/ir1util.lisp, 14-Mar-89 09:34:54, Edit by Ram.
- In Unlink-Node, the assertion that the start and end cleanups are the same
- must use Find-Enclosing-Cleanup, rather than just comparing the values
- directly.
-
-/usr1/lisp/compiler/ir2tran.lisp, 14-Mar-89 08:26:04, Edit by Ram.
- Wrote Flush-Tail-Transfer and made people who do TR stuff use it. This
- function deletes the link between the blocks for a TR node and the block
- containing the return node. We have to do this so that lifetime analysis
- doesn't get confused when there are TNs live at the return node, but some
- predecessors of the return don't write the TNs because the return some other
- way.
-
-/usr1/lisp/compiler/srctran.lisp, 10-Mar-89 19:11:51, Edit by Ram.
- Made the transforms into %typep always pass until we do type predicates for
- real.
-
-/usr1/lisp/compiler/assembler.lisp, 10-Mar-89 18:56:45, Edit by Ram.
- Fixed Macrolet of Emit-Label in Def-Branch to have a paren in the right
- place. As written, it expanded into its argument, and didn't enclose any
- code anyway. But I think this would only affect instructions that both were
- a branch and had a load-time fixup.
-
-/usr1/lisp/compiler/assembler.lisp, 10-Mar-89 18:47:50, Edit by Ram.
- Added code to Def-Branch in the choose function that calls
- Undefined-Label-Error when the the label isn't defined. This function uses
- the *assembler-nodes* source info and the branch instruction location to
- print the source node responsible for generating the bogus branch.
-
-/usr1/lisp/compiler/assembler.lisp, 10-Mar-89 17:59:51, Edit by Ram.
- Made Gen-Label initalize the Elsewhere-P slot to :Undecided. Also made
- Merge-Code-Vectors ignore labels whose Elsewhere-P is undecided. The theory
- is that it should be o.k. to make labels that aren't emitted as long as you
- don't reference them. Of course, I will probably find that the losing labels
- are referenced. Renamed the Location slot in Label to %Location, and defined
- Label-Location to filter out undefined labels.
-
-/usr1/lisp/compiler/ltn.lisp, 10-Mar-89 17:43:39, Edit by Ram.
- In LTN-Analyze-Return, we must check for the Return-Info-Count being :Unknown
- rather than null when we want to know if a fixed number of values are
- returned.
-
-/usr1/lisp/compiler/ir2tran.lisp, 07-Mar-89 18:13:12, Edit by Ram.
- In the Values-List IR2 convert method, we must also handle :Unused
- continuations, only punting when the continuation is :Fixed. When called
- with a TR result continuation, we have to emit the unknown-values return
- ourself. Otherwise, there isn't any way to write the Values-List function.
-
-/usr1/lisp/compiler/ir2tran.lisp, 06-Mar-89 21:25:12, Edit by Ram.
- Make-Closure takes the number of closure vars and the function-entry, rather
- than the other way around.
-
-/usr1/lisp/compiler/ir2tran.lisp, 06-Mar-89 20:48:29, Edit by Ram.
- And always pass 1 as the number of symbols to Unbind, rather than 0.
-
-/usr1/lisp/compiler/ir2tran.lisp, 06-Mar-89 20:43:47, Edit by Ram.
- Args to the Bind miscop are (Value, Symbol), and not the other way around.
-
-/usr1/lisp/compiler/ir2tran.lisp, 06-Mar-89 19:09:16, Edit by Ram.
- In IR2-Convert-IF, we have to negate the sense of the test when using an EQ
- NIL check. Made IR2-Convert-Conditional take an additional not-p argument.
-
-/usr1/lisp/compiler/ctype.lisp, 06-Mar-89 17:22:40, Edit by Ram.
- In Definition-Type, when we make the Function-Type, include the list of
- keyword info that we have built.
-
-/usr1/lisp/compiler/ir2tran.lisp, 02-Mar-89 18:16:40, Edit by Ram.
- In Init-XEP-Environment, when we are checking for whether there is a more
- arg, look at the entry-function rather than the XEP.
-
-/usr1/lisp/compiler/main.lisp, 01-Mar-89 15:58:32, Edit by Ram.
- Made Clear-Stuff clear the Finite-SB-Live-TNs in all SBs. Maybe this will
- nuke some garbage.
-
-/usr1/lisp/compiler/pack.lisp, 01-Mar-89 15:50:41, Edit by Ram.
- In Grow-SC, fill the Finite-SB-Live-TNs vector with NILs before we lose it so
- that if it is statically allocated, it won't hold onto garbage. But this
- shouldn't make any difference, since we never use the Live-TNs in unbounded
- SBs.
-
-/usr1/lisp/compiler/locall.lisp, 01-Mar-89 01:15:22, Edit by Ram.
- In Make-XEP-Lambda, in the lambda case, we now include an ignore declaration
- for the nargs var when policy suppresses the argument count check.
-
-/usr1/lisp/compiler/ir1util.lisp, 28-Feb-89 19:39:56, Edit by Ram.
- Also clear :Optional kind for the Main-Entry in Delete-Optional-Dispatch.
-
-/usr1/lisp/compiler/locall.lisp, 28-Feb-89 19:31:07, Edit by Ram.
- Changed Local-Call-Analyze so that it pushes new lambdas on the
- Component-Lambdas before it does any call analysis or let conversion. This
- gets the normal consistency maintenance code to handle removal of deleted
- and let lambdas. Before, there was a local list of new lambdas that could
- become inconsistent.
-
-/usr1/lisp/compiler/ir1tran.lisp, 28-Feb-89 18:12:15, Edit by Ram.
- Instead of trying to set the :Optional kind everywhere that hairy lambda
- conversion creates a lambda, we wait until we are done and set the kind only
- the lambdas that are actually e-ps. This was causing internal lambdas that
- weren't e-ps to be marked as optional. The fix is also clearer, and causes
- less complication in the already-hairy code.
-
-/usr1/lisp/compiler/ir1tran.lisp, 24-Feb-89 15:26:29, Edit by Ram.
- Changed Optional-Dispatch stuff to set the Functional-Entry-Function of the
- :Optional lambdas to the result Optional-Dispatch structure.
-
-/usr1/lisp/compiler/ir1opt.lisp, 24-Feb-89 14:46:57, Edit by Ram.
- In IR1-Optimize, changed test for being in a deleted lambda to just look at
- the block-lambda, rather than at it's home. The result should be the same.
-
-/usr1/lisp/compiler/entry.lisp, 24-Feb-89 14:30:37, Edit by Ram.
- Changed Compute-Entry-Info to use the XEP's environment to determine whether
- the function is a closure. The result should be the same, but is more easily
- obtained.
-
-/usr1/lisp/compiler/ir1util.lisp, 24-Feb-89 14:26:58, Edit by Ram.
- Deleted definition of Find-XEP-Call, since this doesn't make sense anymore.
-
-/usr1/lisp/compiler/debug.lisp, 24-Feb-89 14:21:09, Edit by Ram.
- Flushed permission of random wired live TNs at the start of an XEP.
-
-/usr1/lisp/compiler/debug.lisp, 24-Feb-89 14:18:01, Edit by Ram.
- In Check-Block-Successors, flushed permission of random successor count in
- XEPs.
-
-/usr1/lisp/compiler/ir2tran.lisp, 24-Feb-89 14:14:12, Edit by Ram.
- Flushed check for being the bind block for an XEP that inhibited emission of
- a block-finishing branch in Finish-IR2-Block. Control flow is now normal in
- XEPs, so we don't want to randomly flush branches.
-
-/usr1/lisp/compiler/ir1opt.lisp, 24-Feb-89 14:07:52, Edit by Ram.
- Flushed check for being in an XEP in Join-Successor-If-Possible. Now that
- argument count dispatching is done explicitly, there is no need to force the
- call to a block boundry (for easy location). Also, we are getting more
- complex code in the XEP, making block merging a desirable optimization.
-
-/usr1/lisp/compiler/ir1util.lisp, 24-Feb-89 14:03:35, Edit by Ram.
- Fixed code in Delete-Lambda that was trying to notice when we are deleting
- the the XEP for an optional dispatch. The test was right, but the action was
- wrong: it was setting the Functional-Entry-Function for all the e-p's to NIL,
- yet they were already NIL. Instead, we call Delete-Optional-Dispatch, which
- deletes the unreferenced e-p's.
-
-/usr1/lisp/compiler/ir1tran.lisp, 23-Feb-89 20:17:21, Edit by Ram.
- Wrapped a (locally (declare (optimize (safety 0))) ...) around the body of
- the loop created in Convert-More-Entry so that no type checking is done on
- the fixnum arithmetic.
-
-/usr1/lisp/compiler/ir2tran.lisp, 23-Feb-89 14:34:49, Edit by Ram.
- Flushed most of the hair associated with the %Function-Entry funny function.
- What remains is now in Init-XEP-Environment, which is called by
- IR2-Convert-Bind when the lambda is an XEP.
-
-/usr1/lisp/compiler/gtn.lisp, 23-Feb-89 14:24:20, Edit by Ram.
- Flushed some special-casing of XEPs that is no longer needed now that XEP's
- have args. Also, allocation of argument passing locations in XEPs is now
- more similar to the non-XEP case: we don't allocate passing locations for
- unused arguments.
-
-/usr1/lisp/compiler/locall.lisp, 22-Feb-89 15:26:50, Edit by Ram.
- Change handling of XEPs. Most of the action in XEPs is now represented by
- explicit IR1 in the XEP: argument dispatching is done by a COND, etc.
- Instead of using funny functions such as %XEP-ARG to access the passed
- arguments, NARGS and all the positional arguments are passed as arguments to
- the XEP (with garbage defaults for unsupplied args). The code in the XEP
- just references these variables.
-
- This simplifies creation of the XEP, since we can just cons up a lambda form
- and convert it, instead of creating each XEP call by hand. It also moves
- complexity out of IR2 conversion, since argument dispatching has already been
- implemented.
-
-/usr1/lisp/compiler/ir2tran.lisp, 16-Feb-89 15:12:17, Edit by Ram.
- Fixed %XEP-Arg to use Move-Argument rather than just Move.
-
-/usr1/lisp/compiler/node.lisp, 15-Feb-89 00:36:30, Edit by Ram.
- Made Functional specify :Defined and Function as the defaults for the
- Where-From and Type slots so that we know defined functions are in fact
- functions.
-
-/usr1/lisp/compiler/ir1tran.lisp, 14-Feb-89 23:48:37, Edit by Ram.
- In %Defun translator, fixed the test for being at top level (and thus o.k. to
- substitute). The sense was negated, but it was also broken so that it was
- always false, so the normal top-level thing happened anyway.
-
-/usr1/lisp/compiler/ir1tran.lisp, 14-Feb-89 15:02:14, Edit by Ram.
- Wrote Leaf-Inlinep and changed uses to (cdr (assoc leaf *inlines*)) with the
- new function. This means that global declarations will now affect function
- references.
-
-/usr1/lisp/compiler/main.lisp, 13-Feb-89 12:19:39, Edit by Ram.
- Call Init-Assembler *before* Entry-Analyze so that we don't emit labels when
- the assembler isn't initialized.
-
-/usr1/lisp/compiler/ltn.lisp, 02-Feb-89 15:41:40, Edit by Ram.
- Changed Annotate-Function-Continuation not to clear Type-Check unless the
- policy is unsafe. Changed LTN-Default-Call to take a policy argument and
- pass it through.
-
-/usr1/lisp/compiler/ir1tran.lisp, 02-Feb-89 15:16:32, Edit by Ram.
- Changed IR1-Convert-Combination-Args and the translator for
- Multiple-Value-Call to assert that the function continuation yeilds a value
- of type Function.
-
-/usr1/lisp/compiler/assembler.lisp, 31-Jan-89 14:13:54, Edit by Ram.
-/usr1/lisp/compiler/codegen.lisp, 31-Jan-89 14:13:53, Edit by Ram.
- Added a function version of Emit-Label that can be called outside of
- Assemble. Used this in Generate-Code so that we don't have to worry about
- faking the current node for Assemble, when we aren't emitting any code
- anyway.
-
-/usr1/lisp/compiler/assembler.lisp, 31-Jan-89 13:56:08, Edit by Ram.
- In Init-Assembler, Null out the Assembler-Node-Names in *Assembler-Nodes* so
- that we don't hold onto old garbage. Also zero the code vectors so that
- unitialized bytes always come up zero.
-
-/usr1/lisp/compiler/ir2tran.lisp, 31-Jan-89 12:37:21, Edit by Ram.
- Fixed IR2-Convert-Local-Unknown-Call to use Standard-Value-TNs to get the
- result TNs, rather than calling incorrectly calling Make-Standard-Value-TNs
- on a continuation.
-
-/usr1/lisp/compiler/ir1opt.lisp, 30-Jan-89 23:28:08, Edit by Ram.
- Changed Check-Types to not set Type-Check when the asserted type is T and the
- derived type is *.
-
-/usr1/lisp/compiler/ir1util.lisp, 30-Jan-89 19:36:09, Edit by Ram.
- Changed Delete-Ref not to call Delete-Lambda or Delete-Optional-Dispatch when
- the functional is already deleted.
-
-/usr1/lisp/compiler/locall.lisp, 30-Jan-89 19:23:26, Edit by Ram.
- Convert-MV-Call must add the ep to the Lambda-Calls for the home lambda (as
- in Convert-Call) so that DFO can detect the control transfer implicit in
- local call.
-
-/usr1/lisp/compiler/ir1util.lisp, 30-Jan-89 18:30:27, Edit by Ram.
- Changed Delete-Optional-Dispatch to call Delete-Lambda on all entry points
- with no references.
-
-/usr1/lisp/compiler/ir1util.lisp, 30-Jan-89 17:04:33, Edit by Ram.
- Changed Delete-Lambda to mark the Lambda's lets as :Deleted as well,
- guaranteeing that all code in the environment of a deleted lambda is deleted
- (without having to do flow analysis).
-
-/usr1/lisp/compiler/locall.lisp, 30-Jan-89 16:37:31, Edit by Ram.
- Changed Convert-MV-Call not to call Let-Convert, since the last entry may
- have spurious references due to optional defaulting code that hasn't been
- deleted yet. Changed Maybe-Let-Convert to set the Functional-Kind of the
- lambda to :Let or :MV-Let, depending on the combination type.
-
-/usr1/lisp/compiler/locall.lisp, 30-Jan-89 15:35:52, Edit by Ram.
- Changed Merge-Cleanups-And-Lets to use Find-Enclosing-Cleanup to determine
- whether there is any cleanup in effect at the call site, rather than directly
- using the Block-End-Cleanup.
-
-/usr1/lisp/compiler/ir1util.lisp, 30-Jan-89 15:12:51, Edit by Ram.
- Changed Node-Ends-Block to set the start and end cleanups of the *new* block
- (not the old) to the ending cleanup of the old block. This is clearly more
- right, but may not be totally right.
-
-/usr1/lisp/compiler/life.lisp, 27-Jan-89 17:09:01, Edit by Ram.
- Make Clear-Lifetime-Info always set the TN-Local slot for local TNs, using
- some other referencing block when there there are global conflicts.
-
-/usr1/lisp/compiler/pack.lisp, 10-Jan-89 15:27:21, Edit by Ram.
- Fixed Select-Location not to infinite loop when Finite-Sb-Last-Offset is 0.
-
-/usr0/ram/compiler/ir2tran.lisp, 30-Jun-88 13:57:12, Edit by Ram.
- Fixed IR2-Convert-Bind to ignore vars with no Refs.
-
-/usr0/ram/compiler/gtn.lisp, 30-Jun-88 13:54:51, Edit by Ram.
- Fixed Assign-Lambda-Var-TNs and Assign-IR2-Environment to ignore vars with no
- Refs.
-
-/usr0/ram/compiler/life.lisp, 02-Mar-88 17:06:18, Edit by Ram.
- Aaaargh! When clearing the Packed-TN-Local in Clear-Lifetime-Info, iterate
- up to Local-TN-Limit, not SC-Number-Limit.
-
-/usr0/ram/compiler/ir1util.lisp, 20-Feb-88 22:00:37, Edit by Ram.
- Made Substitute-Leaf and Change-Ref-Leaf do an Up-Tick-Node on the changed
- Refs.
-
-/usr0/ram/compiler/ltn.lisp, 20-Feb-88 16:25:11, Edit by Ram.
- Changed Find-Template to deal with output assertions correctly once again.
- Instead of assuming that the Node-Derived-Type is true, we look at the
- Type-Check flag in the continuation. If the continuation type is being
- checked, then we only use a template when it doesn't have an output
- restriction.
-
- In Find-Template-For-Policy, use safe templates as a last resort, even when
- policy is :Small or :Fast. A safe template is surely faster and smaller than
- a full call.
-
- In Ltn-Analyze, clear the Type-Check flags on all continuations when our
- policy is unsafe.
-
-/usr0/ram/compiler/debug.lisp, 18-Feb-88 17:17:19, Edit by Ram.
- And fixed Check-VOP-Refs to ensure that the temporary write comes before
- (which is after in the reversed VOP-Refs) the read, rather than vice-versa...
-
-/usr0/ram/compiler/vmdef.lisp, 18-Feb-88 17:10:35, Edit by Ram.
- Fixed Compute-Reference-Order to begin temporary lifetimes with the write
- rather than the read.
-
-/usr0/ram/compiler/gtn.lisp, 18-Feb-88 16:06:41, Edit by Ram.
- Have to fetch the Equated-Returns inside the loop in Find-Equivalence
- classes, since Equate-Return-Info will change the returns for the current
- environment. This used to work, since Equate-Return-Info used to be
- destructive.
-
-/usr0/ram/compiler/ir1opt.lisp, 14-Feb-88 14:30:47, Edit by Ram.
- Oops. Fixed the test in Propagate-From-Calls for being a call to the
- function concerned. Now that this optimization can actually happen, who
- knows?
-
-/usr0/ram/compiler/ltn.lisp, 11-Feb-88 18:01:38, Edit by Ram.
- Made Annotate-1-Value-Continuation delay global function references to
- functions that aren't notinline. Made LTN-Default-Call,
- LTN-Analyze-Full-Call and LTN-Analyze-MV-Call annotate their function
- continuation.
-
-/usr0/ram/compiler/flowsimp.lisp, 11-Feb-88 16:44:48, Edit by Ram.
- Now that returns aren't being picked off in flow-graph-simplify, we have to
- fix join-block-if-possible not to attempt to join the XEP return to the
- component tail...
-
-/usr0/ram/compiler/ir1util.lisp, 11-Feb-88 16:14:52, Edit by Ram.
- Made Delete-Ref call Maybe-Let-Convert when deleting the second-to-last
- reference to a lambda.
-
-/usr0/ram/compiler/flowsimp.lisp, 10-Feb-88 16:46:56, Edit by Ram.
-/usr0/ram/compiler/locall.lisp, 11-Feb-88 13:24:04, Edit by Ram.
- Moved let-conversion to locall from flowsimp, and made it be triggered by
- Maybe-Let-Convert. This is called on each new lambda after local call
- analysis, and can also be called whenever there is some reason to believe
- that a lambda might be eligible for let-conversion. We clear any :Optional
- function kinds since the entry functions can be treated as normal functions
- after local call analysis.
-
- This change was made to solve problems with lambdas not being let-converted
- when the return node was deleted due to being unreachable. This is important
- now that being a let has major environment significance. Originally let
- conversion was regarded as a way to delete a return, and thus made some kind
- of sense to have it be a flow graph optimization. Now that a let can have
- only one reference, we can trigger let conversion by noticing when references
- are deleted.
-
-/usr0/ram/compiler/node.lisp, 11-Feb-88 13:12:38, Edit by Ram.
-/usr0/ram/compiler/ir1tran.lisp, 11-Feb-88 13:12:47, Edit by Ram.
- Added :Optional Functional-Kind that is initially specified for the
- entry-point lambdas in optional-dispatches so that we know there may be
- references to the function through the optional dispatch.
-
-/usr0/ram/compiler/ir1util.lisp, 11-Feb-88 12:23:11, Edit by Ram.
- Changed assertion in Control-Equate to allow an existing value-equate to the
- same continuation.
-
-/usr0/ram/compiler/ir1tran.lisp, 25-Jan-88 19:27:57, Edit by Ram.
- Changed the default policy to be all 1's, and modified calls to Policy in all
- files so that they do "the right thing" when compared qualities are equal.
- The default action should be chosen so as to minimize mystification and
- annoyance to non-wizards. In general, the default should be chosen according
- to the ordering: safety > brevity > speed > space > cspeed. Checks for 0 and
- 3 meaning "totally unimportant" and "ultimately important" are also o.k.
-
-/usr0/ram/compiler/gtn.lisp, 24-Jan-88 11:20:37, Edit by Ram.
- Changed Equate-Return-Info so that it effectively ignores the Count and Types
- in :Unused continuations, yet still combines the Entry-P and Tail-P values.
-
-/usr0/ram/compiler/locall.lisp, 23-Jan-88 21:41:28, Edit by Ram.
- Make Convert-XEP-Call set the Return-Point too...
-
-/usr0/ram/compiler/ir1util.lisp, 22-Jan-88 16:17:38, Edit by Ram.
- Made Immediately-Used-P special-case local calls by using
- Basic-Combination-Return-Point.
-
-/usr0/ram/compiler/locall.lisp, 22-Jan-88 16:13:32, Edit by Ram.
-/usr0/ram/compiler/node.lisp, 22-Jan-88 16:12:03, Edit by Ram.
- Added a Basic-Combination-Return-Point slot so that local calls can rebember
- where they are supposed to return to.
-
-/usr0/ram/compiler/gtn.lisp, 22-Jan-88 10:03:37, Edit by Ram.
- Fixed Assign-Lambda-Vars to set the TN-Leaf.
-
-/usr0/ram/compiler/flowsimp.lisp, 22-Jan-88 10:22:53, Edit by Ram.
- Made Convert-To-Let do an Intersect-Continuation-Asserted-Type on the actual
- continuation with the dummy's assertion when the let call is the only use of
- the actual continuation.
-
-/usr0/ram/compiler/ir1tran.lisp, 22-Jan-88 09:42:49, Edit by Ram.
- Tack NIL on the end of the forms that we convert so that no top-level form is
- in a for-value context.
-
-/usr0/ram/compiler/ir1opt.lisp, 21-Jan-88 17:50:52, Edit by Ram.
- Made Check-Types intersect the new type with the Node-Derived-Type for all
- the continuation uses so that IR1Opt doesn't go and change the type right
- back.
-
-/usr0/ram/compiler/main.lisp, 21-Jan-88 17:31:57, Edit by Ram.
-/usr0/ram/compiler/ir1opt.lisp, 21-Jan-88 17:30:31, Edit by Ram.
- Type checking was being done wrong. We need to check types even if IR1Opt
- doesn't do anything, and we need to give IR1Opt a second chance if type check
- does anything. Made Check-Types return whether it did anything.
-
-/usr0/ram/compiler/ir1tran.lisp, 21-Jan-88 17:14:13, Edit by Ram.
- Fixed IR1 translator for THE to use Find-Uses to find whether the
- continuation is used, rather than incorrectly doing it itself (using an old
- interpretation of Continuation-Use).
-
-/usr0/ram/compiler/ir1tran.lisp, 16-Nov-87 15:58:39, Edit by Ram.
- Made %proclaim (and hence proclaim) return (undefined-value) rather than
- arbitrary randomness.
-
-/usr1/ram/compiler/flowsimp.lisp, 23-Aug-87 22:00:39, Edit by Ram
- Changed Flow-Graph-Simplify not to merge blocks unless the cleanups for the
- two blocks are identical. The is a sub-optimal (but conservative) way to
- ensure that cleanups are only done on block boundaries.
-
-/usr1/ram/compiler/ir1opt.lisp, 23-Aug-87 21:26:53, Edit by Ram
- Just look for the :Let functional kind in Top-Down-Optimize, instead of
- figuring out from first principles.
-
-/usr1/ram/compiler/ir1util.lisp, 20-Aug-87 22:12:45, Edit by Ram
- The only worthwhile use for the functional nesting was in Delete-Ref, where
- it would walk all the inferiors, marking them as deleted as well. But I
- think that just marking the outer function as deleted will eventually cause
- all the inner functions to be deleted. As it stands, Delete-Ref is a lot
- simpler. If there are problems with deleted-but-somehow-undeletable
- references holding onto functions, we may want to look at all references in
- Delete-Ref and see if some enclosing function is deleted.
-
-/usr1/ram/compiler/ir1tran.lisp, 22-Aug-87 15:38:50, Edit by Ram
- Changed stuff to use the new Functional and Cleanup structures. Mostly
- involves flushing stuff.
-
-/usr1/ram/compiler/locall.lisp, 21-Aug-87 14:24:32, Edit by Ram
-/usr1/ram/compiler/ir1opt.lisp, 20-Aug-87 22:05:33, Edit by Ram
- Changed Local-Call-Analyze to just take a component and analyze the
- New-Functions. This simplifies (and optimizes) the late uses in IR1
- optimize. Also changed convert-call-if-possible to know to try to convert
- the call to the real function rather than the XEP.
-
-/usr1/ram/compiler/node.lisp, 23-Aug-87 20:12:58, Edit by Ram
- Flushed bogus hierarchical information in the Functional, Environment and
- Cleanup structures. Now that I've taken a stab at implementing the IR2
- conversion passes, it is obvious that this information is useless and
- difficult to maintain.
-
- We do need a way to iterate over all the functions in a component, but doing
- a tree walk is bogus. Instead, we have a list of all the lambdas in each
- component. When functions are initially converted, they are placed on the
- component New-Functions list. Local call analysis moves analyzed lambdas
- into the Lambdas list. We don't bother to remove lambdas from this list when
- they are deleted.
-
- A change needed in the cleanup stuff to make it work is to have continuations
- with no immediately enclosing cleanup point have their lambda as the cleanup.
- Then when we convert the lambda to a let, we set the Cleanup slot in the
- lambda to any cleanup enclosing the call so that we realize stuff needs to be
- cleaned up.
-
-/usr1/ram/compiler/flowsimp.lisp, 23-Aug-87 20:49:36, Edit by Ram
- Changed Find-Initial-DFO to build the Lambdas lists for the components. At
- the same time, we also use XEP references to (correctly) merge components
- with potential environment inter-dependencies, rather than attempting to use
- the lambda nesting. Changed Join-Components to combine the Lambdas and
- New-Functions lists.
-
- Changed Delete-Return to convert to a let only when there is a single call,
- and also to mark the lambda with the :Let functional kind. This makes
- let-calls exactly correspond to the functions that IR1 optimize can
- substitute for. This also solves problems with cleanups, since it is
- trivially true that all calls are in the same dynamic environment.
-
-/usr1/ram/compiler/ir1tran.lisp, 18-Aug-87 15:25:18, Edit by Ram
- In IR1-Convert, if the function is not a symbol, but doesn't look even
- vaguely like a lambda, then complain about an illegal function call,
- rather than having IR1-Convert-Lambda say it is an illegal lambda.
-
-/usr1/ram/compiler/numacs.lisp, 16-Aug-87 13:48:11, Edit by Ram
- Added a Defvar that doesn't use OR (and create a LET and freak out IR1
- conversion.)
-
-/usr1/ram/compiler/ir1util.lisp, 16-Aug-87 18:14:10, Edit by Ram
-/usr1/ram/compiler/debug.lisp, 16-Aug-87 15:19:47, Edit by Ram
-/usr1/ram/compiler/flowsimp.lisp, 16-Aug-87 15:19:13, Edit by Ram
-/usr1/ram/compiler/ir1opt.lisp, 16-Aug-87 15:18:47, Edit by Ram
-/usr1/ram/compiler/node.lisp, 16-Aug-87 19:58:30, Edit by Ram
-/usr1/ram/compiler/ir1tran.lisp, 16-Aug-87 20:29:36, Edit by Ram
-/usr1/ram/compiler/locall.lisp, 16-Aug-87 20:22:28, Edit by Ram
- Changed stuff for new explicit external entry point concept. The external
- entry point is now a real function containing local calls to the entry
- points. This represents reality better, making lots of things previously
- special-cased automatically happen in our favor. We really needed this for
- environment analysis and IR2 conversion to work.
-
- Functional-Entry-Kind is replaced by Functional-Kind and
- Functional-Entry-Function. The Kind is kind of like the old Entry-Kind. The
- Entry-Function is the XEP (or a back-pointer in an XEP). Uses of Entry-Kind
- were replaced with Kind or Entry-Function or flushed, as appropriate.
-
- Note-Entry-Point has been flushed. %Defun doesn't need to do anything to
- cause the function to be an entry point. The top-level lambda is no longer
- a real entry-point: instead we just directly link it to the component head
- and tail.
-
- The more-arg XEP creates a more-arg cleanup. The local-call case still needs
- to be fixed.
-
-/usr1/ram/compiler/fndb.lisp, 16-Aug-87 20:37:28, Edit by Ram
- Added some definitions for %mumble magic compiler functions.
-
-/usr1/ram/compiler/ir1tran.lisp, 16-Aug-87 20:29:36, Edit by Ram
- Changed uses of the two-arg Arg for more-arg hackery into %More-Arg, since
- this isn't the user-level functionality we will ultimately want for
- more-args.
-
-/usr1/ram/compiler/main.lisp, 16-Aug-87 18:35:29, Edit by Ram
- Changed Compile-Component not to do any IR1 passes on the top-level component
- except for Type-Check. These optimizations are unlikely to have any useful
- effect on top-level code, and they might want to inject illegal stuff into
- the top-level component.
-
-/usr1/ram/compiler/macros.lisp, 16-Aug-87 18:26:19, Edit by Ram
- Changed With-IR1-Environment to bind *Converting-Top-Level*. Currently you'd
- better not use this on top-level code unless you are sure you won't emit
- anything that can't go in top-level, since IR1-Convert-Lambda will bogue out
- because there is no *Initial-Component* to switch to.
-
-/usr1/ram/compiler/macros.lisp, 13-Aug-87 20:16:47, Edit by Ram
-/usr1/ram/compiler/node.lisp, 13-Aug-87 22:24:30, Edit by Ram
-/usr1/ram/compiler/main.lisp, 13-Aug-87 22:35:11, Edit by Ram
-/usr1/ram/compiler/globaldb.lisp, 13-Aug-87 20:21:12, Edit by Ram
-/usr1/ram/compiler/locall.lisp, 13-Aug-87 22:57:54, Edit by Ram
-/usr1/ram/compiler/flowsimp.lisp, 13-Aug-87 22:52:01, Edit by Ram
-/usr1/ram/compiler/ir1opt.lisp, 13-Aug-87 22:59:11, Edit by Ram
-/usr1/ram/compiler/ir1tran.lisp, 13-Aug-87 23:06:03, Edit by Ram
- Changed stuff to support having separate top-level and initial components.
- Whenver we see a lambda or anything hairy, we switch over to the initial
- component. Hairyness of special-forms is determined by the :Top-Level-P
- keyword to Def-IR1-Translator.
-
- We make appropriate special forms hairy to guarantee that the top-level
- component doesn't contain any stuff that would make life hard for IR2
- conversion. In particular, it contains no variables, no functions other than
- the top-level lambda and no non-local exit targets.
-
- Local call analysis refuses to convert calls appearing in the top-level
- component. In other files, stuff related to Functional-Top-Level-P was
- ripped out.
-
-/usr1/ram/compiler/ir1opt.lisp, 13-Aug-87 17:58:37, Edit by Ram
- Changed propagate-from-calls to punt if any use is a mv-combination. Changed
- Top-Down-Optimize not to Substitute-Let-Vars unless the only use is not a
- MV-Combination. Un-commented-out the substituion of functionals for non-set
- let vars.
-
-/usr1/ram/compiler/locall.lisp, 13-Aug-87 18:31:24, Edit by Ram
- Frobbed Find-Top-Level-Code to recognize DEFUNs with no calls as
- non-top-level. The entire concept is probably wrong, though.
-
-/usr1/ram/compiler/ir1tran.lisp, 13-Aug-87 19:07:22, Edit by Ram
- Changed IR1-Convert-OK-Combination to look at the leaf-type of the leaf
- rather than the derived type for the function continuation. This allows
- known calls to be recognized again (I'm sure that worked at one point.
- Perhaps before they were becoming known later on somehow?). This is all not
- really right anyway, given the broken interpretation of function types
- currently used in IR1.
-
-/usr/ram/compiler/ir1tran.slisp, 12-Jan-87 11:48:32, Edit by Ram
- Fixed Find-Source-Paths to use a DO with ATOM test rather than a dolist, so
- that it won't blow up on dotted lists.
-
-/usr/ram/compiler/ir1util.slisp, 12-Jan-87 10:28:07, Edit by Ram
- Fixed Delete-Block to null out the DEST for the continuations belonging to
- each node as we delete the node, so we don't try to deliver a result to a
- node that doesn't exist anymore.