| Index: src/x64/code-stubs-x64.cc
|
| diff --git a/src/x64/code-stubs-x64.cc b/src/x64/code-stubs-x64.cc
|
| index 3dd2f45cbcc15c7fe858bbe870a582a98fa49c30..5bfa347a320820a8fae7a75c41d1bb635a371ca6 100644
|
| --- a/src/x64/code-stubs-x64.cc
|
| +++ b/src/x64/code-stubs-x64.cc
|
| @@ -3172,13 +3172,21 @@ void CompareICStub::GenerateStrings(MacroAssembler* masm) {
|
|
|
| // Handle more complex cases in runtime.
|
| __ bind(&runtime);
|
| - __ PopReturnAddressTo(tmp1);
|
| - __ Push(left);
|
| - __ Push(right);
|
| - __ PushReturnAddressFrom(tmp1);
|
| if (equality) {
|
| - __ TailCallRuntime(Runtime::kStringEquals);
|
| + {
|
| + FrameScope scope(masm, StackFrame::INTERNAL);
|
| + __ Push(left);
|
| + __ Push(right);
|
| + __ CallRuntime(Runtime::kStringEqual);
|
| + }
|
| + __ LoadRoot(rdx, Heap::kTrueValueRootIndex);
|
| + __ subp(rax, rdx);
|
| + __ Ret();
|
| } else {
|
| + __ PopReturnAddressTo(tmp1);
|
| + __ Push(left);
|
| + __ Push(right);
|
| + __ PushReturnAddressFrom(tmp1);
|
| __ TailCallRuntime(Runtime::kStringCompare);
|
| }
|
|
|
|
|