Chromium Code Reviews| 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..7be35447ce3132366d7669ebf3a43d09afa9e66b 100644 |
| --- a/src/arm/code-stubs-arm.cc |
| +++ b/src/arm/code-stubs-arm.cc |
| @@ -3179,10 +3179,17 @@ void CompareICStub::GenerateStrings(MacroAssembler* masm) { |
| // Handle more complex cases in runtime. |
| __ bind(&runtime); |
| - __ Push(left, right); |
| if (equality) { |
| - __ TailCallRuntime(Runtime::kStringEquals); |
| + { |
| + FrameAndConstantPoolScope scope(masm, StackFrame::INTERNAL); |
| + __ Push(left, right); |
| + __ CallRuntime(Runtime::kStringEqual); |
| + } |
| + __ LoadRoot(r1, Heap::kTrueValueRootIndex); |
| + __ sub(r0, r0, r1); |
|
Yang
2016/03/02 10:29:16
Whoa, this is kind of hacky here. In the original
Benedikt Meurer
2016/03/02 11:27:04
Yes, 0 is for EQUAL, everything else for NOT_EQUAL
|
| + __ Ret(); |
| } else { |
| + __ Push(left, right); |
| __ TailCallRuntime(Runtime::kStringCompare); |
| } |