Index: src/arm64/code-stubs-arm64.cc |
diff --git a/src/arm64/code-stubs-arm64.cc b/src/arm64/code-stubs-arm64.cc |
index 32250a861159880509ba61a7a5aade5f8f49a79d..147881f7cf9fabeff5e4d0c8873c0ff6f4391341 100644 |
--- a/src/arm64/code-stubs-arm64.cc |
+++ b/src/arm64/code-stubs-arm64.cc |
@@ -2868,10 +2868,17 @@ void CompareICStub::GenerateStrings(MacroAssembler* masm) { |
// Handle more complex cases in runtime. |
__ Bind(&runtime); |
- __ Push(lhs, rhs); |
if (equality) { |
- __ TailCallRuntime(Runtime::kStringEquals); |
+ { |
+ FrameScope scope(masm, StackFrame::INTERNAL); |
+ __ Push(lhs, rhs); |
+ __ CallRuntime(Runtime::kStringEqual); |
+ } |
+ __ LoadRoot(x1, Heap::kTrueValueRootIndex); |
+ __ Sub(x0, x0, x1); |
+ __ Ret(); |
} else { |
+ __ Push(lhs, rhs); |
__ TailCallRuntime(Runtime::kStringCompare); |
} |