Source code

Revision control

Copy as Markdown

Other Tools

// |jit-test| skip-if: helperThreadCount() === 0
// This test can be extremely slow on some platforms.
if (getBuildConfiguration("simulator") ||
getBuildConfiguration("x86")) {
quit();
}
gczeal(0);
gczeal(16);
var numObjects = scriptArgs.length > 0 ? parseInt(scriptArgs[0]) : 10000;
var N = scriptArgs.length > 1 ? parseInt(scriptArgs[1]) : 2000000;
var sliceEvery = scriptArgs.length > 2 ? parseInt(scriptArgs[2]) : 128;
var sliceBudget = scriptArgs.length > 3 ? parseInt(scriptArgs[3]) : 200;
var graph = [];
for (var i = 0; i < numObjects; i++) {
var o = {};
for (var k = 0; k < 12; k++) {
o["field_" + i + "_" + k] = k;
}
graph.push(o);
}
var syms = [];
for (var i = 0; i < 4000; i++) {
var s = Symbol("sym" + i);
syms.push(s);
graph[i % graph.length][s] = i;
}
var keep = [];
for (var i = 0; i < N; i++) {
var name = "atom_" + i + "_padpadpadpad";
var o = {};
o[name] = i;
if ((i & 511) === 0) {
keep.push(o);
var s2 = Symbol(name);
syms.push(s2);
graph[i % graph.length][s2] = i;
}
if ((i % sliceEvery) === 0) {
gcslice(sliceBudget);
}
}