Chris Hanson [Tue, 1 Aug 1995 05:05:08 +0000 (05:05 +0000)]
Fix weird bug in OUTPUT-BUFFER/WRITE-SUBSTRING. This bug only
occurred when line-translation was used, and it caused the system to
hang during some writes. There was some associated anomalous behavior
that is not yet explained.
Stephen Adams [Sat, 29 Jul 1995 16:55:56 +0000 (16:55 +0000)]
Changed to use ENOUGH-PATHNAME for reporting the file names. The
previous version was using the pathname-directory list and losing
information. There was also a #F/() bug in this code.
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.