Extend the interceptor setter ASSERT to support the JSGlobalProxy case.
authorverwaest@chromium.org <verwaest@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Thu, 24 Jul 2014 09:31:45 +0000 (09:31 +0000)
committerverwaest@chromium.org <verwaest@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Thu, 24 Jul 2014 09:31:45 +0000 (09:31 +0000)
BUG=v8:3463
LOG=n
R=dcarney@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22589 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/stub-cache.cc

index 845d4d40476a0d2f0be79068771ab555ad1fe875..c88ba26fa2961a323c987448df2590347a5be22a 100644 (file)
@@ -606,7 +606,16 @@ RUNTIME_FUNCTION(StoreInterceptorProperty) {
   Handle<JSObject> receiver = args.at<JSObject>(0);
   Handle<Name> name = args.at<Name>(1);
   Handle<Object> value = args.at<Object>(2);
-  ASSERT(receiver->HasNamedInterceptor());
+#ifdef DEBUG
+  if (receiver->IsJSGlobalProxy()) {
+    PrototypeIterator iter(isolate, receiver);
+    ASSERT(iter.IsAtEnd() ||
+           Handle<JSGlobalObject>::cast(PrototypeIterator::GetCurrent(iter))
+               ->HasNamedInterceptor());
+  } else {
+    ASSERT(receiver->HasNamedInterceptor());
+  }
+#endif
   Handle<Object> result;
   ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
       isolate, result,