var g = newGlobal(); var dbg = new Debugger(g); g.eval("" + function f() { throw 42; }); g.eval("" + function g() { throw new Error("42"); }); // Call the functions once. This will compile them in Ion under --ion-eager. g.eval("try { f(); } catch (e) { }"); g.eval("try { g(); } catch (e) { }"); // Now set an onExceptionUnwind hook so that the Ion-compiled functions will // try to bail out. The tail of the bytecode for f and g looks like 'throw; // retrval', with 'retrval' being unreachable. Since 'throw' is resumeAfter, // bailing out for debug mode will attempt to resume at 'retrval'. Test that // this case is handled. dbg.onExceptionUnwind = function f() { }; g.eval("try { f(); } catch (e) { }"); g.eval("try { g(); } catch (e) { }");