mit-scheme.git
37 years agoOptimize code being emitted for lookup-apply.
Chris Hanson [Tue, 2 Jun 1987 18:49:05 +0000 (18:49 +0000)]
Optimize code being emitted for lookup-apply.

37 years agoCombination should be added to vnode-combinations of the operator
Chris Hanson [Tue, 2 Jun 1987 18:44:05 +0000 (18:44 +0000)]
Combination should be added to vnode-combinations of the operator
vnode, if any.  Previously it was added to vnode-combinations of the
combination-value, completely incorrect.

37 years agoChange unsyntaxing of `error' and `bkpt', which now use absolute
Chris Hanson [Tue, 2 Jun 1987 13:24:17 +0000 (13:24 +0000)]
Change unsyntaxing of `error' and `bkpt', which now use absolute
references for the combination operator.

37 years agoChange `error' and `bkpt' macros to use absolute references for the
Chris Hanson [Tue, 2 Jun 1987 13:13:29 +0000 (13:13 +0000)]
Change `error' and `bkpt' macros to use absolute references for the
operator of the expansion.

37 years agoFix bugs in compiled code interface variable cache code.
Chris Hanson [Tue, 2 Jun 1987 12:35:17 +0000 (12:35 +0000)]
Fix bugs in compiled code interface variable cache code.

37 years agoFix bugs in rule for `invocation:cache-reference'.
Chris Hanson [Tue, 2 Jun 1987 11:35:46 +0000 (11:35 +0000)]
Fix bugs in rule for `invocation:cache-reference'.

37 years agoSimplify `extension' argument to invocation:cache-reference.
Chris Hanson [Tue, 2 Jun 1987 11:34:59 +0000 (11:34 +0000)]
Simplify `extension' argument to invocation:cache-reference.

37 years ago`history-transform' was returning '() at the end of a chain of
Chris Hanson [Tue, 2 Jun 1987 11:26:07 +0000 (11:26 +0000)]
`history-transform' was returning '() at the end of a chain of
subproblems, instead of the value of `the-empty-history'.  This caused
the debugger to signal an error when walking past the end of the
history.

37 years agoChange unsyntaxing of conditionals to handle case of (if (not x) y)
Chris Hanson [Tue, 2 Jun 1987 11:24:27 +0000 (11:24 +0000)]
Change unsyntaxing of conditionals to handle case of (if (not x) y)
correctly.

37 years agoTreat weak pairs correctly.
Guillermo J. Rozas [Tue, 2 Jun 1987 08:43:02 +0000 (08:43 +0000)]
Treat weak pairs correctly.

37 years agoAdd fasdump and purify to bchscheme.
Guillermo J. Rozas [Tue, 2 Jun 1987 00:17:51 +0000 (00:17 +0000)]
Add fasdump and purify to bchscheme.

37 years agoImplement rule for invocation:cache-reference.
Chris Hanson [Mon, 1 Jun 1987 21:06:08 +0000 (21:06 +0000)]
Implement rule for invocation:cache-reference.

37 years agoInstall better code for lookup-apply in the cached-variable case. Do
Chris Hanson [Mon, 1 Jun 1987 21:05:25 +0000 (21:05 +0000)]
Install better code for lookup-apply in the cached-variable case.  Do
in-line coding of reference-trap type test.

37 years agoCanonicalize the destination of a memory assignment statement.
Chris Hanson [Mon, 1 Jun 1987 20:31:53 +0000 (20:31 +0000)]
Canonicalize the destination of a memory assignment statement.
Rewrite the top level graph walker to mark nodes so that each node is
walked exactly once.  Optimize the walking algorithm to reduce copying
of the state to a minimum.

37 years agoMake copy of assignment to cell of cached variable assignment.
Chris Hanson [Mon, 1 Jun 1987 20:30:23 +0000 (20:30 +0000)]
Make copy of assignment to cell of cached variable assignment.
Otherwise the CSE cannot optimize because the assignment occurs at the
join of two control paths.

37 years agoMake copy of assignment to value of cached variable reference.
Chris Hanson [Mon, 1 Jun 1987 20:29:50 +0000 (20:29 +0000)]
Make copy of assignment to value of cached variable reference.
Otherwise the CSE cannot optimize because the assignment occurs at the
join of two control paths.

37 years agoCompiler variable cache initialization routines accept the offset of
Chris Hanson [Mon, 1 Jun 1987 16:59:52 +0000 (16:59 +0000)]
Compiler variable cache initialization routines accept the offset of
the constant slot as a memory offset (in objects) rather than as a
vector index.

37 years agoExtend `rtl:expression-cost' to know about `variable-cache'
Chris Hanson [Mon, 1 Jun 1987 16:10:21 +0000 (16:10 +0000)]
Extend `rtl:expression-cost' to know about `variable-cache'
expression.

