summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/debug/onExceptionUnwind-14.js
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) { }");