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

Reply via email to