37 years agoDefine rules for cached variable reference RTL forms.
Chris Hanson [Mon, 1 Jun 1987 16:09:21 +0000 (16:09 +0000)]
Define rules for cached variable reference RTL forms.

37 years agoChange interpreter-call:cache-reference to extract the type of the
Chris Hanson [Mon, 1 Jun 1987 16:08:23 +0000 (16:08 +0000)]
Change interpreter-call:cache-reference to extract the type of the
cache reference before testing it.  For cached variable compilations,
do not include ic environments in the closure, it is already in the
compiled code block.

37 years agoChange interpreter-call:cache-assignment to extract the type of the
Chris Hanson [Mon, 1 Jun 1987 16:06:11 +0000 (16:06 +0000)]
Change interpreter-call:cache-assignment to extract the type of the
cache reference before testing it.

37 years agoChange interpreter-call:cache-assignment/reference/unassigned? to
Chris Hanson [Mon, 1 Jun 1987 16:04:25 +0000 (16:04 +0000)]
Change interpreter-call:cache-assignment/reference/unassigned? to
CSE their "name" argument.

37 years agoChange interpreter-call:cache-assignment/reference/unassigned? to
Chris Hanson [Mon, 1 Jun 1987 16:03:38 +0000 (16:03 +0000)]
Change interpreter-call:cache-assignment/reference/unassigned? to
simplify their "name" argument during construction.

37 years agoTeach `expression->machine-register!' about (UNASSIGNED) expression.
Chris Hanson [Mon, 1 Jun 1987 11:21:41 +0000 (11:21 +0000)]
Teach `expression->machine-register!' about (UNASSIGNED) expression.

37 years agoFinish changing `rtl:make-constant' so that it notices SCode
Chris Hanson [Mon, 1 Jun 1987 11:20:22 +0000 (11:20 +0000)]
Finish changing `rtl:make-constant' so that it notices SCode
unassigned objects.

37 years agoAdd new RTL types for cached variable lookup mechanism.
Chris Hanson [Sun, 31 May 1987 23:00:30 +0000 (23:00 +0000)]
Add new RTL types for cached variable lookup mechanism.

37 years agoChange lookup-apply code to use variable cache when appropriate.
Chris Hanson [Sun, 31 May 1987 22:57:55 +0000 (22:57 +0000)]
Change lookup-apply code to use variable cache when appropriate.

37 years agoAdd new RTL types for cached variable lookup mechanism. Change
Chris Hanson [Sun, 31 May 1987 22:56:05 +0000 (22:56 +0000)]
Add new RTL types for cached variable lookup mechanism.  Change
constructor for constants to know about unassigned object.

37 years agoAdd several new compiled-code entry points with return addresses.
Chris Hanson [Sun, 31 May 1987 16:57:54 +0000 (16:57 +0000)]
Add several new compiled-code entry points with return addresses.

