|
1 load(libdir + 'bytecode-cache.js'); |
|
2 var test = ""; |
|
3 |
|
4 // code a constant. |
|
5 test = "1;"; |
|
6 evalWithCache(test, { assertEqBytecode: true, assertEqResult : true }); |
|
7 |
|
8 // code a string constant. |
|
9 test = "'string';"; |
|
10 evalWithCache(test, { assertEqBytecode: true, assertEqResult : true }); |
|
11 |
|
12 // code a global variable access. |
|
13 test = "generation;"; |
|
14 evalWithCache(test, { assertEqBytecode: true }); |
|
15 |
|
16 // code an object constant. |
|
17 test = "var obj = { a: 1, b: 2 };"; |
|
18 evalWithCache(test, { assertEqBytecode: true, assertEqResult : true }); |
|
19 |
|
20 // code object literal with mutations. |
|
21 test = "var obj = { a: 1, b: 2 }; obj.a++; assertEq(obj.a, 2);"; |
|
22 evalWithCache(test, { assertEqBytecode: true, assertEqResult : true }); |
|
23 |
|
24 // code object literals with mutations. |
|
25 test = "var obj = { a: 1, b: { c: 3, d: 4 } }; obj.b.c++; assertEq(obj.b.c, 4);"; |
|
26 evalWithCache(test, { assertEqBytecode: true, assertEqResult : true }); |
|
27 |
|
28 // code a function which is used. |
|
29 test = "function f() { return 1; }; f();"; |
|
30 evalWithCache(test, { assertEqBytecode: true, assertEqResult : true }); |
|
31 |
|
32 // code a function which is not used. |
|
33 test = "function f() { return 1; }; 1;"; |
|
34 evalWithCache(test, { assertEqBytecode: true, assertEqResult : true }); |
|
35 |
|
36 // code a function which has an object literal. |
|
37 test = "function f() { return { x: 2 }; }; f();"; |
|
38 evalWithCache(test, { assertEqBytecode: true }); |