Chris Hanson [Wed, 27 May 1987 14:50:43 +0000 (14:50 +0000)]
Interrupts that are out of range are now signalled through the last
slot in the interrupt vector.
Chris Hanson [Tue, 26 May 1987 18:59:59 +0000 (18:59 +0000)]
Split file into two pieces.
Chris Hanson [Tue, 26 May 1987 14:47:22 +0000 (14:47 +0000)]
Record pop in these rules.
Guillermo J. Rozas [Tue, 26 May 1987 13:29:58 +0000 (13:29 +0000)]
Patch because primitive-datum is broken.
Chris Hanson [Tue, 26 May 1987 13:24:56 +0000 (13:24 +0000)]
Add error check for positive arguments to signed integer coercion.
Guillermo J. Rozas [Sat, 23 May 1987 14:31:17 +0000 (14:31 +0000)]
Add PRIMITIVE_ABORT.
Guillermo J. Rozas [Sat, 23 May 1987 09:33:12 +0000 (09:33 +0000)]
Add PRIMITIVE_RETURN
Chris Hanson [Fri, 22 May 1987 00:12:22 +0000 (00:12 +0000)]
Add special lookup for compiler to do side-effect for value. Also
define rules to handle more cases for eq-test.
Chris Hanson [Fri, 22 May 1987 00:11:43 +0000 (00:11 +0000)]
Define more operations on SCode comments.
Chris Hanson [Fri, 22 May 1987 00:11:14 +0000 (00:11 +0000)]
Add special lookup for compiler to do side-effect for value.
Chris Hanson [Thu, 21 May 1987 18:08:32 +0000 (18:08 +0000)]
Add special lookup for compiler to do side-effect for value.
Chris Hanson [Thu, 21 May 1987 16:41:30 +0000 (16:41 +0000)]
Undo FLUID-LET changes from last version.
Chris Hanson [Thu, 21 May 1987 15:06:54 +0000 (15:06 +0000)]
Fix bug in expansion of interpreter-call:enclose. When the number of
things being enclosed is sufficiently large, the generator was forcing
the allocation of D0 for use as a loop counter. This had the
unfortunate side effect that if D0 contained some unboxed object then
that object would be flushed to memory.
Chris Hanson [Thu, 21 May 1987 15:05:03 +0000 (15:05 +0000)]
Delete the fg-entry of each procedure and quotation as it is
rtl-generated. Remove the time-ordering of the rtl generation as the
blecherous side-effect that required it has been removed as well.
Chris Hanson [Thu, 21 May 1987 15:00:00 +0000 (15:00 +0000)]
Temporary registers no longer have a type, and need not be handled
specially for that. Implement handling for value-register type.
Chris Hanson [Thu, 21 May 1987 14:59:26 +0000 (14:59 +0000)]
Temporary registers no longer have a type, and need not be handled
specially for that.
Chris Hanson [Thu, 21 May 1987 14:58:20 +0000 (14:58 +0000)]
Install special handling for close-coded combinations whose target is
a temporary. Such combinations must be followed by code to assign the
value register into the temporary. Also put in error check to
guarantee that this never happens in reduction position.
Chris Hanson [Thu, 21 May 1987 14:55:09 +0000 (14:55 +0000)]
Rewrite the expansion for the RTL construction procedures so that they
in-line code correctly. Previously they were lexprs, which do not
integrate very well.
Chris Hanson [Tue, 19 May 1987 18:18:03 +0000 (18:18 +0000)]
Move `mvalue' to the `base' directory. The `source' directory no
longer exists.
Chris Hanson [Tue, 19 May 1987 18:06:04 +0000 (18:06 +0000)]
Change `add-pseudo-register-alias' so that it accepts an argument
`saved-into-home?'. This is used to initialize the map-entry slot of
the same name if the register has no other aliases.
Chris Hanson [Tue, 19 May 1987 18:04:47 +0000 (18:04 +0000)]
Fix `move-to-alias-register!' so that when an alias is reused for a
register that has no other aliases, then that alias is marked as
needing to be saved into its home. Improve
`reuse-pseudo-register-alias!' so that it doesn't generate a move
instruction from a register to itself. Fix a bug which prevented the
clear-map instructions from being inserted when the next node had
already been generated.
Chris Hanson [Tue, 19 May 1987 13:38:56 +0000 (13:38 +0000)]
Change shallow FLUID-LET not to use side-effect for value. This
improves the performance of compiled code. Also change one-armed IF
and COND without ELSE to use new constant marker for the unused
branch.
Chris Hanson [Tue, 19 May 1987 13:16:48 +0000 (13:16 +0000)]
Stupidity.
Chris Hanson [Tue, 19 May 1987 12:51:34 +0000 (12:51 +0000)]
Define `undefined-conditional-branch' constant which is used to build
two-armed IF statements and COND with no ELSE clause.
Chris Hanson [Mon, 18 May 1987 23:29:03 +0000 (23:29 +0000)]
`rcseep' no longer has any external definitions.
Chris Hanson [Mon, 18 May 1987 23:26:09 +0000 (23:26 +0000)]
Delete definitions of most predicates, since they are used in one
place only. They have been in-line coded in the appropriate places.
Chris Hanson [Mon, 18 May 1987 23:24:33 +0000 (23:24 +0000)]
Fix the memory-invalidation code for assignments to memory.
Assignments to non-varying addresses were not invalidating the
destination of the assignment! This was just screwed up.
Chris Hanson [Mon, 18 May 1987 23:20:26 +0000 (23:20 +0000)]
Not so fast!
Chris Hanson [Mon, 18 May 1987 22:47:25 +0000 (22:47 +0000)]
Delete `rcseep' from the files list.
Chris Hanson [Mon, 18 May 1987 17:57:18 +0000 (17:57 +0000)]
Generalize `register-has-alias?' to handle machine registers also.
Chris Hanson [Mon, 18 May 1987 17:50:48 +0000 (17:50 +0000)]
Guarantee that the `number-pushed' entry on lexpr invocations contains
the number of pushed operands +1 if the operator is pushed.
Chris Hanson [Mon, 18 May 1987 16:23:57 +0000 (16:23 +0000)]
Extend tests of registers to handle machine registers as well.
Chris Hanson [Mon, 18 May 1987 16:15:19 +0000 (16:15 +0000)]
Forgot to splice setup code into expansion for access.
Chris Hanson [Sun, 17 May 1987 19:19:03 +0000 (19:19 +0000)]
Due to changes in the top level of the compiler, determining the
number of parameters of a procedure is done differently.
Chris Hanson [Sat, 16 May 1987 19:48:05 +0000 (19:48 +0000)]
For known calls to procedures that are not externally visible, do not
pass arguments that correspond to parameters that are integrated in
the body of the procedure.
Chris Hanson [Sat, 16 May 1987 18:24:34 +0000 (18:24 +0000)]
Typo.
Don Allen [Sat, 16 May 1987 09:00:05 +0000 (09:00 +0000)]
Fix error in SETUP-LEXPR rule -- first arg to procedure-header was 'label';
should have been 'procedure'
Chris Hanson [Fri, 15 May 1987 19:51:47 +0000 (19:51 +0000)]
Change all RTL constructs that contain pointers to compiler internal
data structures so that they only point to symbolic structures. This
means that all occurrences of continuation and procedure objects have
been replaced by the corresponding label. There is now a fairly fast
map from the labels to their objects.
This was done to make it possible to change the debugging file output
routines so that they fasdump rather than writing their output.
Chris Hanson [Fri, 15 May 1987 19:46:15 +0000 (19:46 +0000)]
Case where value-register is assigned during a subproblem is actually
interesting. This needs to be better handled sometime.
Chris Hanson [Fri, 15 May 1987 18:20:45 +0000 (18:20 +0000)]
Implement new primitive `string-hash-mod' to enable efficient
string/symbol hashed tables to be implemented in Scheme.
Chris Hanson [Thu, 14 May 1987 13:51:20 +0000 (13:51 +0000)]
Implement new primitive argument checking interface and argument error
signalling procedures. Start using convention that macro names are
all upper case.
Chris Hanson [Thu, 14 May 1987 10:56:30 +0000 (10:56 +0000)]
Fix arguments to `reference-temporary-register!'.
Chris Hanson [Wed, 13 May 1987 11:00:33 +0000 (11:00 +0000)]
Fix broken eq-test generators.
Chris Hanson [Wed, 13 May 1987 10:59:51 +0000 (10:59 +0000)]
Add operation to test whether a register has an alias.
Chris Hanson [Mon, 11 May 1987 17:52:27 +0000 (17:52 +0000)]
Add hook to symbol interning code so users can keep track of the
symbols in the obarray. This is intended to allow maintaining data
structures for special purposes, e.g. completion of symbol names.
Chris Hanson [Mon, 11 May 1987 17:51:51 +0000 (17:51 +0000)]
Install new versions of Edwin syntax table primitives.
Add hook to symbol interning code so users can keep track of the
symbols in the obarray. This is intended to allow maintaining data
structures for special purposes, e.g. completion of symbol names.
Chris Hanson [Mon, 11 May 1987 17:47:53 +0000 (17:47 +0000)]
Initial revision
Chris Hanson [Sat, 9 May 1987 23:23:51 +0000 (23:23 +0000)]
Implement new method for mapping pathnames to values. Reimplement
`sfu?' flag to match documentation for existing optimizer.
Chris Hanson [Sat, 9 May 1987 23:22:58 +0000 (23:22 +0000)]
Implement new method for mapping pathnames to values.
Chris Hanson [Sat, 9 May 1987 23:22:21 +0000 (23:22 +0000)]
Initial revision
Chris Hanson [Sat, 9 May 1987 20:30:12 +0000 (20:30 +0000)]
*** empty log message ***
Chris Hanson [Sat, 9 May 1987 20:04:56 +0000 (20:04 +0000)]
Add fixnum arithmetic for use by compiled code.
Chris Hanson [Sat, 9 May 1987 18:27:24 +0000 (18:27 +0000)]
Change primitives to signal errors when arguments are of wrong type.
Change predicates to return normal boolean values.
Chris Hanson [Sat, 9 May 1987 06:27:14 +0000 (06:27 +0000)]
Split `generate/operand' out of `generate/subproblem' to facilitate
rewrite of primitive combination open-coding routines.
Chris Hanson [Sat, 9 May 1987 06:24:34 +0000 (06:24 +0000)]
Restructure so that operator/operand code is generated before the
combination and passed through. This is because the primitive open
coders will examine the already-generated operands to determine things
about them.
Chris Hanson [Sat, 9 May 1987 06:23:12 +0000 (06:23 +0000)]
Add new rules for `eq-test', and change rule that pops into register
so that it uses machine registers.
Chris Hanson [Sat, 9 May 1987 05:25:54 +0000 (05:25 +0000)]
Try a different fix for bignum_to_bit_string, as the other one seems
to be screwing things up.
Chris Hanson [Sat, 9 May 1987 04:51:32 +0000 (04:51 +0000)]
Fix two bugs: (1) `unsigned-integer->bit-string' was not clearing out
those parts of the result which were not filled in by copying from a
bignum. (2) `bit-substring-find-next-set-bit' was not correctly
advancing the scan pointer for the last word of a multi-word string.
Chris Hanson [Sat, 9 May 1987 01:07:56 +0000 (01:07 +0000)]
Add predicates for examining a combination's compilation type.
Chris Hanson [Sat, 9 May 1987 00:51:39 +0000 (00:51 +0000)]
Exclude error-procedure combinations from the error generated by
encountering the-environment expressions. Delete `package/safe?'.
Chris Hanson [Sat, 9 May 1987 00:50:09 +0000 (00:50 +0000)]
Exclude error-procedure combinations from the error generated by
encountering the-environment expressions.
Chris Hanson [Fri, 8 May 1987 02:48:24 +0000 (02:48 +0000)]
Change combination optimizations to eliminate bug caused by deleting
unreferenced parameters. Really need to do side effect analysis to
perform this optimization. Meanwhile, just deleting integrated
parameters should be sufficient.
Also flushed use of environment constructing load-system since
auxiliary variable compilation is now fixed.
Chris Hanson [Fri, 8 May 1987 02:34:16 +0000 (02:34 +0000)]
Add new operator to extract the integrated variables from a set of
declarations.
Chris Hanson [Fri, 8 May 1987 02:33:21 +0000 (02:33 +0000)]
Change code that optimizes let-like combinations so that it only
removes parameters that are declared integrable, rather than
unreferenced parameters. This is a makeshift arrangement until we can
perform side effect analysis on the operands to determine which ones
are really needed.
Chris Hanson [Thu, 7 May 1987 04:40:16 +0000 (04:40 +0000)]
Add code to keep track of items pushed and popped on the stack, to
produce the offset between the frame-pointer and the stack-pointer
when it is needed. This is used to convert frame-pointer references
into stack-pointer references.
Chris Hanson [Thu, 7 May 1987 04:38:32 +0000 (04:38 +0000)]
Guarantee that nodes are generated in the control flow ordering. This
is because a `combination-value' is converted into a `value-temporary'
by a side-effect when the combination is generated. So the
combination must be generated before any references to its value are.
Chris Hanson [Thu, 7 May 1987 04:36:15 +0000 (04:36 +0000)]
The receiver-offset for message senders was including the pushed
operands of a call. Since we are now using a frame pointer, it need
only include the block frame size. The pushed operands will be taken
care of by the LAP generator.
Chris Hanson [Thu, 7 May 1987 00:26:03 +0000 (00:26 +0000)]
Rewrite of RTL generator to new structure, now using frame pointer
instead of stack pointer for frame references.
Chris Hanson [Thu, 7 May 1987 00:24:20 +0000 (00:24 +0000)]
Add frame-pointer register.
Chris Hanson [Thu, 7 May 1987 00:23:08 +0000 (00:23 +0000)]
Initial revision
Chris Hanson [Thu, 7 May 1987 00:22:05 +0000 (00:22 +0000)]
Rewrite of RTL generator. Flush `next-generator' mechanism, use
multiple value return and explicit gluing of CFGs. Flush offset
argument, use frame-pointer instead; offset will be computed at LAP
generation time.
Chris Hanson [Thu, 7 May 1987 00:18:15 +0000 (00:18 +0000)]
Implement changes required by conversion of RTL generator to use of
frame pointer. Flush all special stack modeling.
Chris Hanson [Thu, 7 May 1987 00:12:20 +0000 (00:12 +0000)]
Implement `boolean=?'.
Chris Hanson [Thu, 7 May 1987 00:11:33 +0000 (00:11 +0000)]
Add frame-pointer register.
Chris Hanson [Thu, 7 May 1987 00:10:45 +0000 (00:10 +0000)]
*** empty log message ***
Chris Hanson [Thu, 7 May 1987 00:10:04 +0000 (00:10 +0000)]
Add `frame-pointer-offset' slot to all rnodes, for use by
lap-generator so it can convert frame pointer references into
stack-pointer references.
Chris Hanson [Thu, 7 May 1987 00:09:08 +0000 (00:09 +0000)]
Split off application of result from main body of matcher to
facilitate timing measurements.
Chris Hanson [Thu, 7 May 1987 00:06:42 +0000 (00:06 +0000)]
Change dependencies to account for reorganization of RTL generator
into several files.
Chris Hanson [Thu, 7 May 1987 00:05:52 +0000 (00:05 +0000)]
Delete `continuation-delta'. Add `continuation-frame-pointer-offset'
for use by new frame-pointer code.
Chris Hanson [Thu, 7 May 1987 00:04:58 +0000 (00:04 +0000)]
Implement CFG combinators that are generic in the latter argument.
Chris Hanson [Wed, 6 May 1987 04:54:08 +0000 (04:54 +0000)]
If a lambda expression was traced twice, it was being added to the
advice population twice, despite the fact that it was already there.
However, only one copy of the trace advice would be installed. Then,
do untrace would cause a failure because the second time that the
lambda expression was looked at it would contain no advice of that type.
Chris Hanson [Mon, 4 May 1987 23:52:57 +0000 (23:52 +0000)]
Implement special handling for variables of the form
(ACCESS <name> #F)
These are integrated regardless of the declarations given for the
program.
Also fix bug in `integrate/reference-operator' which caused the
optimizer to hang in a loop.
Chris Hanson [Mon, 4 May 1987 23:50:20 +0000 (23:50 +0000)]
Implement special handling for variables of the form
(ACCESS <name> #F)
These are integrated regardless of the declarations given for the
program.
Chris Hanson [Sun, 3 May 1987 20:39:41 +0000 (20:39 +0000)]
Split off expression stuff.
Chris Hanson [Sun, 3 May 1987 20:39:08 +0000 (20:39 +0000)]
Initial revision
Chris Hanson [Thu, 30 Apr 1987 22:56:49 +0000 (22:56 +0000)]
In `Keyboard_Input_Procedure', the test for interrupts just before
calling `getchar' was only looking for `INT_Character'. Expand this
to include `INT_Timer' as well, since that was causing a problem for
Mitch Resnick. Why is this restricting which interrupts it looks at?
A priori, I would think it should look at all interrupts.
Chris Hanson [Wed, 29 Apr 1987 21:53:04 +0000 (21:53 +0000)]
Split off handling of primitive combinations to another file.
Chris Hanson [Wed, 29 Apr 1987 20:12:20 +0000 (20:12 +0000)]
Change profile recording hook to use 32 bit C long arithmetic rather
than 24 bit fixnum arithmetic.
Chris Hanson [Wed, 29 Apr 1987 19:46:39 +0000 (19:46 +0000)]
Change profile recording hook to use 32 bit C long arithmetic rather
than 24 bit fixnum arithmetic.
Chris Hanson [Wed, 29 Apr 1987 15:50:43 +0000 (15:50 +0000)]
Define hook for recording primitive profiling information.
Chris Hanson [Wed, 29 Apr 1987 15:41:59 +0000 (15:41 +0000)]
Define variables to contain maximum primitive numbers.
Chris Hanson [Wed, 29 Apr 1987 15:39:14 +0000 (15:39 +0000)]
Cause generated fixed objects vector to have some extra slots for
expansion and debugging purposes.
Chris Hanson [Wed, 29 Apr 1987 13:51:11 +0000 (13:51 +0000)]
Add hook for primitive procedure profiling.
Chris Hanson [Wed, 29 Apr 1987 13:19:32 +0000 (13:19 +0000)]
Add PRIMITIVE-PROFILING-TABLE slot to fixed objects vector.
Chris Hanson [Tue, 28 Apr 1987 16:38:00 +0000 (16:38 +0000)]
Add slot for table to contain profiling information for primitives.
Chris Hanson [Tue, 28 Apr 1987 16:29:33 +0000 (16:29 +0000)]
Initialize `ENABLE_PRIMITIVE_PROFILING' flag when debugging features
are selected.
Chris Hanson [Mon, 27 Apr 1987 21:45:33 +0000 (21:45 +0000)]
Fix bug in copying of declarations, where variable was passed to
`block/lookup-name' rather than the variable's name.
Chris Hanson [Mon, 27 Apr 1987 20:26:11 +0000 (20:26 +0000)]
Turn on integration dependencies that were commented out here.
Chris Hanson [Mon, 27 Apr 1987 20:25:33 +0000 (20:25 +0000)]
Add integration dependency between the bobcat machine instruction
definition files.
Chris Hanson [Mon, 27 Apr 1987 20:11:22 +0000 (20:11 +0000)]
Do not use the "load" package any longer. Defaultly load some
compiled files.