37 years agoAdd several new compiled-code entry points with return addresses.
Chris Hanson [Sun, 31 May 1987 16:37:51 +0000 (16:37 +0000)]
Add several new compiled-code entry points with return addresses.

37 years agoRedefine the Non_Object so that it is interned between bands.
Chris Hanson [Sun, 31 May 1987 16:32:57 +0000 (16:32 +0000)]
Redefine the Non_Object so that it is interned between bands.

37 years agoAdd parameter describing where IC frame parameters are located within
Chris Hanson [Sun, 31 May 1987 14:14:21 +0000 (14:14 +0000)]
Add parameter describing where IC frame parameters are located within
the frame.

37 years agoSun floating arithmetic bug fixed.
Guillermo J. Rozas [Sat, 30 May 1987 23:05:31 +0000 (23:05 +0000)]
Sun floating arithmetic bug fixed.

37 years agoSun floating arithmetic fixed.
Guillermo J. Rozas [Sat, 30 May 1987 23:04:34 +0000 (23:04 +0000)]
Sun floating arithmetic fixed.

37 years agoSplit entry points block into two sections to make it compatible with
Chris Hanson [Fri, 29 May 1987 21:23:28 +0000 (21:23 +0000)]
Split entry points block into two sections to make it compatible with
previous version.

37 years agoAdd stuff for variable cache entry points to interpreter.
Chris Hanson [Fri, 29 May 1987 17:57:40 +0000 (17:57 +0000)]
Add stuff for variable cache entry points to interpreter.

