blob: d44fd4f9ae791643548cacb704f22b36dce9265e [file] [log] [blame]
//@ skip if $model == "Apple Watch Series 3" # added by mark-jsc-stress-test.py
"use strict";
function assert(b, m) {
if (!b)
throw new Error("Bad:" + m);
}
noInline(assert);
function foo(p) {
function C() {
this.y = 42;
}
C.prototype = p;
let result = new C;
return result;
}
function bar(p) {
function C() {
this.y = 42;
}
C.prototype = p;
let result = new C;
return result;
}
function access(item) {
return item.x;
}
function makeLongChain(x) {
let item = {x:42};
for (let i = 0; i < x; ++i) {
item = {__proto__:item}
}
return item;
}
let p1 = makeLongChain(10);
let a = foo(p1);
let b = bar(p1);
b.__proto__ = makeLongChain(10);
function accessY(x) { return x.y; }
accessY(a);
accessY(b);
accessY(a);
accessY(b);
let start = Date.now();
for (let i = 0; i < 10000; ++i) {
let a = foo(p1);
for (let i = 0; i < 1000; ++i) {
assert(a.x === 42);
}
let proto = {x:42};
let b = bar(proto);
for (let i = 0; i < 100; ++i) {
assert(b.x === 42);
}
}
if (false)
print(Date.now() - start);