blob: 62c69752b7affd44ad6845569eea2616c9a2186a [file] [log] [blame]
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 });