[ARM,MIPS] Skip slow tests
[WebKit-https.git] / JSTests / stress / async-function-declaration-sinking-no-double-allocate.js
1 function shouldBe(expected, actual, msg = "") {
2     if (msg)
3         msg = " for " + msg;
4     if (actual !== expected)
5         throw new Error("bad value" + msg + ": " + actual + ". Expected " + expected);
6 }
7 var AsyncFunctionPrototype = async function(){}.__proto__;
8
9 function call(o) { o.x = 3; }
10 noInline(call);
11
12 function sink (p, q) {
13     async function f() { };
14     if (p) {
15         call(f); // Force allocation of f
16         if (q) {
17             OSRExit();
18         }
19         return f;
20     }
21     return { 'x': 2 };
22 }
23 noInline(sink);
24
25 for (var i = 0; i < 100000; ++i) {
26     var o = sink(true, false);
27     shouldBe(o.__proto__, AsyncFunctionPrototype);
28     if (o.x != 3)
29         throw "Error: expected o.x to be 2 but is " + result;
30 }
31
32 // At this point, the function should be compiled down to the FTL
33
34 // Check that the function is properly allocated on OSR exit
35 var f = sink(true, true);
36 shouldBe(f.__proto__, AsyncFunctionPrototype);
37 if (f.x != 3)
38     throw "Error: expected o.x to be 3 but is " + result;