[ARM,MIPS] Skip slow tests
[WebKit-https.git] / JSTests / stress / get-from-scope-dynamic-onto-proxy.js
1 function shouldBe(actual, expected) {
2     if (actual !== expected)
3         throw new Error(`bad value: ${String(actual)}`);
4 }
5
6 function shouldThrow(func, errorMessage) {
7     var errorThrown = false;
8     var error = null;
9     try {
10         func();
11     } catch (e) {
12         errorThrown = true;
13         error = e;
14     }
15     if (!errorThrown)
16         throw new Error('not thrown');
17     if (String(error) !== errorMessage)
18         throw new Error(`bad error: ${String(error)}`);
19 }
20
21 // LLInt slow path operation.
22 shouldThrow(function () {
23     var target = {};
24     var handler = {
25         has: function (receiver, name)
26         {
27             return name === 'i';
28         },
29         get: function (target, name, receiver)
30         {
31             if (name === 'i')
32                 throw new Error("NG");
33             return 42;
34         }
35     };
36     var proxy = new Proxy(target, handler);
37     with (proxy) {
38         i;
39     }
40 }, `Error: NG`);
41
42 // Baseline JIT operation.
43 shouldThrow(function () {
44     var flag = false;
45     var target = {};
46     var handler = {
47         has: function (receiver, name)
48         {
49             return name === 'i';
50         },
51         get: function (target, name, receiver)
52         {
53             if (name === 'i' && flag)
54                 throw new Error("NG");
55             return 42;
56         }
57     };
58     var proxy = new Proxy(target, handler);
59     for (var i = 0; i < 1e4; ++i) {
60         with (proxy) {
61             i;
62         }
63         if (i === 1e3)
64             flag = true;
65     }
66 }, `Error: NG`);
67
68 // DFG JIT operation.
69 var thrown = null;
70 try {
71     (() => {
72         var flag = false;
73         var target = {
74             __proto__: null
75         };
76         var handler = {
77             has: function (receiver, name)
78             {
79                 return name === 'arguments';
80             },
81
82             get: function (target, name, receiver)
83             {
84                 if (name === 'arguments' && flag)
85                     throw new Error("NG");
86                 return 42;
87             }
88         };
89         var proxy = new Proxy(target, handler);
90         proxy.__proto__ = null;
91         Object.prototype.__proto__ = {
92             __proto__: proxy,
93         };
94         (() => {
95             for (var i = 0; i < 1e4; ++i) {
96                 arguments;
97                 if (i === (1e4 - 2))
98                     flag = true;
99             }
100         })();
101     })();
102 } catch (e) {
103     thrown = e;
104 }
105 Object.prototype.__proto__ = null;
106 shouldBe(String(thrown), `TypeError: Cannot set prototype of immutable prototype object`);