// |jit-test| --no-baseline; --no-blinterp // Turn off baseline and since it messes up the GC finalization assertions by // adding spurious edges to the GC graph.
// Imported instance objects should stay alive as long as any importer is alive.
resetFinalizeCount(); var i1 = new Instance(m1); var i2 = new Instance(m2, {a:i1.exports}); var f = i1.exports.f; var g = i2.exports.g;
i1.edge = makeFinalizeObserver();
i2.edge = makeFinalizeObserver();
f.edge = makeFinalizeObserver();
g.edge = makeFinalizeObserver();
gc();
assertEq(finalizeCount(), 0);
i1.exports = null;
f = null;
gc();
assertEq(finalizeCount(), 0);
i2 = null;
gc();
assertEq(finalizeCount(), 0);
i1 = null;
gc();
assertEq(finalizeCount(), 0);
g = null;
gc();
assertEq(finalizeCount(), 4);
// ...but the importee doesn't keep the importer alive.
resetFinalizeCount(); var i1 = new Instance(m1); var i2 = new Instance(m2, {a:i1.exports}); var f = i1.exports.f; var g = i2.exports.g;
i1.edge = makeFinalizeObserver();
i2.edge = makeFinalizeObserver();
f.edge = makeFinalizeObserver();
g.edge = makeFinalizeObserver();
gc();
assertEq(finalizeCount(), 0);
i2.exports = null;
g = null;
gc();
assertEq(finalizeCount(), 0);
i2 = null;
gc();
assertEq(finalizeCount(), 2);
i1.exports = null;
f = null;
gc();
assertEq(finalizeCount(), 2);
i1 = null;
gc();
assertEq(finalizeCount(), 4);
Messung V0.5
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.