Guillermo J. Rozas [Thu, 25 Jan 1990 16:37:05 +0000 (16:37 +0000)]
Initial revision
Guillermo J. Rozas [Thu, 25 Jan 1990 16:21:29 +0000 (16:21 +0000)]
New compiler port.
Guillermo J. Rozas [Wed, 24 Jan 1990 16:45:07 +0000 (16:45 +0000)]
Make setup-image do what the comment at the top of the file says when
identify is #f.
Chris Hanson [Tue, 23 Jan 1990 22:44:12 +0000 (22:44 +0000)]
`hash-table-copy', when copying the elements in a hash bucket, was
copying each element and then setting its previous-hash link to that
of the original element rather than its copy. Don't entirely
understand why this wasn't noticed before.
Guillermo J. Rozas [Tue, 23 Jan 1990 08:35:09 +0000 (08:35 +0000)]
Conditionalize constant space sizes for the Spectrum.
Fix floating alignment bugs.
Fix bchdmp bug.
Guillermo J. Rozas [Tue, 23 Jan 1990 08:30:51 +0000 (08:30 +0000)]
Fix floating alignment.
Guillermo J. Rozas [Tue, 23 Jan 1990 08:30:29 +0000 (08:30 +0000)]
Add floating alignment back.
Gerald Jay Sussman [Tue, 23 Jan 1990 03:00:23 +0000 (03:00 +0000)]
Fix bug by which current_disk_position was not reset from the last
gc-like operation. When the files were swapped for fasdump, the
system might not lseek thinking that the pointer into the file was at
the correct place while it doesn't. Typical failure would be
"Could not read into the scan buffer" since the file was shorter than
expected.
Chris Hanson [Mon, 22 Jan 1990 23:45:31 +0000 (23:45 +0000)]
Make changes to use more space-efficient representation for dbg-label
objects. These changes require runtime version 14.72 or later.
Chris Hanson [Mon, 22 Jan 1990 23:41:39 +0000 (23:41 +0000)]
Add new representation for `dbg-label', that is optimized for minimum
space consumption. Make the dbg-label operations generic so that they
handle both the old and new representations. By default, the
constructor makes the old representation. These changes are
upwards-compatible for old programs and old versions of the compiler.
Chris Hanson [Mon, 22 Jan 1990 23:39:37 +0000 (23:39 +0000)]
Change `operation/open' to handle #F as a result from
`starbase-open-device'.
Guillermo J. Rozas [Mon, 22 Jan 1990 22:33:22 +0000 (22:33 +0000)]
Make gr2 be compile code's val register.
Fix trampoline_to_interface.
Fix the number of NOPs before hook_jump_table.
Fix the closure code.
Fix various comments.
Guillermo J. Rozas [Mon, 22 Jan 1990 22:31:26 +0000 (22:31 +0000)]
Fix hppa_extract_absolute_address, hppa_store_absolute_address,
CLOSURE_SKIPPED_CHECK_OFFSET, and various comments.
Guillermo J. Rozas [Mon, 22 Jan 1990 22:26:07 +0000 (22:26 +0000)]
Version with compiler modifications.
Guillermo J. Rozas [Mon, 22 Jan 1990 22:22:14 +0000 (22:22 +0000)]
Bump the constant space and compiled constant space sizes for the
spectrum. Compiled binaries are 50% larger than on bobcats.
Guillermo J. Rozas [Mon, 22 Jan 1990 19:16:44 +0000 (19:16 +0000)]
Fix typo. print_a_bignum used && rather than &, causing all sorts of
problems.
Guillermo J. Rozas [Mon, 22 Jan 1990 03:01:34 +0000 (03:01 +0000)]
Add missing ,@ in load-machine-register!
Guillermo J. Rozas [Sun, 21 Jan 1990 23:35:13 +0000 (23:35 +0000)]
Fix relocation bug in fasload.c
Guillermo J. Rozas [Sun, 21 Jan 1990 23:34:19 +0000 (23:34 +0000)]
Re-check in previous version since checked in on spectrum by mistake,
using built-in ci, rather than locally hacked version.
Guillermo J. Rozas [Sun, 21 Jan 1990 18:26:16 +0000 (18:26 +0000)]
Fix bug in fasload by which closures and linkage sections were not
being relocated correctly on machines where datums are not addresses.
Chris Hanson [Sat, 20 Jan 1990 07:32:06 +0000 (07:32 +0000)]
Fix stupid editing mistake.
Chris Hanson [Sat, 20 Jan 1990 07:29:47 +0000 (07:29 +0000)]
Add a debugging facility that keeps a history of `Scan' and `To'
during the GC loop. Conditionalize this and the trap-on-scan/free
facility on a new compiler switch, `ENABLE_GC_DEBUGGING_FEATURES'.
Chris Hanson [Sat, 20 Jan 1990 07:26:22 +0000 (07:26 +0000)]
When forcing something into a specific machine register, as is done
for interpreter calls, make sure that anything cached in that register
is saved to a temporary first, if it's not needed.
Chris Hanson [Thu, 18 Jan 1990 22:49:26 +0000 (22:49 +0000)]
Initial revision
Chris Hanson [Thu, 18 Jan 1990 22:48:02 +0000 (22:48 +0000)]
* Disable early-syntaxing mechanism, and change back end to generate
LAP instead of assembler directives. The assembler is now responsible
for converting the LAP to assembler directives.
* Change RTL and LAP output options to cause RTL and LAP files to be
written as the information is generated. ".brtl" files are no longer
generated.
* Add concept of "suffix instructions" to the LAP generator.
* Disassociate per-instruction "dead registers" set from the set of
registers that need to be deleted after the instruction is generated.
This is needed because the LAP generator sometimes needs to know which
registers are dead _after_ the dead registers have been deleted.
* Many of the high-level register allocator operations have been
generalized so that they work for both machine and pseudo registers.
This simplifies the writing of powerful rules in the LAP generator.
* The LAP linearizer has been improved to notice certain common graph
patterns and generate them in a fixed way. For example, if one of the
branches of a conditional goes to a block that is a dead end, the
linearizer will now force the dead-end block to come before the other
branch; this has the advantage that it usually minimizes the branch
distance, and prevents that dead-end block from being far away from
the conditional.
* The value-class abstraction has been generalized to have more
classes, and the use of this information has been made more uniform
and complete.
* The cross-compiler now forces the per-procedure compilation switch
off.
* The `define-rule' macro has been generalized to allow it to be used
with user-defined rulesets.
* The RTL definition macros have been changed to collect the RTL
expression names in sets that indicate their type.
* The compiler now treats self-referential top-level definitions as
static by default.
* New RTL optimization passes perform limited dataflow analysis and
rewriting of the RTL. These permit the LAP-generation rules to be
tuned to more fully take advantage of the target machine's instruction
set.
* The subproblem free-variable analysis pass has been changed to
memoize information at every CFG node. The previous memoization
scheme had quadratic time complexity for certain programs.
* The RTL expression simplifier has been changed to force the use of
pseudo registers for all subexpressions, except the right-hand side of
a pseudo-register assignment. This guarantees the uniformity of the
code-generator's output, permitting the LAP-generator rules to be
reduced to a small minimal set.
* The RTL `unassigned-test' and `true-test' predicate types have been
replaced by `eq-test' with the appropriate argument.
* The RTL `constant' expression type has been replaced (in many
instances) by the new `machine-constant' type. The former is now used
only when the result is a Scheme object, while the latter is used to
represent constant fields of words. A `machine-constant' always has
an exact integer value.
* The RTL `offset' expression type has been changed so that it no
longer requires its first argument to be a register; now that may be
an arbitrary RTL expression.
* The RTL code compressor has been improved to handle many more
instruction types, and to permit stack-slot reference expressions to
be moved over stack pushes, adjusting their offsets in the process.
* The RTL CSE was not copying its state correctly, and as a result was
not doing as good a job as possible across certain conditional
branches.
Chris Hanson [Thu, 18 Jan 1990 19:18:20 +0000 (19:18 +0000)]
Suppress error messages when opening a graphics device, so that we can
use this primitive to test for the availability of the device. Also
fix typo in `starbase-write-image-file'.
Chris Hanson [Thu, 18 Jan 1990 19:15:57 +0000 (19:15 +0000)]
Change configuration of 6.003 Scheme to eliminate old graphics code
and to include standard starbase device driver libraries.
Chris Hanson [Thu, 18 Jan 1990 00:43:35 +0000 (00:43 +0000)]
Eliminate `box-clear' primitive.
Guillermo J. Rozas [Wed, 17 Jan 1990 19:06:35 +0000 (19:06 +0000)]
Fix bug in signed-integer->bit-string by which it was not checking
whether the number would fit in the specified number of bits or not.
Gerald Jay Sussman [Wed, 17 Jan 1990 05:04:24 +0000 (05:04 +0000)]
*** empty log message ***
Chris Hanson [Wed, 17 Jan 1990 04:42:40 +0000 (04:42 +0000)]
Fix typo in character-attribute setting routines.
Chris Hanson [Tue, 16 Jan 1990 19:58:23 +0000 (19:58 +0000)]
Add new target `install' to simplify installation of Scheme binaries.
Chris Hanson [Tue, 16 Jan 1990 01:57:31 +0000 (01:57 +0000)]
Fix fencepost error in `disk-restore': when allocating space for a C
string, must allocate one more byte than the string's length to
account for trailing \0.
Chris Hanson [Mon, 15 Jan 1990 21:27:55 +0000 (21:27 +0000)]
Add new variable `flonum-unparser-cutoff', which controls the flonum
printer's precision. Acceptable values of this variable are:
NORMAL use all available precision
(RELATIVE <n>) <n> digits of precision
(ABSOLUTE <n>) <n> digits of precision after the decimal point
Panayotis Skordos [Mon, 15 Jan 1990 18:09:34 +0000 (18:09 +0000)]
*** empty log message ***
Chris Hanson [Fri, 12 Jan 1990 23:37:17 +0000 (23:37 +0000)]
Fix stupid bug in division that caused quotient to be off by one in
rare cases.
Chris Hanson [Fri, 12 Jan 1990 15:20:27 +0000 (15:20 +0000)]
Make generic arithmetic primitives perform fixnum arithmetic as a
special case. This makes a factor of 10 difference for (fib 20) on an
interpreted system.
Chris Hanson [Thu, 11 Jan 1990 01:01:44 +0000 (01:01 +0000)]
Correct for scaling overshoot in `ratnum->flonum'.
Hal Abelson [Wed, 10 Jan 1990 23:19:57 +0000 (23:19 +0000)]
Fix case bug in `complex:expt'.
Chris Hanson [Wed, 10 Jan 1990 14:19:20 +0000 (14:19 +0000)]
Fix typo from last edit.
Chris Hanson [Wed, 10 Jan 1990 13:13:45 +0000 (13:13 +0000)]
*** empty log message ***
Chris Hanson [Wed, 10 Jan 1990 12:39:17 +0000 (12:39 +0000)]
*** empty log message ***
Chris Hanson [Wed, 10 Jan 1990 12:26:03 +0000 (12:26 +0000)]
Now that `vector-set!' is defined to return unspecific value we don't
need to force it into effect position.
Chris Hanson [Thu, 4 Jan 1990 06:43:35 +0000 (06:43 +0000)]
Add error checking to symbol operations.
Panayotis Skordos [Tue, 2 Jan 1990 18:35:32 +0000 (18:35 +0000)]
*** empty log message ***
Panayotis Skordos [Fri, 29 Dec 1989 20:41:06 +0000 (20:41 +0000)]
*** empty log message ***
Chris Hanson [Fri, 29 Dec 1989 19:19:12 +0000 (19:19 +0000)]
Fix definitions of `complex:acos' and `complex:angle' to handle
boundary conditions.
Chris Hanson [Wed, 20 Dec 1989 22:42:20 +0000 (22:42 +0000)]
Change definitions of 2/3-operand register-allocation procedures.
Chris Hanson [Wed, 20 Dec 1989 22:20:15 +0000 (22:20 +0000)]
Flush 2/3-operand register allocation procedures.
Panayotis Skordos [Wed, 20 Dec 1989 18:03:39 +0000 (18:03 +0000)]
graphics and debug changes
Chris Hanson [Tue, 19 Dec 1989 15:37:09 +0000 (15:37 +0000)]
Change format used by the "Y" command.
Chris Hanson [Thu, 14 Dec 1989 23:05:44 +0000 (23:05 +0000)]
In `trace-display', no-argument case was putting close bracket at
beginning of empty line, when it should have been at the end of the
previous line.
Chris Hanson [Mon, 11 Dec 1989 07:15:11 +0000 (07:15 +0000)]
* Take advantage of new entry points in compiled code interface.
These changes require microcode 11.16 or later.
* Use BFEXTU instruction to extract type field. This instruction is
both faster and smaller than the previous sequence, for both 6 and 8
bit types. Use BFTST instruction to test for zero types.
Conditionalize use of the bit-field instructions on the new flag
`use-68020-instructions?'; I don't believe that we're using any other
68020-specific instructions besides these.
* Add rule for 1-arg fixnum predicates that tries to take advantage of
the preceding LSL.L instruction to test the number, rather than
emitting a redundant TST.L; this new rule is always used in generic
arithmetic expansions.
Chris Hanson [Mon, 11 Dec 1989 06:17:06 +0000 (06:17 +0000)]
* Take advantage of new entry points in compiled code interface.
These changes require microcode 11.16 or later.
* Use BFEXTU instruction to extract type field. This instruction is
both faster and smaller than the previous sequence, for both 6 and 8
bit types. Use BFTST instruction to test for zero types.
Conditionalize use of the bit-field instructions on the new flag
`use-68020-instructions?'; I don't believe that we're using any other
68020-specific instructions besides these.
* Add rule for 1-arg fixnum predicates that tries to take advantage of
the preceding LSL.L instruction to test the number, rather than
emitting a redundant TST.L; this new rule is always used in generic
arithmetic expansions.
Chris Hanson [Sun, 10 Dec 1989 00:50:36 +0000 (00:50 +0000)]
In the 680x0 compiled-code interface, added entry points for many
common entries; also added special entries for `apply' of small frame
sizes. These entry points save space in the compiled code,
eliminating the code expansion caused by the recent upgrade of the
compiled-code interface.
Chris Hanson [Fri, 8 Dec 1989 01:52:17 +0000 (01:52 +0000)]
Add new primitive `file-attributes-indirect' that uses `stat' instead
of `lstat'. Change `file-modification-time' to use it.
Chris Hanson [Fri, 8 Dec 1989 01:50:01 +0000 (01:50 +0000)]
Add new primitive `file-attributes-indirect' that uses `stat' instead
of `lstat'.
Chris Hanson [Thu, 7 Dec 1989 05:54:59 +0000 (05:54 +0000)]
Cause floating-overflow traps to signal at all times. Change hardware
trap frames to contain the "code" passed into the signal handler.
Chris Hanson [Thu, 7 Dec 1989 05:39:36 +0000 (05:39 +0000)]
Make sure that time reports appear in decimal notation.
Chris Hanson [Thu, 7 Dec 1989 05:36:28 +0000 (05:36 +0000)]
Adjust parser for hardware trap frames to account for extra object
pushed by microcode.
Chris Hanson [Thu, 7 Dec 1989 05:32:23 +0000 (05:32 +0000)]
If a microcode error is missing a handler, report the error without
special handling for the irritants.
Chris Hanson [Thu, 7 Dec 1989 05:06:30 +0000 (05:06 +0000)]
If a microcode error is missing a handler, report the error without
special handling for the irritants.
Chris Hanson [Thu, 7 Dec 1989 04:49:20 +0000 (04:49 +0000)]
Fix masking bug in `compiled_entry_type'.
Guillermo J. Rozas [Wed, 6 Dec 1989 10:56:13 +0000 (10:56 +0000)]
Modify comments to match the compiler and cmpaux-hppa.h
Guillermo J. Rozas [Wed, 6 Dec 1989 10:55:37 +0000 (10:55 +0000)]
Add store_closure_code hook to save code space.
Guillermo J. Rozas [Wed, 6 Dec 1989 05:49:28 +0000 (05:49 +0000)]
Fix bug in code that detects whether the manifest closure count can be read.
The area forced to memory did not in fact include the count, so the
count read was garbage.
Chris Hanson [Tue, 5 Dec 1989 23:55:00 +0000 (23:55 +0000)]
Don't consider `cons-closure' to be a trivial RTL expression.
Chris Hanson [Tue, 5 Dec 1989 21:01:21 +0000 (21:01 +0000)]
Typo.
Guillermo J. Rozas [Tue, 5 Dec 1989 20:54:08 +0000 (20:54 +0000)]
- Conditionalize open coding according to the port.
There is now a machine-dependent list
(compiler:primitives-with-no-open-coding) in machin.scm which disables
individual primitives.
- Extend fixnum and flonum operations with an overflow? flag.
- Force use of address registers for indirection.
- Don't emit dynamic-link comparison unless the called procedure is
known to be internal.
Guillermo J. Rozas [Tue, 5 Dec 1989 20:52:40 +0000 (20:52 +0000)]
Conditionalize open coding according to the port.
There is now a machine-dependent list
(compiler:primitives-with-no-open-coding) in machin.scm which disables
individual primitives.
Guillermo J. Rozas [Tue, 5 Dec 1989 20:52:20 +0000 (20:52 +0000)]
Extend fixnum and flonum operations with an overflow? flag.
Chris Hanson [Tue, 5 Dec 1989 20:39:58 +0000 (20:39 +0000)]
Force use of address registers for indirection. If the register is
used once, the cost is about the same in both space and time.
However, if it is used more than once, this is both faster and
smaller.
Chris Hanson [Tue, 5 Dec 1989 20:38:22 +0000 (20:38 +0000)]
Split `machine-register-reference' to create new procedure
`guarantee-alias-register!'. This new procedure is like
`load-alias-register!' except that it accepts a machine register as an
argument and handles it appropriately.
Chris Hanson [Tue, 5 Dec 1989 20:17:13 +0000 (20:17 +0000)]
When compiling a reduction whose caller uses a dynamic link, don't
output link comparison code unless the callee is known to be an
internal procedure.
Chris Hanson [Tue, 5 Dec 1989 20:15:12 +0000 (20:15 +0000)]
Change `move-frame-up' rule to use "mov" rather than "lea" when the
source is an address register.
Guillermo J. Rozas [Mon, 4 Dec 1989 21:49:35 +0000 (21:49 +0000)]
Initial revision
Guillermo J. Rozas [Mon, 4 Dec 1989 21:46:27 +0000 (21:46 +0000)]
New compiled code interface.
Guillermo J. Rozas [Mon, 4 Dec 1989 15:34:40 +0000 (15:34 +0000)]
Add three operand utilities for Vax, RISC, etc.
Add copy-to-special-register.
Guillermo J. Rozas [Sun, 3 Dec 1989 13:09:51 +0000 (13:09 +0000)]
Add scheme_to_interface_ble that falls through to
trampoline_to_interface. GR3 now holds the address of
scheme_to_interface_ble.
Chris Hanson [Sat, 2 Dec 1989 21:19:29 +0000 (21:19 +0000)]
Don't undrift a procedure if the only reason for doing so is contagion
from trivial closures.
Chris Hanson [Sat, 2 Dec 1989 05:03:24 +0000 (05:03 +0000)]
Force compilation times to be written out in decimal notation.
Guillermo J. Rozas [Thu, 30 Nov 1989 21:16:41 +0000 (21:16 +0000)]
Add compiler support for spectrum, and change compiler support to use
the C version.
Guillermo J. Rozas [Thu, 30 Nov 1989 16:07:41 +0000 (16:07 +0000)]
New compiled code interface written in C.
Old hooks have been removed and the register block has been
restructured.
Guillermo J. Rozas [Thu, 30 Nov 1989 16:03:27 +0000 (16:03 +0000)]
New compiled code interface written in C.
rtl-procedures now included a field that specifies whether they
need a dynamic link so that the interrupt handler can be determined at
compile time.
Guillermo J. Rozas [Thu, 30 Nov 1989 15:57:16 +0000 (15:57 +0000)]
New compiled code interface written in C.
Guillermo J. Rozas [Thu, 30 Nov 1989 15:54:29 +0000 (15:54 +0000)]
Initial revision
Chris Hanson [Thu, 30 Nov 1989 07:52:42 +0000 (07:52 +0000)]
Fix bug in `expt': zero raised to an integer power always returned
one. Fix bug in `asin': real arguments of magnitude larger than one
should be handled specially.
Guillermo J. Rozas [Thu, 30 Nov 1989 05:45:25 +0000 (05:45 +0000)]
Clean up machine dependent initialization. The assembly language
hooks are now set up by a procedure in this code.
Guillermo J. Rozas [Thu, 30 Nov 1989 05:44:04 +0000 (05:44 +0000)]
- Remove temporary compatibility code and old initialization code.
The hooks are now set up by code in cmpint-mc68k.h .
- Add an initialization procedure to diddle with the 68881.
Guillermo J. Rozas [Thu, 30 Nov 1989 05:42:46 +0000 (05:42 +0000)]
Clean up machine dependent initialization.
Guillermo J. Rozas [Thu, 30 Nov 1989 05:32:10 +0000 (05:32 +0000)]
Fix bug in Do_Compiled_Entry: OBJECT_NEW_DATUM was incorrectly used
for MAKE_OBJECT, and thus all compiled entries were being dumped as
nulls with non-zero datum fields.
Guillermo J. Rozas [Thu, 30 Nov 1989 03:04:15 +0000 (03:04 +0000)]
Fix bug in boot.c by which GC_Reserve was set after MemTop was
computed in Clear_Memory. GC_Reserve is now set by Clear_Memory.
Rename Heap_In_Low_Memory to HEAP_IN_LOW_MEMORY.
Clean up Spectrum stuff and remove previous version of the quad bit
kludge which forced 8 bit type codes to be used.
Guillermo J. Rozas [Tue, 28 Nov 1989 21:12:51 +0000 (21:12 +0000)]
Add a comment about a future improvement to eliminate the delay slot
nullification in execute cache cells.
Guillermo J. Rozas [Tue, 28 Nov 1989 15:56:16 +0000 (15:56 +0000)]
Document trampolines and interrupt checks.
Guillermo J. Rozas [Tue, 28 Nov 1989 13:08:51 +0000 (13:08 +0000)]
Make EXTRACT_ABSOLUTE_ADDRESS and STORE_ABSOLUTE_ADDRESS call
out-of-line procedures which use bit fields rather than masks.
Guillermo J. Rozas [Tue, 28 Nov 1989 13:07:50 +0000 (13:07 +0000)]
Add a IN_CMPINT_C flag so that cmpint2.h can insert code.
Guillermo J. Rozas [Tue, 28 Nov 1989 05:06:33 +0000 (05:06 +0000)]
Fix segment and subsegment directives.
Fix table load instruction to use short pointer-specified segment.
Guillermo J. Rozas [Tue, 28 Nov 1989 05:03:10 +0000 (05:03 +0000)]
Add a missing + sign in the computation of REGBLOCK_SIZE.
Guillermo J. Rozas [Tue, 28 Nov 1989 05:00:45 +0000 (05:00 +0000)]
Fix the encoding of the space register on the instructions that take
a 3-bit space register code.
Remove COMPILER_HOOK_SIZE, no longer needed.
Remove ASM_REGBLOCK and ASM_RESET_HOOK.
Chris Hanson [Tue, 28 Nov 1989 01:28:19 +0000 (01:28 +0000)]
When interconverting ticks and seconds, represent seconds as inexact
numbers and ticks as exact integers.