REC-01nov91.patches By Roger Critchlow (rec@arris.com or rec@elf.org). ! by Lance Norskog (thinman@netcom.com). There is one small problem with the Intel 386/SYSV subset of the MCC01-01nov91.patches to the 01nov91.tar.Z distribution of Scheme->C. Specifically, most of the garbage collector gets excluded by a #ifndef SYSV clause. The appended patches, which should be applied to scrt/heap.c after the MCC01-01nov91.patches, will fix this. Things work much better with the garbage collector. Some other things 386 users should be aware of: scrt/i386.s should be an empty file. It isn't built by the MCC patches but scrt/makefile will look for it. If you're going to build on a system with 14 character file names, ie most System V.3.2 Unix implementations, then you'll need the tar.fix script from one of the earlier 386 patch kits, either REC-28sep90.patches or SPARC-386.patches. ! The REC-28sep90.patches file also includes scripts to build shared ! library versions of the S2C system and Xlib programs on AT&T V.3 ! machines. These have not been tested with the 01nov91 release. ! The use of select() in the read/eval loop causes interaction to ! stop working on regular terminals under AT&T Unix V.3. But it ! does work under an Xterm window, and on all terminals under ! ISC Unix V.3, and probably ESIX, DELL, and SCO as well. You ! may have to back off to the 28sep90 read/eval loop for AT&T Unix. -- rec/lcn -- ------------------------------------------------------------------------ *** heap.c~ Tue Nov 19 23:24:07 1991 --- heap.c Tue Nov 19 23:24:22 1991 *************** *** 1427,1433 **** check_obarray(); } if (sc_gcinfo) { - #ifndef SYSV fprintf( stderr, "\n***** COLLECT %d%% allocated (%d%% waste, %d MB) -> \n", (wasallocated*100)/sc_heappages, --- 1427,1432 ---- *************** *** 1434,1440 **** --- 1433,1441 ---- (sc_extwaste*100)/(sc_heappages*PAGEWORDS), (sc_heappages*PAGEBYTES+ONEMB/2)/ONEMB ); } + #ifndef SYSV getrusage( 0, &startru ); + #endif /* SYSV */ /* Zero the current cons block, end the current extended block, initialize sc_locklist, advance the generation. *************** *** 1521,1529 **** --- 1522,1533 ---- sc_allocatedheappages = sc_generationpages; /* Finish up */ + #ifndef SYSV getrusage( 0, &stopru ); updategcru(); + #endif if (sc_gcinfo) { + #ifndef SYSV fprintf( stderr, " %d%% locked %d%% retained %d user ms", (sc_lockcnt*100)/sc_heappages,