| 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 }); |
| |