function testInt8() { var arr1 = new Int8Array(50); var arr2 = new Uint8Array(50); var arr3 = new Uint8ClampedArray(50); for (var i=0; i 290888255, true); assertEq(arr1[74] < 290888257, true); assertEq(arr2[74] > 290888184, true); assertEq(arr2[74] < 290888185, true); } testFloat(); function testCanonicalNaN() { // NaN values have to be canonicalized. Otherwise, malicious scripts could // construct arbitrary Value's (due to our NaN boxing Value representation). var buf = new ArrayBuffer(16); var uint32 = new Uint32Array(buf); var f64 = new Float64Array(buf); var f32 = new Float32Array(buf); // Evil: write a JSVAL_TYPE_OBJECT type tag... uint32[0] = 0xffffff87; uint32[1] = 0xffffff87; // Make sure this value is interpreted as a double. for (var i=0; i<100; i++) { assertEq(isNaN(f64[0]), true); assertEq(isNaN(f32[0]), true); } } testCanonicalNaN();