Unreviewed test fix after r240243
[WebKit-https.git] / JSTests / stress / scope-operation-cache-global-property-bump-counter.js
1 //@ runDefault("--thresholdForGlobalLexicalBindingEpoch=2")
2
3 function shouldBe(actual, expected) {
4     if (actual !== expected)
5         throw new Error('bad value: ' + actual);
6 }
7 noInline(shouldBe);
8
9 foo1 = 1;
10 foo2 = 2;
11 function get1() {
12     return foo1;
13 }
14 noInline(get1);
15
16 function get2() {
17     return foo2;
18 }
19 noInline(get2);
20
21 function get1If(condition) {
22     if (condition)
23         return foo1;
24     return -1;
25 }
26 noInline(get1If);
27
28 function get2If(condition) {
29     if (condition)
30         return foo2;
31     return -1;
32 }
33 noInline(get2If);
34
35 for (var i = 0; i < 1e5; ++i) {
36     shouldBe(get1(), 1);
37     shouldBe(get2(), 2);
38     shouldBe(get1(), 1);
39     shouldBe(get2(), 2);
40     shouldBe(get1If(true), 1);
41     shouldBe(get2If(true), 2);
42     shouldBe(get1If(false), -1);
43     shouldBe(get2If(false), -1);
44 }
45
46 $.evalScript(`const foo1 = 41;`);
47 $.evalScript(`const foo2 = 42;`);
48
49 for (var i = 0; i < 1e3; ++i) {
50     shouldBe(get1(), 41);
51     shouldBe(get2(), 42);
52     shouldBe(get1(), 41);
53     shouldBe(get2(), 42);
54     shouldBe(get1If(false), -1);
55     shouldBe(get2If(false), -1);
56 }
57 shouldBe(get1If(true), 41);
58 shouldBe(get2If(true), 42);