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; |
} |