44 lines
645 B
JavaScript
44 lines
645 B
JavaScript
//@ skip if $model =~ /^Apple Watch/
|
|
function assert(b) {
|
|
if (!b)
|
|
throw new Error;
|
|
}
|
|
noInline(assert)
|
|
|
|
function getZ(o) {
|
|
return o.z
|
|
}
|
|
noInline(getZ)
|
|
|
|
function C() {
|
|
this.x = 42;
|
|
}
|
|
|
|
let objs = [];
|
|
for (let i = 0; i < 50; ++i) {
|
|
objs.push(new C);
|
|
}
|
|
|
|
function doTest(zVal) {
|
|
for (let i = 0; i < objs.length; ++i) {
|
|
let o = objs[i];
|
|
assert(o.x === 42);
|
|
assert(getZ(o) === zVal)
|
|
}
|
|
}
|
|
noInline(doTest);
|
|
|
|
for (let i = 0; i < 10000; ++i) {
|
|
const X = { i }
|
|
C.prototype.z = X
|
|
doTest(X)
|
|
}
|
|
|
|
delete C.prototype.z
|
|
|
|
for (let i = 0; i < 20000; ++i) {
|
|
getZ({z: i})
|
|
doTest(undefined)
|
|
}
|
|
|