Guillermo J. Rozas [Tue, 4 Oct 1988 14:48:41 +0000 (14:48 +0000)]
Make DUMP-BAND always dump from the low heap so that the probability
of falling on the same addresses (and avoiding relocation) on restore
increases.
Guillermo J. Rozas [Mon, 3 Oct 1988 21:19:31 +0000 (21:19 +0000)]
Fix 2 bugs:
- Known procedures (which are not always known operators) with
optional parameters have their values defaulted at the call point in
the known locations.
- Known lexpr trivial closures are invoked as closures.
Guillermo J. Rozas [Thu, 29 Sep 1988 05:03:12 +0000 (05:03 +0000)]
Numerous changes:
- Incremental definition recaches compiled code caches rather than
uncaching them and having them be recached at first reference.
- Bands are not relocated if there is no need.
- Suggestions for size parameters are printed if the image is too large.
- cmp68020.s now works with m4 on sysV and bsd.
- -recover is a new command line option which informs the microcode
that it should attempt recovery immediately after a trap, rather than
prompting for confirmation.
- Fixed some bugs having to do with deep dynamic binding.
Guillermo J. Rozas [Thu, 29 Sep 1988 04:51:09 +0000 (04:51 +0000)]
Numerous changes:
- Incremental definition recaches compiled code caches rather than
uncaching them and having them be recached at first reference.
- Bands are not relocated if there is no need.
- Suggestions for size parameters are printed if the image is too large.
- cmp68020.s now works with m4 on sysV and bsd.
- -recover is a new command line option which informs the microcode
that it should attempt recovery immediately after a trap, rather than
prompting for confirmation.
- Fixed some bugs having to do with deep dynamic binding.
Chris Hanson [Tue, 27 Sep 1988 01:56:59 +0000 (01:56 +0000)]
Fix quoting within documentation strings.
Chris Hanson [Tue, 27 Sep 1988 01:46:59 +0000 (01:46 +0000)]
Add \n\ sequences to multiline document strings.
Joe Marshall [Thu, 22 Sep 1988 18:42:57 +0000 (18:42 +0000)]
(force (delay x)) ==> x (new optimization)
Chris Hanson [Thu, 15 Sep 1988 08:41:06 +0000 (08:41 +0000)]
Tuning to increase performance.
Chris Hanson [Thu, 15 Sep 1988 05:05:44 +0000 (05:05 +0000)]
Label basic blocks that have multiple previous edges, even if those
edges do not have nodes attached to them. Also reorganized to
guarantee that the labelling side effects are ordered correctly.
Chris Hanson [Thu, 15 Sep 1988 03:10:00 +0000 (03:10 +0000)]
Allow strings and lists for version numbers in systems.
Chris Hanson [Thu, 15 Sep 1988 03:00:25 +0000 (03:00 +0000)]
Allow strings and lists for version numbers in systems.
Chris Hanson [Wed, 14 Sep 1988 06:38:12 +0000 (06:38 +0000)]
If the continuation of a combination is always known, do not record it
as the invocation continuation. This is because the object will not
exist, and thus its label will never be defined.
Chris Hanson [Wed, 7 Sep 1988 06:25:33 +0000 (06:25 +0000)]
Remove code to delete basic blocks list from rgraphs. This is now
handled by the compiler top level.
Chris Hanson [Wed, 7 Sep 1988 06:23:24 +0000 (06:23 +0000)]
Add new analysis to determine how RTL basic blocks are related by
continuations. Attempt to order the linearized RTL and LAP so that
continuations come out nearer to where they are referenced. A unique
continuation (very common) tries to come out immediately following the
invocation of the procedure that returns to it.
Chris Hanson [Wed, 7 Sep 1988 06:20:33 +0000 (06:20 +0000)]
Add new slots to descriptor lists of basic blocks.
Mark Friedman [Fri, 2 Sep 1988 20:24:45 +0000 (20:24 +0000)]
Added switch to control generation of open coded type checking.
Mark Friedman [Fri, 2 Sep 1988 15:01:08 +0000 (15:01 +0000)]
Fixed rtl:expand-statement (you gotta be careful with "reverse!"!)
Chris Hanson [Fri, 2 Sep 1988 04:13:50 +0000 (04:13 +0000)]
Change `/' operation to return an exact integer result when the
arguments are both exact integers, and the second argument divides the
first. Otherwise a flonum is returned.
Mark Friedman [Thu, 1 Sep 1988 20:17:14 +0000 (20:17 +0000)]
Added open coding of generic arithmetic (without open-coding of
floating point, though the stubs are there).
Mark Friedman [Thu, 1 Sep 1988 19:31:16 +0000 (19:31 +0000)]
Merged generic stuff with version 4.6.1.1
Mark Friedman [Thu, 1 Sep 1988 19:18:58 +0000 (19:18 +0000)]
Merged generic stuff with version 4.7.1.1
Mark Friedman [Thu, 1 Sep 1988 18:51:35 +0000 (18:51 +0000)]
Fixed some generic arithmetic stuff and merged back with version 4.10.
Chris Hanson [Wed, 31 Aug 1988 10:12:14 +0000 (10:12 +0000)]
Add slots to bblock structure to facilitate better linearization.
Chris Hanson [Wed, 31 Aug 1988 06:49:59 +0000 (06:49 +0000)]
Add comments and copyright. Separate out loading of assembler
database so that it can be easily evaluated in a working compiler
band. Attempt to reorganize so that this file can be loaded into a
working compiler and have the right effect.
Chris Hanson [Wed, 31 Aug 1988 06:45:18 +0000 (06:45 +0000)]
Change back end of compiler to not join bit strings that will be
adjacent in the output code. This loses slightly on space but avoids
costly bit string copying.
Also extend RTL constructors to handle `offset' locative with constant
base address.
Chris Hanson [Wed, 31 Aug 1988 06:43:22 +0000 (06:43 +0000)]
Change `cons-syntax' and `append-syntax!' so that they do not attempt
to join bit strings, but just cons them together into lists. This
will improve the speed of compilation with a small increase in space.
Chris Hanson [Wed, 31 Aug 1988 06:40:22 +0000 (06:40 +0000)]
Change expander for `instruction->instruction-sequence' to use the
primitive `cons' rather than an absolute reference to that name.
Chris Hanson [Wed, 31 Aug 1988 06:38:51 +0000 (06:38 +0000)]
Change `append-instruction-sequences!' so that it does not attempt to
join two bit strings that are adjacent in the resulting sequence. The
compiler spends alot of time joining such bit strings, with only small
space savings.
Chris Hanson [Wed, 31 Aug 1988 06:09:11 +0000 (06:09 +0000)]
Change rule for `locked' to check top level directory, and to use
definition of `SOURCES' macro.
Chris Hanson [Wed, 31 Aug 1988 06:00:59 +0000 (06:00 +0000)]
Change `define-ea-database' macro to side effect the variable
`early-ea-database' rather than defining it. Define this variable
separately so that cref can see it.
Chris Hanson [Wed, 31 Aug 1988 05:56:37 +0000 (05:56 +0000)]
Remove references to `define-coercion'. Use explicit definition which
will prevent cref from having undefined references.
Chris Hanson [Wed, 31 Aug 1988 05:55:31 +0000 (05:55 +0000)]
Make sure that the constant parts of this file are integrated as
constants in the rest of the compiler.
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.