| Index: src/ic/x64/handler-compiler-x64.cc
|
| diff --git a/src/ic/x64/handler-compiler-x64.cc b/src/ic/x64/handler-compiler-x64.cc
|
| index 485d87dc5790552ccda5161646650c9df29d7beb..4b066f2d4291e2d2f3f48104c55c515add11ff77 100644
|
| --- a/src/ic/x64/handler-compiler-x64.cc
|
| +++ b/src/ic/x64/handler-compiler-x64.cc
|
| @@ -431,6 +431,17 @@ 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());
|
| @@ -472,15 +483,7 @@ Register PropertyHandlerCompiler::CheckPrototypes(
|
| __ j(not_equal, 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);
|
| }
|
| @@ -504,13 +507,6 @@ Register PropertyHandlerCompiler::CheckPrototypes(
|
| __ j(not_equal, 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;
|
| }
|
|
|