Index: src/ic/ppc/handler-compiler-ppc.cc |
diff --git a/src/ic/ppc/handler-compiler-ppc.cc b/src/ic/ppc/handler-compiler-ppc.cc |
index e5e8d54fd7e1b0105eb6791d8be1e1f49d6249ea..e81ed770a2608520d752629fd19010fba9c6f561 100644 |
--- a/src/ic/ppc/handler-compiler-ppc.cc |
+++ b/src/ic/ppc/handler-compiler-ppc.cc |
@@ -402,10 +402,9 @@ void NamedStoreHandlerCompiler::GenerateFieldTypeChecks(FieldType* field_type, |
} |
} |
- |
Register PropertyHandlerCompiler::CheckPrototypes( |
Register object_reg, Register holder_reg, Register scratch1, |
- Register scratch2, Handle<Name> name, Label* miss, PrototypeCheckType check, |
+ Register scratch2, Handle<Name> name, Label* miss, |
ReturnHolder return_what) { |
Handle<Map> receiver_map = map(); |
@@ -424,17 +423,6 @@ Register PropertyHandlerCompiler::CheckPrototypes( |
__ bne(miss); |
} |
- // The prototype chain of primitives (and their JSValue wrappers) depends |
- // on the native context, which can't be guarded by validity cells. |
- // |object_reg| holds the native context specific prototype in this case; |
- // we need to check its map. |
- if (check == CHECK_ALL_MAPS) { |
- __ LoadP(scratch1, FieldMemOperand(object_reg, HeapObject::kMapOffset)); |
- Handle<WeakCell> cell = Map::WeakCellForMap(receiver_map); |
- __ CmpWeakValue(scratch1, cell, scratch2); |
- __ b(ne, miss); |
- } |
- |
// Keep track of the current object in register reg. |
Register reg = object_reg; |
int depth = 0; |
@@ -444,8 +432,8 @@ Register PropertyHandlerCompiler::CheckPrototypes( |
current = isolate()->global_object(); |
} |
- Handle<JSObject> prototype = Handle<JSObject>::null(); |
- Handle<Map> current_map = receiver_map; |
+ Handle<Map> current_map(receiver_map->GetPrototypeChainRootMap(isolate()), |
+ isolate()); |
Handle<Map> holder_map(holder()->map()); |
// Traverse the prototype chain and check the maps in the prototype chain for |
// fast and global objects or do negative lookup for normal objects. |
@@ -457,7 +445,6 @@ Register PropertyHandlerCompiler::CheckPrototypes( |
DCHECK(current_map->IsJSGlobalProxyMap() || |
!current_map->is_access_check_needed()); |
- prototype = handle(JSObject::cast(current_map->prototype())); |
if (current_map->IsJSGlobalObjectMap()) { |
GenerateCheckPropertyCell(masm(), Handle<JSGlobalObject>::cast(current), |
name, scratch2, miss); |
@@ -479,7 +466,7 @@ Register PropertyHandlerCompiler::CheckPrototypes( |
reg = holder_reg; // From now on the object will be in holder_reg. |
// Go to the next object in the prototype chain. |
- current = prototype; |
+ current = handle(JSObject::cast(current_map->prototype())); |
current_map = handle(current->map()); |
} |