From: chunyang.dai Date: Mon, 21 Sep 2015 09:13:01 +0000 (-0700) Subject: X87: [runtime] Replace COMPARE/COMPARE_STRONG with proper Object::Compare. X-Git-Tag: upstream/4.7.83~196 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9155967e84718f100119539136c9b37e9c5fbcf0;p=platform%2Fupstream%2Fv8.git X87: [runtime] Replace COMPARE/COMPARE_STRONG with proper Object::Compare. port 593c655a3c814277283f9fa1520d5ce59d6b019c (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} --- diff --git a/src/x87/code-stubs-x87.cc b/src/x87/code-stubs-x87.cc index 982c63f92..9617342e6 100644 --- a/src/x87/code-stubs-x87.cc +++ b/src/x87/code-stubs-x87.cc @@ -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);