| Index: src/ic/ia32/handler-compiler-ia32.cc
|
| diff --git a/src/ic/ia32/handler-compiler-ia32.cc b/src/ic/ia32/handler-compiler-ia32.cc
|
| index 7bb426c61e559d847f11707a6d5439a04f04193c..c02d83ce46fde9e3e01f2bef32c27996aa917013 100644
|
| --- a/src/ic/ia32/handler-compiler-ia32.cc
|
| +++ b/src/ic/ia32/handler-compiler-ia32.cc
|
| @@ -476,16 +476,15 @@ Register PropertyHandlerCompiler::CheckPrototypes(
|
| } else {
|
| Register map_reg = scratch1;
|
| __ mov(map_reg, FieldOperand(reg, HeapObject::kMapOffset));
|
| - if (depth != 1 || check == CHECK_ALL_MAPS) {
|
| + if (current_map->IsJSGlobalObjectMap()) {
|
| + GenerateCheckPropertyCell(masm(), Handle<JSGlobalObject>::cast(current),
|
| + name, scratch2, miss);
|
| + } else if (depth != 1 || check == CHECK_ALL_MAPS) {
|
| Handle<WeakCell> cell = Map::WeakCellForMap(current_map);
|
| __ CmpWeakValue(map_reg, cell, scratch2);
|
| __ j(not_equal, miss);
|
| }
|
|
|
| - if (current_map->IsJSGlobalObjectMap()) {
|
| - GenerateCheckPropertyCell(masm(), Handle<JSGlobalObject>::cast(current),
|
| - name, scratch2, miss);
|
| - }
|
| reg = holder_reg; // From now on the object will be in holder_reg.
|
| __ mov(reg, FieldOperand(map_reg, Map::kPrototypeOffset));
|
| }
|
| @@ -495,6 +494,8 @@ Register PropertyHandlerCompiler::CheckPrototypes(
|
| current_map = handle(current->map());
|
| }
|
|
|
| + DCHECK(!current_map->IsJSGlobalProxyMap());
|
| +
|
| // Log the check depth.
|
| LOG(isolate(), IntEvent("check-maps-depth", depth + 1));
|
|
|
|
|