RESOLVED FIXED Bug 54988
Re-create StructureTransitionTable class, encapsulate transition table
https://bugs.webkit.org/show_bug.cgi?id=54988
Summary Re-create StructureTransitionTable class, encapsulate transition table
Gavin Barraclough
Reported 2011-02-22 12:56:20 PST
The Structure class keeps a table of transitions to derived Structure types. Since this table commonly contains a single entry we employ an optimization where instead of holding a map, we may hold a pointer directly to a single instance of the mapped type. We use an additional bit of data to flag whether the pointer is currently pointing to a table of transitions, or a singleton transition. Previously we had commonly used a pattern of storing data in the low bits of pointers, but had moved away from this since it causes false leaks to be reported by the leaks tool. However in this case, the entries in the map are weak links - this pointer will never be responsible for keeping an object alive. As such we can use this approach provided that the bit is set when a table is not in use (otherwise the table would appear to be leaked). Additionally, the transition table currently allows to entries to exist for a given key - one specialized to a particular value, and one not specialized. This is unnecessary, wasteful, and a little inconsistent. (If you create an entry for a specialized value, then a non-specialized entry, both will exist. If you create an entry for a non-specialized value, then try to create a specialized entry, only a non-specialized form will be allowed.) This shows a small progression on v8.
Attachments
The patch (24.37 KB, patch)
2011-02-22 12:59 PST, Gavin Barraclough
sam: review+
Gavin Barraclough
Comment 1 2011-02-22 12:59:15 PST
Created attachment 83371 [details] The patch
Build Bot
Comment 2 2011-02-22 13:19:41 PST
Gavin Barraclough
Comment 3 2011-02-22 13:54:35 PST
Fixed in r79355.
Note You need to log in before you can comment on or make changes to this bug.