blob: 37b54c2e071e40c07325959781b30e96d1d00d58 [file] [log] [blame]
let assert = {
sameValue: function(i, e, m) {
if (i !== e)
throw new Error(m);
}
}
function bigIntExp(x, y) {
return x ** y;
}
noInline(bigIntExp);
let o = {valueOf: () => 10n};
for (let i = 0; i < 10000; i++) {
let r = bigIntExp(3n, o);
assert.sameValue(r, 59049n, 3n + " ** {valueOf: () => 10n} = " + r);
}
o2 = {valueOf: () => 3n};
for (let i = 0; i < 10000; i++) {
let r = bigIntExp(o2, o);
assert.sameValue(r, 59049n, "{valueOf: () => 3n} ** {valueOf: () => 10n} = " + r);
}
o = Object(10n);
let r = bigIntExp(3n, o);
assert.sameValue(r, 59049n, 3n + " ** Object(10n) = " + r);
o2 = Object(3n);
r = bigIntExp(o2, o);
assert.sameValue(r, 59049n, "Object(3n) ** Object(10n) = " + r);
r = bigIntExp(3, 3);
assert.sameValue(r, 27, "3 ** 3 = " + r);