Unreviewed build fix after r202429; AVStreamDataParser does not exist on iOS.
[WebKit.git] / Source / JavaScriptCore / tests / stress / to-number-object.js
1 function shouldBe(actual, expected) {
2     if (actual !== expected)
3         throw new Error(`bad value: ${String(actual)}`);
4 }
5
6 function test1(object)
7 {
8     // The prediction should be Int32.
9     return Number(object);
10 }
11 noInline(test1);
12
13 function test12(object)
14 {
15     // Should be Int32 comparison.
16     return Number(object) <= 42;
17 }
18 noInline(test12);
19
20 var object1 = { valueOf() { return 42; } };
21 for (var i = 0; i < 1e4; ++i) {
22     shouldBe(test1(object1), 42);
23     shouldBe(test12(object1), true);
24 }
25
26 function test2(object)
27 {
28     // The prediction should be Doubles.
29     return Number(object);
30 }
31 noInline(test2);
32
33 function test22(object)
34 {
35     // Should be Double comparison.
36     return Number(object) <= 42;
37 }
38 noInline(test22);
39
40 var object2 = { valueOf() { return 42.195; } };
41 for (var i = 0; i < 1e4; ++i) {
42     shouldBe(test2(object2), 42.195);
43     shouldBe(test22(object2), false);
44 }
45
46 function test3(object)
47 {
48     // The prediction should be Int32, and later it should be Doubles.
49     return Number(object);
50 }
51 noInline(test3);
52
53 function test32(object)
54 {
55     // Should be Int32 comparison. And later, OSR exit occurs with 42.195. And it should be recompiled as Double comparison.
56     return Number(object) <= 42;
57 }
58 noInline(test32);
59
60 var value = 42;
61 var object3 = { valueOf() { return value; } };
62 for (var i = 0; i < 1e4; ++i) {
63     shouldBe(test3(object3), value);
64     shouldBe(test32(object3), true);
65 }
66 value = 42.195;
67 for (var i = 0; i < 1e4; ++i) {
68     shouldBe(test3(object3), value);
69     shouldBe(test32(object3), false);
70 }