Chris Hanson [Thu, 9 Feb 1989 04:16:28 +0000 (04:16 +0000)]
Pretty-printer needs definition of `unparse-list/prefix-pair?' from
unparser.
Chris Hanson [Thu, 9 Feb 1989 03:48:44 +0000 (03:48 +0000)]
*** empty log message ***
Chris Hanson [Thu, 9 Feb 1989 03:45:36 +0000 (03:45 +0000)]
Unparser now treats QUASIQUOTE, UNQUOTE, and UNQUOTE-SPLICING
specially.
Chris Hanson [Wed, 8 Feb 1989 22:43:50 +0000 (22:43 +0000)]
`define-structure' macro should return the name of the structure which
was defined.
Chris Hanson [Mon, 30 Jan 1989 13:04:03 +0000 (13:04 +0000)]
Eliminate C compiler warning.
Chris Hanson [Sat, 21 Jan 1989 09:29:50 +0000 (09:29 +0000)]
Eliminate unreferenced variable warning.
Chris Hanson [Sat, 21 Jan 1989 09:23:03 +0000 (09:23 +0000)]
*** empty log message ***
Chris Hanson [Sat, 21 Jan 1989 09:22:17 +0000 (09:22 +0000)]
Define `combination/inline/simple?'.
Chris Hanson [Sat, 21 Jan 1989 09:21:37 +0000 (09:21 +0000)]
Add several new rules which are needed because of changes to the
expression simplifier in the RTL generator. Rewrite the rules for
handling string manipulation: the previous rules weren't complete or
accurate.
Chris Hanson [Sat, 21 Jan 1989 09:18:55 +0000 (09:18 +0000)]
Change the expression-simplification to generate temporaries for more
kinds of expressions. This provides more intermediate values for the
CSE to work on, allowing it to do a better job, but assumes that the
code compressor will eliminate them later.
Chris Hanson [Sat, 21 Jan 1989 09:16:27 +0000 (09:16 +0000)]
Implement more aggressive compression of the RTL, because the
intermediate swell caused by having one RTL instruction per bblock
object finally exceeded the available memory for a reasonable file.
The current solution, which compresses the instructions associated
with each FG node as they are generated, saves a considerable amount
of space.
Chris Hanson [Sat, 21 Jan 1989 09:12:29 +0000 (09:12 +0000)]
Open coding of primitives: flesh out the type and range checking,
which was previously a little spotty (e.g. general-car-cdr had no type
checking). Improve handling of `string-ref' and `string-set!' so that
they inline code in the computed index case. Flush inline coding of
`char->ascii', which was incorrect anyway since it didn't check to see
if the character was in the ASCII range.
Chris Hanson [Sat, 21 Jan 1989 09:09:28 +0000 (09:09 +0000)]
Change simplicity analysis: previously all inline coded combinations
were treated as simple, now there are some (e.g. generic arithmetic)
which are not. There is still a problem relating to type checking
which could cause problems: if a type or range check fails in an
otherwise simple inlined combination, the exception handling is not
simple. This should be fixed without making the entire combination
non-simple.
Chris Hanson [Sat, 21 Jan 1989 09:06:39 +0000 (09:06 +0000)]
Change CSE to record expressions as their values are pushed on the
stack; previously these expressions weren't recorded until their first
reference. Fix `insert-stack-destination!' which was not setting up
the quantity associated with a stack slot correctly. Fix stack model
which was not invalidating things correctly when pops occurred.
Change method for `invocation:special-primitive' to forget the
contents of all pseudo registers.
Chris Hanson [Wed, 18 Jan 1989 19:44:06 +0000 (19:44 +0000)]
Remove all dependencies on "rtlbase/rtlcon".
Chris Hanson [Wed, 18 Jan 1989 13:49:56 +0000 (13:49 +0000)]
Fix stupid typo in `increment-machine-register'.
Chris Hanson [Wed, 18 Jan 1989 09:58:56 +0000 (09:58 +0000)]
Add definitions of `address-units-per-object' and
`address-units-per-packed-char', which are more convenient numbers to
manipulate when doing index arithmetic.
Chris Hanson [Wed, 18 Jan 1989 04:04:07 +0000 (04:04 +0000)]
Fix bug in rule for this expression:
(ASSIGN (OFFSET (REGISTER (? a)) (? n)) (FIXNUM->OBJECT (REGISTER (? source))))
There was a non-obvious order of argument evaluation problem here.
Chris Hanson [Sat, 7 Jan 1989 01:25:15 +0000 (01:25 +0000)]
Bug in interaction of continuation-entry setup code and invocation of
primitive for which the continuation-entry was created: the push of
extra items (e.g. dynamic link) was happening before the arguments to
the primitive were stashed in registers. The result was that
arguments that depended on the stack pointer were gobbling up the
wrong stuff.
Chris Hanson [Sat, 7 Jan 1989 00:24:54 +0000 (00:24 +0000)]
Fix several bugs in the stack-frame->continuation unparser.
It now seems to work on compiled code as well.
Chris Hanson [Fri, 6 Jan 1989 23:01:21 +0000 (23:01 +0000)]
Fix bug in Z command. Change G command so that it doesn't needlessly
load debugging information for frames that aren't displayed.
Chris Hanson [Fri, 6 Jan 1989 22:25:08 +0000 (22:25 +0000)]
Extend V and Z commands to allow lookup of symbols in compiled code
environments.
Chris Hanson [Fri, 6 Jan 1989 22:24:05 +0000 (22:24 +0000)]
Redefine `debug/eval' so that it will lookup symbols in compiled code
environments. Remove call to `hook/repl-environment' which seems
unnecessary.
Chris Hanson [Fri, 6 Jan 1989 21:00:48 +0000 (21:00 +0000)]
Change handling of debugging information to match changes in compiler
version 4.37. Add facilities for accessing source code from debugging
info. Add where commands `p' and `s' to debugger, moving the old
commands bound to those keys. Change debugger display formats a bit.
Chris Hanson [Fri, 6 Jan 1989 20:51:12 +0000 (20:51 +0000)]
Change debugging output again; add slot to continuations and
procedures to hold pointer to original source code (SCode). Change
FG generator to save this information so it can be included in the
debugging output.
Change variable names in debugging information to record other facts:
Is the variable a cell? Is it integrated, and if so, what is its
value?
Chris Hanson [Thu, 5 Jan 1989 19:02:31 +0000 (19:02 +0000)]
`stack-address-offset' primitive had sign bug.
Chris Hanson [Sat, 31 Dec 1988 06:41:50 +0000 (06:41 +0000)]
Adjust for changes in continuation parser code.
Chris Hanson [Sat, 31 Dec 1988 06:39:18 +0000 (06:39 +0000)]
Fix site loading mechanism; previous try didn't work.
Chris Hanson [Sat, 31 Dec 1988 06:38:40 +0000 (06:38 +0000)]
Adjust frame display to look better on regular console.
Chris Hanson [Sat, 31 Dec 1988 06:05:10 +0000 (06:05 +0000)]
Add mechanism to allow normalization of directory prefixes. Add
"site" file mechanism to cold load to allow this to be performed in a
site-specific manner.
Chris Hanson [Sat, 31 Dec 1988 05:55:09 +0000 (05:55 +0000)]
Initial revision
Chris Hanson [Sat, 31 Dec 1988 05:52:59 +0000 (05:52 +0000)]
Add mechanism to allow normalization of directory prefixes. Add
"site" file mechanism to cold load to allow this to be performed in a
site-specific manner.
Chris Hanson [Fri, 30 Dec 1988 23:42:18 +0000 (23:42 +0000)]
Fix some bugs related to compiled code debugging when no debugging
info is available. Change cold load to cause updating of debugging
information for the runtime system. Fix demand loading so that, when
disabled, procedure names are shown when the debugging information is
already loaded. Discard debugging info before doing disk-save.
Chris Hanson [Fri, 30 Dec 1988 23:30:21 +0000 (23:30 +0000)]
Fix some bugs related to compiled code debugging when no debugging
info is available. Change cold load to cause updating of debugging
information for the runtime system. Fix demand loading so that, when
disabled, procedure names are shown when the debugging information is
already loaded. Discard debugging info before doing disk-save.
Chris Hanson [Fri, 30 Dec 1988 07:11:57 +0000 (07:11 +0000)]
Flesh out debugging information. This goes along with changes
introduced in runtime system version 14.31.
Chris Hanson [Fri, 30 Dec 1988 07:05:28 +0000 (07:05 +0000)]
Flesh out debugging information. This goes along with changes
introduced in runtime system version 14.31.
Chris Hanson [Fri, 30 Dec 1988 06:54:01 +0000 (06:54 +0000)]
Initial revision
Chris Hanson [Fri, 30 Dec 1988 06:44:04 +0000 (06:44 +0000)]
Extensive changes to utilize compiled code debugging information:
* The stack parser now knows how to parse individual compiled code
subproblem frames.
* The compiler-info package has been updated to match the new compiled
code info format.
* The environment abstraction has been generalized to handle compiled
code stack and closure frames, when debugging info is available to
describe them.
* The `debug' and `where' presentation formats have been adjusted
somewhat to allow compiled code information to be presented
reasonably.
* `debug' has been extended to provide the common `A' command from
`where'; there should be little need to invoke `where' from `debug'.
Chris Hanson [Thu, 29 Dec 1988 07:33:57 +0000 (07:33 +0000)]
Change definition of `compiled-entry-kind' for return addresses. Now,
the second element is a subtype: 0 means that the offset to the next
return address is fixed and known; 1 means that the next element on
the stack is a dynamic link, which points at the next return address;
and 2 means that this is the "return-to-interpreter" return address.
The third element is either a non-negative offset (for subtypes 0 and
2) or -1 (for subtype 1).
Chris Hanson [Wed, 28 Dec 1988 00:10:08 +0000 (00:10 +0000)]
Adjust floating point formats for pyramid.
Chris Hanson [Fri, 23 Dec 1988 21:39:10 +0000 (21:39 +0000)]
Don't bother putting out cref information for global and primitive
references. For a program like the compiler, these comprise about
half the total cref, and are of little use.
Chris Hanson [Fri, 23 Dec 1988 06:23:16 +0000 (06:23 +0000)]
Add `next-continuation-offset' slot, which is either the stack offset
to the next continuation, or false indicating that a dynamic link is
in use.
Chris Hanson [Fri, 23 Dec 1988 04:50:23 +0000 (04:50 +0000)]
Fix definition of `stack-top-address' to make it consistent with
definition of `object-datum' (which will be used to extract the
address value of a stack address). Implement new primitive
`stack-address-offset' which computes the offset (in objects) between
the stack-address argument and the top of stack.
Chris Hanson [Fri, 23 Dec 1988 04:32:55 +0000 (04:32 +0000)]
Fix definition of `stack-top-address' to make it consistent with
definition of `object-datum' (which will be used to extract the
address value of a stack address). Implement new primitive
`stack-address-offset' which computes the offset (in objects) between
the stack-address argument and the top of stack.
Chris Hanson [Tue, 20 Dec 1988 23:13:20 +0000 (23:13 +0000)]
If combination has a `continuation-push', prevent that continuation
from being pushed when the combination is constant folded in any way.
Chris Hanson [Mon, 19 Dec 1988 20:56:18 +0000 (20:56 +0000)]
*** empty log message ***
Chris Hanson [Mon, 19 Dec 1988 20:31:25 +0000 (20:31 +0000)]
Rewrite the handling of SCode quotation expressions to allow `car' to
be constant folded by the compiler.
Chris Hanson [Mon, 19 Dec 1988 20:27:47 +0000 (20:27 +0000)]
Rewrite the handling of SCode quotation expressions to allow `car' to
be constant folded by the compiler.
Chris Hanson [Mon, 19 Dec 1988 20:25:08 +0000 (20:25 +0000)]
Tweak popping-limits computation once again: the external block is not
necessarily one of the limits, and assuming that it is forces the use
of dynamic links in many common situations.
Chris Hanson [Mon, 19 Dec 1988 20:23:55 +0000 (20:23 +0000)]
Repackage constant folding code.
Chris Hanson [Mon, 19 Dec 1988 20:23:28 +0000 (20:23 +0000)]
Do not require `object-immutable?' of arguments to constant folding
operations. Because of the rule which says that constants appearing
in program text must be immutable, we can freely constant fold
anything that we can get our hands on, provided that we never constant
fold anything to does a cons-like operation.
Chris Hanson [Mon, 19 Dec 1988 20:21:51 +0000 (20:21 +0000)]
Add references such as `car' and `vector-length' to set of constant
foldable "functions".
Chris Hanson [Fri, 16 Dec 1988 16:19:21 +0000 (16:19 +0000)]
Delete reference to `block-frame', which has been made obsolete.
Chris Hanson [Fri, 16 Dec 1988 13:37:12 +0000 (13:37 +0000)]
Add hooks for debugging info.
Chris Hanson [Fri, 16 Dec 1988 13:24:22 +0000 (13:24 +0000)]
No longer need to use `set-type-object-description!'.
Chris Hanson [Fri, 16 Dec 1988 13:18:45 +0000 (13:18 +0000)]
No longer need to use `set-type-object-description!'.
Chris Hanson [Thu, 15 Dec 1988 17:29:35 +0000 (17:29 +0000)]
*** empty log message ***
Chris Hanson [Thu, 15 Dec 1988 17:27:22 +0000 (17:27 +0000)]
Fix bug in `instruction-dead?': an assignment whose RHS contains side
effects cannot be considered dead.
Chris Hanson [Thu, 15 Dec 1988 17:26:09 +0000 (17:26 +0000)]
Introduce new algorithm to delete unreachable nodes from the RTL
graph.
Chris Hanson [Thu, 15 Dec 1988 17:25:26 +0000 (17:25 +0000)]
Change (commented-out) code that used to use lvalue marking mechanism
to now use new mechanism.
Chris Hanson [Thu, 15 Dec 1988 17:24:42 +0000 (17:24 +0000)]
Improve popping limits computation -- new algorithm should eliminate
dynamic links in many situations.
Chris Hanson [Thu, 15 Dec 1988 17:23:48 +0000 (17:23 +0000)]
Add generation and alist slots to lvalue objects, similar in form and
purpose to those used in CFG nodes. Remove the now-obsolete marks
slot.
Chris Hanson [Thu, 15 Dec 1988 17:19:45 +0000 (17:19 +0000)]
Change procedure unparser to show the label in a more palatable way.
Chris Hanson [Thu, 15 Dec 1988 17:17:47 +0000 (17:17 +0000)]
Change block unparser to show the type, and to show the associated
procedure's label in a more palatable way.
Chris Hanson [Thu, 15 Dec 1988 17:04:47 +0000 (17:04 +0000)]
In the merged register map, if there are multiple aliases of the same
type for a given register, eliminate all but one of the aliases.
Chris Hanson [Thu, 15 Dec 1988 17:03:19 +0000 (17:03 +0000)]
Repackage lifetime-analysis and register-allocation code.
Chris Hanson [Thu, 15 Dec 1988 17:02:14 +0000 (17:02 +0000)]
Eliminate fluid let to patch SF since the latter has now been fixed.
Introduce use of `->environment'.
Chris Hanson [Wed, 14 Dec 1988 12:42:49 +0000 (12:42 +0000)]
(block-partial-ancestry): allow ancestor to be same as starting block.
Chris Hanson [Wed, 14 Dec 1988 00:01:34 +0000 (00:01 +0000)]
Fix another case which was generating dangling code.
Chris Hanson [Tue, 13 Dec 1988 18:21:52 +0000 (18:21 +0000)]
When generating new code, must use contexts instead of blocks.
Chris Hanson [Tue, 13 Dec 1988 17:45:25 +0000 (17:45 +0000)]
Rule for (OVERFLOW-TEST) must return some code. Before, it was
winning entirely by accident.
Chris Hanson [Tue, 13 Dec 1988 14:05:47 +0000 (14:05 +0000)]
Change `block' to `context'.
Chris Hanson [Tue, 13 Dec 1988 13:58:45 +0000 (13:58 +0000)]
Delete `variable-auxiliary!'.
Chris Hanson [Tue, 13 Dec 1988 13:45:23 +0000 (13:45 +0000)]
*** empty log message ***
Chris Hanson [Tue, 13 Dec 1988 13:13:08 +0000 (13:13 +0000)]
Lots of changes to implement frame reuse stuff. See the individual
log entries.
Chris Hanson [Tue, 13 Dec 1988 13:11:32 +0000 (13:11 +0000)]
Delete all of the system predicate expansions: variable?, etc.
Chris Hanson [Tue, 13 Dec 1988 13:10:38 +0000 (13:10 +0000)]
Change modifiers to return `unassigned'. This will result in superior
compiled code as the compiler will not attempt to produce the original
value of the location being modified.
Chris Hanson [Tue, 13 Dec 1988 13:04:14 +0000 (13:04 +0000)]
Frame reuse changes. Also add change to prevent noop from pop-frames.
Chris Hanson [Tue, 13 Dec 1988 13:03:50 +0000 (13:03 +0000)]
* Change `block' to `context' where needed.
* New abstractions support owning and disowning of block children.
Chris Hanson [Tue, 13 Dec 1988 13:03:45 +0000 (13:03 +0000)]
* Guarantee that `combination/model!' is always defined.
* Change `block' to `context' where needed.
Chris Hanson [Tue, 13 Dec 1988 13:03:39 +0000 (13:03 +0000)]
* Make changes to convert `block' to `context'.
* Update multiple value stuff.
* Move `original-block-parent' to "base/blocks.scm".
* Add pass which runs afterwards to find closures and install the
correct reference context for each.
Chris Hanson [Tue, 13 Dec 1988 13:03:10 +0000 (13:03 +0000)]
* Fix bug in `syntax-files!': was not causing circularly dependent
files to recompile one another when needed.
* Add declarations for new files.
Chris Hanson [Tue, 13 Dec 1988 13:02:45 +0000 (13:02 +0000)]
* Change `discriminate-items' to guarantee that the order of the
results is the same as the order of the argument.
* Update multiple value stuff.
Chris Hanson [Tue, 13 Dec 1988 13:02:39 +0000 (13:02 +0000)]
* Add new passes to setup frame adjustments of combinations, compute
subproblem free variables, and recompute closure contexts.
Chris Hanson [Tue, 13 Dec 1988 13:02:34 +0000 (13:02 +0000)]
* Change `block' to `context' where needed.
* Define `procedure-arity-encoding'.
* Delete `set-procedure-closing-block!'.
* Redefine `procedure/type' to discriminate closure and
trivial-closure types.
Chris Hanson [Tue, 13 Dec 1988 13:02:30 +0000 (13:02 +0000)]
`tagged-vector/subclass-predicate' should use `vector-tag?' predicate
rather than `pair?'.
Chris Hanson [Tue, 13 Dec 1988 13:02:26 +0000 (13:02 +0000)]
* Add new lvalue slots: `initial-{for,back}ward-links'. These
correspond to `initial-values' in that they are the first order links
of the DFG.
* Delete `popping-limits' slot from variables.
* Change `variable-in-known-location?' to accept a context rather than
a block.
Chris Hanson [Tue, 13 Dec 1988 13:02:21 +0000 (13:02 +0000)]
* Change `block' fields to `context' where appropriate.
* Add two new items to combinations: `frame-adjustment' and
`reuse-existing-frame?'.
* Add `context' field to `true-test' node.
* Add new node type: `stack-overwrite'.
* Delete `node/offset'. Offsets are now stored in reference contexts.
Chris Hanson [Tue, 13 Dec 1988 13:01:48 +0000 (13:01 +0000)]
Significant repackaging.
Chris Hanson [Tue, 13 Dec 1988 13:00:22 +0000 (13:00 +0000)]
Redefine `block-original-parent' to be `original-block-parent' in
keeping with changes to closure analysis.
Chris Hanson [Tue, 13 Dec 1988 12:41:27 +0000 (12:41 +0000)]
Change analysis in two ways: (1) static link computation now uses
`initial-backward-links' to get much more precise notion of when
parent is the stack link. (2) dynamic link computation stores all of
the popping limits in the caller block for use by the combination code
generator.
Guillermo J. Rozas [Mon, 12 Dec 1988 22:11:35 +0000 (22:11 +0000)]
UUO links to entities and some procedures with optional arguments have
been improved.
Chris Hanson [Mon, 12 Dec 1988 21:53:00 +0000 (21:53 +0000)]
New type: stack-overwrite. Remove changes to delete unreachable
nodes, as this code was buggy. No longer needed because of changes to
code generator, but we'll replace it soon anyway.
Chris Hanson [Mon, 12 Dec 1988 21:52:53 +0000 (21:52 +0000)]
Block->context changes. Improve handling of static links. New type:
stack-overwrite.
Chris Hanson [Mon, 12 Dec 1988 21:52:46 +0000 (21:52 +0000)]
Multiple value changes. Block->context changes.
Chris Hanson [Mon, 12 Dec 1988 21:52:40 +0000 (21:52 +0000)]
Many changes for frame reuse stuff.
Chris Hanson [Mon, 12 Dec 1988 21:52:32 +0000 (21:52 +0000)]
Significant changes for frame reuse stuff.
Chris Hanson [Mon, 12 Dec 1988 21:52:22 +0000 (21:52 +0000)]
* Change `block' to `context' where needed.
* Change open coding stuff to avoid generating code that will be
dangling in the output.
Chris Hanson [Mon, 12 Dec 1988 21:52:15 +0000 (21:52 +0000)]
* Move everything except the core block search stuff to another file.
* Update to use reference contexts.
Chris Hanson [Mon, 12 Dec 1988 21:52:08 +0000 (21:52 +0000)]
Many changes: see the diff.