Chris Hanson [Fri, 8 Jan 1993 00:05:44 +0000 (00:05 +0000)]
Fixed bug in inline expander for OBJECT-TYPE?.
Added inline expanders for primitives: GET-INTERRUPT-ENABLES,
SET-INTERRUPT-ENABLES!, PRIMITIVE-GET-FREE, PRIMITIVE-INCREMENT-FREE,
HEAP-AVAILABLE?, and SET-STRING-LENGTH!. Some of these primitives are
new with microcode version 11.125.
For the MIPS, added support for open-coding of FIXNUM-LSH.
Chris Hanson [Sat, 2 Jan 1993 07:33:39 +0000 (07:33 +0000)]
Complete redesign of environment model and declaration parser. This
was prompted by a bug that had been present since the original design;
the bug was inherent in the design, hence the need for a redesign.
The new design has the following features:
* The old design used a two-level environment model for the top-level
environment, in which imported and global bindings were
distinguished from top-level bindings appearing in the file. The
new design uses a single top-level environment for all bindings.
This is the change fixed the bug, but introduced performance
problems because the two-level design had a special hack for the
global environment; the performance problems were fixed by:
* The new design uses a hash table to hold the bindings in (the model
of) an environment frame when the number of bindings exceeds a
preset threshold. This allows very large environment frames to have
reasonable access times, while avoiding the time and space overhead
of the hash table for small environment frames; typically only a few
frames will use the hash table mechanism. The hash table uses open
addressing with double hashing.
* Because ".ext" files are internal data structures that are written
to a file, old ".ext" files are incompatible with the new scode
optimizer. In order to prevent lossage, ".ext" files have a new
format, which contains a version number. When the scode optimizer
encounters an old ".ext" file, or a new one with the wrong version
number, it will emit a warning and ignore it.
* Code that supported special "error combinations" has been removed,
since these are no longer used.
* Code that generated ".unf" files has been removed. Since several
procedures with semi-public interfaces accept arguments or return
values relating to these files, the procedures ignore such arguments
and return dummy values. The global variable SFU? has been
eliminated.
Chris Hanson [Mon, 28 Dec 1992 22:03:26 +0000 (22:03 +0000)]
Change implementation of INVOCATION:APPLY to use the new
shortcircuit_apply code in the microcode interface. This change
requires version 11.124 of the microcode.
Chris Hanson [Mon, 28 Dec 1992 21:56:38 +0000 (21:56 +0000)]
Fix bug in code that recognizes named structures. Don't integrate
predicates, since compiler is unable to take advantage of this
integration in the situations that need it.
Chris Hanson [Thu, 17 Dec 1992 00:05:34 +0000 (00:05 +0000)]
Change reference from UNPARSER-METHOD? to PROCEDURE? so that cold-load
will work with interpreted code. The error test this implements isn't
very important anyway.
Chris Hanson [Wed, 9 Dec 1992 23:38:37 +0000 (23:38 +0000)]
Further restrict application of records: the type that appears in the
record's zeroth slot must be a record whose length field is marked
with TC_TRUE. This allows a record to have another record be its type
without having to reserve the application-procedure slot in all
records.
Chris Hanson [Wed, 9 Dec 1992 23:29:40 +0000 (23:29 +0000)]
Add inline coding for OBJECT-TYPE, PRIMITIVE-OBJECT-TYPE, and
PRIMITIVE-OBJECT-SET-TYPE. Change coding for %RECORD-LENGTH to not
assume that record length has type code zero.
Chris Hanson [Fri, 4 Dec 1992 03:17:47 +0000 (03:17 +0000)]
Undo last change: a substring cannot be upper or lower case unless
there is at least one character of that case in it. Rewrite
SUBSTRING-CAPITALIZED? to fix the bug properly.
Chris Hanson [Fri, 4 Dec 1992 03:04:54 +0000 (03:04 +0000)]
Undo last change: a substring cannot be upper or lower case unless
there is at least one character of that case in it. Rewrite
SUBSTRING-CAPITALIZED? to fix the bug properly.
Change the definition of substring-lower-case? and
substring-upper-case? so that strings with no upper (lower) case
characters match. The previous definition required at least one lower
(upper) case character. Thus the empty string (or a string with only
non-alphabetic characters) is both lower and upper case, while it was
previously neither.
Switch the order of the capitalized and uppercased tests in
replace-match. It only makes a difference on strings of length 1, in
which case it preferes to capitalize.
Change the interface to find_symbol to allow char pointers to be
looked up in the obarray, thus there is no need to cons if there
is already a symbol by the name being checked.
Chris Hanson [Tue, 24 Nov 1992 22:27:15 +0000 (22:27 +0000)]
Add several commands: rcs-ci-locked-files, rcs-list-locked-files,
rcs-diff, and rcs-log. Also add new variable rcs-append-output, which
controls what happens to output to previous rcs commands when a new
one is executed.
Close interrupt window in disk-restore: The continuation dumped must
have no interrupts enabled until after it resets the fixed objects
vector (containing the interrupt-handlers vector).
CScheme dumps an Scode combination whose operator is the continuation
object.
On restore, it checks for interrupts at the apply point, and if an
interrupt is taken, the fixed objects vector (containing the
interrupt-handlers vector) is invalid because it has not been set yet.