Commit Graph

4 Commits

Author SHA1 Message Date
shivers 00af71f77d There was a weird bug in the GC system. The image-writing code causes a
GC to assemble a compacted heap image in newspace which it then writes out
to disk. Then the VM calls ABORT-GC to cancel the GC operation, which scans
the current space, fixing up the "broken hearts" -- restoring word 1 of
each structure that got clobbered with a forwarding pointer.

Unfortunately, someone (possibly myself) had inserted a post_gc_fdports() call
into the VM between the gc and the abort. This procedure updates a C vector of
Scheme values (fdports[]) by following forwarding pointers -- BUT -- in this
instance we didn't really want to break hearts, and the abort-gc code didn't
know about the fdports[] vector, so it couldn't undo the effects. This caused
the fdports[] vec to point into hyperspace after the image dump, and *that*
meant on the next GC, all the live ports were considered dead. Oops.

The fix was to remove this bogus call. The post_gc_fdports() proc is now
called only after a *real* GC.
    -Olin
1995-10-29 15:45:22 +00:00
shivers 4ae0a89c53 Now imports machine/stdio_dep.h interface spec. 1995-10-26 13:34:33 +00:00
shivers 7c90829350 Added a whole bunch of .h files describing the module structure of the C
files. These files mostly mediate between the C source (export) and
the corresponding C stub files (import) generated by the Scheme files
calling the C routines.

This provided much better argument type checking that before; lots of
small bugs were caught.

Also added const keywords wherever I could find a reasonable place
to improve error detection and efficiency.

Tuned up the makefile to reflect all of this structure. Its dependencies
were pretty out-of-date as it was. It could probably use further work.
1995-10-22 12:34:53 +00:00
bdc 2302efe24e *** empty log message *** 1995-10-14 03:34:21 +00:00