Index: src/arm/code-stubs-arm.cc |
diff --git a/src/arm/code-stubs-arm.cc b/src/arm/code-stubs-arm.cc |
index 9e8364feca34c4593ceffaa63d039f1092623c71..239eddd28efddd577ab0dd07e6425f6780f6ddb0 100644 |
--- a/src/arm/code-stubs-arm.cc |
+++ b/src/arm/code-stubs-arm.cc |
@@ -671,19 +671,11 @@ |
__ bind(&slow); |
+ __ Push(lhs, rhs); |
+ // Figure out which native to call and setup the arguments. |
if (cc == eq) { |
- { |
- FrameAndConstantPoolScope scope(masm, StackFrame::INTERNAL); |
- __ Push(lhs, rhs); |
- __ CallRuntime(strict() ? Runtime::kStrictEqual : Runtime::kEqual); |
- } |
- // Turn true into 0 and false into some non-zero value. |
- STATIC_ASSERT(EQUAL == 0); |
- __ LoadRoot(r1, Heap::kTrueValueRootIndex); |
- __ sub(r0, r0, r1); |
- __ Ret(); |
+ __ TailCallRuntime(strict() ? Runtime::kStrictEquals : Runtime::kEquals); |
} else { |
- __ Push(lhs, rhs); |
int ncr; // NaN compare result |
if (cc == lt || cc == le) { |
ncr = GREATER; |