Reviewers: Michael Starzinger,

Description:
Make generator constructors configurable

[email protected]
BUG=3902

Please review this at https://codereview.chromium.org/939953002/

Base URL: https://chromium.googlesource.com/v8/v8.git@master

Affected files (+17, -2 lines):
  M src/generator.js
  A test/mjsunit/es6/regress/regress-3902.js


Index: src/generator.js
diff --git a/src/generator.js b/src/generator.js
index 8e9ed8f2566a7e8088e8cb26e1018967d8d9d0f2..9ab7dcb9aab9b78baea82ca749ce129a5350be75 100644
--- a/src/generator.js
+++ b/src/generator.js
@@ -97,7 +97,7 @@ function SetUpGenerators() {
   %AddNamedProperty(GeneratorObjectPrototype, symbolIterator,
       GeneratorObjectIterator, DONT_ENUM | DONT_DELETE | READ_ONLY);
   %AddNamedProperty(GeneratorObjectPrototype, "constructor",
-      GeneratorFunctionPrototype, DONT_ENUM | DONT_DELETE | READ_ONLY);
+      GeneratorFunctionPrototype, DONT_ENUM | READ_ONLY);
   %AddNamedProperty(GeneratorObjectPrototype,
       symbolToStringTag, "Generator", DONT_ENUM | READ_ONLY);
   %InternalSetPrototype(GeneratorFunctionPrototype, $Function.prototype);
@@ -105,7 +105,7 @@ function SetUpGenerators() {
       symbolToStringTag, "GeneratorFunction", DONT_ENUM | READ_ONLY);
%SetCode(GeneratorFunctionPrototype, GeneratorFunctionPrototypeConstructor);
   %AddNamedProperty(GeneratorFunctionPrototype, "constructor",
-      GeneratorFunction, DONT_ENUM | DONT_DELETE | READ_ONLY);
+      GeneratorFunction, DONT_ENUM | READ_ONLY);
   %InternalSetPrototype(GeneratorFunction, $Function);
   %SetCode(GeneratorFunction, GeneratorFunctionConstructor);
 }
Index: test/mjsunit/es6/regress/regress-3902.js
diff --git a/test/mjsunit/es6/regress/regress-3902.js b/test/mjsunit/es6/regress/regress-3902.js
new file mode 100644
index 0000000000000000000000000000000000000000..768a4a1d075e383d39569905f2aec04aef657503
--- /dev/null
+++ b/test/mjsunit/es6/regress/regress-3902.js
@@ -0,0 +1,15 @@
+// Copyright 2015 the V8 project authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+function* g() {}
+assertTrue(Object.getOwnPropertyDescriptor(g.__proto__, 
"constructor").configurable);
+assertTrue(Object.getOwnPropertyDescriptor(g.prototype.__proto__, 
"constructor").configurable);
+
+function FakeGeneratorFunctionConstructor() {}
+Object.defineProperty(g.__proto__, "constructor", {value: FakeGeneratorFunctionConstructor});
+assertSame(g.__proto__.constructor, FakeGeneratorFunctionConstructor);
+
+function FakeGeneratorObjectConstructor() {}
+Object.defineProperty(g.prototype.__proto__, "constructor", {value: FakeGeneratorObjectConstructor}); +assertSame(g.prototype.__proto__.constructor, FakeGeneratorObjectConstructor);


--
--
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/d/optout.

Reply via email to