35 lines
751 B
JavaScript
35 lines
751 B
JavaScript
let assert = {
|
|
sameValue: function(i, e, m) {
|
|
if (i !== e)
|
|
throw new Error(m);
|
|
}
|
|
}
|
|
|
|
function bigIntMul(x, y) {
|
|
return x * y;
|
|
}
|
|
noInline(bigIntMul);
|
|
|
|
let o = {valueOf: () => 10n};
|
|
|
|
for (let i = 0; i < 10000; i++) {
|
|
let r = bigIntMul(3n, o);
|
|
assert.sameValue(r, 30n, 3n + " * {valueOf: () => 10n} = " + r);
|
|
}
|
|
|
|
o2 = {valueOf: () => 10000n};
|
|
|
|
for (let i = 0; i < 10000; i++) {
|
|
let r = bigIntMul(o2, o);
|
|
assert.sameValue(r, 100000n, "{valueOf: () => 10000n} * {valueOf: () => 10n} = " + r);
|
|
}
|
|
|
|
o = Object(10n);
|
|
let r = bigIntMul(3n, o);
|
|
assert.sameValue(r, 30n, 3n + " * Object(10n) = " + r);
|
|
|
|
o2 = Object(3241n);
|
|
r = bigIntMul(o2, o);
|
|
assert.sameValue(r, 32410n, "Object(32410n) * Object(10n) = " + r);
|
|
|