blob: f3a7bc4f099617d0d62e6b16ecd52608d6df8c42 [file] [log] [blame]
ticaiolima@gmail.com77f17462018-12-13 12:26:01 +00001let assert = {
2 sameValue: function(i, e, m) {
3 if (i !== e)
4 throw new Error(m);
5 }
6}
7
8function bigIntDiv(x, y) {
9 return x / y;
10}
11noInline(bigIntDiv);
12
13let o = {valueOf: () => 10n};
14
15for (let i = 0; i < 10000; i++) {
16 let r = bigIntDiv(30n, o);
17 assert.sameValue(r, 3n, 30n + " / {valueOf: () => 10n} = " + r);
18}
19
20o2 = {valueOf: () => 10000n};
21
22for (let i = 0; i < 10000; i++) {
23 let r = bigIntDiv(o2, o);
24 assert.sameValue(r, 1000n, "{valueOf: () => 10000n} / {valueOf: () => 10n} = " + r);
25}
26
27o = Object(10n);
28let r = bigIntDiv(30n, o);
29assert.sameValue(r, 3n, 30n + " / Object(10n) = " + r);
30
31o2 = Object(3240n);
32r = bigIntDiv(o2, o);
33assert.sameValue(r, 324n, "Object(3240n) / Object(10n) = " + r);
34