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