Skip to content

Commit 6157697

Browse files
cjihrigJulien Gilli
authored and
Julien Gilli
committed
deps: revert v8 Array.prototype.values() removal
The Node 0.12 line was initially released with a version of v8 that included Array.prototype.values(). In nodejs/node-v0.x-archive#18206, v8 was updated to a version that dropped support for values(). https://codereview.chromium.org/647703003 removed this method because it causes problems with some versions of Outlook Web Access. This commit reverts the removal of Array.prototype.values(). Original commit message: Revert "Version 3.28.71.17 (merged r24706, r24708)" This reverts commit 529541ecb58fd0d6df4dfbe41d01bff9ae21ff06. Conflicts: src/version.cc Reviewed-By: Julien Gilli <[email protected]> PR-URL: nodejs/node-v0.x-archive#25328
1 parent a294aee commit 6157697

6 files changed

+16
-12
lines changed

deps/v8/src/array-iterator.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,8 @@ function ExtendArrayPrototype() {
120120
%CheckIsBootstrapping();
121121

122122
InstallFunctions($Array.prototype, DONT_ENUM, $Array(
123-
// No 'values' since it breaks webcompat: http://crbug.com/409858
124123
'entries', ArrayEntries,
124+
'values', ArrayValues,
125125
'keys', ArrayKeys
126126
));
127127

deps/v8/src/array.js

+1
Original file line numberDiff line numberDiff line change
@@ -1480,6 +1480,7 @@ function SetUpArray() {
14801480
find: true,
14811481
findIndex: true,
14821482
keys: true,
1483+
values: true,
14831484
};
14841485
%AddNamedProperty($Array.prototype, symbolUnscopables, unscopables,
14851486
DONT_ENUM | READ_ONLY);

deps/v8/test/mjsunit/es6/array-iterator.js

+10-7
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,11 @@ function assertHasOwnProperty(object, name, attrs) {
4545

4646
function TestArrayPrototype() {
4747
assertHasOwnProperty(Array.prototype, 'entries', DONT_ENUM);
48+
assertHasOwnProperty(Array.prototype, 'values', DONT_ENUM);
4849
assertHasOwnProperty(Array.prototype, 'keys', DONT_ENUM);
4950
assertHasOwnProperty(Array.prototype, Symbol.iterator, DONT_ENUM);
51+
52+
assertEquals(Array.prototype.values, Array.prototype[Symbol.iterator]);
5053
}
5154
TestArrayPrototype();
5255

@@ -58,7 +61,7 @@ function assertIteratorResult(value, done, result) {
5861

5962
function TestValues() {
6063
var array = ['a', 'b', 'c'];
61-
var iterator = array[Symbol.iterator]();
64+
var iterator = array.values();
6265
assertIteratorResult('a', false, iterator.next());
6366
assertIteratorResult('b', false, iterator.next());
6467
assertIteratorResult('c', false, iterator.next());
@@ -72,7 +75,7 @@ TestValues();
7275

7376
function TestValuesMutate() {
7477
var array = ['a', 'b', 'c'];
75-
var iterator = array[Symbol.iterator]();
78+
var iterator = array.values();
7679
assertIteratorResult('a', false, iterator.next());
7780
assertIteratorResult('b', false, iterator.next());
7881
assertIteratorResult('c', false, iterator.next());
@@ -139,17 +142,17 @@ TestEntriesMutate();
139142

140143
function TestArrayIteratorPrototype() {
141144
var array = [];
142-
var iterator = array.keys();
145+
var iterator = array.values();
143146

144147
var ArrayIteratorPrototype = iterator.__proto__;
145148

146-
assertEquals(ArrayIteratorPrototype, array[Symbol.iterator]().__proto__);
149+
assertEquals(ArrayIteratorPrototype, array.values().__proto__);
147150
assertEquals(ArrayIteratorPrototype, array.keys().__proto__);
148151
assertEquals(ArrayIteratorPrototype, array.entries().__proto__);
149152

150153
assertEquals(Object.prototype, ArrayIteratorPrototype.__proto__);
151154

152-
assertEquals('Array Iterator', %_ClassOf(array[Symbol.iterator]()));
155+
assertEquals('Array Iterator', %_ClassOf(array.values()));
153156
assertEquals('Array Iterator', %_ClassOf(array.keys()));
154157
assertEquals('Array Iterator', %_ClassOf(array.entries()));
155158

@@ -166,7 +169,7 @@ function TestForArrayValues() {
166169
var buffer = [];
167170
var array = [0, 'a', true, false, null, /* hole */, undefined, NaN];
168171
var i = 0;
169-
for (var value of array[Symbol.iterator]()) {
172+
for (var value of array.values()) {
170173
buffer[i++] = value;
171174
}
172175

@@ -239,7 +242,7 @@ TestForArrayValues();
239242

240243
function TestNonOwnSlots() {
241244
var array = [0];
242-
var iterator = array[Symbol.iterator]();
245+
var iterator = array.values();
243246
var object = {__proto__: iterator};
244247

245248
assertThrows(function() {

deps/v8/test/mjsunit/es6/typed-array-iterator.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ function TestTypedArrayPrototype(constructor) {
2121
assertFalse(constructor.prototype.propertyIsEnumerable(Symbol.iterator));
2222

2323
assertEquals(Array.prototype.entries, constructor.prototype.entries);
24-
assertEquals(Array.prototype[Symbol.iterator], constructor.prototype.values);
24+
assertEquals(Array.prototype.values, constructor.prototype.values);
2525
assertEquals(Array.prototype.keys, constructor.prototype.keys);
26-
assertEquals(Array.prototype[Symbol.iterator], constructor.prototype[Symbol.iterator]);
26+
assertEquals(Array.prototype.values, constructor.prototype[Symbol.iterator]);
2727
}
2828
constructors.forEach(TestTypedArrayPrototype);
2929

deps/v8/test/webkit/fast/js/Object-getOwnPropertyNames-expected.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ PASS getSortedOwnPropertyNames(Object.prototype) is ['__defineGetter__', '__defi
6868
PASS getSortedOwnPropertyNames(Function) is ['arguments', 'caller', 'length', 'name', 'prototype']
6969
PASS getSortedOwnPropertyNames(Function.prototype) is ['apply', 'arguments', 'bind', 'call', 'caller', 'constructor', 'length', 'name', 'toString']
7070
PASS getSortedOwnPropertyNames(Array) is ['arguments', 'caller', 'isArray', 'length', 'name', 'observe', 'prototype', 'unobserve']
71-
PASS getSortedOwnPropertyNames(Array.prototype) is ['concat', 'constructor', 'entries', 'every', 'filter', 'forEach', 'indexOf', 'join', 'keys', 'lastIndexOf', 'length', 'map', 'pop', 'push', 'reduce', 'reduceRight', 'reverse', 'shift', 'slice', 'some', 'sort', 'splice', 'toLocaleString', 'toString', 'unshift']
71+
PASS getSortedOwnPropertyNames(Array.prototype) is ['concat', 'constructor', 'entries', 'every', 'filter', 'forEach', 'indexOf', 'join', 'keys', 'lastIndexOf', 'length', 'map', 'pop', 'push', 'reduce', 'reduceRight', 'reverse', 'shift', 'slice', 'some', 'sort', 'splice', 'toLocaleString', 'toString', 'unshift', 'values']
7272
PASS getSortedOwnPropertyNames(String) is ['arguments', 'caller', 'fromCharCode', 'length', 'name', 'prototype']
7373
PASS getSortedOwnPropertyNames(String.prototype) is ['anchor', 'big', 'blink', 'bold', 'charAt', 'charCodeAt', 'concat', 'constructor', 'fixed', 'fontcolor', 'fontsize', 'indexOf', 'italics', 'lastIndexOf', 'length', 'link', 'localeCompare', 'match', 'normalize', 'replace', 'search', 'slice', 'small', 'split', 'strike', 'sub', 'substr', 'substring', 'sup', 'toLocaleLowerCase', 'toLocaleUpperCase', 'toLowerCase', 'toString', 'toUpperCase', 'trim', 'trimLeft', 'trimRight', 'valueOf']
7474
PASS getSortedOwnPropertyNames(Boolean) is ['arguments', 'caller', 'length', 'name', 'prototype']

deps/v8/test/webkit/fast/js/Object-getOwnPropertyNames.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ var expectedPropertyNamesSet = {
7676
"Function": "['arguments', 'caller', 'length', 'name', 'prototype']",
7777
"Function.prototype": "['apply', 'arguments', 'bind', 'call', 'caller', 'constructor', 'length', 'name', 'toString']",
7878
"Array": "['arguments', 'caller', 'isArray', 'length', 'name', 'observe', 'prototype', 'unobserve']",
79-
"Array.prototype": "['concat', 'constructor', 'entries', 'every', 'filter', 'forEach', 'indexOf', 'join', 'keys', 'lastIndexOf', 'length', 'map', 'pop', 'push', 'reduce', 'reduceRight', 'reverse', 'shift', 'slice', 'some', 'sort', 'splice', 'toLocaleString', 'toString', 'unshift']",
79+
"Array.prototype": "['concat', 'constructor', 'entries', 'every', 'filter', 'forEach', 'indexOf', 'join', 'keys', 'lastIndexOf', 'length', 'map', 'pop', 'push', 'reduce', 'reduceRight', 'reverse', 'shift', 'slice', 'some', 'sort', 'splice', 'toLocaleString', 'toString', 'unshift', 'values']",
8080
"String": "['arguments', 'caller', 'fromCharCode', 'length', 'name', 'prototype']",
8181
"String.prototype": "['anchor', 'big', 'blink', 'bold', 'charAt', 'charCodeAt', 'concat', 'constructor', 'fixed', 'fontcolor', 'fontsize', 'indexOf', 'italics', 'lastIndexOf', 'length', 'link', 'localeCompare', 'match', 'normalize', 'replace', 'search', 'slice', 'small', 'split', 'strike', 'sub', 'substr', 'substring', 'sup', 'toLocaleLowerCase', 'toLocaleUpperCase', 'toLowerCase', 'toString', 'toUpperCase', 'trim', 'trimLeft', 'trimRight', 'valueOf']",
8282
"Boolean": "['arguments', 'caller', 'length', 'name', 'prototype']",

0 commit comments

Comments
 (0)