[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

GC bug

Have just returned from a two-week vacation, and saw your plaints about
losing certain FIXNUM constants during fasloading.  Indeed, sending
notes to BUG-LISP (or BUG-COMPLR, as the case may be) is the right thing
to do, since many persons monitor these notes, and various persons may
have already seen the particluar problem at hand, or know its solution.
As to the fasload/gcprotect problem, I don't think I wrote that code to
do the "omit-gcprotect-if-already-protected-otherwise" thing, but I do
remember the discussions on it:
1) an instruction like "(MOVEI 1 '(HERE IS 3.5))"  should cause the whole
   quotified list to be put on the gcprotect table, but should not cause
   any of the atoms "HERE", "IS", or "3.5" to be enterend on the table
   (thereby consuming space to protect something already protected by 
   virtue of its being part of the protected list)
2) but instructions like "(MOVEI 1 'FOOBAR)" and "(MOVEI 1 '3.5)"
   should make direct entries for the gcprotect table (unless, as in the
   case of symbols, they are already protected by the so-called "ccn" bit.)
I remember HIC hacking this about a year ago, so assume that his analysis
is correct, i.e. that fasload is not protecting directly-referenced numbers,
and will try to add that to the source within a day or so.  If you (REM) are
using the SAIL version of maclisp, you will need a re-assembly
in order to see the difference;  hopefully, the ITS versions can
merely be patched