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 #include "src/v8.h" | 7 #include "src/v8.h" |
8 | 8 |
9 #if V8_TARGET_ARCH_ARM | 9 #if V8_TARGET_ARCH_ARM |
10 | 10 |
(...skipping 1681 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1692 ldr(ip, FieldMemOperand(t2, SeededNumberDictionary::kElementsStartOffset)); | 1692 ldr(ip, FieldMemOperand(t2, SeededNumberDictionary::kElementsStartOffset)); |
1693 cmp(key, Operand(ip)); | 1693 cmp(key, Operand(ip)); |
1694 if (i != kNumberDictionaryProbes - 1) { | 1694 if (i != kNumberDictionaryProbes - 1) { |
1695 b(eq, &done); | 1695 b(eq, &done); |
1696 } else { | 1696 } else { |
1697 b(ne, miss); | 1697 b(ne, miss); |
1698 } | 1698 } |
1699 } | 1699 } |
1700 | 1700 |
1701 bind(&done); | 1701 bind(&done); |
1702 // Check that the value is a normal property. | 1702 // Check that the value is a field property. |
1703 // t2: elements + (index * kPointerSize) | 1703 // t2: elements + (index * kPointerSize) |
1704 const int kDetailsOffset = | 1704 const int kDetailsOffset = |
1705 SeededNumberDictionary::kElementsStartOffset + 2 * kPointerSize; | 1705 SeededNumberDictionary::kElementsStartOffset + 2 * kPointerSize; |
1706 ldr(t1, FieldMemOperand(t2, kDetailsOffset)); | 1706 ldr(t1, FieldMemOperand(t2, kDetailsOffset)); |
| 1707 DCHECK_EQ(FIELD, 0); |
1707 tst(t1, Operand(Smi::FromInt(PropertyDetails::TypeField::kMask))); | 1708 tst(t1, Operand(Smi::FromInt(PropertyDetails::TypeField::kMask))); |
1708 b(ne, miss); | 1709 b(ne, miss); |
1709 | 1710 |
1710 // Get the value at the masked, scaled index and return. | 1711 // Get the value at the masked, scaled index and return. |
1711 const int kValueOffset = | 1712 const int kValueOffset = |
1712 SeededNumberDictionary::kElementsStartOffset + kPointerSize; | 1713 SeededNumberDictionary::kElementsStartOffset + kPointerSize; |
1713 ldr(result, FieldMemOperand(t2, kValueOffset)); | 1714 ldr(result, FieldMemOperand(t2, kValueOffset)); |
1714 } | 1715 } |
1715 | 1716 |
1716 | 1717 |
(...skipping 2366 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4083 } | 4084 } |
4084 } | 4085 } |
4085 if (mag.shift > 0) mov(result, Operand(result, ASR, mag.shift)); | 4086 if (mag.shift > 0) mov(result, Operand(result, ASR, mag.shift)); |
4086 add(result, result, Operand(dividend, LSR, 31)); | 4087 add(result, result, Operand(dividend, LSR, 31)); |
4087 } | 4088 } |
4088 | 4089 |
4089 } // namespace internal | 4090 } // namespace internal |
4090 } // namespace v8 | 4091 } // namespace v8 |
4091 | 4092 |
4092 #endif // V8_TARGET_ARCH_ARM | 4093 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |