From 3b3b3aae1b544513f91d61791bdaff04cc65280b Mon Sep 17 00:00:00 2001 From: Project516 <138796702+Project516@users.noreply.github.com> Date: Mon, 9 Nov 2026 18:24:10 -0600 Subject: [PATCH] refactor(build): name the javac.pack span intersection with an intersect helper --- scripts/build-web.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/scripts/build-web.ts b/scripts/build-web.ts index 8a20d1b..3e7c7da 100644 --- a/scripts/build-web.ts +++ b/scripts/build-web.ts @@ -186,6 +186,17 @@ function subtract(spans: [number, number][], covered: [number, number][]): [numb } return out; } +// the parts of spans inside within +function intersect(spans: [number, number][], within: [number, number][]): [number, number][] { + const out: [number, number][] = []; + for (const [s, e] of spans) { + for (const [ws, we] of within) { + const a = Math.max(s, ws), b = Math.min(e, we); + if (a < b) out.push([a, b]); + } + } + return out; +} // boot.pack holds what a bare start reads. app.pack, fetched the first time a // program reads one of its parts, holds what the typical program reads beyond // that and every java.base part javac reads. javac.pack holds the rest of what @@ -197,7 +208,7 @@ const bootRanges = new Map([...recorder.ranges].map(([p, r]) => [p, merge(r)])); const beyondBoot = (rec: Recorder) => new Map([...rec.ranges].map(([p, r]) => [p, subtract(merge(r), bootRanges.get(p) ?? [])])); const appRanges = beyondBoot(appRecorder), javacRanges = new Map(); for (const [p, r] of beyondBoot(javacRecorder)) { - const own = p === "/lib/modules" ? subtract(r, subtract(r, compiler)) : []; + const own = p === "/lib/modules" ? intersect(r, compiler) : []; appRanges.set(p, merge([...(appRanges.get(p) ?? []), ...subtract(r, own)])); javacRanges.set(p, own); }