| 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 #include <limits.h> // For LONG_MIN, LONG_MAX. | 5 #include <limits.h> // For LONG_MIN, LONG_MAX. |
| 6 | 6 |
| 7 #if V8_TARGET_ARCH_ARM | 7 #if V8_TARGET_ARCH_ARM |
| 8 | 8 |
| 9 #include "src/base/bits.h" | 9 #include "src/base/bits.h" |
| 10 #include "src/base/division-by-constant.h" | 10 #include "src/base/division-by-constant.h" |
| (...skipping 3635 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3646 TrySmiTag(index, index, &index_tag_bad); | 3646 TrySmiTag(index, index, &index_tag_bad); |
| 3647 b(&index_tag_ok); | 3647 b(&index_tag_ok); |
| 3648 bind(&index_tag_bad); | 3648 bind(&index_tag_bad); |
| 3649 Abort(kIndexIsTooLarge); | 3649 Abort(kIndexIsTooLarge); |
| 3650 bind(&index_tag_ok); | 3650 bind(&index_tag_ok); |
| 3651 | 3651 |
| 3652 ldr(ip, FieldMemOperand(string, String::kLengthOffset)); | 3652 ldr(ip, FieldMemOperand(string, String::kLengthOffset)); |
| 3653 cmp(index, ip); | 3653 cmp(index, ip); |
| 3654 Check(lt, kIndexIsTooLarge); | 3654 Check(lt, kIndexIsTooLarge); |
| 3655 | 3655 |
| 3656 cmp(index, Operand(Smi::FromInt(0))); | 3656 cmp(index, Operand(Smi::kZero)); |
| 3657 Check(ge, kIndexIsNegative); | 3657 Check(ge, kIndexIsNegative); |
| 3658 | 3658 |
| 3659 SmiUntag(index, index); | 3659 SmiUntag(index, index); |
| 3660 } | 3660 } |
| 3661 | 3661 |
| 3662 | 3662 |
| 3663 void MacroAssembler::PrepareCallCFunction(int num_reg_arguments, | 3663 void MacroAssembler::PrepareCallCFunction(int num_reg_arguments, |
| 3664 int num_double_arguments, | 3664 int num_double_arguments, |
| 3665 Register scratch) { | 3665 Register scratch) { |
| 3666 int frame_alignment = ActivationFrameAlignment(); | 3666 int frame_alignment = ActivationFrameAlignment(); |
| (...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3936 b(eq, call_runtime); | 3936 b(eq, call_runtime); |
| 3937 | 3937 |
| 3938 LoadRoot(null_value, Heap::kNullValueRootIndex); | 3938 LoadRoot(null_value, Heap::kNullValueRootIndex); |
| 3939 jmp(&start); | 3939 jmp(&start); |
| 3940 | 3940 |
| 3941 bind(&next); | 3941 bind(&next); |
| 3942 ldr(r1, FieldMemOperand(r2, HeapObject::kMapOffset)); | 3942 ldr(r1, FieldMemOperand(r2, HeapObject::kMapOffset)); |
| 3943 | 3943 |
| 3944 // For all objects but the receiver, check that the cache is empty. | 3944 // For all objects but the receiver, check that the cache is empty. |
| 3945 EnumLength(r3, r1); | 3945 EnumLength(r3, r1); |
| 3946 cmp(r3, Operand(Smi::FromInt(0))); | 3946 cmp(r3, Operand(Smi::kZero)); |
| 3947 b(ne, call_runtime); | 3947 b(ne, call_runtime); |
| 3948 | 3948 |
| 3949 bind(&start); | 3949 bind(&start); |
| 3950 | 3950 |
| 3951 // Check that there are no elements. Register r2 contains the current JS | 3951 // Check that there are no elements. Register r2 contains the current JS |
| 3952 // object we've reached through the prototype chain. | 3952 // object we've reached through the prototype chain. |
| 3953 Label no_elements; | 3953 Label no_elements; |
| 3954 ldr(r2, FieldMemOperand(r2, JSObject::kElementsOffset)); | 3954 ldr(r2, FieldMemOperand(r2, JSObject::kElementsOffset)); |
| 3955 cmp(r2, empty_fixed_array_value); | 3955 cmp(r2, empty_fixed_array_value); |
| 3956 b(eq, &no_elements); | 3956 b(eq, &no_elements); |
| (...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4167 } | 4167 } |
| 4168 } | 4168 } |
| 4169 if (mag.shift > 0) mov(result, Operand(result, ASR, mag.shift)); | 4169 if (mag.shift > 0) mov(result, Operand(result, ASR, mag.shift)); |
| 4170 add(result, result, Operand(dividend, LSR, 31)); | 4170 add(result, result, Operand(dividend, LSR, 31)); |
| 4171 } | 4171 } |
| 4172 | 4172 |
| 4173 } // namespace internal | 4173 } // namespace internal |
| 4174 } // namespace v8 | 4174 } // namespace v8 |
| 4175 | 4175 |
| 4176 #endif // V8_TARGET_ARCH_ARM | 4176 #endif // V8_TARGET_ARCH_ARM |
| OLD | NEW |