On Wed, Jun 19, 2019 at 6:17 PM billti via v8-dev <[email protected]> wrote: > > Trying to clarify how the Map tagged pointer on objects is modified during > GC. The MapWord class (objects.h) has the below comment I can't quite parse - > specifically in the parens at the end. Am I reading right that the Map word > isn't a heap object pointer during a full GC? Or is this comment > incorrect/outdated? > > // True if this map word is a forwarding address for a scavenge > // collection. Only valid during a scavenge collection (specifically, > // when all map words are heap object pointers, i.e. not during a full GC). > inline bool IsForwardingAddress() const;
The comment at the top of class MapWord in src/objects/objects.h explains it: // Heap objects typically have a map pointer in their first word. However, // during GC other data (e.g. mark bits, forwarding addresses) is sometimes // encoded in the first word. The class MapWord is an abstraction of the // value in a heap object's first word. More specifically, when MapWord::IsForwardingAddress() returns true, the map word is a SMI, not a HeapObject (i.e., bit 0 is clear.) I'm not 100% sure but I think that condition can arise during both minor and major GCs. -- -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev --- You received this message because you are subscribed to the Google Groups "v8-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/v8-dev/CAHQurc9BLw4k53GPQBOusOPR2-aprRnb2iNy6iE%2BnOBr_wnwvA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
