Descriptioncmd/cc, cmd/gc, runtime: Uniquely encode iface and eface pointers in the pointer map.
Prior to this change, pointer maps encoded the disposition of
a word using a single bit. A zero signaled a non-pointer
value and a one signaled a pointer value. Interface values,
which are a effectively a union type, were conservatively
labeled as a pointer.
This change widens the logical element size of the pointer map
to two bits per word. As before, zero signals a non-pointer
value and one signals a pointer value. Additionally, a two
signals an iface pointer and a three signals an eface pointer.
Following other changes to the runtime, values two and three
will allow a type information to drive interpretation of the
subsequent word so only those interface values containing a
pointer value will be scanned.
Patch Set 1 #Patch Set 2 : diff -r f935172343b9 https://code.google.com/p/go/ #Patch Set 3 : diff -r f935172343b9 https://code.google.com/p/go/ #Patch Set 4 : diff -r d70c9a6579ca https://code.google.com/p/go/ #
MessagesTotal messages: 3
|