[ES2015][TypedArray] add other 8 types (#1532)

Add Uint8Array, Int16Array Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array and Uint8ClampedArray. Support the conversion between any pairs of those types.

JerryScript-DCO-1.0-Signed-off-by: Zidong Jiang zidong.jiang@intel.com
This commit is contained in:
Zidong Jiang
2017-01-24 22:06:31 +08:00
committed by László Langó
parent 124582793f
commit 0547b31c16
59 changed files with 2606 additions and 80 deletions
@@ -0,0 +1,29 @@
/* Copyright JS Foundation and other contributors, http://js.foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
var a = new Float32Array([0.1, -3.4, 65535.9]);
var b = new Int16Array(a);
var c = new Uint8Array(a);
var d = new Int32Array(a);
assert(b[0] === 0);
assert(b[1] === -3);
assert(b[2] === -1);
assert(c[0] === 0);
assert(c[1] === 253);
assert(c[2] === 255);
assert(d[0] === 0);
assert(d[1] === -3);
assert(d[2] === 65535);
@@ -0,0 +1,21 @@
/* Copyright JS Foundation and other contributors, http://js.foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
var a = new Uint8ClampedArray([1.5, 2.5, -1.5, 10000]);
assert(a[0] === 2);
assert(a[1] === 2);
assert(a[2] === 0);
assert(a[3] === 255);
@@ -0,0 +1,22 @@
/* Copyright JS Foundation and other contributors, http://js.foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
var a = new Float64Array(2);
a[0] = 0.1;
a[1] = -2.3;
assert(a[0] === 0.1);
assert(a[1] === -2.3);
@@ -0,0 +1,22 @@
/* Copyright JS Foundation and other contributors, http://js.foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
var a = new Float32Array(2);
a[0] = 0.1;
a[1] = -2.3;
assert(a[0] === 0.10000000149011612);
assert(a[1] === -2.299999952316284);
@@ -0,0 +1,24 @@
/* Copyright JS Foundation and other contributors, http://js.foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
var a = new Int16Array(3);
a[0] = 0xffff;
a[1] = 0xff0001;
a[2] = -2.3;
assert(a[0] === -1);
assert(a[1] === 1);
assert(a[2] === -2);
@@ -0,0 +1,24 @@
/* Copyright JS Foundation and other contributors, http://js.foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
var a = new Int32Array(3);
a[0] = 0xffffffff;
a[1] = 0xff00000001;
a[2] = -2.3;
assert(a[0] === -1);
assert(a[1] === 1);
assert(a[2] === -2);
@@ -0,0 +1,24 @@
/* Copyright JS Foundation and other contributors, http://js.foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
var a = new Int8Array(3);
a[0] = 0xff;
a[1] = 0xff01;
a[2] = -2.3;
assert(a[0] === -1);
assert(a[1] === 1);
assert(a[2] === -2);
@@ -0,0 +1,22 @@
/* Copyright JS Foundation and other contributors, http://js.foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
var a = new Uint32Array(2);
a[0] = 0x123456789A;
a[1] = -2.3;
assert(a[0] === 0x3456789A);
assert(a[1] === 4294967294); // 0x100000000 - 2
@@ -0,0 +1,22 @@
/* Copyright JS Foundation and other contributors, http://js.foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
var a = new Uint16Array(2);
a[0] = 0x123456789A;
a[1] = -2.3;
assert(a[0] === 0x789A);
assert(a[1] === 65534); // 0x10000 - 2
@@ -0,0 +1,22 @@
/* Copyright JS Foundation and other contributors, http://js.foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
var a = new Uint8Array(2);
a[0] = 0x123456789A;
a[1] = -2.3;
assert(a[0] === 0x9A);
assert(a[1] === 254); // 0x100 - 2
@@ -14,3 +14,12 @@
*/
assert(Int8Array.BYTES_PER_ELEMENT === 1);
assert(Uint8Array.BYTES_PER_ELEMENT === 1);
assert(Uint8ClampedArray.BYTES_PER_ELEMENT === 1);
assert(Int16Array.BYTES_PER_ELEMENT === 2);
assert(Uint16Array.BYTES_PER_ELEMENT === 2);
assert(Int32Array.BYTES_PER_ELEMENT === 4);
assert(Uint32Array.BYTES_PER_ELEMENT === 4);
assert(Float32Array.BYTES_PER_ELEMENT === 4);
assert(Float64Array.BYTES_PER_ELEMENT === 8);
@@ -14,3 +14,11 @@
*/
assert(Int8Array.prototype.BYTES_PER_ELEMENT === 1);
assert(Uint8Array.prototype.BYTES_PER_ELEMENT === 1);
assert(Uint8ClampedArray.prototype.BYTES_PER_ELEMENT === 1);
assert(Int16Array.prototype.BYTES_PER_ELEMENT === 2);
assert(Uint16Array.prototype.BYTES_PER_ELEMENT === 2);
assert(Int32Array.prototype.BYTES_PER_ELEMENT === 4);
assert(Uint32Array.prototype.BYTES_PER_ELEMENT === 4);
assert(Float32Array.prototype.BYTES_PER_ELEMENT === 4);
assert(Float64Array.prototype.BYTES_PER_ELEMENT === 8);