load(libdir + 'bytecode-cache.js'); var test; // Ensure that if a function is encoded we don't encode its "name // resolved" flag. test = ` function f() { delete f.name; return f.hasOwnProperty('name'); } f(); ` evalWithCache(test, { assertEqBytecode: true, assertEqResult: true }); test = ` function f() { return f.hasOwnProperty('name'); } f(); ` evalWithCache(test, { assertEqBytecode: true, assertEqResult: true }); // Ensure that if a function is encoded we don't encode its "length // resolved" flag. test = ` function f() { delete f.length; return f.hasOwnProperty('length'); } f(); ` evalWithCache(test, { assertEqBytecode: true, assertEqResult: true }); test = ` function f() { return f.hasOwnProperty('length'); } f(); ` evalWithCache(test, { assertEqBytecode: true, assertEqResult: true }); // And make sure our bytecode is actually not reflecting the flags, // not that we ignore them on decode. test = ` function f() { return f.hasOwnProperty('length') || f.hasOwnProperty('name'); } f(); ` evalWithCache(test, { assertEqBytecode: true, assertEqResult: true });