Bug 181953

Summary: Split objects that have indexed properties from normal objects.
Product: WebKit Reporter: Keith Miller <keith_miller>
Component: JavaScriptCoreAssignee: Keith Miller <keith_miller>
Status: NEW    
Severity: Normal CC: dominik.infuehr, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
WIP
none
WIP
none
WIP more tests pass
none
Patch
none
WIP none

Keith Miller
Reported 2018-01-22 14:36:20 PST
The current approach we have for handling indexed properties, index masking, works pretty well but it has a large perf cost. We think a large part of this cost is the extra allocation size for JSFinalObjects. Almost all JSFinalObjects don't have indexed properties. Thus, if we split the butterfly into two buffers where every object has named property storage (replacing butterfly) and all indexed objects have a second pointer containing indexed properties, we will save space on most objects. If a non-JSArray gets an indexed property later we can allocate an buffer object and put it in the named property storage.
Attachments
WIP (281.78 KB, patch)
2018-01-24 15:22 PST, Keith Miller
no flags
WIP (736.95 KB, patch)
2018-02-19 14:12 PST, Keith Miller
no flags
WIP more tests pass (780.27 KB, patch)
2018-03-12 12:09 PDT, Keith Miller
no flags
Patch (798.84 KB, patch)
2018-03-22 08:24 PDT, Keith Miller
no flags
WIP (798.88 KB, patch)
2018-03-26 02:03 PDT, Keith Miller
no flags
Keith Miller
Comment 1 2018-01-22 14:37:37 PST
Keith Miller
Comment 2 2018-01-24 15:22:05 PST
Keith Miller
Comment 3 2018-02-19 14:12:53 PST
Keith Miller
Comment 4 2018-03-12 12:09:55 PDT
Created attachment 335620 [details] WIP more tests pass
Keith Miller
Comment 5 2018-03-22 08:24:07 PDT
Keith Miller
Comment 6 2018-03-26 02:03:49 PDT
Note You need to log in before you can comment on or make changes to this bug.