X87: [runtime] Replace COMPARE/COMPARE_STRONG with proper Object::Compare.
port 593c655a3c
(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}
This commit is contained in:
parent
357e6b99ee
commit
9155967e84
@ -1579,9 +1579,6 @@ void CompareICStub::GenerateGeneric(MacroAssembler* masm) {
|
||||
__ TailCallRuntime(strict() ? Runtime::kStrictEquals : Runtime::kEquals, 2,
|
||||
1);
|
||||
} else {
|
||||
int native_context_index = is_strong(strength())
|
||||
? Context::COMPARE_STRONG_BUILTIN_INDEX
|
||||
: Context::COMPARE_BUILTIN_INDEX;
|
||||
__ push(Immediate(Smi::FromInt(NegativeComparisonResult(cc))));
|
||||
|
||||
// Restore return address on the stack.
|
||||
@ -1589,7 +1586,9 @@ void CompareICStub::GenerateGeneric(MacroAssembler* masm) {
|
||||
|
||||
// Call the native; it returns -1 (less), 0 (equal), or 1 (greater)
|
||||
// tagged as a small integer.
|
||||
__ InvokeBuiltin(native_context_index, JUMP_FUNCTION);
|
||||
__ TailCallRuntime(
|
||||
is_strong(strength()) ? Runtime::kCompare_Strong : Runtime::kCompare, 3,
|
||||
1);
|
||||
}
|
||||
|
||||
__ bind(&miss);
|
||||
|
Loading…
Reference in New Issue
Block a user