//@ runDefault("--useBigInt=true", "--useConcurrentJIT=false") | |
function assert(a) { | |
if (!a) | |
throw new Error("Bad assertion"); | |
} | |
function foo(a, b) { | |
return a === b; | |
} | |
noInline(foo); | |
for (let i = 0; i < 100000; i++) { | |
assert(!foo(2n, 3n)); | |
assert(foo(3n, 3n)); | |
} | |
assert(!foo(3, 3n)); | |
assert(!foo(0.33, 3n)); | |
assert(!foo("3", 3n)); | |
assert(!foo(Symbol("3"), 3n)); | |
assert(!foo(true, 3n)); | |
assert(!foo(false, 3n)); | |
assert(!foo(NaN, 3n)); | |
assert(!foo(null, 3n)); | |
assert(!foo(undefined, 3n)); | |
assert(!foo(+Infinity, 3n)); | |
assert(!foo(-Infinity, 3n)); | |
function bar() { | |
return 3n; | |
} | |
noInline(bar); | |
for (let i = 0; i < 100000; i++) | |
assert(bar() === bar()); | |