blob: 03224692830fdf0fdc83fd80aaaab0d5fe6e49c1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
var g = newGlobal({newCompartment: true});
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) { }");
|