[Webkit-unassigned] [Bug 54988] New: Re-create StructureTransitionTable class, encapsulate transition table

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Tue Feb 22 12:56:20 PST 2011


https://bugs.webkit.org/show_bug.cgi?id=54988

           Summary: Re-create StructureTransitionTable class, encapsulate
                    transition table
           Product: WebKit
           Version: 528+ (Nightly build)
          Platform: PC
        OS/Version: Mac OS X 10.5
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: JavaScriptCore
        AssignedTo: webkit-unassigned at lists.webkit.org
        ReportedBy: barraclough at apple.com


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.

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list