зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1461448 - Add gray marking phase to delayed marking phase r=sfink
This commit is contained in:
Родитель
c476bfba8e
Коммит
3744f8b7cb
|
@ -88,12 +88,14 @@ PhaseKindGraphRoots = [
|
||||||
PhaseKind("PURGE", "Purge", 5),
|
PhaseKind("PURGE", "Purge", 5),
|
||||||
PhaseKind("PURGE_SHAPE_TABLES", "Purge ShapeTables", 60),
|
PhaseKind("PURGE_SHAPE_TABLES", "Purge ShapeTables", 60),
|
||||||
JoinParallelTasksPhaseKind
|
JoinParallelTasksPhaseKind
|
||||||
]),
|
]),
|
||||||
PhaseKind("MARK", "Mark", 6, [
|
PhaseKind("MARK", "Mark", 6, [
|
||||||
MarkRootsPhaseKind,
|
MarkRootsPhaseKind,
|
||||||
UnmarkGrayPhaseKind,
|
UnmarkGrayPhaseKind,
|
||||||
PhaseKind("MARK_DELAYED", "Mark Delayed", 8)
|
PhaseKind("MARK_DELAYED", "Mark Delayed", 8, [
|
||||||
|
UnmarkGrayPhaseKind,
|
||||||
]),
|
]),
|
||||||
|
]),
|
||||||
PhaseKind("SWEEP", "Sweep", 9, [
|
PhaseKind("SWEEP", "Sweep", 9, [
|
||||||
PhaseKind("SWEEP_MARK", "Mark During Sweeping", 10, [
|
PhaseKind("SWEEP_MARK", "Mark During Sweeping", 10, [
|
||||||
UnmarkGrayPhaseKind,
|
UnmarkGrayPhaseKind,
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
if (helperThreadCount() === 0)
|
||||||
|
quit();
|
||||||
|
|
||||||
|
gczeal(0);
|
||||||
|
|
||||||
|
let lfPreamble = `
|
||||||
|
var lfOffThreadGlobal = newGlobal();
|
||||||
|
for (lfLocal in this)
|
||||||
|
try {} catch(lfVare5) {}
|
||||||
|
`;
|
||||||
|
evaluate(lfPreamble);
|
||||||
|
evaluate(`
|
||||||
|
var g = newGlobal();
|
||||||
|
var dbg = new Debugger;
|
||||||
|
var gw = dbg.addDebuggee(g);
|
||||||
|
for (lfLocal in this)
|
||||||
|
if (!(lfLocal in lfOffThreadGlobal))
|
||||||
|
try {
|
||||||
|
lfOffThreadGlobal[lfLocal] = this[lfLocal];
|
||||||
|
} catch(lfVare5) {}
|
||||||
|
var g = newGlobal();
|
||||||
|
var gw = dbg.addDebuggee(g);
|
||||||
|
`);
|
||||||
|
lfOffThreadGlobal.offThreadCompileScript(`
|
||||||
|
gcparam("markStackLimit", 1);
|
||||||
|
grayRoot()[0] = "foo";
|
||||||
|
`);
|
||||||
|
lfOffThreadGlobal.runOffThreadScript();
|
||||||
|
eval(`
|
||||||
|
var lfOffThreadGlobal = newGlobal();
|
||||||
|
try { evaluate(\`
|
||||||
|
gczeal(18, 1);
|
||||||
|
grayRoot()[0] = "foo";
|
||||||
|
let inst = new WebAssembly.Instance(new WebAssembly.Module(wasmTextToBinary(
|
||||||
|
\\\`(module
|
||||||
|
(memory (export "memory") 1 1)
|
||||||
|
)\\\`
|
||||||
|
)));
|
||||||
|
\`); } catch(exc) {}
|
||||||
|
`);
|
Загрузка…
Ссылка в новой задаче