Source code

Revision control

Copy as Markdown

Other Tools

load(libdir + 'bytecode-cache.js');
let test = `
// Put some unused atoms in the initial stencil, to verify that atoms are
// correctly mapped while merging stencils.
if (false) {
"unused text1";
"unused text2";
"unused text3";
"unused text4";
"unused text5";
}
var result = 0;
function func() {
var anonFunc = function() {
// Method/accessor as inner-inner function.
var obj = {
method(name) {
// Test object literal.
var object = {
propA: 9,
propB: 10,
propC: 11,
};
// Test object property access.
return object["prop" + name];
},
get prop1() {
return 200;
},
set prop2(value) {
result += value;
}
};
result += obj.prop1;
obj.prop2 = 3000;
result += obj.method("B");
};
function anotherFunc() {
return 40000;
}
function unused() {
}
class MyClass {
constructor() {
result += 500000;
}
}
// Functions inside arrow parameters, that are parsed multiple times.
const arrow = (a = (b = c => { result += 6000000 }) => b) => a()();
// Delazify in the different order as definition.
new MyClass();
anonFunc();
result += anotherFunc();
arrow();
}
func();
result;
`;
evalWithCache(test, { incremental: true, oassertEqResult : true });