Index: test/mjsunit/setter-on-constructor-prototype.js |
=================================================================== |
--- test/mjsunit/setter-on-constructor-prototype.js (revision 3879) |
+++ test/mjsunit/setter-on-constructor-prototype.js (working copy) |
@@ -25,66 +25,87 @@ |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
+// Flags: --allow-natives-syntax |
-function C1() { |
- this.x = 23; |
+function RunTest(ensure_fast_case) { |
+ function C1() { |
+ this.x = 23; |
+ }; |
+ C1.prototype = { set x(value) { this.y = 23; } }; |
+ if (ensure_fast_case) { |
+ %ToFastProperties(C1.prototype); |
+ } |
+ |
+ for (var i = 0; i < 10; i++) { |
+ var c1 = new C1(); |
+ assertEquals("undefined", typeof c1.x); |
+ assertEquals(23, c1.y); |
+ } |
+ |
+ |
+ function C2() { |
+ this.x = 23; |
+ }; |
+ C2.prototype = { }; |
+ C2.prototype.__proto__ = { set x(value) { this.y = 23; } }; |
+ if (ensure_fast_case) { |
+ %ToFastProperties(C2.prototype.__proto__) |
+ } |
+ |
+ for (var i = 0; i < 10; i++) { |
+ var c2 = new C2(); |
+ assertEquals("undefined", typeof c2.x); |
+ assertEquals(23, c2.y); |
+ } |
+ |
+ |
+ function C3() { |
+ this.x = 23; |
+ }; |
+ C3.prototype = { }; |
+ C3.prototype.__defineSetter__('x', function(value) { this.y = 23; }); |
+ if (ensure_fast_case) { |
+ %ToFastProperties(C3.prototype); |
+ } |
+ |
+ for (var i = 0; i < 10; i++) { |
+ var c3 = new C3(); |
+ assertEquals("undefined", typeof c3.x); |
+ assertEquals(23, c3.y); |
+ } |
+ |
+ |
+ function C4() { |
+ this.x = 23; |
+ }; |
+ C4.prototype = { }; |
+ C4.prototype.__proto__ = { }; |
+ C4.prototype.__proto__.__defineSetter__('x', function(value) { this.y = 23; }); |
+ if (ensure_fast_case) { |
+ %ToFastProperties(C4.prototype.__proto__); |
+ } |
+ |
+ for (var i = 0; i < 10; i++) { |
+ var c4 = new C4(); |
+ assertEquals("undefined", typeof c4.x); |
+ assertEquals(23, c4.y); |
+ } |
+ |
+ |
+ function D() { |
+ this.x = 23; |
+ }; |
+ D.prototype = 1; |
+ if (ensure_fast_case) { |
+ %ToFastProperties(D.prototype); |
+ } |
+ |
+ for (var i = 0; i < 10; i++) { |
+ var d = new D(); |
+ assertEquals(23, d.x); |
+ assertEquals("undefined", typeof d.y); |
+ } |
} |
-C1.prototype = { set x(value) { this.y = 23; } } |
-for (var i = 0; i < 10; i++) { |
- var c1 = new C1(); |
- assertEquals("undefined", typeof c1.x); |
- assertEquals(23, c1.y); |
-} |
- |
- |
-function C2() { |
- this.x = 23; |
-} |
-C2.prototype = { } |
-C2.prototype.__proto__ = { set x(value) { this.y = 23; } } |
- |
-for (var i = 0; i < 10; i++) { |
- var c2 = new C2(); |
- assertEquals("undefined", typeof c2.x); |
- assertEquals(23, c2.y); |
-} |
- |
- |
-function C3() { |
- this.x = 23; |
-} |
-C3.prototype = { } |
-C3.prototype.__defineSetter__('x', function(value) { this.y = 23; }) |
- |
-for (var i = 0; i < 10; i++) { |
- var c3 = new C3(); |
- assertEquals("undefined", typeof c3.x); |
- assertEquals(23, c3.y); |
-} |
- |
- |
-function C4() { |
- this.x = 23; |
-} |
-C4.prototype = { } |
-C4.prototype.__proto__ = { } |
-C4.prototype.__proto__.__defineSetter__('x', function(value) { this.y = 23; }) |
- |
-for (var i = 0; i < 10; i++) { |
- var c4 = new C4(); |
- assertEquals("undefined", typeof c4.x); |
- assertEquals(23, c4.y); |
-} |
- |
- |
-function D() { |
- this.x = 23; |
-} |
-D.prototype = 1; |
- |
-for (var i = 0; i < 10; i++) { |
- var d = new D(); |
- assertEquals(23, d.x); |
- assertEquals("undefined", typeof d.y); |
-} |
+RunTest(false); |
+//RunTest(true); |
Mads Ager (chromium)
2010/02/18 09:19:35
Code in comment - doesn't this work?
Søren Thygesen Gjesse
2010/02/18 09:42:52
http://codereview.chromium.org/647007 (it did work
|