| Index: src/arm/macro-assembler-arm.cc
|
| diff --git a/src/arm/macro-assembler-arm.cc b/src/arm/macro-assembler-arm.cc
|
| index 624ba81340a6d8b31797d93bda3bb340aa0ef4de..013c7c0651edd76a7f2523cc02c5aef361d4b8d9 100644
|
| --- a/src/arm/macro-assembler-arm.cc
|
| +++ b/src/arm/macro-assembler-arm.cc
|
| @@ -3926,10 +3926,16 @@ void MacroAssembler::CheckEnumCache(Register null_value, Label* call_runtime) {
|
|
|
| // Check that there are no elements. Register r2 contains the current JS
|
| // object we've reached through the prototype chain.
|
| + Label no_elements;
|
| ldr(r2, FieldMemOperand(r2, JSObject::kElementsOffset));
|
| cmp(r2, empty_fixed_array_value);
|
| + b(eq, &no_elements);
|
| +
|
| + // Second chance, the object may be using the empty slow element dictionary.
|
| + CompareRoot(r2, Heap::kEmptySlowElementDictionaryRootIndex);
|
| b(ne, call_runtime);
|
|
|
| + bind(&no_elements);
|
| ldr(r2, FieldMemOperand(r1, Map::kPrototypeOffset));
|
| cmp(r2, null_value);
|
| b(ne, &next);
|
|
|