mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-10-19 05:29:46 +08:00
- Carry BigInts, Sets, and regular expressions through checked native storage without a JavaScript engine. - Preserve dictionary aliases, spreads, frozen metadata, and fluent initialization helpers. - Collect checked object and closure cycles while preserving live references.
31 lines
883 B
JavaScript
31 lines
883 B
JavaScript
function builder(text) {
|
|
const value = {
|
|
append(part) { text = text + part; return value; },
|
|
read() { return text; }
|
|
};
|
|
return value;
|
|
}
|
|
|
|
const live = builder("live");
|
|
function unlink(value) { delete value.self; }
|
|
let total = 0;
|
|
for (let i = 0; i < 2000; i++) {
|
|
total += builder("x").append("y").read().length;
|
|
const object = Object.create(null);
|
|
object.self = object;
|
|
object.items = [object];
|
|
Object.defineProperty(object, "read", { get: () => object.self, configurable: true });
|
|
if (object.read !== object) throw new Error("identity");
|
|
if (i % 2 === 0) {
|
|
Object.defineProperty(object, "read", { value: "gone", configurable: true });
|
|
object.items[0] = null;
|
|
unlink(object);
|
|
}
|
|
const set = new Set();
|
|
const holder = Object.create(null);
|
|
holder.set = set;
|
|
set.add(holder);
|
|
set.add(set);
|
|
}
|
|
console.log(total, live.append("!").read());
|