37 years agoChange compiler entry points to account for new microcode with
Chris Hanson [Fri, 29 May 1987 17:45:38 +0000 (17:45 +0000)]
Change compiler entry points to account for new microcode with
variable cacheing entries.  Change `indirect-reference!' to allow the
address part of an indirect register to reside in its home.

37 years agoUndefined procedure.
Guillermo J. Rozas [Fri, 29 May 1987 17:40:27 +0000 (17:40 +0000)]
Undefined procedure.

37 years agoAdd new return codes for compiled code interface variable cache.
Chris Hanson [Fri, 29 May 1987 17:06:51 +0000 (17:06 +0000)]
Add new return codes for compiled code interface variable cache.

37 years ago*** empty log message ***
Chris Hanson [Fri, 29 May 1987 16:51:05 +0000 (16:51 +0000)]
*** empty log message ***

37 years agoGive better error message for badly formed pattern in `named-lambda'.
Chris Hanson [Fri, 29 May 1987 16:49:07 +0000 (16:49 +0000)]
Give better error message for badly formed pattern in `named-lambda'.

37 years agoIn `unsyntax-shallow-FLUID-LET', turn lambda body into list of actions
Chris Hanson [Fri, 29 May 1987 13:31:58 +0000 (13:31 +0000)]
In `unsyntax-shallow-FLUID-LET', turn lambda body into list of actions
before mapping over it.

37 years agoChanges to make fast variable reference in compiled code work:
Guillermo J. Rozas [Fri, 29 May 1987 02:25:04 +0000 (02:25 +0000)]
Changes to make fast variable reference in compiled code work:
- New traps (TRAP_COMPILER_CACHED and dangerous).
- Support in lookup and interpret.
- Change to fasdump to generalize the fixed utility kludge.

37 years agoDo not cache assignments from a machine register to a pseudo register.
Chris Hanson [Thu, 28 May 1987 17:59:24 +0000 (17:59 +0000)]
Do not cache assignments from a machine register to a pseudo register.

37 years ago*** empty log message ***
Chris Hanson [Thu, 28 May 1987 17:58:38 +0000 (17:58 +0000)]
*** empty log message ***

37 years agoIn `symbol-table-bindings', return alist of values rather than binding
Chris Hanson [Thu, 28 May 1987 17:39:18 +0000 (17:39 +0000)]
In `symbol-table-bindings', return alist of values rather than binding
objects.

37 years agoAdd extra operation to extract bindings from symbol table.
Chris Hanson [Thu, 28 May 1987 16:46:45 +0000 (16:46 +0000)]
Add extra operation to extract bindings from symbol table.

37 years agoFix randomness in switch statements for wrong_type_arg and
Chris Hanson [Thu, 28 May 1987 16:09:22 +0000 (16:09 +0000)]
Fix randomness in switch statements for wrong_type_arg and
bad_range_arg.

37 years agoAdd entry points for variable caches and uuo links.
Chris Hanson [Thu, 28 May 1987 16:07:58 +0000 (16:07 +0000)]
Add entry points for variable caches and uuo links.

37 years agoAdd JAR's changes for VMS.
Guillermo J. Rozas [Thu, 28 May 1987 12:22:46 +0000 (12:22 +0000)]
Add JAR's changes for VMS.

37 years agoInitial revision
Guillermo J. Rozas [Thu, 28 May 1987 00:53:01 +0000 (00:53 +0000)]
Initial revision

37 years agoCosmetic change to boot.c, some cleaning up of hardware trap code in unix.c.
Guillermo J. Rozas [Thu, 28 May 1987 00:49:25 +0000 (00:49 +0000)]
Cosmetic change to boot.c, some cleaning up of hardware trap code in unix.c.

37 years agoNewline missing in end of computation termination.
Guillermo J. Rozas [Thu, 28 May 1987 00:45:29 +0000 (00:45 +0000)]
Newline missing in end of computation termination.

37 years agoGuarantee that interpreter-call result registers are referenced
Chris Hanson [Wed, 27 May 1987 18:36:40 +0000 (18:36 +0000)]
Guarantee that interpreter-call result registers are referenced
immediately after the interpreter-call occurs.  Otherwise the lap
generator may reallocate them to some other purpose.

37 years agoInterrupts that are out of range are now signalled through the last
Chris Hanson [Wed, 27 May 1987 14:58:22 +0000 (14:58 +0000)]
Interrupts that are out of range are now signalled through the last
slot in the interrupt vector.

37 years agoInterrupts that are out of range are now signalled through the last
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.

37 years agoSplit file into two pieces.
Chris Hanson [Tue, 26 May 1987 18:59:59 +0000 (18:59 +0000)]
Split file into two pieces.

37 years agoRecord pop in these rules.
Chris Hanson [Tue, 26 May 1987 14:47:22 +0000 (14:47 +0000)]
Record pop in these rules.

37 years agoPatch because primitive-datum is broken.
Guillermo J. Rozas [Tue, 26 May 1987 13:29:58 +0000 (13:29 +0000)]
Patch because primitive-datum is broken.

37 years agoAdd error check for positive arguments to signed integer coercion.
Chris Hanson [Tue, 26 May 1987 13:24:56 +0000 (13:24 +0000)]
Add error check for positive arguments to signed integer coercion.

37 years agoAdd PRIMITIVE_ABORT.
Guillermo J. Rozas [Sat, 23 May 1987 14:31:17 +0000 (14:31 +0000)]
Add PRIMITIVE_ABORT.

37 years agoAdd PRIMITIVE_RETURN
Guillermo J. Rozas [Sat, 23 May 1987 09:33:12 +0000 (09:33 +0000)]
Add PRIMITIVE_RETURN

37 years agoAdd special lookup for compiler to do side-effect for value. Also
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.

37 years agoDefine more operations on SCode comments.
Chris Hanson [Fri, 22 May 1987 00:11:43 +0000 (00:11 +0000)]
Define more operations on SCode comments.

37 years agoAdd special lookup for compiler to do side-effect for value.
Chris Hanson [Fri, 22 May 1987 00:11:14 +0000 (00:11 +0000)]
Add special lookup for compiler to do side-effect for value.

37 years agoAdd 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.

37 years agoUndo FLUID-LET changes from last version.
Chris Hanson [Thu, 21 May 1987 16:41:30 +0000 (16:41 +0000)]
Undo FLUID-LET changes from last version.

37 years agoFix bug in expansion of interpreter-call:enclose. When the number of
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.

37 years agoDelete the fg-entry of each procedure and quotation as it is
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.

37 years agoTemporary registers no longer have a type, and need not be handled
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.

37 years agoTemporary registers no longer have a type, and need not be handled
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.

37 years agoInstall special handling for close-coded combinations whose target is
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.

37 years agoRewrite the expansion for the RTL construction procedures so that they
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.

37 years agoMove `mvalue' to the `base' directory. The `source' directory no
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.

37 years agoChange `add-pseudo-register-alias' so that it accepts an argument
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.

