| OLD | NEW |
| 1 | 1 |
| 2 // Copyright 2012 the V8 project authors. All rights reserved. | 2 // Copyright 2012 the V8 project authors. All rights reserved. |
| 3 // Use of this source code is governed by a BSD-style license that can be | 3 // Use of this source code is governed by a BSD-style license that can be |
| 4 // found in the LICENSE file. | 4 // found in the LICENSE file. |
| 5 | 5 |
| 6 #include <limits.h> // For LONG_MIN, LONG_MAX. | 6 #include <limits.h> // For LONG_MIN, LONG_MAX. |
| 7 | 7 |
| 8 #if V8_TARGET_ARCH_MIPS | 8 #if V8_TARGET_ARCH_MIPS |
| 9 | 9 |
| 10 #include "src/base/bits.h" | 10 #include "src/base/bits.h" |
| (...skipping 5493 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5504 lw(dst, FieldMemOperand(holder, HeapObject::kMapOffset)); | 5504 lw(dst, FieldMemOperand(holder, HeapObject::kMapOffset)); |
| 5505 LoadInstanceDescriptors(dst, dst); | 5505 LoadInstanceDescriptors(dst, dst); |
| 5506 lw(dst, | 5506 lw(dst, |
| 5507 FieldMemOperand(dst, DescriptorArray::GetValueOffset(accessor_index))); | 5507 FieldMemOperand(dst, DescriptorArray::GetValueOffset(accessor_index))); |
| 5508 int offset = accessor == ACCESSOR_GETTER ? AccessorPair::kGetterOffset | 5508 int offset = accessor == ACCESSOR_GETTER ? AccessorPair::kGetterOffset |
| 5509 : AccessorPair::kSetterOffset; | 5509 : AccessorPair::kSetterOffset; |
| 5510 lw(dst, FieldMemOperand(dst, offset)); | 5510 lw(dst, FieldMemOperand(dst, offset)); |
| 5511 } | 5511 } |
| 5512 | 5512 |
| 5513 | 5513 |
| 5514 void MacroAssembler::CheckEnumCache(Register null_value, Label* call_runtime) { | 5514 void MacroAssembler::CheckEnumCache(Label* call_runtime) { |
| 5515 Register null_value = t1; |
| 5515 Register empty_fixed_array_value = t2; | 5516 Register empty_fixed_array_value = t2; |
| 5516 LoadRoot(empty_fixed_array_value, Heap::kEmptyFixedArrayRootIndex); | 5517 LoadRoot(empty_fixed_array_value, Heap::kEmptyFixedArrayRootIndex); |
| 5517 Label next, start; | 5518 Label next, start; |
| 5518 mov(a2, a0); | 5519 mov(a2, a0); |
| 5519 | 5520 |
| 5520 // Check if the enum length field is properly initialized, indicating that | 5521 // Check if the enum length field is properly initialized, indicating that |
| 5521 // there is an enum cache. | 5522 // there is an enum cache. |
| 5522 lw(a1, FieldMemOperand(a2, HeapObject::kMapOffset)); | 5523 lw(a1, FieldMemOperand(a2, HeapObject::kMapOffset)); |
| 5523 | 5524 |
| 5524 EnumLength(a3, a1); | 5525 EnumLength(a3, a1); |
| 5525 Branch( | 5526 Branch( |
| 5526 call_runtime, eq, a3, Operand(Smi::FromInt(kInvalidEnumCacheSentinel))); | 5527 call_runtime, eq, a3, Operand(Smi::FromInt(kInvalidEnumCacheSentinel))); |
| 5527 | 5528 |
| 5529 LoadRoot(null_value, Heap::kNullValueRootIndex); |
| 5528 jmp(&start); | 5530 jmp(&start); |
| 5529 | 5531 |
| 5530 bind(&next); | 5532 bind(&next); |
| 5531 lw(a1, FieldMemOperand(a2, HeapObject::kMapOffset)); | 5533 lw(a1, FieldMemOperand(a2, HeapObject::kMapOffset)); |
| 5532 | 5534 |
| 5533 // For all objects but the receiver, check that the cache is empty. | 5535 // For all objects but the receiver, check that the cache is empty. |
| 5534 EnumLength(a3, a1); | 5536 EnumLength(a3, a1); |
| 5535 Branch(call_runtime, ne, a3, Operand(Smi::FromInt(0))); | 5537 Branch(call_runtime, ne, a3, Operand(Smi::FromInt(0))); |
| 5536 | 5538 |
| 5537 bind(&start); | 5539 bind(&start); |
| (...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5766 if (mag.shift > 0) sra(result, result, mag.shift); | 5768 if (mag.shift > 0) sra(result, result, mag.shift); |
| 5767 srl(at, dividend, 31); | 5769 srl(at, dividend, 31); |
| 5768 Addu(result, result, Operand(at)); | 5770 Addu(result, result, Operand(at)); |
| 5769 } | 5771 } |
| 5770 | 5772 |
| 5771 | 5773 |
| 5772 } // namespace internal | 5774 } // namespace internal |
| 5773 } // namespace v8 | 5775 } // namespace v8 |
| 5774 | 5776 |
| 5775 #endif // V8_TARGET_ARCH_MIPS | 5777 #endif // V8_TARGET_ARCH_MIPS |
| OLD | NEW |