Source code

Revision control

Copy as Markdown

Other Tools

// |reftest| skip-if(!xulRuntime.shell)
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* Any copyright is dedicated to the Public Domain.
*/
function garbage() {
var x;
for (var i = 0; i < 100000; i++)
x = { 'i': i };
}
setGCCallback({
action: "majorGC",
depth: 1,
phases: "both"
});
gc();
garbage();
setGCCallback({
action: "majorGC",
depth: 2,
phases: "both"
});
gc();
garbage();
setGCCallback({
action: "majorGC",
depth: 8,
phases: "begin"
});
gc();
garbage();
setGCCallback({
action: "minorGC",
phases: "both"
});
gc();
garbage();
var caught = false;
try {
setGCCallback({
action: "majorGC",
depth: 10000,
phases: "begin"
});
} catch (e) {
caught = ((""+e).indexOf("Nesting depth too large") >= 0);
}
reportCompare(caught, true);