[JSC] AI should not propagate AbstractValue relying on constant folding phase
[WebKit-https.git] / JSTests / stress / dfg-put-getter-by-id.js
1 function shouldBe(actual, expected) {
2     if (actual !== expected)
3         throw new Error('bad value: ' + actual);
4 }
5
6 function testAttribute(object, name, type) {
7     shouldBe(Reflect.has(object, name), true);
8     let desc = Reflect.getOwnPropertyDescriptor(object, name);
9     shouldBe(desc.configurable, true);
10     shouldBe(desc.enumerable, true);
11     if (type === 'get') {
12         shouldBe(typeof desc.get, 'function');
13         shouldBe(typeof desc.set, 'undefined');
14     } else if (type === 'set') {
15         shouldBe(typeof desc.get, 'undefined');
16         shouldBe(typeof desc.set, 'function');
17     } else {
18         shouldBe(typeof desc.get, 'function');
19         shouldBe(typeof desc.set, 'function');
20     }
21 }
22 noInline(testAttribute);
23
24 function getter(name)
25 {
26     var object = {
27         get hello() {
28             return this.ok;
29         },
30         [name]: 42
31     };
32
33     testAttribute(object, 'hello', 'get');
34     return object.hello;
35 }
36 noInline(getter);
37
38 for (var i = 0; i < 10000; ++i)
39     shouldBe(getter('ok'), 42);