[es6] Fix length property of collection constructors
authorarv <arv@chromium.org>
Mon, 13 Apr 2015 18:59:40 +0000 (11:59 -0700)
committerCommit bot <commit-bot@chromium.org>
Mon, 13 Apr 2015 18:59:39 +0000 (18:59 +0000)
{Map, Set, WeakMap, WeakSet}.length should be 0.

BUG=v8:4021
LOG=N
R=adamk@chromium.org

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

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

src/collection.js
src/weak-collection.js
test/mjsunit/es6/collections.js

index 7effba9..4a73ff5 100644 (file)
@@ -236,6 +236,7 @@ function SetForEach(f, receiver) {
 
 
 %SetCode($Set, SetConstructor);
+%FunctionSetLength($Set, 0);
 %FunctionSetPrototype($Set, new $Object());
 %AddNamedProperty($Set.prototype, "constructor", $Set, DONT_ENUM);
 %AddNamedProperty(
@@ -424,6 +425,7 @@ function MapForEach(f, receiver) {
 
 
 %SetCode($Map, MapConstructor);
+%FunctionSetLength($Map, 0);
 %FunctionSetPrototype($Map, new $Object());
 %AddNamedProperty($Map.prototype, "constructor", $Map, DONT_ENUM);
 %AddNamedProperty(
index d6d8837..4244792 100644 (file)
@@ -85,6 +85,7 @@ function SetUpWeakMap() {
   %CheckIsBootstrapping();
 
   %SetCode($WeakMap, WeakMapConstructor);
+  %FunctionSetLength($WeakMap, 0);
   %FunctionSetPrototype($WeakMap, new $Object());
   %AddNamedProperty($WeakMap.prototype, "constructor", $WeakMap, DONT_ENUM);
   %AddNamedProperty(
@@ -162,6 +163,7 @@ function SetUpWeakSet() {
   %CheckIsBootstrapping();
 
   %SetCode($WeakSet, WeakSetConstructor);
+  %FunctionSetLength($WeakSet, 0);
   %FunctionSetPrototype($WeakSet, new $Object());
   %AddNamedProperty($WeakSet.prototype, "constructor", $WeakSet, DONT_ENUM);
   %AddNamedProperty(
index 888b686..e1e7758 100644 (file)
@@ -346,7 +346,7 @@ function TestConstructor(C) {
   assertFalse(C === Object.prototype.constructor);
   assertSame(C, C.prototype.constructor);
   assertSame(C, (new C).__proto__.constructor);
-  assertEquals(1, C.length);
+  assertEquals(0, C.length);
 }
 TestConstructor(Set);
 TestConstructor(Map);