mirror of
https://github.com/ManchildProductions/UXP-Fixed.git
synced 2026-06-11 16:08:35 +00:00
138 lines
3.0 KiB
JavaScript
138 lines
3.0 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
// Test diffing census reports of a "complex" and "realistic" breakdown.
|
|
|
|
const BREAKDOWN = {
|
|
by: "coarseType",
|
|
objects: {
|
|
by: "allocationStack",
|
|
then: {
|
|
by: "objectClass",
|
|
then: { by: "count", count: false, bytes: true },
|
|
other: { by: "count", count: false, bytes: true }
|
|
},
|
|
noStack: {
|
|
by: "objectClass",
|
|
then: { by: "count", count: false, bytes: true },
|
|
other: { by: "count", count: false, bytes: true }
|
|
}
|
|
},
|
|
strings: {
|
|
by: "internalType",
|
|
then: { by: "count", count: false, bytes: true }
|
|
},
|
|
scripts: {
|
|
by: "internalType",
|
|
then: { by: "count", count: false, bytes: true }
|
|
},
|
|
other: {
|
|
by: "internalType",
|
|
then: { by: "count", count: false, bytes: true }
|
|
},
|
|
};
|
|
|
|
const stack1 = saveStack();
|
|
const stack2 = saveStack();
|
|
const stack3 = saveStack();
|
|
|
|
const REPORT1 = {
|
|
objects: new Map([
|
|
[stack1, { Function: { bytes: 1 },
|
|
Object: { bytes: 2 },
|
|
other: { bytes: 0 },
|
|
}],
|
|
[stack2, { Array: { bytes: 3 },
|
|
Date: { bytes: 4 },
|
|
other: { bytes: 0 },
|
|
}],
|
|
["noStack", { Object: { bytes: 3 }}],
|
|
]),
|
|
strings: {
|
|
JSAtom: { bytes: 10 },
|
|
JSLinearString: { bytes: 5 },
|
|
},
|
|
scripts: {
|
|
JSScript: { bytes: 1 },
|
|
"js::jit::JitCode": { bytes: 2 },
|
|
},
|
|
other: {
|
|
"mozilla::dom::Thing": { bytes: 1 },
|
|
}
|
|
};
|
|
|
|
const REPORT2 = {
|
|
objects: new Map([
|
|
[stack2, { Array: { bytes: 1 },
|
|
Date: { bytes: 2 },
|
|
other: { bytes: 3 },
|
|
}],
|
|
[stack3, { Function: { bytes: 1 },
|
|
Object: { bytes: 2 },
|
|
other: { bytes: 0 },
|
|
}],
|
|
["noStack", { Object: { bytes: 3 }}],
|
|
]),
|
|
strings: {
|
|
JSAtom: { bytes: 5 },
|
|
JSLinearString: { bytes: 10 },
|
|
},
|
|
scripts: {
|
|
JSScript: { bytes: 2 },
|
|
"js::LazyScript": { bytes: 42 },
|
|
"js::jit::JitCode": { bytes: 1 },
|
|
},
|
|
other: {
|
|
"mozilla::dom::OtherThing": { bytes: 1 },
|
|
}
|
|
};
|
|
|
|
const EXPECTED = {
|
|
"objects": new Map([
|
|
[stack1, { Function: { bytes: -1 },
|
|
Object: { bytes: -2 },
|
|
other: { bytes: 0 },
|
|
}],
|
|
[stack2, { Array: { bytes: -2 },
|
|
Date: { bytes: -2 },
|
|
other: { bytes: 3 },
|
|
}],
|
|
[stack3, { Function: { bytes: 1 },
|
|
Object: { bytes: 2 },
|
|
other: { bytes: 0 },
|
|
}],
|
|
["noStack", { Object: { bytes: 0 }}],
|
|
]),
|
|
"scripts": {
|
|
"JSScript": {
|
|
"bytes": 1
|
|
},
|
|
"js::jit::JitCode": {
|
|
"bytes": -1
|
|
},
|
|
"js::LazyScript": {
|
|
"bytes": 42
|
|
}
|
|
},
|
|
"strings": {
|
|
"JSAtom": {
|
|
"bytes": -5
|
|
},
|
|
"JSLinearString": {
|
|
"bytes": 5
|
|
}
|
|
},
|
|
"other": {
|
|
"mozilla::dom::Thing": {
|
|
"bytes": -1
|
|
},
|
|
"mozilla::dom::OtherThing": {
|
|
"bytes": 1
|
|
}
|
|
}
|
|
};
|
|
|
|
function run_test() {
|
|
assertDiff(BREAKDOWN, REPORT1, REPORT2, EXPECTED);
|
|
}
|