[crankshaft] Fix interceptor shadowing constant global property.
authormstarzinger <mstarzinger@chromium.org>
Fri, 10 Apr 2015 08:30:41 +0000 (01:30 -0700)
committerCommit bot <commit-bot@chromium.org>
Fri, 10 Apr 2015 08:30:44 +0000 (08:30 +0000)
This makes sure Crankshaft respects interceptors in the global object
even when they shadow a constant global property.

R=verwaest@chromium.org
TEST=cctest/test-api-interceptors/PrePropertyHandler

Review URL: https://codereview.chromium.org/1070803002

Cr-Commit-Position: refs/heads/master@{#27733}

src/hydrogen.cc
test/cctest/cctest.status

index 6fc434c..04d3cc7 100644 (file)
@@ -5346,8 +5346,7 @@ void HOptimizedGraphBuilder::VisitVariableProxy(VariableProxy* expr) {
         }
       }
 
-      LookupIterator it(global, variable->name(),
-                        LookupIterator::OWN_SKIP_INTERCEPTOR);
+      LookupIterator it(global, variable->name(), LookupIterator::OWN);
       GlobalPropertyAccess type = LookupGlobalProperty(variable, &it, LOAD);
 
       if (type == kUseCell) {
@@ -6510,7 +6509,7 @@ void HOptimizedGraphBuilder::HandleGlobalVariableAssignment(
     }
   }
 
-  LookupIterator it(global, var->name(), LookupIterator::OWN_SKIP_INTERCEPTOR);
+  LookupIterator it(global, var->name(), LookupIterator::OWN);
   GlobalPropertyAccess type = LookupGlobalProperty(var, &it, STORE);
   if (type == kUseCell) {
     Handle<PropertyCell> cell = it.GetPropertyCell();
index 75aacde..34cbab1 100644 (file)
   # optimized and hence scripts don't "return" the correct value. Fix this.
   'test-compiler/CompileFunctionInContext*': [PASS, NO_VARIANTS],
 
-  # TODO(mstarzinger): Crankshaft doesn't fire interceptors as expected.
-  'test-api-interceptors/PrePropertyHandler': [PASS, NO_VARIANTS],
-
   # TODO(mstarzinger): Crankshaft messes with debugger, investigate and fix!
   'test-debug/BreakPointThroughJavaScript': [PASS, NO_VARIANTS],  # in no-snap mode.
   'test-debug/ScriptBreakPointByIdThroughJavaScript': [PASS, NO_VARIANTS],