Stephen Adams [Thu, 27 Jul 1995 21:33:44 +0000 (21:33 +0000)]
General improvement of library procedures:
Improved error checking. More procedures have checks. Code is
organized to avoid duplicate checks and to reduce bloat from
integrated GUARANTEE-* procedures. Makes use of new INDEX-FIXNUM?
predicate.
Replaced some recurive algorithms by iterative equivalents.
Stephen Adams [Thu, 27 Jul 1995 21:23:12 +0000 (21:23 +0000)]
Added COMPILED-CODE-BLOCK/MARKED-START which returns the index that
COMPILED-CODE-BLOCK/CONSTANTS-START used to.
COMPILED-CODE-BLOCK/CONSTANTS-START now parses over the linkage
section.
Stephen Adams [Thu, 27 Jul 1995 21:11:41 +0000 (21:11 +0000)]
The debugging information have been completely overhauled for the new
compiler.
Compiled files (.com files) now countain a COMPILED-MODULE object.
Debugging information is accessed by a DBG-LOCATOR, and the located
files must contains a DBG-WRAPPER with corresponding timestamps.
These objects also contain a version which allows safe extension of
the dbg information.
DBG-BLOCKs now contain access paths which describe how to find the
value for the bindings (they used to describe the inverse, i.e. the
layout of the object).
DBG-PROCEDURES have been streamlined to get lambda list information
from the source code.
DBG-VARIABLES are implemented as pairs to save on storage.
Improved error message for ENVIRONMENT-* operations.
Now there is only one kind of compiled environment which contains a
root object and a DBG-BLOCK. The access paths in the DBG-BLOCK are
relative to the root object.
The access paths are evaluated by a stack machine which understands a
fixed vocabulary of operations and 1- and 2- place primitives.
CCENV/LOOKUP and CCENV/ASSIGN! now give an unbound variable error if
he variable is not bound. They used to return an unavailable
object (currently the symbol "??").
CCENV/ARGUMENTS tries to be clever with #!OPTIONAL arguements - an
assignment trap (i.e. default-object?) determines the number of
arguments provided that the previous argument is either required or
available.
Stephen Adams [Thu, 27 Jul 1995 21:03:12 +0000 (21:03 +0000)]
The debugging information have been completely overhauled for the new
compiler.
Compiled files (.com files) now countain a COMPILED-MODULE object.
Debugging information is accessed by a DBG-LOCATOR, and the located
files must contains a DBG-WRAPPER with corresponding timestamps.
These objects also contain a version which allows safe extension of
the dbg information.
DBG-BLOCKs now contain access paths which describe how to find the
value for the bindings (they used to describe the inverse, i.e. the
layout of the object).
DBG-PROCEDURES have been streamlined to get lambda list information
from the source code.
DBG-VARIABLES are implemented as pairs to save on storage.
Improved error message for ENVIRONMENT-* operations.
Now there is only one kind of compiled environment which contains a
root object and a DBG-BLOCK. The access paths in the DBG-BLOCK are
relative to the root object.
The access paths are evaluated by a stack machine which understands a
fixed vocabulary of operations and 1- and 2- place primitives.
CCENV/LOOKUP and CCENV/ASSIGN! now give an unbound variable error if
he variable is not bound. They used to return an unavailable
object (currently the symbol "??").
CCENV/ARGUMENTS tries to be clever with #!OPTIONAL arguements - an
assignment trap (i.e. default-object?) determines the number of
arguments provided that the previous argument is either required or
available.
Stephen Adams [Thu, 27 Jul 1995 20:37:03 +0000 (20:37 +0000)]
STACK-FRAME/RETURN-ADDRESS is now intelligent and returns the
interrupted entry for interrupt frames. The actual return address (in
this case reflect_to_interface) is available from the file-local
procedure STACK-FRAME/REAL-RETURN-ADDRESS.
Added stack-frame-type methods for converting the stack frames back
into a stream of elements for STACK-FRAME->CONTROL-POINT.
STACK-FRAME/COMPILED-INTERRUPT? now returns the entry to which the
frame belongs.
Stephen Adams [Thu, 27 Jul 1995 14:28:21 +0000 (14:28 +0000)]
Changed RTLGEN/EMIT-ALTERNATIVES to keep all preservation info because
a CFG node internal to the predicate may be the dominator of either
the consequent or alternate.
Stephen Adams [Wed, 26 Jul 1995 19:08:48 +0000 (19:08 +0000)]
Merged OS2 changes and new compiler changes.
OS2 changes tag external entry points with a calling convention (the C
compiler supports several).
New compiler changes:
Fixed continuation bug on i386. An incorrect continuation was being
left as garbage on the stack, where the i386 expected #f if the value
was expected to be discarded.
coerce_to_compiled now understands arity dispatched entities. There
are now several places where procedures are turned into trampolines.
These ought to be rationalized.
Fixed incorrect arity in coerce_to_compiled.
Fixed but with failure cases when applying a compiled procedure from
PRIMITIVE_APPLY from a compiled context.
These type-in (i.e. interpreted) test cases now all give correct and
parsable error stack frames:
. The original bug case (...->primitive APPLY->apply_compiled_from_primitive)
Stephen Adams [Wed, 26 Jul 1995 18:41:54 +0000 (18:41 +0000)]
New version for new compiler. Many changes due to new register
calling convention and preservation.
95/06/28
Fixed fixnum_lsh to compute correct values for negative shifts.
95/03/28
Fixed off-by-1 error at end of ADDIB chain at new_interrupt_common.
94/12/13
Tidied up generic arithmetic some more. Flonum allocation is now
`open-coded', trimming a few cycles of the operation.
Re-arranged the builtin table as some things had moved position.
94/12/12
. fixed generic multiply to do fixnum*fixnum case (it was calling the
handler procedure, reducing performance by a factor of 7).
. fixed generic multiply to return exact 0 when multiplying a flonum
by exact 0.
. tidied other generic operations
Stephen Adams [Fri, 21 Jul 1995 14:28:53 +0000 (14:28 +0000)]
Lots of changes, mainly:
. Extending the language of paths to include primitives.
. Fixing the offsets for parameters
. Introducing sharing of the path expression elements
. Generating vector based paths rather than lists.
Stephen Adams [Mon, 17 Jul 1995 20:10:43 +0000 (20:10 +0000)]
Implemented new version of the uncompressor. In addition to being
faster, this version avoids the use of FLUID-LETting global bindings
and a consequent re-entrancy bug.
Stephen Adams [Fri, 14 Jul 1995 01:00:34 +0000 (01:00 +0000)]
Blew away old dbg info generation. Added code to `link' variable
access paths that have elements thata re labels or constants in the
compiled code block.
Stephen Adams [Wed, 12 Jul 1995 19:43:43 +0000 (19:43 +0000)]
Added `unspecific' to the end of the file so that it may be loaded
into an interpreted runtime band without causing an error from the
reference trap that was returned ast the value of the last expression.
Stephen Adams [Wed, 12 Jul 1995 14:22:40 +0000 (14:22 +0000)]
During output of constructor and loader source files, fluid-let
*UNPARSER-LIST-BREADTH-LIMIT* and *UNPARSER-LIST-DEPTH-LIMIT* to #F to
avoid illegal triuncated source code.
Chris Hanson [Tue, 11 Jul 1995 23:10:49 +0000 (23:10 +0000)]
New implementation of OS/TRIM-PATHNAME-STRING takes second argument
(prefix to trim off) and tests to see if the prefix should be removed
or retained. This changes behavior in some unusual cases, but allows
the \\foo\bar notation to be used on DOS/OS2/NT.
Stephen Adams [Mon, 10 Jul 1995 21:15:01 +0000 (21:15 +0000)]
Added a few colons to error messages because I spent five minutes
trying to understand a message that with the particular irritants
happened to mean meant something different without the colon.
Chris Hanson [Fri, 7 Jul 1995 06:37:24 +0000 (06:37 +0000)]
Change FILE-TIME->STRING to use a full year rather than just the last
two digits. RFC 822 specifies just two digits, but this has been
superseded by a later RFC.