From 8975286e9b67fd07876e6da4724eca9b43e70348 Mon Sep 17 00:00:00 2001 From: mbrandy Date: Fri, 18 Sep 2015 11:39:06 -0700 Subject: [PATCH] PPC: [runtime] Replace COMPARE/COMPARE_STRONG with proper Object::Compare. Port 593c655a3c814277283f9fa1520d5ce59d6b019c 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. R=bmeurer@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, dstence@us.ibm.com BUG=v8:4307 LOG=n Review URL: https://codereview.chromium.org/1356983002 Cr-Commit-Position: refs/heads/master@{#30836} --- src/ppc/code-stubs-ppc.cc | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/ppc/code-stubs-ppc.cc b/src/ppc/code-stubs-ppc.cc index 2233961..5eaa2a7 100644 --- a/src/ppc/code-stubs-ppc.cc +++ b/src/ppc/code-stubs-ppc.cc @@ -711,9 +711,6 @@ void CompareICStub::GenerateGeneric(MacroAssembler* masm) { __ TailCallRuntime(strict() ? Runtime::kStrictEquals : Runtime::kEquals, 2, 1); } else { - int context_index = is_strong(strength()) - ? Context::COMPARE_STRONG_BUILTIN_INDEX - : Context::COMPARE_BUILTIN_INDEX; int ncr; // NaN compare result if (cc == lt || cc == le) { ncr = GREATER; @@ -726,7 +723,9 @@ void CompareICStub::GenerateGeneric(MacroAssembler* masm) { // Call the native; it returns -1 (less), 0 (equal), or 1 (greater) // tagged as a small integer. - __ InvokeBuiltin(context_index, JUMP_FUNCTION); + __ TailCallRuntime( + is_strong(strength()) ? Runtime::kCompare_Strong : Runtime::kCompare, 3, + 1); } __ bind(&miss); -- 2.7.4