Chris Hanson [Wed, 31 Aug 1988 05:45:58 +0000 (05:45 +0000)]
Handle case where base address of an `offset' locative is a constant.
Chris Hanson [Tue, 30 Aug 1988 08:35:12 +0000 (08:35 +0000)]
Initial revision
Chris Hanson [Tue, 30 Aug 1988 02:16:13 +0000 (02:16 +0000)]
Many changes to improve code at both RTL and LAP levels. Major
highlights: improved handling of continuations that are sometimes
known; improved instruction combination algorithm; better register
spilling in LAP generator; better handling of registers for fixnum
operations.
Chris Hanson [Tue, 30 Aug 1988 02:13:14 +0000 (02:13 +0000)]
Teach how to combine stack references.
Chris Hanson [Mon, 29 Aug 1988 23:21:32 +0000 (23:21 +0000)]
Rewrite this pass to be a more powerful instruction combiner. This is
still not a general solution, but now it is smart about moving the
value register and constant expressions over multiple instructions.
Chris Hanson [Mon, 29 Aug 1988 23:19:44 +0000 (23:19 +0000)]
Redefine expression-cost computation to be mostly machine independent.
Chris Hanson [Mon, 29 Aug 1988 23:18:23 +0000 (23:18 +0000)]
Flush `expression-non-object?' since that is now defined elsewhere.
Chris Hanson [Mon, 29 Aug 1988 23:17:22 +0000 (23:17 +0000)]
Merge concepts of `address' and `fixnum' register into `non-object'
register.
Chris Hanson [Mon, 29 Aug 1988 23:16:12 +0000 (23:16 +0000)]
Fix stupid bug involving missing call to `scfg*scfg->scfg!'.
Chris Hanson [Mon, 29 Aug 1988 23:14:17 +0000 (23:14 +0000)]
Must not pop return address unless it has been pushed.
Chris Hanson [Mon, 29 Aug 1988 23:08:52 +0000 (23:08 +0000)]
Merge concepts of `address' and `fixnum' register into `non-object'
register. Implement operations to detect substitutable register
within a given expression, and to substitute subexpressions for those
registers. Implement predicate to determine if an expression is
constant. All of these new operations are used by the improved
register combiner.
Simplify `rtl:trivial-expression?' by disallowing stack references.
This causes some inefficiencies that must be corrected elsewhere, but
reveals more intermediate values to the CSE.
Chris Hanson [Mon, 29 Aug 1988 23:03:03 +0000 (23:03 +0000)]
Merge concepts of `address' and `fixnum' register into `non-object'
register.
Chris Hanson [Mon, 29 Aug 1988 22:56:03 +0000 (22:56 +0000)]
Change references to `coerce->any' into calls to
`standard-register-reference'.
Chris Hanson [Mon, 29 Aug 1988 22:54:31 +0000 (22:54 +0000)]
Use `move-to-temporary-register!' to correctly reuse a data register
for a particular rule. Previously was doing something ad hoc.
Chris Hanson [Mon, 29 Aug 1988 22:49:54 +0000 (22:49 +0000)]
Many many changes.
Chris Hanson [Mon, 29 Aug 1988 22:46:42 +0000 (22:46 +0000)]
Define fixnum constant limits more carefully. Redefine expression
cost computation -- most is now machine-independent. Change
`address-register' concept to be `non-object-register'. Delete
`pseudo-register=?'. Define `interpreter-value-register?'.
Chris Hanson [Mon, 29 Aug 1988 22:43:42 +0000 (22:43 +0000)]
Too many changes to list them all. See the code.
Chris Hanson [Mon, 29 Aug 1988 22:40:41 +0000 (22:40 +0000)]
Fix order of events bug in disassembly of bit field instructions.
Chris Hanson [Mon, 29 Aug 1988 22:39:19 +0000 (22:39 +0000)]
Change names of two state variables for `show-fg', because one of them
conflicted with another variable in the compiler package.
Mark Friedman [Mon, 29 Aug 1988 22:36:32 +0000 (22:36 +0000)]
No change. made a mistake.
Chris Hanson [Mon, 29 Aug 1988 22:35:26 +0000 (22:35 +0000)]
Force register allocator to reuse registers on an LRU basis.
Previously it was somewhat random, and usually MRU. Teach the
allocator to spill values to registers of other types when allocating
a register of a particular type. This often wins grossly on the
68020. Also implement predicates to determine whether particular
aliases have unique values.
Chris Hanson [Mon, 29 Aug 1988 22:31:59 +0000 (22:31 +0000)]
Many changes. Add documentation comments to most of the procedures in
this file. Improve functionality of existing procedures in a variety
of ways, and add new procedures to implement new functionality.
Chris Hanson [Mon, 29 Aug 1988 22:30:22 +0000 (22:30 +0000)]
Break out procedure to pattern match RTL against rules database. This
procedure can be used as a predicate by the RTL optimizer to determine
if particular instructions are valid. In particular, this is used by
the instruction combiner.
Joe Marshall [Fri, 26 Aug 1988 23:00:50 +0000 (23:00 +0000)]
fix named let
Joe Marshall [Fri, 26 Aug 1988 22:53:47 +0000 (22:53 +0000)]
(let loop ((x loop)) x) worked when it shouldn't have.
has been fixed so that the name is not visible to the init forms.
Chris Hanson [Thu, 25 Aug 1988 06:42:03 +0000 (06:42 +0000)]
Undo changes introduced with version 4.10, to facilitate
parallel development.
Chris Hanson [Wed, 24 Aug 1988 22:28:55 +0000 (22:28 +0000)]
Guarantee that "comp.bcon" is constructed if it doesn't already exist.
Chris Hanson [Wed, 24 Aug 1988 21:21:07 +0000 (21:21 +0000)]
Load cref if not already loaded.
Mark Friedman [Wed, 24 Aug 1988 16:29:46 +0000 (16:29 +0000)]
Just forgot a few things for the rtl-constructor stuff.
Mark Friedman [Wed, 24 Aug 1988 14:33:41 +0000 (14:33 +0000)]
Added expand.scm in support of the new rtl expansion phase.
Chris Hanson [Wed, 24 Aug 1988 06:53:01 +0000 (06:53 +0000)]
Guarantee that the ".bin" version of each file is loaded. Otherwise,
an existing ".com" could override the changes to a given file.
Mark Friedman [Tue, 23 Aug 1988 16:34:11 +0000 (16:34 +0000)]
Added support for a new expansion phase, which is essentially open
coding done after common subexpression elimination.
Chris Hanson [Tue, 23 Aug 1988 09:04:54 +0000 (09:04 +0000)]
Make error messages a bit more informative.
Chris Hanson [Mon, 22 Aug 1988 22:20:08 +0000 (22:20 +0000)]
Export `lap-generator/match-rtl-instruction' to (compiler) package so
that it can be used by RTL optimizer.
Chris Hanson [Mon, 22 Aug 1988 22:15:31 +0000 (22:15 +0000)]
Split off pattern matching part of LAP generator to allow it to be
used by the RTL optimizer. Move definition of `*dead-registers*' to
another file.
Chris Hanson [Mon, 22 Aug 1988 20:40:12 +0000 (20:40 +0000)]
Fix documentation.
Mark Friedman [Mon, 22 Aug 1988 20:33:53 +0000 (20:33 +0000)]
Added support for the open coding of generic arithmetic.
Mark Friedman [Mon, 22 Aug 1988 20:25:43 +0000 (20:25 +0000)]
There's a new expansion phase to support the open coding of generic
arithmetic. It is essentially there to allow for the open coding of
rtl that you want to be treated as a single statement or expression by
the common subexpression eliminator.
Mark Friedman [Mon, 22 Aug 1988 20:20:59 +0000 (20:20 +0000)]
The rtl constructor macros now place entries in a table that maps from
rtl types to rtl contructors.
Mark Friedman [Mon, 22 Aug 1988 20:10:18 +0000 (20:10 +0000)]
Added support for the open coding of generic arithmetic.
Mark Friedman [Mon, 22 Aug 1988 20:03:44 +0000 (20:03 +0000)]
Made the vector stuff more robust (with some more open coded checks).
Added support for the open coding of generic arithmetic (the actual
code for floating point is not yet there, although the hooks are).
Chris Hanson [Thu, 18 Aug 1988 06:50:25 +0000 (06:50 +0000)]
(return-operator/pop-frames) Must pop `extra' off stack in all cases.
Chris Hanson [Thu, 18 Aug 1988 04:37:21 +0000 (04:37 +0000)]
Random editing to clean up code a bit. No change in functionality.
Chris Hanson [Thu, 18 Aug 1988 03:28:41 +0000 (03:28 +0000)]
Test to determine if a continuation is direct linked must be more
sophisticated now that RTL generator is direct linking more kinds of
continuations.
Chris Hanson [Thu, 18 Aug 1988 02:02:37 +0000 (02:02 +0000)]
Fix editing error.
Chris Hanson [Thu, 18 Aug 1988 01:47:27 +0000 (01:47 +0000)]
Export `syntax-files!' to the compiler package.
Chris Hanson [Thu, 18 Aug 1988 01:46:45 +0000 (01:46 +0000)]
Improve code generated for inputs like the following:
(if (if (and (object-type? (ucode-type fixnum) r)
(object-type? (ucode-type fixnum) l))
(fix:> r l)
(> r l))
...)
Previously, the code generated for the call to `fix:>' was deficient
in that it pushed a continuation, performed the inline coded
comparison, then did a pop-return. In fact, since the continuation is
known at that point, and is not being passed anywhere, there's no
reason to push anything on the stack. These changes implement this.
Chris Hanson [Thu, 18 Aug 1988 01:37:23 +0000 (01:37 +0000)]
Improve code generated for inputs like the following:
(if (if (and (object-type? (ucode-type fixnum) r)
(object-type? (ucode-type fixnum) l))
(fix:> r l)
(> r l))
...)
Previously, the code generated for the call to `fix:>' was deficient
in that it pushed a continuation, performed the inline coded
comparison, then did a pop-return. In fact, since the continuation is
known at that point, and is not being passed anywhere, there's no
reason to push anything on the stack. These changes implement this.
Mark Friedman [Tue, 16 Aug 1988 18:10:16 +0000 (18:10 +0000)]
Slight typo in &= definition fixed.
Mark Friedman [Tue, 16 Aug 1988 17:49:29 +0000 (17:49 +0000)]
Slight typo in &= definition fixed.
Chris Hanson [Mon, 15 Aug 1988 23:08:55 +0000 (23:08 +0000)]
Update documentation strings.
Chris Hanson [Mon, 15 Aug 1988 23:05:26 +0000 (23:05 +0000)]
Cause `disk-save' to run `event:after-restart' when given #T as a
second argument.
Chris Hanson [Mon, 15 Aug 1988 22:00:48 +0000 (22:00 +0000)]
Parameterize `pp' to print uninterned symbols by name.
Define `primitive-procedure-documentation'.
Chris Hanson [Mon, 15 Aug 1988 21:58:20 +0000 (21:58 +0000)]
Define `primitive-procedure-documentation'.
Chris Hanson [Mon, 15 Aug 1988 21:57:18 +0000 (21:57 +0000)]
Add parameterization to print uninterned symbols by name.
Chris Hanson [Mon, 15 Aug 1988 20:58:52 +0000 (20:58 +0000)]
Change definition of `DEFINE_PRIMITIVE' macro to include extra fields
for minimum number of arguments and documentation. Add primitive to
access the documentation string. The min args slot is currently
unused. Change all definitions of primitives to use this macro.
The documentation strings should be filled in as time permits.
Partially update "sample.c" to reflect this. More work remains to be
done.
Update "Findprim.c" substantially, to handle these changes. Also
change all fixed size tables to be dynamically allocated.
Define new macros `EMPTY_LIST', `SHARP_F' and `SHARP_T'. All
references to `TRUTH' replaced by `SHARP_T'. Some references to `NIL'
changed to the appropriate macro, but many more remain; these should
be replaced as time permits.
Update several copyright notices to reflect new year.
Change name of "primitive.h" to "prims.h".
Chris Hanson [Mon, 15 Aug 1988 20:37:43 +0000 (20:37 +0000)]
Change definition of `DEFINE_PRIMITIVE' macro to include extra fields
for minimum number of arguments and documentation. Add primitive to
access the documentation string. The min args slot is currently
unused. Change all definitions of primitives to use this macro.
The documentation strings should be filled in as time permits.
Partially update "sample.c" to reflect this. More work remains to be
done.
Update "Findprim.c" substantially, to handle these changes. Also
change all fixed size tables to be dynamically allocated.
Define new macros `EMPTY_LIST', `SHARP_F' and `SHARP_T'. All
references to `TRUTH' replaced by `SHARP_T'. Some references to `NIL'
changed to the appropriate macro, but many more remain; these should
be replaced as time permits.
Update several copyright notices to reflect new year.
Change name of "primitive.h" to "prims.h".
Chris Hanson [Fri, 12 Aug 1988 02:41:22 +0000 (02:41 +0000)]
Guarantee that the `cd' requested by the Scheme process happens in the
Scheme process buffer.
Chris Hanson [Thu, 11 Aug 1988 20:15:54 +0000 (20:15 +0000)]
Various bug fixes, also some efficiency improvements to the CSE.
Chris Hanson [Thu, 11 Aug 1988 20:13:27 +0000 (20:13 +0000)]
Be more specific about what kind of combination is considered to be an
`error-combination'.
Chris Hanson [Thu, 11 Aug 1988 20:11:14 +0000 (20:11 +0000)]
Various efficiency and organization changes. Eliminate `copy-cache'
slot from `element' objects, reusing `cost' for that purpose during
the copy phase.
Chris Hanson [Thu, 11 Aug 1988 19:54:25 +0000 (19:54 +0000)]
(assemble-objects!) Never use / when doing integer arithmetic. Use
quotient instead.
Chris Hanson [Thu, 11 Aug 1988 03:15:17 +0000 (03:15 +0000)]
Implement compiled code reference trap errors.
Chris Hanson [Thu, 11 Aug 1988 03:14:32 +0000 (03:14 +0000)]
Export `stack-frame/return-address' to global environment.
Chris Hanson [Thu, 11 Aug 1988 02:15:57 +0000 (02:15 +0000)]
Do not barf if error combination is malformed.
Panayotis Skordos [Wed, 10 Aug 1988 05:45:38 +0000 (05:45 +0000)]
added halftoning routines: psam, ht-od, ht-bn, ht-ibn
added image-laplacian, image-double-by-interpolation,
write-image-2bint
Panayotis Skordos [Wed, 10 Aug 1988 05:26:54 +0000 (05:26 +0000)]
added halftoning routines: psam, ht-od, ht-bn, ht-ibn
added image-laplacian, image-double-by-interpolation,
write-image-2bint
Chris Hanson [Tue, 9 Aug 1988 19:59:12 +0000 (19:59 +0000)]
Do not perform automagic integrations by default. This optimization
caused a bug in the runtime system version 13.108 where event
distributors ignored the internal `receivers' binding and used the
empty list instead.
Chris Hanson [Tue, 9 Aug 1988 19:29:18 +0000 (19:29 +0000)]
Disable downward coercion of flonums.
Guillermo J. Rozas [Tue, 9 Aug 1988 02:31:26 +0000 (02:31 +0000)]
table_length and table_size are stored with Make_Non_Pointer, rather
than Make_Pointer, since they are integers rather than pointers.
Chris Hanson [Fri, 5 Aug 1988 21:14:19 +0000 (21:14 +0000)]
Change call to `pp' to match change in runtime system.
Chris Hanson [Fri, 5 Aug 1988 20:59:16 +0000 (20:59 +0000)]
Introduce new variable `unspecific' which the compiler may assume an
arbitrary binding value for. Replace nearly all occurrences of
`*the-non-printing-object*' with this new variable. Flush special
handling for arguments to `error' special form, assuming that all code
is syntaxed with the new syntaxer.
Chris Hanson [Fri, 5 Aug 1988 20:57:21 +0000 (20:57 +0000)]
Repaginate.
Chris Hanson [Fri, 5 Aug 1988 20:51:27 +0000 (20:51 +0000)]
Extend `->environment' to handle package objects.
Chris Hanson [Fri, 5 Aug 1988 20:49:51 +0000 (20:49 +0000)]
Replace occurrences of `*the-non-printing-object*' with `unspecific'.
Flush randomness dealing with old `error' macro, specifically because
it referred to `*the-non-printing-object*'.
Chris Hanson [Fri, 5 Aug 1988 20:16:26 +0000 (20:16 +0000)]
Move `*the-non-printing-object*' to "global" since it isn't really
needed at boot time.
Chris Hanson [Fri, 5 Aug 1988 20:15:45 +0000 (20:15 +0000)]
Add variable `unspecific' which the compiler may treat as being bound
to any convenient value. This is used as the value of an expression
when that expression's value is unused.
Chris Hanson [Fri, 5 Aug 1988 19:44:30 +0000 (19:44 +0000)]
Regularize argument structure to `pp'. Extend to handle hash number
of object in addition to object itself. Extend to print out
components of named structures.
Chris Hanson [Tue, 2 Aug 1988 20:27:26 +0000 (20:27 +0000)]
Change `procedure?' to handle entities specially, recursing on their
invocation method. Change `environment?' to be true of
`system-global-environment'. Add new procedures `ic-environment?' and
`system-global-environment?' to distinguish the interesting cases.
Chris Hanson [Mon, 1 Aug 1988 23:10:12 +0000 (23:10 +0000)]
Change `environment?' to be true of `system-global-environment'. Add
new procedures `ic-environment?' and `system-global-environment?' to
distinguish the interesting cases.
Chris Hanson [Mon, 1 Aug 1988 23:07:27 +0000 (23:07 +0000)]
Change `procedure?' to handle entities specially, recursing on their
invocation method.
Chris Hanson [Fri, 22 Jul 1988 22:54:04 +0000 (22:54 +0000)]
For "operator" microcode error handlers, the irritants were not being
passed as a list, resulting in a different error being signalled
whenever such an error occurred.
Chris Hanson [Thu, 21 Jul 1988 18:45:55 +0000 (18:45 +0000)]
Put default pathnames in file "paths.h".
Chris Hanson [Wed, 20 Jul 1988 07:37:29 +0000 (07:37 +0000)]
It is now legal for a continuation to have a noop node as its entry,
provided that the noop node has no next. If it is a noop node,
connect to the next of the noop node rather than the entry of the
continuation.
Chris Hanson [Wed, 20 Jul 1988 07:35:52 +0000 (07:35 +0000)]
Add new operation `sc' for running `sf' on compiler files.
Chris Hanson [Wed, 20 Jul 1988 00:10:01 +0000 (00:10 +0000)]
Do not delete fg-noop nodes that are still needed. In the following
example, the entry node of the continuation passed to `bar' is needed
because it is referenced by the subproblem object for the let:
(let ((cos-total
(begin (bar)
cos7)))
cos-total)
Chris Hanson [Wed, 20 Jul 1988 00:09:16 +0000 (00:09 +0000)]
Fix two bugs in the object unparsing code.
Chris Hanson [Tue, 19 Jul 1988 20:42:58 +0000 (20:42 +0000)]
Implement primitive `print-graphics-inverse'.
Chris Hanson [Tue, 19 Jul 1988 20:04:12 +0000 (20:04 +0000)]
Grab X error hooks. When errors occur, signal Scheme primitive errors
rather than just terminating the process.
Chris Hanson [Tue, 19 Jul 1988 18:22:41 +0000 (18:22 +0000)]
Add imports for `compiler-entries-tag', which is defined by runtime
system now.
Chris Hanson [Sat, 16 Jul 1988 21:51:09 +0000 (21:51 +0000)]
Procedure `condition/message' flushed. Use `condition/report-string'
in stead.
Chris Hanson [Sat, 16 Jul 1988 21:47:47 +0000 (21:47 +0000)]
Procedure `primitive-datum' now called `object-datum'.
Hal Abelson [Sat, 16 Jul 1988 20:54:39 +0000 (20:54 +0000)]
Fix stupid bug involving `standard-unparser'; it requires 2 arguments,
the second is no longer optional. Check for other occurrences of
this.
Chris Hanson [Sat, 16 Jul 1988 18:54:56 +0000 (18:54 +0000)]
When unparsing `manifest-closure' objects, use `compiled-procedure' as
the type name.
Chris Hanson [Sat, 16 Jul 1988 10:14:30 +0000 (10:14 +0000)]
Fix stupid bug in `cond' syntaxer.
Chris Hanson [Sat, 16 Jul 1988 09:43:39 +0000 (09:43 +0000)]
Starbase graphics: export procedures to control line style and drawing
mode.
Chris Hanson [Sat, 16 Jul 1988 07:20:07 +0000 (07:20 +0000)]
Correctly implement closing of graphics device. Make everyone close
an open device before opening the next one.
Chris Hanson [Fri, 15 Jul 1988 22:33:49 +0000 (22:33 +0000)]
Adjust handling of `=>' option to `cond' special form so that it
matches the definition in the standard.
Change unparser to handle character sets specially.
Implement octal ASCII escape sequences in strings, both for the parser
and unparser.
Chris Hanson [Fri, 15 Jul 1988 22:31:58 +0000 (22:31 +0000)]
Change string parser to allow escape sequence consisting of one to
three octal digits, which is translated into the ASCII equivalent.
Chris Hanson [Fri, 15 Jul 1988 22:31:04 +0000 (22:31 +0000)]
Change string unparser to notice character sets and unparse them
specially. Also notice non-graphic characters in strings and, when
slashifying, unparse them using octal escape sequence.