trivial.js (1642B)
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 }); 39 40 // code call site object 41 test = "function f(a) { return a; }; f`a${4}b`;"; 42 evalWithCache(test, { assertEqBytecode: true, checkFrozen: true}); 43 44 // code RegExp constants. 45 test = "'fooooooo'.match(/(f.+)/)[1].replace(/o/g, 'O')"; 46 evalWithCache(test, { assertEqBytecode: true, assertEqResult : true });