DescriptionReimplement Maps and Sets in JS
Previously, the only optimized code path for Maps and Sets was for String keys.
This was achieved through an implementation of various complex operations
in Hydrogen. This approach was neither scalable nor forward-compatible.
This patch adds the necessary intrinsics to implement Maps and Sets almost entirely
in JS. The added intrinsics are:
%_FixedArrayGet
%_FixedArraySet
%_TheHole
%_JSCollectionGetTable
%_StringGetRawHashField
With these additions, as well as a few changes to what's exposed as runtime functions,
most of the C++ code backing Maps and Sets is gone (including both runtime code in
objects.cc and Crankshaft in hydrogen.cc).
Committed: https://crrev.com/909500aa1db9789b68e101045a6359a7fcb30e83
Cr-Commit-Position: refs/heads/master@{#27605}
Patch Set 1 #Patch Set 2 : Disable one more test #
Total comments: 21
Patch Set 3 : Moved more to JS #
Total comments: 2
Patch Set 4 : Fix harmony-templates.js #Patch Set 5 : A few more tweaks #Patch Set 6 : More macro-ification #Patch Set 7 : Rename all the things, add more macros, and remove unnecessary %_CallFunctions #
Total comments: 24
Patch Set 8 : Rebased #Patch Set 9 : Address verwaest comments #Patch Set 10 : arv change #Patch Set 11 : Un-indent, remove extra use strict #Patch Set 12 : Merged to master #
Messages
Total messages: 35 (7 generated)
|