Index: src/ia32/code-stubs-ia32.cc |
diff --git a/src/ia32/code-stubs-ia32.cc b/src/ia32/code-stubs-ia32.cc |
index 79f75fadf21d1a982e55502bd87c01f649e4edce..bac3c1e0df21a624b99affa2b1cbb94fbc0652b3 100644 |
--- a/src/ia32/code-stubs-ia32.cc |
+++ b/src/ia32/code-stubs-ia32.cc |
@@ -3232,13 +3232,20 @@ void CompareICStub::GenerateStrings(MacroAssembler* masm) { |
// Handle more complex cases in runtime. |
__ bind(&runtime); |
- __ pop(tmp1); // Return address. |
- __ push(left); |
- __ push(right); |
- __ push(tmp1); |
if (equality) { |
- __ TailCallRuntime(Runtime::kStringEquals); |
+ { |
+ FrameScope scope(masm, StackFrame::INTERNAL); |
+ __ Push(left); |
+ __ Push(right); |
+ __ CallRuntime(Runtime::kStringEqual); |
+ } |
+ __ sub(eax, Immediate(masm->isolate()->factory()->true_value())); |
+ __ Ret(); |
} else { |
+ __ pop(tmp1); // Return address. |
+ __ push(left); |
+ __ push(right); |
+ __ push(tmp1); |
__ TailCallRuntime(Runtime::kStringCompare); |
} |