Chris Hanson [Fri, 21 Oct 1988 00:17:34 +0000 (00:17 +0000)]
(disk-save): Unless IDENTIFY is a string, return a boolean value.
Chris Hanson [Fri, 21 Oct 1988 00:15:37 +0000 (00:15 +0000)]
Fix bug in `disk-save': when the IDENTIFY argument is #F, we should
return #F just after the save, and #T after a restore.
Chris Hanson [Fri, 21 Oct 1988 00:13:07 +0000 (00:13 +0000)]
Fix some problems with unix signals: (1) Emacs uses SIGHUP to kill a
process when its buffer is killed, so treat SIGHUP differently if
under Emacs -- also don't print messages in this case as the buffer is
dead; (2) don't ask for core dump if signal received.
Also define new primitive `clear-interrupts!'; change
`get-next-interrupt-character' and `setup-timer-interrupt' so they
don't clear the interrupt bit. It is now the responsibility of the
runtime system to clear the bit when it gets the interrupt.
Mark Friedman [Thu, 20 Oct 1988 18:50:45 +0000 (18:50 +0000)]
Another stab at open coded generic arithmetic (stiil no floating point yet).
Mark Friedman [Thu, 20 Oct 1988 18:34:36 +0000 (18:34 +0000)]
Transferred version 4.8.1.1 onto the main trunk, essentially undoing
4.9 because we no longer use an expansion phase.
Mark Friedman [Thu, 20 Oct 1988 18:24:59 +0000 (18:24 +0000)]
Added rule for OVERFLOW-TEST in support of generic arithmetic.
Mark Friedman [Thu, 20 Oct 1988 18:21:39 +0000 (18:21 +0000)]
Changed a bunch of fixnum procedures. Fixnums are now shifted 8 bit to
the left before the operations (except multiply, where only one of the
operands is shifted) so that overflow detection gets done
automatically by the hardware.
Also fixed a bug in the fixnum register*register rule which was
manifested when the two source registers were the same and we could
alias them with the target.
Mark Friedman [Thu, 20 Oct 1988 18:15:40 +0000 (18:15 +0000)]
Added generic arithmetic rtl types and overflow-test predicate.
Added fixnum->address and address->fixnum since we have changed the
way fixnum's are handled (i.e. we shift them to the left by 8 bits now).
Removed rtl-constructor stuff since we don't have the expand phase anymore.
Mark Friedman [Thu, 20 Oct 1988 17:59:30 +0000 (17:59 +0000)]
In the open coding of generic arithmetic it is possible to create some
cfg node which are in the rtl-graph but turn out not to be reachable
from the entry edge of the rtl-graph (this happens when we are
creating a pcfg for a type test but the object we are testing is a
constant, for example). We need to make sure that rgraph/compress!
removes these unreachable cfg nodes, because there are some algorithms
which depened on all of node's predecessors being on a path from an
entry edge of the rtl-graph.
Mark Friedman [Thu, 20 Oct 1988 17:46:05 +0000 (17:46 +0000)]
Added expression methods for generic arithmetic RTL types.
Mark Friedman [Thu, 20 Oct 1988 17:22:35 +0000 (17:22 +0000)]
Fixed bugs in generic arithmetic open coding.
Mark Friedman [Thu, 20 Oct 1988 16:19:58 +0000 (16:19 +0000)]
Changed a bunch of fixnum procedures. Fixnums are now shifted 8 bit to
the left before the operations (except multiply, where only one of the
operands is shifted) so that overflow detection gets done
automatically by the hardware.
Mark Friedman [Thu, 20 Oct 1988 16:11:07 +0000 (16:11 +0000)]
fixed shift intructions with dynamic bit counts.
Mark Friedman [Thu, 20 Oct 1988 16:05:53 +0000 (16:05 +0000)]
fixed pcfg*scfg->cfg!
Chris Hanson [Thu, 20 Oct 1988 11:00:23 +0000 (11:00 +0000)]
Improved version of `file-touch' is smarter, will win in more cases
than previous version.
Chris Hanson [Wed, 19 Oct 1988 11:33:35 +0000 (11:33 +0000)]
Use /. suffix on directory names that are targets of mv commands.
Chris Hanson [Mon, 17 Oct 1988 12:10:07 +0000 (12:10 +0000)]
Add most remaining unix primitives, including new `file-touch'.
Chris Hanson [Mon, 17 Oct 1988 11:52:31 +0000 (11:52 +0000)]
Add new primitive `file-touch'.
Chris Hanson [Sat, 15 Oct 1988 21:24:38 +0000 (21:24 +0000)]
Change `char->string' to `string'. `char->string' still defined as
alias.
Chris Hanson [Sat, 15 Oct 1988 17:19:29 +0000 (17:19 +0000)]
Change `char->string' to `string'. `char->string' still defined as
alias.
Chris Hanson [Thu, 13 Oct 1988 11:16:53 +0000 (11:16 +0000)]
*** empty log message ***
Chris Hanson [Thu, 13 Oct 1988 10:34:23 +0000 (10:34 +0000)]
When dynamic link is in use, it must be pushed even if the
continuation is always known.
Chris Hanson [Wed, 12 Oct 1988 07:48:24 +0000 (07:48 +0000)]
Make pathname parser/unparser packages inherit from pathname package.
Chris Hanson [Wed, 12 Oct 1988 06:27:11 +0000 (06:27 +0000)]
Add code to load the package modeller if needed.
Chris Hanson [Wed, 12 Oct 1988 06:23:00 +0000 (06:23 +0000)]
Hide these definitions from the global environment:
parse-pathname
pathname-unparse
pathname-unparse-name
Chris Hanson [Fri, 7 Oct 1988 22:38:13 +0000 (22:38 +0000)]
Fix bug in `h' command when first subproblem had wraparound in
reductions.
Chris Hanson [Fri, 7 Oct 1988 08:53:03 +0000 (08:53 +0000)]
Export `reduce-right' to the global environment.
Chris Hanson [Fri, 7 Oct 1988 08:52:36 +0000 (08:52 +0000)]
Rename `reduce-reversed' to `reduce-right'.
Guillermo J. Rozas [Thu, 6 Oct 1988 16:33:23 +0000 (16:33 +0000)]
Add a SYSTEM primitive which invokes a shell to execute a command.
Add documentation strings to the primitives in this file.
Chris Hanson [Thu, 6 Oct 1988 06:38:35 +0000 (06:38 +0000)]
Redefine `reduce' to perform its reduction in a manner compatible with
Common Lisp. Define `reduce-reversed' to perform a right-associative
reduction.
Guillermo J. Rozas [Tue, 4 Oct 1988 23:04:57 +0000 (23:04 +0000)]
Add missing clause to instr3.scm
Guillermo J. Rozas [Tue, 4 Oct 1988 22:59:20 +0000 (22:59 +0000)]
Make wrong number of arguments errors proceedable. Extra arguments
are dropped, arguments not present are defaulted to unassigned.
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.