Placate exception check validation in constructJSWebAssemblyLinkError().
[WebKit-https.git] / JSTests / typeProfiler / symbol.js
1 var findTypeForExpression = $vm.findTypeForExpression;
2
3 load("./driver/driver.js");
4
5 function wrapper() {
6     var s1 = Symbol();
7
8     var sCaptured = Symbol();
9     function foo() {
10         sCaptured = null;
11     }
12     foo();
13
14     function bar(s3) { return s3; }
15     for (var i = 0; i < 1000; i++)
16         bar(i)
17     bar(Symbol())
18
19     function baz(s4) { return s4; }
20     for (var i = 0; i < 1000; i++)
21         baz(Symbol())
22     baz("hello")
23 }
24
25 wrapper();
26
27 // ====== End test cases ======
28
29 var types = findTypeForExpression(wrapper, "s1"); 
30 assert(types.instructionTypeSet.primitiveTypeNames.length === 1, "Primitive type names should contain one type");
31 assert(types.instructionTypeSet.primitiveTypeNames.indexOf(T.Symbol) !== -1, "Primitive type names should contain 'Symbol'");
32
33 types = findTypeForExpression(wrapper, "sCaptured");
34 assert(types.globalTypeSet.primitiveTypeNames.length === 2, "Primitive type names should contain two items.");
35 assert(types.globalTypeSet.primitiveTypeNames.indexOf(T.Symbol) !== -1, "Primitive type names should contain 'Symbol'");
36 assert(types.globalTypeSet.primitiveTypeNames.indexOf(T.Null) !== -1, "Primitive type names should contain 'Null'");
37
38 types = findTypeForExpression(wrapper, "s3");
39 assert(types.instructionTypeSet.primitiveTypeNames.length === 2, "Primitive type names should contain 2 items");
40 assert(types.instructionTypeSet.primitiveTypeNames.indexOf(T.Integer) !== -1, "Primitive type names should contain 'Integer'");
41 assert(types.instructionTypeSet.primitiveTypeNames.indexOf(T.Symbol) !== -1, "Primitive type names should contain 'Symbol'");
42
43 types = findTypeForExpression(wrapper, "s4");
44 assert(types.instructionTypeSet.primitiveTypeNames.length === 2, "Primitive type names should contain 2 items");
45 assert(types.instructionTypeSet.primitiveTypeNames.indexOf(T.String) !== -1, "Primitive type names should contain 'String'");
46 assert(types.instructionTypeSet.primitiveTypeNames.indexOf(T.Symbol) !== -1, "Primitive type names should contain 'Symbol'");