| Index: src/mips/macro-assembler-mips.cc
|
| diff --git a/src/mips/macro-assembler-mips.cc b/src/mips/macro-assembler-mips.cc
|
| index cd6d7dc108b868b11ad482ca0c4609b154b3f8ff..349937d716813fe604f15ea714fcd87c690be21b 100644
|
| --- a/src/mips/macro-assembler-mips.cc
|
| +++ b/src/mips/macro-assembler-mips.cc
|
| @@ -5293,15 +5293,16 @@ void MacroAssembler::EnsureNotWhite(
|
| void MacroAssembler::LoadInstanceDescriptors(Register map,
|
| Register descriptors,
|
| Register scratch) {
|
| - lw(descriptors,
|
| - FieldMemOperand(map, Map::kInstanceDescriptorsOrBackPointerOffset));
|
| + Register temp = descriptors;
|
| + lw(temp, FieldMemOperand(map, Map::kTransitionsOrBackPointerOffset));
|
|
|
| Label ok, fail;
|
| - CheckMap(descriptors,
|
| + CheckMap(temp,
|
| scratch,
|
| isolate()->factory()->fixed_array_map(),
|
| &fail,
|
| DONT_DO_SMI_CHECK);
|
| + lw(descriptors, FieldMemOperand(temp, TransitionArray::kDescriptorsOffset));
|
| jmp(&ok);
|
| bind(&fail);
|
| LoadRoot(descriptors, Heap::kEmptyDescriptorArrayRootIndex);
|
| @@ -5314,9 +5315,6 @@ void MacroAssembler::CheckEnumCache(Register null_value, Label* call_runtime) {
|
| // Preload a couple of values used in the loop.
|
| Register empty_fixed_array_value = t2;
|
| LoadRoot(empty_fixed_array_value, Heap::kEmptyFixedArrayRootIndex);
|
| - Register empty_descriptor_array_value = t3;
|
| - LoadRoot(empty_descriptor_array_value,
|
| - Heap::kEmptyDescriptorArrayRootIndex);
|
| mov(a1, a0);
|
| bind(&next);
|
|
|
| @@ -5329,7 +5327,7 @@ void MacroAssembler::CheckEnumCache(Register null_value, Label* call_runtime) {
|
| // check for an enum cache. Leave the map in a2 for the subsequent
|
| // prototype load.
|
| lw(a2, FieldMemOperand(a1, HeapObject::kMapOffset));
|
| - lw(a3, FieldMemOperand(a2, Map::kInstanceDescriptorsOrBackPointerOffset));
|
| + lw(a3, FieldMemOperand(a2, Map::kTransitionsOrBackPointerOffset));
|
|
|
| CheckMap(a3,
|
| t3,
|
| @@ -5337,6 +5335,10 @@ void MacroAssembler::CheckEnumCache(Register null_value, Label* call_runtime) {
|
| call_runtime,
|
| DONT_DO_SMI_CHECK);
|
|
|
| + LoadRoot(t3, Heap::kEmptyDescriptorArrayRootIndex);
|
| + lw(a3, FieldMemOperand(a3, TransitionArray::kDescriptorsOffset));
|
| + Branch(call_runtime, eq, a3, Operand(t3));
|
| +
|
| // Check that there is an enum cache in the non-empty instance
|
| // descriptors (a3). This is the case if the next enumeration
|
| // index field does not contain a smi.
|
|
|