blob: 93671fce65372886a56929f8c33e8854185a9670 [file] [log] [blame]
let assert = {
sameValue: function(i, e, m) {
if (i !== e)
throw new Error(m);
}
}
function postInc(x) {
return x++;
}
noInline(postInc);
function preInc(x) {
return ++x;
}
noInline(preInc);
function postDec(x) {
return x--;
}
noInline(postDec);
function preDec(x) {
return --x;
}
noInline(preDec);
for (let i = 0; i < 10000; i++) {
var r = postInc(3012);
assert.sameValue(r, 3012, 3012 + "++ = " + r);
r = preInc(3012)
assert.sameValue(r, 3013, "++" + 3012 + " = " + r);
r = postDec(3012);
assert.sameValue(r, 3012, 3012 + "-- = " + r);
r = preDec(3012)
assert.sameValue(r, 3011, "--" + 3012 + " = " + r);
}
var r = postInc(3n);
assert.sameValue(r, 3n, 3n + "++ = " + r);
r = preInc(12345678901234567890n);
assert.sameValue(r, 12345678901234567891n, "++" + 12345678901234567890n, " = ", r);
var count = 0;
var o = {};
o.valueOf = () => { count++; return 42n; };
r = postDec(o)
assert.sameValue(r, 42n, "{valueOf: () => 42n} -- = " + r);
assert.sameValue(count, 1, "execution count of valueOf on o = " + count);
r = preDec(123456789000n);
assert.sameValue(r, 123456788999n, "--123456789000n = " + r);