[LMH] Oldspace?
Steve Krueger
stevelisp@grape-krueger.com
Tue May 25 20:52:01 2004
Alastair,
Pointers to oldspace are never permitted inside the machine, so if the
data being read is a pointer to oldspace, the object it points to must
be transported to newspace and the pointer changed to a pointer to the
new object.
Of course, if the object read was an immediate type like a fixnum, you
don't do any of the extra stuff.
Here is how it works on Explorer I:
After a memory read, the level 1 memory map is run again on the data
returned in order to get the oldspace bit. This bit is bit 10 (decimal)
of the Level 1 map.
The Q-DATA-TYPE field plus the oldspace bit are used for the transport
dispatch microinstruction. The resulting dispatch table has an even and
an odd entry for each data type. Pointer types send the microcode off
to the transporter to copy the object to newspace and fixup the pointer
in MD.
The transporter dispatch also uses a special feature
DISPATCH-STACK-OWN-ADDRESS. Call transfers from the transporter
dispatch stack the return address of the transporter dispatch rather
than of the next microinstruction or the one after that (depending on
XCT-NEXT). This allows a forwarding pointer (DTP-GC-FORWARD that the
transporter leaves behind in oldspace when it evacuates an object, or
DTP-ONE-Q-FORWARD, etc.) to loop following forwarding pointer. Neat trick.
On Explorer II (Hummingbird-based), we split off the region bits in the
memory map into a separate address space map. The AS map was addressed
by MD always and the VM map was addressed by VMA. The oldspace bit
(being a region property) was in the AS map. The AS map was run after
the data was returned to get the oldspace bit so that it was set up for
the transporter dispatch. In all other ways, it was the same as
described above.
I just dashed this off. I hope it isn't too cryptic.
-Steve
nyef@sc.am wrote:
>Hello all.
>
>Just a quick question. For DISPATCH on the Oldspace bit, is this the
>level-1 map from the last read or write through VMA, the level-1 map
>from the current contents of VMA, or the level-1 map indexed from the
>current contents of MD?
>
>--Alastair
>
>http://lists.unlambda.com/mailman/listinfo/lispm-hackers
>
>
>