Revision: 21999
Author: [email protected]
Date: Wed Jun 25 08:46:53 2014 UTC
Log: Add @@iterator, .entries(), .values(), .keys() support to typed
arrays
[email protected], [email protected]
BUG=
Review URL: https://codereview.chromium.org/336403002
http://code.google.com/p/v8/source/detail?r=21999
Added:
/branches/bleeding_edge/test/mjsunit/harmony/typed-array-iterator.js
Modified:
/branches/bleeding_edge/src/array-iterator.js
/branches/bleeding_edge/tools/generate-runtime-tests.py
=======================================
--- /dev/null
+++ /branches/bleeding_edge/test/mjsunit/harmony/typed-array-iterator.js
Wed Jun 25 08:46:53 2014 UTC
@@ -0,0 +1,41 @@
+// Copyright 2014 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.
+
+// Flags: --harmony-iteration
+
+
+var constructors = [Uint8Array, Int8Array,
+ Uint16Array, Int16Array,
+ Uint32Array, Int32Array,
+ Float32Array, Float64Array,
+ Uint8ClampedArray];
+
+function TestTypedArrayPrototype(constructor) {
+ assertTrue(constructor.prototype.hasOwnProperty('entries'));
+ assertTrue(constructor.prototype.hasOwnProperty('values'));
+ assertTrue(constructor.prototype.hasOwnProperty('keys'));
+ assertTrue(constructor.prototype.hasOwnProperty(Symbol.iterator));
+
+ assertFalse(constructor.prototype.propertyIsEnumerable('entries'));
+ assertFalse(constructor.prototype.propertyIsEnumerable('values'));
+ assertFalse(constructor.prototype.propertyIsEnumerable('keys'));
+ assertFalse(constructor.prototype.propertyIsEnumerable(Symbol.iterator));
+
+ assertEquals(Array.prototype.entries, constructor.prototype.entries);
+ assertEquals(Array.prototype.values, constructor.prototype.values);
+ assertEquals(Array.prototype.keys, constructor.prototype.keys);
+ assertEquals(Array.prototype.values,
constructor.prototype[Symbol.iterator]);
+}
+constructors.forEach(TestTypedArrayPrototype);
+
+
+function TestTypedArrayValues(constructor) {
+ var array = [1, 2, 3];
+ var i = 0;
+ for (var value of new constructor(array)) {
+ assertEquals(array[i++], value);
+ }
+ assertEquals(i, array.length);
+}
+constructors.forEach(TestTypedArrayValues);
=======================================
--- /branches/bleeding_edge/src/array-iterator.js Wed Jun 25 07:32:57 2014
UTC
+++ /branches/bleeding_edge/src/array-iterator.js Wed Jun 25 08:46:53 2014
UTC
@@ -128,3 +128,30 @@
%SetProperty($Array.prototype, symbolIterator, ArrayValues, DONT_ENUM);
}
ExtendArrayPrototype();
+
+
+function ExtendTypedArrayPrototypes() {
+ %CheckIsBootstrapping();
+
+macro TYPED_ARRAYS(FUNCTION)
+ FUNCTION(Uint8Array)
+ FUNCTION(Int8Array)
+ FUNCTION(Uint16Array)
+ FUNCTION(Int16Array)
+ FUNCTION(Uint32Array)
+ FUNCTION(Int32Array)
+ FUNCTION(Float32Array)
+ FUNCTION(Float64Array)
+ FUNCTION(Uint8ClampedArray)
+endmacro
+
+macro EXTEND_TYPED_ARRAY(NAME)
+ %SetProperty($NAME.prototype, 'entries', ArrayEntries, DONT_ENUM);
+ %SetProperty($NAME.prototype, 'values', ArrayValues, DONT_ENUM);
+ %SetProperty($NAME.prototype, 'keys', ArrayKeys, DONT_ENUM);
+ %SetProperty($NAME.prototype, symbolIterator, ArrayValues, DONT_ENUM);
+endmacro
+
+ TYPED_ARRAYS(EXTEND_TYPED_ARRAY)
+}
+ExtendTypedArrayPrototypes();
=======================================
--- /branches/bleeding_edge/tools/generate-runtime-tests.py Wed Jun 25
07:43:14 2014 UTC
+++ /branches/bleeding_edge/tools/generate-runtime-tests.py Wed Jun 25
08:46:53 2014 UTC
@@ -51,7 +51,7 @@
EXPECTED_FUZZABLE_COUNT = 326
EXPECTED_CCTEST_COUNT = 6
EXPECTED_UNKNOWN_COUNT = 4
-EXPECTED_BUILTINS_COUNT = 807
+EXPECTED_BUILTINS_COUNT = 808
# Don't call these at all.
--
--
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.