Revision: 16471
Author:   [email protected]
Date:     Mon Sep  2 12:16:02 2013 UTC
Log:      Representation of interceptor / handler properties are tagged.
Otherwise store ICs will never be initialized, due to lookup->CanHoldValue(value);

BUG=chromium:256330
[email protected]

Review URL: https://chromiumcodereview.appspot.com/23533012
http://code.google.com/p/v8/source/detail?r=16471

Modified:
 /branches/bleeding_edge/src/property.h
 /branches/bleeding_edge/test/cctest/test-api.cc

=======================================
--- /branches/bleeding_edge/src/property.h      Thu Aug 22 13:43:06 2013 UTC
+++ /branches/bleeding_edge/src/property.h      Mon Sep  2 12:16:02 2013 UTC
@@ -225,14 +225,14 @@
   void HandlerResult(JSProxy* proxy) {
     lookup_type_ = HANDLER_TYPE;
     holder_ = proxy;
-    details_ = PropertyDetails(NONE, HANDLER, Representation::None());
+    details_ = PropertyDetails(NONE, HANDLER, Representation::Tagged());
     cacheable_ = false;
   }

   void InterceptorResult(JSObject* holder) {
     lookup_type_ = INTERCEPTOR_TYPE;
     holder_ = holder;
-    details_ = PropertyDetails(NONE, INTERCEPTOR, Representation::None());
+ details_ = PropertyDetails(NONE, INTERCEPTOR, Representation::Tagged());
   }

   void NotFound() {
=======================================
--- /branches/bleeding_edge/test/cctest/test-api.cc Fri Aug 30 14:54:59 2013 UTC +++ /branches/bleeding_edge/test/cctest/test-api.cc Mon Sep 2 12:16:02 2013 UTC
@@ -20308,5 +20308,21 @@
   // the other tests.
   v8::V8::SetFailedAccessCheckCallbackFunction(NULL);
 }
+
+
+THREADED_TEST(Regress256330) {
+  i::FLAG_allow_natives_syntax = true;
+  LocalContext context;
+  v8::HandleScope scope(context->GetIsolate());
+  Handle<FunctionTemplate> templ = FunctionTemplate::New();
+  AddInterceptor(templ, EmptyInterceptorGetter, EmptyInterceptorSetter);
+  context->Global()->Set(v8_str("Bug"), templ->GetFunction());
+  CompileRun("\"use strict\"; var o = new Bug;"
+             "function f(o) { o.x = 10; };"
+             "f(o); f(o); f(o);"
+             "%OptimizeFunctionOnNextCall(f);"
+             "f(o);");
+  ExpectBoolean("%GetOptimizationStatus(f) != 2", true);
+}

 #endif  // V8_OS_POSIX

--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to