Source code
Revision control
Copy as Markdown
Other Tools
// Ensure the OptimizeGetIteratorBytecodeFuse is popped when setting a debugger
// breakpoint or step hook. OptimizeGetIteratorFuse is left intact.
function testOnStep() {
var g = newGlobal({newCompartment: true});
var dbg = new Debugger(g);
dbg.onEnterFrame = function(frame) {
frame.onStep = function() {};
};
assertEq(g.getFuseState().OptimizeGetIteratorBytecodeFuse.intact, true);
g.evaluate("1 + 1;");
assertEq(g.getFuseState().OptimizeGetIteratorBytecodeFuse.intact, false);
assertEq(g.getFuseState().OptimizeGetIteratorFuse.intact, true);
}
testOnStep();
function testBreakpoint() {
var g = newGlobal({newCompartment: true});
var dbg = new Debugger(g);
dbg.onEnterFrame = function(frame) {
frame.script.setBreakpoint(frame.script.mainOffset, {hit: function() {}});
};
assertEq(g.getFuseState().OptimizeGetIteratorBytecodeFuse.intact, true);
g.evaluate("1 + 1;");
assertEq(g.getFuseState().OptimizeGetIteratorBytecodeFuse.intact, false);
assertEq(g.getFuseState().OptimizeGetIteratorFuse.intact, true);
}
testBreakpoint();