Source code
Revision control
Copy as Markdown
Other Tools
if (typeof enableExecutionTracing == "undefined") {
quit();
}
var g = newGlobal({ newCompartment: true });
var dbg = new Debugger();
dbg.addDebuggee(g);
g.enableExecutionTracing();
oomTest(function () {
g.eval(`[100].map(function f3(x) { return x; });`);
});
gc();
const trace = g.getExecutionTrace();
g.disableExecutionTracing();
assertEq(trace.length, 1);
const events = trace[0].events;
var err = events.find(e => e.kind == "Error");
// Guaranteeing an error is tricky. We don't have a ton of allocations inside
// the tracer to fail, and so with --ion we tend to get skipped over by
// oomTest's iterative failure logic. Accordingly, we just assert that if
// there is an error, it needs to be the last entry.
if (err) {
assertEq(err, events[events.length - 1]);
}