[strong] dot prototypes of strong class literals should be strong objects
authorconradw <conradw@chromium.org>
Wed, 5 Aug 2015 15:36:56 +0000 (08:36 -0700)
committerCommit bot <commit-bot@chromium.org>
Wed, 5 Aug 2015 15:38:06 +0000 (15:38 +0000)
BUG=v8:3956
LOG=N

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

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

src/runtime/runtime-classes.cc
test/mjsunit/strong/literals.js

index 76c5c00..8312090 100644 (file)
@@ -137,6 +137,9 @@ static MaybeHandle<Object> DefineClass(Isolate* isolate, Handle<Object> name,
 
   Handle<Map> map =
       isolate->factory()->NewMap(JS_OBJECT_TYPE, JSObject::kHeaderSize);
+  if (constructor->map()->is_strong()) {
+    map->set_is_strong();
+  }
   Map::SetPrototype(map, prototype_parent);
   map->SetConstructor(*constructor);
   Handle<JSObject> prototype = isolate->factory()->NewJSObjectFromMap(map);
index 73129e7..8c04d6e 100644 (file)
@@ -310,8 +310,8 @@ let GeneratorPrototype = (function*(){}).__proto__;
   'use strong';
   function assertStrongClass(x) {
     assertTrue(%IsStrong(x));
-    // TODO(rossberg): strongify class prototype and instance
-    // assertTrue(%IsStrong(x.prototype));
+    assertTrue(%IsStrong(x.prototype));
+    // TODO(rossberg): strongify class instance
     // assertTrue(%IsStrong(new x));
   }
   class C {};