37 years agoFix `move-to-alias-register!' so that when an alias is reused for a
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.

37 years agoChange shallow FLUID-LET not to use side-effect for value. This
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.

37 years agoStupidity.
Chris Hanson [Tue, 19 May 1987 13:16:48 +0000 (13:16 +0000)]
Stupidity.

37 years agoDefine `undefined-conditional-branch' constant which is used to build
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.

37 years ago`rcseep' no longer has any external definitions.
Chris Hanson [Mon, 18 May 1987 23:29:03 +0000 (23:29 +0000)]
`rcseep' no longer has any external definitions.

37 years agoDelete definitions of most predicates, since they are used in one
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.

37 years agoFix the memory-invalidation code for assignments to memory.
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.

37 years agoNot so fast!
Chris Hanson [Mon, 18 May 1987 23:20:26 +0000 (23:20 +0000)]
Not so fast!

37 years agoDelete `rcseep' from the files list.
Chris Hanson [Mon, 18 May 1987 22:47:25 +0000 (22:47 +0000)]
Delete `rcseep' from the files list.

37 years agoGeneralize `register-has-alias?' to handle machine registers also.
Chris Hanson [Mon, 18 May 1987 17:57:18 +0000 (17:57 +0000)]
Generalize `register-has-alias?' to handle machine registers also.

37 years agoGuarantee that the `number-pushed' entry on lexpr invocations contains
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.

37 years agoExtend tests of registers to handle machine registers as well.
Chris Hanson [Mon, 18 May 1987 16:23:57 +0000 (16:23 +0000)]
Extend tests of registers to handle machine registers as well.

37 years agoForgot to splice setup code into expansion for access.
Chris Hanson [Mon, 18 May 1987 16:15:19 +0000 (16:15 +0000)]
Forgot to splice setup code into expansion for access.

37 years agoDue to changes in the top level of the compiler, determining the
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.

37 years agoFor known calls to procedures that are not externally visible, do not
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.

37 years agoTypo.
Chris Hanson [Sat, 16 May 1987 18:24:34 +0000 (18:24 +0000)]
Typo.

37 years agoFix error in SETUP-LEXPR rule -- first arg to procedure-header was 'label';
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'

37 years agoChange all RTL constructs that contain pointers to compiler internal
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.

37 years agoCase where value-register is assigned during a subproblem is actually
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.

37 years agoImplement new primitive `string-hash-mod' to enable efficient
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.

37 years agoImplement new primitive argument checking interface and argument error
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.

37 years agoFix arguments to `reference-temporary-register!'.
Chris Hanson [Thu, 14 May 1987 10:56:30 +0000 (10:56 +0000)]
Fix arguments to `reference-temporary-register!'.

37 years agoFix broken eq-test generators.
Chris Hanson [Wed, 13 May 1987 11:00:33 +0000 (11:00 +0000)]
Fix broken eq-test generators.

37 years agoAdd operation to test whether a register has an alias.
Chris Hanson [Wed, 13 May 1987 10:59:51 +0000 (10:59 +0000)]
Add operation to test whether a register has an alias.

37 years agoAdd hook to symbol interning code so users can keep track of the
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.