| 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 |