| 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 4e8cbe1edb27c97786fcb3ad08ad591b0ff74976..55f93a556f7ac3e928617a6e65182ff937b72e6c 100644
|
| --- a/src/ic/ppc/handler-compiler-ppc.cc
|
| +++ b/src/ic/ppc/handler-compiler-ppc.cc
|
| @@ -427,6 +427,16 @@ Register PropertyHandlerCompiler::CheckPrototypes(
|
| if (receiver_map->IsJSGlobalObjectMap()) {
|
| current = isolate()->global_object();
|
| }
|
| + // Check access rights to the global object. This has to happen after
|
| + // the map check so that we know that the object is actually a global
|
| + // object.
|
| + // This allows us to install generated handlers for accesses to the
|
| + // global proxy (as opposed to using slow ICs). See corresponding code
|
| + // in LookupForRead().
|
| + if (receiver_map->IsJSGlobalProxyMap()) {
|
| + __ CheckAccessGlobalProxy(reg, scratch2, miss);
|
| + }
|
| +
|
| Handle<JSObject> prototype = Handle<JSObject>::null();
|
| Handle<Map> current_map = receiver_map;
|
| Handle<Map> holder_map(holder()->map());
|
| @@ -461,23 +471,14 @@ Register PropertyHandlerCompiler::CheckPrototypes(
|
| } else {
|
| Register map_reg = scratch1;
|
| __ LoadP(map_reg, FieldMemOperand(reg, HeapObject::kMapOffset));
|
| - if (depth != 1 || check == CHECK_ALL_MAPS) {
|
| - Handle<WeakCell> cell = Map::WeakCellForMap(current_map);
|
| - __ CmpWeakValue(map_reg, cell, scratch2);
|
| - __ bne(miss);
|
| - }
|
|
|
| - // Check access rights to the global object. This has to happen after
|
| - // the map check so that we know that the object is actually a global
|
| - // object.
|
| - // This allows us to install generated handlers for accesses to the
|
| - // global proxy (as opposed to using slow ICs). See corresponding code
|
| - // in LookupForRead().
|
| - if (current_map->IsJSGlobalProxyMap()) {
|
| - __ CheckAccessGlobalProxy(reg, scratch2, miss);
|
| - } else if (current_map->IsJSGlobalObjectMap()) {
|
| + 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);
|
| + __ bne(miss);
|
| }
|
|
|
| reg = holder_reg; // From now on the object will be in holder_reg.
|
| @@ -501,13 +502,6 @@ Register PropertyHandlerCompiler::CheckPrototypes(
|
| __ bne(miss);
|
| }
|
|
|
| - // Perform security check for access to the global object.
|
| - DCHECK(current_map->IsJSGlobalProxyMap() ||
|
| - !current_map->is_access_check_needed());
|
| - if (current_map->IsJSGlobalProxyMap()) {
|
| - __ CheckAccessGlobalProxy(reg, scratch1, miss);
|
| - }
|
| -
|
| // Return the register containing the holder.
|
| return reg;
|
| }
|
|
|