Revision: 7527
Author: [email protected]
Date: Thu Apr 7 01:24:56 2011
Log: Make "length" and "BYTES_PER_ELEMENT" properties of typed arrays
accessible.
Review URL: http://codereview.chromium.org/6805010
http://code.google.com/p/v8/source/detail?r=7527
Modified:
/branches/bleeding_edge/samples/shell.cc
/branches/bleeding_edge/test/mjsunit/external-array.js
=======================================
--- /branches/bleeding_edge/samples/shell.cc Wed Apr 6 01:31:54 2011
+++ /branches/bleeding_edge/samples/shell.cc Thu Apr 7 01:24:56 2011
@@ -466,6 +466,10 @@
v8::Persistent<v8::Object>::New(array);
persistent_array.MakeWeak(data, ExternalArrayWeakCallback);
array->SetIndexedPropertiesToExternalArrayData(data, type, length);
+ array->Set(v8::String::New("length"), v8::Int32::New(length),
+ v8::ReadOnly);
+ array->Set(v8::String::New("BYTES_PER_ELEMENT"),
+ v8::Int32::New(element_size));
return array;
}
=======================================
--- /branches/bleeding_edge/test/mjsunit/external-array.js Wed Apr 6
04:01:07 2011
+++ /branches/bleeding_edge/test/mjsunit/external-array.js Thu Apr 7
01:24:56 2011
@@ -38,3 +38,24 @@
assertEquals(0, a[0]);
assertEquals(0, a[1]);
+
+// Test the correct behavior of the |length| property (which is read-only).
+a = new Int32Array(42);
+assertEquals(42, a.length);
+a.length = 2;
+assertEquals(42, a.length);
+assertTrue(delete a.length);
+a.length = 2
+assertEquals(2, a.length);
+
+// Test the correct behavior of the |BYTES_PER_ELEMENT| property (which is
+// "constant", but not read-only).
+a = new Int32Array(2);
+assertEquals(4, a.BYTES_PER_ELEMENT);
+a.BYTES_PER_ELEMENT = 42;
+assertEquals(42, a.BYTES_PER_ELEMENT);
+a = new Uint8Array(2);
+assertEquals(1, a.BYTES_PER_ELEMENT);
+a = new Int16Array(2);
+assertEquals(2, a.BYTES_PER_ELEMENT);
+
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev