Chris Hanson [Mon, 12 Feb 1990 23:07:31 +0000 (23:07 +0000)]
Fix minor bug in last change.
Chris Hanson [Sun, 11 Feb 1990 22:34:12 +0000 (22:34 +0000)]
Changes from JMiller that are needed to get this stuff running on the
DECStation 3100.
Chris Hanson [Sat, 10 Feb 1990 23:45:11 +0000 (23:45 +0000)]
Add new hash-table abstraction; this is loaded by
(load-option 'hash-table)
This abstraction is very similar to that of Common Lisp.
Chris Hanson [Sat, 10 Feb 1990 23:43:09 +0000 (23:43 +0000)]
Initial revision
Chris Hanson [Fri, 9 Feb 1990 19:11:24 +0000 (19:11 +0000)]
Define `symbol-hash-mod'.
Chris Hanson [Fri, 9 Feb 1990 00:57:43 +0000 (00:57 +0000)]
Run scheme-mode-hook before scheme-interaction-mode-hook.
Chris Hanson [Thu, 8 Feb 1990 02:50:03 +0000 (02:50 +0000)]
"fixnum.o" should depend on "mul.c", not "os.o".
Chris Hanson [Thu, 8 Feb 1990 00:39:02 +0000 (00:39 +0000)]
Add changes to support gcc on the vax.
Chris Hanson [Thu, 8 Feb 1990 00:36:31 +0000 (00:36 +0000)]
Fix cold-load problems.
Chris Hanson [Thu, 8 Feb 1990 00:05:26 +0000 (00:05 +0000)]
Fix cold-load problems.
Chris Hanson [Wed, 7 Feb 1990 23:26:29 +0000 (23:26 +0000)]
*** empty log message ***
Chris Hanson [Wed, 7 Feb 1990 23:25:58 +0000 (23:25 +0000)]
Implement new record proposal.
Guillermo J. Rozas [Wed, 7 Feb 1990 21:33:20 +0000 (21:33 +0000)]
Initial revision
Guillermo J. Rozas [Wed, 7 Feb 1990 21:31:56 +0000 (21:31 +0000)]
Add in sun4 (sparc) descriptions for Morry Katz.
Panayotis Skordos [Tue, 6 Feb 1990 22:04:04 +0000 (22:04 +0000)]
*** empty log message ***
Guillermo J. Rozas [Tue, 6 Feb 1990 16:22:17 +0000 (16:22 +0000)]
Changes by JMiller to make it work under HP cc and Sun cc (PCC?).
Structure returns are different for those two compilers and GCC.
Guillermo J. Rozas [Tue, 6 Feb 1990 16:15:20 +0000 (16:15 +0000)]
Changes by JMiller to make it work under HP cc and Sun cc (PCC?).
Structure returns are different for those two compilers and GCC.
Chris Hanson [Fri, 2 Feb 1990 18:40:04 +0000 (18:40 +0000)]
* Add new operations to register allocator that determine whether
allocation will cause unloading or spilling of registers. Change the
operation `standard-register-reference' to use these operations when
deciding whether or not to refer to a register's home rather than
allocation a new alias for it.
* For an inline-coded procedure (e.g. LET), create an association
between each parameter of that procedure and the FG node that supplies
that parameter's value in the call. This association is used to
optimize the initialization of variables that will be stored in cells:
the cell for such a variable is created during the call rather than
after it. Previously, a stack-allocated parameter was initialized by
pushing its initial value, and then the contents of the stack location
were removed, placed in a new cell, and the cell stored back into the
stack location. Now, the parameter's value is wrapped in a cell
before being pushed.
* RTL output files have been changed to print uninterned symbols by
name.
* The code generated for assignments in value position has been
slightly changed to guarantee the correct order of events.
Previously, the order of the computation of the new value and the
fetching of the old value was indeterminate; now it is guaranteed that
the new value is computed before the old value is fetched.
* The bit-string representation of register sets has been restored.
This has a time penalty for small register sets, but guarantees that
access to the register sets is independent of the number of registers.
Certain programs with large numbers of registers were being
unreasonably penalized by the list-based representation. Also, the
dependencies for the file "rtlbase/regset" were adjusted to reflect
the files that actually refer to it.
* The RTL generated for cached variable assignments has been changed
to precompute the value of the assignment and store it in a pseudo
register. Previously, the code was replicated.
Chris Hanson [Fri, 2 Feb 1990 17:25:50 +0000 (17:25 +0000)]
New definition of `complex:acos' preserves more precision and is more
efficient. This one also does not introduce inexact real or imaginary
zero components in certain (important) boundary cases, such as:
(acos 2)
;Value: 0.+1.3169578969248166i
Guillermo J. Rozas [Wed, 31 Jan 1990 05:01:53 +0000 (05:01 +0000)]
Fix bug in fasdump by which zero length files were left around when
the fasdump failed.
Guillermo J. Rozas [Wed, 31 Jan 1990 02:03:13 +0000 (02:03 +0000)]
Fix bug in load/internal by which empty files caused an error in the
fasl check. peek-char returned an eof-object, and char->ascii barfed
on that.
Now, if the file is empty, it is loaded as a source file, whatever
that means.
Guillermo J. Rozas [Tue, 30 Jan 1990 14:44:25 +0000 (14:44 +0000)]
Fix bug in Prepare_Apply_Interrupt noticed after last set of changes
(addition of RC_INTERNAL_APPLY_VAL).
Guillermo J. Rozas [Tue, 30 Jan 1990 14:35:28 +0000 (14:35 +0000)]
Fix bug in Prepare_Apply_Interrupt noticed after last set of changes
(addition of RC_INTERNAL_APPLY_VAL).
Guillermo J. Rozas [Mon, 29 Jan 1990 22:35:32 +0000 (22:35 +0000)]
Add the INTERNAL-APPLY-VAL return code.
Guillermo J. Rozas [Mon, 29 Jan 1990 22:32:57 +0000 (22:32 +0000)]
Add the INTERNAL-APPLY-VAL return code. It replaces the procedure
with the current value of Val and then proceeds to apply. Apply
errors use this return code rather than INTERNAL-APPLY to restart.
Under normal operation there is no change since a POP-RETURN-ERROR
return code (which restores Val) is pushed as well, so to make use of
this feature the top few frames of the stack must be eliminated before
invoking the continuation.
Guillermo J. Rozas [Mon, 29 Jan 1990 21:30:36 +0000 (21:30 +0000)]
Add the INTERNAL-APPLY-VAL return code.
Guillermo J. Rozas [Mon, 29 Jan 1990 21:29:09 +0000 (21:29 +0000)]
Initial revision
Guillermo J. Rozas [Mon, 29 Jan 1990 21:14:15 +0000 (21:14 +0000)]
Add the INTERNAL-APPLY-VAL return code.
Guillermo J. Rozas [Thu, 25 Jan 1990 16:46:40 +0000 (16:46 +0000)]
Initial revision
Guillermo J. Rozas [Thu, 25 Jan 1990 16:45:49 +0000 (16:45 +0000)]
New compiler port.
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.