michael@0: load(libdir + 'bytecode-cache.js'); michael@0: var test = ""; michael@0: michael@0: // code a constant. michael@0: test = "1;"; michael@0: evalWithCache(test, { assertEqBytecode: true, assertEqResult : true }); michael@0: michael@0: // code a string constant. michael@0: test = "'string';"; michael@0: evalWithCache(test, { assertEqBytecode: true, assertEqResult : true }); michael@0: michael@0: // code a global variable access. michael@0: test = "generation;"; michael@0: evalWithCache(test, { assertEqBytecode: true }); michael@0: michael@0: // code an object constant. michael@0: test = "var obj = { a: 1, b: 2 };"; michael@0: evalWithCache(test, { assertEqBytecode: true, assertEqResult : true }); michael@0: michael@0: // code object literal with mutations. michael@0: test = "var obj = { a: 1, b: 2 }; obj.a++; assertEq(obj.a, 2);"; michael@0: evalWithCache(test, { assertEqBytecode: true, assertEqResult : true }); michael@0: michael@0: // code object literals with mutations. michael@0: test = "var obj = { a: 1, b: { c: 3, d: 4 } }; obj.b.c++; assertEq(obj.b.c, 4);"; michael@0: evalWithCache(test, { assertEqBytecode: true, assertEqResult : true }); michael@0: michael@0: // code a function which is used. michael@0: test = "function f() { return 1; }; f();"; michael@0: evalWithCache(test, { assertEqBytecode: true, assertEqResult : true }); michael@0: michael@0: // code a function which is not used. michael@0: test = "function f() { return 1; }; 1;"; michael@0: evalWithCache(test, { assertEqBytecode: true, assertEqResult : true }); michael@0: michael@0: // code a function which has an object literal. michael@0: test = "function f() { return { x: 2 }; }; f();"; michael@0: evalWithCache(test, { assertEqBytecode: true });