FIX>> FIX>> FIX>> >> ) "AUX" RLEN STK? ALLOCADDR ENDADDR (BOUNDS-LAB ) (IB-LAB ) (F-LAB ) (EXIT-LAB ) (M-LAB )) >)> >) (<==? .HINT GBIND> >) (<==? .HINT LBIND> ) (T )> > '(AC-0 AC-1 AC-2 AC-3 AC-4 AC-5 AC-6)> > 4>>> > 4>>> > ; "See if this guy is on the stack" ,LAST-INST-LENGTH> >> > ,LAST-INST-LENGTH> > > ,LAST-INST-LENGTH> > > ,LAST-INST-LENGTH> )> > >> ,LAST-INST-LENGTH> > > > ,LAST-INST-LENGTH> ; "Jump if already marked" >> > > > > > ,LAST-INST-LENGTH> LONG> > > > > > > >> > .ALLOCADDR> > >> > > >) (T )> NORMAL> > '(AC-0 AC-1 AC-2 AC-3 AC-4 AC-5 AC-6)> > > > > ; "Actual dope word pointer" > ; "Number of bytes including slop in last word" > > '(AC-0 AC-1 AC-2 AC-3 AC-4 AC-5 AC-6)> > > > > ; "Call this guy with ac-0 set up to have number of bytes to subtract from dope word pointer to get new pointer; ac-1 has pointer to dope word. 0-6 have been munged." ) (BLT-LOOP ) (NF-LAB ) (F-LAB ) (SHT-LAB ) (DONE-LAB )) #DECL ((VAR) VARTBL (ALLOC-ATOM END-ATOM NEXT-ATOM) ATOM (RES) ) > 4>>> > 4>>> ;"Pointers to GVAL slots for AL and END-SPACE" > ,LAST-INST-LENGTH> > ;"can be BBSS when assembler and friends hacked" > ;"Save for making new pointer" > ;"Size of whole structure" > ;"in bytes" > > ;"Current allocation" > ,LAST-INST-LENGTH> ;"See if overflowed--won't fit" > > ;"See if won't fit in current area" ,LAST-INST-LENGTH> LONG> > > ;"Go to another area" > ;"get AL back" > > ;"get stuff back from stack" > ;"compute new AL" > ;"stuff relocation into dope word now points to 1st dw" > .ALLOCADDR> ;"update AL" > ;"Get gross byte count back" > ;"Top old structure" > > > > > > > > > ;"Turn off mark bit" > > > > ; "Point to top" > LONG> ) (T > )> NORMAL> ) (F-LAB ) (LOOP-LAB ) (NM-LAB ) (DONE-LAB ) (M-LAB )) > 4>>> > 4>>> > '(AC-0 AC-1 AC-2 AC-3 AC-4 AC-5 AC-6)> > > ; "Allocate temps" > > > > ; "2 has # of bytes in current pointer; 3 points to first dw" > ,LAST-INST-LENGTH> ; "jump if already marked" > > > ; "# of words in whole structure" > ; "Bytes in structure" > > > ,LAST-INST-LENGTH> > > ,LAST-INST-LENGTH> > > LONG> > > > > > ; "New AL" > ; "Stuff pointer to new dw into old" > ; "copy dope words" > ; "Clear mark bit in new" > .ALLOCADDR> > ; "Flush dope words from byte count" > ; "Point to top of old (ac 1 points to top of new)" > ; "Number of elements to mark" ,LAST-INST-LENGTH> > > > ; "See if this guy is structured" ,LAST-INST-LENGTH> > > > > > > > > > ,LAST-INST-LENGTH> > > > > > > >) ()> NORMAL> ) (DONE-LAB ) (LOOP-LAB ) (NF-LAB ) (F-LAB ) (NB-LAB ) (MC-LAB ) (UNDO? <>)) > ) ()> > 4>>> > 4>>> > '(AC-0 AC-1 AC-2 AC-3 AC-4 AC-5 AC-6)> > > > > > ,LAST-INST-LENGTH> > ;"Mark bit set, need to hack this up." > > > > ,LAST-INST-LENGTH> > LONG> LONG> > > > > .ALLOCADDR> > ;"Point to right part of list cell" > ;"Pick up pointer to previous cell" ,LAST-INST-LENGTH> > ;"Fix up cdr pointer in previous cell" > ;"New previous cell pointer" > ;"Pick up cdr pointer" > ;"Relocation for old cell" > ;"Make sure new cell doesn't have garbage in cdr slot" > > > ;"See if car's type needs marking" ,LAST-INST-LENGTH> > > ;"Save pointer to old cell" ;"Save old cdr pointer" > ;"Mark the guy" > > > > >)> > ;"Move cdr pointer to right place" ,LAST-INST-LENGTH> ;"All done if empty cdr" > LONG> LONG> ;"Check bounds of list cdr" > > ,LAST-INST-LENGTH> ;"Loop back if in bounds" ,LAST-INST-LENGTH> > ;"Pick up pointer to last cell" ,LAST-INST-LENGTH> ;"None, just clean up and leave" > ;"Clean up last cell" > > > > >) (T )> NORMAL> PREF-VAL>> NORMAL> ) >> > >)> > > >)> .VAC> ) >) (ELSE > > >)>)>> )) #DECL ((VAR) VARTBL (VAL) ) NORMAL> )> ) NORMAL> ) NORMAL> ) <> .VAR .VAL> NORMAL> ) > NORMAL> ) VAR "AUX" (TLAB ) (ELAB ) NAC ADDR) #DECL ((VAC) AC) > <>> > >>>)> <>> > > > > >) (ELSE >)> > ) (ELSE )>> > > >)> > > >)> .VAC> )) #DECL ((VAR) VARTBL) NORMAL> )) #DECL ((VAR) VARTBL) NORMAL> )) #DECL ((VAR) VARTBL) NORMAL> )> ) .VAR> NORMAL> ) .VAR .GCP> NORMAL> ) .VAR> NORMAL> ) (TLAB ) (TLAB2 ) (ELAB )) #DECL ((VAR) VARTBL (RES) ) PREF-VAL>>> ) (ELSE >)>> ) (ELSE )>> <>> ) (ELSE )>> ) (ELSE >)>> ) (ELSE )>> <>> ) (T )>> <>> > ) (ELSE >)>> > .TAC .RES>)> NORMAL> ) (TLAB ) (ELAB ) LV) #DECL ((VAR) VARTBL (RES) ) PREF-VAL>>> > <>> > > NORMAL> <> .VAR>> <> .VAR>> <> .VAR>> > > > ) "AUX" VAC1 VAC2) PREF-VAL>>> PREF-VAL>> > )> ) "AUX" (VAC <>) (LAB ) (LAB1 ) VVAC) > '(AC-0 AC-1 AC-2 AC-3 AC-4 AC-5 AC-6)> > > >) (T >> >> .VVAC>) (ELSE .VVAC>)> > > .VAC LONG> > .VVAC> >)> NORMAL> .PGS>>