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 4685 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4696 } | 4696 } |
4697 } | 4697 } |
4698 | 4698 |
4699 | 4699 |
4700 void MacroAssembler::LoadTransitionedArrayMapConditional( | 4700 void MacroAssembler::LoadTransitionedArrayMapConditional( |
4701 ElementsKind expected_kind, | 4701 ElementsKind expected_kind, |
4702 ElementsKind transitioned_kind, | 4702 ElementsKind transitioned_kind, |
4703 Register map_in_out, | 4703 Register map_in_out, |
4704 Register scratch, | 4704 Register scratch, |
4705 Label* no_map_match) { | 4705 Label* no_map_match) { |
| 4706 DCHECK(IsFastElementsKind(expected_kind)); |
| 4707 DCHECK(IsFastElementsKind(transitioned_kind)); |
| 4708 |
4706 // Check that the function's map is the same as the expected cached map. | 4709 // Check that the function's map is the same as the expected cached map. |
4707 LoadNativeContextSlot(Context::JS_ARRAY_MAPS_INDEX, scratch); | 4710 lw(scratch, NativeContextMemOperand()); |
4708 size_t offset = expected_kind * kPointerSize + | 4711 lw(at, ContextMemOperand(scratch, Context::ArrayMapIndex(expected_kind))); |
4709 FixedArrayBase::kHeaderSize; | |
4710 lw(at, FieldMemOperand(scratch, offset)); | |
4711 Branch(no_map_match, ne, map_in_out, Operand(at)); | 4712 Branch(no_map_match, ne, map_in_out, Operand(at)); |
4712 | 4713 |
4713 // Use the transitioned cached map. | 4714 // Use the transitioned cached map. |
4714 offset = transitioned_kind * kPointerSize + | 4715 lw(map_in_out, |
4715 FixedArrayBase::kHeaderSize; | 4716 ContextMemOperand(scratch, Context::ArrayMapIndex(transitioned_kind))); |
4716 lw(map_in_out, FieldMemOperand(scratch, offset)); | |
4717 } | 4717 } |
4718 | 4718 |
4719 | 4719 |
4720 void MacroAssembler::LoadNativeContextSlot(int index, Register dst) { | 4720 void MacroAssembler::LoadNativeContextSlot(int index, Register dst) { |
4721 lw(dst, NativeContextMemOperand()); | 4721 lw(dst, NativeContextMemOperand()); |
4722 lw(dst, ContextMemOperand(dst, index)); | 4722 lw(dst, ContextMemOperand(dst, index)); |
4723 } | 4723 } |
4724 | 4724 |
4725 | 4725 |
4726 void MacroAssembler::LoadGlobalFunctionInitialMap(Register function, | 4726 void MacroAssembler::LoadGlobalFunctionInitialMap(Register function, |
(...skipping 1136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5863 if (mag.shift > 0) sra(result, result, mag.shift); | 5863 if (mag.shift > 0) sra(result, result, mag.shift); |
5864 srl(at, dividend, 31); | 5864 srl(at, dividend, 31); |
5865 Addu(result, result, Operand(at)); | 5865 Addu(result, result, Operand(at)); |
5866 } | 5866 } |
5867 | 5867 |
5868 | 5868 |
5869 } // namespace internal | 5869 } // namespace internal |
5870 } // namespace v8 | 5870 } // namespace v8 |
5871 | 5871 |
5872 #endif // V8_TARGET_ARCH_MIPS | 5872 #endif // V8_TARGET_ARCH_MIPS |
OLD | NEW |