Commit 9155967e authored by chunyang.dai's avatar chunyang.dai Committed by Commit bot

X87: [runtime] Replace COMPARE/COMPARE_STRONG with proper Object::Compare.

port 593c655a (r30816).

original commit message:

    This removes the weird COMPARE and COMPARE_STRONG JavaScript builtins
    and replaces them with a proper C++ implementation in Object::Compare
    and appropriate wrappers Object::LessThan, Object::GreaterThan, and
    friends that are intended to be used by a true/false returning CompareIC
    in the future, as well as the interpreter.  As a short-term solution we
    provide %Compare and %Compare_Strong entry points for the current
    CompareIC that return the appropriate integer values expected by
    fullcodegen currently.

    Now the Abstract Relational Comparison is also using the correct
    ToPrimitive implementation, which properly supports @@toPrimitive.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#30844}
parent 357e6b99
...@@ -1579,9 +1579,6 @@ void CompareICStub::GenerateGeneric(MacroAssembler* masm) { ...@@ -1579,9 +1579,6 @@ void CompareICStub::GenerateGeneric(MacroAssembler* masm) {
__ TailCallRuntime(strict() ? Runtime::kStrictEquals : Runtime::kEquals, 2, __ TailCallRuntime(strict() ? Runtime::kStrictEquals : Runtime::kEquals, 2,
1); 1);
} else { } else {
int native_context_index = is_strong(strength())
? Context::COMPARE_STRONG_BUILTIN_INDEX
: Context::COMPARE_BUILTIN_INDEX;
__ push(Immediate(Smi::FromInt(NegativeComparisonResult(cc)))); __ push(Immediate(Smi::FromInt(NegativeComparisonResult(cc))));
// Restore return address on the stack. // Restore return address on the stack.
...@@ -1589,7 +1586,9 @@ void CompareICStub::GenerateGeneric(MacroAssembler* masm) { ...@@ -1589,7 +1586,9 @@ void CompareICStub::GenerateGeneric(MacroAssembler* masm) {
// Call the native; it returns -1 (less), 0 (equal), or 1 (greater) // Call the native; it returns -1 (less), 0 (equal), or 1 (greater)
// tagged as a small integer. // tagged as a small integer.
__ InvokeBuiltin(native_context_index, JUMP_FUNCTION); __ TailCallRuntime(
is_strong(strength()) ? Runtime::kCompare_Strong : Runtime::kCompare, 3,
1);
} }
__ bind(&miss); __ bind(&miss);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment