Index: src/mips64/code-stubs-mips64.cc |
diff --git a/src/mips64/code-stubs-mips64.cc b/src/mips64/code-stubs-mips64.cc |
index 98ca8521c25d9ded0b30f8f772534d61c05bb365..9df14e3878065dae3a14b08dbf06ca7e4f07f5c1 100644 |
--- a/src/mips64/code-stubs-mips64.cc |
+++ b/src/mips64/code-stubs-mips64.cc |
@@ -3514,35 +3514,34 @@ void StringHelper::GenerateOneByteCharsCompareLoop( |
void StringCompareStub::Generate(MacroAssembler* masm) { |
- Label runtime; |
- |
- Counters* counters = isolate()->counters(); |
- |
- // Stack frame on entry. |
- // sp[0]: right string |
- // sp[4]: left string |
- __ ld(a1, MemOperand(sp, 1 * kPointerSize)); // Left. |
- __ ld(a0, MemOperand(sp, 0 * kPointerSize)); // Right. |
+ // ----------- S t a t e ------------- |
+ // -- a1 : left |
+ // -- a0 : right |
+ // -- ra : return address |
+ // ----------------------------------- |
+ __ AssertString(a1); |
+ __ AssertString(a0); |
Label not_same; |
__ Branch(¬_same, ne, a0, Operand(a1)); |
- STATIC_ASSERT(EQUAL == 0); |
- STATIC_ASSERT(kSmiTag == 0); |
__ li(v0, Operand(Smi::FromInt(EQUAL))); |
- __ IncrementCounter(counters->string_compare_native(), 1, a1, a2); |
- __ DropAndRet(2); |
+ __ IncrementCounter(isolate()->counters()->string_compare_native(), 1, a1, |
+ a2); |
+ __ Ret(); |
__ bind(¬_same); |
- // Check that both objects are sequential one_byte strings. |
+ // Check that both objects are sequential one-byte strings. |
+ Label runtime; |
__ JumpIfNotBothSequentialOneByteStrings(a1, a0, a2, a3, &runtime); |
- // Compare flat one_byte strings natively. Remove arguments from stack first. |
- __ IncrementCounter(counters->string_compare_native(), 1, a2, a3); |
- __ Daddu(sp, sp, Operand(2 * kPointerSize)); |
- StringHelper::GenerateCompareFlatOneByteStrings(masm, a1, a0, a2, a3, a4, a5); |
+ // Compare flat ASCII strings natively. |
+ __ IncrementCounter(isolate()->counters()->string_compare_native(), 1, a2, |
+ a3); |
+ StringHelper::GenerateCompareFlatOneByteStrings(masm, a1, a0, a2, a3, t0, t1); |
__ bind(&runtime); |
+ __ Push(a1, a0); |
__ TailCallRuntime(Runtime::kStringCompare, 2, 1); |
} |