function assertStringFlag(s, flag) { if (typeof stringRepresentation === "function") { var rep = JSON.parse(stringRepresentation(s));
assertEq(rep.flags.includes(flag), true, "Missing flag: " + flag);
}
} function test(extensibleTenured, ropeTenured) { var s1 = "12345678901234567890";
// Create an extensible string with chars in the nursery. var s2 = ensureLinearString(newRope(newRope(newRope(s1, s1), s1), s1)); if (extensibleTenured) {
minorgc();
minorgc();
}
assertEq(isNurseryAllocated(s2), !extensibleTenured);
assertStringFlag(s2, "EXTENSIBLE");
// Try to reuse its buffer. var s3 = ensureLinearString(newRope(s2, s1, {nursery: !ropeTenured}));
assertEq(isNurseryAllocated(s3), !ropeTenured);
assertStringFlag(s3, "EXTENSIBLE");
// If the rope was tenured and the extensible string had nursery-allocated // chars, we don't reuse its buffer so both strings will be extensible. // In all other cases, s2 is now a dependent string. if (ropeTenured && !extensibleTenured) {
assertStringFlag(s2, "EXTENSIBLE");
} else {
assertStringFlag(s2, "DEPENDENT_BIT");
}
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.