| Index: src/x87/macro-assembler-x87.cc | 
| diff --git a/src/x87/macro-assembler-x87.cc b/src/x87/macro-assembler-x87.cc | 
| index 3dc8b74a8115d4d2e707d5c03acc839a15b03a6f..b819424976d9de962e0a7fd04148af4067122f20 100644 | 
| --- a/src/x87/macro-assembler-x87.cc | 
| +++ b/src/x87/macro-assembler-x87.cc | 
| @@ -3055,14 +3055,22 @@ void MacroAssembler::JumpIfDictionaryInPrototypeChain( | 
| DCHECK(!scratch1.is(scratch0)); | 
| Factory* factory = isolate()->factory(); | 
| Register current = scratch0; | 
| -  Label loop_again; | 
| +  Label loop_again, end; | 
|  | 
| // scratch contained elements pointer. | 
| mov(current, object); | 
| +  mov(current, FieldOperand(current, HeapObject::kMapOffset)); | 
| +  mov(current, FieldOperand(current, Map::kPrototypeOffset)); | 
| +  cmp(current, Immediate(factory->null_value())); | 
| +  j(equal, &end); | 
|  | 
| // Loop based on the map going up the prototype chain. | 
| bind(&loop_again); | 
| mov(current, FieldOperand(current, HeapObject::kMapOffset)); | 
| +  STATIC_ASSERT(JS_PROXY_TYPE < JS_OBJECT_TYPE); | 
| +  STATIC_ASSERT(JS_VALUE_TYPE < JS_OBJECT_TYPE); | 
| +  CmpInstanceType(current, JS_OBJECT_TYPE); | 
| +  j(below, found); | 
| mov(scratch1, FieldOperand(current, Map::kBitField2Offset)); | 
| DecodeField<Map::ElementsKindBits>(scratch1); | 
| cmp(scratch1, Immediate(DICTIONARY_ELEMENTS)); | 
| @@ -3070,6 +3078,8 @@ void MacroAssembler::JumpIfDictionaryInPrototypeChain( | 
| mov(current, FieldOperand(current, Map::kPrototypeOffset)); | 
| cmp(current, Immediate(factory->null_value())); | 
| j(not_equal, &loop_again); | 
| + | 
| +  bind(&end); | 
| } | 
|  | 
|  | 
|  |