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_MIPS | 5 #if V8_TARGET_ARCH_MIPS |
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 2802 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2813 void StringToNumberStub::Generate(MacroAssembler* masm) { | 2813 void StringToNumberStub::Generate(MacroAssembler* masm) { |
2814 // The StringToNumber stub takes on argument in a0. | 2814 // The StringToNumber stub takes on argument in a0. |
2815 __ AssertString(a0); | 2815 __ AssertString(a0); |
2816 | 2816 |
2817 // Check if string has a cached array index. | 2817 // Check if string has a cached array index. |
2818 Label runtime; | 2818 Label runtime; |
2819 __ lw(a2, FieldMemOperand(a0, String::kHashFieldOffset)); | 2819 __ lw(a2, FieldMemOperand(a0, String::kHashFieldOffset)); |
2820 __ And(at, a2, Operand(String::kContainsCachedArrayIndexMask)); | 2820 __ And(at, a2, Operand(String::kContainsCachedArrayIndexMask)); |
2821 __ Branch(&runtime, ne, at, Operand(zero_reg)); | 2821 __ Branch(&runtime, ne, at, Operand(zero_reg)); |
2822 __ IndexFromHash(a2, v0); | 2822 __ IndexFromHash(a2, v0); |
2823 __ Ret(USE_DELAY_SLOT); | 2823 __ Ret(); |
2824 __ mov(v0, a0); // In delay slot. | |
2825 | 2824 |
2826 __ bind(&runtime); | 2825 __ bind(&runtime); |
2827 __ Push(a0); // Push argument. | 2826 __ Push(a0); // Push argument. |
2828 __ TailCallRuntime(Runtime::kStringToNumber); | 2827 __ TailCallRuntime(Runtime::kStringToNumber); |
2829 } | 2828 } |
2830 | 2829 |
2831 void ToLengthStub::Generate(MacroAssembler* masm) { | 2830 void ToLengthStub::Generate(MacroAssembler* masm) { |
2832 // The ToLength stub takes on argument in a0. | 2831 // The ToLength stub takes on argument in a0. |
2833 Label not_smi, positive_smi; | 2832 Label not_smi, positive_smi; |
2834 __ JumpIfNotSmi(a0, ¬_smi); | 2833 __ JumpIfNotSmi(a0, ¬_smi); |
(...skipping 2906 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5741 return_value_operand, NULL); | 5740 return_value_operand, NULL); |
5742 } | 5741 } |
5743 | 5742 |
5744 | 5743 |
5745 #undef __ | 5744 #undef __ |
5746 | 5745 |
5747 } // namespace internal | 5746 } // namespace internal |
5748 } // namespace v8 | 5747 } // namespace v8 |
5749 | 5748 |
5750 #endif // V8_TARGET_ARCH_MIPS | 5749 #endif // V8_TARGET_ARCH_MIPS |
OLD | NEW |