Skip to content

Commit

Permalink
Revert of X87: Reimplement Maps and Sets in JS (patchset nwjs#1 id:1 of
Browse files Browse the repository at this point in the history
https://codereview.chromium.org/1066373002/)

Reason for revert:
Reverting as it resulted in a closed waterfall.

Original issue's description:
> X87: Reimplement Maps and Sets in JS
>
> port 909500a (r27605)
>
> original commit message:
>     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).
>
> BUG=
>
> Committed: https://crrev.com/56600a35a49ffa5abcba66b14839089de3589ad9
> Cr-Commit-Position: refs/heads/master@{#27681}

TBR=weiliang.lin@intel.com,chunyang.dai@intel.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=

Review URL: https://codereview.chromium.org/1073723002

Cr-Commit-Position: refs/heads/master@{#27682}
  • Loading branch information
natorion authored and Commit bot committed Apr 9, 2015
1 parent 56600a3 commit a0486f1
Showing 1 changed file with 10 additions and 0 deletions.
10 changes: 10 additions & 0 deletions src/x87/code-stubs-x87.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2186,6 +2186,16 @@ void CEntryStub::Generate(MacroAssembler* masm) {
__ call(ebx);
// Result is in eax or edx:eax - do not destroy these registers!

// Runtime functions should not return 'the hole'. Allowing it to escape may
// lead to crashes in the IC code later.
if (FLAG_debug_code) {
Label okay;
__ cmp(eax, isolate()->factory()->the_hole_value());
__ j(not_equal, &okay, Label::kNear);
__ int3();
__ bind(&okay);
}

// Check result for exception sentinel.
Label exception_returned;
__ cmp(eax, isolate()->factory()->exception());
Expand Down

0 comments on commit a0486f1

Please sign in to comment.