OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #if V8_TARGET_ARCH_ARM | 5 #if V8_TARGET_ARCH_ARM |
6 | 6 |
7 #include "src/code-stubs.h" | 7 #include "src/code-stubs.h" |
8 #include "src/api-arguments.h" | 8 #include "src/api-arguments.h" |
9 #include "src/base/bits.h" | 9 #include "src/base/bits.h" |
10 #include "src/bootstrapper.h" | 10 #include "src/bootstrapper.h" |
(...skipping 606 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
617 StringHelper::GenerateCompareFlatOneByteStrings(masm, lhs, rhs, r2, r3, r4, | 617 StringHelper::GenerateCompareFlatOneByteStrings(masm, lhs, rhs, r2, r3, r4, |
618 r5); | 618 r5); |
619 } | 619 } |
620 // Never falls through to here. | 620 // Never falls through to here. |
621 | 621 |
622 __ bind(&slow); | 622 __ bind(&slow); |
623 | 623 |
624 if (cc == eq) { | 624 if (cc == eq) { |
625 { | 625 { |
626 FrameAndConstantPoolScope scope(masm, StackFrame::INTERNAL); | 626 FrameAndConstantPoolScope scope(masm, StackFrame::INTERNAL); |
627 __ Push(lhs, rhs); | 627 __ Push(cp); |
628 __ CallRuntime(strict() ? Runtime::kStrictEqual : Runtime::kEqual); | 628 __ Call(strict() ? isolate()->builtins()->StrictEqual() |
| 629 : isolate()->builtins()->Equal(), |
| 630 RelocInfo::CODE_TARGET); |
| 631 __ Pop(cp); |
629 } | 632 } |
630 // Turn true into 0 and false into some non-zero value. | 633 // Turn true into 0 and false into some non-zero value. |
631 STATIC_ASSERT(EQUAL == 0); | 634 STATIC_ASSERT(EQUAL == 0); |
632 __ LoadRoot(r1, Heap::kTrueValueRootIndex); | 635 __ LoadRoot(r1, Heap::kTrueValueRootIndex); |
633 __ sub(r0, r0, r1); | 636 __ sub(r0, r0, r1); |
634 __ Ret(); | 637 __ Ret(); |
635 } else { | 638 } else { |
636 __ Push(lhs, rhs); | 639 __ Push(lhs, rhs); |
637 int ncr; // NaN compare result | 640 int ncr; // NaN compare result |
638 if (cc == lt || cc == le) { | 641 if (cc == lt || cc == le) { |
(...skipping 3522 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4161 CallApiFunctionAndReturn(masm, api_function_address, thunk_ref, | 4164 CallApiFunctionAndReturn(masm, api_function_address, thunk_ref, |
4162 kStackUnwindSpace, NULL, return_value_operand, NULL); | 4165 kStackUnwindSpace, NULL, return_value_operand, NULL); |
4163 } | 4166 } |
4164 | 4167 |
4165 #undef __ | 4168 #undef __ |
4166 | 4169 |
4167 } // namespace internal | 4170 } // namespace internal |
4168 } // namespace v8 | 4171 } // namespace v8 |
4169 | 4172 |
4170 #endif // V8_TARGET_ARCH_ARM | 4173 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |