fold-typed-array-properties.js   [plain text]


var a = new Int32Array(new ArrayBuffer(100), 4, 1);

if (a.length != 1)
    throw "Error: bad length: " + a.length;
if (a.byteOffset != 4)
    throw "Error: bad offset: " + a.byteOffset;
if (a.byteLength != 4)
    throw "Error: bad byte length: " + a.byteLength;

function foo() {
    if (a.length != 1)
        throw "Error: bad length: " + a.length;
    if (a.byteOffset != 4)
        throw "Error: bad offset: " + a.byteOffset;
    if (a.byteLength != 4)
        throw "Error: bad byte length: " + a.byteLength;
}

for (var i = 0; i < 1000000; ++i)
    foo();

transferArrayBuffer(a.buffer);

var didThrow = false;
try {
    foo();
} catch (e) {
    didThrow = true;
}

if (!didThrow)
    throw "Should have thrown.";

if (a.length != 0)
    throw "Error: bad length: " + a.length;
if (a.byteOffset != 0)
    throw "Error: bad offset: " + a.byteOffset;
if (a.byteLength != 0)
    throw "Error: bad byte length: " + a.byteLength;