From 8b1deff6e97c894b7dba91e84227ecbae0a87690 Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Sun, 25 Oct 2026 22:01:42 -0500 Subject: [PATCH 01/52] Step untyped loops over the program's generators on the typed path MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A for…of or for await loop over an untyped iterable now tests, once it has its iterator and next method, whether the iterator is one of the program's own generators with its own next method. Each step of such a loop resumes the generator directly and boxes only the value, where the dynamic protocol boxed the result record and its promise and read them back. Every other iterator keeps the dynamic protocol, and early exits still close the iterator through it. The awaits are the protocol's: an async generator's next() promise is awaited, and a sync generator under for await awaits the result and then the value. --- .../lowering/generator-dynamic-dispatch.ts | 287 +++++++++++++++++- .../src/frontend/lowering/lower-stmts.ts | 18 ++ .../compiler/src/frontend/lowering/lowerer.ts | 20 ++ .../8380-untyped-generator-loops.mjs.json | 6 + .../8381-untyped-generator-stages.mjs.json | 6 + tests/corpus/8380-untyped-generator-loops.mjs | 156 ++++++++++ .../corpus/8381-untyped-generator-stages.mjs | 82 +++++ 7 files changed, 573 insertions(+), 2 deletions(-) create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8380-untyped-generator-loops.mjs.json create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8381-untyped-generator-stages.mjs.json create mode 100644 tests/corpus/8380-untyped-generator-loops.mjs create mode 100644 tests/corpus/8381-untyped-generator-stages.mjs diff --git a/packages/compiler/src/frontend/lowering/generator-dynamic-dispatch.ts b/packages/compiler/src/frontend/lowering/generator-dynamic-dispatch.ts index db542412f..882013369 100644 --- a/packages/compiler/src/frontend/lowering/generator-dynamic-dispatch.ts +++ b/packages/compiler/src/frontend/lowering/generator-dynamic-dispatch.ts @@ -1,7 +1,8 @@ -import { dynUndefinedExpr, varRef } from "../../ir/build.js"; +import { dynUndefinedExpr, numLit, varRef } from "../../ir/build.js"; import { BOOL, DYN, + F64, STRING, canConvertToDyn, funcOf, @@ -16,7 +17,7 @@ import { import { transformStmtList } from "../../ir/traverse.js"; import { genResultRecord } from "../type-mapper.js"; import type { DispatchSites } from "./dispatch-sites.js"; -import type { Lowerer } from "./lowerer.js"; +import type { Lowerer, UntypedLoopSite } from "./lowerer.js"; type GeneratorType = Extract; type Invoke = Extract; @@ -401,6 +402,288 @@ export class GeneratorDynamicDispatch { }); changed = true; } + return this.stepUntypedLoops(lowerer, functions) || changed; + } + + /** The generator types a loop over an untyped iterable can step natively: + * sync generators for `for … of`, and both kinds for `for await` (a sync + * generator through the async-from-sync rules). Insertion order, so a + * type keeps its index as later waves add types. */ + private loopTypes(lowerer: Lowerer, site: UntypedLoopSite): [string, GeneratorType][] { + const out: [string, GeneratorType][] = []; + for (const [key, type] of this.generators) { + if (type.async === true && !site.async) continue; + const result = genResultRecord(type.yieldT, type.retT, lowerer.shapes, lowerer.unions); + if (result === null) continue; + // next() with no argument, as the protocol calls it. + const channel = type.nextT; + if (channel.kind !== "undefinedT" && channel.kind !== "void" && channel.kind !== "dyn") + continue; + if ( + !canConvertToDyn( + result, + (id) => lowerer.shapes.get(id), + (id) => lowerer.unions.get(id), + ) + ) + continue; + out.push([key, type]); + } + return out; + } + + /** Loops over untyped iterables step the program's own generators on the + * typed path. Once the loop has its iterator and next method, a kind local + * records which generator type the iterator is, when its next method is + * the generator's own (`%dyn.generator.method.next`); each step then + * resumes the generator directly and boxes only the value, where the + * protocol would box the result record and its promise and read them + * back. Every other iterator, and every early exit (return() through the + * protocol), keeps the dynamic path. The awaits are the protocol's: a + * `for await` over an async generator awaits next()'s promise, and over a + * sync generator awaits once for the result and once for the value. */ + private stepUntypedLoops(lowerer: Lowerer, functions: readonly IrFunction[]): boolean { + if (this.generators.size === 0 || lowerer.untypedLoops.size === 0) return false; + // The loop reads next through the getter only once it exists. + if (!this.properties.has("next")) return false; + let changed = false; + for (const fn of functions) { + if (this.generated.has(fn)) continue; + const byKind = new Map(); + const byValue = new Map(); + for (const local of fn.locals) { + const site = lowerer.untypedLoops.get(local); + if (site === undefined) continue; + byKind.set(site.kind, site); + byValue.set(site.value, site); + } + if (byKind.size === 0) continue; + fn.body = transformStmtList(fn.body, { + expr: (expr) => expr, + stmt: (stmt) => { + if (stmt.kind !== "varDecl" || stmt.init === null) return stmt; + const opened = byKind.get(stmt.localId); + if (opened !== undefined) { + const types = this.loopTypes(lowerer, opened); + const init = this.loopKind(opened, types, stmt.loc); + if (this.loopKindCount(stmt.init) === types.length) return stmt; + changed = true; + return { ...stmt, init }; + } + const site = byValue.get(stmt.localId); + if (site === undefined) return stmt; + const types = this.loopTypes(lowerer, site); + // The protocol step is the innermost else of the type chain. + let fallback = stmt.init; + let present = 0; + while ( + fallback.kind === "ternary" && + fallback.cond.kind === "bin" && + fallback.cond.left.kind === "varRef" && + fallback.cond.left.localId === site.kind + ) { + fallback = fallback.else_; + present++; + } + if (present === types.length) return stmt; + let init = fallback; + for (let i = types.length - 1; i >= 0; i--) { + const [, type] = types[i]!; + const record = `${site.kind}.r${i + 1}`; + init = { + kind: "ternary", + cond: { + kind: "bin", + op: "===", + left: varRef(site.kind, F64, stmt.loc), + right: numLit(i + 1, stmt.loc), + type: BOOL, + loc: stmt.loc, + }, + then: this.loopStep(lowerer, fn, site, type, record, stmt.loc), + else_: init, + type: DYN, + loc: stmt.loc, + }; + } + changed = true; + return { ...stmt, init }; + }, + }); + } return changed; } + + /** How many generator types a loop's kind initializer tests: the chain + * inside its own-method test (loopKind). */ + private loopKindCount(init: IrExpr): number { + if (init.kind !== "ternary") return 0; + let count = 0; + for (let chain = init.then; chain.kind === "ternary"; chain = chain.else_) count++; + return count; + } + + /** The loop's kind: the 1-based index of the generator type its iterator + * is, when the next method it read is that generator's own, else 0. */ + private loopKind( + site: UntypedLoopSite, + types: readonly [string, GeneratorType][], + loc: IrExpr["loc"], + ): IrExpr { + const own: IrExpr = { + kind: "libCall", + fn: "dyn.sameValue", + args: [ + varRef(site.next, DYN, loc), + { + kind: "dynFrom", + value: { + kind: "closure", + fnName: "%dyn.generator.method.next", + captures: [], + type: funcOf([DYN], DYN), + loc, + }, + type: DYN, + loc, + }, + ], + type: BOOL, + loc, + }; + let kind: IrExpr = numLit(0, loc); + for (let i = types.length - 1; i >= 0; i--) + kind = { + kind: "ternary", + cond: { + kind: "libCall", + fn: "dyn.typedRefIs", + args: [ + varRef(site.iterator, DYN, loc), + { kind: "strLit", value: types[i]![0], type: STRING, loc }, + ], + type: BOOL, + loc, + }, + then: numLit(i + 1, loc), + else_: kind, + type: F64, + loc, + }; + return types.length === 0 + ? kind + : { kind: "ternary", cond: own, then: kind, else_: numLit(0, loc), type: F64, loc }; + } + + /** One step of a loop over an untyped iterable that is a `type` + * generator: sets the loop's done flag and answers the value, boxed. */ + private loopStep( + lowerer: Lowerer, + fn: IrFunction, + site: UntypedLoopSite, + type: GeneratorType, + recordId: string, + loc: IrExpr["loc"], + ): IrExpr { + const gen: IrExpr = { kind: "dynCheck", value: varRef(site.iterator, DYN, loc), type, loc }; + const setDone = (value: IrExpr): IrStmt => ({ kind: "assign", localId: site.done, value, loc }); + const doneRef = varRef(site.done, BOOL, loc); + const result = genResultRecord(type.yieldT, type.retT, lowerer.shapes, lowerer.unions)!; + if (!fn.locals.some((local) => local.id === recordId)) + fn.locals.push({ id: recordId, name: recordId, type: result, mutable: false }); + const field = (name: "value" | "done", fieldType: IrType): IrExpr => ({ + kind: "recordGet", + obj: varRef(recordId, result, loc), + shapeId: result.shapeId, + field: name, + type: fieldType, + loc, + }); + const valueType = lowerer.shapes + .get(result.shapeId)! + .fields.find((f) => f.name === "value")!.type; + const boxed: IrExpr = { kind: "dynFrom", value: field("value", valueType), type: DYN, loc }; + const awaitDyn = (value: IrExpr): IrExpr => ({ + kind: "libCall", + fn: "async.awaitDyn", + args: [value], + type: DYN, + loc, + }); + const resumed: IrExpr = { + kind: "genResume", + mode: "next", + gen, + arg: null, + type: type.async === true ? { kind: "promise", inner: result } : result, + loc, + }; + if (!site.async) + return { + kind: "seqExpr", + stmts: [ + { kind: "varDecl", localId: recordId, init: resumed, loc }, + setDone(field("done", BOOL)), + ], + result: { + kind: "ternary", + cond: doneRef, + then: dynUndefinedExpr(loc), + else_: boxed, + type: DYN, + loc, + }, + type: DYN, + loc, + }; + if (type.async === true) + return { + kind: "seqExpr", + stmts: [ + { + kind: "varDecl", + localId: recordId, + init: { kind: "awaitExpr", value: resumed, type: result, loc }, + loc, + }, + setDone(field("done", BOOL)), + ], + result: { + kind: "ternary", + cond: doneRef, + then: dynUndefinedExpr(loc), + else_: boxed, + type: DYN, + loc, + }, + type: DYN, + loc, + }; + // for await over a sync generator: the result awaits once, then the + // value (the final one too), as the async-from-sync iterator does. + return { + kind: "seqExpr", + stmts: [ + { kind: "varDecl", localId: recordId, init: resumed, loc }, + setDone(field("done", BOOL)), + { kind: "exprStmt", expr: awaitDyn(dynUndefinedExpr(loc)), loc }, + ], + result: { + kind: "ternary", + cond: doneRef, + then: { + kind: "seqExpr", + stmts: [{ kind: "exprStmt", expr: awaitDyn(boxed), loc }], + result: dynUndefinedExpr(loc), + type: DYN, + loc, + }, + else_: awaitDyn(boxed), + type: DYN, + loc, + }, + type: DYN, + loc, + }; + } } diff --git a/packages/compiler/src/frontend/lowering/lower-stmts.ts b/packages/compiler/src/frontend/lowering/lower-stmts.ts index 84196476a..cf3dfcc5e 100644 --- a/packages/compiler/src/frontend/lowering/lower-stmts.ts +++ b/packages/compiler/src/frontend/lowering/lower-stmts.ts @@ -11624,6 +11624,7 @@ function lowerForOfDyn( const iterator = lowerer.declareHiddenLocal("%dofIterator", DYN); const next = lowerer.declareHiddenLocal("%dofNext", DYN); const fast = lowerer.declareHiddenLocal("%dofNative", BOOL); + const generator = lowerer.declareHiddenLocal("%dofGenerator", F64); const done = lowerer.declareHiddenLocal("%dofDone", BOOL); done.mutable = true; const value = lowerer.declareHiddenLocal("%dofValue", DYN); @@ -11633,6 +11634,15 @@ function lowerForOfDyn( needsClose.mutable = true; const error = lowerer.declareHiddenLocal("%dofError", CAUGHT); const syncIterator = asyncLoop ? lowerer.declareHiddenLocal("%dofSync", BOOL) : null; + lowerer.untypedLoops.set(generator, { + kind: generator.id, + value: value.id, + iterator: iterator.id, + next: next.id, + done: done.id, + async: asyncLoop, + sync: syncIterator?.id ?? null, + }); const awaitDyn = (value: IrExpr): IrExpr => ({ kind: "libCall", fn: "async.awaitDyn", @@ -11907,6 +11917,14 @@ function lowerForOfDyn( : iteratorCanStep(varRef(iterator.id, DYN, loc), varRef(next.id, DYN, loc), loc), loc, }, + // Which of the program's generator types the iterator is, once + // generator-dynamic-dispatch.ts knows them; 0 keeps the protocol. + { + kind: "varDecl", + localId: generator.id, + init: { kind: "numLit", value: 0, type: F64, loc }, + loc, + }, { kind: "varDecl", localId: done.id, diff --git a/packages/compiler/src/frontend/lowering/lowerer.ts b/packages/compiler/src/frontend/lowering/lowerer.ts index 22b0fdb99..764b559b9 100644 --- a/packages/compiler/src/frontend/lowering/lowerer.ts +++ b/packages/compiler/src/frontend/lowering/lowerer.ts @@ -1927,6 +1927,21 @@ function byName(fns: readonly IrFunction[]): IrFunction[] { ); } +/** A loop over an untyped iterable (lowerForOfDyn). `kind` is a local the + * loop sets once it has opened the iterator: 0 for the dynamic protocol, + * or the 1-based index of the program's generator type it steps natively. + * `value` is the per-step local whose initializer takes one step. */ +export interface UntypedLoopSite { + kind: string; + value: string; + iterator: string; + next: string; + done: string; + /** `for await`; `sync` names its async-from-sync flag. */ + async: boolean; + sync: string | null; +} + export class Lowerer { readonly frontendServices: FrontendServices | undefined; readonly checker: ts.TypeChecker; @@ -3371,6 +3386,11 @@ export class Lowerer { * values other than fresh literals (noteUntypedIntegrity). */ untypedIntegrity = false; readonly liftedFns: IrFunction[] = []; + /** `for … of` and `for await` loops over untyped iterables, by their + * generator-kind local (generator-dynamic-dispatch.ts steps the program's + * own generators there on the typed path). Local ids repeat across + * functions; the local itself is in its function's locals. */ + readonly untypedLoops = new Map(); /** The first lifted function of each name (liftedFnNamed), for the * liftedFns indexed so far. liftedFns only grows. */ private readonly liftedFnsByName = new Map(); diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8380-untyped-generator-loops.mjs.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8380-untyped-generator-loops.mjs.json new file mode 100644 index 000000000..91ef13397 --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8380-untyped-generator-loops.mjs.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/8380-untyped-generator-loops.mjs" + ], + "diags": [] +} diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8381-untyped-generator-stages.mjs.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8381-untyped-generator-stages.mjs.json new file mode 100644 index 000000000..f272e7d88 --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8381-untyped-generator-stages.mjs.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/8381-untyped-generator-stages.mjs" + ], + "diags": [] +} diff --git a/tests/corpus/8380-untyped-generator-loops.mjs b/tests/corpus/8380-untyped-generator-loops.mjs new file mode 100644 index 000000000..2a477ca10 --- /dev/null +++ b/tests/corpus/8380-untyped-generator-loops.mjs @@ -0,0 +1,156 @@ +// Untyped for-of and for await loops over generator objects: values, +// completion values, early exits, errors, other iterables through the same +// loop, and the microtask order of each step. +function* numbers(n) { + for (let i = 0; i < n; i++) yield i; + return "done"; +} +function* mixed() { + yield "a"; + yield { k: 1 }; + yield undefined; + yield [1, 2]; + yield Promise.resolve(7); + return 99; +} +async function* asyncNumbers(n) { + for (let i = 0; i < n; i++) yield i * 10; + return "async done"; +} +async function* asyncMixed() { + yield "x"; + yield Promise.resolve(8); + yield null; +} + +function collect(it) { + const out = []; + for (const x of it) out.push(x); + return out; +} +async function collectAsync(it) { + const out = []; + for await (const x of it) out.push(x); + return out; +} +const show = (v) => JSON.stringify(v, (k, x) => (x instanceof Promise ? "promise" : x === undefined ? "undef" : x)); + +async function main() { + // The same loops over generators, arrays, Maps, strings and custom iterators. + console.log("sync", show(collect(numbers(4))), show(collect(mixed()))); + console.log("sync other", show(collect([1, 2])), show(collect(new Map([[1, 2]]))), show(collect("hé"))); + const custom = { + [Symbol.iterator]() { + let i = 0; + return { next: () => ({ value: i * i, done: i++ > 2 }) }; + }, + }; + console.log("sync custom", show(collect(custom))); + console.log("async", show(await collectAsync(asyncNumbers(3))), show(await collectAsync(asyncMixed()))); + console.log("async over sync", show(await collectAsync(mixed())), show(await collectAsync(numbers(3)))); + console.log("async other", show(await collectAsync([Promise.resolve(1), 2])), show(await collectAsync(custom))); + const asyncCustom = { + [Symbol.asyncIterator]() { + let i = 0; + return { next: async () => ({ value: `c${i}`, done: i++ > 1 }) }; + }, + }; + console.log("async custom", show(await collectAsync(asyncCustom))); + + // A generator that has started keeps its position; one that finished stays done. + const started = numbers(5); + started.next(); + console.log("started", show(collect(started)), show(started.next())); + + // Early exits close the generator: finally blocks run once. + function* guarded(label) { + try { + yield 1; + yield 2; + } finally { + console.log(label, "finally"); + } + } + const pick = (v) => v; + for (const x of pick(guarded("break"))) { + console.log("break at", x); + break; + } + try { + for (const x of pick(guarded("throw"))) throw new Error(`body ${x}`); + } catch (e) { + console.log("caught", e.message); + } + const g = pick(guarded("after")); + for (const x of g) { + if (x === 1) break; + } + console.log("after break", show(g.next())); + async function* aguarded(label) { + try { + yield 1; + yield 2; + } finally { + console.log(label, "finally"); + } + } + for await (const x of pick(aguarded("abreak"))) { + console.log("abreak at", x); + break; + } + for await (const x of pick(guarded("sync abreak"))) { + console.log("sync abreak at", x); + break; + } + + // Errors from the generator body reach the loop. + function* failing() { + yield 1; + throw new TypeError("generator failed"); + } + async function* afailing() { + yield 1; + throw new RangeError("async generator failed"); + } + try { + for (const x of pick(failing())) console.log("failing got", x); + } catch (e) { + console.log("caught", e.name, e.message); + } + try { + for await (const x of pick(afailing())) console.log("afailing got", x); + } catch (e) { + console.log("caught", e.name, e.message); + } + // Microtask order: each step against a promise chain ticking alongside. + const ticker = (label, n) => { + let p = Promise.resolve(); + for (let i = 0; i < n; i++) p = p.then(() => console.log(label, "tick", i)); + return p; + }; + const consume = async (label, it) => { + for await (const x of it) console.log(label, "value", x); + console.log(label, "end"); + }; + await Promise.all([consume("sync", pick(numbers(3))), ticker("sync", 10)]); + await Promise.all([consume("async", pick(asyncNumbers(3))), ticker("async", 10)]); + await Promise.all([consume("promises", pick(mixed())), ticker("promises", 14)]); + + // Stages chained through untyped parameters. + async function* double(src) { + for await (const x of src) yield x * 2; + } + async function* keepOdd(src) { + for await (const x of src) if (x % 4 !== 0) yield x; + } + let sum = 0; + for await (const x of keepOdd(double(asyncNumbers(50)))) sum += x; + console.log("stages", sum); + let syncSum = 0; + function* inc(src) { + for (const x of src) yield x + 1; + } + for (const x of inc(inc(numbers(100)))) syncSum += x; + console.log("sync stages", syncSum); +} +main(); diff --git a/tests/corpus/8381-untyped-generator-stages.mjs b/tests/corpus/8381-untyped-generator-stages.mjs new file mode 100644 index 000000000..d326a00c1 --- /dev/null +++ b/tests/corpus/8381-untyped-generator-stages.mjs @@ -0,0 +1,82 @@ +// Untyped stages chained through generator objects: a sync generator source +// consumed with for await, async generator transforms, an async function +// consumer, and the same stages over arrays and custom iterables. +function run(source, transform, destination) { + return destination(transform(source())); +} +const N = 2000; +const total = await run( + function* () { + for (let i = 0; i < N; i++) yield i; + }, + async function* (src) { + for await (const n of src) yield n * 2; + }, + async function (src) { + let sum = 0; + for await (const n of src) sum += n; + return sum; + }, +); +console.log("total", total); + +async function* map(it, f) { + for await (const x of it) yield await f(x); +} +async function* take(it, n) { + if (n <= 0) return; + for await (const x of it) { + yield x; + if (--n === 0) return; + } +} +async function* source(n) { + try { + for (let i = 0; i < n; i++) yield i; + } finally { + console.log("source closed"); + } +} +async function toArray(it) { + const out = []; + for await (const x of it) out.push(x); + return out; +} +const half = async (x) => x / 2; +console.log(await toArray(take(map(source(10), half), 3))); +console.log(await toArray(map([1, 2, 3], half))); +console.log(await toArray(map(new Set(["a", "b"]), async (s) => s.toUpperCase()))); +const words = { + *[Symbol.iterator]() { + yield "x"; + yield "y"; + }, +}; +console.log(await toArray(map(words, async (s) => s + s))); + +// A stage that switches iterables between calls of the same loop. +function* letters() { + yield "p"; + yield "q"; +} +async function* numbersAsync() { + yield 1; + yield 2; +} +const sources = [letters(), numbersAsync(), ["z"], letters()]; +for (const s of sources) console.log(await toArray(s)); + +// Sync stages: generator to generator through untyped parameters. +function* inc(src) { + for (const x of src) yield x + 1; +} +function* evens(src) { + for (const x of src) if (x % 2 === 0) yield x; +} +function* range(n) { + for (let i = 0; i < n; i++) yield i; + return "range done"; +} +let s = 0; +for (const x of evens(inc(range(1000)))) s += x; +console.log("sync", s, [...inc([10, 20])], Array.from(evens(range(7)))); From ddb4111ebdfa0aea8e27da93acb50848be3a4581 Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Sun, 25 Oct 2026 23:31:44 -0500 Subject: [PATCH 02/52] Address review feedback --- .../lowering/generator-dynamic-dispatch.ts | 36 +++++++++++++++---- tests/corpus/8380-untyped-generator-loops.mjs | 6 ++++ 2 files changed, 35 insertions(+), 7 deletions(-) diff --git a/packages/compiler/src/frontend/lowering/generator-dynamic-dispatch.ts b/packages/compiler/src/frontend/lowering/generator-dynamic-dispatch.ts index 882013369..459af8751 100644 --- a/packages/compiler/src/frontend/lowering/generator-dynamic-dispatch.ts +++ b/packages/compiler/src/frontend/lowering/generator-dynamic-dispatch.ts @@ -441,7 +441,8 @@ export class GeneratorDynamicDispatch { * back. Every other iterator, and every early exit (return() through the * protocol), keeps the dynamic path. The awaits are the protocol's: a * `for await` over an async generator awaits next()'s promise, and over a - * sync generator awaits once for the result and once for the value. */ + * sync generator awaits once for the result and, reached through + * Symbol.iterator, once for the value. */ private stepUntypedLoops(lowerer: Lowerer, functions: readonly IrFunction[]): boolean { if (this.generators.size === 0 || lowerer.untypedLoops.size === 0) return false; // The loop reads next through the getter only once it exists. @@ -659,8 +660,15 @@ export class GeneratorDynamicDispatch { type: DYN, loc, }; - // for await over a sync generator: the result awaits once, then the - // value (the final one too), as the async-from-sync iterator does. + // for await over a sync generator: the result awaits once. When the + // loop reached it through Symbol.iterator, the async-from-sync iterator + // also awaits the value (the final one too); a sync generator that an + // object's Symbol.asyncIterator returns passes the value as it is, as + // the protocol does. + const fromSync: IrExpr = + site.sync === null + ? { kind: "boolLit", value: false, type: BOOL, loc } + : varRef(site.sync, BOOL, loc); return { kind: "seqExpr", stmts: [ @@ -672,13 +680,27 @@ export class GeneratorDynamicDispatch { kind: "ternary", cond: doneRef, then: { - kind: "seqExpr", - stmts: [{ kind: "exprStmt", expr: awaitDyn(boxed), loc }], - result: dynUndefinedExpr(loc), + kind: "ternary", + cond: fromSync, + then: { + kind: "seqExpr", + stmts: [{ kind: "exprStmt", expr: awaitDyn(boxed), loc }], + result: dynUndefinedExpr(loc), + type: DYN, + loc, + }, + else_: dynUndefinedExpr(loc), + type: DYN, + loc, + }, + else_: { + kind: "ternary", + cond: fromSync, + then: awaitDyn(boxed), + else_: boxed, type: DYN, loc, }, - else_: awaitDyn(boxed), type: DYN, loc, }, diff --git a/tests/corpus/8380-untyped-generator-loops.mjs b/tests/corpus/8380-untyped-generator-loops.mjs index 2a477ca10..a6dd20ebe 100644 --- a/tests/corpus/8380-untyped-generator-loops.mjs +++ b/tests/corpus/8380-untyped-generator-loops.mjs @@ -56,6 +56,12 @@ async function main() { }, }; console.log("async custom", show(await collectAsync(asyncCustom))); + // Symbol.asyncIterator returning a sync generator: each result is awaited, + // its value is not, so a yielded promise reaches the loop as a promise. + const viaAsyncIterator = { [Symbol.asyncIterator]: () => mixed() }; + const seen = []; + for await (const x of viaAsyncIterator) seen.push(x instanceof Promise ? `promise ${await x}` : x); + console.log("async iterator sync", show(seen)); // A generator that has started keeps its position; one that finished stays done. const started = numbers(5); From 5ad9c266dc62cfd1eab6c484845abee6cf44e74c Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 06:40:02 -0500 Subject: [PATCH 03/52] Read missing elements through non-null asserted operands as Node does --- .../src/backend/llvm/dense-array-access.ts | 58 +++- .../src/backend/llvm/expr-containers.ts | 21 ++ .../src/backend/llvm/int32-kind-loops.ts | 2 + .../src/backend/llvm/integer-clones.ts | 19 +- packages/compiler/src/contracts/check.ts | 9 + .../src/frontend/lowering/lower-exprs.ts | 259 ++++++++++++++++-- .../src/frontend/lowering/nan-coded-reads.ts | 13 + packages/compiler/src/ir/int32-slots.ts | 45 ++- .../compiler/src/ir/parameter-versions.ts | 2 +- .../7393-non-null-element-operands.ts.json | 6 + .../7395-non-null-element-dereference.ts.json | 6 + .../corpus/7393-non-null-element-operands.ts | 81 ++++++ .../7395-non-null-element-dereference.ts | 71 +++++ .../7393-non-null-element-operands.ts.json | 1 + .../7395-non-null-element-dereference.ts.json | 1 + 15 files changed, 558 insertions(+), 36 deletions(-) create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/7393-non-null-element-operands.ts.json create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/7395-non-null-element-dereference.ts.json create mode 100644 tests/corpus/7393-non-null-element-operands.ts create mode 100644 tests/corpus/7395-non-null-element-dereference.ts create mode 100644 tests/harness/corpus-costs/7393-non-null-element-operands.ts.json create mode 100644 tests/harness/corpus-costs/7395-non-null-element-dereference.ts.json diff --git a/packages/compiler/src/backend/llvm/dense-array-access.ts b/packages/compiler/src/backend/llvm/dense-array-access.ts index e002ecd8a..0991c344c 100644 --- a/packages/compiler/src/backend/llvm/dense-array-access.ts +++ b/packages/compiler/src/backend/llvm/dense-array-access.ts @@ -19,6 +19,7 @@ * length, so reads never reach the state check for it; a write past the * bound tests the flag and, without states, appends at the length. */ +import { InternalCompilerError } from "../../errors.js"; import { isRefCounted, type IrExpr, type IrType } from "../../ir/ir.js"; import { f64Lit, @@ -368,7 +369,9 @@ export function emitDenseArrayGet( /** emitDenseArrayGet, with the int32 of an int32 array's element: the * slot itself on the dense path, the runtime getter's double converted - * (exactly: the element is an int32) on the other. */ + * (exactly: the element is an int32) on the other. With `inexact`, the + * getter's double may be something other than an int32 (NaN from + * `scr_arr_get_number`): the read branches there when it is. */ export function emitDenseArrayRead( host: LlvmEmitterContext, array: string, @@ -379,6 +382,7 @@ export function emitDenseArrayRead( getter: string, retain: boolean, proven = false, + inexact?: string, ): { value: string; int32: string | null } { const B = host.B; const ty = valueType(acc); @@ -460,22 +464,68 @@ export function emitDenseArrayRead( : READ_FALLBACK; B.line(`${slowValue} = call ${ty} @${getter}(ptr ${array}, double ${index.name})${attrs}`); let slowInt: string | null = null; - if (fastInt !== null) { + let slowLabel = slow; + if (fastInt !== null && inexact !== undefined) { + // An int32 that is not -0, or the inexact branch. + host.declare("declare i32 @llvm.fptosi.sat.i32.f64(double)"); + slowInt = B.tmp(); + const back = B.tmp(), + exact = B.tmp(), + bits = B.tmp(), + notNegativeZero = B.tmp(), + ok = B.tmp(); + B.line(`${slowInt} = call i32 @llvm.fptosi.sat.i32.f64(double ${slowValue})`); + B.line(`${back} = sitofp i32 ${slowInt} to double`); + B.line(`${exact} = fcmp oeq double ${back}, ${slowValue}`); + B.line(`${bits} = bitcast double ${slowValue} to i64`); + B.line(`${notNegativeZero} = icmp ne i64 ${bits}, -9223372036854775808`); + B.line(`${ok} = and i1 ${exact}, ${notNegativeZero}`); + slowLabel = B.newLabel("arr.get.int32"); + B.condBr(ok, slowLabel, inexact); + B.startBlock(slowLabel); + } else if (fastInt !== null) { slowInt = B.tmp(); B.line(`${slowInt} = fptosi double ${slowValue} to i32`); } B.br(join); B.startBlock(join); const result = B.tmp(); - B.line(`${result} = phi ${ty} [ ${fast}, %${fastLabel} ], [ ${slowValue}, %${slow} ]`); + B.line(`${result} = phi ${ty} [ ${fast}, %${fastLabel} ], [ ${slowValue}, %${slowLabel} ]`); let int32: string | null = null; if (fastInt !== null && slowInt !== null) { int32 = B.tmp(); - B.line(`${int32} = phi i32 [ ${fastInt}, %${fastLabel} ], [ ${slowInt}, %${slow} ]`); + B.line(`${int32} = phi i32 [ ${fastInt}, %${fastLabel} ], [ ${slowInt}, %${slowLabel} ]`); } return { value: result, int32 }; } +/** emitDenseArrayNumber of an int32 array, with the element's int32: a + * read that answers NaN (or another value that is not an int32) branches + * to `inexact`. */ +export function emitDenseArrayNumberInt32( + host: LlvmEmitterContext, + array: string, + index: LlValue, + indexExpr: IrExpr | undefined, + proven: boolean, + inexact: string, +): { value: string; int32: string } { + const read = emitDenseArrayRead( + host, + array, + index, + indexExpr, + "i32", + { kind: "f64" }, + "scr_arr_get_number", + false, + proven, + inexact, + ); + if (read.int32 === null) throw new InternalCompilerError("llvm emitter bug: int32 read"); + return { value: read.value, int32: read.int32 }; +} + /** `scr_arr_get_number`: a numeric element, or NaN for every missing, * hole, or present-undefined slot (answered by the runtime). */ export function emitDenseArrayNumber( diff --git a/packages/compiler/src/backend/llvm/expr-containers.ts b/packages/compiler/src/backend/llvm/expr-containers.ts index 7eec14e4e..279afdcd0 100644 --- a/packages/compiler/src/backend/llvm/expr-containers.ts +++ b/packages/compiler/src/backend/llvm/expr-containers.ts @@ -62,12 +62,14 @@ import { import { exactInteger, widenInteger } from "./integer-values.js"; import { emitDenseArrayNumber, + emitDenseArrayNumberInt32, emitDenseArrayPop, emitDenseArrayPush, runtimeAccess, type ArrayAccess, } from "./dense-array-access.js"; import { INT32_ARRAY_METHODS } from "../../ir/int32-arrays.js"; +import { INT32_RANGE } from "../../ir/integer-ranges.js"; import { emitUnionWiden } from "./expr-records.js"; import { registerReplay } from "./emit-journal.js"; @@ -694,6 +696,25 @@ export function emitArrIntrinsic( )!; return { name: value, type: e.type }; } + // In a store statement of an int32 kind loop's fast copy, a read that + // is not an int32 (a missing element's NaN) leaves for the + // statement's resume point, so the element is at hand as an i32. + if (!table && elem.kind === "f64" && access === "i32" && host.int32KindResume !== null) { + const read = emitDenseArrayNumberInt32( + host, + r.name, + index, + e.args[0], + host.provenDenseIndex(e.receiver, e.args[0]!), + host.int32KindResume, + ); + return { + name: read.value, + type: e.type, + uint32: read.int32, + integer: { name: read.int32, type: "i32", signed: true, range: INT32_RANGE }, + }; + } if (!table && elem.kind === "f64") return { name: emitDenseArrayNumber( diff --git a/packages/compiler/src/backend/llvm/int32-kind-loops.ts b/packages/compiler/src/backend/llvm/int32-kind-loops.ts index 12e38c1f0..d596a731d 100644 --- a/packages/compiler/src/backend/llvm/int32-kind-loops.ts +++ b/packages/compiler/src/backend/llvm/int32-kind-loops.ts @@ -57,6 +57,8 @@ function isPure(e: IrExpr): boolean { case "arrayGet": case "arrayHas": return e.arr.kind === "varRef" && isPure(e.index); + case "arrIntrinsic": + return e.method === "getNumber" && e.receiver.kind === "varRef" && isPure(e.args[0]!); default: return false; } diff --git a/packages/compiler/src/backend/llvm/integer-clones.ts b/packages/compiler/src/backend/llvm/integer-clones.ts index 314eae5ea..3f3f86e22 100644 --- a/packages/compiler/src/backend/llvm/integer-clones.ts +++ b/packages/compiler/src/backend/llvm/integer-clones.ts @@ -191,6 +191,8 @@ function cloneShape(fn: IrFunction, borrowed?: BorrowedParameter): Set | case "ternary": return expr(e.cond, "bool") && expr(e.then, want) && expr(e.else_, want); case "arrIntrinsic": + if (e.method === "getNumber") + return want === "num" && arrayRef(e.receiver) && expr(e.args[0]!, "num"); return ( want === "num" && e.method === "length" && e.args.length === 0 && arrayRef(e.receiver) ); @@ -268,6 +270,9 @@ function callsMatch(fn: IrFunction, byName: ReadonlyMap): bo case "arrayGet": visit(e.index); return; + case "arrIntrinsic": + if (e.method === "getNumber") visit(e.args[0]!); + return; default: return; } @@ -432,6 +437,8 @@ function callsAnything(e: IrExpr): boolean { return callsAnything(e.cond) || callsAnything(e.then) || callsAnything(e.else_); case "arrayGet": return callsAnything(e.index); + case "arrIntrinsic": + return e.method === "getNumber" && callsAnything(e.args[0]!); default: return false; } @@ -1020,10 +1027,10 @@ class CloneEmitter { * keeps every slot below `filled` a present value) whose element is * exactly an int32. Everything else (holes, indices outside the prefix, * other numbers) bails: the ordinary body reads it. */ - private emitElement(e: Extract): string { + private emitElement(arr: IrExpr, indexExpr: IrExpr): string { const { B } = this; - const array = this.emitArray(e.arr); - const index = this.narrow(this.emitNum(e.index)); + const array = this.emitArray(arr); + const index = this.narrow(this.emitNum(indexExpr)); const filledField = B.tmp(); const filled = B.tmp(); const inside = B.tmp(); @@ -1157,9 +1164,13 @@ class CloneEmitter { if (this.inlines(e)) return { name: this.emitInlineCall(e), wide: false }; return { name: this.emitCall(e), wide: true }; case "arrIntrinsic": + // `getNumber` reads an element like `arrayGet`: a missing one bails, + // and the ordinary body reads it as NaN. + if (e.method === "getNumber") + return { name: this.emitElement(e.receiver, e.args[0]!), wide: false }; return { name: this.emitLength(this.emitArray(e.receiver)), wide: false }; case "arrayGet": - return { name: this.emitElement(e), wide: false }; + return { name: this.emitElement(e.arr, e.index), wide: false }; case "unary": { const operand = this.narrow(this.emitNum(e.operand)); const value = B.tmp(); diff --git a/packages/compiler/src/contracts/check.ts b/packages/compiler/src/contracts/check.ts index fe5dc171e..1e17c8782 100644 --- a/packages/compiler/src/contracts/check.ts +++ b/packages/compiler/src/contracts/check.ts @@ -1581,6 +1581,15 @@ class ImmutableContracts { for (let steps = 0; steps < 16; steps++) { if (root.kind === "fieldGet" || root.kind === "recordGet") root = root.obj; else if (root.kind === "arrayGet") root = root.arr; + else if (root.kind === "seqExpr") root = root.result; + // A receiver that is the element when it is present and otherwise + // throws (`xs[i]!.push(v)`) is that element read. + else if ( + root.kind === "ternary" && + root.else_.kind === "libCall" && + root.else_.fn === "error.nodeThrow" + ) + root = root.then; else if ( root.kind === "upcast" || root.kind === "downcast" || diff --git a/packages/compiler/src/frontend/lowering/lower-exprs.ts b/packages/compiler/src/frontend/lowering/lower-exprs.ts index c70826975..91864a036 100644 --- a/packages/compiler/src/frontend/lowering/lower-exprs.ts +++ b/packages/compiler/src/frontend/lowering/lower-exprs.ts @@ -412,6 +412,10 @@ function lowerExprInner(lowerer: Lowerer, expr: ts.Expression): IrExpr { const probe = lowerAbsenceProbe(lowerer, expr.expression); if (probe?.type.kind === "union") return probe; } + const dereferenced = dereferencedElementReceiver(lowerer, expr, loc); + if (dereferenced) return dereferenced; + const element = assertedElementOperand(lowerer, expr, loc); + if (element) return element; const inner = lowerer.lowerExpr(expr.expression); if (inner.type.kind === "union") { // `!` performs no runtime check: a missing array element stays @@ -1074,18 +1078,10 @@ function assertionOperand( loc: SrcLoc, ): IrExpr | null { if (inner.type.kind !== "union" || target === null || target.kind === "union") return null; - const arms = lowerer.unions.get(inner.type.unionId)?.arms; - if ( - !arms?.some(isUnitType) || - !arms.every( - (arm) => - arm.kind === "f64" || arm.kind === "string" || arm.kind === "bool" || isUnitType(arm), - ) - ) - return null; - // Array element reads keep their own handling of a missing element. A - // typed-array read is optional here only where its use tells undefined - // from NaN (assertedReadObservesUndefined). + if (!scalarUnion(lowerer, inner.type.unionId)) return null; + // Array element reads take assertedElementOperand or keep their own + // handling of a missing element. A typed-array read is optional here only + // where its use tells undefined from NaN (assertedReadObservesUndefined). let operand: ts.Expression = expr.expression; while (ts.isParenthesizedExpression(operand)) operand = operand.expression; if (ts.isElementAccessExpression(operand)) { @@ -1094,19 +1090,241 @@ function assertionOperand( } const use = convertingUseOf(lowerer, expr); if (use === null) return null; - if (use === "value") return inner; + if (use === "value" || use === "string") return inner; return lowerPrimitiveUnionNumber(lowerer, inner, expr, loc); } -/** How the converting use of `x!` (see assertionOperand) reads it: - * "number" where the use applies ToNumber, "value" where the consumer - * lowers the union itself (strings, equality, truthiness), null for other +/** `xs[i]!` on an array as the operand of a converting use (see + * assertionOperand). The read answers undefined for a missing element, as + * in Node, instead of trapping: a numeric use reads NaN for it, and other + * uses get the optional element value. Returns null for other reads and * uses. */ -function convertingUseOf(lowerer: Lowerer, expr: ts.NonNullExpression): "number" | "value" | null { +function assertedElementOperand( + lowerer: Lowerer, + expr: ts.NonNullExpression, + loc: SrcLoc, +): IrExpr | null { + let read: ts.Expression = expr.expression; + while (ts.isParenthesizedExpression(read)) read = read.expression; + if (!ts.isElementAccessExpression(read) || read.questionDotToken) return null; + // Plain arrays only: regex match results and other array subtypes keep + // their own element reads. + const receiverType = lowerer.typeOf(read.expression); + if ( + !lowerer.checker.isArrayType(receiverType) || + lowerer.mapTypeOf(receiverType)?.kind !== "array" + ) + return null; + // A counter below the length reads an existing index: the read keeps + // its plain element access. + if (lowerer.nanCodedReads?.counterIndexInBounds(read)) return null; + const target = lowerer.mapTypeOf(lowerer.typeOf(expr)); + if (!target || !isScalarArm(target)) return null; + const use = convertingUseOf(lowerer, expr); + if (use === null) return null; + if (use === "string" && target.kind === "string") + return stringElementOrUndefined(lowerer, read, loc); + const probe = lowerAbsenceProbe(lowerer, read); + if (probe?.type.kind !== "union" || !scalarUnion(lowerer, probe.type.unionId)) return null; + if (use === "value" || use === "string") return probe; + return lowerer.stripUndefinedArm(probe.type).kind === "f64" + ? lowerOptionalNumber(lowerer, probe, loc) + : lowerPrimitiveUnionNumber(lowerer, probe, expr, loc); +} + +/** `xs[i]!` on an array as the receiver of a member read or write + * (`xs[i]!.name`, `xs[i]!.size()`, `xs[i]![0]`, `xs[i]!.name = v`). `!` + * performs no runtime check, so a missing element is undefined there and + * the member access throws Node's TypeError ("Cannot read properties of + * undefined (reading 'name')") instead of the bounds trap. The receiver is + * the element when it is present. Returns null for other reads and uses. */ +function dereferencedElementReceiver( + lowerer: Lowerer, + expr: ts.NonNullExpression, + loc: SrcLoc, +): IrExpr | null { + let read: ts.Expression = expr.expression; + while (ts.isParenthesizedExpression(read)) read = read.expression; + if (!ts.isElementAccessExpression(read) || read.questionDotToken) return null; + const receiverType = lowerer.typeOf(read.expression); + if ( + !lowerer.checker.isArrayType(receiverType) || + lowerer.mapTypeOf(receiverType)?.kind !== "array" + ) + return null; + if (lowerer.nanCodedReads?.counterIndexInBounds(read)) return null; + const use = runtimeOptionalUseOf(expr); + if (!use || use.optional || use.complex || use.comma || use.kind === "call") return null; + const message = memberAccessMessage(lowerer, use.access); + if (message === null) return null; + if (lowerer.mapTypeOf(lowerer.typeOf(read.argumentExpression))?.kind !== "f64") return null; + // The element must already have the asserted type: an element union the + // assertion or a guard narrows keeps its checked narrow. + const target = lowerer.mapTypeOf(lowerer.typeOf(expr)); + const declared = lowerer.mapTypeOf(receiverType); + if ( + !target || + declared?.kind !== "array" || + declared.elem.kind === "void" || + !typeEquals(declared.elem, target) + ) + return null; + const arr = lowerer.lowerExpr(read.expression); + if (arr.type.kind !== "array" || !typeEquals(arr.type.elem, target)) return null; + const elem = arr.type.elem; + const index = lowerer.lowerExprExpecting(read.argumentExpression, F64); + // Plain reads (a local, a field of one) evaluate once more instead of + // through a hidden local: the receiver then stays a borrowed element + // read, like the plain `xs[i]` it replaces. + const stmts: IrStmt[] = []; + const stable = (value: IrExpr, name: string): IrExpr => { + if (isSafeToRepeat(value) || plainProjection(value)) return value; + const tmp = lowerer.declareHiddenLocal(name, value.type); + stmts.push({ kind: "varDecl", localId: tmp.id, init: value, loc }); + return varRef(tmp.id, value.type, loc); + }; + const a = stable(arr, "%elementArray"); + const i = stable(index, "%elementIndex"); + const value: IrExpr = { + kind: "ternary", + cond: { + kind: "bin", + op: "===", + left: { kind: "arrayState", arr: a, index: i, type: F64, loc }, + right: numLit(1, loc), + type: BOOL, + loc, + }, + then: { kind: "arrayGet", arr: a, index: i, type: elem, loc }, + else_: { + kind: "libCall", + fn: "error.nodeThrow", + args: [numLit(1, loc), strLit("", loc), message], + type: elem, + loc, + }, + type: elem, + loc, + }; + return stmts.length === 0 ? value : { kind: "seqExpr", stmts, result: value, type: elem, loc }; +} + +/** A local, a number literal, or a field or record member read through a + * local: reading it again has no effect and yields the same value. */ +function plainProjection(e: IrExpr): boolean { + if (e.kind === "varRef" || e.kind === "numLit") return true; + return (e.kind === "fieldGet" || e.kind === "recordGet") && plainProjection(e.obj); +} + +/** Node's TypeError message for a member access on undefined: reading the + * member, or setting it when the access is the target of `=`. Null when + * the key is not a name, a literal, or a plain read of a number or string + * (which the message reads a second time). */ +function memberAccessMessage( + lowerer: Lowerer, + access: ts.PropertyAccessExpression | ts.ElementAccessExpression | ts.CallExpression, +): IrExpr | null { + let outer: ts.Expression = access; + while (ts.isParenthesizedExpression(outer.parent)) outer = outer.parent; + const parent = outer.parent; + const setting = + ts.isBinaryExpression(parent) && + parent.left === outer && + parent.operatorToken.kind === ts.SyntaxKind.EqualsToken; + const head = setting + ? "Cannot set properties of undefined (setting '" + : "Cannot read properties of undefined (reading '"; + const loc = locOf(access); + if (ts.isPropertyAccessExpression(access)) { + if (ts.isPrivateIdentifier(access.name)) return null; + return strLit(`${head}${access.name.text}')`, loc); + } + if (!ts.isElementAccessExpression(access)) return null; + const key = runtimeOptionalElementKey(access.argumentExpression); + if (key !== null) return strLit(`${head}${key}')`, loc); + let keyNode = access.argumentExpression; + while (ts.isParenthesizedExpression(keyNode)) keyNode = keyNode.expression; + if (!ts.isIdentifier(keyNode)) return null; + const keyType = lowerer.mapTypeOf(lowerer.typeOf(keyNode))?.kind; + if (keyType !== "f64" && keyType !== "string") return null; + const keyValue = lowerer.lowerExpr(keyNode); + if (!isSafeToRepeat(keyValue) || keyValue.type.kind !== keyType) return null; + const text: IrExpr = + keyValue.type.kind === "string" + ? keyValue + : { kind: "toString", operand: keyValue, type: STRING, loc }; + const concat = (left: IrExpr, right: IrExpr): IrExpr => ({ + kind: "strConcat", + left, + right, + type: STRING, + loc, + }); + return concat(concat(strLit(head, loc), text), strLit("')", loc)); +} + +/** A string array's element converted to a string: the element, or + * "undefined" for a missing index or a hole. */ +function stringElementOrUndefined( + lowerer: Lowerer, + read: ts.ElementAccessExpression, + loc: SrcLoc, +): IrExpr | null { + if (lowerer.mapTypeOf(lowerer.typeOf(read.argumentExpression))?.kind !== "f64") return null; + const arr = lowerer.lowerExpr(read.expression); + if (arr.type.kind !== "array" || arr.type.elem.kind !== "string") return null; + const index = lowerer.lowerExprExpecting(read.argumentExpression, F64); + const stmts: IrStmt[] = []; + const stable = (value: IrExpr, name: string): IrExpr => { + if (isSafeToRepeat(value)) return value; + const tmp = lowerer.declareHiddenLocal(name, value.type); + stmts.push({ kind: "varDecl", localId: tmp.id, init: value, loc }); + return varRef(tmp.id, value.type, loc); + }; + const a = stable(arr, "%elementArray"); + const i = stable(index, "%elementIndex"); + const value: IrExpr = { + kind: "ternary", + cond: { + kind: "bin", + op: "===", + left: { kind: "arrayState", arr: a, index: i, type: F64, loc }, + right: numLit(1, loc), + type: BOOL, + loc, + }, + then: { kind: "arrayGet", arr: a, index: i, type: STRING, loc }, + else_: strLit("undefined", loc), + type: STRING, + loc, + }; + return stmts.length === 0 ? value : { kind: "seqExpr", stmts, result: value, type: STRING, loc }; +} + +function isScalarArm(arm: IrType): boolean { + return arm.kind === "f64" || arm.kind === "string" || arm.kind === "bool" || isUnitType(arm); +} + +/** A union of numbers, strings, booleans, null and undefined with at least + * one unit arm. */ +function scalarUnion(lowerer: Lowerer, unionId: string): boolean { + const arms = lowerer.unions.get(unionId)?.arms; + return !!arms?.some(isUnitType) && arms.every(isScalarArm); +} + +/** How the converting use of `x!` (see assertionOperand) reads it: + * "number" where the use applies ToNumber, "string" where it converts the + * value to a string (a template span, `+` with a string), "value" where the + * consumer lowers the union itself (equality, truthiness, a comparison with + * a string), null for other uses. */ +function convertingUseOf( + lowerer: Lowerer, + expr: ts.NonNullExpression, +): "number" | "string" | "value" | null { let outer: ts.Expression = expr; while (ts.isParenthesizedExpression(outer.parent)) outer = outer.parent; const parent = outer.parent; - if (ts.isTemplateSpan(parent)) return parent.expression === outer ? "value" : null; + if (ts.isTemplateSpan(parent)) return parent.expression === outer ? "string" : null; if (ts.isTypeOfExpression(parent)) return "value"; if (ts.isPrefixUnaryExpression(parent)) { if (parent.operator === ts.SyntaxKind.ExclamationToken) return "value"; @@ -1139,7 +1357,7 @@ function convertingUseOf(lowerer: Lowerer, expr: ts.NonNullExpression): "number" if (op === ts.SyntaxKind.PlusEqualsToken && parent.right !== outer) return null; let partner = other; while (ts.isParenthesizedExpression(partner)) partner = partner.expression; - if (isString(other)) return ts.isNonNullExpression(partner) ? null : "value"; + if (isString(other)) return ts.isNonNullExpression(partner) ? null : "string"; if (!numericPartner(lowerer.typeOf(other))) return "value"; return isString(expr) ? null : "number"; } @@ -1225,7 +1443,8 @@ export function assertedReadObservesUndefined( lowerer: Lowerer, node: ts.NonNullExpression, ): boolean { - if (convertingUseOf(lowerer, node) === "value") return true; + const use = convertingUseOf(lowerer, node); + if (use === "value" || use === "string") return true; let outer: ts.Expression = node; while (ts.isParenthesizedExpression(outer.parent)) outer = outer.parent; const parent = outer.parent; diff --git a/packages/compiler/src/frontend/lowering/nan-coded-reads.ts b/packages/compiler/src/frontend/lowering/nan-coded-reads.ts index 24c981bd3..9456cfa18 100644 --- a/packages/compiler/src/frontend/lowering/nan-coded-reads.ts +++ b/packages/compiler/src/frontend/lowering/nan-coded-reads.ts @@ -451,6 +451,19 @@ export class NanCodedReads { // ---- present reads ------------------------------------------------------ + /** `xs[i]` whose index is a non-negative integer counter of the reading + * function and that a dominating `i < xs.length` guard bounds by the + * length: the read names an existing index. */ + counterIndexInBounds(read: ts.ElementAccessExpression): boolean { + const index = peelTransparent(read.argumentExpression); + if (!ts.isIdentifier(index)) return false; + const symbol = this.symbolOf(index); + if (!symbol || !this.nonNegativeCounter(symbol)) return false; + const decl = this.host.declarationOf(symbol); + if (!decl || this.containingFunction(decl) !== this.containingFunction(read)) return false; + return indexReadInBounds(read); + } + /** `t[i]` names an existing element: `i` is a non-negative integer * counter and a dominating guard bounds it by `t.length` (or by the * length of a typed array that always has the same length). diff --git a/packages/compiler/src/ir/int32-slots.ts b/packages/compiler/src/ir/int32-slots.ts index 1334b9b99..be5f29768 100644 --- a/packages/compiler/src/ir/int32-slots.ts +++ b/packages/compiler/src/ir/int32-slots.ts @@ -1484,6 +1484,39 @@ export function analyzeInt32Slots(mod: IrModule, inputs: Int32SlotInputs = {}): continue; } const int32 = (e: IrExpr): boolean => withinInt32(ranges.get(e)); + // The range of an exact integer that may also be NaN: an element read + // of a candidate through `getNumber` (`a[k]!` in arithmetic, NaN for a + // missing element), and `+`, `-` and `*` over such values and integers. + // A checked store widens the array at a NaN like at any value that is + // not an int32. + const integerOrNaN = (e: IrExpr): IntegerRange | null => { + const range = ranges.get(e); + if (range) return range; + if (e.kind === "numLit") + return Number.isInteger(e.value) ? { min: e.value, max: e.value } : null; + if (e.kind === "arrIntrinsic" && e.method === "getNumber" && e.receiver.kind === "varRef") + return slots.hasInt32ElementSlot(int32ArraySlot(int32ArrayKey(fn.name, e.receiver.localId))) + ? INT32_RANGE + : null; + if (e.kind !== "bin" || (e.op !== "+" && e.op !== "-" && e.op !== "*")) return null; + const left = integerOrNaN(e.left); + const right = left && integerOrNaN(e.right); + if (!left || !right) return null; + const bounds = + e.op === "+" + ? [left.min + right.min, left.max + right.max] + : e.op === "-" + ? [left.min - right.max, left.max - right.min] + : [ + left.min * right.min, + left.min * right.max, + left.max * right.min, + left.max * right.max, + ]; + const min = Math.min(...bounds); + const max = Math.max(...bounds); + return Math.abs(min) < 2 ** 53 && Math.abs(max) < 2 ** 53 ? { min, max } : null; + }; // Every element stored into an int32 array candidate must be an int32 // under the facts that assume the candidates' own elements are; a // failing store drops its array's element facts, and the function is @@ -1513,6 +1546,10 @@ export function analyzeInt32Slots(mod: IrModule, inputs: Int32SlotInputs = {}): for (const [id, values] of int32ArrayStores(fn, arrays)) { const key = int32ArrayKey(fn.name, id); if (!slots.hasInt32ElementSlot(int32ArraySlot(key)) || values.every(int32)) continue; + // Checked stores serve a lone local: its allocations are the only + // arrays it holds. Its stores are judged under the element facts + // the ranges were computed with. + const checkable = values.every((value) => int32(value) || integerOrNaN(value) !== null); // The array's group drops together: every function reading a // member is analyzed again without its facts. const group = arrayGroups.group.get(key) ?? [key]; @@ -1523,17 +1560,11 @@ export function analyzeInt32Slots(mod: IrModule, inputs: Int32SlotInputs = {}): if (names) for (const name of names) requeue(name); } else requeue(member.slice(0, member.indexOf("\0"))); } - // Checked stores serve a lone local: its allocations are the only - // arrays it holds. - const checkable = (value: IrExpr): boolean => { - const range = ranges.get(value); - return int32(value) || range != null; - }; if ( group.length === 1 && !key.startsWith("\0") && !params.has(id) && - values.every(checkable) && + checkable && checkableInt32Allocations(fn, id) ) slots.checkedInt32Arrays.add(key); diff --git a/packages/compiler/src/ir/parameter-versions.ts b/packages/compiler/src/ir/parameter-versions.ts index 5156d4bff..ca2958585 100644 --- a/packages/compiler/src/ir/parameter-versions.ts +++ b/packages/compiler/src/ir/parameter-versions.ts @@ -122,7 +122,7 @@ function numericLoop(loop: IrStmt, functions: ReadonlyMap): const target = functions.get(e.callee); allowed = target !== undefined && simple(target); } else if (e.kind === "libCall") allowed = e.fn.startsWith("math."); - else if (e.kind === "arrIntrinsic") allowed = e.method === "length"; + else if (e.kind === "arrIntrinsic") allowed = e.method === "length" || e.method === "getNumber"; return allowed && everyExprChild(e, expr, stmt); }; const stmt = (s: IrStmt): boolean => diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/7393-non-null-element-operands.ts.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/7393-non-null-element-operands.ts.json new file mode 100644 index 000000000..e50ca92f4 --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/7393-non-null-element-operands.ts.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/7393-non-null-element-operands.ts" + ], + "diags": [] +} diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/7395-non-null-element-dereference.ts.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/7395-non-null-element-dereference.ts.json new file mode 100644 index 000000000..17551e626 --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/7395-non-null-element-dereference.ts.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/7395-non-null-element-dereference.ts" + ], + "diags": [] +} diff --git a/tests/corpus/7393-non-null-element-operands.ts b/tests/corpus/7393-non-null-element-operands.ts new file mode 100644 index 000000000..0fd7190a3 --- /dev/null +++ b/tests/corpus/7393-non-null-element-operands.ts @@ -0,0 +1,81 @@ +// Non-null assertions on array element reads whose index is out of bounds +// or names a hole, used as operands of operators that convert them. `!` +// performs no runtime check, so the read is undefined, as in Node: NaN in +// arithmetic, false in comparisons, "undefined" in strings. + +const values = [3, 1, 4, 1, 5]; +const words = ["alpha", "beta"]; +const flags = [true, false]; +const holey: number[] = []; +holey[3] = 7; + +function show(v: unknown): string { + return Object.is(v, -0) ? "-0" : String(v); +} + +function line(label: string, parts: unknown[]): void { + console.log(label.padEnd(10), parts.map(show).join(" ")); +} + +for (const k of [0, 4, 5, -1, 1.5, 100]) { + line(`k=${k}`, [ + values[k]! + 1, + values[k]! * 2, + -values[k]!, + values[k]! | 0, + values[k]! < 3, + values[k]! >= 1, + values[k]! === 1, + values[k]! !== 1, + `${values[k]!}`, + "v=" + values[k]!, + Math.max(values[k]!, 0), + words[k]! + "!", + `<${words[k]!}>`, + words[k]! < "b", + !flags[k]!, + ]); +} + +line("holes", [holey[0]! + 1, holey[3]! + 1, `${holey[1]!}`, holey[2]! === undefined, holey[9]! > 0]); + +// `+` with an untyped partner concatenates or adds when it runs. +const untypedText: any = "x"; +const untypedNumber: any = 5; +for (const k of [1, 9]) { + line(`untyped ${k}`, [ + values[k]! + untypedText, + untypedText + values[k]!, + values[k]! + untypedNumber, + words[k]! + untypedNumber, + words[k]! + untypedText, + ]); +} + +let sum = 0; +let text = ""; +for (let i = 0; i <= values.length; i++) { + sum += values[i]!; + text += words[i % 3]!; + text += ","; +} +line("compound", [sum, text]); + +// A counter array: an index past the end reads NaN, and the store widens +// the array to doubles. +function counter(n: number, m: number): number[] { + const a = new Array(n).fill(0) as number[]; + for (let i = 0; i < 6000; i++) a[i % m] = a[i % m]! + 1; + return [a[0]!, a[m - 1]!, a.length, a[n + 1]! + 0]; +} +line("counter", counter(5000, 5000)); +line("past", counter(5000, 5003)); +line("zero", counter(4, 0)); + +const grid = [ + [1, 2], + [3, 4], +]; +let total = 0; +for (let r = 0; r < 3; r++) for (let c = 0; c < 3; c++) total += grid[r % 2]![c]! * 1; +line("grid", [total]); diff --git a/tests/corpus/7395-non-null-element-dereference.ts b/tests/corpus/7395-non-null-element-dereference.ts new file mode 100644 index 000000000..fdae23796 --- /dev/null +++ b/tests/corpus/7395-non-null-element-dereference.ts @@ -0,0 +1,71 @@ +// Member reads and writes through non-null asserted array element reads. +// `!` performs no runtime check: a missing element is undefined, so the +// member access throws Node's TypeError, which the program can catch. + +class Cell { + count = 0; + label: string; + constructor(label: string) { + this.label = label; + } + bump(): number { + return ++this.count; + } +} + +function cell(label: string): Cell { + return new Cell(label); +} + +const cells = [cell("a"), cell("b")]; +const words = ["alpha", "beta"]; +const grid = [ + [1, 2], + [3, 4], +]; +const maps = [new Map([["x", 1]])]; +const holey: Cell[] = []; +holey[2] = cell("z"); +let reads = 0; +function at(n: number): number { + reads++; + return n; +} + +function attempt(label: string, f: () => unknown): void { + try { + console.log(label.padEnd(12), "ok", f()); + } catch (e) { + const error = e as Error; + console.log(label.padEnd(12), error instanceof TypeError, error.message); + } +} + +for (const k of [0, 1, 2, -1]) { + attempt(`label ${k}`, () => cells[k]!.label); + attempt(`bump ${k}`, () => cells[k]!.bump()); + attempt(`set ${k}`, () => (cells[k]!.label = "set")); + attempt(`count++ ${k}`, () => cells[k]!.count++); + attempt(`length ${k}`, () => words[k]!.length); + attempt(`upper ${k}`, () => words[k]!.toUpperCase()); + attempt(`grid ${k}`, () => grid[k]![0]); + attempt(`row ${k}`, () => { + const j = 1; + return grid[k]![j]; + }); + attempt(`push ${k}`, () => grid[k]!.push(9)); + attempt(`map ${k}`, () => maps[k]!.get("x")); +} + +attempt("hole", () => holey[0]!.label); +attempt("hole value", () => holey[2]!.label); +attempt("order", () => cells[at(7)]!.count + at(1)); +console.log("reads", reads); + +let total = 0; +try { + for (let i = 0; i < 4; i++) total += grid[i]![0]!; +} catch (e) { + console.log("loop", (e as Error).message, total); +} +console.log(cells.map((c) => `${c.label}:${c.count}`).join(" ")); diff --git a/tests/harness/corpus-costs/7393-non-null-element-operands.ts.json b/tests/harness/corpus-costs/7393-non-null-element-operands.ts.json new file mode 100644 index 000000000..e053c13c8 --- /dev/null +++ b/tests/harness/corpus-costs/7393-non-null-element-operands.ts.json @@ -0,0 +1 @@ +{ "plain": 3000, "san": 3800 } diff --git a/tests/harness/corpus-costs/7395-non-null-element-dereference.ts.json b/tests/harness/corpus-costs/7395-non-null-element-dereference.ts.json new file mode 100644 index 000000000..e0d5a6a6d --- /dev/null +++ b/tests/harness/corpus-costs/7395-non-null-element-dereference.ts.json @@ -0,0 +1 @@ +{ "plain": 3585, "san": 5768 } From fe244085d43b5cb8b307b0f0a6ba324df001ec0d Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 07:28:50 -0500 Subject: [PATCH 04/52] Run native async generators as stackless coroutines An async generator whose body suspends only at its own awaits and yields now compiles to an LLVM switched coroutine, as async functions of that kind already do, instead of running on a fiber with its own stack. Its steps run on the stack that resumes it (the loop's after an await), its awaits suspend through scr_coro_await_prepare and scr_coro_hop_prepare, and its yields store OUT through scr_coro_yield_* before suspending. - scr_async_gen_new_stackless creates the generator. The stackless hop settles an async generator's state as the fiber hop does, and a step that would start below the stack guard throws a RangeError, which rejects its request. - Calling an async generator's next, return or throw no longer counts as parking the caller: they queue a request and run the body to its next suspension, which returns to the caller. Bodies that consume async generators can now be stackless too. - An untyped await (async.awaitDyn) has a native coroutine form, extracted by scr_coro_await_dyn_value, so async bodies that await untyped values can be stackless. - An async generator's return through a finally region takes its await turn through the coroutine when the body is one. Debug builds, libraries, worker programs and Windows executables keep fibers, as for stackless async functions. --- docs/content/docs/how-it-works.mdx | 2 +- .../array-bounds-and-runtime-errors.mdx | 2 +- .../src/backend/llvm/emit-function.ts | 7 +- .../src/backend/llvm/emit-statements.ts | 2 +- packages/compiler/src/backend/llvm/emitter.ts | 77 +++++--- .../compiler/src/backend/llvm/lib-dispatch.ts | 11 +- .../compiler/test/await-call-emission.test.ts | 32 ++-- .../compiler/test/generator-emission.test.ts | 42 ++++- ...2-stackless-async-generator-steps.mjs.json | 6 + ...83-stackless-async-generator-steps.ts.json | 6 + packages/runtime/src/scr_async.c | 45 ++++- packages/runtime/src/scr_async.h | 3 + packages/runtime/src/scr_async_dyn.c | 13 ++ packages/runtime/src/scr_generator.h | 8 + .../8382-stackless-async-generator-steps.mjs | 172 ++++++++++++++++++ .../8383-stackless-async-generator-steps.ts | 99 ++++++++++ 16 files changed, 465 insertions(+), 62 deletions(-) create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8382-stackless-async-generator-steps.mjs.json create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8383-stackless-async-generator-steps.ts.json create mode 100644 tests/corpus/8382-stackless-async-generator-steps.mjs create mode 100644 tests/corpus/8383-stackless-async-generator-steps.ts diff --git a/docs/content/docs/how-it-works.mdx b/docs/content/docs/how-it-works.mdx index a6520b46e..014b49ece 100644 --- a/docs/content/docs/how-it-works.mdx +++ b/docs/content/docs/how-it-works.mdx @@ -135,7 +135,7 @@ Program objects define `main` and leave selected `scr_*` runtime functions undef ## Native runtime - **Memory:** Values use reference counting. Acyclic values are freed when their last reference is released, and a cycle collector runs at defined collection points. Some cycles involving opaque native values can remain allocated. When the main thread's script ends, the process exits without freeing what the program still holds, and the operating system reclaims it; worker threads free their heaps when they exit. Builds with `--sanitize`, and processes run with `SCRIPTC_EXIT_FREE=1` (for external leak checkers), free everything at exit. -- **Concurrency:** An `async` function that suspends only at its own `await` expressions compiles to a stackless coroutine whose heap frame holds the values live across those awaits; other suspending `async` functions and async generators use stackful fibers. The native event loop schedules microtasks, timers, and I/O, using kqueue on macOS and epoll on Linux. +- **Concurrency:** An `async` function or async generator that suspends only at its own `await` and `yield` expressions compiles to a stackless coroutine whose heap frame holds the values live across them; other suspending `async` functions and async generators use stackful fibers, as do debug builds, libraries, worker programs and Windows executables. The native event loop schedules microtasks, timers, and I/O, using kqueue on macOS and epoll on Linux. - **Networking:** Supported `net`, `http`, `https`, `tls`, `dgram`, and `dns` APIs use native implementations. TLS uses vendored mbedTLS. - **Numbers:** Values use JavaScript's double-precision representation. Number-to-string formatting uses shortest-roundtrip output and is tested against Node.js. - **Regular expressions and Unicode:** The runtime uses QuickJS's regular-expression and Unicode libraries, linked into programs that use them. diff --git a/docs/content/limitations/array-bounds-and-runtime-errors.mdx b/docs/content/limitations/array-bounds-and-runtime-errors.mdx index 7490a1e15..082dd37f3 100644 --- a/docs/content/limitations/array-bounds-and-runtime-errors.mdx +++ b/docs/content/limitations/array-bounds-and-runtime-errors.mdx @@ -11,6 +11,6 @@ Runtime traps cannot be caught. User-thrown values and supported exceptions, including JSON parse, checked-cast, filesystem, regex, and `String.prototype.repeat` count errors, can be caught; hard traps such as out-of-range reads of statically typed ordinary arrays terminate the process. Deep recursion in Linux and macOS executables throws Node's catchable `RangeError: Maximum call stack size exceeded`, on the main thread, in worker threads, and inside async functions and generators. -The depth at which it is thrown differs from Node: the main thread uses the process stack limit (usually 8 MiB), worker threads get an 8 MiB stack, and async functions and generators run on 512 KiB stacks, so native code usually recurses deeper than Node on threads and somewhat less deeply inside async bodies. +The depth at which it is thrown differs from Node: the main thread uses the process stack limit (usually 8 MiB), worker threads get an 8 MiB stack, async functions and generators that keep a fiber run on 512 KiB stacks, and stackless ones run on the stack that resumes them, so native code usually recurses deeper than Node on threads and somewhat less deeply inside fiber bodies. Recursion inside runtime library operations, such as serializing deeply nested data, is not checked. Windows executables, WASI builds and library builds do not check the stack, and exhausting it there terminates the process. diff --git a/packages/compiler/src/backend/llvm/emit-function.ts b/packages/compiler/src/backend/llvm/emit-function.ts index 24e1d06a3..1329e48c9 100644 --- a/packages/compiler/src/backend/llvm/emit-function.ts +++ b/packages/compiler/src/backend/llvm/emit-function.ts @@ -338,6 +338,7 @@ export function emitFunction(emitter: LlEmitter, fn: IrFunction): string { } emitter.currentCoro = { kind: fn.generator !== undefined ? "generator" : "async", + awaits: fn.async === true, id, handle, self, @@ -862,10 +863,14 @@ export function emitGenScaffolding(emitter: LlEmitter): string[] { ]; const genNew = coroBody && !emitter.wasi ? "scr_gen_new_stackless" : "scr_gen_new"; if (genNew !== "scr_gen_new") emitter.declare(`declare ptr @${genNew}(ptr, ptr, ptr)`); + const asyncGenNew = + coroBody && !emitter.wasi ? "scr_async_gen_new_stackless" : "scr_async_gen_new"; + if (settleAsync !== null && asyncGenNew !== "scr_async_gen_new") + emitter.declare(`declare ptr @${asyncGenNew}(ptr, ptr, ptr, ptr)`); sp.push( settleAsync === null ? ` %gg = call ptr @${genNew}(ptr @${mangleTrampoline(fn.name)}, ptr %ap, ptr @${mangleGenDrop(fn.name)})` - : ` %gg = call ptr @scr_async_gen_new(ptr @${mangleTrampoline(fn.name)}, ptr %ap, ptr @${mangleGenDrop(fn.name)}, ptr @${settleAsync})`, + : ` %gg = call ptr @${asyncGenNew}(ptr @${mangleTrampoline(fn.name)}, ptr %ap, ptr @${mangleGenDrop(fn.name)}, ptr @${settleAsync})`, ...(fn.generator.tag !== undefined ? [` call void @scr_gen_set_tag(ptr %gg, ptr ${emitter.cstr(fn.generator.tag)})`] : []), diff --git a/packages/compiler/src/backend/llvm/emit-statements.ts b/packages/compiler/src/backend/llvm/emit-statements.ts index c1f3cf18f..19ef10241 100644 --- a/packages/compiler/src/backend/llvm/emit-statements.ts +++ b/packages/compiler/src/backend/llvm/emit-statements.ts @@ -1662,7 +1662,7 @@ export function emitStmtBody(emitter: LlEmitter, s: IrStmt): void { B.line(`call void @scr_async_gen_return_awaits()`); } if (emitter.currentAsyncGenerator && s.awaited !== true && emitter.finallyStack.length > 0) { - if (emitter.wasi) emitter.emitWasiSuspend(null); + if (emitter.coroAwait) emitter.emitCoroAwait(null); else { emitter.declare(`declare void @scr_await_hop()`); B.line(`call void @scr_await_hop()`); diff --git a/packages/compiler/src/backend/llvm/emitter.ts b/packages/compiler/src/backend/llvm/emitter.ts index 8118fe7d7..8b32a2bda 100644 --- a/packages/compiler/src/backend/llvm/emitter.ts +++ b/packages/compiler/src/backend/llvm/emitter.ts @@ -840,16 +840,23 @@ function isIdentifierByte(code: number): boolean { } /** Runtime entry points (and await-call entries) that may park the running - * execution context, as they appear in emitted function text. */ + * execution context, as they appear in emitted function text. An async + * generator's next, return and throw only queue a request and run its body + * to its next suspension, which returns to the caller, and the body's own + * bookkeeping calls do not suspend it. */ export const SUSPENDS = - /@(?:scr_(?:await_|module_await\b|promise_await_settled\b|test_sub\b|gen_yield_|async_gen_|fiber_)|sc_a[wd]_)/; + /@(?:scr_(?:await_|module_await\b|promise_await_settled\b|test_sub\b|gen_yield_|async_gen_(?!new\b|next_|return_|throw\b|hop_done\b)|fiber_)|sc_a[wd]_)/; /** The suspensions of a fiber body's own awaits, which its stackless * coroutine form suspends itself at instead. */ -const AWAIT_SUSPENSIONS = /@(?:scr_await_(?:void|f64|bool|str|ref|hop)\b|sc_a[wd]_[A-Za-z0-9_]+)/g; +const AWAIT_SUSPENSIONS = + /@(?:scr_await_(?:void|f64|bool|str|ref|hop|dyn_value)\b|sc_a[wd]_[A-Za-z0-9_]+)/g; +/** The suspensions of a fiber generator body's own yields, which its + * coroutine form also suspends itself at. */ +const YIELD_SUSPENSIONS = /@scr_(?:gen_yield_(?:f64|bool|ref))\b/g; /** SUSPENDS in a stackless coroutine body, whose frame bookkeeping reads its * own fiber and promise. */ const COROUTINE_SUSPENDS = - /@(?:scr_(?:await_|module_await\b|promise_await_settled\b|test_sub\b|gen_yield_|async_gen_|fiber_(?!self\b|promise\b))|sc_a[wd]_)/; + /@(?:scr_(?:await_|module_await\b|promise_await_settled\b|test_sub\b|gen_yield_|async_gen_(?!new\b|next_|return_|throw\b|hop_done\b)|fiber_(?!self\b|promise\b))|sc_a[wd]_)/; /** Captured bindings (boxes a body declares or receives) from which a * function compiles without LLVM optimization (see boxSlotCount). */ export const UNOPTIMIZED_BOX_SLOTS = 512; @@ -1271,11 +1278,13 @@ export class LlEmitter { * generator stacks) and so do debug builds (the debugger reads locals * from the native frame). */ private stacklessGenerators = false; - /** Async bodies that suspend only at their own awaits compile to the same - * switched coroutines on native targets (selectStacklessAsync), under the - * generators' conditions; library and Windows builds keep fibers. */ + /** Async bodies that suspend only at their own awaits (and an async + * generator's yields) compile to the same switched coroutines on native + * targets (selectStacklessAsync), under the generators' conditions; + * library and Windows builds keep fibers. */ private stacklessAsyncAllowed = false; - /** The async functions selectStacklessAsync lowered as coroutines. */ + /** The async functions and async generators selectStacklessAsync lowered + * as coroutines. */ readonly stacklessAsync = new Set(); /** Some function in the module is lowered as a coroutine. */ usesCoroutines = false; @@ -1898,9 +1907,12 @@ export class LlEmitter { currentUnionResult = false; /** Active only while emitting a body lowered with LLVM's * switched-coroutine intrinsics (wasm32 async bodies and generators, - * native synchronous generators; see coroLowered). */ + * native synchronous generators, and the native async bodies + * selectStacklessAsync chose; see coroLowered). */ currentCoro: { kind: "async" | "generator"; + /** The body awaits: an async function or an async generator. */ + awaits: boolean; id: string; handle: string; self: string; @@ -2708,19 +2720,21 @@ export class LlEmitter { } } - /** Chooses the native async functions whose bodies compile to switched - * coroutines instead of running on a fiber: a suspended call then keeps a - * heap frame of the values live across its awaits rather than a fiber and - * its stack. A body qualifies when its only suspension points are its own - * awaits, which the coroutine form suspends itself at (emitCoroAwait), so - * nothing it runs can park the stack it borrows. It is first emitted as - * usual: that text may suspend only through await runtime calls and - * await-call entries, which the coroutine form replaces, and may call no - * function that parks. The coroutine form is then emitted and must pass - * the same test with no exceptions (its frame bookkeeping excepted); - * otherwise the fiber form stays. Bodies that never suspend stay - * fiberless, and module evaluation bodies and `dyn` results keep fibers - * as they do there. The runtime traps if a stackless body ever parks. */ + /** Chooses the native async functions and async generators whose bodies + * compile to switched coroutines instead of running on a fiber: a + * suspended call then keeps a heap frame of the values live across its + * awaits and yields rather than a fiber and its stack. A body qualifies + * when its only suspension points are its own awaits and yields, which + * the coroutine form suspends itself at (emitCoroAwait, + * emitCoroSuspendPrepared), so nothing it runs can park the stack it + * borrows. It is first emitted as usual: that text may suspend only + * through await and yield runtime calls and await-call entries, which the + * coroutine form replaces, and may call no function that parks. The + * coroutine form is then emitted and must pass the same test with no + * exceptions (its frame bookkeeping excepted); otherwise the fiber form + * stays. Bodies that never suspend stay fiberless, and module evaluation + * bodies and async functions with `dyn` results keep fibers as they do + * there. The runtime traps if a stackless body ever parks. */ selectStacklessAsync(fnDefs: string[]): void { if (!this.stacklessAsyncAllowed) return; const parks = this.parkingFunctions(); @@ -2735,11 +2749,16 @@ export class LlEmitter { return true; }; this.mod.functions.forEach((fn, index) => { - if (fn.async !== true || fn.generator !== undefined) return; + if (fn.async !== true) return; if (fn.asyncCacheGlobal !== undefined || fn.asyncCycleCacheGlobal !== undefined) return; - if (fn.returnType.kind === "dyn" || !parks.has(fn.name)) return; - const fiberText = fnDefs[index]!; - if (!qualifies(fn, fiberText.replace(AWAIT_SUSPENSIONS, ""), SUSPENDS)) return; + // A dyn result may adopt a thenable when it settles the promise; an + // async generator's completion value settles its request's record. + if (fn.generator === undefined && fn.returnType.kind === "dyn") return; + if (!parks.has(fn.name)) return; + // An async generator's body also suspends at its own yields. + let fiberText = fnDefs[index]!.replace(AWAIT_SUSPENSIONS, ""); + if (fn.generator !== undefined) fiberText = fiberText.replace(YIELD_SUSPENSIONS, ""); + if (!qualifies(fn, fiberText, SUSPENDS)) return; this.stacklessAsync.add(fn.name); const coroText = this.emitFunction(fn); if (!qualifies(fn, coroText, COROUTINE_SUSPENDS)) { @@ -3152,7 +3171,7 @@ export class LlEmitter { * native async bodies selectStacklessAsync chose. */ coroLowered(fn: IrFunction): boolean { if (this.wasi) return fn.async === true || fn.generator !== undefined; - if (fn.async === true) return fn.generator === undefined && this.stacklessAsync.has(fn.name); + if (fn.async === true) return this.stacklessAsync.has(fn.name); return this.stacklessGenerators && fn.generator !== undefined; } emitGenScaffolding(): string[] { @@ -5207,7 +5226,7 @@ export class LlEmitter { /** Awaits in the current body suspend its coroutine: every wasm32 async * body, and native stackless async bodies (selectStacklessAsync). */ get coroAwait(): boolean { - return this.wasi || this.currentCoro?.kind === "async"; + return this.wasi || this.currentCoro?.awaits === true; } /** Suspends the current coroutine body at an await of `promise` (null: a @@ -5246,7 +5265,7 @@ export class LlEmitter { * coroutine has already suspended until the promise settled, so its * extraction takes no further turn. */ awaitResultFn(kind: "void" | "f64" | "bool" | "str" | "ref"): string { - return !this.wasi && this.currentCoro?.kind === "async" + return !this.wasi && this.currentCoro?.awaits === true ? `scr_coro_await_${kind}` : `scr_await_${kind}`; } diff --git a/packages/compiler/src/backend/llvm/lib-dispatch.ts b/packages/compiler/src/backend/llvm/lib-dispatch.ts index f2ca89fd8..ee2ee154b 100644 --- a/packages/compiler/src/backend/llvm/lib-dispatch.ts +++ b/packages/compiler/src/backend/llvm/lib-dispatch.ts @@ -218,7 +218,7 @@ export function emitGenericLibCall(host: LlvmEmitterContext, e: LibCallExpr): Ll host.emitCoroAwait(null); return { name: "", type: e.type }; } - if (host.wasi && e.fn === "async.awaitDyn") { + if (host.coroAwait && e.fn === "async.awaitDyn") { const value = host.emitExpr(e.args[0]!); host.declare(`declare ptr @scr_dyn_promise_of(ptr)`); const promise = B.tmp(); @@ -230,15 +230,16 @@ export function emitGenericLibCall(host: LlvmEmitterContext, e: LibCallExpr): Ll B.line(`${isPromise} = icmp ne ptr ${promise}, null`); B.condBr(isPromise, wait, hop); B.startBlock(wait); - host.emitWasiSuspend(promise); + host.emitCoroAwait(promise); B.br(ready); B.startBlock(hop); - host.emitWasiSuspend(null); + host.emitCoroAwait(null); B.br(ready); B.startBlock(ready); - host.declare(`declare ptr @scr_await_dyn_value_settled(ptr)`); + const extract = host.wasi ? "scr_await_dyn_value_settled" : "scr_coro_await_dyn_value"; + host.declare(`declare ptr @${extract}(ptr)`); const result = B.tmp(); - B.line(`${result} = call ptr @scr_await_dyn_value_settled(ptr ${value.name})`); + B.line(`${result} = call ptr @${extract}(ptr ${value.name})`); const output = host.own({ name: result, type: e.type }); host.emitPendingCheck(); return output; diff --git a/packages/compiler/test/await-call-emission.test.ts b/packages/compiler/test/await-call-emission.test.ts index 5a967cc5f..cb575e97c 100644 --- a/packages/compiler/test/await-call-emission.test.ts +++ b/packages/compiler/test/await-call-emission.test.ts @@ -9,13 +9,19 @@ afterEach(async () => { await Promise.all(directories.splice(0).map((dir) => rm(dir, { recursive: true, force: true }))); }); -async function emit(source: string): Promise { +async function emit(source: string, optimization?: "dev"): Promise { const outDir = await mkdtemp(join(tmpdir(), "scriptc-await-call-")); directories.push(outDir); const entry = join(outDir, "main.ts"); await writeFile(entry, source); const outPath = join(outDir, "program.ll"); - const result = await compile(entry, { entry, outDir, outPath, outputKind: "llvm" }); + const result = await compile(entry, { + entry, + outDir, + outPath, + outputKind: "llvm", + ...(optimization !== undefined ? { optimization } : {}), + }); expect(result.ok, JSON.stringify(result)).toBe(true); return readFile(outPath, "utf8"); } @@ -28,8 +34,9 @@ function definition(llvm: string, symbol: string): string { return match![0]; } -// Consuming an async generator keeps a body on its fiber: the await-call -// entries serve fiber bodies (stackless bodies suspend at their awaits). +// The await-call entries serve fiber bodies (stackless bodies suspend at +// their awaits). Debug builds keep every async body on its fiber, so the +// sources below that test them build with optimization "dev". const tick = ` async function* tick(): AsyncGenerator { yield 0; @@ -58,7 +65,7 @@ void main(); `; test("awaiting a direct call to a body that never suspends skips the promise", async () => { - const llvm = await emit(source); + const llvm = await emit(source, "dev"); expect(definition(llvm, "sc_f_middle")).toContain("call double @sc_aw_leaf(double"); const entry = definition(llvm, "sc_aw_leaf"); expect(entry).toContain("call double @sc_f_leaf(double %a0)"); @@ -74,7 +81,7 @@ test("awaiting a direct call to a body that never suspends skips the promise", a }); test("awaiting a direct call to a suspending body spawns and awaits in one call", async () => { - const llvm = await emit(source); + const llvm = await emit(source, "dev"); const main = definition(llvm, "sc_f_main"); expect(main).toContain("call double @sc_aw_middle(double"); // A call whose promise is kept keeps the promise-returning entry. @@ -82,7 +89,7 @@ test("awaiting a direct call to a suspending body spawns and awaits in one call" expect(definition(llvm, "sc_aw_middle")).toContain( "call double @scr_async_spawn_await_f64(ptr @sc_tr_middle, ptr %ap)", ); - // middle consumes an async generator, so it keeps its fiber. + // The debug build keeps middle on its fiber. expect(definition(llvm, "sc_as_middle")).toContain("@scr_async_spawn("); }); @@ -119,7 +126,7 @@ void main(); `; test("returning a direct call adopts its promise one microtask turn later", async () => { - const llvm = await emit(adoptSource); + const llvm = await emit(adoptSource, "dev"); expect(definition(llvm, "sc_f_relay")).toContain("call double @sc_ad_leaf(double"); // A body that never suspends: the adoption's then-job turn, then the // settled promise's own turn, still without materializing the promise. @@ -141,7 +148,7 @@ test("returning a direct call adopts its promise one microtask turn later", asyn }); test("a returned promise is adopted after finally regions, outside catch handlers", async () => { - const llvm = await emit(adoptSource); + const llvm = await emit(adoptSource, "dev"); const guarded = definition(llvm, "sc_f_guarded"); // The call produces the promise; the finally body runs; only then the // adoption turn and the await. @@ -167,7 +174,7 @@ async function middle(x: number): Promise { const z = await leaf(y); return y * 2 + z; } -async function fibered(): Promise { +async function fibered(): Promise { let s = 0; for await (const t of tick()) s += t; return s + (await middle(1)); @@ -206,8 +213,9 @@ test("bodies that suspend only at their own awaits compile to stackless coroutin expect(middle).not.toContain("@scr_await_f64("); expect(definition(llvm, "sc_as_middle")).toContain("@scr_async_spawn_stackless("); expect(definition(llvm, "sc_f_main")).toContain("@scr_coro_await_prepare("); - // A body that keeps its fiber still awaits a stackless callee in one - // call: spawn, then the ordinary await of its promise. + // A body with a dynamic result keeps its fiber, and still awaits a + // stackless callee in one call: spawn, then the ordinary await of its + // promise. expect(definition(llvm, "sc_as_fibered")).toContain("@scr_async_spawn("); expect(definition(llvm, "sc_f_fibered")).toContain("call double @sc_aw_middle(double"); const entry = definition(llvm, "sc_aw_middle"); diff --git a/packages/compiler/test/generator-emission.test.ts b/packages/compiler/test/generator-emission.test.ts index 47e5f16c5..6601813bd 100644 --- a/packages/compiler/test/generator-emission.test.ts +++ b/packages/compiler/test/generator-emission.test.ts @@ -9,13 +9,19 @@ afterEach(async () => { await Promise.all(directories.splice(0).map((dir) => rm(dir, { recursive: true, force: true }))); }); -async function emit(source: string): Promise { +async function emit(source: string, optimization?: "dev"): Promise { const outDir = await mkdtemp(join(tmpdir(), "scriptc-generator-")); directories.push(outDir); const entry = join(outDir, "main.ts"); await writeFile(entry, source); const outPath = join(outDir, "program.ll"); - const result = await compile(entry, { entry, outDir, outPath, outputKind: "llvm" }); + const result = await compile(entry, { + entry, + outDir, + outPath, + outputKind: "llvm", + ...(optimization !== undefined ? { optimization } : {}), + }); expect(result.ok, JSON.stringify(result)).toBe(true); return readFile(outPath, "utf8"); } @@ -117,7 +123,7 @@ console.log(sum, r.value); expect(llvm).toMatch(/define internal ptr @sc_gres_\d+\(ptr %g\)[^\n]*\(dyn channel\)/); }); -test("async generators keep their fibers", async () => { +test("async generators that suspend only at their own awaits and yields compile to stackless coroutines", async () => { const llvm = await emit(` async function* ticks(n: number): AsyncGenerator { for (let i = 0; i < n; i++) { @@ -130,6 +136,36 @@ async function main(): Promise { } void main(); `); + const body = definition(llvm, "sc_f_ticks"); + expect(body).toMatch(/^define internal void @sc_f_ticks(?:\.i32)?\(double [^)]*\) #1 /); + // The await suspends the coroutine (one turn for a non-promise operand), + // and the yield stores OUT before its own suspension. + expect(body).toContain("call zeroext i1 @scr_coro_hop_prepare(ptr"); + expect(body).toContain("call void @scr_coro_yield_f64(ptr"); + expect(body).toContain("call void @scr_gen_coro_finish(ptr"); + expect(body).not.toContain("@scr_await_hop("); + expect(body).not.toContain("@scr_gen_yield_f64("); + expect(definition(llvm, "sc_gs_ticks")).toContain("call ptr @scr_async_gen_new_stackless("); + // Consuming the generator does not park its consumer. + expect(definition(llvm, "sc_as_main")).toContain("@scr_async_spawn_stackless("); +}); + +test("debug builds keep async generators on their fibers", async () => { + const llvm = await emit( + ` +async function* ticks(n: number): AsyncGenerator { + for (let i = 0; i < n; i++) { + await null; + yield i; + } +} +async function main(): Promise { + for await (const t of ticks(3)) console.log(t); +} +void main(); +`, + "dev", + ); expect(definition(llvm, "sc_gs_ticks")).toContain("call ptr @scr_async_gen_new("); expect(llvm).not.toContain("presplitcoroutine"); }); diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8382-stackless-async-generator-steps.mjs.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8382-stackless-async-generator-steps.mjs.json new file mode 100644 index 000000000..aa47502ae --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8382-stackless-async-generator-steps.mjs.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/8382-stackless-async-generator-steps.mjs" + ], + "diags": [] +} diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8383-stackless-async-generator-steps.ts.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8383-stackless-async-generator-steps.ts.json new file mode 100644 index 000000000..2c9f5537a --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8383-stackless-async-generator-steps.ts.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/8383-stackless-async-generator-steps.ts" + ], + "diags": [] +} diff --git a/packages/runtime/src/scr_async.c b/packages/runtime/src/scr_async.c index f9c6944c2..49ab8ef2f 100644 --- a/packages/runtime/src/scr_async.c +++ b/packages/runtime/src/scr_async.c @@ -5435,6 +5435,14 @@ ScrGen *scr_async_gen_new(void (*entry)(ScrFiber *, void *), void *argpack, return scr_gen_new_common(entry, argpack, drop_args, settle, false); } +#ifndef __wasi__ +ScrGen *scr_async_gen_new_stackless(void (*entry)(ScrFiber *, void *), void *argpack, + void (*drop_args)(void *), + void (*settle)(ScrGen *, ScrPromise *)) { + return scr_gen_new_common(entry, argpack, drop_args, settle, true); +} +#endif + ScrGen *scr_gen_retain(ScrGen *g) { if (g) g->rc++; return g; @@ -5783,7 +5791,7 @@ void scr_gen_ret_to_out(ScrGen *g) { * settle the generator's state, moving a finished body's exception to the * resumer and tearing the finished fiber down. `release` drops the hop's * own reference (see scr_gen_switch_in); `sync` marks a body known to be a - * synchronous generator (every stackless one is). */ + * synchronous generator. */ __attribute__((always_inline)) static inline void scr_gen_switched_back(ScrGen *g, ScrFiber *f, bool release, bool sync) { if (__builtin_expect(f->done, 0)) { @@ -5820,10 +5828,12 @@ static __attribute__((noinline)) void scr_async_gen_step_end(ScrFiber *f) { scr_ #ifndef __wasi__ /* The stackless form of the hop: the coroutine frame runs on this stack - * until its next yield or its final suspension returns here. `retain` - * holds the generator across the hop; a resumer whose own reference - * provably outlives the hop passes false. */ -__attribute__((always_inline)) static inline void scr_gen_coro_hop(ScrGen *g, bool retain) { + * until its next yield, an async generator's await, or its final + * suspension returns here. `retain` holds the generator across the hop; a + * resumer whose own reference provably outlives the hop passes false. + * `sync` marks a body known to be a synchronous generator. */ +__attribute__((always_inline)) static inline void scr_gen_coro_hop(ScrGen *g, bool retain, + bool sync) { ScrFiber *f = g->fiber; if (retain) scr_gen_retain(g); /* A synchronous generator has no AsyncLocalStorage context of its own: @@ -5848,10 +5858,26 @@ __attribute__((always_inline)) static inline void scr_gen_coro_hop(ScrGen *g, bo scr_exc_swap_cell(me != NULL ? &me->exc : NULL); scr_als_active = resumer_slot; if (g->is_async) scr_async_gen_step_end(f); - scr_gen_switched_back(g, f, retain, true); + scr_gen_switched_back(g, f, retain, sync); } -static void scr_gen_coro_in(ScrGen *g) { scr_gen_coro_hop(g, true); } +/* An async generator's step can resume the next one down a chain of them + * before it suspends, all on one stack, through runtime frames that check + * no guard: a step that would start below the stack guard throws the + * RangeError compiled code throws there, which rejects its request. */ +static __attribute__((noinline)) void scr_async_gen_coro_in(ScrGen *g) { + uintptr_t guard = scr_stack_guard; + if (guard != 0 && (uintptr_t)__builtin_frame_address(0) < guard) { + scr_stack_overflow(); + return; + } + scr_gen_coro_hop(g, true, false); +} + +static void scr_gen_coro_in(ScrGen *g) { + if (g->is_async) scr_async_gen_coro_in(g); + else scr_gen_coro_hop(g, true, true); +} #endif /* The consumer→fiber hop shared by every resume mode: switches in, and on @@ -5947,8 +5973,9 @@ void scr_gen_close(ScrGen *g) { bool scr_gen_step(ScrGen *g) { if (g->in.kind != SCR_EXC_NONE) scr_gen_slot_reset(&g->in); #ifndef __wasi__ - if ((g->state == SCR_GEN_SUSPENDED || g->state == SCR_GEN_UNSTARTED) && g->fiber->stackless) { - scr_gen_coro_hop(g, false); + if ((g->state == SCR_GEN_SUSPENDED || g->state == SCR_GEN_UNSTARTED) && g->fiber->stackless && + !g->is_async) { + scr_gen_coro_hop(g, false, true); return g->state == SCR_GEN_DONE; } #endif diff --git a/packages/runtime/src/scr_async.h b/packages/runtime/src/scr_async.h index e31ba5b1d..d2e16be43 100644 --- a/packages/runtime/src/scr_async.h +++ b/packages/runtime/src/scr_async.h @@ -143,6 +143,9 @@ void scr_promise_rethrow_top_level(ScrPromise *p); * value), or NULL with the rejection re-thrown into the awaiter. */ ScrDyn *scr_await_dyn(ScrPromise *p); ScrDyn *scr_await_dyn_value_settled(ScrDyn *value); +/* The native coroutine form's extraction: the body has already suspended + * until the value's promise settled, or taken the non-promise hop. */ +ScrDyn *scr_coro_await_dyn_value(ScrDyn *value); void scr_promise_resolve_dyn(ScrPromise *destination, ScrDyn *value); /* `await v` over a checked-dynamic VALUE: dyn promises adopt, everything * else takes JS's one-hop non-thenable await and answers itself (+1). */ diff --git a/packages/runtime/src/scr_async_dyn.c b/packages/runtime/src/scr_async_dyn.c index 046aebb38..6e5d9856e 100644 --- a/packages/runtime/src/scr_async_dyn.c +++ b/packages/runtime/src/scr_async_dyn.c @@ -827,6 +827,19 @@ ScrDyn *scr_await_dyn_value_settled(ScrDyn *value) { return value->kind == SCR_DYN_PROMISE ? scr_await_dyn(value->v.promise) : scr_dyn_retain(value); } +static ScrDyn *scr_dyn_promise_payload(ScrPromise *p); + +/* The same for a native stackless body: the suspension has taken the turn + * scr_await_dyn would take, so the extraction takes none. */ +ScrDyn *scr_coro_await_dyn_value(ScrDyn *value) { + if (value->kind != SCR_DYN_PROMISE) return scr_dyn_retain(value); + ScrPromise *p = value->v.promise; + if (!scr_promise_settled_now(p)) + scr_trap("scriptc: internal error: resumed before awaited promise settled\n"); + if (scr_promise_is_rejected(p)) return NULL; + return scr_dyn_promise_payload(p); +} + /* ── process warnings (emitWarning + the 'warning' event) ───────────── * Gated with the rest of this TU (a deprecation-emitting unit's gate * must imply the dynAsync link). Listeners are dyn functions; the diff --git a/packages/runtime/src/scr_generator.h b/packages/runtime/src/scr_generator.h index c73ceb900..cb61d93e4 100644 --- a/packages/runtime/src/scr_generator.h +++ b/packages/runtime/src/scr_generator.h @@ -60,6 +60,14 @@ void scr_gen_coro_finish(ScrFiber *self); ScrGen *scr_async_gen_new(void (*entry)(ScrFiber *, void *), void *argpack, void (*drop_args)(void *), void (*settle)(ScrGen *, ScrPromise *)); +/* An async generator whose body is a switched coroutine, as + * scr_gen_new_stackless's: its steps run on the resumer's stack (the loop's + * after an await), its awaits suspend through scr_coro_await_prepare and + * scr_coro_hop_prepare, and its yields store OUT through scr_coro_yield_*. + * Native targets only. */ +ScrGen *scr_async_gen_new_stackless(void (*entry)(ScrFiber *, void *), void *argpack, + void (*drop_args)(void *), + void (*settle)(ScrGen *, ScrPromise *)); /* Runs when return() reaches the generator before its first resume, with * the packed arguments still alive: an iterator helper closes its source. */ void scr_gen_set_unstarted_return(ScrGen *g, void (*hook)(void *)); diff --git a/tests/corpus/8382-stackless-async-generator-steps.mjs b/tests/corpus/8382-stackless-async-generator-steps.mjs new file mode 100644 index 000000000..507040de0 --- /dev/null +++ b/tests/corpus/8382-stackless-async-generator-steps.mjs @@ -0,0 +1,172 @@ +// Async generators whose bodies suspend only at their own awaits and yields: +// requests queued while the body awaits, return() and throw() at a yield and +// during an await, finally blocks that await, yield* into another async +// generator, awaits of plain values and of settled and pending promises, a +// deep chain of stages, and the microtask order around them. +const log = []; +const tick = (label) => Promise.resolve().then(() => log.push(label)); +const later = (value) => new Promise((resolve) => setTimeout(() => resolve(value), 1)); + +async function* counter(n) { + try { + for (let i = 0; i < n; i++) { + const v = await (i % 2 === 0 ? i : Promise.resolve(i)); + log.push(`yield ${v}`); + yield v; + } + return "done"; + } finally { + log.push("counter finally"); + await later(0); + log.push("counter finally after await"); + } +} + +// Requests queued before the body settles the first one. +{ + const it = counter(3); + const requests = []; + for (let i = 0; i < 5; i++) requests.push(it.next()); + const results = []; + for (const request of requests) results.push(await request); + console.log(JSON.stringify(results)); + console.log(log.splice(0).join(" | ")); +} + +// return() at a yield runs the finally block, which awaits. +{ + const it = counter(5); + console.log(JSON.stringify(await it.next())); + const ret = it.return("early"); + tick("tick after return()"); + console.log(JSON.stringify(await ret)); + console.log(JSON.stringify(await it.next())); + console.log(log.splice(0).join(" | ")); +} + +// return() queued while the body awaits a pending promise. +async function* slow() { + try { + const v = await later(7); + yield v; + yield v + 1; + return "slow done"; + } finally { + log.push("slow finally"); + } +} +{ + const it = slow(); + const first = it.next(); + const ret = it.return("stopped"); + console.log(JSON.stringify(await first), JSON.stringify(await ret)); + console.log(log.splice(0).join(" | ")); +} + +// throw() at a yield, caught by the body, which keeps yielding. +async function* catcher() { + for (let i = 0; ; i++) { + try { + yield i; + } catch (e) { + log.push(`caught ${e}`); + await null; + yield `recovered ${i}`; + return; + } + } +} +{ + const it = catcher(); + console.log(JSON.stringify(await it.next())); + console.log(JSON.stringify(await it.throw("boom"))); + console.log(JSON.stringify(await it.next())); + console.log(log.splice(0).join(" | ")); +} + +// A body that throws after an await rejects its request and completes. +async function* failing() { + yield 1; + await later(0); + throw new Error("failed after await"); +} +{ + const it = failing(); + console.log(JSON.stringify(await it.next())); + try { + await it.next(); + } catch (e) { + console.log("rejected:", e.message); + } + console.log(JSON.stringify(await it.next())); +} + +// yield* into another async generator, and break out of for await. +async function* inner() { + try { + yield "a"; + yield await later("b"); + yield "c"; + } finally { + log.push("inner finally"); + } +} +async function* outer() { + yield "start"; + const r = yield* inner(); + log.push(`inner returned ${r}`); + yield "end"; +} +{ + const seen = []; + for await (const x of outer()) { + seen.push(x); + if (x === "b") break; + } + console.log(seen.join(",")); + console.log(log.splice(0).join(" | ")); +} + +// Stages chained through untyped values, interleaved with a promise chain. +async function* source(n) { + for (let i = 0; i < n; i++) yield i; +} +async function* map(it, f) { + for await (const x of it) yield await f(x); +} +async function* filter(it, p) { + for await (const x of it) if (p(x)) yield x; +} +{ + const order = []; + const chain = (async () => { + for await (const x of filter(map(source(6), async (x) => x * 3), (v) => v % 2 === 0)) order.push(`item ${x}`); + })(); + Promise.resolve() + .then(() => order.push("p1")) + .then(() => order.push("p2")) + .then(() => order.push("p3")); + await chain; + console.log(order.join(" ")); +} + +// A deep chain of pass-through stages. +async function* pass(it) { + for await (const x of it) yield x; +} +function stack(depth) { + return depth === 0 ? source(4) : pass(stack(depth - 1)); +} +{ + let sum = 0; + for await (const x of stack(500)) sum += x; + console.log("deep sum", sum); +} + +// Generator objects keep their tag and protocol. +{ + const g = counter(1); + console.log(Object.prototype.toString.call(g)); + console.log(JSON.stringify(await g.next()), JSON.stringify(await g.next())); + log.splice(0); +} diff --git a/tests/corpus/8383-stackless-async-generator-steps.ts b/tests/corpus/8383-stackless-async-generator-steps.ts new file mode 100644 index 000000000..f07e1d0f7 --- /dev/null +++ b/tests/corpus/8383-stackless-async-generator-steps.ts @@ -0,0 +1,99 @@ +// Typed async generators whose bodies suspend only at their own awaits and +// yields: number, string and object channels, values passed into next(), +// return() and throw() while the body awaits, finally blocks that await, +// yield* delegation, and an async function consuming them. +const log: string[] = []; +const later = (value: T): Promise => new Promise((resolve) => setTimeout(() => resolve(value), 1)); + +async function* numbers(n: number): AsyncGenerator { + try { + for (let i = 0; i < n; i++) { + yield i % 2 === 0 ? i : await later(i); + } + return "numbers done"; + } finally { + await later(0); + log.push("numbers finally"); + } +} + +async function* accumulate(): AsyncGenerator { + let total = 0; + for (;;) { + const v = yield total; + if (v < 0) return total; + total += await Promise.resolve(v); + } +} + +interface Point { + x: number; + y: number; +} +async function* points(n: number): AsyncGenerator { + for (let i = 0; i < n; i++) { + await null; + yield { x: i, y: i * i }; + } +} + +async function* labels(): AsyncGenerator { + yield "first"; + yield* (async function* () { + yield "inner one"; + yield await later("inner two"); + })(); + yield "last"; +} + +async function sum(it: AsyncGenerator): Promise { + let s = 0; + for await (const v of it) s += v; + return s; +} + +async function main(): Promise { + console.log("sum", await sum(numbers(6))); + console.log(log.splice(0).join(" | ")); + + const acc = accumulate(); + console.log(JSON.stringify(await acc.next(0))); + for (const v of [1, 2, 3]) console.log(JSON.stringify(await acc.next(v))); + console.log(JSON.stringify(await acc.next(-1))); + console.log(JSON.stringify(await acc.next(5))); + + for await (const p of points(3)) console.log(p.x, p.y); + + const words: string[] = []; + for await (const w of labels()) words.push(w); + console.log(words.join(", ")); + + const it = numbers(10); + console.log(JSON.stringify(await it.next())); + const pending = it.next(); + const ret = it.return("returned"); + console.log(JSON.stringify(await pending), JSON.stringify(await ret)); + console.log(log.splice(0).join(" | ")); + + const thrower = numbers(4); + await thrower.next(); + try { + await thrower.throw(new Error("thrown in")); + } catch (e) { + console.log("rejected:", (e as Error).message); + } + console.log(JSON.stringify(await thrower.next())); + console.log(log.splice(0).join(" | ")); + + const order: string[] = []; + const run = (async () => { + for await (const v of numbers(3)) order.push(`v${v}`); + })(); + void Promise.resolve() + .then(() => order.push("m1")) + .then(() => order.push("m2")); + await run; + console.log(order.join(" ")); + log.splice(0); +} +await main(); From 7ac0542aa98abd4a33a32b4679f95dbfa3bb431b Mon Sep 17 00:00:00 2001 From: Malte Ubl Date: Mon, 26 Oct 2026 05:39:34 -0700 Subject: [PATCH 05/52] Read ordinary objects' properties through accessors outside the object core Runtime units outside the object core (scr_json.c, scr_js_object.c) read and adjusted SCR_DYN_OBJ entries in place: v.obj.len, v.obj.entries[i] and the 48-byte ScrDynEntry fields. The single object model's generic objects (stage S3) change that storage, so these units now go through own-property accessors in scr_dyn.h: - scr_dyn_obj_count, scr_dyn_obj_key_at, scr_dyn_obj_value_at and scr_dyn_obj_prop_at (a ScrDynProp view: key, value, getter, setter and attributes) walk the properties in creation order; - scr_dyn_obj_index_of finds one by key; - scr_dyn_obj_set_attrs_at restricts a member a builtin object just added; - scr_dyn_own_symbol_prop and scr_dyn_copy_prop_at wrap the symbol-entry and copy primitives. The accessors are inline over today's entries, so behavior is unchanged. 21 units move (inspect, assert, util compare, console, http, http2, fetch, tls, fs, os, lib, array, message, publish, region, symbol, worker events, handle properties, builtin values, declaration adoption). A package test keeps entry storage reads inside the core. Co-Authored-By: Claude Opus 5.5 --- packages/runtime/src/scr_array.c | 42 +++-- packages/runtime/src/scr_assert.c | 111 ++++++----- packages/runtime/src/scr_builtin_values.c | 3 +- packages/runtime/src/scr_bytes_io.c | 10 +- packages/runtime/src/scr_console_native.c | 30 ++- packages/runtime/src/scr_decl_adopt.c | 8 +- packages/runtime/src/scr_dyn.h | 75 ++++++++ packages/runtime/src/scr_dyn_handle_props.c | 27 +-- packages/runtime/src/scr_fetch.c | 58 +++--- packages/runtime/src/scr_http.c | 32 ++-- packages/runtime/src/scr_http2.c | 16 +- packages/runtime/src/scr_inspect.c | 197 +++++++++++--------- packages/runtime/src/scr_lib.c | 32 ++-- packages/runtime/src/scr_message.c | 21 ++- packages/runtime/src/scr_os.c | 19 +- packages/runtime/src/scr_publish.c | 8 +- packages/runtime/src/scr_region.c | 12 +- packages/runtime/src/scr_symbol.c | 15 +- packages/runtime/src/scr_tls.c | 94 +++++----- packages/runtime/src/scr_util_compare.c | 45 ++--- packages/runtime/src/scr_worker_events.c | 22 +-- packages/runtime/test/object-core.test.ts | 23 +++ 22 files changed, 508 insertions(+), 392 deletions(-) create mode 100644 packages/runtime/test/object-core.test.ts diff --git a/packages/runtime/src/scr_array.c b/packages/runtime/src/scr_array.c index b9e0efa74..c7132f528 100644 --- a/packages/runtime/src/scr_array.c +++ b/packages/runtime/src/scr_array.c @@ -5982,8 +5982,8 @@ void scr_arr_copy_metadata(ScrArr *a, ScrDyn *target) { target->v.arr.properties->v.obj.class_name = cls->name; ScrDyn *fields = scr_arr_class_fields(a); if (fields) { - for (size_t i = 0; i < fields->v.obj.len; i++) - scr_dyn_copy_entry(target, fields, &fields->v.obj.entries[i]); + for (size_t i = 0; i < scr_dyn_obj_count(fields); i++) + scr_dyn_copy_prop_at(target, fields, i); scr_dyn_release(fields); } return; @@ -5994,7 +5994,7 @@ void scr_arr_copy_metadata(ScrArr *a, ScrDyn *target) { return; metadata = SCR_AX(a)->metadata; if (!metadata) return; - for (size_t i = 0; i < metadata->v.obj.len; i++) scr_dyn_copy_entry(target, metadata, &metadata->v.obj.entries[i]); + for (size_t i = 0; i < scr_dyn_obj_count(metadata); i++) scr_dyn_copy_prop_at(target, metadata, i); } ScrArr *scr_arr_named_keys(ScrArr *a) { @@ -6008,9 +6008,9 @@ ScrArr *scr_arr_named_keys(ScrArr *a) { scr_arr_push_ref(keys, scr_str_new(x->props[i].key, x->props[i].key_len)); ScrDyn *fields = scr_arr_class_fields(a); if (fields) { - for (size_t i = 0; i < fields->v.obj.len; i++) { - const ScrDynEntry *entry = &fields->v.obj.entries[i]; - if (entry->enumerable) scr_arr_push_ref(keys, scr_str_new(entry->key, entry->key_len)); + for (size_t i = 0; i < scr_dyn_obj_count(fields); i++) { + ScrDynProp entry = scr_dyn_obj_prop_at(fields, i); + if (entry.enumerable) scr_arr_push_ref(keys, scr_str_new(entry.key, entry.key_len)); } scr_dyn_release(fields); return keys; @@ -6022,10 +6022,10 @@ ScrArr *scr_arr_named_keys(ScrArr *a) { return keys; } if (!metadata || metadata->kind != SCR_DYN_OBJ) return keys; - for (size_t i = 0; i < metadata->v.obj.len; i++) { - const ScrDynEntry *entry = &metadata->v.obj.entries[i]; - if (!entry->enumerable || scr_arr_prop_index(a, entry->key, entry->key_len) != SIZE_MAX) continue; - scr_arr_push_ref(keys, scr_str_new(entry->key, entry->key_len)); + for (size_t i = 0; i < scr_dyn_obj_count(metadata); i++) { + ScrDynProp entry = scr_dyn_obj_prop_at(metadata, i); + if (!entry.enumerable || scr_arr_prop_index(a, entry.key, entry.key_len) != SIZE_MAX) continue; + scr_arr_push_ref(keys, scr_str_new(entry.key, entry.key_len)); } return keys; } @@ -6038,9 +6038,9 @@ bool scr_arr_has_named_key(ScrArr *a, ScrStr *key) { if (metadata && metadata->kind == SCR_DYN_HANDLE && metadata->v.handle.tag == SCR_DYNH_MATCH_SOURCE) return true; /* index, input and groups, the only keys a pending result lists */ if (!metadata || metadata->kind != SCR_DYN_OBJ) return false; - for (size_t i = 0; i < metadata->v.obj.len; i++) { - const ScrDynEntry *entry = &metadata->v.obj.entries[i]; - if (entry->key_len == key->len && memcmp(entry->key, key->data, key->len) == 0) return true; + for (size_t i = 0; i < scr_dyn_obj_count(metadata); i++) { + ScrDynProp entry = scr_dyn_obj_prop_at(metadata, i); + if (entry.key_len == key->len && memcmp(entry.key, key->data, key->len) == 0) return true; } return false; } @@ -6067,20 +6067,22 @@ void scr_arr_adopt_view_properties(ScrArr *a, ScrDyn *view, ScrArr *target) { from->prop_cap = cap; } ScrDyn *named = view && view->kind == SCR_DYN_ARR ? view->v.arr.properties : NULL; - if (!named || named->v.obj.len == 0) return; + if (!named || scr_dyn_obj_count(named) == 0) return; /* The view's numeric properties are copies of the native ones (every * write to them goes to the native array), so only the others move. */ bool numeric = false; - for (size_t i = 0; i < named->v.obj.len && !numeric; i++) { + for (size_t i = 0; i < scr_dyn_obj_count(named) && !numeric; i++) { double number; - numeric = scr_arr_numeric_key(named->v.obj.entries[i].key, named->v.obj.entries[i].key_len, &number); + size_t key_len; + const char *key = scr_dyn_obj_key_at(named, i, &key_len); + numeric = scr_arr_numeric_key(key, key_len, &number); } if (numeric) { ScrDyn *rest = scr_dyn_new_obj(); - for (size_t i = 0; i < named->v.obj.len; i++) { - const ScrDynEntry *entry = &named->v.obj.entries[i]; + for (size_t i = 0; i < scr_dyn_obj_count(named); i++) { + ScrDynProp entry = scr_dyn_obj_prop_at(named, i); double number; - if (!scr_arr_numeric_key(entry->key, entry->key_len, &number)) scr_dyn_copy_entry(rest, named, entry); + if (!scr_arr_numeric_key(entry.key, entry.key_len, &number)) scr_dyn_copy_prop_at(rest, named, i); } named = rest; } else { @@ -6088,7 +6090,7 @@ void scr_arr_adopt_view_properties(ScrArr *a, ScrDyn *view, ScrArr *target) { } ScrArrExt *x = scr_arr_ext(a); ScrDyn *old = x->metadata; - x->metadata = named->v.obj.len ? named : NULL; + x->metadata = scr_dyn_obj_count(named) ? named : NULL; if (!x->metadata) scr_dyn_release(named); scr_dyn_release(old); } diff --git a/packages/runtime/src/scr_assert.c b/packages/runtime/src/scr_assert.c index bf5d1c875..6e9384f15 100644 --- a/packages/runtime/src/scr_assert.c +++ b/packages/runtime/src/scr_assert.c @@ -718,7 +718,7 @@ static bool scr_assert_dyn_deep_eq(const ScrDyn *a, const ScrDyn *b) { if (a->v.arr.properties || b->v.arr.properties) { if (!a->v.arr.properties || !b->v.arr.properties) { const ScrDyn *table = a->v.arr.properties ? a->v.arr.properties : b->v.arr.properties; - if (table->v.obj.len != 0) return false; + if (scr_dyn_obj_count(table) != 0) return false; } else if (!scr_assert_dyn_deep_eq(a->v.arr.properties, b->v.arr.properties)) return false; } return true; @@ -738,11 +738,11 @@ static bool scr_assert_dyn_deep_eq(const ScrDyn *a, const ScrDyn *b) { } else if (a->null_proto != b->null_proto || a->prototype != b->prototype) { return false; } - if (a->v.obj.len != b->v.obj.len) return false; - for (size_t i = 0; i < a->v.obj.len; i++) { - const ScrDynEntry *ent = &a->v.obj.entries[i]; - ScrDyn *bv = scr_dyn_obj_get(b, ent->key, ent->key_len); - if (!bv || !scr_assert_dyn_deep_eq(ent->value, bv)) return false; + if (scr_dyn_obj_count(a) != scr_dyn_obj_count(b)) return false; + for (size_t i = 0; i < scr_dyn_obj_count(a); i++) { + ScrDynProp ent = scr_dyn_obj_prop_at(a, i); + ScrDyn *bv = scr_dyn_obj_get(b, ent.key, ent.key_len); + if (!bv || !scr_assert_dyn_deep_eq(ent.value, bv)) return false; } return true; } @@ -782,30 +782,29 @@ static bool scr_assert_loose_nan(const ScrDyn *d) { return d->kind == SCR_DYN_NUM && d->v.num != d->v.num; } -/* An enumerable own entry, or NULL. Borrowed. */ -static const ScrDynEntry *scr_assert_loose_entry(const ScrDyn *d, const char *key, size_t len) { - for (size_t i = 0; i < d->v.obj.len; i++) { - const ScrDynEntry *ent = &d->v.obj.entries[i]; - if (ent->key_len == len && memcmp(ent->key, key, len) == 0) return ent->enumerable ? ent : NULL; - } - return NULL; +/* The value of an enumerable own property, or NULL. Borrowed. */ +static const ScrDyn *scr_assert_loose_entry(const ScrDyn *d, const char *key, size_t len) { + size_t i = scr_dyn_obj_index_of(d, key, len); + if (i == SIZE_MAX) return NULL; + ScrDynProp ent = scr_dyn_obj_prop_at(d, i); + return ent.enumerable ? ent.value : NULL; } -static bool scr_assert_loose_counted(const ScrDynEntry *ent) { - return ent->enumerable && !(ent->key_len == 6 && memcmp(ent->key, "%error", 6) == 0); +static bool scr_assert_loose_counted(ScrDynProp ent) { + return ent.enumerable && !(ent.key_len == 6 && memcmp(ent.key, "%error", 6) == 0); } /* keyCheck and objEquiv over two objects' enumerable own keys. */ static bool scr_assert_loose_keys(const ScrDyn *a, const ScrDyn *b) { size_t na = 0, nb = 0; - for (size_t i = 0; i < a->v.obj.len; i++) na += scr_assert_loose_counted(&a->v.obj.entries[i]); - for (size_t i = 0; i < b->v.obj.len; i++) nb += scr_assert_loose_counted(&b->v.obj.entries[i]); + for (size_t i = 0; i < scr_dyn_obj_count(a); i++) na += scr_assert_loose_counted(scr_dyn_obj_prop_at(a, i)); + for (size_t i = 0; i < scr_dyn_obj_count(b); i++) nb += scr_assert_loose_counted(scr_dyn_obj_prop_at(b, i)); if (na != nb) return false; - for (size_t i = 0; i < b->v.obj.len; i++) { - const ScrDynEntry *ent = &b->v.obj.entries[i]; + for (size_t i = 0; i < scr_dyn_obj_count(b); i++) { + ScrDynProp ent = scr_dyn_obj_prop_at(b, i); if (!scr_assert_loose_counted(ent)) continue; - const ScrDynEntry *other = scr_assert_loose_entry(a, ent->key, ent->key_len); - if (!other || !scr_assert_loose_eq(other->value, ent->value)) return false; + const ScrDyn *other = scr_assert_loose_entry(a, ent.key, ent.key_len); + if (!other || !scr_assert_loose_eq(other, ent.value)) return false; } return true; } @@ -1180,8 +1179,8 @@ static bool scr_assert_loose_array(const ScrDyn *a, const ScrDyn *b) { if (pa || pb) { if (!pa || !pb) { const ScrDyn *table = pa ? pa : pb; - for (size_t i = 0; i < table->v.obj.len; i++) - if (scr_assert_loose_counted(&table->v.obj.entries[i])) return false; + for (size_t i = 0; i < scr_dyn_obj_count(table); i++) + if (scr_assert_loose_counted(scr_dyn_obj_prop_at(table, i))) return false; } else if (!scr_assert_loose_keys(pa, pb)) { return false; } @@ -1295,7 +1294,7 @@ static void scr_assert_cf_value(ScrAssertBuf *b, const ScrDyn *d, size_t indent, * or `{`, then its entries. */ static void scr_assert_cf_object(ScrAssertBuf *b, const ScrDyn *d, size_t indent, size_t depth, const char *cls) { - if (d->v.obj.len == 0) { + if (scr_dyn_obj_count(d) == 0) { if (cls) { ab_cstr(b, cls); ab_cstr(b, " {}"); @@ -1320,25 +1319,25 @@ static void scr_assert_cf_object(ScrAssertBuf *b, const ScrDyn *d, size_t indent } else if (d->null_proto) ab_cstr(b, "[Object: null prototype] "); /* Render every entry, then sort the RENDERED texts (Node's * sorted:true sorts formatted entries, quotes included). */ - ScrCfEntry *ents = malloc(d->v.obj.len * sizeof *ents); + ScrCfEntry *ents = malloc(scr_dyn_obj_count(d) * sizeof *ents); if (!ents) scr_assert_oom(); - for (size_t i = 0; i < d->v.obj.len; i++) { - const ScrDynEntry *ent = &d->v.obj.entries[i]; + for (size_t i = 0; i < scr_dyn_obj_count(d); i++) { + ScrDynProp ent = scr_dyn_obj_prop_at(d, i); ScrAssertBuf eb = {0}; - scr_assert_cf_key(&eb, ent->key, ent->key_len); + scr_assert_cf_key(&eb, ent.key, ent.key_len); ab_cstr(&eb, ": "); - scr_assert_cf_value(&eb, ent->value, indent + 2, depth - 1); + scr_assert_cf_value(&eb, ent.value, indent + 2, depth - 1); ents[i].text = eb.data ? eb.data : malloc(1); if (!ents[i].text) scr_assert_oom(); ents[i].len = eb.len; } - qsort(ents, d->v.obj.len, sizeof *ents, scr_assert_cf_entry_cmp); + qsort(ents, scr_dyn_obj_count(d), sizeof *ents, scr_assert_cf_entry_cmp); ab_char(b, '{'); - for (size_t i = 0; i < d->v.obj.len; i++) { + for (size_t i = 0; i < scr_dyn_obj_count(d); i++) { ab_char(b, '\n'); scr_assert_cf_pad(b, indent + 2); ab_bytes(b, ents[i].text, ents[i].len); - if (i + 1 < d->v.obj.len) ab_char(b, ','); + if (i + 1 < scr_dyn_obj_count(d)) ab_char(b, ','); free(ents[i].text); } free(ents); @@ -1364,11 +1363,11 @@ static const char *scr_assert_cf_bytes_class(ScrBytesElem elem) { } -static bool scr_assert_cf_error_extra(const ScrDynEntry *ent) { - if (!ent->enumerable || (ent->key_len > 0 && ent->key[0] == '%')) return false; - return !((ent->key_len == 4 && memcmp(ent->key, "name", 4) == 0) || - (ent->key_len == 7 && memcmp(ent->key, "message", 7) == 0) || - (ent->key_len == 5 && memcmp(ent->key, "stack", 5) == 0)); +static bool scr_assert_cf_error_extra(ScrDynProp ent) { + if (!ent.enumerable || (ent.key_len > 0 && ent.key[0] == '%')) return false; + return !((ent.key_len == 4 && memcmp(ent.key, "name", 4) == 0) || + (ent.key_len == 7 && memcmp(ent.key, "message", 7) == 0) || + (ent.key_len == 5 && memcmp(ent.key, "stack", 5) == 0)); } /* An encoded Error: Node's stackless `[Name: message]` (assertion_error.js @@ -1386,8 +1385,8 @@ static void scr_assert_cf_error(ScrAssertBuf *b, const ScrDyn *d, size_t indent, } ab_char(b, ']'); size_t extra = 0; - for (size_t i = 0; i < d->v.obj.len; i++) { - const ScrDynEntry *ent = &d->v.obj.entries[i]; + for (size_t i = 0; i < scr_dyn_obj_count(d); i++) { + ScrDynProp ent = scr_dyn_obj_prop_at(d, i); if (scr_assert_cf_error_extra(ent)) extra++; } if (extra == 0) return; @@ -1395,13 +1394,13 @@ static void scr_assert_cf_error(ScrAssertBuf *b, const ScrDyn *d, size_t indent, ScrCfEntry *ents = malloc(extra * sizeof *ents); if (!ents) scr_assert_oom(); size_t n = 0; - for (size_t i = 0; i < d->v.obj.len; i++) { - const ScrDynEntry *ent = &d->v.obj.entries[i]; + for (size_t i = 0; i < scr_dyn_obj_count(d); i++) { + ScrDynProp ent = scr_dyn_obj_prop_at(d, i); if (!scr_assert_cf_error_extra(ent)) continue; ScrAssertBuf eb = {0}; - scr_assert_cf_key(&eb, ent->key, ent->key_len); + scr_assert_cf_key(&eb, ent.key, ent.key_len); ab_cstr(&eb, ": "); - scr_assert_cf_value(&eb, ent->value, indent + 2, depth - 1); + scr_assert_cf_value(&eb, ent.value, indent + 2, depth - 1); ents[n].text = eb.data ? eb.data : malloc(1); if (!ents[n].text) scr_assert_oom(); ents[n++].len = eb.len; @@ -1989,11 +1988,11 @@ static bool scr_assert_partial_eq(const ScrDyn *a, const ScrDyn *b); /* objEquiv over the expected side's enumerable own keys. */ static bool scr_assert_partial_keys(const ScrDyn *a, const ScrDyn *b) { - for (size_t i = 0; i < b->v.obj.len; i++) { - const ScrDynEntry *ent = &b->v.obj.entries[i]; + for (size_t i = 0; i < scr_dyn_obj_count(b); i++) { + ScrDynProp ent = scr_dyn_obj_prop_at(b, i); if (!scr_assert_loose_counted(ent)) continue; - const ScrDynEntry *other = scr_assert_loose_entry(a, ent->key, ent->key_len); - if (!other || !scr_assert_partial_eq(other->value, ent->value)) return false; + const ScrDyn *other = scr_assert_loose_entry(a, ent.key, ent.key_len); + if (!other || !scr_assert_partial_eq(other, ent.value)) return false; } return true; } @@ -2043,11 +2042,11 @@ static bool scr_assert_partial_array(const ScrDyn *a, const ScrDyn *b) { const ScrDyn *pb = b->v.arr.properties; if (pb) { const ScrDyn *pa = a->v.arr.properties; - for (size_t i = 0; i < pb->v.obj.len; i++) { - const ScrDynEntry *ent = &pb->v.obj.entries[i]; + for (size_t i = 0; i < scr_dyn_obj_count(pb); i++) { + ScrDynProp ent = scr_dyn_obj_prop_at(pb, i); if (!scr_assert_loose_counted(ent)) continue; - const ScrDynEntry *other = pa ? scr_assert_loose_entry(pa, ent->key, ent->key_len) : NULL; - if (!other || !scr_assert_partial_eq(other->value, ent->value)) return false; + const ScrDyn *other = pa ? scr_assert_loose_entry(pa, ent.key, ent.key_len) : NULL; + if (!other || !scr_assert_partial_eq(other, ent.value)) return false; } } size_t pos = 0; @@ -2434,11 +2433,11 @@ void scr_assert_loose_deep_result(bool equal, bool negated, ScrStr *msg, bool ha void scr_assert_expects_err_dyn(ScrDyn *actual, ScrDyn *expected, ScrStr *msg, bool has_msg) { if (actual->kind == SCR_DYN_OBJ && expected->kind == SCR_DYN_OBJ) { bool ok = true; - for (size_t i = 0; i < expected->v.obj.len && ok; i++) { - const ScrDynEntry *e = &expected->v.obj.entries[i]; - if (e->key_len == 6 && memcmp(e->key, "%error", 6) == 0) continue; - ScrDyn *av = scr_dyn_obj_get(actual, e->key, e->key_len); - if (av == NULL || !scr_assert_dyn_deep_eq(av, e->value)) ok = false; + for (size_t i = 0; i < scr_dyn_obj_count(expected) && ok; i++) { + ScrDynProp e = scr_dyn_obj_prop_at(expected, i); + if (e.key_len == 6 && memcmp(e.key, "%error", 6) == 0) continue; + ScrDyn *av = scr_dyn_obj_get(actual, e.key, e.key_len); + if (av == NULL || !scr_assert_dyn_deep_eq(av, e.value)) ok = false; } if (ok) return; } diff --git a/packages/runtime/src/scr_builtin_values.c b/packages/runtime/src/scr_builtin_values.c index f8dd2b79b..084a1d50d 100644 --- a/packages/runtime/src/scr_builtin_values.c +++ b/packages/runtime/src/scr_builtin_values.c @@ -441,8 +441,7 @@ ScrDyn *scr_buffer_constructor_value(void) { ScrDyn *table = scr_dyn_function_properties(scr_bv_buffer); ScrDyn *getter = scr_dyn_new_func(scr_closure_new(NULL, 0), scr_bv_prototype, 0, "native:function", "get prototype"); scr_dyn_obj_set_accessor(table, "prototype", 9, getter, NULL); - ScrDynEntry *entry = &table->v.obj.entries[table->v.obj.len - 1]; - entry->enumerable = entry->configurable = false; + scr_dyn_obj_set_attrs_at(table, scr_dyn_obj_count(table) - 1, false, false, false); scr_dyn_obj_set(table, "poolSize", 8, scr_dyn_new_num(pool_size)); ScrDyn *is_encoding = NULL; for (size_t i = 0; i < sizeof statics / sizeof statics[0]; i++) { diff --git a/packages/runtime/src/scr_bytes_io.c b/packages/runtime/src/scr_bytes_io.c index daeb47c60..0c4bee4ee 100644 --- a/packages/runtime/src/scr_bytes_io.c +++ b/packages/runtime/src/scr_bytes_io.c @@ -1757,11 +1757,11 @@ ScrStr *scr_fs_mkdtemp_sync_chk(const ScrDyn *prefix, const ScrDyn *opts, const if (!scr_fs_encoding_chk(opts)) return NULL; bool utf8 = true; if (opts->kind == SCR_DYN_OBJ) { - for (size_t i = 0; i < opts->v.obj.len; i++) { - const ScrDynEntry *e = &opts->v.obj.entries[i]; - if (scr_fs_dyn_absent(e->value)) continue; - if (strcmp(e->key, "encoding") == 0) { - if (!scr_fs_utf8_encoding(e->value)) utf8 = false; + for (size_t i = 0; i < scr_dyn_obj_count(opts); i++) { + ScrDynProp e = scr_dyn_obj_prop_at(opts, i); + if (scr_fs_dyn_absent(e.value)) continue; + if (strcmp(e.key, "encoding") == 0) { + if (!scr_fs_utf8_encoding(e.value)) utf8 = false; continue; } utf8 = false; /* an unmodeled effectful option */ diff --git a/packages/runtime/src/scr_console_native.c b/packages/runtime/src/scr_console_native.c index 492d57d82..e11ffd3af 100644 --- a/packages/runtime/src/scr_console_native.c +++ b/packages/runtime/src/scr_console_native.c @@ -507,8 +507,8 @@ static bool scr_console_holds_buffer(const ScrDyn *d) { if (scr_console_holds_buffer(d->v.arr.items[i])) return true; return false; case SCR_DYN_OBJ: - for (size_t i = 0; i < d->v.obj.len; i++) { - const ScrDyn *value = d->v.obj.entries[i].value; + for (size_t i = 0; i < scr_dyn_obj_count(d); i++) { + const ScrDyn *value = scr_dyn_obj_value_at(d, i); if (value && scr_console_holds_buffer(value)) return true; } return false; @@ -626,7 +626,7 @@ static ScrStr **scr_table_own_keys(const ScrDyn *item, size_t *count) { return keys; } if (item->kind != SCR_DYN_OBJ) return NULL; - size_t len = item->v.obj.len; + size_t len = scr_dyn_obj_count(item); const char **names = calloc(len ? len : 1, sizeof *names); size_t *lens = calloc(len ? len : 1, sizeof *lens); size_t *order = calloc(len ? len : 1, sizeof *order); @@ -634,10 +634,10 @@ static ScrStr **scr_table_own_keys(const ScrDyn *item, size_t *count) { if (!names || !lens || !order || !keys) scr_trap("scriptc: out of memory\n"); size_t n = 0; for (size_t i = 0; i < len; i++) { - const ScrDynEntry *ent = &item->v.obj.entries[i]; - if (!ent->enumerable) continue; - names[n] = ent->key; - lens[n] = ent->key_len; + ScrDynProp prop = scr_dyn_obj_prop_at(item, i); + if (!prop.enumerable) continue; + names[n] = prop.key; + lens[n] = prop.key_len; n++; } scr_table_key_order(names, lens, n, order); @@ -652,16 +652,14 @@ static ScrStr **scr_table_own_keys(const ScrDyn *item, size_t *count) { /* item[key] when it is an own property; NULL otherwise. +1. */ static ScrDyn *scr_table_own_value(const ScrDyn *item, const ScrStr *key) { if (item->kind == SCR_DYN_OBJ) { - for (size_t i = 0; i < item->v.obj.len; i++) { - const ScrDynEntry *ent = &item->v.obj.entries[i]; - if (ent->key_len != key->len || memcmp(ent->key, key->data, key->len) != 0) continue; - if (ent->accessor) { - scr_table_fence("console.table rows with accessor properties have no lowering"); - return NULL; - } - return scr_dyn_retain(ent->value); + size_t i = scr_dyn_obj_index_of(item, key->data, key->len); + if (i == SIZE_MAX) return NULL; + ScrDynProp prop = scr_dyn_obj_prop_at(item, i); + if (prop.accessor) { + scr_table_fence("console.table rows with accessor properties have no lowering"); + return NULL; } - return NULL; + return scr_dyn_retain(prop.value); } if (item->kind == SCR_DYN_ARR || item->kind == SCR_DYN_BYTES) { size_t len = item->kind == SCR_DYN_ARR ? item->v.arr.len : item->v.bytes->len; diff --git a/packages/runtime/src/scr_decl_adopt.c b/packages/runtime/src/scr_decl_adopt.c index fc1c4456c..ffac1f802 100644 --- a/packages/runtime/src/scr_decl_adopt.c +++ b/packages/runtime/src/scr_decl_adopt.c @@ -63,10 +63,10 @@ static bool scr_decl_adopt_plain(const ScrDyn *n, const ScrDynPath *path, bool l else if (n->v.obj.source_access && !n->v.obj.source_identity) want = "a plain object"; else { - for (size_t i = 0; i < n->v.obj.len && !want; i++) { - const ScrDynEntry *e = &n->v.obj.entries[i]; - if (e->accessor) want = "a plain object (this value has accessor properties)"; - else if (!e->writable || !e->enumerable || !e->configurable) + for (size_t i = 0; i < scr_dyn_obj_count(n) && !want; i++) { + ScrDynProp e = scr_dyn_obj_prop_at(n, i); + if (e.accessor) want = "a plain object (this value has accessor properties)"; + else if (!e.writable || !e.enumerable || !e.configurable) want = "a plain object (this value has non-default property attributes)"; } } diff --git a/packages/runtime/src/scr_dyn.h b/packages/runtime/src/scr_dyn.h index a71aaa244..ebb274a23 100644 --- a/packages/runtime/src/scr_dyn.h +++ b/packages/runtime/src/scr_dyn.h @@ -584,6 +584,67 @@ _Static_assert(sizeof(((ScrDyn *)0)->v.arr) <= sizeof(((ScrDyn *)0)->v.typed_ref _Static_assert(sizeof(void *) != 8 || offsetof(ScrDyn, v.obj.shape) == 80, "v.obj.shape offset"); _Static_assert(sizeof(void *) != 8 || offsetof(ScrDyn, v.obj.region) == 72, "v.obj.region offset"); +/* ── own properties of ordinary objects ────────────────────────────── + * Code outside the object core (scr_json.c and scr_js_object.c) reads and + * adjusts an SCR_DYN_OBJ's own string-keyed properties through these + * accessors, never through v.obj.entries, so the object's storage can + * change underneath (the single object model's generic objects). Index i + * runs over the properties in creation order, 0 <= i < scr_dyn_obj_count. + * Keys and values are borrowed: they stay valid until the object changes. */ +typedef struct { + const char *key; + size_t key_len; + ScrDyn *value; /* data property; the undefined value for an accessor */ + ScrDyn *getter; /* accessor property; NULL when absent */ + ScrDyn *setter; /* accessor property; NULL when absent */ + bool accessor; + bool writable; + bool enumerable; + bool configurable; +} ScrDynProp; + +static inline size_t scr_dyn_obj_count(const ScrDyn *o) { + return o->v.obj.len; +} + +static inline const char *scr_dyn_obj_key_at(const ScrDyn *o, size_t i, size_t *key_len) { + *key_len = o->v.obj.entries[i].key_len; + return o->v.obj.entries[i].key; +} + +/* The value of data property i (borrowed); the undefined value for an + * accessor property, whose functions scr_dyn_obj_prop_at answers. */ +static inline ScrDyn *scr_dyn_obj_value_at(const ScrDyn *o, size_t i) { + return o->v.obj.entries[i].value; +} + +static inline ScrDynProp scr_dyn_obj_prop_at(const ScrDyn *o, size_t i) { + const ScrDynEntry *e = &o->v.obj.entries[i]; + return (ScrDynProp){e->key, e->key_len, e->value, e->getter, e->setter, + e->accessor, e->writable, e->enumerable, e->configurable}; +} + +/* The index of own property `key`, or SIZE_MAX. A linear scan: for code + * that looks up options and headers, not for hot property reads. */ +static inline size_t scr_dyn_obj_index_of(const ScrDyn *o, const char *key, size_t key_len) { + for (size_t i = 0; i < o->v.obj.len; i++) { + const ScrDynEntry *e = &o->v.obj.entries[i]; + if (e->key_len == key_len && memcmp(e->key, key, key_len) == 0) return i; + } + return SIZE_MAX; +} + +/* Sets the attributes of property i (`writable` is ignored for an + * accessor property): builtin objects the runtime builds restrict their + * members this way right after adding them. */ +static inline void scr_dyn_obj_set_attrs_at(ScrDyn *o, size_t i, bool writable, bool enumerable, + bool configurable) { + ScrDynEntry *e = &o->v.obj.entries[i]; + if (!e->accessor) e->writable = writable; + e->enumerable = enumerable; + e->configurable = configurable; +} + /* ── intact parse regions ───────────────────────────────────────────── * Every heap dyn node carries a cycle header, so an ordinary release that * leaves an array or object alive buffers it as a possible cycle root, and @@ -748,6 +809,20 @@ ScrDyn *scr_dyn_get_own_property_symbols(const ScrDyn *value); /* The own property stored under a symbol key on an object (borrowed), or * NULL when it has none. */ ScrDynEntry *scr_dyn_own_symbol_entry(const ScrDyn *object, const ScrDyn *key); +/* The own symbol-keyed property `key` of `object` as a property view + * (scr_dyn_obj_prop_at; `key` and `key_len` name its private storage + * key); false when there is none. */ +static inline bool scr_dyn_own_symbol_prop(const ScrDyn *object, const ScrDyn *key, ScrDynProp *out) { + const ScrDynEntry *e = scr_dyn_own_symbol_entry(object, key); + if (!e) return false; + *out = (ScrDynProp){e->key, e->key_len, e->value, e->getter, e->setter, + e->accessor, e->writable, e->enumerable, e->configurable}; + return true; +} +/* Copies own property i of `source` to `target` (scr_dyn_copy_entry). */ +static inline void scr_dyn_copy_prop_at(ScrDyn *target, const ScrDyn *source, size_t i) { + scr_dyn_copy_entry(target, source, &source->v.obj.entries[i]); +} /* The private storage name of a symbol key (+1). With it, * scr_dyn_symbol_init_own gives an object that has no symbol properties * yet its first one, a writable, enumerable, configurable data property diff --git a/packages/runtime/src/scr_dyn_handle_props.c b/packages/runtime/src/scr_dyn_handle_props.c index c7de963f0..88677836f 100644 --- a/packages/runtime/src/scr_dyn_handle_props.c +++ b/packages/runtime/src/scr_dyn_handle_props.c @@ -60,17 +60,17 @@ static ScrDyn *hp_props_of(void *child) { return props; } -static ScrDynEntry *hp_entry(const ScrDyn *props, const char *key, size_t key_len) { - if (!props) return NULL; - for (size_t i = 0; i < props->v.obj.len; i++) { - ScrDynEntry *e = &props->v.obj.entries[i]; - if (e->key_len == key_len && !memcmp(e->key, key, key_len)) return e; - } - return NULL; +/* Own property `key` of the table object, in *out; false when absent. */ +static bool hp_entry(const ScrDyn *props, const char *key, size_t key_len, ScrDynProp *out) { + if (!props) return false; + size_t i = scr_dyn_obj_index_of(props, key, key_len); + if (i == SIZE_MAX) return false; + *out = scr_dyn_obj_prop_at(props, i); + return true; } static bool hp_has(const ScrDyn *props, const char *key, size_t key_len) { - return hp_entry(props, key, key_len) != NULL; + return props && scr_dyn_obj_index_of(props, key, key_len) != SIZE_MAX; } /* A property the program added, read with the child as `this`: an @@ -78,10 +78,10 @@ static bool hp_has(const ScrDyn *props, const char *key, size_t key_len) { * it (`Object.defineProperty(child, "x", { get() { return this.pid; } })`). * +1, or NULL with the exception pending. */ static ScrDyn *hp_read(ScrDyn *props, ScrDyn *self, const char *key, size_t key_len) { - ScrDynEntry *e = hp_entry(props, key, key_len); - if (!e || !e->accessor) return scr_dyn_obj_read(props, key, key_len); - if (!e->getter) return scr_dyn_retain(scr_dyn_undefined()); - ScrDyn *getter = scr_dyn_retain(e->getter); + ScrDynProp e; + if (!hp_entry(props, key, key_len, &e) || !e.accessor) return scr_dyn_obj_read(props, key, key_len); + if (!e.getter) return scr_dyn_retain(scr_dyn_undefined()); + ScrDyn *getter = scr_dyn_retain(e.getter); scr_dyn_this_push_dyn(self); ScrDyn *result = scr_dyn_call(getter, NULL, 0, "getter"); scr_dyn_this_pop(); @@ -132,7 +132,8 @@ static ScrDyn *hp_get(void *h, const char *key, size_t key_len) { static bool hp_set(void *h, const char *key, size_t key_len, const ScrDyn *value) { ScrDyn *props = hp_find(h); - ScrDynEntry *entry = hp_entry(props, key, key_len); + ScrDynProp found; + const ScrDynProp *entry = hp_entry(props, key, key_len, &found) ? &found : NULL; if (entry && entry->accessor) { /* An accessor's setter runs on the child. Without one the write throws * the strict-mode TypeError, as the other handle getters do. */ diff --git a/packages/runtime/src/scr_fetch.c b/packages/runtime/src/scr_fetch.c index d28707d5d..1b30c451d 100644 --- a/packages/runtime/src/scr_fetch.c +++ b/packages/runtime/src/scr_fetch.c @@ -4821,14 +4821,14 @@ static ScrArr *sf_headers_convert_init(const ScrDyn *headers, bool *canonical_ou return converted; } if (headers->kind == SCR_DYN_OBJ) { - for (size_t i = 0; i < headers->v.obj.len; i++) { - const ScrDynEntry *e = &headers->v.obj.entries[i]; - ScrStr *raw_name = scr_str_new(e->key, e->key_len); + for (size_t i = 0; i < scr_dyn_obj_count(headers); i++) { + ScrDynProp e = scr_dyn_obj_prop_at(headers, i); + ScrStr *raw_name = scr_str_new(e.key, e.key_len); ScrStr *name_bytes = sf_header_value_bytestring(raw_name); ScrStr *name = name_bytes ? sf_latin1_to_utf8(name_bytes) : NULL; scr_str_release(name_bytes); scr_str_release(raw_name); - ScrDyn *source = scr_dyn_retain(e->value); + ScrDyn *source = scr_dyn_retain(e.value); ScrStr *raw_value = name ? scr_dyn_string_coerce_js(source) : NULL; scr_dyn_release(source); ScrStr *value_bytes = raw_value @@ -6088,11 +6088,11 @@ static int8_t sf_light_header_form(const ScrDyn *headers, bool json_body, } int8_t form = 0; if (headers->kind == SCR_DYN_OBJ) { - ScrArr *out = scr_arr_new(SCR_ELEM_STR, 2 * headers->v.obj.len); + ScrArr *out = scr_arr_new(SCR_ELEM_STR, 2 * scr_dyn_obj_count(headers)); form = 3; - for (size_t i = 0; i < headers->v.obj.len && form == 3; i++) { - const ScrDynEntry *e = &headers->v.obj.entries[i]; - const ScrDyn *value = e->value; + for (size_t i = 0; i < scr_dyn_obj_count(headers) && form == 3; i++) { + ScrDynProp e = scr_dyn_obj_prop_at(headers, i); + const ScrDyn *value = e.value; size_t count = value->kind == SCR_DYN_ARR ? value->v.arr.len : 1; for (size_t j = 0; j < count; j++) { const ScrDyn *item = value->kind == SCR_DYN_ARR ? value->v.arr.items[j] : value; @@ -6106,7 +6106,7 @@ static int8_t sf_light_header_form(const ScrDyn *headers, bool json_body, form = 0; break; } - scr_arr_push_ref(out, scr_str_new(e->key, e->key_len)); + scr_arr_push_ref(out, scr_str_new(e.key, e.key_len)); scr_arr_push_ref(out, text); } } @@ -6666,27 +6666,27 @@ ScrPromise *scr_fetch_static(ScrStr *url, ScrDyn *init) { return sf_reject_now(promise, "fetch failed"); } if (init && init->kind == SCR_DYN_OBJ) { - for (size_t i = 0; i < init->v.obj.len; i++) { - const ScrDynEntry *entry = &init->v.obj.entries[i]; - bool supported = sf_name(entry->key, entry->key_len, "method") || - sf_name(entry->key, entry->key_len, "headers") || - sf_name(entry->key, entry->key_len, "body") || - sf_name(entry->key, entry->key_len, "duplex") || - sf_name(entry->key, entry->key_len, "redirect") || - sf_name(entry->key, entry->key_len, "signal"); + for (size_t i = 0; i < scr_dyn_obj_count(init); i++) { + ScrDynProp entry = scr_dyn_obj_prop_at(init, i); + bool supported = sf_name(entry.key, entry.key_len, "method") || + sf_name(entry.key, entry.key_len, "headers") || + sf_name(entry.key, entry.key_len, "body") || + sf_name(entry.key, entry.key_len, "duplex") || + sf_name(entry.key, entry.key_len, "redirect") || + sf_name(entry.key, entry.key_len, "signal"); bool recognized_unsupported = - sf_name(entry->key, entry->key_len, "cache") || - sf_name(entry->key, entry->key_len, "credentials") || - sf_name(entry->key, entry->key_len, "dispatcher") || - sf_name(entry->key, entry->key_len, "integrity") || - sf_name(entry->key, entry->key_len, "keepalive") || - sf_name(entry->key, entry->key_len, "mode") || - sf_name(entry->key, entry->key_len, "priority") || - sf_name(entry->key, entry->key_len, "referrer") || - sf_name(entry->key, entry->key_len, "referrerPolicy") || - sf_name(entry->key, entry->key_len, "window"); - if (!supported && recognized_unsupported && entry->value && - entry->value->kind != SCR_DYN_UNDEF) { + sf_name(entry.key, entry.key_len, "cache") || + sf_name(entry.key, entry.key_len, "credentials") || + sf_name(entry.key, entry.key_len, "dispatcher") || + sf_name(entry.key, entry.key_len, "integrity") || + sf_name(entry.key, entry.key_len, "keepalive") || + sf_name(entry.key, entry.key_len, "mode") || + sf_name(entry.key, entry.key_len, "priority") || + sf_name(entry.key, entry.key_len, "referrer") || + sf_name(entry.key, entry.key_len, "referrerPolicy") || + sf_name(entry.key, entry.key_len, "window"); + if (!supported && recognized_unsupported && entry.value && + entry.value->kind != SCR_DYN_UNDEF) { return sf_reject_now(promise, "fetch failed"); } } diff --git a/packages/runtime/src/scr_http.c b/packages/runtime/src/scr_http.c index 3fb0fdcba..0284c31c4 100644 --- a/packages/runtime/src/scr_http.c +++ b/packages/runtime/src/scr_http.c @@ -2047,10 +2047,10 @@ void scr_http_res_write_head_dyn(ScrHttpRes *r, double status, const ScrDyn *hea scr_dyn_arg_type_fail("headers", "an instance of Object", headers); return; } - for (size_t i = 0; i < headers->v.obj.len; i++) { - const ScrDynEntry *e = &headers->v.obj.entries[i]; - const ScrDyn *v = e->value; - ScrStr *name = scr_str_new(e->key, e->key_len); + for (size_t i = 0; i < scr_dyn_obj_count(headers); i++) { + ScrDynProp e = scr_dyn_obj_prop_at(headers, i); + const ScrDyn *v = e.value; + ScrStr *name = scr_str_new(e.key, e.key_len); if (v->kind == SCR_DYN_STR) { scr_http_res_set_header(r, name, v->v.str); } else if (v->kind == SCR_DYN_NUM) { @@ -6200,10 +6200,10 @@ static bool scr_http_dynh_req_set(void *h, const char *key, size_t key_len, cons * consecutive same-name pairs). Numbers format through String(n). NULL = * a value this surface cannot honestly carry (exception pending). */ static ScrArr *scr_http_dynh_pairs(const ScrDyn *headers) { - ScrArr *pairs = scr_arr_new(SCR_ELEM_STR, headers->v.obj.len * 2); - for (size_t i = 0; i < headers->v.obj.len; i++) { - const ScrDynEntry *e = &headers->v.obj.entries[i]; - const ScrDyn *v = e->value; + ScrArr *pairs = scr_arr_new(SCR_ELEM_STR, scr_dyn_obj_count(headers) * 2); + for (size_t i = 0; i < scr_dyn_obj_count(headers); i++) { + ScrDynProp e = scr_dyn_obj_prop_at(headers, i); + const ScrDyn *v = e.value; size_t reps = v->kind == SCR_DYN_ARR ? v->v.arr.len : 1; for (size_t k = 0; k < reps; k++) { const ScrDyn *one = v->kind == SCR_DYN_ARR ? v->v.arr.items[k] : v; @@ -6218,7 +6218,7 @@ static ScrArr *scr_http_dynh_pairs(const ScrDyn *headers) { scr_jb_puts(&b, "Invalid value \""); scr_jb_puts(&b, one->kind == SCR_DYN_UNDEF ? "undefined" : "object"); scr_jb_puts(&b, "\" for header \""); - for (size_t c = 0; c < e->key_len; c++) scr_jb_putc(&b, e->key[c]); + for (size_t c = 0; c < e.key_len; c++) scr_jb_putc(&b, e.key[c]); scr_jb_putc(&b, '"'); ScrStr *msg = scr_jb_finish(&b); scr_throw_error_msg_code(SCR_ERR_TYPE, msg->data, msg->len, "ERR_HTTP_INVALID_HEADER_VALUE"); @@ -6226,7 +6226,7 @@ static ScrArr *scr_http_dynh_pairs(const ScrDyn *headers) { scr_arr_release(pairs); return NULL; } - scr_arr_push_ref(pairs, scr_str_new(e->key, e->key_len)); + scr_arr_push_ref(pairs, scr_str_new(e.key, e.key_len)); scr_arr_push_ref(pairs, vs); } } @@ -6945,8 +6945,8 @@ static ScrDyn *scr_http_dynh_agent_get(void *h, const char *key, size_t key_len) scr_dyn_arr_push(arr, item); } /* the list is most recent first: reverse each array into Node's order */ - for (size_t i = 0; i < obj->v.obj.len; i++) { - ScrDyn *arr = obj->v.obj.entries[i].value; + for (size_t i = 0; i < scr_dyn_obj_count(obj); i++) { + ScrDyn *arr = scr_dyn_obj_value_at(obj, i); for (size_t l = 0, r = arr->v.arr.len ? arr->v.arr.len - 1 : 0; l < r; l++, r--) { ScrDyn *t = arr->v.arr.items[l]; arr->v.arr.items[l] = arr->v.arr.items[r]; @@ -7449,13 +7449,13 @@ bool scr_http_req_opts_read(const ScrDyn *opts, bool secure, const char *api, Sc headers = headers_view; } if (headers != NULL && headers->kind == SCR_DYN_OBJ) { - for (size_t i = 0; i < headers->v.obj.len; i++) { - const ScrDynEntry *e = &headers->v.obj.entries[i]; - ScrStr *name = scr_str_new(e->key, e->key_len); + for (size_t i = 0; i < scr_dyn_obj_count(headers); i++) { + ScrDynProp e = scr_dyn_obj_prop_at(headers, i); + ScrStr *name = scr_str_new(e.key, e.key_len); ScrStr *label = scr_str_new("", 0); scr_http_validate_header_name(name, label); scr_str_release(label); - const ScrDyn *v = e->value; + const ScrDyn *v = e.value; if (!scr_exc_pending()) { if (v->kind == SCR_DYN_ARR) { for (size_t k = 0; k < v->v.arr.len && !scr_exc_pending(); k++) diff --git a/packages/runtime/src/scr_http2.c b/packages/runtime/src/scr_http2.c index 489946a12..30fddf8a4 100644 --- a/packages/runtime/src/scr_http2.c +++ b/packages/runtime/src/scr_http2.c @@ -2559,9 +2559,9 @@ ScrNetServer *scr_http2_create_secure_server_dyn(const ScrDyn *opts /*borrowed*/ ScrHttpReqFn fn) { bool allow_http1 = false; if (opts != NULL && opts->kind == SCR_DYN_OBJ) { - for (size_t i = 0; i < opts->v.obj.len; i++) { - if (strcmp(opts->v.obj.entries[i].key, "allowHTTP1") == 0) { - allow_http1 = scr_dyn_truthy(opts->v.obj.entries[i].value); + for (size_t i = 0; i < scr_dyn_obj_count(opts); i++) { + if (strcmp(scr_dyn_obj_prop_at(opts, i).key, "allowHTTP1") == 0) { + allow_http1 = scr_dyn_truthy(scr_dyn_obj_value_at(opts, i)); } } } @@ -3105,15 +3105,15 @@ static void scr_h2_dyn_fire_goaway(ScrClosure *cb, double code, double last) { /* Flatten a dyn headers object into the flat pairs array (numbers via * String(n); the :status/:method/... pseudo-headers pass through). */ static ScrArr *scr_h2_dom_to_pairs(const ScrDyn *headers) { - ScrArr *pairs = scr_arr_new(SCR_ELEM_STR, headers->v.obj.len * 2); - for (size_t i = 0; i < headers->v.obj.len; i++) { - const ScrDynEntry *e = &headers->v.obj.entries[i]; - const ScrDyn *v = e->value; + ScrArr *pairs = scr_arr_new(SCR_ELEM_STR, scr_dyn_obj_count(headers) * 2); + for (size_t i = 0; i < scr_dyn_obj_count(headers); i++) { + ScrDynProp e = scr_dyn_obj_prop_at(headers, i); + const ScrDyn *v = e.value; ScrStr *vs; if (v->kind == SCR_DYN_STR) vs = scr_str_retain(v->v.str); else if (v->kind == SCR_DYN_NUM) vs = scr_f64_to_scrstr(v->v.num); else continue; /* undefined/null header: dropped, Node's stance */ - scr_arr_push_ref(pairs, scr_str_new(e->key, e->key_len)); + scr_arr_push_ref(pairs, scr_str_new(e.key, e.key_len)); scr_arr_push_ref(pairs, vs); } return pairs; diff --git a/packages/runtime/src/scr_inspect.c b/packages/runtime/src/scr_inspect.c index 1de583af5..b4994cd32 100644 --- a/packages/runtime/src/scr_inspect.c +++ b/packages/runtime/src/scr_inspect.c @@ -973,21 +973,23 @@ ScrStr *scr_insp_regex(ScrRegex *re) { * the k-th symbol key. */ static size_t insp_view_property_slots(const ScrDyn *props) { if (!props) return 0; - return props->v.obj.len + (props->symbol_keys ? props->symbol_keys->v.arr.len : 0); + return scr_dyn_obj_count(props) + (props->symbol_keys ? props->symbol_keys->v.arr.len : 0); } -static ScrStr *insp_accessor_tag(const ScrDynEntry *ent); +static ScrStr *insp_accessor_tag(const ScrDynProp *ent); static void insp_key_into(InspBuf *b, const char *key, size_t len); /* Slot k's `key: value` entry when it is enumerable, else NULL. */ static ScrStr *insp_view_property(ScrDyn *props, size_t k, double recurse, double depth) { - const ScrDynEntry *ent; + ScrDynProp found; + const ScrDynProp *ent = NULL; ScrStr *key = NULL; - if (k < props->v.obj.len) { - ent = &props->v.obj.entries[k]; + if (k < scr_dyn_obj_count(props)) { + found = scr_dyn_obj_prop_at(props, k); + ent = &found; } else { - ScrDyn *symbol = props->symbol_keys->v.arr.items[k - props->v.obj.len]; - ent = scr_dyn_own_symbol_entry(props, symbol); + ScrDyn *symbol = props->symbol_keys->v.arr.items[k - scr_dyn_obj_count(props)]; + if (scr_dyn_own_symbol_prop(props, symbol, &found)) ent = &found; if (ent && ent->enumerable) key = scr_insp_dyn(symbol, recurse, depth); } if (!ent || !ent->enumerable) return NULL; @@ -1005,10 +1007,11 @@ static ScrStr *insp_view_property(ScrDyn *props, size_t k, double recurse, doubl static size_t insp_view_property_count(ScrDyn *props) { size_t count = 0; for (size_t k = 0; k < insp_view_property_slots(props); k++) { - if (k < props->v.obj.len) count += props->v.obj.entries[k].enumerable; + if (k < scr_dyn_obj_count(props)) count += scr_dyn_obj_prop_at(props, k).enumerable; else { - const ScrDynEntry *ent = scr_dyn_own_symbol_entry(props, props->symbol_keys->v.arr.items[k - props->v.obj.len]); - count += ent && ent->enumerable; + ScrDynProp ent; + count += scr_dyn_own_symbol_prop(props, props->symbol_keys->v.arr.items[k - scr_dyn_obj_count(props)], &ent) && + ent.enumerable; } } return count; @@ -1157,11 +1160,11 @@ static ScrDyn *insp_error_cause(ScrError *e, bool *enumerable, ScrDyn **view) { ScrDyn *node = scr_errdyn_view_of(e); if (node != NULL && node->kind == SCR_DYN_TYPED_REF) node = *view = scr_dyn_typed_ref_materialize(node); if (node != NULL && node->kind == SCR_DYN_OBJ) { - for (size_t i = 0; i < node->v.obj.len; i++) { - ScrDynEntry *ent = &node->v.obj.entries[i]; - if (ent->key_len == 5 && memcmp(ent->key, "cause", 5) == 0) { - *enumerable = ent->enumerable; - return ent->value; + for (size_t i = 0; i < scr_dyn_obj_count(node); i++) { + ScrDynProp ent = scr_dyn_obj_prop_at(node, i); + if (ent.key_len == 5 && memcmp(ent.key, "cause", 5) == 0) { + *enumerable = ent.enumerable; + return ent.value; } } return NULL; @@ -1176,9 +1179,9 @@ static ScrDyn *insp_error_cause(ScrError *e, bool *enumerable, ScrDyn **view) { * other non-enumerable property of an error. */ bool scr_insp_error_bag_has_properties(ScrDyn *bag) { if (bag == NULL || bag->kind != SCR_DYN_OBJ) return false; - for (size_t i = 0; i < bag->v.obj.len; i++) { - const ScrDynEntry *ent = &bag->v.obj.entries[i]; - if (ent->enumerable && !(ent->key_len == 5 && memcmp(ent->key, "cause", 5) == 0)) return true; + for (size_t i = 0; i < scr_dyn_obj_count(bag); i++) { + ScrDynProp ent = scr_dyn_obj_prop_at(bag, i); + if (ent.enumerable && !(ent.key_len == 5 && memcmp(ent.key, "cause", 5) == 0)) return true; } return false; } @@ -1282,7 +1285,7 @@ ScrStr *scr_insp_error(ScrError *e, double recurse, double depth) { * (/^[a-zA-Z_][a-zA-Z_0-9]*$/, '__proto__' excepted), quoted otherwise. */ /* util.inspect's text for an accessor property: [Getter], [Setter] or * [Getter/Setter], by which of the two are functions. +1. */ -static ScrStr *insp_accessor_tag(const ScrDynEntry *ent) { +static ScrStr *insp_accessor_tag(const ScrDynProp *ent) { bool get = ent->getter && ent->getter->kind == SCR_DYN_FUNC; bool set = ent->setter && ent->setter->kind == SCR_DYN_FUNC; const char *text = get && set ? "[Getter/Setter]" : get ? "[Getter]" : set ? "[Setter]" : "undefined"; @@ -1371,12 +1374,12 @@ static ScrDyn *insp_assertion_ellipsis(ScrDyn *value) { * Node's `{ ... }` tail. */ /* An own non-enumerable entry of the error encoding, NULL when absent or * enumerable (an enumerable one prints with the other own keys). */ -static const ScrDynEntry *insp_error_hidden_entry(const ScrDyn *d, const char *key, size_t len) { - for (size_t i = 0; i < d->v.obj.len; i++) { - const ScrDynEntry *ent = &d->v.obj.entries[i]; - if (ent->key_len == len && memcmp(ent->key, key, len) == 0) return ent->enumerable ? NULL : ent; - } - return NULL; +static const ScrDynProp *insp_error_hidden_entry(const ScrDyn *d, const char *key, size_t len, + ScrDynProp *out) { + size_t i = scr_dyn_obj_index_of(d, key, len); + if (i == SIZE_MAX) return NULL; + *out = scr_dyn_obj_prop_at(d, i); + return out->enumerable ? NULL : out; } static ScrStr *scr_insp_dyn_error(ScrDyn *d, double recurse, double depth) { @@ -1390,19 +1393,20 @@ static ScrStr *scr_insp_dyn_error(ScrDyn *d, double recurse, double depth) { memcmp(name->v.str->data, "AssertionError", 14) == 0; double value_depth = assertion ? recurse : depth; size_t extra = 0; - for (size_t i = 0; i < d->v.obj.len; i++) { - ScrDynEntry *ent = &d->v.obj.entries[i]; - if (!ent->enumerable) continue; - if ((ent->key_len == 4 && memcmp(ent->key, "name", 4) == 0) || - (ent->key_len == 7 && memcmp(ent->key, "message", 7) == 0) || - (ent->key_len == 5 && memcmp(ent->key, "stack", 5) == 0)) + for (size_t i = 0; i < scr_dyn_obj_count(d); i++) { + ScrDynProp ent = scr_dyn_obj_prop_at(d, i); + if (!ent.enumerable) continue; + if ((ent.key_len == 4 && memcmp(ent.key, "name", 4) == 0) || + (ent.key_len == 7 && memcmp(ent.key, "message", 7) == 0) || + (ent.key_len == 5 && memcmp(ent.key, "stack", 5) == 0)) continue; extra++; } /* formatError shows a non-enumerable `cause`, and an AggregateError's * `errors` array, after the enumerable keys: `[cause]`, `[errors]`. */ - const ScrDynEntry *cause = insp_error_hidden_entry(d, "cause", 5); - const ScrDynEntry *errors = insp_error_hidden_entry(d, "errors", 6); + ScrDynProp cause_prop, errors_prop; + const ScrDynProp *cause = insp_error_hidden_entry(d, "cause", 5, &cause_prop); + const ScrDynProp *errors = insp_error_hidden_entry(d, "errors", 6, &errors_prop); if (errors && errors->value->kind != SCR_DYN_ARR) errors = NULL; extra += (cause != NULL) + (errors != NULL); InspBuf base = {0}; @@ -1426,20 +1430,20 @@ static ScrStr *scr_insp_dyn_error(ScrDyn *d, double recurse, double depth) { if (extra == 0) return base_str; scr_insp_begin(recurse + 1); scr_insp_seen_push(d); - for (size_t i = 0; i < d->v.obj.len; i++) { - ScrDynEntry *ent = &d->v.obj.entries[i]; - if (!ent->enumerable) continue; - if ((ent->key_len == 4 && memcmp(ent->key, "name", 4) == 0) || - (ent->key_len == 7 && memcmp(ent->key, "message", 7) == 0) || - (ent->key_len == 5 && memcmp(ent->key, "stack", 5) == 0)) + for (size_t i = 0; i < scr_dyn_obj_count(d); i++) { + ScrDynProp ent = scr_dyn_obj_prop_at(d, i); + if (!ent.enumerable) continue; + if ((ent.key_len == 4 && memcmp(ent.key, "name", 4) == 0) || + (ent.key_len == 7 && memcmp(ent.key, "message", 7) == 0) || + (ent.key_len == 5 && memcmp(ent.key, "stack", 5) == 0)) continue; - bool shortened = assertion && ((ent->key_len == 6 && memcmp(ent->key, "actual", 6) == 0) || - (ent->key_len == 8 && memcmp(ent->key, "expected", 8) == 0)); - ScrDyn *shown = shortened ? insp_assertion_ellipsis(ent->value) : scr_dyn_retain(ent->value); + bool shortened = assertion && ((ent.key_len == 6 && memcmp(ent.key, "actual", 6) == 0) || + (ent.key_len == 8 && memcmp(ent.key, "expected", 8) == 0)); + ScrDyn *shown = shortened ? insp_assertion_ellipsis(ent.value) : scr_dyn_retain(ent.value); ScrStr *val = scr_insp_dyn(shown, recurse + 1, value_depth); scr_dyn_release(shown); InspBuf eb = {0}; - insp_key_into(&eb, ent->key, ent->key_len); + insp_key_into(&eb, ent.key, ent.key_len); ib_cstr(&eb, ": "); ib_bytes(&eb, val->data, val->len); scr_str_release(val); @@ -1447,7 +1451,7 @@ static ScrStr *scr_insp_dyn_error(ScrDyn *d, double recurse, double depth) { scr_insp_entry(entry, false); scr_str_release(entry); } - const ScrDynEntry *hidden[] = {cause, errors}; + const ScrDynProp *hidden[] = {cause, errors}; for (size_t i = 0; i < 2; i++) { if (!hidden[i]) continue; ScrStr *val = scr_insp_dyn(hidden[i]->value, recurse + 1, value_depth); @@ -1690,9 +1694,9 @@ static ScrStr *scr_insp_dyn_collection(ScrDyn *d, double recurse, double depth, /* An own symbol-keyed property of `d` (borrowed) this render shows, or * NULL: enumerable ones, and under showHidden the non-enumerable ones too. */ -static ScrDynEntry *scr_insp_symbol_entry(ScrDyn *d, size_t i) { - ScrDynEntry *ent = scr_dyn_own_symbol_entry(d, d->symbol_keys->v.arr.items[i]); - return ent && (ent->enumerable || g_show_hidden) ? ent : NULL; +static bool scr_insp_symbol_entry(ScrDyn *d, size_t i, ScrDynProp *out) { + return scr_dyn_own_symbol_prop(d, d->symbol_keys->v.arr.items[i], out) && + (out->enumerable || g_show_hidden); } /* An ordinary object: `Name { key: value }` with its constructor name @@ -1700,15 +1704,21 @@ static ScrDynEntry *scr_insp_symbol_entry(ScrDyn *d, size_t i) { * enumerable string keys, then the own enumerable symbol keys. */ /* An own entry this render shows: enumerable ones, and under showHidden * the non-enumerable ones too (never the encoding's `%` markers). */ -static bool insp_obj_shows(const ScrDynEntry *ent) { +static bool insp_obj_shows(const ScrDynProp *ent) { return ent->enumerable || (g_show_hidden && !(ent->key_len && ent->key[0] == '%')); } static ScrStr *scr_insp_obj(ScrDyn *d, double recurse, double depth, const char *cls) { size_t shown = 0; - for (size_t i = 0; i < d->v.obj.len; i++) shown += insp_obj_shows(&d->v.obj.entries[i]); + for (size_t i = 0; i < scr_dyn_obj_count(d); i++) { + ScrDynProp ent = scr_dyn_obj_prop_at(d, i); + shown += insp_obj_shows(&ent); + } size_t nsymbols = d->symbol_keys ? d->symbol_keys->v.arr.len : 0; - for (size_t i = 0; i < nsymbols; i++) shown += scr_insp_symbol_entry(d, i) != NULL; + for (size_t i = 0; i < nsymbols; i++) { + ScrDynProp ent; + shown += scr_insp_symbol_entry(d, i, &ent); + } if (shown == 0) { if (cls) return scr_insp_class_tag(cls, " {}"); return d->null_proto ? scr_str_new("[Object: null prototype] {}", 27) @@ -1720,17 +1730,17 @@ static ScrStr *scr_insp_obj(ScrDyn *d, double recurse, double depth, const char : insp_styled_lit("[Object]", 8, INSP_SPECIAL); } scr_insp_begin(recurse + 1); - for (size_t i = 0; i < d->v.obj.len; i++) { - ScrDynEntry *ent = &d->v.obj.entries[i]; - if (!insp_obj_shows(ent)) continue; - ScrStr *val = ent->accessor ? insp_accessor_tag(ent) : scr_insp_dyn(ent->value, recurse + 1, depth); + for (size_t i = 0; i < scr_dyn_obj_count(d); i++) { + ScrDynProp ent = scr_dyn_obj_prop_at(d, i); + if (!insp_obj_shows(&ent)) continue; + ScrStr *val = ent.accessor ? insp_accessor_tag(&ent) : scr_insp_dyn(ent.value, recurse + 1, depth); InspBuf eb = {0}; - if (ent->enumerable) { - insp_key_into(&eb, ent->key, ent->key_len); + if (ent.enumerable) { + insp_key_into(&eb, ent.key, ent.key_len); } else { /* formatProperty's hidden key: the key's rendering in brackets. */ ib_char(&eb, '['); - insp_key_into(&eb, ent->key, ent->key_len); + insp_key_into(&eb, ent.key, ent.key_len); ib_char(&eb, ']'); } ib_cstr(&eb, ": "); @@ -1742,8 +1752,9 @@ static ScrStr *scr_insp_obj(ScrDyn *d, double recurse, double depth, const char if (scr_exc_pending()) break; } for (size_t i = 0; i < nsymbols; i++) { - ScrDynEntry *ent = scr_insp_symbol_entry(d, i); - if (!ent) continue; + ScrDynProp found; + if (!scr_insp_symbol_entry(d, i, &found)) continue; + const ScrDynProp *ent = &found; ScrStr *key = scr_insp_dyn(d->symbol_keys->v.arr.items[i], recurse + 1, depth); ScrStr *val = ent->accessor ? insp_accessor_tag(ent) : scr_insp_dyn(ent->value, recurse + 1, depth); InspBuf eb = {0}; @@ -2063,7 +2074,7 @@ static ScrDyn *insp_inspect_value(void) { ScrDyn *set = scr_dyn_new_func(scr_closure_new((void *)members[i], 0), insp_inspect_member_call, 1, "native:function", members[i]); scr_dyn_obj_set_accessor(table, members[i], strlen(members[i]), get, set); - table->v.obj.entries[table->v.obj.len - 1].enumerable = false; + scr_dyn_obj_set_attrs_at(table, scr_dyn_obj_count(table) - 1, true, false, true); } scr_dyn_release(table); } @@ -2100,15 +2111,15 @@ static ScrDyn *insp_user_options(double depth) { insp_opt_set(options, "getters", scr_dyn_new_bool(false)); insp_opt_set(options, "numericSeparator", scr_dyn_new_bool(false)); if (g_user_options && g_user_options->kind == SCR_DYN_OBJ) { - for (size_t i = 0; i < g_user_options->v.obj.len; i++) { - const ScrDynEntry *ent = &g_user_options->v.obj.entries[i]; - if (!ent->enumerable) continue; - ScrDyn *value = scr_dyn_obj_read((ScrDyn *)g_user_options, ent->key, ent->key_len); + for (size_t i = 0; i < scr_dyn_obj_count(g_user_options); i++) { + ScrDynProp ent = scr_dyn_obj_prop_at(g_user_options, i); + if (!ent.enumerable) continue; + ScrDyn *value = scr_dyn_obj_read((ScrDyn *)g_user_options, ent.key, ent.key_len); if (!value) { scr_dyn_release(options); return NULL; } - scr_dyn_obj_set(options, ent->key, ent->key_len, value); + scr_dyn_obj_set(options, ent.key, ent.key_len, value); } } return options; @@ -2343,9 +2354,12 @@ static ScrStr *scr_insp_dyn_func(ScrDyn *d, double recurse, double depth) { } size_t shown = 0; if (table && table->kind == SCR_DYN_OBJ) { - for (size_t i = 0; i < table->v.obj.len; i++) shown += table->v.obj.entries[i].enumerable; + for (size_t i = 0; i < scr_dyn_obj_count(table); i++) shown += scr_dyn_obj_prop_at(table, i).enumerable; size_t nsymbols = table->symbol_keys ? table->symbol_keys->v.arr.len : 0; - for (size_t i = 0; i < nsymbols; i++) shown += scr_insp_symbol_entry(table, i) != NULL; + for (size_t i = 0; i < nsymbols; i++) { + ScrDynProp ent; + shown += scr_insp_symbol_entry(table, i, &ent); + } } if (shown == 0) { scr_dyn_release(table); @@ -2498,7 +2512,10 @@ ScrStr *scr_insp_dyn(ScrDyn *d, double recurse, double depth) { * own `length` comes first, and non-enumerable properties show too. */ const ScrDyn *props = d->v.arr.properties; size_t nprops = 0; - for (size_t i = 0; props && i < props->v.obj.len; i++) nprops += insp_obj_shows(&props->v.obj.entries[i]); + for (size_t i = 0; props && i < scr_dyn_obj_count(props); i++) { + ScrDynProp ent = scr_dyn_obj_prop_at(props, i); + nprops += insp_obj_shows(&ent); + } /* An instance of a class that extends Array: Node's `Name(length) ` * prefix (scr_arr_copy_metadata names the class). */ const char *cls = props ? props->v.obj.class_name : NULL; @@ -2562,15 +2579,15 @@ ScrStr *scr_insp_dyn(ScrDyn *d, double recurse, double depth) { scr_str_release(s); entries++; } - for (size_t k = 0; props && k < props->v.obj.len; k++) { - const ScrDynEntry *ent = &props->v.obj.entries[k]; - if (!insp_obj_shows(ent)) continue; - ScrStr *val = ent->accessor ? insp_accessor_tag(ent) : scr_insp_dyn(ent->value, recurse + 1, depth); + for (size_t k = 0; props && k < scr_dyn_obj_count(props); k++) { + ScrDynProp ent = scr_dyn_obj_prop_at(props, k); + if (!insp_obj_shows(&ent)) continue; + ScrStr *val = ent.accessor ? insp_accessor_tag(&ent) : scr_insp_dyn(ent.value, recurse + 1, depth); InspBuf eb = {0}; /* formatProperty's hidden key: the key's rendering in brackets. */ - if (!ent->enumerable) ib_char(&eb, '['); - insp_key_into(&eb, ent->key, ent->key_len); - if (!ent->enumerable) ib_char(&eb, ']'); + if (!ent.enumerable) ib_char(&eb, '['); + insp_key_into(&eb, ent.key, ent.key_len); + if (!ent.enumerable) ib_char(&eb, ']'); ib_cstr(&eb, ": "); ib_bytes(&eb, val->data, val->len); scr_str_release(val); @@ -2753,8 +2770,8 @@ ScrStr *scr_insp_dyn(ScrDyn *d, double recurse, double depth) { scr_str_release(iso); ScrStr *prefix = ib_take(&head); bool fields = false; - for (size_t i = 0; i < materialized->v.obj.len && !fields; i++) - fields = materialized->v.obj.entries[i].enumerable; + for (size_t i = 0; i < scr_dyn_obj_count(materialized) && !fields; i++) + fields = scr_dyn_obj_prop_at(materialized, i).enumerable; if (!fields || recurse > depth) { scr_dyn_release(materialized); return prefix; @@ -3323,12 +3340,12 @@ bool scr_insp_format_read_options(const ScrDyn *options, ScrInspFormatOptions *o "maxArrayLength", "maxStringLength", "breakLength", "compact", "sorted", "getters", "numericSeparator", "stylize", }; - for (size_t i = 0; i < options->v.obj.len && !o->user_options; i++) { - const ScrDynEntry *ent = &options->v.obj.entries[i]; - if (!ent->enumerable) continue; + for (size_t i = 0; i < scr_dyn_obj_count(options) && !o->user_options; i++) { + ScrDynProp ent = scr_dyn_obj_prop_at(options, i); + if (!ent.enumerable) continue; bool read = false; for (size_t k = 0; k < sizeof known / sizeof *known && !read; k++) - read = ent->key_len == strlen(known[k]) && memcmp(ent->key, known[k], ent->key_len) == 0; + read = ent.key_len == strlen(known[k]) && memcmp(ent.key, known[k], ent.key_len) == 0; if (!read) o->user_options = options; } } @@ -3436,10 +3453,10 @@ static ScrStr *insp_table_cell(ScrDyn *v) { } const char *base = v->null_proto ? "[Object: null prototype]" : "Object"; size_t n = 0; - for (size_t i = 0; i < v->v.obj.len; i++) { - ScrDynEntry *ent = &v->v.obj.entries[i]; - if (!ent->enumerable) continue; - if (ent->accessor) { + for (size_t i = 0; i < scr_dyn_obj_count(v); i++) { + ScrDynProp ent = scr_dyn_obj_prop_at(v, i); + if (!ent.enumerable) continue; + if (ent.accessor) { static const char message[] = "console.table cells holding accessor properties have no lowering"; scr_throw_error_msg_code(SCR_ERR_ERROR, message, sizeof message - 1, "SC2020"); return scr_str_new("", 0); @@ -3463,12 +3480,12 @@ static ScrStr *insp_table_cell(ScrDyn *v) { } ScrStr *items[2]; size_t count = 0; - for (size_t i = 0; i < v->v.obj.len; i++) { - ScrDynEntry *ent = &v->v.obj.entries[i]; - if (!ent->enumerable) continue; - ScrStr *val = scr_insp_dyn(ent->value, 1, 0); + for (size_t i = 0; i < scr_dyn_obj_count(v); i++) { + ScrDynProp ent = scr_dyn_obj_prop_at(v, i); + if (!ent.enumerable) continue; + ScrStr *val = scr_insp_dyn(ent.value, 1, 0); InspBuf eb = {0}; - insp_key_into(&eb, ent->key, ent->key_len); + insp_key_into(&eb, ent.key, ent.key_len); ib_cstr(&eb, ": "); ib_str(&eb, val); scr_str_release(val); diff --git a/packages/runtime/src/scr_lib.c b/packages/runtime/src/scr_lib.c index 928400da3..0b780603b 100644 --- a/packages/runtime/src/scr_lib.c +++ b/packages/runtime/src/scr_lib.c @@ -716,8 +716,9 @@ ScrDyn *scr_process_versions(void) { scr_dyn_obj_set(scr_versions_object, "openssl", 7, scr_dyn_new_str(openssl)); scr_str_release(node); scr_str_release(openssl); - for (size_t i = 0; i < scr_versions_object->v.obj.len; i++) { - scr_versions_object->v.obj.entries[i].writable = false; + for (size_t i = 0; i < scr_dyn_obj_count(scr_versions_object); i++) { + ScrDynProp prop = scr_dyn_obj_prop_at(scr_versions_object, i); + scr_dyn_obj_set_attrs_at(scr_versions_object, i, false, prop.enumerable, prop.configurable); } scr_atexit(&scr_versions_object_cleanup); } @@ -914,8 +915,8 @@ static void scr_env_store(ScrDyn *out, const char *text, size_t ks, size_t ke, } static int scr_env_entry_order(const void *left, const void *right) { - const ScrDynEntry *a = *(const ScrDynEntry *const *)left; - const ScrDynEntry *b = *(const ScrDynEntry *const *)right; + const ScrDynProp *a = left; + const ScrDynProp *b = right; size_t n = a->key_len < b->key_len ? a->key_len : b->key_len; int cmp = memcmp(a->key, b->key, n); return cmp ? cmp : (a->key_len > b->key_len) - (a->key_len < b->key_len); @@ -991,14 +992,14 @@ static ScrDyn *scr_env_parse_content(const ScrStr *input, bool ordinary) { /* Node's std::map orders UTF-8 keys before installing object properties. * Ordinary objects ignore string-valued __proto__ assignments; loading * the native environment retains that name as an ordinary variable. */ - size_t count = entries->v.obj.len; - const ScrDynEntry **sorted = count ? malloc(count * sizeof(*sorted)) : NULL; + size_t count = scr_dyn_obj_count(entries); + ScrDynProp *sorted = count ? malloc(count * sizeof(*sorted)) : NULL; if (count && !sorted) scr_trap("scriptc: out of memory\n"); - for (size_t i = 0; i < count; i++) sorted[i] = &entries->v.obj.entries[i]; + for (size_t i = 0; i < count; i++) sorted[i] = scr_dyn_obj_prop_at(entries, i); if (count > 1) qsort(sorted, count, sizeof(*sorted), scr_env_entry_order); ScrDyn *result = ordinary ? scr_dyn_new_obj() : scr_dyn_new_obj_null_proto(); for (size_t i = 0; i < count; i++) { - const ScrDynEntry *entry = sorted[i]; + const ScrDynProp *entry = &sorted[i]; if (ordinary && entry->key_len == 9 && memcmp(entry->key, "__proto__", 9) == 0) continue; if (!ordinary) { scr_dyn_obj_set(result, entry->key, entry->key_len, scr_dyn_retain(entry->value)); @@ -1103,15 +1104,15 @@ void scr_process_load_env_file(const ScrDyn *value) { if (!content) return; ScrDyn *entries = scr_env_parse_content(content, false); scr_str_release(content); - for (size_t i = 0; i < entries->v.obj.len; i++) { - const ScrDynEntry *entry = &entries->v.obj.entries[i]; + for (size_t i = 0; i < scr_dyn_obj_count(entries); i++) { + ScrDynProp entry = scr_dyn_obj_prop_at(entries, i); /* Node normalizes each raw sorted entry immediately before checking * the environment. Distinct invalid byte keys can normalize alike; * the first absent name wins, rather than the last parsed entry. */ - ScrStr *key = scr_str_from_utf8_lossy((const uint8_t *)entry->key, entry->key_len); + ScrStr *key = scr_str_from_utf8_lossy((const uint8_t *)entry.key, entry.key_len); ScrStr *existing = scr_env_get(key); if (!existing) { - const ScrStr *raw = entry->value->v.str; + const ScrStr *raw = entry.value->v.str; ScrStr *value = scr_str_from_utf8_lossy((const uint8_t *)raw->data, raw->len); scr_env_set(key, value); scr_str_release(value); @@ -2810,10 +2811,9 @@ ScrDyn *scr_process_release(void) { #endif #undef SCR_RELEASE_FILE #undef SCR_RELEASE_PREFIX - for (size_t i = 0; i < scr_release_object->v.obj.len; i++) { - scr_release_object->v.obj.entries[i].writable = false; - scr_release_object->v.obj.entries[i].configurable = false; - } + for (size_t i = 0; i < scr_dyn_obj_count(scr_release_object); i++) + scr_dyn_obj_set_attrs_at(scr_release_object, i, false, + scr_dyn_obj_prop_at(scr_release_object, i).enumerable, false); scr_atexit(&scr_release_object_cleanup); } return scr_dyn_retain(scr_release_object); diff --git a/packages/runtime/src/scr_message.c b/packages/runtime/src/scr_message.c index d4eb263cf..419dcea4b 100644 --- a/packages/runtime/src/scr_message.c +++ b/packages/runtime/src/scr_message.c @@ -636,9 +636,9 @@ static bool scr_publish_container_ok(const ScrDyn *d) { if (!scr_dyn_is_frozen(d)) return false; if (d->kind == SCR_DYN_ARR) return d->v.arr.properties == NULL; if (d->null_proto || d->v.obj.source_identity || d->v.obj.source_access) return false; - for (size_t i = 0; i < d->v.obj.len; i++) { - const ScrDynEntry *e = &d->v.obj.entries[i]; - if (e->accessor || !e->enumerable) return false; + for (size_t i = 0; i < scr_dyn_obj_count(d); i++) { + ScrDynProp e = scr_dyn_obj_prop_at(d, i); + if (e.accessor || !e.enumerable) return false; } return true; } @@ -666,8 +666,8 @@ static bool scr_publish_collect(ScrPublish *p, ScrDyn *root) { break; case SCR_DYN_OBJ: if (!scr_publish_container_ok(d)) return false; - for (size_t i = 0; i < d->v.obj.len; i++) { - ScrDyn *child = d->v.obj.entries[i].value; + for (size_t i = 0; i < scr_dyn_obj_count(d); i++) { + ScrDyn *child = scr_dyn_obj_value_at(d, i); if (child && !scr_publish_seen(p, child)) scr_publish_push(p, child); } break; @@ -1033,14 +1033,15 @@ ScrDyn *scr_message_decode(const ScrMessage *message) { } else scr_dyn_obj_set(values[i], property->key, property->length, value); } if (node->kind == SCR_MESSAGE_ERROR) { - for (size_t j = 0; j < values[i]->v.obj.len; j++) { - ScrDynEntry *entry = &values[i]->v.obj.entries[j]; - entry->enumerable = false; + for (size_t j = 0; j < scr_dyn_obj_count(values[i]); j++) { + ScrDynProp entry = scr_dyn_obj_prop_at(values[i], j); + bool enumerable = false; for (size_t k = 0; k < node->count; k++) { const ScrMessageProperty *property = &node->properties[k]; - if (!property->hidden && property->length == entry->key_len && !memcmp(property->key, entry->key, entry->key_len)) - entry->enumerable = true; + if (!property->hidden && property->length == entry.key_len && !memcmp(property->key, entry.key, entry.key_len)) + enumerable = true; } + scr_dyn_obj_set_attrs_at(values[i], j, entry.writable, enumerable, entry.configurable); } ScrError *error = scr_errdyn_err_of(values[i]); scr_error_commit_dyn(error, values[i]); diff --git a/packages/runtime/src/scr_os.c b/packages/runtime/src/scr_os.c index 8bc476045..637bb7e61 100644 --- a/packages/runtime/src/scr_os.c +++ b/packages/runtime/src/scr_os.c @@ -745,9 +745,8 @@ double scr_os_cpus_field(double i, double field) { static void scr_os_constant(ScrDyn *o, const char *name, double value) { scr_dyn_obj_set(o, name, strlen(name), scr_dyn_new_num(value)); - ScrDynEntry *entry = &o->v.obj.entries[o->v.obj.len - 1]; - entry->writable = false; - entry->configurable = false; + size_t last = scr_dyn_obj_count(o) - 1; + scr_dyn_obj_set_attrs_at(o, last, false, scr_dyn_obj_prop_at(o, last).enumerable, false); } #define SCR_OS_CONSTANT(o, name) scr_os_constant((o), #name, (double)(name)) @@ -1514,10 +1513,10 @@ ScrDyn *scr_node_constants(const ScrDyn *crypto_table) { scr_os_signal_constants(o); scr_fs_constants(o); if (crypto && crypto->kind == SCR_DYN_OBJ) { - for (size_t i = 0; i < crypto->v.obj.len; i++) { - const ScrDynEntry *entry = &crypto->v.obj.entries[i]; - if (entry->accessor || !entry->value) continue; - scr_dyn_obj_set(o, entry->key, entry->key_len, scr_dyn_retain(entry->value)); + for (size_t i = 0; i < scr_dyn_obj_count(crypto); i++) { + ScrDynProp entry = scr_dyn_obj_prop_at(crypto, i); + if (entry.accessor || !entry.value) continue; + scr_dyn_obj_set(o, entry.key, entry.key_len, scr_dyn_retain(entry.value)); } } scr_dyn_release(crypto); @@ -1718,10 +1717,12 @@ double scr_util_signal_exit_code(const ScrDyn *code) { ScrJsonBuf reason; scr_jb_init(&reason); scr_jb_puts(&reason, "must be one of: "); - for (size_t i = 0; i < signals->v.obj.len; i++) { + for (size_t i = 0; i < scr_dyn_obj_count(signals); i++) { if (i > 0) scr_jb_puts(&reason, ", "); scr_jb_putc(&reason, '\''); - scr_jb_write(&reason, signals->v.obj.entries[i].key, signals->v.obj.entries[i].key_len); + size_t key_len; + const char *key = scr_dyn_obj_key_at(signals, i, &key_len); + scr_jb_write(&reason, key, key_len); scr_jb_putc(&reason, '\''); } ScrStr *text = scr_jb_finish(&reason); diff --git a/packages/runtime/src/scr_publish.c b/packages/runtime/src/scr_publish.c index 8d11d3806..1ba2b22cd 100644 --- a/packages/runtime/src/scr_publish.c +++ b/packages/runtime/src/scr_publish.c @@ -278,8 +278,8 @@ static bool scr_pub_dyn_ok(const ScrDyn *d, const char **why) { *why = "Cannot publish an Object object"; return false; } - for (size_t i = 0; i < d->v.obj.len; i++) - if (d->v.obj.entries[i].accessor) { + for (size_t i = 0; i < scr_dyn_obj_count(d); i++) + if (scr_dyn_obj_prop_at(d, i).accessor) { *why = "Cannot publish an accessor property"; return false; } @@ -325,9 +325,9 @@ void scr_pub_dyn_fn(void *v, ScrPub *ctx) { case SCR_DYN_ARR: case SCR_DYN_OBJ: { if (!scr_pub_dyn_ok(d, &why)) break; - size_t n = d->kind == SCR_DYN_ARR ? d->v.arr.len : d->v.obj.len; + size_t n = d->kind == SCR_DYN_ARR ? d->v.arr.len : scr_dyn_obj_count(d); for (size_t i = 0; i < n; i++) { - ScrDyn *child = d->kind == SCR_DYN_ARR ? d->v.arr.items[i] : d->v.obj.entries[i].value; + ScrDyn *child = d->kind == SCR_DYN_ARR ? d->v.arr.items[i] : scr_dyn_obj_value_at(d, i); if (child && child->rc != SIZE_MAX) SCR_PUB_ADD((uintptr_t)child); } break; diff --git a/packages/runtime/src/scr_region.c b/packages/runtime/src/scr_region.c index 25bbcf7ae..dacd9f163 100644 --- a/packages/runtime/src/scr_region.c +++ b/packages/runtime/src/scr_region.c @@ -858,12 +858,12 @@ static void scr_rgn_walk_dyn(ScrRgnWalk *w, ScrDyn *d) { break; case SCR_DYN_OBJ: /* source_identity is owned through its access callback: not walked. */ - for (size_t i = 0; i < d->v.obj.len; i++) { - const ScrDynEntry *e = &d->v.obj.entries[i]; - if (e->accessor) { - scr_rgn_enter(w, e->getter, SCR_RGN_W_DYN, NULL); - scr_rgn_enter(w, e->setter, SCR_RGN_W_DYN, NULL); - } else scr_rgn_enter(w, e->value, SCR_RGN_W_DYN, NULL); + for (size_t i = 0; i < scr_dyn_obj_count(d); i++) { + ScrDynProp e = scr_dyn_obj_prop_at(d, i); + if (e.accessor) { + scr_rgn_enter(w, e.getter, SCR_RGN_W_DYN, NULL); + scr_rgn_enter(w, e.setter, SCR_RGN_W_DYN, NULL); + } else scr_rgn_enter(w, e.value, SCR_RGN_W_DYN, NULL); } break; case SCR_DYN_FUNC: scr_rgn_enter(w, d->v.fn.clo, SCR_RGN_W_CLOSURE, NULL); break; diff --git a/packages/runtime/src/scr_symbol.c b/packages/runtime/src/scr_symbol.c index 7e573fc28..372e60702 100644 --- a/packages/runtime/src/scr_symbol.c +++ b/packages/runtime/src/scr_symbol.c @@ -333,7 +333,7 @@ static void scr_dirent_init(void) { scr_dyn_obj_set(proto, methods[i].name, strlen(methods[i].name), scr_dyn_new_func(scr_closure_new(NULL, 0), methods[i].thunk, 0, "native:fs.Dirent", methods[i].name)); - proto->v.obj.entries[proto->v.obj.len - 1].enumerable = false; + scr_dyn_obj_set_attrs_at(proto, scr_dyn_obj_count(proto) - 1, true, false, true); } ScrStr *desc = scr_str_new("type", 4); ScrSym *sym = scr_sym_new(desc); @@ -350,15 +350,14 @@ void scr_dyn_dirent_finish(ScrDyn *obj) { scr_dyn_region_store(obj, NULL); /* a prototype store (ScrDynRegion) */ scr_dyn_release(obj->prototype); obj->prototype = scr_dyn_retain(scr_dirent_prototype); - for (size_t i = 0; i < obj->v.obj.len; i++) { - ScrDynEntry *ent = &obj->v.obj.entries[i]; - if (ent->key_len != 6 || memcmp(ent->key, "%dtype", 6) != 0) continue; - ent->enumerable = false; + size_t i = scr_dyn_obj_index_of(obj, "%dtype", 6); + if (i != SIZE_MAX) { + ScrDynProp ent = scr_dyn_obj_prop_at(obj, i); + scr_dyn_obj_set_attrs_at(obj, i, ent.writable, false, ent.configurable); if (!obj->symbol_properties && !obj->symbol_keys) - scr_dyn_symbol_init_own(obj, scr_dirent_type_key, scr_dirent_type_storage, ent->value); + scr_dyn_symbol_init_own(obj, scr_dirent_type_key, scr_dirent_type_storage, ent.value); else - scr_dyn_symbol_key_set(obj, scr_dirent_type_key, ent->value); - break; + scr_dyn_symbol_key_set(obj, scr_dirent_type_key, ent.value); } } diff --git a/packages/runtime/src/scr_tls.c b/packages/runtime/src/scr_tls.c index 547fef27a..76ec48e6c 100644 --- a/packages/runtime/src/scr_tls.c +++ b/packages/runtime/src/scr_tls.c @@ -2597,21 +2597,21 @@ static bool scr_tls_srv_opts_walk_ex(const ScrDyn *opts, const char *api, ScrByt } if (!scr_tls_opts_validate(opts)) return false; /* Node's typed errors first */ bool ok = true; - for (size_t i = 0; ok && i < opts->v.obj.len; i++) { - const ScrDynEntry *e = &opts->v.obj.entries[i]; - const ScrDyn *v = e->value; + for (size_t i = 0; ok && i < scr_dyn_obj_count(opts); i++) { + ScrDynProp e = scr_dyn_obj_prop_at(opts, i); + const ScrDyn *v = e.value; if (v->kind == SCR_DYN_UNDEF) continue; /* an undefined member reads as absent, like Node */ - if (strcmp(e->key, "cert") == 0 || strcmp(e->key, "key") == 0) { + if (strcmp(e.key, "cert") == 0 || strcmp(e.key, "key") == 0) { char what[96]; - snprintf(what, sizeof what, "a %s '%s' option", api, e->key); + snprintf(what, sizeof what, "a %s '%s' option", api, e.key); ScrBytes *b = scr_tls_pem_dyn(v, what, false); if (b == NULL) { ok = false; break; } - ScrBytes **slot = e->key[0] == 'c' ? cert_out : key_out; + ScrBytes **slot = e.key[0] == 'c' ? cert_out : key_out; scr_bytes_release(*slot); *slot = b; continue; } - if (strcmp(e->key, "ca") == 0) { + if (strcmp(e.key, "ca") == 0) { /* the server's `ca` verifies client certificates and completes the * server's own chain (scr_tls_srv_client_auth); a walk without * client certificates drops it */ @@ -2623,7 +2623,7 @@ static bool scr_tls_srv_opts_walk_ex(const ScrDyn *opts, const char *api, ScrByt } continue; } - if (strcmp(e->key, "requestCert") == 0) { + if (strcmp(e.key, "requestCert") == 0) { if (auth != NULL) { auth->request = scr_tls_dyn_truthy(v); continue; @@ -2635,22 +2635,22 @@ static bool scr_tls_srv_opts_walk_ex(const ScrDyn *opts, const char *api, ScrByt } continue; } - if (strcmp(e->key, "rejectUnauthorized") == 0) { + if (strcmp(e.key, "rejectUnauthorized") == 0) { if (auth != NULL) auth->reject = scr_tls_dyn_not_false(v); continue; /* without client certificates it has no effect */ } - if (server_ok && (strcmp(e->key, "ALPNProtocols") == 0 || strcmp(e->key, "minVersion") == 0 || - strcmp(e->key, "maxVersion") == 0)) + if (server_ok && (strcmp(e.key, "ALPNProtocols") == 0 || strcmp(e.key, "minVersion") == 0 || + strcmp(e.key, "maxVersion") == 0)) continue; - if (strcmp(e->key, "SNICallback") == 0) { + if (strcmp(e.key, "SNICallback") == 0) { scr_tls_opt_fence(api, "SNICallback", "SNICallback lowers only on http2.createSecureServer({ allowHTTP1: true, ... }) with a literal options object"); ok = false; continue; } for (size_t k = 0; SCR_TLS_SRV_FENCED_OPTIONS[k] != NULL; k++) { - if (strcmp(e->key, SCR_TLS_SRV_FENCED_OPTIONS[k]) == 0) { - scr_tls_opt_fence(api, e->key, + if (strcmp(e.key, SCR_TLS_SRV_FENCED_OPTIONS[k]) == 0) { + scr_tls_opt_fence(api, e.key, "cert and key (PEM strings or Buffers) are the honestly-implemented members of a runtime options record"); ok = false; break; @@ -2957,17 +2957,17 @@ static const char *const SCR_TLS_WRAP_FENCED_OPTIONS[] = { * certificates are not modeled), SNICallback and ALPNCallback fence. * False with the exception pending. */ static bool scr_tls_wrap_socket_opts_check(const ScrDyn *record, const char *api) { - for (size_t i = 0; record != NULL && i < record->v.obj.len; i++) { - const ScrDynEntry *e = &record->v.obj.entries[i]; - if (e->value->kind == SCR_DYN_UNDEF) continue; - if (strcmp(e->key, "requestCert") == 0) { - if (!scr_tls_dyn_truthy(e->value)) continue; + for (size_t i = 0; record != NULL && i < scr_dyn_obj_count(record); i++) { + ScrDynProp e = scr_dyn_obj_prop_at(record, i); + if (e.value->kind == SCR_DYN_UNDEF) continue; + if (strcmp(e.key, "requestCert") == 0) { + if (!scr_tls_dyn_truthy(e.value)) continue; scr_tls_opt_fence(api, "requestCert", "requestCert lowers with cert and key options, not beside a secureContext"); return false; } - if (strcmp(e->key, "SNICallback") == 0 || strcmp(e->key, "ALPNCallback") == 0) { - scr_tls_opt_fence(api, e->key, + if (strcmp(e.key, "SNICallback") == 0 || strcmp(e.key, "ALPNCallback") == 0) { + scr_tls_opt_fence(api, e.key, "isServer, cert, key, secureContext, ALPNProtocols, minVersion and maxVersion are the implemented members"); return false; } @@ -2980,21 +2980,21 @@ ScrNetSocket *scr_tls_wrap_socket(ScrNetSocket *raw, const ScrDyn *opts /*borrow static const char api[] = "new tls.TLSSocket"; bool is_server = false; const ScrDyn *record = opts != NULL && opts->kind == SCR_DYN_OBJ ? opts : NULL; - for (size_t i = 0; record != NULL && i < record->v.obj.len; i++) { - const ScrDynEntry *e = &record->v.obj.entries[i]; - if (e->value->kind == SCR_DYN_UNDEF) continue; - if (strcmp(e->key, "isServer") == 0) { - is_server = scr_tls_dyn_truthy(e->value); + for (size_t i = 0; record != NULL && i < scr_dyn_obj_count(record); i++) { + ScrDynProp e = scr_dyn_obj_prop_at(record, i); + if (e.value->kind == SCR_DYN_UNDEF) continue; + if (strcmp(e.key, "isServer") == 0) { + is_server = scr_tls_dyn_truthy(e.value); continue; } - if (strcmp(e->key, "secureContext") == 0) { + if (strcmp(e.key, "secureContext") == 0) { scr_tls_opt_fence(api, "secureContext", "secureContext lowers as a member of an options object literal"); return NULL; } for (size_t k = 0; SCR_TLS_WRAP_FENCED_OPTIONS[k] != NULL; k++) { - if (strcmp(e->key, SCR_TLS_WRAP_FENCED_OPTIONS[k]) == 0) { - scr_tls_opt_fence(api, e->key, + if (strcmp(e.key, SCR_TLS_WRAP_FENCED_OPTIONS[k]) == 0) { + scr_tls_opt_fence(api, e.key, "isServer, cert, key, secureContext, ALPNProtocols, minVersion and maxVersion are the implemented members"); return NULL; } @@ -3267,10 +3267,10 @@ static ScrNetSocket *scr_tls_connect_plain(double port, ScrStr *host /*borrowed, /* createSecureContext's version checks come before its other options * (Node's SecureContext constructor). */ if (ok && !scr_tls_versions_dyn(opts, &min_version, &max_version)) ok = false; - for (size_t i = 0; ok && i < opts->v.obj.len; i++) { - const ScrDynEntry *e = &opts->v.obj.entries[i]; - const ScrDyn *v = e->value; - if (strcmp(e->key, "checkServerIdentity") == 0) { + for (size_t i = 0; ok && i < scr_dyn_obj_count(opts); i++) { + ScrDynProp e = scr_dyn_obj_prop_at(opts, i); + const ScrDyn *v = e.value; + if (strcmp(e.key, "checkServerIdentity") == 0) { /* Node spreads user options over the defaults, so a PRESENT key * replaces the builtin verifier even when its value is undefined * — validateFunction then throws for anything non-callable. A @@ -3287,7 +3287,7 @@ static ScrNetSocket *scr_tls_connect_plain(double port, ScrStr *host /*borrowed, continue; } if (v->kind == SCR_DYN_UNDEF) continue; - if (strcmp(e->key, "port") == 0) { + if (strcmp(e.key, "port") == 0) { if (port >= 0) continue; /* the argument form wins, like Node */ if (v->kind == SCR_DYN_NUM) port = v->v.num; else if (v->kind == SCR_DYN_STR) port = strtod(v->v.str->data, NULL); /* Node coerces numeric strings */ @@ -3297,7 +3297,7 @@ static ScrNetSocket *scr_tls_connect_plain(double port, ScrStr *host /*borrowed, } continue; } - if (strcmp(e->key, "host") == 0) { + if (strcmp(e.key, "host") == 0) { if (v->kind == SCR_DYN_STR) opt_host = v->v.str; else { scr_dyn_arg_type_fail("options.host", "of type string", v); @@ -3305,34 +3305,34 @@ static ScrNetSocket *scr_tls_connect_plain(double port, ScrStr *host /*borrowed, } continue; } - if (strcmp(e->key, "rejectUnauthorized") == 0) { + if (strcmp(e.key, "rejectUnauthorized") == 0) { reject = scr_tls_dyn_not_false(v); continue; } - if (strcmp(e->key, "ca") == 0) { + if (strcmp(e.key, "ca") == 0) { scr_bytes_release(ca); if (!scr_tls_ca_dyn(v, "a tls.connect 'ca' option", &ca)) ok = false; continue; } - if (strcmp(e->key, "cert") == 0 || strcmp(e->key, "key") == 0) { - ScrBytes **slot = e->key[0] == 'c' ? &own_cert : &own_key; + if (strcmp(e.key, "cert") == 0 || strcmp(e.key, "key") == 0) { + ScrBytes **slot = e.key[0] == 'c' ? &own_cert : &own_key; scr_bytes_release(*slot); - *slot = scr_tls_pem_dyn(v, e->key[0] == 'c' ? "a tls.connect 'cert' option" : "a tls.connect 'key' option", + *slot = scr_tls_pem_dyn(v, e.key[0] == 'c' ? "a tls.connect 'cert' option" : "a tls.connect 'key' option", false); if (*slot == NULL) ok = false; continue; } - if (strcmp(e->key, "ALPNProtocols") == 0) { + if (strcmp(e.key, "ALPNProtocols") == 0) { alpn_value = v; /* converted after the context options, as TLSSocket does */ continue; } - if (strcmp(e->key, "minVersion") == 0 || strcmp(e->key, "maxVersion") == 0) continue; - if (strcmp(e->key, "timeout") == 0) { + if (strcmp(e.key, "minVersion") == 0 || strcmp(e.key, "maxVersion") == 0) continue; + if (strcmp(e.key, "timeout") == 0) { /* `if (options.timeout) tlssock.setTimeout(options.timeout)` */ timeout_value = scr_tls_dyn_truthy(v) ? v : NULL; continue; } - if (strcmp(e->key, "socket") == 0) { + if (strcmp(e.key, "socket") == 0) { if (v->kind == SCR_DYN_HANDLE && v->v.handle.tag == SCR_DYNH_NET_SOCKET) { wrap = (ScrNetSocket *)v->v.handle.ptr; } else { @@ -3341,7 +3341,7 @@ static ScrNetSocket *scr_tls_connect_plain(double port, ScrStr *host /*borrowed, } continue; } - if (strcmp(e->key, "servername") == 0) { + if (strcmp(e.key, "servername") == 0) { if (v->kind == SCR_DYN_STR) servername = v->v.str; else { scr_dyn_arg_type_fail("options.servername", "of type string", v); @@ -3350,8 +3350,8 @@ static ScrNetSocket *scr_tls_connect_plain(double port, ScrStr *host /*borrowed, continue; } for (size_t k = 0; SCR_TLS_CONNECT_FENCED_OPTIONS[k] != NULL; k++) { - if (strcmp(e->key, SCR_TLS_CONNECT_FENCED_OPTIONS[k]) == 0) { - scr_tls_opt_fence("tls.connect", e->key, + if (strcmp(e.key, SCR_TLS_CONNECT_FENCED_OPTIONS[k]) == 0) { + scr_tls_opt_fence("tls.connect", e.key, "port/host/socket/rejectUnauthorized/ca/servername/ALPNProtocols/minVersion/maxVersion/timeout are the implemented members of a runtime options record"); ok = false; break; diff --git a/packages/runtime/src/scr_util_compare.c b/packages/runtime/src/scr_util_compare.c index 5a15b662f..4c2cb9d16 100644 --- a/packages/runtime/src/scr_util_compare.c +++ b/packages/runtime/src/scr_util_compare.c @@ -26,15 +26,15 @@ static bool util_deep_equal(const ScrDyn *, const ScrDyn *, bool, const ScrDeepF static size_t util_deep_key_count(const ScrDyn *table) { size_t count = 0; - if (table) for (size_t i = 0; i < table->v.obj.len; i++) count += table->v.obj.entries[i].enumerable; + if (table) for (size_t i = 0; i < scr_dyn_obj_count(table); i++) count += scr_dyn_obj_prop_at(table, i).enumerable; return count; } static bool util_deep_same_keys(const ScrDyn *a, const ScrDyn *b) { if (util_deep_key_count(a) != util_deep_key_count(b)) return false; - if (a) for (size_t i = 0; i < a->v.obj.len; i++) { - const ScrDynEntry *e = &a->v.obj.entries[i]; - if (e->enumerable && (!b || !scr_dyn_obj_enumerable(b, e->key, e->key_len))) return false; + if (a) for (size_t i = 0; i < scr_dyn_obj_count(a); i++) { + ScrDynProp e = scr_dyn_obj_prop_at(a, i); + if (e.enumerable && (!b || !scr_dyn_obj_enumerable(b, e.key, e.key_len))) return false; } return true; } @@ -42,14 +42,14 @@ static bool util_deep_same_keys(const ScrDyn *a, const ScrDyn *b) { static ScrDyn *util_deep_constructor(const ScrDyn *value) { for (const ScrDyn *p = value; p; p = p->prototype) { const ScrDyn *table = p->kind == SCR_DYN_OBJ ? p : p->kind == SCR_DYN_ARR ? p->v.arr.properties : NULL; - if (table) for (size_t i = 0; i < table->v.obj.len; i++) { - const ScrDynEntry *e = &table->v.obj.entries[i]; - if (e->key_len == 11 && !memcmp(e->key, "constructor", 11)) { - if (e->accessor) { util_deep_refused("native accessor properties"); return NULL; } - if (p == value && e->value->kind == SCR_DYN_FUNC) { + if (table) for (size_t i = 0; i < scr_dyn_obj_count(table); i++) { + ScrDynProp e = scr_dyn_obj_prop_at(table, i); + if (e.key_len == 11 && !memcmp(e.key, "constructor", 11)) { + if (e.accessor) { util_deep_refused("native accessor properties"); return NULL; } + if (p == value && e.value->kind == SCR_DYN_FUNC) { util_deep_refused("native own constructor functions"); return NULL; } - return scr_dyn_retain(e->value); + return scr_dyn_retain(e.value); } } if (!p->prototype) { @@ -77,8 +77,8 @@ static ScrDyn *util_deep_tag(const ScrDyn *value) { if (!scr_dyn_same_value(keys->v.arr.items[i], key)) continue; // General native getters retain an explicit boundary, including // non-enumerable Symbol.toStringTag descriptors read by Node. - for (size_t j = 0; j < p->symbol_properties->v.obj.len; j++) { - if (p->symbol_properties->v.obj.entries[j].accessor) { + for (size_t j = 0; j < scr_dyn_obj_count(p->symbol_properties); j++) { + if (scr_dyn_obj_prop_at(p->symbol_properties, j).accessor) { scr_dyn_release(key); util_deep_refused("native accessor properties"); return NULL; } } @@ -95,20 +95,21 @@ static bool util_deep_properties(const ScrDyn *a, const ScrDyn *b, bool skip, const ScrDeepFrame *frame) { if (util_deep_key_count(a) != util_deep_key_count(b)) return false; if (!a) return true; - for (size_t i = 0; i < a->v.obj.len; i++) { - const ScrDynEntry *x = &a->v.obj.entries[i]; - if (!x->enumerable) continue; - const ScrDynEntry *y = NULL; - if (b) for (size_t j = 0; j < b->v.obj.len; j++) { - const ScrDynEntry *candidate = &b->v.obj.entries[j]; - if (candidate->enumerable && candidate->key_len == x->key_len && - !memcmp(candidate->key, x->key, x->key_len)) { y = candidate; break; } + for (size_t i = 0; i < scr_dyn_obj_count(a); i++) { + ScrDynProp x = scr_dyn_obj_prop_at(a, i); + if (!x.enumerable) continue; + ScrDynProp yp; + const ScrDynProp *y = NULL; + if (b) for (size_t j = 0; j < scr_dyn_obj_count(b); j++) { + ScrDynProp candidate = scr_dyn_obj_prop_at(b, j); + if (candidate.enumerable && candidate.key_len == x.key_len && + !memcmp(candidate.key, x.key, x.key_len)) { yp = candidate; y = &yp; break; } } if (!y) return false; - if (x->accessor || y->accessor) return util_deep_refused("native accessor properties"); + if (x.accessor || y->accessor) return util_deep_refused("native accessor properties"); // Materializing a cyclic typed child can refresh its ancestor table. // Retain the values before that refresh replaces descriptor storage. - ScrDyn *xv = scr_dyn_retain(x->value), *yv = scr_dyn_retain(y->value); + ScrDyn *xv = scr_dyn_retain(x.value), *yv = scr_dyn_retain(y->value); bool same = util_deep_equal(xv, yv, skip, frame); scr_dyn_release(xv); scr_dyn_release(yv); if (!same) return false; diff --git a/packages/runtime/src/scr_worker_events.c b/packages/runtime/src/scr_worker_events.c index a23395c91..7669c4fb9 100644 --- a/packages/runtime/src/scr_worker_events.c +++ b/packages/runtime/src/scr_worker_events.c @@ -1385,17 +1385,17 @@ static ScrDyn *scr_worker_new_options(double root, ScrStr *filename, ScrDyn *opt scr_dyn_arg_type_fail("options", "object", options); return NULL; } - for (size_t i = 0; i < options->v.obj.len; i++) { - const ScrDynEntry *entry = &options->v.obj.entries[i]; - if (entry->accessor) return scr_worker_refusal("Worker option accessors are not supported yet"); - if (entry->key_len == 10 && !memcmp(entry->key, "workerData", 10)) data = entry->value; - else if (entry->key_len == 4 && !memcmp(entry->key, "argv", 4)) argv = entry->value; - else if (entry->key_len == 12 && !memcmp(entry->key, "transferList", 12)) transfer_list = entry->value; - else if (entry->key_len == 14 && !memcmp(entry->key, "resourceLimits", 14)) limits = entry->value; - else if (entry->key_len == 4 && !memcmp(entry->key, "name", 4)) name = entry->value; - else if (entry->key_len == 6 && !memcmp(entry->key, "stdout", 6)) capture |= scr_dyn_truthy(entry->value) ? 1 : 0; - else if (entry->key_len == 6 && !memcmp(entry->key, "stderr", 6)) capture |= scr_dyn_truthy(entry->value) ? 2 : 0; - else if (entry->key_len == 5 && !memcmp(entry->key, "stdin", 5)) capture |= scr_dyn_truthy(entry->value) ? 4 : 0; + for (size_t i = 0; i < scr_dyn_obj_count(options); i++) { + ScrDynProp entry = scr_dyn_obj_prop_at(options, i); + if (entry.accessor) return scr_worker_refusal("Worker option accessors are not supported yet"); + if (entry.key_len == 10 && !memcmp(entry.key, "workerData", 10)) data = entry.value; + else if (entry.key_len == 4 && !memcmp(entry.key, "argv", 4)) argv = entry.value; + else if (entry.key_len == 12 && !memcmp(entry.key, "transferList", 12)) transfer_list = entry.value; + else if (entry.key_len == 14 && !memcmp(entry.key, "resourceLimits", 14)) limits = entry.value; + else if (entry.key_len == 4 && !memcmp(entry.key, "name", 4)) name = entry.value; + else if (entry.key_len == 6 && !memcmp(entry.key, "stdout", 6)) capture |= scr_dyn_truthy(entry.value) ? 1 : 0; + else if (entry.key_len == 6 && !memcmp(entry.key, "stderr", 6)) capture |= scr_dyn_truthy(entry.value) ? 2 : 0; + else if (entry.key_len == 5 && !memcmp(entry.key, "stdin", 5)) capture |= scr_dyn_truthy(entry.value) ? 4 : 0; else return scr_worker_refusal("This Worker constructor option is not supported yet"); } } diff --git a/packages/runtime/test/object-core.test.ts b/packages/runtime/test/object-core.test.ts new file mode 100644 index 000000000..04f7cfb38 --- /dev/null +++ b/packages/runtime/test/object-core.test.ts @@ -0,0 +1,23 @@ +import { readdirSync, readFileSync } from "node:fs"; +import { join } from "node:path"; +import { expect, test } from "vitest"; + +const src = join(import.meta.dirname, "..", "src"); + +/* Ordinary objects keep their properties behind the object core: units + * outside it read and adjust them through the scr_dyn.h own-property + * accessors (scr_dyn_obj_count, scr_dyn_obj_prop_at, ...), so the core can + * change how it stores them. */ +const CORE = new Set(["scr_json.c", "scr_js_object.c", "scr_dyn.h"]); + +test("only the object core reads ordinary objects' entry storage", () => { + const offenders: string[] = []; + for (const name of readdirSync(src)) { + if (!/\.(c|h)$/.test(name) || name.endsWith(".test.c") || CORE.has(name)) continue; + const lines = readFileSync(join(src, name), "utf8").split("\n"); + lines.forEach((line, i) => { + if (/\bv\.obj\.(entries|len)\b/.test(line)) offenders.push(`${name}:${i + 1}: ${line.trim()}`); + }); + } + expect(offenders).toEqual([]); +}); From 238cb0e7cd3fe23042aed09eee2f68ece1c59f63 Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 07:56:46 -0500 Subject: [PATCH 06/52] Free sanitized fibers' fake stacks --- packages/runtime/src/scr_async.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/runtime/src/scr_async.c b/packages/runtime/src/scr_async.c index f9c6944c2..5d09abc96 100644 --- a/packages/runtime/src/scr_async.c +++ b/packages/runtime/src/scr_async.c @@ -1518,7 +1518,11 @@ static void scr_switch(ScrCtx *from, ScrCtx *to, ScrFiber *to_fiber) { (void)to; scr_trap("scriptc: internal error: native stack switch reached on WASI\n"); #elif defined(SCR_ASAN_FIBERS) - void **save = from_fiber ? &from_fiber->fake_stack : &scr_main_fake_stack; + /* A finished fiber leaves for the last time: a NULL slot has + * AddressSanitizer free its fake stack, which otherwise stays mapped + * until exit. */ + void **save = from_fiber ? (from_fiber->done ? NULL : &from_fiber->fake_stack) + : &scr_main_fake_stack; const void *bottom = to_fiber ? to_fiber->stack : NULL; size_t size = to_fiber ? SCR_FIBER_STACK : 0; __sanitizer_start_switch_fiber(save, bottom, size); @@ -1527,10 +1531,13 @@ static void scr_switch(ScrCtx *from, ScrCtx *to, ScrFiber *to_fiber) { #else swapcontext(from, to); #endif + /* Back in this frame: the context that saved into `save` above runs + * again, whichever fiber `scr_current` names (a finished fiber returns + * to its resumer with no fiber to switch to). */ const void *old_bottom; size_t old_size; - __sanitizer_finish_switch_fiber( - scr_current ? scr_current->fake_stack : scr_main_fake_stack, &old_bottom, &old_size); + __sanitizer_finish_switch_fiber(from_fiber ? from_fiber->fake_stack : scr_main_fake_stack, + &old_bottom, &old_size); #elif defined(SCR_FAST_CTX) scr_ctx_swap(from, to); #else @@ -2228,6 +2235,7 @@ static void scr_prefix_trampoline(void) { scr_als_active = &f->als; entry(f, argpack); scr_current = carrier; + carrier->done = true; /* its stack is freed once the spawner is back */ scr_switch(&carrier->ctx, carrier->return_to, NULL); /* unreachable */ } From 6a8650be5f36e22a744c2e3b01183bf389fc9fca Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 08:22:47 -0500 Subject: [PATCH 07/52] Throw the async generator depth RangeError through scr_throw_error_msg --- packages/runtime/src/scr_async.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/runtime/src/scr_async.c b/packages/runtime/src/scr_async.c index 49ab8ef2f..aed974892 100644 --- a/packages/runtime/src/scr_async.c +++ b/packages/runtime/src/scr_async.c @@ -5868,7 +5868,10 @@ __attribute__((always_inline)) static inline void scr_gen_coro_hop(ScrGen *g, bo static __attribute__((noinline)) void scr_async_gen_coro_in(ScrGen *g) { uintptr_t guard = scr_stack_guard; if (guard != 0 && (uintptr_t)__builtin_frame_address(0) < guard) { - scr_stack_overflow(); + /* scr_stack_overflow's error, thrown here: this unit links without + * scr_context.c in the runtime's own tests. */ + static const char text[] = "Maximum call stack size exceeded"; + scr_throw_error_msg(SCR_ERR_RANGE, text, sizeof text - 1); return; } scr_gen_coro_hop(g, true, false); From b926722ad3dfed5879cad9713146b776717a1ac0 Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 10:16:54 -0500 Subject: [PATCH 08/52] Evaluate writes and indices through missing asserted elements in Node's order `xs[i]!.name = v` threw while it evaluated the receiver, so a missing element skipped the value's side effects and hid an error the value threw. Node evaluates the array, the index, the key and the value, then the write throws "Cannot set properties of undefined". Such a write, in statement or value position, now evaluates them in that order and then tests the element: a missing one throws Node's TypeError, a present one takes the write. The array and the index are held only when the key or the value can assign a binding or field, and a key or value whose evaluation is unobservable stays in the write. A key of any number or string value is named in the message, since the write holds it. An index that replaces the array binding or field (`xs[(xs = other, 0)]!`) ran before the member access and the string conversion read the array, so they read the replacement. The array is now held before such an index, as JavaScript reads it first; an index that cannot assign keeps the plain read. Corpus 7395 covers both orders. --- .../frontend/lowering/expressions/binary.ts | 3 + .../src/frontend/lowering/lower-exprs.ts | 287 +++++++++++++++--- .../src/frontend/lowering/lower-stmts.ts | 29 ++ .../7395-non-null-element-dereference.ts | 42 +++ 4 files changed, 320 insertions(+), 41 deletions(-) diff --git a/packages/compiler/src/frontend/lowering/expressions/binary.ts b/packages/compiler/src/frontend/lowering/expressions/binary.ts index 0d24561de..f65b7f6ba 100644 --- a/packages/compiler/src/frontend/lowering/expressions/binary.ts +++ b/packages/compiler/src/frontend/lowering/expressions/binary.ts @@ -37,6 +37,7 @@ import { dynCompoundValue, lowerAbsenceProbe, lowerDynMemberAssignment, + lowerDereferencedElementAssignment, lowerOptionalNumber, lowerPresenceOperand, nullishBranches, @@ -1029,6 +1030,8 @@ export function lowerBinary(lowerer: Lowerer, expr: ts.BinaryExpression): IrExpr if (prototypeWrite) return prototypeWrite; const callableWrite = lowerNativeFunctionAssignment(lowerer, expr); if (callableWrite) return callableWrite; + const dereferenced = lowerDereferencedElementAssignment(lowerer, expr); + if (dereferenced) return dereferenced; } if ( op === ts.SyntaxKind.QuestionQuestionEqualsToken || diff --git a/packages/compiler/src/frontend/lowering/lower-exprs.ts b/packages/compiler/src/frontend/lowering/lower-exprs.ts index 91864a036..baa3cf913 100644 --- a/packages/compiler/src/frontend/lowering/lower-exprs.ts +++ b/packages/compiler/src/frontend/lowering/lower-exprs.ts @@ -82,6 +82,7 @@ import { unitOnlyUnion } from "../type-mapper.js"; import { lowerYield } from "./lower-generators.js"; import { unionWideningTags } from "../../ir/analysis.js"; import { isSafeToDiscard, isSafeToRepeat } from "./expressions/evaluation-safety.js"; +import { everyExprChild } from "../../ir/traverse.js"; import { hasOptionalChainGuard, isOptionalChainTail } from "./expressions/optional-chains.js"; import { classToStringConversion, classUnionToString } from "./class-to-primitive.js"; import { lowerCjsTopLevelThis, lowerRequireCacheElement } from "./lower-node-module.js"; @@ -1132,17 +1133,50 @@ function assertedElementOperand( : lowerPrimitiveUnionNumber(lowerer, probe, expr, loc); } -/** `xs[i]!` on an array as the receiver of a member read or write - * (`xs[i]!.name`, `xs[i]!.size()`, `xs[i]![0]`, `xs[i]!.name = v`). `!` - * performs no runtime check, so a missing element is undefined there and - * the member access throws Node's TypeError ("Cannot read properties of - * undefined (reading 'name')") instead of the bounds trap. The receiver is - * the element when it is present. Returns null for other reads and uses. */ +/** `xs[i]!` on an array as the receiver of a member read + * (`xs[i]!.name`, `xs[i]!.size()`, `xs[i]![0]`). `!` performs no runtime + * check, so a missing element is undefined there and the member access + * throws Node's TypeError ("Cannot read properties of undefined (reading + * 'name')") instead of the bounds trap. The receiver is the element when it + * is present. A write (`xs[i]!.name = v`) is lowered as a statement by + * lowerDereferencedElementWrite, which evaluates the value before the + * receiver throws; elsewhere it keeps the bounds trap. Returns null for + * other reads and uses. */ function dereferencedElementReceiver( lowerer: Lowerer, expr: ts.NonNullExpression, loc: SrcLoc, ): IrExpr | null { + const use = runtimeOptionalUseOf(expr); + if (!use || isAssignmentTarget(use.access)) return null; + const parts = dereferencedElementParts(lowerer, expr, loc, false); + if (parts?.message == null) return null; + const message = parts.message; + const value: IrExpr = { + kind: "ternary", + cond: parts.present, + then: parts.element, + else_: nodeTypeError(message, parts.element.type, loc), + type: parts.element.type, + loc, + }; + return parts.stmts.length === 0 + ? value + : { kind: "seqExpr", stmts: parts.stmts, result: value, type: value.type, loc }; +} + +/** The parts of a member access through `xs[i]!` (see + * dereferencedElementReceiver): statements that evaluate the array and the + * index, whether the element is present, the element read, and Node's + * TypeError message for a missing one. `hold` keeps the array and the + * index in hidden locals, for a write whose value is evaluated before the + * element is read. */ +export function dereferencedElementParts( + lowerer: Lowerer, + expr: ts.NonNullExpression, + loc: SrcLoc, + hold: boolean, +): { stmts: IrStmt[]; present: IrExpr; element: IrExpr; message: IrExpr | null } | null { let read: ts.Expression = expr.expression; while (ts.isParenthesizedExpression(read)) read = read.expression; if (!ts.isElementAccessExpression(read) || read.questionDotToken) return null; @@ -1155,8 +1189,14 @@ function dereferencedElementReceiver( if (lowerer.nanCodedReads?.counterIndexInBounds(read)) return null; const use = runtimeOptionalUseOf(expr); if (!use || use.optional || use.complex || use.comma || use.kind === "call") return null; - const message = memberAccessMessage(lowerer, use.access); - if (message === null) return null; + // A write holds its key, so the message can name any number or string + // key (dereferencedElementWrite builds it). + const message = + memberAccessMessage(lowerer, use.access) ?? + (hold && ts.isElementAccessExpression(use.access) && namedKey(lowerer, use.access) + ? null + : undefined); + if (message === undefined) return null; if (lowerer.mapTypeOf(lowerer.typeOf(read.argumentExpression))?.kind !== "f64") return null; // The element must already have the asserted type: an element union the // assertion or a guard narrows keeps its checked narrow. @@ -1175,19 +1215,22 @@ function dereferencedElementReceiver( const index = lowerer.lowerExprExpecting(read.argumentExpression, F64); // Plain reads (a local, a field of one) evaluate once more instead of // through a hidden local: the receiver then stays a borrowed element - // read, like the plain `xs[i]` it replaces. + // read, like the plain `xs[i]` it replaces. An index that can assign + // can replace the array binding or field (`xs[(xs = other, 0)]!`), so the + // array is held before it, as JavaScript reads it first. const stmts: IrStmt[] = []; - const stable = (value: IrExpr, name: string): IrExpr => { - if (isSafeToRepeat(value) || plainProjection(value)) return value; + const plain = (value: IrExpr): boolean => + !hold && (isSafeToRepeat(value) || plainProjection(value)); + const held = (value: IrExpr, name: string): IrExpr => { const tmp = lowerer.declareHiddenLocal(name, value.type); stmts.push({ kind: "varDecl", localId: tmp.id, init: value, loc }); return varRef(tmp.id, value.type, loc); }; - const a = stable(arr, "%elementArray"); - const i = stable(index, "%elementIndex"); - const value: IrExpr = { - kind: "ternary", - cond: { + const a = !mayAssign(index) && plain(arr) ? arr : held(arr, "%elementArray"); + const i = plain(index) ? index : held(index, "%elementIndex"); + return { + stmts, + present: { kind: "bin", op: "===", left: { kind: "arrayState", arr: a, index: i, type: F64, loc }, @@ -1195,18 +1238,167 @@ function dereferencedElementReceiver( type: BOOL, loc, }, - then: { kind: "arrayGet", arr: a, index: i, type: elem, loc }, - else_: { - kind: "libCall", - fn: "error.nodeThrow", - args: [numLit(1, loc), strLit("", loc), message], - type: elem, + element: { kind: "arrayGet", arr: a, index: i, type: elem, loc }, + message, + }; +} + +/** A write through `xs[i]!` (`xs[i]!.name = v`, `xs[i]![k] = v`): as in + * Node, the array, the index, the key and the value evaluate in order (the + * statements), then a missing element makes the write throw Node's + * TypeError and a present one takes the write, which reads the element, + * the key and the value through `overrides`. Null for other targets. */ +export function dereferencedElementWrite( + lowerer: Lowerer, + expr: ts.BinaryExpression, +): { + stmts: IrStmt[]; + present: IrExpr; + message: IrExpr; + overrides: { node: ts.Expression; value: IrExpr }[]; +} | null { + if (expr.operatorToken.kind !== ts.SyntaxKind.EqualsToken) return null; + const target = expr.left; + if ( + !(ts.isPropertyAccessExpression(target) || ts.isElementAccessExpression(target)) || + target.questionDotToken || + lowerer.chainRecvByNode.has(target.expression) + ) + return null; + let receiver: ts.Expression = target.expression; + while (ts.isParenthesizedExpression(receiver)) receiver = receiver.expression; + if (!ts.isNonNullExpression(receiver)) return null; + const loc = locOf(expr); + // The key and the value evaluate before the element is read, so the + // array and the index are held when either can assign one of them. + const keyValue = ts.isElementAccessExpression(target) + ? lowerer.lowerExpr(target.argumentExpression) + : null; + const rightValue = lowerer.lowerExpr(expr.right); + const pure = !mayAssign(rightValue) && (keyValue === null || !mayAssign(keyValue)); + const parts = dereferencedElementParts(lowerer, receiver, loc, !pure); + if (parts === null) return null; + const stmts = [...parts.stmts]; + const held = ( + node: ts.Expression, + value: IrExpr, + name: string, + ): { node: ts.Expression; value: IrExpr } => { + // A key or value whose evaluation is unobservable may evaluate in the + // write itself, after the element is tested. + if (isSafeToRepeat(value) || unobservable(value)) return { node, value }; + // A call without a result evaluates to undefined. + if (value.type.kind === "void") { + stmts.push({ kind: "exprStmt", expr: value, loc }); + return { node, value: { kind: "unitLit", unit: "undefined", type: UNDEFINED_T, loc } }; + } + const tmp = lowerer.declareHiddenLocal(name, value.type); + stmts.push({ kind: "varDecl", localId: tmp.id, init: value, loc }); + return { node, value: varRef(tmp.id, value.type, loc) }; + }; + const overrides = [{ node: target.expression, value: parts.element }]; + let message = parts.message; + if (ts.isElementAccessExpression(target) && keyValue !== null) { + const key = held(target.argumentExpression, keyValue, "%elementWriteKey"); + overrides.push(key); + message ??= keyMessage(messageHead(target), key.value, loc); + } + overrides.push(held(expr.right, rightValue, "%elementWriteValue")); + if (message === null) return null; + return { stmts, present: parts.present, message, overrides }; +} + +/** dereferencedElementWrite in value position (`f(xs[i]!.name = v)`). */ +export function lowerDereferencedElementAssignment( + lowerer: Lowerer, + expr: ts.BinaryExpression, +): IrExpr | null { + const write = dereferencedElementWrite(lowerer, expr); + if (write === null) return null; + const loc = locOf(expr); + const value = lowerer.withExpressionOverrides(write.overrides, () => lowerer.lowerExpr(expr)); + return { + kind: "seqExpr", + stmts: write.stmts, + result: { + kind: "ternary", + cond: write.present, + then: value, + else_: nodeTypeError(write.message, value.type, loc), + type: value.type, loc, }, - type: elem, + type: value.type, loc, }; - return stmts.length === 0 ? value : { kind: "seqExpr", stmts, result: value, type: elem, loc }; +} + +/** Whether evaluating `e` has no effect and cannot throw: a discardable + * expression, or the compiler's element-or-undefined read of one. */ +function unobservable(e: IrExpr): boolean { + if (e.kind === "call" && e.callee.startsWith("%arr.idxOr.")) return e.args.every(unobservable); + return isSafeToDiscard(e); +} + +/** Whether evaluating `e` can assign a binding or a field: it contains an + * assignment, an increment, statements, a suspension, or a call that can + * run program code (a library call only through a function it is given). */ +function mayAssign(e: IrExpr): boolean { + switch (e.kind) { + case "call": + // The compiler's element-or-undefined read and union narrows run no + // program code. + if (!e.callee.startsWith("%arr.idxOr.") && !e.callee.startsWith("%union.narrow.")) + return true; + break; + case "assignExpr": + case "incDec": + case "seqExpr": + case "callValue": + case "virtualCall": + case "dynCall": + case "dynInvoke": + case "ffiCall": + case "new": + case "newValue": + case "awaitExpr": + case "awaitUnionExpr": + case "yieldExpr": + return true; + case "closure": + return false; + case "libCall": + if (e.args.some((arg) => arg.type.kind === "func")) return true; + break; + } + return !everyExprChild( + e, + (child) => !mayAssign(child), + () => false, + ); +} + +/** Node's TypeError, thrown in place of a value of `type`. */ +export function nodeTypeError(message: IrExpr, type: IrType, loc: SrcLoc): IrExpr { + return { + kind: "libCall", + fn: "error.nodeThrow", + args: [numLit(1, loc), strLit("", loc), message], + type, + loc, + }; +} + +/** Whether `access` is the target of `=`. */ +function isAssignmentTarget(access: ts.Expression): boolean { + let outer: ts.Expression = access; + while (ts.isParenthesizedExpression(outer.parent)) outer = outer.parent; + const parent = outer.parent; + return ( + ts.isBinaryExpression(parent) && + parent.left === outer && + parent.operatorToken.kind === ts.SyntaxKind.EqualsToken + ); } /** A local, a number literal, or a field or record member read through a @@ -1224,16 +1416,7 @@ function memberAccessMessage( lowerer: Lowerer, access: ts.PropertyAccessExpression | ts.ElementAccessExpression | ts.CallExpression, ): IrExpr | null { - let outer: ts.Expression = access; - while (ts.isParenthesizedExpression(outer.parent)) outer = outer.parent; - const parent = outer.parent; - const setting = - ts.isBinaryExpression(parent) && - parent.left === outer && - parent.operatorToken.kind === ts.SyntaxKind.EqualsToken; - const head = setting - ? "Cannot set properties of undefined (setting '" - : "Cannot read properties of undefined (reading '"; + const head = messageHead(access); const loc = locOf(access); if (ts.isPropertyAccessExpression(access)) { if (ts.isPrivateIdentifier(access.name)) return null; @@ -1249,10 +1432,31 @@ function memberAccessMessage( if (keyType !== "f64" && keyType !== "string") return null; const keyValue = lowerer.lowerExpr(keyNode); if (!isSafeToRepeat(keyValue) || keyValue.type.kind !== keyType) return null; + return keyMessage(head, keyValue, loc); +} + +/** The start of Node's TypeError message for a member access on undefined: + * setting the member when the access is the target of `=`, else reading + * it. */ +function messageHead(access: ts.Expression): string { + return isAssignmentTarget(access) + ? "Cannot set properties of undefined (setting '" + : "Cannot read properties of undefined (reading '"; +} + +/** Whether `access`'s key is typed a number or a string, which the message + * can name from its value. */ +function namedKey(lowerer: Lowerer, access: ts.ElementAccessExpression): boolean { + const kind = lowerer.mapTypeOf(lowerer.typeOf(access.argumentExpression))?.kind; + return kind === "f64" || kind === "string"; +} + +/** The message naming a key from its value (a number or a string), or null + * for another type. */ +function keyMessage(head: string, key: IrExpr, loc: SrcLoc): IrExpr | null { + if (key.type.kind !== "f64" && key.type.kind !== "string") return null; const text: IrExpr = - keyValue.type.kind === "string" - ? keyValue - : { kind: "toString", operand: keyValue, type: STRING, loc }; + key.type.kind === "string" ? key : { kind: "toString", operand: key, type: STRING, loc }; const concat = (left: IrExpr, right: IrExpr): IrExpr => ({ kind: "strConcat", left, @@ -1275,14 +1479,15 @@ function stringElementOrUndefined( if (arr.type.kind !== "array" || arr.type.elem.kind !== "string") return null; const index = lowerer.lowerExprExpecting(read.argumentExpression, F64); const stmts: IrStmt[] = []; - const stable = (value: IrExpr, name: string): IrExpr => { - if (isSafeToRepeat(value)) return value; + const held = (value: IrExpr, name: string): IrExpr => { const tmp = lowerer.declareHiddenLocal(name, value.type); stmts.push({ kind: "varDecl", localId: tmp.id, init: value, loc }); return varRef(tmp.id, value.type, loc); }; - const a = stable(arr, "%elementArray"); - const i = stable(index, "%elementIndex"); + // An index that can assign can replace the array binding or field, so + // the array is held before it, as JavaScript reads it first. + const a = !mayAssign(index) && isSafeToRepeat(arr) ? arr : held(arr, "%elementArray"); + const i = isSafeToRepeat(index) ? index : held(index, "%elementIndex"); const value: IrExpr = { kind: "ternary", cond: { diff --git a/packages/compiler/src/frontend/lowering/lower-stmts.ts b/packages/compiler/src/frontend/lowering/lower-stmts.ts index fc259bbd8..5af5531a7 100644 --- a/packages/compiler/src/frontend/lowering/lower-stmts.ts +++ b/packages/compiler/src/frontend/lowering/lower-stmts.ts @@ -240,10 +240,12 @@ import { globalSymbolKey } from "./expressions/global-symbols.js"; import { identifiersNamed } from "./identifier-uses.js"; import { lowerShortCircuitAssignment } from "./expressions/nullish-assignment.js"; import { + dereferencedElementWrite, jsHoldsDynObject, lowerEnvironmentKey, lowerNativeFunctionAssignment, lowerStrictEquality, + nodeTypeError, } from "./lower-exprs.js"; import { keptIdentityAssertion } from "./assertion-identity.js"; import { isNativeProxyInitializer } from "./expressions/native-proxy.js"; @@ -7944,6 +7946,29 @@ function lowerCjsSingleValueExport( * assignment, and `({ a, b } = e);` (destructuring ASSIGNMENT, which JS * requires parenthesized in statement position) lands in the * object-literal-target branch below. */ +/** dereferencedElementWrite in statement position. */ +function lowerDereferencedElementWrite(lowerer: Lowerer, expr: ts.BinaryExpression): IrStmt | null { + const write = dereferencedElementWrite(lowerer, expr); + if (write === null) return null; + const loc = locOf(expr); + return { + kind: "block", + body: [ + ...write.stmts, + { + kind: "if", + cond: write.present, + then: [ + lowerer.withExpressionOverrides(write.overrides, () => lowerExprStatement(lowerer, expr)), + ], + else_: [{ kind: "exprStmt", expr: nodeTypeError(write.message, VOID, loc), loc }], + loc, + }, + ], + loc, + }; +} + export function lowerExprStatement(lowerer: Lowerer, expr: ts.Expression): IrStmt { const stmtNode = expr.parent; while (ts.isParenthesizedExpression(expr)) expr = expr.expression; @@ -8206,6 +8231,10 @@ export function lowerExprStatement(lowerer: Lowerer, expr: ts.Expression): IrStm const ex = lowerExpandoAssignStmt(lowerer, expr); if (ex) return ex; } + { + const dereferenced = lowerDereferencedElementWrite(lowerer, expr); + if (dereferenced) return dereferenced; + } if (ts.isElementAccessExpression(expr.left)) return lowerer.lowerElementWrite(expr); if (ts.isPropertyAccessExpression(expr.left)) { fenceNodeModuleMutation(lowerer, expr.left, "assignment"); diff --git a/tests/corpus/7395-non-null-element-dereference.ts b/tests/corpus/7395-non-null-element-dereference.ts index fdae23796..41eb6d1db 100644 --- a/tests/corpus/7395-non-null-element-dereference.ts +++ b/tests/corpus/7395-non-null-element-dereference.ts @@ -69,3 +69,45 @@ try { console.log("loop", (e as Error).message, total); } console.log(cells.map((c) => `${c.label}:${c.count}`).join(" ")); + +// A write through a missing element evaluates the key and the value before +// it throws; an error the value throws is the one that propagates. +const events: string[] = []; +const note = (event: string, value: number): number => { + events.push(event); + return value; +}; +attempt("write order", () => { + cells[note("index", 7)]!.count = note("value", 1); +}); +attempt("write key order", () => { + grid[note("row", 9)]![note("column", 0)] = note("cell", 5); +}); +attempt("write literal key", () => { + grid[9]![0] = note("cell 0", 5); +}); +attempt("value throws", () => { + cells[7]!.count = (() => { + throw new Error("from the value"); + })(); +}); +attempt("present write", () => { + cells[0]!.count = note("present", 41) + 1; + return cells[0]!.count; +}); +console.log("events", events.join(",")); + +// The array is read before an index that replaces it. +let current = [new Cell("first")]; +const replace = (): number => { + current = []; + return 0; +}; +attempt("replaced read", () => current[replace()]!.label); +current = [new Cell("second")]; +attempt("replaced write", () => { + current[replace()]!.label = "written"; +}); +let names = ["kept"]; +attempt("replaced string", () => `${names[(names = [], 0)]!}`); +console.log(current.length, names.length); From d1963dc8a51de56795fa47014854a2c5eabda227 Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 11:12:57 -0500 Subject: [PATCH 09/52] Test a scalar optional left of `??` in JavaScript on the typed path In JavaScript, `counts.get(key) ?? 0` on a Map the compiler types as Map is typed `any` by the checker, so `??` was lowered on checked-dynamic values: the `number | undefined` read converted to a dynamic value, which allocated a heap union for every read, and the test ran on that value. When the left of such a `??` is a union of one number, boolean or string arm with undefined or null, and the default has the same type, the test and the default now run on the typed path, where the read needs no heap union, and only the result converts to a dynamic value. Other defaults keep the dynamic path. New corpus program: untyped-nullish-scalar-defaults.mjs. --- .../frontend/lowering/expressions/binary.ts | 14 ++++++ .../untyped-nullish-scalar-defaults.mjs.json | 6 +++ .../test/untyped-nullish-scalar.test.ts | 46 +++++++++++++++++++ .../untyped-nullish-scalar-defaults.mjs | 46 +++++++++++++++++++ .../untyped-nullish-scalar-defaults.mjs.json | 1 + 5 files changed, 113 insertions(+) create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/untyped-nullish-scalar-defaults.mjs.json create mode 100644 packages/compiler/test/untyped-nullish-scalar.test.ts create mode 100644 tests/corpus/untyped-nullish-scalar-defaults.mjs create mode 100644 tests/harness/corpus-costs/untyped-nullish-scalar-defaults.mjs.json diff --git a/packages/compiler/src/frontend/lowering/expressions/binary.ts b/packages/compiler/src/frontend/lowering/expressions/binary.ts index 0d24561de..39b19c7e2 100644 --- a/packages/compiler/src/frontend/lowering/expressions/binary.ts +++ b/packages/compiler/src/frontend/lowering/expressions/binary.ts @@ -388,6 +388,20 @@ export function lowerNullishPair( lowerer.runtimeOptionalArithmeticTypes.set(expr, type); } if (type.kind === "dyn" && lowerer.dynConvertible(left.type)) { + // `counts.get(k) ?? 0` in JavaScript: a scalar optional left and a + // default of its value's type give a scalar, so the test and the default + // run on the typed path and only the result converts. Converting the + // optional left itself would allocate a union for every read. + if (rest.length === 1 && primitive(rest[0]!) && rightType && typeEquals(rightType, rest[0]!)) { + const typed: IrExpr = { + kind: "nullish", + left, + right: lowerer.lowerExprExpecting(expr.right, rest[0]!), + type: rest[0]!, + loc, + }; + return lowerer.coerceToExpected(typed, DYN); + } return { kind: "nullish", left: lowerer.coerceToExpected(left, DYN), diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/untyped-nullish-scalar-defaults.mjs.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/untyped-nullish-scalar-defaults.mjs.json new file mode 100644 index 000000000..2bce0e918 --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/untyped-nullish-scalar-defaults.mjs.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/untyped-nullish-scalar-defaults.mjs" + ], + "diags": [] +} diff --git a/packages/compiler/test/untyped-nullish-scalar.test.ts b/packages/compiler/test/untyped-nullish-scalar.test.ts new file mode 100644 index 000000000..c9e496b88 --- /dev/null +++ b/packages/compiler/test/untyped-nullish-scalar.test.ts @@ -0,0 +1,46 @@ +import { mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; +import { expect, test } from "vitest"; +import { compile, deserializeModule, validateModule } from "../src/index.js"; + +test("`??` in JavaScript tests a scalar optional left on the typed path when the default has its type", async () => { + const dir = mkdtempSync(join(tmpdir(), "scriptc-untyped-nullish-")); + try { + const entry = join(dir, "main.mjs"); + writeFileSync( + entry, + [ + "const counts = new Map();", + 'for (const w of ["a", "b", "a"]) counts.set(w, (counts.get(w) ?? 0) + 1);', + 'console.log(counts.get("a") ?? 0, counts.get("z") ?? "none");', + ].join("\n"), + ); + const output = join(dir, "main.ir.json"); + const lowered = await compile(entry, { outputKind: "ir", outDir: dir, outPath: output }); + if (!lowered.ok) throw new Error(JSON.stringify(lowered.diagnostics)); + const module = deserializeModule(readFileSync(output, "utf8")); + expect(validateModule(module)).toEqual([]); + const nullish: { type: string; left: string }[] = []; + const visit = (node: unknown, parent: string | null): void => { + if (node === null || typeof node !== "object") return; + if (Array.isArray(node)) return node.forEach((child) => visit(child, parent)); + const n = node as { kind?: string; type?: { kind: string }; left?: { kind: string } }; + if (n.kind === "nullish") + nullish.push({ type: `${parent}>${n.type!.kind}`, left: n.left!.kind }); + for (const [key, value] of Object.entries(node)) + if (key !== "loc") visit(value, n.kind ?? parent); + }; + visit(module.functions, null); + // The loop's `?? 0`, whose result is an untyped value, reads the Map's + // number on the typed path and converts only the result. (The first + // console.log argument is a number already.) `?? "none"` takes another + // type, so its left converts first. + expect( + nullish.filter((n) => n.type === "dynFrom>f64" && n.left === "mapIntrinsic"), + ).toHaveLength(1); + expect(nullish.filter((n) => n.type.endsWith(">dyn") && n.left === "dynFrom")).toHaveLength(1); + } finally { + rmSync(dir, { recursive: true, force: true }); + } +}); diff --git a/tests/corpus/untyped-nullish-scalar-defaults.mjs b/tests/corpus/untyped-nullish-scalar-defaults.mjs new file mode 100644 index 000000000..5057e369e --- /dev/null +++ b/tests/corpus/untyped-nullish-scalar-defaults.mjs @@ -0,0 +1,46 @@ +// `??` in untyped JavaScript where the left is an optional number, boolean or +// string and the default has the same type: Map reads, find(), a function that +// may return undefined, and defaults of another type, null or an object. +const words = ["alpha", "beta", "gamma", "beta", "delta", "beta", "alpha"]; +const counts = new Map(); +for (const word of words) counts.set(word, (counts.get(word) ?? 0) + 1); +for (const [word, n] of counts) console.log(word, n); + +const odd = new Map(); +odd.set("nan", NaN); +odd.set("zero", -0); +odd.set("one", 1); +for (const key of ["nan", "zero", "one", "missing"]) { + const value = odd.get(key) ?? 7; + console.log(key, value, Object.is(value, -0), Number.isNaN(value), typeof value); +} + +const flags = new Map(); +flags.set("on", true); +flags.set("off", false); +for (const key of ["on", "off", "missing"]) console.log(key, flags.get(key) ?? true); + +const names = new Map(); +names.set("a", ""); +names.set("b", "bee"); +for (const key of ["a", "b", "c"]) console.log(JSON.stringify(names.get(key) ?? "none")); + +const values = [3, 8, 13, 21]; +console.log(values.find((v) => v > 10) ?? -1, values.find((v) => v > 100) ?? -1); + +function lookup(table, key) { + return key in table ? table[key] : undefined; +} +const table = { x: 1.5, y: 0 }; +console.log(lookup(table, "x") ?? 0, lookup(table, "y") ?? 9, lookup(table, "z") ?? 9); + +// Defaults of another type keep the left's value or take the default as is. +console.log(counts.get("beta") ?? "none", counts.get("omega") ?? "none"); +console.log(counts.get("omega") ?? null, counts.get("beta") ?? null); +const fallback = { n: 0 }; +console.log(counts.get("omega") ?? fallback, counts.get("alpha") ?? fallback); + +// The result is an ordinary value in later arithmetic and comparisons. +let total = 0; +for (const word of ["alpha", "beta", "omega"]) total += (counts.get(word) ?? 0) * 10; +console.log(total, (counts.get("omega") ?? 0) === 0, (odd.get("nan") ?? 0) === (odd.get("nan") ?? 0)); diff --git a/tests/harness/corpus-costs/untyped-nullish-scalar-defaults.mjs.json b/tests/harness/corpus-costs/untyped-nullish-scalar-defaults.mjs.json new file mode 100644 index 000000000..e822c3bda --- /dev/null +++ b/tests/harness/corpus-costs/untyped-nullish-scalar-defaults.mjs.json @@ -0,0 +1 @@ +{ "plain": 3711, "san": 5463 } From dc1e8acc1d6afc84b38d4f7abf836b74dc3b3c04 Mon Sep 17 00:00:00 2001 From: Malte Ubl Date: Mon, 26 Oct 2026 08:28:59 -0700 Subject: [PATCH 10/52] Store ordinary objects as a layout plus value slots A checked object (SCR_DYN_OBJ) now starts in layout mode: v.obj.layout names its key sequence, a node of the thread's interned transition tree, and v.obj.slots holds one 8-byte value per key, where every property used to take a 48-byte entry. All properties of a layout-mode object are writable, enumerable, configurable data properties. An accessor, a non-default attribute, a delete, more than 64 keys, spent layout budgets, publication to other threads, or any code that reads entries directly moves the object to dictionary mode (today's entries) for good, so unported paths stay correct. Layouts replace the dynamic tier's lazily computed hidden classes (ScrJsShape) and keep their budgets. Inline caches key on the layout pointer and read the slot directly; JSON.parse builds objects along layouts; stringify, key enumeration, release, trace and the runtime read cache read slots in place. The emitted index-signature checks read members through runtime accessors. Co-Authored-By: Claude Opus 5.5 --- packages/compiler/src/backend/llvm/dyn.ts | 35 +- packages/compiler/src/backend/llvm/js-ic.ts | 83 +- .../compiler/src/backend/native/executable.ts | 2 +- packages/compiler/src/ir/runtime-features.ts | 2 +- .../runtime-pack-matrix.mjs | 6 +- packages/runtime/src/scr_dyn.h | 169 +++- packages/runtime/src/scr_js.h | 48 +- packages/runtime/src/scr_js_object.c | 297 ++----- packages/runtime/src/scr_js_object.test.c | 11 +- packages/runtime/src/scr_js_object.test.ts | 2 +- packages/runtime/src/scr_json.c | 768 +++++++++++++----- packages/runtime/src/scr_json.test.c | 15 +- packages/runtime/src/scr_message.c | 7 +- packages/runtime/src/scr_message.test.c | 7 +- packages/runtime/src/scr_publish.c | 6 +- packages/runtime/test/object-core.test.ts | 5 +- packages/runtime/test/test_json.c | 8 +- 17 files changed, 882 insertions(+), 589 deletions(-) diff --git a/packages/compiler/src/backend/llvm/dyn.ts b/packages/compiler/src/backend/llvm/dyn.ts index 12ea99688..d797dd5b2 100644 --- a/packages/compiler/src/backend/llvm/dyn.ts +++ b/packages/compiler/src/backend/llvm/dyn.ts @@ -25,10 +25,9 @@ import { InternalCompilerError } from "../../errors.js"; * are selected from the target C ABI. * v.num double | v.b i8 | v.str/v.bytes ptr at +16; * v.arr { len +16, cap +24, items +32 }; - * v.obj { len +16, cap +24, entries +32 }; + * v.obj { len +16 } (own properties; read them through + * scr_dyn_member_*, which know both object modes); * v.fn { clo +16, thunk +24, sig +32, name +40, arity +48 }. - * ScrDynEntry { key, key_len, value, getter, setter, accessor, writable, - * enumerable, configurable } — 48 bytes on 64-bit, 24 on 32-bit. * ScrDynKind: NULL=0 BOOL=1 NUM=2 STR=3 ARR=4 OBJ=5 UNDEF=6 BYTES=7 * FUNC=8 HANDLE=9. * ScrBytes { rc +0; len +8; elem +16; data +24 }. @@ -842,27 +841,23 @@ export class LlDyn { return e; } - /** Object entry field addresses: entries + i*sizeof(ScrDynEntry), with - * key, key_len, and value at offsets 0, 8, and 16 on 64-bit targets. */ + /** Own property i of object `d` (borrowed key bytes, key length and + * value), read through the runtime's accessors: the object may be in + * layout or dictionary mode (scr_dyn.h). */ private entryAt( B: BlockBuilder, - entries: string, + d: string, i: string, ): { key: string; keyLen: string; value: string } { - const off = B.tmp(); - const base = B.tmp(); - B.line(`${off} = mul ${this.S} ${i}, ${this.abiOffset(48, 24)} ; sizeof(ScrDynEntry)`); - B.line(`${base} = getelementptr inbounds i8, ptr ${entries}, ${this.S} ${off}`); + this.host.declare(`declare ptr @scr_dyn_member_key(ptr, ${this.S})`); + this.host.declare(`declare ${this.S} @scr_dyn_member_key_len(ptr, ${this.S})`); + this.host.declare(`declare ptr @scr_dyn_member_value(ptr, ${this.S})`); const key = B.tmp(); - B.line(`${key} = load ptr, ptr ${base}`); - const klp = B.tmp(); const keyLen = B.tmp(); - B.line(`${klp} = getelementptr inbounds i8, ptr ${base}, i64 ${this.abiOffset(8, 4)}`); - B.line(`${keyLen} = load ${this.S}, ptr ${klp}`); - const vp = B.tmp(); const value = B.tmp(); - B.line(`${vp} = getelementptr inbounds i8, ptr ${base}, i64 ${this.abiOffset(16, 8)}`); - B.line(`${value} = load ptr, ptr ${vp}`); + B.line(`${key} = call ptr @scr_dyn_member_key(ptr ${d}, ${this.S} ${i})`); + B.line(`${keyLen} = call ${this.S} @scr_dyn_member_key_len(ptr ${d}, ${this.S} ${i})`); + B.line(`${value} = call ptr @scr_dyn_member_value(ptr ${d}, ${this.S} ${i})`); return { key, keyLen, value }; } @@ -1434,9 +1429,8 @@ export class LlDyn { if (shape.indexValue && shape.indexValue.kind !== "dyn") { this.host.declare(`declare i32 @memcmp(ptr, ptr, ${this.S})`); const n = this.lenOf(B, "%d"); - const entries = this.itemsOf(B, "%d"); this.i64Loop(B, "dm.ov", n, (i, brNext) => { - const ent = this.entryAt(B, entries, i); + const ent = this.entryAt(B, "%d", i); // Skip declared keys. for (const f of shape.fields) { const klen = Buffer.byteLength(f.name, "utf8"); @@ -2770,9 +2764,8 @@ export class LlDyn { B.line(`store i8 ${np}, ptr ${flagsp}`); } const n = this.lenOf(B, "%d"); - const entries = this.itemsOf(B, "%d"); this.i64Loop(B, "dcv", n, (i, brNext) => { - const ent = this.entryAt(B, entries, i); + const ent = this.entryAt(B, "%d", i); for (const f of shape.fields) { const klen = Buffer.byteLength(f.name, "utf8"); const lenEq = B.tmp(); diff --git a/packages/compiler/src/backend/llvm/js-ic.ts b/packages/compiler/src/backend/llvm/js-ic.ts index d51b838bb..dc1aeab16 100644 --- a/packages/compiler/src/backend/llvm/js-ic.ts +++ b/packages/compiler/src/backend/llvm/js-ic.ts @@ -4,13 +4,12 @@ * A property site in a dynamic-tier function owns one zeroed thread-local * ScrJsIc record (`@sc_js_ic_N`). The code at the site is fixed: * - * load ordinary object whose shape is entry 0's own-property shape: - * read entry `slot` inline unless it is an accessor; otherwise - * scr_js_get_probe (polymorphic, prototype hits, absent keys, - * misses) - * store ordinary object whose shape is entry 0's replace shape, outside - * an intact parse region, writable data entry: replace inline; - * otherwise scr_js_store_probe (adds, polymorphic, misses) + * load ordinary object whose layout is entry 0's own-property layout: + * read slot `slot` inline; otherwise scr_js_get_probe + * (polymorphic, prototype hits, absent keys, misses) + * store ordinary object whose layout is entry 0's replace layout, + * outside an intact parse region: replace inline; otherwise + * scr_js_store_probe (adds, polymorphic, misses) * keyed dense array element at an integral number key: inline; * otherwise scr_js_keyed_probe (string keys of ordinary objects) * method dynInvoke's method read: scr_js_load_probe @@ -22,12 +21,13 @@ * defines the operation's semantics; nothing is ever patched. * * Layout facts (64-bit only; 32-bit targets keep the helper calls): - * ScrDyn kind +8; v.obj {len +16, entries +32, region +72, - * shape +80}; v.arr {len +16, items +32, presence +56}; - * v.num +16 - * ScrDynEntry 48 bytes: value +16, accessor bit 0 of +40, writable +41 - * ScrJsIc entries of 40 bytes {shape, target, holder, holder_shape, - * slot}; 168 bytes in all */ + * ScrDyn kind +8; v.obj {len +16, slots +32, region +72, + * layout +80}; v.arr {len +16, items +32, presence +56}; + * v.num +16. Every property of an object with a layout is + * a writable data property (scr_dyn.h's layout mode); + * dictionary-mode objects have a null layout. + * ScrJsIc entries of 40 bytes {layout, target, holder, + * holder_layout, slot}; 168 bytes in all */ import { BOOL, DYN, F64, STRING, type IrExpr, type IrFunction } from "../../ir/ir.js"; import { jsIcMethodSites, type JsIcSite } from "../../ir/js-ic.js"; import { mangleBorrowedFunction } from "../mangle.js"; @@ -42,8 +42,6 @@ type Host = LlvmEmitterContext; /** Words of one ScrJsIc record. */ export const JS_IC_WORDS = 21; -const ENTRY_STRIDE = 48; - /** The cache site a call is, when it is emitted in a dynamic-tier function * of a 64-bit target. */ export function jsIcSiteOf(host: Host, e: ExprOf<"call">): JsIcSite | null { @@ -88,32 +86,17 @@ function kindIs(host: Host, d: string, kind: number, yes: string, no: string): v * the prototype hit made method-heavy code 3-6% faster for 15-90 bytes. * So a site tests entry 0, own or prototype, and its probe does the rest. * (0 makes every access probe: with a runtime built with SCR_JS_VERIFY, - * that checks every cached shape against its object.) */ + * that probes every access.) */ const INLINE_WAYS: number = 1; const INLINE_PROTO = true; -/** The address of entry `slot` of object `d`'s entries. */ -function entryAt(host: Host, d: string, slot: string): string { +/** The address of slot `slot` of layout-mode object `d`. */ +function slotAt(host: Host, d: string, slot: string): string { const B = host.B; - const entries = load(host, "ptr", d, 32); - const offset = B.tmp(); - const entry = B.tmp(); - B.line(`${offset} = mul i64 ${slot}, ${ENTRY_STRIDE}`); - B.line(`${entry} = getelementptr inbounds i8, ptr ${entries}, i64 ${offset}`); - return entry; -} - -/** Branches to `miss` when the entry at `entry` is an accessor. */ -function dataEntry(host: Host, entry: string, miss: string): void { - const B = host.B; - const flags = load(host, "i8", entry, 40); - const accessor = B.tmp(); - const isAccessor = B.tmp(); - B.line(`${accessor} = and i8 ${flags}, 1`); - B.line(`${isAccessor} = icmp ne i8 ${accessor}, 0`); - const data = B.newLabel("ic.data"); - B.condBr(isAccessor, miss, data); - B.startBlock(data); + const slots = load(host, "ptr", d, 32); + const address = B.tmp(); + B.line(`${address} = getelementptr inbounds ptr, ptr ${slots}, i64 ${slot}`); + return address; } /** The inline part of a load site, entered for an ordinary object `d`: @@ -137,7 +120,7 @@ function inlineLoad( B.br(miss); return; } - const shape = load(host, "ptr", d, 80); + const shape = load(host, "ptr", d, 80); // v.obj.layout const present = B.tmp(); B.line(`${present} = icmp ne ptr ${shape}, null`); let next = B.newLabel("ic.w"); @@ -160,9 +143,7 @@ function inlineLoad( B.condBr(own, ownLabel, protoLabel); const hit = (holder: string): void => { const slot = load(host, "i64", ic, base + 32); - const entry = entryAt(host, holder, slot); - dataEntry(host, entry, miss); - const value = load(host, "ptr", entry, 16); + const value = load(host, "ptr", slotAt(host, holder, slot), 0); const out = result(value); incoming.push(`[ ${out}, %${B.currentLabel()} ]`); B.br(join); @@ -194,7 +175,7 @@ function inlineLoad( /** The inline part of a store site that replaces an own data property, * entered for an ordinary object `d` outside an intact parse region: * tests the first `ways` cache entries; a hit calls `store` with the - * address of the entry's value word, which must end its block by + * address of the property's slot, which must end its block by * branching to the site's join. */ function inlineReplace( host: Host, @@ -209,7 +190,7 @@ function inlineReplace( B.br(miss); return; } - const shape = load(host, "ptr", d, 80); + const shape = load(host, "ptr", d, 80); // v.obj.layout const present = B.tmp(); B.line(`${present} = icmp ne ptr ${shape}, null`); let next = B.newLabel("ic.w"); @@ -230,21 +211,7 @@ function inlineReplace( B.condBr(ok, matched, next); B.startBlock(matched); const slot = load(host, "i64", ic, base + 32); - const entry = entryAt(host, d, slot); - const flags = load(host, "i8", entry, 40); - const writable = load(host, "i8", entry, 41); - const accessor = B.tmp(); - const data = B.tmp(); - const canWrite = B.tmp(); - const writes = B.tmp(); - B.line(`${accessor} = and i8 ${flags}, 1`); - B.line(`${data} = icmp eq i8 ${accessor}, 0`); - B.line(`${canWrite} = icmp ne i8 ${writable}, 0`); - B.line(`${writes} = and i1 ${data}, ${canWrite}`); - const hit = B.newLabel("ic.st"); - B.condBr(writes, hit, miss); - B.startBlock(hit); - store(gep(host, entry, 16)); + store(slotAt(host, d, slot)); } } diff --git a/packages/compiler/src/backend/native/executable.ts b/packages/compiler/src/backend/native/executable.ts index abacd5c8c..d940ae604 100644 --- a/packages/compiler/src/backend/native/executable.ts +++ b/packages/compiler/src/backend/native/executable.ts @@ -389,7 +389,7 @@ const RUNTIME_DEFINES: readonly { when: (opts: CcOptions) => boolean | undefined; }[] = [ { define: "SCR_TEXT_DECODER_LEGACY", when: (opts) => opts.textDecoderLegacy }, - // Checked objects carry the dynamic tier's shapes (scr_json.c's SCR_JS_TIER build); only + // scr_json.c's SCR_JS_TIER build exports the dynamic tier's cache primitives; only // programs with dynamic-tier code select it. { define: "SCR_JS_TIER", when: (opts) => opts.dynTier === true }, { define: "SCR_WARNING_REPLACE", when: (opts) => opts.warningReplace }, diff --git a/packages/compiler/src/ir/runtime-features.ts b/packages/compiler/src/ir/runtime-features.ts index 82071fde2..0fb4ce815 100644 --- a/packages/compiler/src/ir/runtime-features.ts +++ b/packages/compiler/src/ir/runtime-features.ts @@ -1369,7 +1369,7 @@ function scanRuntimeFeatures( for (const t of nodes.types) type(t); } else if (keepGoing()) everyModuleNode(mod, { expr, stmt: keepGoing, type }); for (const { name, scan } of scans) if (scan.result()) features[name] = true; - // Inline-cache sites of dynamic-tier functions use the tier's shapes + // Inline-cache sites of dynamic-tier functions use the tier's caches // (scr_js_object.c, with the SCR_JS_TIER build of scr_json.c). if (!features.dynTier && mod.functions.some((fn) => fn.tier === "dynamic")) { const sites = new JsIcSites(mod); diff --git a/packages/runtime-pack-common/runtime-pack-matrix.mjs b/packages/runtime-pack-common/runtime-pack-matrix.mjs index 16178e851..4ba2210fe 100644 --- a/packages/runtime-pack-common/runtime-pack-matrix.mjs +++ b/packages/runtime-pack-common/runtime-pack-matrix.mjs @@ -187,9 +187,9 @@ export const OPTIONAL_RUNTIME_SOURCES = [ export function variantsFor(source) { const variants = [{ id: "default", when: {}, defines: [] }]; - // Programs with dynamic-tier code keep the tier's hidden classes current - // in checked objects (two-tier design S4); every other program links the - // ordinary object, byte for byte. + // Programs with dynamic-tier code link the build that exports the + // primitives the tier's inline caches use (two-tier design S4); every + // other program links the ordinary object, byte for byte. if (source === "scr_json.c") { variants.push({ id: "dyn-tier", when: { dynTier: true }, defines: ["SCR_JS_TIER"] }); } diff --git a/packages/runtime/src/scr_dyn.h b/packages/runtime/src/scr_dyn.h index ebb274a23..c42a7b9e9 100644 --- a/packages/runtime/src/scr_dyn.h +++ b/packages/runtime/src/scr_dyn.h @@ -470,9 +470,16 @@ struct ScrDyn { struct { ScrSym *value; void (*release)(ScrSym *); ScrStr *(*render)(ScrSym *); ScrStr *(*description)(ScrSym *); } symbol; struct { size_t len; size_t cap; ScrDyn **items; struct ScrDyn *properties; bool sealed; bool frozen; unsigned char *presence; struct ScrDynRegion *region; } arr; /* owned; NULL presence means dense; region: see ScrDynRegion */ struct { - size_t len; - size_t cap; - ScrDynEntry *entries; + size_t len; /* own string-keyed properties, in both modes */ + size_t cap; /* capacity of entries (dictionary mode) or slots (layout mode) */ + /* Layout mode (`layout` non-NULL): slots[i] holds the value of the + * property layout->keys[i] names, a writable, enumerable, + * configurable data property. Dictionary mode (`layout` NULL): + * entries hold keys, values and attributes. See ScrLayout. */ + union { + ScrDynEntry *entries; + struct ScrDyn **slots; + }; /* Optional identity of the typed record that produced this ordinary * snapshot. Empty records and callback interfaces can retain their * source across repeated static-to-dynamic crossings. */ @@ -480,7 +487,7 @@ struct ScrDyn { * interfaces may request a fresh snapshot with the true arm. */ void *source_identity; ScrDyn *(*source_access)(void *, bool materialize); - struct ScrDynObjectIndex *index; /* optional wide-object lookup; owns no values */ + struct ScrDynObjectIndex *index; /* dictionary mode: optional wide-object lookup; owns no values */ /* On a runtime-built class prototype (e.g. url.Url.prototype) and * on a compiled class's prototype object: the constructor name * (static or immortal text) util.inspect prints for objects @@ -489,19 +496,13 @@ struct ScrDyn { * exits, and those clear it before release; reuse of a freed object * resets it (scr_dyn_alloc). */ const char *class_name; - union { - struct ScrDynRegion *region; /* see ScrDynRegion */ - /* While the node is pooled: the key bytes it keeps for reuse, - * counted in the pool's key budget (scr_dyn_obj_drop_keys). */ - size_t cached_key_bytes; - }; - /* The dynamic tier's hidden class (scr_js_object.c): the transition - * tree node naming this object's key sequence, or NULL while it has - * none. Only programs with dynamic-tier code read or maintain it: - * their runtime is built with SCR_JS_TIER, where every allocation and - * every change to the key set resets it. Other programs never look - * at it, so it may hold anything there. */ - struct ScrJsShape *shape; + struct ScrDynRegion *region; /* see ScrDynRegion */ + /* The object's layout in layout mode, NULL in dictionary mode. The + * dynamic tier's inline caches key on it. */ + const struct ScrLayout *layout; + /* Layout mode: bit i is the collector's snapshot of whether slot i's + * value is traced (ScrDynEntry.value_traced in dictionary mode). */ + size_t slots_traced; } obj; /* owned */ /* SCR_DYN_FUNC: the boxed closure (owned) + its call descriptor. `sig` * and `name` are static compiler-emitted literals (never freed); name @@ -580,17 +581,86 @@ _Static_assert(offsetof(ScrDyn, v.typed_ref.casts) == 16 + 8 * sizeof(void *), _Static_assert(sizeof(((ScrDyn *)0)->v.arr) <= sizeof(((ScrDyn *)0)->v.typed_ref) && sizeof(((ScrDyn *)0)->v.obj) <= sizeof(((ScrDyn *)0)->v.typed_ref), "dyn region links must not grow the node"); -/* Dynamic-tier inline caches read the shape word in place (64-bit). */ -_Static_assert(sizeof(void *) != 8 || offsetof(ScrDyn, v.obj.shape) == 80, "v.obj.shape offset"); +/* Dynamic-tier inline caches read the layout word and slots in place (64-bit). */ +_Static_assert(sizeof(void *) != 8 || offsetof(ScrDyn, v.obj.layout) == 80, "v.obj.layout offset"); +_Static_assert(sizeof(void *) != 8 || offsetof(ScrDyn, v.obj.slots) == 32, "v.obj.slots offset"); _Static_assert(sizeof(void *) != 8 || offsetof(ScrDyn, v.obj.region) == 72, "v.obj.region offset"); +/* ── layouts ─────────────────────────────────────────────────────────── + * An ordinary object (SCR_DYN_OBJ) is in one of two modes. + * + * Layout mode: v.obj.layout names the object's key sequence, a node of the + * thread's interned transition tree, and v.obj.slots holds one value per + * key (8 bytes per property). Every property of a layout-mode object is a + * writable, enumerable, configurable data property; objects of one key + * sequence share one layout, so a layout pointer proves which key sits at + * each slot and which keys the object lacks (the dynamic tier's inline + * caches key on it). New objects start in layout mode at the thread's + * empty layout. + * + * Dictionary mode: v.obj.layout is NULL and v.obj.entries holds keys, + * values and attributes (ScrDynEntry). An object moves there, once and for + * good, when it gets an accessor, a non-default attribute, a delete, more + * than SCR_LAYOUT_MAX_KEYS keys, when the thread's layout budgets are + * spent, when it is published to other threads, and whenever code that + * reads entries directly touches it (scr_dyn_obj_dict_entries): the conversion + * is unobservable, so code that has not been taught layouts stays correct. + * + * Layouts belong to one thread and live until its runtime state is torn + * down; they are never owned by a parse region. Each holds one reference + * to its key's bytes (scr_json.c's shared key storage). */ +#define SCR_LAYOUT_MAX_KEYS (8 * sizeof(size_t)) + +typedef struct ScrLayoutKey { + char *key; /* shared key bytes; one reference belongs to the layout that added it */ + uint32_t len; + uint32_t hash; /* low bits of scr_key_hash */ +} ScrLayoutKey; + +typedef struct ScrLayout { + const ScrLayoutKey *keys; /* keys[0..count); shared along a chain of layouts */ + uint32_t count; + uint32_t lookup_mask; /* capacity - 1 of `lookup`; 0 while it has none */ + uint8_t *lookup; /* lazily built hash index: slot + 1, 0 = empty */ + const struct ScrLayout *parent; + struct ScrLayout *last_child; /* the most recent transition from here */ + struct ScrLayoutKeys *store; /* the key array `keys` lives in */ + struct ScrLayout *all_next; + bool owns_store; +} ScrLayout; + +/* The index of `key` in layout `layout`, or UINT32_MAX. */ +uint32_t scr_layout_find(const ScrLayout *layout, const char *key, size_t key_len); +/* The layout that appends `key` (borrowed bytes) to `layout`, created on + * first use; NULL past SCR_LAYOUT_MAX_KEYS or the thread's budgets. */ +const ScrLayout *scr_layout_add(const ScrLayout *layout, const char *key, size_t key_len); +/* The thread's empty layout. */ +const ScrLayout *scr_layout_root(void); +/* Moves a layout-mode object to dictionary mode (no-op otherwise). */ +void scr_dyn_to_dictionary(ScrDyn *object); + +/* v.obj.entries of an object in dictionary mode, converting a layout-mode + * object first: code that reads or writes entries directly goes through + * this. */ +static inline __attribute__((always_inline)) ScrDynEntry *scr_dyn_obj_dict_entries(const ScrDyn *object) { + if (__builtin_expect(object->v.obj.layout != NULL, 0)) scr_dyn_to_dictionary((ScrDyn *)object); + return object->v.obj.entries; +} + +/* scr_dyn_obj_key_at and scr_dyn_obj_value_at out of line, for emitted + * code (borrowed results). */ +const char *scr_dyn_member_key(const ScrDyn *object, size_t i); +size_t scr_dyn_member_key_len(const ScrDyn *object, size_t i); +ScrDyn *scr_dyn_member_value(const ScrDyn *object, size_t i); + /* ── own properties of ordinary objects ────────────────────────────── - * Code outside the object core (scr_json.c and scr_js_object.c) reads and + * The accessors are always inlined, so a binary that never sees an + * ordinary object links no out-of-line copies. Code outside the object core (scr_json.c and scr_js_object.c) reads and * adjusts an SCR_DYN_OBJ's own string-keyed properties through these - * accessors, never through v.obj.entries, so the object's storage can - * change underneath (the single object model's generic objects). Index i - * runs over the properties in creation order, 0 <= i < scr_dyn_obj_count. - * Keys and values are borrowed: they stay valid until the object changes. */ + * accessors, never through v.obj.entries or v.obj.slots, so they work in + * both modes. Index i runs over the properties in creation order, + * 0 <= i < scr_dyn_obj_count. Keys and values are borrowed: they stay + * valid until the object changes. */ typedef struct { const char *key; size_t key_len; @@ -603,30 +673,44 @@ typedef struct { bool configurable; } ScrDynProp; -static inline size_t scr_dyn_obj_count(const ScrDyn *o) { +static inline __attribute__((always_inline)) size_t scr_dyn_obj_count(const ScrDyn *o) { return o->v.obj.len; } -static inline const char *scr_dyn_obj_key_at(const ScrDyn *o, size_t i, size_t *key_len) { +static inline __attribute__((always_inline)) const char *scr_dyn_obj_key_at(const ScrDyn *o, size_t i, size_t *key_len) { + const ScrLayout *layout = o->v.obj.layout; + if (layout) { + *key_len = layout->keys[i].len; + return layout->keys[i].key; + } *key_len = o->v.obj.entries[i].key_len; return o->v.obj.entries[i].key; } /* The value of data property i (borrowed); the undefined value for an * accessor property, whose functions scr_dyn_obj_prop_at answers. */ -static inline ScrDyn *scr_dyn_obj_value_at(const ScrDyn *o, size_t i) { - return o->v.obj.entries[i].value; +static inline __attribute__((always_inline)) ScrDyn *scr_dyn_obj_value_at(const ScrDyn *o, size_t i) { + return o->v.obj.layout ? o->v.obj.slots[i] : o->v.obj.entries[i].value; } -static inline ScrDynProp scr_dyn_obj_prop_at(const ScrDyn *o, size_t i) { +static inline __attribute__((always_inline)) ScrDynProp scr_dyn_obj_prop_at(const ScrDyn *o, size_t i) { + const ScrLayout *layout = o->v.obj.layout; + if (layout) + return (ScrDynProp){layout->keys[i].key, layout->keys[i].len, o->v.obj.slots[i], NULL, NULL, + false, true, true, true}; const ScrDynEntry *e = &o->v.obj.entries[i]; return (ScrDynProp){e->key, e->key_len, e->value, e->getter, e->setter, e->accessor, e->writable, e->enumerable, e->configurable}; } -/* The index of own property `key`, or SIZE_MAX. A linear scan: for code - * that looks up options and headers, not for hot property reads. */ +/* The index of own property `key`, or SIZE_MAX. A linear scan in + * dictionary mode: for code that looks up options and headers, not for hot + * property reads. */ static inline size_t scr_dyn_obj_index_of(const ScrDyn *o, const char *key, size_t key_len) { + if (o->v.obj.layout) { + uint32_t i = scr_layout_find(o->v.obj.layout, key, key_len); + return i == UINT32_MAX ? SIZE_MAX : i; + } for (size_t i = 0; i < o->v.obj.len; i++) { const ScrDynEntry *e = &o->v.obj.entries[i]; if (e->key_len == key_len && memcmp(e->key, key, key_len) == 0) return i; @@ -639,7 +723,8 @@ static inline size_t scr_dyn_obj_index_of(const ScrDyn *o, const char *key, size * members this way right after adding them. */ static inline void scr_dyn_obj_set_attrs_at(ScrDyn *o, size_t i, bool writable, bool enumerable, bool configurable) { - ScrDynEntry *e = &o->v.obj.entries[i]; + if (o->v.obj.layout && writable && enumerable && configurable) return; + ScrDynEntry *e = &scr_dyn_obj_dict_entries(o)[i]; if (!e->accessor) e->writable = writable; e->enumerable = enumerable; e->configurable = configurable; @@ -821,6 +906,13 @@ static inline bool scr_dyn_own_symbol_prop(const ScrDyn *object, const ScrDyn *k } /* Copies own property i of `source` to `target` (scr_dyn_copy_entry). */ static inline void scr_dyn_copy_prop_at(ScrDyn *target, const ScrDyn *source, size_t i) { + if (source->v.obj.layout) { + ScrDynProp prop = scr_dyn_obj_prop_at(source, i); + ScrDynEntry entry = {(char *)prop.key, prop.key_len, prop.value, NULL, NULL, + false, false, false, true, true, true}; + scr_dyn_copy_entry(target, source, &entry); + return; + } scr_dyn_copy_entry(target, source, &source->v.obj.entries[i]); } /* The private storage name of a symbol key (+1). With it, @@ -2054,7 +2146,7 @@ void scr_dyn_trace_v(void *d, ScrTraceVisit visit, void *ctx); long scr_dyn_live_count(void); #endif -/* Checked-object primitives the dynamic tier's shapes and caches build on +/* Checked-object primitives the dynamic tier's inline caches build on * (scr_js_object.c). They exist only in the SCR_JS_TIER build of * scr_json.c, which programs with dynamic-tier code link. */ /* The builtin Object.prototype node, or NULL before its first use. */ @@ -2062,12 +2154,9 @@ const ScrDyn *scr_dyn_tier_object_prototype(void); /* A read site's answer for a native array's length or a native iterator's * next (scr_js_get_probe_native): +1, or NULL. */ ScrDyn *scr_dyn_tier_unshaped_get(const ScrDyn *receiver, const ScrStr *key); -/* Shared key bytes for `key` (+1, NUL-terminated), and their release. */ -char *scr_dyn_tier_key_copy(const char *key, size_t key_len); -void scr_dyn_tier_key_release(char *key, size_t key_len); -/* Appends an own data property (writable, enumerable, configurable) that - * `obj` does not have, sharing `key`'s bytes and taking ownership of - * `value`, exactly as an ordinary insertion would; leaves the shape reset. */ -void scr_dyn_tier_append(ScrDyn *obj, char *key, size_t key_len, ScrDyn *value); +/* Appends to a layout-mode object the property that `next`, a child of + * its layout, adds, taking ownership of `value`, exactly as an ordinary + * insertion would. */ +void scr_dyn_tier_append(ScrDyn *obj, const ScrLayout *next, ScrDyn *value); #endif /* SCR_DYN_H */ diff --git a/packages/runtime/src/scr_js.h b/packages/runtime/src/scr_js.h index 5abab2053..e3c37560d 100644 --- a/packages/runtime/src/scr_js.h +++ b/packages/runtime/src/scr_js.h @@ -180,45 +180,37 @@ ScrJsVal scr_js_increment(ScrJsVal value, bool increment); double scr_js_to_number(ScrJsVal value); bool scr_js_truthy(ScrJsVal value); -/* ── shapes and inline caches (scr_js_object.c) ───────────────────────── - * A checked object's hidden class (ScrDyn.v.obj.shape) names its key - * sequence: a node of the thread's transition tree, whose depth is the - * entry count and whose last key sits at entry index depth - 1. Shapes are - * per thread and live until the thread's runtime state is torn down; a - * thread's shape count and the key bytes they hold are bounded, and an - * object whose key sequence would need a shape past either bound stays - * unshaped, as do immortal objects, which threads share. The tier - * computes an object's shape on a cache miss; the SCR_JS_TIER build of - * scr_json.c resets it on every change to the key set. - * Attributes stay in the entries and the prototype in the node: cache hits - * test both live, so a shape only ever proves which key sits at which entry - * index and which keys an object lacks. +/* ── inline caches (scr_js_object.c) ─────────────────────────────────── + * Caches key on object layouts (scr_dyn.h): a layout-mode object's layout + * names its key sequence, and all its properties are writable data + * properties, so a layout proves which key sits at which slot and which + * keys the object lacks. Dictionary-mode objects (layout NULL), including + * immortal objects, which threads share, never hit. The prototype stays in + * the node: cache hits test it live. * * Each property site of compiled dynamic-tier code owns one zeroed, * thread-local ScrJsIc with static storage: the reset that frees a - * thread's shapes (at thread exit, and when a library session ends) clears + * thread's layouts (at thread exit, and when a library session ends) clears * every record that holds entries. The code at the site is fixed: it tests * entry 0 inline and calls a probe for everything else. Probes never run * user code: they answer from plain data properties or return a miss * (NULL / false) with nothing done, and the site then runs its generic * path. * - * load entry: shape = receiver shape; target = NULL for an own property - * (slot indexes the receiver's entries), else the shape of - * `holder`, the receiver's prototype, whose entry `slot` holds it. - * store entry: shape = receiver shape before the store; target == shape - * replaces entry `slot`; any other target adds the key as entry - * `slot` and moves the receiver to `target`. An add requires the - * receiver's prototype to be `holder` (NULL or an object whose - * shape is holder_shape and that lacks the key). - * keyed entry: slot only; a hit compares the key bytes stored there. */ -typedef struct ScrJsShape ScrJsShape; - + * load entry: layout = receiver layout; target = NULL for an own + * property (slot indexes the receiver's slots), else the layout of + * `holder`, the receiver's prototype, whose slot `slot` holds it. + * store entry: layout = receiver layout before the store; target == + * layout replaces slot `slot`; any other target adds the key as + * slot `slot` and moves the receiver to `target`. An add requires + * the receiver's prototype to be `holder` (NULL or an object whose + * layout is holder_layout and that lacks the key). + * keyed entry: slot only; a hit compares the key stored there. */ typedef struct ScrJsIcEntry { - const ScrJsShape *shape; - const ScrJsShape *target; + const ScrLayout *layout; + const ScrLayout *target; const ScrDyn *holder; - const ScrJsShape *holder_shape; + const ScrLayout *holder_layout; size_t slot; } ScrJsIcEntry; diff --git a/packages/runtime/src/scr_js_object.c b/packages/runtime/src/scr_js_object.c index 4cee9e7e8..4d94a4e7e 100644 --- a/packages/runtime/src/scr_js_object.c +++ b/packages/runtime/src/scr_js_object.c @@ -1,19 +1,15 @@ -/* scriptc runtime — the dynamic tier's hidden classes and inline caches - * (scr_js.h; two-tier design stage S4). +/* scriptc runtime — the dynamic tier's inline caches (scr_js.h; two-tier + * design stage S4). * - * Shapes are attached to the existing checked objects (ScrDyn OBJ nodes) - * rather than replacing their entry storage: static code and the shared - * runtime read those entries in place, so a second object representation - * would have to be understood or converted at every boundary. A shape is a - * node of the thread's transition tree over key sequences; an object's - * shape proves which key sits at each entry index and which keys the - * object lacks. Everything else a cache hit depends on is tested live: the - * node kind, the accessor and writable bits of the entry it uses, and the - * prototype pointer. + * Caches key on object layouts (scr_dyn.h): a layout-mode object's layout + * proves which key sits at each slot and which keys the object lacks, and + * every property of such an object is a writable data property, so a hit + * tests the layout word and, for prototype hits, the prototype pointer. + * Dictionary-mode objects (layout NULL) never hit and take the generic + * paths. * * Linked only into programs with dynamic-tier code (the dynTier runtime - * feature), together with the SCR_JS_TIER build of scr_json.c, which - * resets an object's shape on every change to its key set. */ + * feature). */ #include "scr_js.h" #include "scr_key.h" @@ -24,61 +20,26 @@ * backend/llvm/js-ic.ts). */ #if SCR_JS_IMMEDIATES _Static_assert(offsetof(ScrDyn, kind) == 8, "kind offset"); -_Static_assert(offsetof(ScrDyn, v.obj.len) == 16 && offsetof(ScrDyn, v.obj.entries) == 32, - "object entry offsets"); +_Static_assert(offsetof(ScrDyn, v.obj.len) == 16 && offsetof(ScrDyn, v.obj.slots) == 32 && + offsetof(ScrDyn, v.obj.layout) == 80, "object slot offsets"); _Static_assert(offsetof(ScrDyn, v.arr.len) == 16 && offsetof(ScrDyn, v.arr.items) == 32 && offsetof(ScrDyn, v.arr.presence) == 56, "array element offsets"); _Static_assert(offsetof(ScrDyn, prototype) == 96, "prototype offset"); -_Static_assert(sizeof(ScrDynEntry) == 48 && offsetof(ScrDynEntry, value) == 16 && - offsetof(ScrDynEntry, writable) == 41, "entry layout"); _Static_assert(sizeof(ScrJsIcEntry) == 40 && sizeof(ScrJsIc) == 168, "cache layout"); #endif -/* Objects with more entries stay unshaped (dictionary mode): their reads - * take the generic path and its hash index. */ -#define SCR_JS_SHAPE_MAX 64 - -/* Shapes live until the thread exits or a library session ends, so a thread - * creates at most this many, holding at most this many key bytes. Once - * either budget is spent, objects whose key sequence has no shape yet stay - * unshaped; shapes that exist keep serving. */ -#define SCR_JS_SHAPE_BUDGET ((size_t)1 << 16) -#define SCR_JS_SHAPE_KEY_BYTES_BUDGET ((size_t)4 << 20) - -struct ScrJsShape { - const ScrJsShape *parent; - char *key; /* one reference to shared key bytes (scr_json.c) */ - size_t key_len; - uint64_t hash; - uint32_t count; /* entries: the depth in the tree */ - ScrJsShape *all_next; -}; - -/* The root is the empty key sequence. Transitions live in one open - * addressing table per thread keyed by (parent, key). */ -static SCR_TL ScrJsShape scr_js_root; -static SCR_TL ScrJsShape *scr_js_all_shapes; -static SCR_TL ScrJsShape **scr_js_transitions; -static SCR_TL size_t scr_js_transition_mask; /* capacity - 1; 0 when absent */ -static SCR_TL size_t scr_js_transition_count; -static SCR_TL size_t scr_js_shape_key_bytes; -static SCR_TL bool scr_js_shapes_registered; - -/* The cache records that hold entries. Entries name shapes and prototype - * objects, so the reset that frees the shapes also clears these records: a - * library's next session runs the same sites with the same records. */ +/* The cache records that hold entries. Entries name layouts and prototype + * objects, so the reset of a thread's runtime state (which frees its + * layouts) also clears these records: a library's next session runs the + * same sites with the same records. */ static SCR_TL ScrJsIc **scr_js_filled_ics; static SCR_TL size_t scr_js_filled_count; static SCR_TL size_t scr_js_filled_capacity; - -/* The shape word of an object whose key sequence has no shape within the - * budgets. No cache entry names it, so its accesses take the probes, - * which answer with a miss until the key set changes. */ -static ScrJsShape scr_js_unshaped; +static SCR_TL bool scr_js_ics_registered; /* The second-level cache of load sites whose own record is full: one entry - * per (receiver shape, key bytes) slot, filled by the probe and checked like - * a site entry. It names shapes, so the shape reset clears it. */ + * per (receiver layout, key bytes) slot, filled by the probe and checked + * like a site entry. It names layouts, so the reset clears it. */ #define SCR_JS_SHARED_LOADS 2048 typedef struct ScrJsSharedLoad { const char *key; @@ -86,7 +47,7 @@ typedef struct ScrJsSharedLoad { } ScrJsSharedLoad; static SCR_TL ScrJsSharedLoad *scr_js_shared_loads; -static void scr_js_shapes_reset(void) { +static void scr_js_ics_reset(void) { for (size_t i = 0; i < scr_js_filled_count; i++) memset(scr_js_filled_ics[i], 0, sizeof *scr_js_filled_ics[i]); free(scr_js_shared_loads); @@ -95,130 +56,33 @@ static void scr_js_shapes_reset(void) { scr_js_filled_ics = NULL; scr_js_filled_count = 0; scr_js_filled_capacity = 0; - while (scr_js_all_shapes) { - ScrJsShape *shape = scr_js_all_shapes; - scr_js_all_shapes = shape->all_next; - scr_dyn_tier_key_release(shape->key, shape->key_len); - free(shape); - } - free(scr_js_transitions); - scr_js_transitions = NULL; - scr_js_transition_mask = 0; - scr_js_transition_count = 0; - scr_js_shape_key_bytes = 0; - scr_js_shapes_registered = false; + scr_js_ics_registered = false; } -static size_t scr_js_transition_slot(const ScrJsShape *parent, uint64_t hash) { - return (size_t)scr_key_mix(hash ^ (uint64_t)(uintptr_t)parent); -} - -static void scr_js_transition_insert(ScrJsShape *child) { - size_t i = scr_js_transition_slot(child->parent, child->hash) & scr_js_transition_mask; - while (scr_js_transitions[i]) i = (i + 1) & scr_js_transition_mask; - scr_js_transitions[i] = child; -} - -static void scr_js_transitions_grow(void) { - size_t old_cap = scr_js_transition_mask ? scr_js_transition_mask + 1 : 0; - size_t cap = old_cap ? old_cap * 2 : 256; - ScrJsShape **old = scr_js_transitions; - scr_js_transitions = calloc(cap, sizeof *scr_js_transitions); - if (!scr_js_transitions) scr_trap("scriptc: out of memory\n"); - scr_js_transition_mask = cap - 1; - for (size_t i = 0; i < old_cap; i++) - if (old[i]) scr_js_transition_insert(old[i]); - free(old); -} - -/* The child of `parent` for appending `key` (borrowed bytes), created on - * first use; NULL when creating it would exceed a budget. */ -static const ScrJsShape *scr_js_transition(const ScrJsShape *parent, const char *key, size_t key_len) { - uint64_t hash = scr_key_hash(key, key_len); - if (scr_js_transition_mask) { - size_t i = scr_js_transition_slot(parent, hash) & scr_js_transition_mask; - for (ScrJsShape *child; (child = scr_js_transitions[i]); i = (i + 1) & scr_js_transition_mask) { - if (child->parent == parent && child->hash == hash && child->key_len == key_len && - scr_key_equal(child->key, key, key_len)) - return child; - } - } - if (scr_js_transition_count >= SCR_JS_SHAPE_BUDGET || - key_len > SCR_JS_SHAPE_KEY_BYTES_BUDGET - scr_js_shape_key_bytes) - return NULL; - if ((scr_js_transition_count + 1) * 2 > (scr_js_transition_mask ? scr_js_transition_mask + 1 : 0)) - scr_js_transitions_grow(); - ScrJsShape *child = malloc(sizeof *child); - if (!child) scr_trap("scriptc: out of memory\n"); - *child = (ScrJsShape){parent, scr_dyn_tier_key_copy(key, key_len), key_len, hash, parent->count + 1, - scr_js_all_shapes}; - scr_js_all_shapes = child; - if (!scr_js_shapes_registered) { - scr_js_shapes_registered = true; - scr_atexit(scr_js_shapes_reset); - } - scr_js_transition_insert(child); - scr_js_transition_count++; - scr_js_shape_key_bytes += key_len; - return child; -} - -/* An object's shape, computed from its entries when it has none; NULL for - * objects that stay unshaped (other kinds, immortal objects, the builtin - * Object.prototype, dictionary-sized objects, key sequences past the - * budgets). Immortal objects (rc == SIZE_MAX: published graphs, which - * threads share by pointer) are never shaped: shapes belong to one thread - * and die with it, and no thread writes an immortal object's header. */ -#ifdef SCR_JS_VERIFY -/* Debugging aid (build the runtime with -DSCR_JS_VERIFY and compile with - * SCRIPTC_JS_IC_WAYS=0 so every access probes): traps when an object's - * shape no longer names its key sequence, i.e. when some mutation of the - * key set missed its SCR_JS_SHAPE_RESET. */ -static void scr_js_verify(const ScrDyn *object, const ScrJsShape *shape) { - size_t len = object->v.obj.len; - if (shape->count != len) scr_trap("scriptc: stale shape (entry count)\n"); - for (const ScrJsShape *s = shape; s->parent; s = s->parent) { - const ScrDynEntry *entry = &object->v.obj.entries[s->count - 1]; - if (entry->key_len != s->key_len || !scr_key_equal(entry->key, s->key, s->key_len)) - scr_trap("scriptc: stale shape (key)\n"); - } -} -#endif - -static const ScrJsShape *scr_js_shape_of(ScrDyn *object) { +/* An object's layout, or NULL for objects caches leave alone: other kinds, + * dictionary-mode objects (immortal objects, which threads share, are + * always in dictionary mode), and the builtin Object.prototype. */ +static inline const ScrLayout *scr_js_layout_of(const ScrDyn *object) { if (object->kind != SCR_DYN_OBJ || object->rc == SIZE_MAX) return NULL; - const ScrJsShape *shape = object->v.obj.shape; - if (shape == &scr_js_unshaped) return NULL; -#ifdef SCR_JS_VERIFY - if (shape) scr_js_verify(object, shape); -#endif - if (shape) return shape; - size_t len = object->v.obj.len; - if (len > SCR_JS_SHAPE_MAX || object == scr_dyn_tier_object_prototype()) return NULL; - shape = &scr_js_root; - for (size_t i = 0; i < len; i++) { - ScrDynEntry *entry = &object->v.obj.entries[i]; - shape = scr_js_transition(shape, entry->key, entry->key_len); - if (!shape) { - object->v.obj.shape = &scr_js_unshaped; - return NULL; - } - } - object->v.obj.shape = (ScrJsShape *)shape; - return shape; + const ScrLayout *layout = object->v.obj.layout; + if (!layout || object == scr_dyn_tier_object_prototype()) return NULL; + return layout; } -/* The entry index of `key` in an object of shape `shape`, or SIZE_MAX. */ -static size_t scr_js_shape_find(const ScrJsShape *shape, const char *key, size_t key_len) { - for (; shape->parent; shape = shape->parent) - if (shape->key_len == key_len && scr_key_equal(shape->key, key, key_len)) return shape->count - 1; - return SIZE_MAX; +/* The slot of `key` in an object of layout `layout`, or SIZE_MAX. */ +static size_t scr_js_layout_find(const ScrLayout *layout, const char *key, size_t key_len) { + uint32_t slot = scr_layout_find(layout, key, key_len); + return slot == UINT32_MAX ? SIZE_MAX : slot; } /* Fills a cache entry: `stale` (a matching entry whose hit failed) when * there is one, else a free or replaceable one. */ static void scr_js_ic_add(ScrJsIc *ic, uint32_t stale, ScrJsIcEntry entry) { if (ic->count == 0) { + if (!scr_js_ics_registered) { + scr_js_ics_registered = true; + scr_atexit(scr_js_ics_reset); + } if (scr_js_filled_count == scr_js_filled_capacity) { size_t capacity = scr_js_filled_capacity ? scr_js_filled_capacity * 2 : 64; ScrJsIc **grown = realloc(scr_js_filled_ics, capacity * sizeof *grown); @@ -243,26 +107,25 @@ static void scr_js_ic_add(ScrJsIc *ic, uint32_t stale, ScrJsIcEntry entry) { /* ── loads ────────────────────────────────────────────────────────────── */ -/* The cached answer of an entry whose receiver shape matched, or NULL. */ +/* The cached answer of an entry whose receiver layout matched, or NULL. */ static ScrDyn *scr_js_load_hit(ScrDyn *receiver, const ScrJsIcEntry *entry) { const ScrDyn *holder = receiver; if (entry->target) { holder = entry->holder; if (receiver->prototype != holder || holder->kind != SCR_DYN_OBJ || - holder->v.obj.shape != entry->target) + holder->v.obj.layout != entry->target) return NULL; } - const ScrDynEntry *found = &holder->v.obj.entries[entry->slot]; - return found->accessor ? NULL : scr_dyn_retain(found->value); + return scr_dyn_retain(holder->v.obj.slots[entry->slot]); } /* An absent entry: its target is this tag and its holder is a placeholder * that is never a prototype, so the inline test of entry 0 in compiled code * (a prototype hit needs the receiver's prototype to be the holder) always - * sends such a receiver to the probe. Its holder_shape and slot name the one - * prototype the read walked past (shape and object), or NULL and 0 when the - * receiver had no prototype. */ -static const ScrJsShape scr_js_absent; + * sends such a receiver to the probe. Its holder_layout and slot name the + * one prototype the read walked past (layout and object), or NULL and 0 when + * the receiver had no prototype. */ +static const ScrLayout scr_js_absent; static const ScrDyn scr_js_absent_holder; /* Keys whose read on a plain object is not just its [[Get]]: the members of @@ -288,7 +151,7 @@ static bool scr_js_absent_cacheable(const ScrStr *key) { return true; } -static ScrJsSharedLoad *scr_js_shared_load(const ScrJsShape *shape, const ScrStr *key) { +static ScrJsSharedLoad *scr_js_shared_load(const ScrLayout *shape, const ScrStr *key) { if (!scr_js_shared_loads) { scr_js_shared_loads = calloc(SCR_JS_SHARED_LOADS, sizeof *scr_js_shared_loads); if (!scr_js_shared_loads) scr_trap("scriptc: out of memory\n"); @@ -305,7 +168,7 @@ static bool scr_js_absent_hit(const ScrDyn *receiver, const ScrJsIcEntry *entry) const ScrDyn *walked = (const ScrDyn *)entry->slot; if (!walked) return prototype == NULL; return prototype == walked && walked->kind == SCR_DYN_OBJ && - walked->v.obj.shape == entry->holder_shape && walked->prototype == NULL; + walked->v.obj.layout == entry->holder_layout && walked->prototype == NULL; } /* The answer of a matching entry for `receiver`, or NULL when the entry no @@ -344,11 +207,11 @@ static void scr_js_load_fill(ScrJsIc *ic, uint32_t stale, ScrJsSharedLoad *share * methods to the slow path, which names the missing function. */ static __attribute__((noinline)) ScrDyn *scr_js_probe_load(ScrDyn *receiver, const ScrStr *key, ScrJsIc *ic, bool absent) { - const ScrJsShape *shape = scr_js_shape_of(receiver); + const ScrLayout *shape = scr_js_layout_of(receiver); if (!shape) return NULL; uint32_t stale = UINT32_MAX; for (uint32_t i = 0; i < ic->count; i++) { - if (ic->entry[i].shape != shape) continue; + if (ic->entry[i].layout != shape) continue; ScrDyn *value = scr_js_entry_answer(receiver, &ic->entry[i]); if (value) return value; if (stale == UINT32_MAX) stale = i; @@ -356,18 +219,16 @@ static __attribute__((noinline)) ScrDyn *scr_js_probe_load(ScrDyn *receiver, con ScrJsSharedLoad *shared = NULL; if (ic->count == SCR_JS_IC_WAYS) { shared = scr_js_shared_load(shape, key); - if (shared->key == key->data && shared->entry.shape == shape && + if (shared->key == key->data && shared->entry.layout == shape && (absent || shared->entry.target != &scr_js_absent)) { ScrDyn *value = scr_js_entry_answer(receiver, &shared->entry); if (value) return value; } } - size_t slot = scr_js_shape_find(shape, key->data, key->len); + size_t slot = scr_js_layout_find(shape, key->data, key->len); if (slot != SIZE_MAX) { - const ScrDynEntry *found = &receiver->v.obj.entries[slot]; - if (found->accessor) return NULL; scr_js_load_fill(ic, stale, shared, key, (ScrJsIcEntry){shape, NULL, NULL, NULL, slot}); - return scr_dyn_retain(found->value); + return scr_dyn_retain(receiver->v.obj.slots[slot]); } absent = absent && scr_js_absent_cacheable(key); /* One prototype link: an ordinary object other than the builtin @@ -379,9 +240,9 @@ static __attribute__((noinline)) ScrDyn *scr_js_probe_load(ScrDyn *receiver, con (ScrJsIcEntry){shape, &scr_js_absent, &scr_js_absent_holder, NULL, 0}); return scr_dyn_retain(scr_dyn_undefined()); } - const ScrJsShape *holder_shape = scr_js_shape_of(holder); + const ScrLayout *holder_shape = scr_js_layout_of(holder); if (!holder_shape) return NULL; - slot = scr_js_shape_find(holder_shape, key->data, key->len); + slot = scr_js_layout_find(holder_shape, key->data, key->len); if (slot == SIZE_MAX) { if (!absent || holder->prototype != NULL) return NULL; scr_js_load_fill(ic, stale, shared, key, @@ -389,13 +250,11 @@ static __attribute__((noinline)) ScrDyn *scr_js_probe_load(ScrDyn *receiver, con (size_t)holder}); return scr_dyn_retain(scr_dyn_undefined()); } - const ScrDynEntry *found = &holder->v.obj.entries[slot]; - if (found->accessor) return NULL; scr_js_load_fill(ic, stale, shared, key, (ScrJsIcEntry){shape, holder_shape, holder, NULL, slot}); - return scr_dyn_retain(found->value); + return scr_dyn_retain(holder->v.obj.slots[slot]); } -/* Receivers other than ordinary objects have no shape: they miss before +/* Receivers other than ordinary objects have no layout: they miss before * the probe sets up its frame. */ ScrDyn *scr_js_load_probe(ScrDyn *receiver, const ScrStr *key, ScrJsIc *ic) { if (receiver->kind != SCR_DYN_OBJ) return NULL; @@ -427,62 +286,56 @@ static bool scr_js_error_synced_key(const ScrStr *key) { } static bool scr_js_replace(ScrDyn *receiver, size_t slot, ScrDyn *value) { - ScrDynEntry *found = &receiver->v.obj.entries[slot]; - if (found->accessor || !found->writable || found->fenced) return false; scr_dyn_region_store(receiver, value); - ScrDyn *old = found->value; - found->value = scr_dyn_retain(value); + ScrDyn **found = &receiver->v.obj.slots[slot]; + ScrDyn *old = *found; + *found = scr_dyn_retain(value); scr_dyn_release(old); return true; } /* Whether an add may skip the generic path's prototype-chain walk: the * chain is empty, or one ordinary object that lacks the key and ends it. */ -static bool scr_js_add_chain(const ScrDyn *prototype, const ScrJsShape *prototype_shape, +static bool scr_js_add_chain(const ScrDyn *prototype, const ScrLayout *prototype_shape, const ScrStr *key) { if (!prototype) return true; return prototype_shape && !prototype->prototype && - scr_js_shape_find(prototype_shape, key->data, key->len) == SIZE_MAX; + scr_js_layout_find(prototype_shape, key->data, key->len) == SIZE_MAX; } -static bool scr_js_append_shaped(ScrDyn *receiver, const ScrJsShape *target, ScrDyn *value) { +static bool scr_js_append_shaped(ScrDyn *receiver, const ScrLayout *target, ScrDyn *value) { if (receiver->non_extensible) return false; - scr_dyn_tier_append(receiver, target->key, target->key_len, scr_dyn_retain(value)); - receiver->v.obj.shape = (ScrJsShape *)target; + scr_dyn_tier_append(receiver, target, scr_dyn_retain(value)); return true; } bool scr_js_store_probe(ScrDyn *receiver, const ScrStr *key, ScrDyn *value, ScrJsIc *ic) { - const ScrJsShape *shape = scr_js_shape_of(receiver); + const ScrLayout *shape = scr_js_layout_of(receiver); if (!shape || scr_js_error_synced_key(key)) return false; uint32_t stale = UINT32_MAX; for (uint32_t i = 0; i < ic->count; i++) { const ScrJsIcEntry *entry = &ic->entry[i]; - if (entry->shape != shape) continue; + if (entry->layout != shape) continue; if (entry->target == shape) { if (scr_js_replace(receiver, entry->slot, value)) return true; } else if (receiver->prototype == entry->holder && (!entry->holder || (entry->holder->kind == SCR_DYN_OBJ && - entry->holder->v.obj.shape == entry->holder_shape && + entry->holder->v.obj.layout == entry->holder_layout && !entry->holder->prototype))) { if (scr_js_append_shaped(receiver, entry->target, value)) return true; } stale = i; break; } - size_t slot = scr_js_shape_find(shape, key->data, key->len); + size_t slot = scr_js_layout_find(shape, key->data, key->len); if (slot != SIZE_MAX) { - const ScrDynEntry *found = &receiver->v.obj.entries[slot]; - if (found->accessor || !found->writable || found->fenced) return false; scr_js_ic_add(ic, stale, (ScrJsIcEntry){shape, shape, NULL, NULL, slot}); return scr_js_replace(receiver, slot, value); } ScrDyn *prototype = receiver->prototype; - const ScrJsShape *prototype_shape = prototype ? scr_js_shape_of(prototype) : NULL; - if (!scr_js_add_chain(prototype, prototype_shape, key) || receiver->non_extensible || - shape->count >= SCR_JS_SHAPE_MAX) - return false; - const ScrJsShape *target = scr_js_transition(shape, key->data, key->len); + const ScrLayout *prototype_shape = prototype ? scr_js_layout_of(prototype) : NULL; + if (!scr_js_add_chain(prototype, prototype_shape, key) || receiver->non_extensible) return false; + const ScrLayout *target = scr_layout_add(shape, key->data, key->len); if (!target) return false; scr_js_ic_add(ic, stale, (ScrJsIcEntry){shape, target, prototype, prototype_shape, target->count - 1}); return scr_js_append_shaped(receiver, target, value); @@ -505,20 +358,18 @@ ScrDyn *scr_js_keyed_probe(ScrDyn *receiver, const ScrDyn *key, ScrJsIc *ic) { if (key->kind == SCR_DYN_NUM) return scr_js_index_probe(receiver, key->v.num); if (key->kind != SCR_DYN_STR || receiver->kind != SCR_DYN_OBJ) return NULL; const ScrStr *name = key->v.str; + const ScrLayout *shape = scr_js_layout_of(receiver); + if (!shape) return NULL; size_t len = receiver->v.obj.len; for (uint32_t i = 0; i < ic->count; i++) { size_t slot = ic->entry[i].slot; if (slot >= len) continue; - const ScrDynEntry *found = &receiver->v.obj.entries[slot]; - if (found->key_len == name->len && scr_key_equal(found->key, name->data, name->len)) - return found->accessor ? NULL : scr_dyn_retain(found->value); + const ScrLayoutKey *found = &shape->keys[slot]; + if (found->len == name->len && scr_key_equal(found->key, name->data, name->len)) + return scr_dyn_retain(receiver->v.obj.slots[slot]); } - const ScrJsShape *shape = scr_js_shape_of(receiver); - if (!shape) return NULL; - size_t slot = scr_js_shape_find(shape, name->data, name->len); + size_t slot = scr_js_layout_find(shape, name->data, name->len); if (slot == SIZE_MAX) return NULL; - const ScrDynEntry *found = &receiver->v.obj.entries[slot]; - if (found->accessor) return NULL; scr_js_ic_add(ic, UINT32_MAX, (ScrJsIcEntry){NULL, NULL, NULL, NULL, slot}); - return scr_dyn_retain(found->value); + return scr_dyn_retain(receiver->v.obj.slots[slot]); } diff --git a/packages/runtime/src/scr_js_object.test.c b/packages/runtime/src/scr_js_object.test.c index 06b804759..02368ca74 100644 --- a/packages/runtime/src/scr_js_object.test.c +++ b/packages/runtime/src/scr_js_object.test.c @@ -5,7 +5,7 @@ #include #include -/* Mirrors scr_js_object.c's budgets. */ +/* Mirrors scr_json.c's layout budgets. */ #define SHAPE_BUDGET ((size_t)1 << 16) #define KEY_BYTES_BUDGET ((size_t)4 << 20) @@ -63,7 +63,8 @@ static void budget_bounds_shapes(size_t key_len, size_t budget) { scr_str_release(key); scr_dyn_release(object); } - assert(shaped == budget); + /* Objects the earlier checks built hold a few layouts already. */ + assert(shaped <= budget && shaped + 64 > budget); /* A key sequence shaped before the budget ran out. */ ScrStr *first = key_of(bytes, key_len, 0); @@ -73,7 +74,7 @@ static void budget_bounds_shapes(size_t key_len, size_t budget) { /* A store probe that would add a new shape leaves the add to the generic * store; one that replaces through an existing shape still runs. */ memset(&store_ic, 0, sizeof store_ic); - ScrStr *added = scr_str_new("added", 5); + ScrStr *added = key_of(bytes, key_len, budget + 1000); ScrDyn *value = scr_dyn_new_num(8); assert(!scr_js_store_probe(object, added, value, &store_ic)); assert(object->v.obj.len == 1); @@ -94,11 +95,11 @@ static void immortal_objects_stay_unshaped(void) { ScrDyn *object = object_with(key, 3); object->rc = SIZE_MAX; assert(!probe_reads(object, key, 3)); - assert(object->v.obj.shape == NULL); + assert(object->v.obj.len == 1); memset(&store_ic, 0, sizeof store_ic); ScrDyn *value = scr_dyn_new_num(4); assert(!scr_js_store_probe(object, key, value, &store_ic)); - assert(object->v.obj.shape == NULL); + assert(object->v.obj.len == 1); scr_dyn_release(value); scr_str_release(key); } diff --git a/packages/runtime/src/scr_js_object.test.ts b/packages/runtime/src/scr_js_object.test.ts index 1fb90cdaa..49d24f65f 100644 --- a/packages/runtime/src/scr_js_object.test.ts +++ b/packages/runtime/src/scr_js_object.test.ts @@ -7,7 +7,7 @@ import { expect, test } from "vitest"; const exec = promisify(execFile); -test("dynamic-tier shapes stay within the shape and key-byte budgets, and absent reads are cached", async () => { +test("layouts stay within the layout and key-byte budgets, and dynamic-tier absent reads are cached", async () => { const scratch = await mkdtemp(join(tmpdir(), "scriptc-js-object-")); const src = import.meta.dirname; const binary = join(scratch, "js-object"); diff --git a/packages/runtime/src/scr_json.c b/packages/runtime/src/scr_json.c index eb6f931e0..1f5491e1e 100644 --- a/packages/runtime/src/scr_json.c +++ b/packages/runtime/src/scr_json.c @@ -24,16 +24,6 @@ #include "scr_runtime.h" #include "scr_key.h" -/* Programs with dynamic-tier code link the SCR_JS_TIER build of this unit: - * its object nodes carry the tier's hidden class (ScrDyn.v.obj.shape), and - * every allocation and change to an object's key set resets it so the - * tier recomputes it on its next cache miss. Other programs link the - * ordinary build, where this expands to nothing. */ -#ifdef SCR_JS_TIER -#define SCR_JS_SHAPE_RESET(d) ((d)->v.obj.shape = NULL) -#else -#define SCR_JS_SHAPE_RESET(d) ((void)0) -#endif static SCR_TL ScrDyn *scr_builtin_object_prototype; @@ -842,7 +832,7 @@ static size_t scr_dyn_key_slot(const char *key, size_t length) { return hash % SCR_DYN_KEY_SHARE_SLOTS; } -static char *scr_dyn_key_copy(const char *key, size_t length) { +static inline __attribute__((always_inline)) char *scr_dyn_key_copy(const char *key, size_t length) { ScrDynKeySlot *slot = length <= SCR_DYN_KEY_SHARE_LENGTH ? &scr_dyn_keys[scr_dyn_key_slot(key, length)] : NULL; if (slot && slot->key && slot->length == length && @@ -877,6 +867,246 @@ static void scr_dyn_key_release(char *key, size_t length) { free(owned); } +static inline void scr_dyn_key_retain(char *key) { + ((ScrDynKey *)(key - offsetof(ScrDynKey, bytes)))->rc++; +} + +/* ── layouts (scr_dyn.h) ─────────────────────────────────────────────── + * The thread's transition tree: the root is the empty key sequence, and a + * child appends one key to its parent's sequence. Transitions live in one + * open addressing table keyed by (parent, key); each parent also remembers + * its most recent child, which is all a loop building records of one + * shape ever needs. A chain of layouts shares one key array: a child + * appends its key to its parent's array when nothing was appended past the + * parent yet, and copies the parent's keys into a new array otherwise. + * + * A thread creates at most SCR_LAYOUT_BUDGET layouts holding at most + * SCR_LAYOUT_KEY_BYTES_BUDGET key bytes (and key arrays of at most + * SCR_LAYOUT_ARRAY_BYTES_BUDGET); past either, objects whose key sequence + * has no layout yet move to dictionary mode, and layouts that exist keep + * serving. Everything is freed with the thread's runtime state (at thread + * exit and when a library session ends). */ +#define SCR_LAYOUT_BUDGET ((size_t)1 << 16) +#define SCR_LAYOUT_KEY_BYTES_BUDGET ((size_t)4 << 20) +#define SCR_LAYOUT_ARRAY_BYTES_BUDGET ((size_t)16 << 20) +/* Layouts with more keys than this find keys through a hash index. */ +#define SCR_LAYOUT_LINEAR_MAX 8 + +typedef struct ScrLayoutKeys { + uint32_t used; + uint32_t cap; + ScrLayoutKey items[]; +} ScrLayoutKeys; + +static SCR_TL ScrLayout scr_layout_empty; +static SCR_TL ScrLayout *scr_layout_all; +static SCR_TL ScrLayout **scr_layout_transitions; +static SCR_TL size_t scr_layout_transition_mask; /* capacity - 1; 0 when absent */ +static SCR_TL size_t scr_layout_count; +static SCR_TL size_t scr_layout_key_bytes; +static SCR_TL size_t scr_layout_array_bytes; +static SCR_TL bool scr_layout_registered; + +const ScrLayout *scr_layout_root(void) { return &scr_layout_empty; } + +static void scr_layout_reset(void) { + while (scr_layout_all) { + ScrLayout *layout = scr_layout_all; + scr_layout_all = layout->all_next; + const ScrLayoutKey *key = &layout->keys[layout->count - 1]; + scr_dyn_key_release(key->key, key->len); + /* Layouts sharing a key array are newer than the one that owns it. */ + if (layout->owns_store) free(layout->store); + free(layout->lookup); + free(layout); + } + free(scr_layout_empty.lookup); + scr_layout_empty = (ScrLayout){0}; + free(scr_layout_transitions); + scr_layout_transitions = NULL; + scr_layout_transition_mask = 0; + scr_layout_count = 0; + scr_layout_key_bytes = 0; + scr_layout_array_bytes = 0; + scr_layout_registered = false; +} + +#ifdef SCR_RC_AUDIT +/* For the runtime's unit tests: frees the layouts while no object uses one. */ +void scr_layout_reset_idle(void) { scr_layout_reset(); } +#endif + +static size_t scr_layout_slot(const ScrLayout *parent, uint32_t hash) { + return (size_t)scr_key_mix((uint64_t)hash ^ (uint64_t)(uintptr_t)parent); +} + +static void scr_layout_insert(ScrLayout *child) { + size_t i = scr_layout_slot(child->parent, child->keys[child->count - 1].hash) & scr_layout_transition_mask; + while (scr_layout_transitions[i]) i = (i + 1) & scr_layout_transition_mask; + scr_layout_transitions[i] = child; +} + +static void scr_layout_transitions_grow(void) { + size_t old_cap = scr_layout_transition_mask ? scr_layout_transition_mask + 1 : 0; + size_t cap = old_cap ? old_cap * 2 : 256; + ScrLayout **old = scr_layout_transitions; + scr_layout_transitions = calloc(cap, sizeof *scr_layout_transitions); + if (!scr_layout_transitions) scr_json_oom(); + scr_layout_transition_mask = cap - 1; + for (size_t i = 0; i < old_cap; i++) + if (old[i]) scr_layout_insert(old[i]); + free(old); +} + +static inline bool scr_layout_key_is(const ScrLayoutKey *k, const char *key, size_t key_len) { + return k->len == key_len && (k->key == key || scr_key_equal(k->key, key, key_len)); +} + +static __attribute__((noinline)) void scr_layout_index(ScrLayout *layout) { + size_t cap = 16; + while (cap < 2 * (size_t)layout->count) cap *= 2; + uint8_t *table = calloc(cap, 1); + if (!table) scr_json_oom(); + for (uint32_t i = 0; i < layout->count; i++) { + size_t slot = layout->keys[i].hash & (cap - 1); + while (table[slot]) slot = (slot + 1) & (cap - 1); + table[slot] = (uint8_t)(i + 1); + } + layout->lookup = table; + layout->lookup_mask = (uint32_t)(cap - 1); +} + +uint32_t scr_layout_find(const ScrLayout *layout, const char *key, size_t key_len) { + uint32_t count = layout->count; + if (count <= SCR_LAYOUT_LINEAR_MAX) { + for (uint32_t i = 0; i < count; i++) + if (scr_layout_key_is(&layout->keys[i], key, key_len)) return i; + return UINT32_MAX; + } + if (!layout->lookup) scr_layout_index((ScrLayout *)layout); + uint32_t hash = (uint32_t)scr_key_hash(key, key_len); + size_t mask = layout->lookup_mask; + for (size_t slot = hash & mask;; slot = (slot + 1) & mask) { + uint8_t found = layout->lookup[slot]; + if (!found) return UINT32_MAX; + const ScrLayoutKey *k = &layout->keys[found - 1]; + if (k->hash == hash && scr_layout_key_is(k, key, key_len)) return found - 1u; + } +} + +const ScrLayout *scr_layout_add(const ScrLayout *layout, const char *key, size_t key_len) { + ScrLayout *parent = (ScrLayout *)layout; + ScrLayout *last = parent->last_child; + if (last && scr_layout_key_is(&last->keys[last->count - 1], key, key_len)) return last; + if (parent->count >= SCR_LAYOUT_MAX_KEYS || key_len > UINT32_MAX) return NULL; + uint32_t hash = (uint32_t)scr_key_hash(key, key_len); + if (scr_layout_transition_mask) { + size_t i = scr_layout_slot(parent, hash) & scr_layout_transition_mask; + for (ScrLayout *child; (child = scr_layout_transitions[i]); i = (i + 1) & scr_layout_transition_mask) { + const ScrLayoutKey *k = &child->keys[child->count - 1]; + if (child->parent == parent && k->hash == hash && scr_layout_key_is(k, key, key_len)) { + parent->last_child = child; + return child; + } + } + } + if (scr_layout_count >= SCR_LAYOUT_BUDGET || + key_len > SCR_LAYOUT_KEY_BYTES_BUDGET - scr_layout_key_bytes) + return NULL; + uint32_t count = parent->count + 1; + ScrLayoutKeys *store = parent->store; + bool owns = !store || store->used != parent->count || store->used == store->cap; + if (owns) { + uint32_t cap = count < 4 ? 4 : count * 2; + if (cap > SCR_LAYOUT_MAX_KEYS) cap = SCR_LAYOUT_MAX_KEYS; + size_t bytes = sizeof *store + cap * sizeof(ScrLayoutKey); + if (bytes > SCR_LAYOUT_ARRAY_BYTES_BUDGET - scr_layout_array_bytes) return NULL; + store = malloc(bytes); + if (!store) scr_json_oom(); + if (parent->count) memcpy(store->items, parent->keys, parent->count * sizeof(ScrLayoutKey)); + store->used = parent->count; + store->cap = cap; + scr_layout_array_bytes += bytes; + } + if ((scr_layout_count + 1) * 2 > (scr_layout_transition_mask ? scr_layout_transition_mask + 1 : 0)) + scr_layout_transitions_grow(); + ScrLayout *child = malloc(sizeof *child); + if (!child) scr_json_oom(); + store->items[store->used++] = (ScrLayoutKey){scr_dyn_key_copy(key, key_len), (uint32_t)key_len, hash}; + *child = (ScrLayout){store->items, count, 0, NULL, parent, NULL, store, scr_layout_all, owns}; + scr_layout_all = child; + if (!scr_layout_registered) { + scr_layout_registered = true; + scr_atexit(scr_layout_reset); + } + scr_layout_insert(child); + scr_layout_count++; + scr_layout_key_bytes += key_len; + parent->last_child = child; + return child; +} + +#define SCR_DYN_OBJECT_INDEX_MIN 32 + +/* Layout mode → dictionary mode: the same properties in the same order, + * each a writable, enumerable, configurable data property. */ +void scr_dyn_to_dictionary(ScrDyn *object) { + const ScrLayout *layout = object->v.obj.layout; + if (!layout) return; + size_t len = object->v.obj.len; + ScrDyn **slots = object->v.obj.slots; + size_t cap = len < 4 ? 4 : len; + ScrDynEntry *entries = scr_mem_realloc(NULL, cap * sizeof *entries); + if (!entries) scr_json_oom(); + memset(entries, 0, cap * sizeof *entries); + size_t traced = object->v.obj.slots_traced; + for (size_t i = 0; i < len; i++) { + const ScrLayoutKey *k = &layout->keys[i]; + scr_dyn_key_retain(k->key); + ScrDynEntry *e = &entries[i]; + e->key = k->key; + e->key_len = k->len; + e->value = slots[i]; + e->value_traced = (traced >> i) & 1; + e->writable = e->enumerable = e->configurable = true; + } + scr_mem_free(slots); + object->v.obj.entries = entries; + object->v.obj.cap = cap; + object->v.obj.layout = NULL; + object->v.obj.slots_traced = 0; + /* A wide object gets its hash index with its next insertion + * (scr_dyn_obj_put); until then lookups scan its entries. */ + object->v.obj.index = NULL; +} + +/* Appends a property `key` does not name yet to a layout-mode object, + * taking ownership of `value`; false (nothing done) when no layout fits, + * and the caller then takes the dictionary path. */ +/* Appends `value` (owned) to a layout-mode object as the slot of the last + * key of `next`, a child of the object's layout. */ +static inline void scr_dyn_obj_layout_push(ScrDyn *obj, const ScrLayout *next, ScrDyn *value) { + size_t len = obj->v.obj.len; + if (len == obj->v.obj.cap) { + size_t cap = obj->v.obj.cap ? obj->v.obj.cap * 2 : 4; + if (cap > SCR_LAYOUT_MAX_KEYS) cap = SCR_LAYOUT_MAX_KEYS; + ScrDyn **slots = scr_mem_realloc(obj->v.obj.slots, cap * sizeof *slots); + if (!slots) scr_json_oom(); + obj->v.obj.slots = slots; + obj->v.obj.cap = cap; + } + obj->v.obj.slots[len] = value; + obj->v.obj.len = len + 1; + obj->v.obj.layout = next; +} + +static inline bool scr_dyn_obj_layout_append(ScrDyn *obj, const char *key, size_t key_len, ScrDyn *value) { + const ScrLayout *next = scr_layout_add(obj->v.obj.layout, key, key_len); + if (!next) return false; + scr_dyn_obj_layout_push(obj, next, value); + return true; +} + #ifndef SCR_RC_AUDIT static SCR_TL ScrDyn *scr_dyn_free_arr, *scr_dyn_free_obj, *scr_dyn_free_misc; static SCR_TL size_t scr_dyn_free_count; @@ -887,39 +1117,25 @@ static SCR_TL size_t scr_dyn_free_count; * arena never returns them to the system either), at the cost of reserving * them, with their item/entry buffers, for dyn nodes. */ #define SCR_DYN_FREE_MAX ((size_t)1 << 20) -/* Recycled small objects may retain key bytes, but never values or an - * unbounded document's keys. This budget applies across the whole pool. */ -static SCR_TL size_t scr_dyn_cached_key_bytes; -#define SCR_DYN_KEY_CACHE_MAX ((size_t)64 * 1024) -#define SCR_DYN_KEY_CACHE_SLOTS 16 -#define SCR_DYN_KEY_CACHE_LENGTH 64 #endif -/* Returns the key bytes it kept for reuse, which it added to the budget; - * the pooled node records them (v.obj.cached_key_bytes) so its reuse takes - * them back without walking its slots. */ -static size_t scr_dyn_obj_drop_keys(ScrDyn *d, bool cache) { - size_t kept = 0; - for (size_t i = 0; i < d->v.obj.cap; i++) { - ScrDynEntry *entry = &d->v.obj.entries[i]; - if (!entry->key) continue; -#ifndef SCR_RC_AUDIT - size_t bytes = sizeof(ScrDynKey) + entry->key_len + 1; - if (cache && d->v.obj.cap <= SCR_DYN_KEY_CACHE_SLOTS && - entry->key_len <= SCR_DYN_KEY_CACHE_LENGTH && - bytes <= SCR_DYN_KEY_CACHE_MAX - scr_dyn_cached_key_bytes) { - scr_dyn_cached_key_bytes += bytes; - kept += bytes; - continue; +/* Drops a disposed object's keys and storage: a dictionary's entries with the keys + * they hold (recycled entries past len may hold keys too), or a layout-mode + * object's slots unless `keep_slots` (a pooled node keeps them for its next + * life). Leaves the node empty, in layout mode's representation. */ +static void scr_dyn_obj_drop_keys(ScrDyn *d, bool keep_slots) { + if (d->v.obj.layout) { + if (keep_slots) return; + scr_mem_free(d->v.obj.slots); + } else { + for (size_t i = 0; i < d->v.obj.cap; i++) { + ScrDynEntry *entry = &d->v.obj.entries[i]; + if (entry->key) scr_dyn_key_release(entry->key, entry->key_len); } -#else - (void)cache; -#endif - scr_dyn_key_release(entry->key, entry->key_len); - entry->key = NULL; - entry->key_len = 0; + scr_mem_free(d->v.obj.entries); } - return kept; + d->v.obj.slots = NULL; + d->v.obj.cap = 0; } /* Primitive kinds cannot acquire properties or change kind while live, so @@ -948,6 +1164,17 @@ void scr_dyn_trace_v(void *ptr, ScrTraceVisit visit, void *ctx) { if (d->v.arr.properties) visit(d->v.arr.properties, ctx); break; case SCR_DYN_OBJ: + if (d->v.obj.layout) { + size_t traced = 0; + for (size_t i = 0; i < d->v.obj.len; i++) { + ScrDyn *value = d->v.obj.slots[i]; + if (!scr_dyn_member_is_traced(value)) continue; + traced |= (size_t)1 << i; + visit(value, ctx); + } + d->v.obj.slots_traced = traced; + break; + } for (size_t i = 0; i < d->v.obj.len; i++) { ScrDynEntry *entry = &d->v.obj.entries[i]; entry->value_traced = scr_dyn_member_is_traced(entry->value); @@ -1120,12 +1347,11 @@ static ScrDyn *scr_dyn_alloc(ScrDynKind kind) { d->v.arr.presence = NULL; d->v.arr.region = NULL; } else if (kind == SCR_DYN_OBJ) { - d->v.obj.len = 0; /* cap/entries preserved */ - /* The kept keys leave the pool's budget with the node. */ - scr_dyn_cached_key_bytes -= d->v.obj.cached_key_bytes; + d->v.obj.len = 0; /* cap/slots preserved */ d->v.obj.region = NULL; d->v.obj.class_name = NULL; /* a released class prototype's name */ - SCR_JS_SHAPE_RESET(d); + d->v.obj.layout = &scr_layout_empty; + d->v.obj.slots_traced = 0; d->v.obj.source_identity = NULL; d->v.obj.source_access = NULL; } else if (kind != SCR_DYN_NUM && kind != SCR_DYN_STR) { @@ -1144,9 +1370,10 @@ static ScrDyn *scr_dyn_alloc(ScrDynKind kind) { fresh->prototype = NULL; fresh->symbol_properties = NULL; fresh->symbol_keys = NULL; -#ifdef SCR_JS_TIER - if (kind == SCR_DYN_OBJ) SCR_JS_SHAPE_RESET(fresh); -#endif + if (kind == SCR_DYN_OBJ) { + memset(&fresh->v, 0, sizeof fresh->v); + fresh->v.obj.layout = &scr_layout_empty; + } #ifdef SCR_RC_AUDIT scr_live_dyns++; #endif @@ -1225,7 +1452,7 @@ static void scr_dyn_dispose(ScrDyn *d, bool collected) { return; } #endif - if (d->kind == SCR_DYN_OBJ) { + if (d->kind == SCR_DYN_OBJ && !d->v.obj.layout) { free(d->v.obj.index); d->v.obj.index = NULL; } @@ -1259,7 +1486,12 @@ static void scr_dyn_dispose(ScrDyn *d, bool collected) { } break; case SCR_DYN_OBJ: - for (size_t i = 0; i < d->v.obj.len; i++) { + if (d->v.obj.layout) { + size_t traced = collected ? d->v.obj.slots_traced : 0; + for (size_t i = 0; i < d->v.obj.len; i++) + if (!((traced >> i) & 1)) scr_dyn_release_child(d->v.obj.slots[i]); + d->v.obj.len = 0; + } else for (size_t i = 0; i < d->v.obj.len; i++) { ScrDyn *value = d->v.obj.entries[i].value; if (!collected || !d->v.obj.entries[i].value_traced) scr_dyn_release_child(value); if (!collected) { @@ -1313,7 +1545,7 @@ static void scr_dyn_dispose(ScrDyn *d, bool collected) { #endif #ifndef SCR_RC_AUDIT if (!collected && scr_dyn_free_count < SCR_DYN_FREE_MAX) { - if (d->kind == SCR_DYN_OBJ) d->v.obj.cached_key_bytes = scr_dyn_obj_drop_keys(d, true); + if (d->kind == SCR_DYN_OBJ) scr_dyn_obj_drop_keys(d, true); /* Pooled blocks retain their headers and count toward the bounded * allocated heap, but never remain in a candidate buffer. */ scr_dyn_weak_dispose(d); @@ -1327,10 +1559,7 @@ static void scr_dyn_dispose(ScrDyn *d, bool collected) { } #endif if (d->kind == SCR_DYN_ARR) scr_mem_free(d->v.arr.items); - else if (d->kind == SCR_DYN_OBJ) { - scr_dyn_obj_drop_keys(d, false); - scr_mem_free(d->v.obj.entries); - } + else if (d->kind == SCR_DYN_OBJ) scr_dyn_obj_drop_keys(d, false); scr_cyc_free_inline(d); } @@ -1412,7 +1641,6 @@ void scr_dyn_release(ScrDyn *d) { /* Small objects retain their compact linear representation. A wide object * owns a bucket index of entry positions; entries remain insertion ordered. * No key/value ownership lives here, and callbacks never retain its slots. */ -#define SCR_DYN_OBJECT_INDEX_MIN 32 typedef struct ScrDynObjectIndex { size_t buckets; size_t slots[]; /* zero is empty; occupied slots store entry + 1 */ @@ -1472,8 +1700,12 @@ static __attribute__((noinline)) ScrDynEntry *scr_dyn_find_indexed_entry( return NULL; } +/* The entry of own property `key`. Its callers read or write entries, so + * a layout-mode object moves to dictionary mode first; paths that know + * layouts look up slots with scr_dyn_layout_slot instead. */ static ScrDynEntry *scr_dyn_find_entry(const ScrDyn *object, const char *key, size_t length) { if (object->kind != SCR_DYN_OBJ) return NULL; + if (object->v.obj.layout) scr_dyn_to_dictionary((ScrDyn *)object); if (object->v.obj.index) return scr_dyn_find_indexed_entry(object, key, length); size_t slot = (length + (length ? (unsigned char)key[0] * 7u : 0)) % SCR_DYN_PROPERTY_HINTS; size_t hint = scr_dyn_property_hints[slot]; @@ -1486,16 +1718,49 @@ static ScrDynEntry *scr_dyn_find_entry(const ScrDyn *object, const char *key, si return entry; } +/* Out-of-line property accessors for emitted object walks (the + * index-signature checks of backend/llvm/dyn.ts). */ +const char *scr_dyn_member_key(const ScrDyn *object, size_t i) { + size_t key_len; + return scr_dyn_obj_key_at(object, i, &key_len); +} + +size_t scr_dyn_member_key_len(const ScrDyn *object, size_t i) { + size_t key_len; + scr_dyn_obj_key_at(object, i, &key_len); + return key_len; +} + +ScrDyn *scr_dyn_member_value(const ScrDyn *object, size_t i) { + return scr_dyn_obj_value_at(object, i); +} + +/* The slot of own property `key` of a layout-mode object, or NULL. */ +static inline ScrDyn **scr_dyn_layout_slot(const ScrDyn *object, const char *key, size_t length) { + uint32_t i = scr_layout_find(object->v.obj.layout, key, length); + return i == UINT32_MAX ? NULL : &object->v.obj.slots[i]; +} + +/* Whether `object` is an ordinary object in layout mode. */ +static inline bool scr_dyn_is_layout(const ScrDyn *object) { + return object->kind == SCR_DYN_OBJ && object->v.obj.layout; +} + ScrDyn *scr_dyn_obj_get(const ScrDyn *d, const char *key, size_t key_len) { if (d->kind == SCR_DYN_PROXY) { scr_dyn_proxy_unsupported("raw object inspection"); return NULL; } + if (scr_dyn_is_layout(d)) { + ScrDyn **slot = scr_dyn_layout_slot(d, key, key_len); + return slot ? *slot : NULL; + } ScrDynEntry *entry = scr_dyn_find_entry(d, key, key_len); return entry ? entry->value : NULL; } bool scr_dyn_obj_enumerable(const ScrDyn *d, const char *key, size_t key_len) { + if (scr_dyn_is_layout(d)) return scr_dyn_layout_slot(d, key, key_len) != NULL; ScrDynEntry *entry = scr_dyn_find_entry(d, key, key_len); return entry && entry->enumerable; } @@ -1539,8 +1804,18 @@ int32_t scr_dyn_discriminant_case(const ScrDyn *d, const ScrStr *key, ScrStr *co if (!d) return -1; if (d->kind == SCR_DYN_TYPED_REF) return -2; if (d->kind != SCR_DYN_OBJ) return -1; + if (d->v.obj.layout) { + ScrDyn **slot = scr_dyn_layout_slot(d, key->data, key->len); + if (!slot) return -2; + const ScrDyn *member = *slot; + if (!member || member->kind != SCR_DYN_STR) return -1; + for (size_t k = 0; k < count; k++) + if (scr_str_eq(member->v.str, values[k])) return (int32_t)k; + return -1; + } for (size_t i = 0; i < d->v.obj.len; i++) { - const ScrDynEntry *entry = &d->v.obj.entries[i]; + const ScrDynProp entry_prop = scr_dyn_obj_prop_at(d, i); + const ScrDynProp *entry = &entry_prop; if (entry->key_len != key->len || memcmp(entry->key, key->data, key->len) != 0) continue; if (entry->accessor) return -2; const ScrDyn *member = entry->value; @@ -1868,6 +2143,17 @@ ScrDyn *scr_dyn_arr_named_get(const ScrDyn *d, const ScrStr *key) { * A recycled entry can reuse equal key bytes without a malloc/free pair. */ static void scr_dyn_obj_put(ScrDyn *obj, const char *key, size_t key_len, ScrDyn *value) { scr_dyn_region_store(obj, value); + if (obj->v.obj.layout) { + ScrDyn **slot = scr_dyn_layout_slot(obj, key, key_len); + if (slot) { + ScrDyn *old = *slot; + *slot = value; + scr_dyn_release(old); + return; + } + if (!obj->non_extensible && scr_dyn_obj_layout_append(obj, key, key_len, value)) return; + scr_dyn_to_dictionary(obj); + } /* Construction usually appends an absent name. Avoid a read hint that * repeats comparisons on compact objects; wide objects use their index. */ ScrDynEntry *existing = obj->v.obj.index ? scr_dyn_find_entry(obj, key, key_len) @@ -1901,14 +2187,13 @@ static void scr_dyn_obj_put(ScrDyn *obj, const char *key, size_t key_len, ScrDyn } if (obj->v.obj.len == obj->v.obj.cap) { size_t cap = obj->v.obj.cap ? obj->v.obj.cap * 2 : 4; - ScrDynEntry *entries = scr_mem_realloc(obj->v.obj.entries, cap * sizeof *entries); + ScrDynEntry *entries = scr_mem_realloc(scr_dyn_obj_dict_entries(obj), cap * sizeof *entries); if (!entries) scr_json_oom(); memset(entries + obj->v.obj.cap, 0, (cap - obj->v.obj.cap) * sizeof *entries); obj->v.obj.entries = entries; obj->v.obj.cap = cap; } - SCR_JS_SHAPE_RESET(obj); - ScrDynEntry *e = &obj->v.obj.entries[obj->v.obj.len++]; + ScrDynEntry *e = &scr_dyn_obj_dict_entries(obj)[obj->v.obj.len++]; if (!e->key || e->key_len != key_len || !scr_key_equal(e->key, key, key_len)) { char *owned = scr_dyn_key_copy(key, key_len); scr_dyn_key_release(e->key, e->key_len); @@ -2550,7 +2835,7 @@ static void scr_dyn_record_view_freeze(ScrDyn *view) { view->non_extensible = true; if (view->kind == SCR_DYN_OBJ) { for (size_t i = 0; i < view->v.obj.len; i++) { - ScrDynEntry *entry = &view->v.obj.entries[i]; + ScrDynEntry *entry = &scr_dyn_obj_dict_entries(view)[i]; entry->configurable = false; if (!entry->accessor) entry->writable = false; } @@ -2614,7 +2899,8 @@ double scr_dyn_class_view_integrity(const ScrDyn *view, double bits, ScrDyn *bag for (const ScrDyn *table = view; table; table = table == view ? view->symbol_properties : NULL) { if (table->kind != SCR_DYN_OBJ) continue; for (size_t i = 0; i < table->v.obj.len; i++) { - const ScrDynEntry *entry = &table->v.obj.entries[i]; + const ScrDynProp entry_prop = scr_dyn_obj_prop_at(table, i); + const ScrDynProp *entry = &entry_prop; if (entry->configurable) sealed = false; if (!entry->accessor && entry->writable) frozen = false; } @@ -2795,7 +3081,7 @@ ScrDyn *scr_dyn_seal(ScrDyn *object) { } if (object->kind == SCR_DYN_OBJ) { object->non_extensible = true; - for (size_t i = 0; i < object->v.obj.len; i++) object->v.obj.entries[i].configurable = false; + for (size_t i = 0; i < object->v.obj.len; i++) scr_dyn_obj_dict_entries(object)[i].configurable = false; } if (object->kind == SCR_DYN_ARR) { object->non_extensible = true; @@ -2826,7 +3112,7 @@ bool scr_dyn_is_sealed(const ScrDyn *object) { if (object->kind == SCR_DYN_BYTES) return object->v.bytes->properties && scr_dyn_is_sealed(object->v.bytes->properties); if (object->kind != SCR_DYN_OBJ) return true; if (!object->non_extensible) return false; - for (size_t i = 0; i < object->v.obj.len; i++) if (object->v.obj.entries[i].configurable) return false; + for (size_t i = 0; i < object->v.obj.len; i++) if (scr_dyn_obj_prop_at(object, i).configurable) return false; return true; } @@ -2855,6 +3141,10 @@ static const ScrDyn *scr_dyn_property_owner(const ScrDyn *object, const char *ke return owner; } if (current->kind != SCR_DYN_OBJ) continue; + if (current->v.obj.layout) { + if (scr_layout_find(current->v.obj.layout, key, length) != UINT32_MAX) return current; + continue; + } for (size_t i = 0; i < current->v.obj.len; i++) { const ScrDynEntry *entry = ¤t->v.obj.entries[i]; if (entry->key_len == length && memcmp(entry->key, key, length) == 0) return current; @@ -2897,7 +3187,7 @@ ScrDyn *scr_dyn_proxy_new(const ScrDyn *target, const ScrDyn *handler) { ScrDyn *view = scr_dyn_typed_ref_materialize(target); bool plain = view && view->kind == SCR_DYN_OBJ; if (plain) for (size_t i = 0; i < view->v.obj.len; i++) { - ScrDynEntry *entry = &view->v.obj.entries[i]; + ScrDynEntry *entry = &scr_dyn_obj_dict_entries(view)[i]; if (entry->accessor || !entry->configurable || !entry->writable) plain = false; } scr_dyn_release(view); @@ -3267,6 +3557,16 @@ ScrDyn *scr_dyn_own_descriptor(const ScrDyn *value, const ScrStr *key) { if (value->kind == SCR_DYN_BOOL || value->kind == SCR_DYN_NUM) { return scr_dyn_retain(scr_dyn_undefined()); } + if (value->kind == SCR_DYN_OBJ && value->v.obj.layout) { + ScrDyn **slot = scr_dyn_layout_slot(value, key->data, key->len); + if (!slot) return scr_dyn_retain(scr_dyn_undefined()); + ScrDyn *out = scr_dyn_new_obj(); + scr_dyn_obj_set(out, "value", 5, scr_dyn_retain(*slot)); + scr_dyn_obj_set(out, "writable", 8, scr_dyn_new_bool(true)); + scr_dyn_obj_set(out, "enumerable", 10, scr_dyn_new_bool(true)); + scr_dyn_obj_set(out, "configurable", 12, scr_dyn_new_bool(true)); + return out; + } if (value->kind == SCR_DYN_OBJ) { ScrDynEntry *entry = scr_dyn_entry((ScrDyn *)value, key); if (!entry) return scr_dyn_retain(scr_dyn_undefined()); @@ -3626,7 +3926,8 @@ void scr_record_source_note(void *rec, const ScrDyn *src, const char *const *nam bool keep = false; size_t next = 0; for (size_t i = 0; i < src->v.obj.len && !keep; i++) { - const ScrDynEntry *entry = &src->v.obj.entries[i]; + const ScrDynProp entry_prop = scr_dyn_obj_prop_at(src, i); + const ScrDynProp *entry = &entry_prop; size_t index = scr_record_source_index(&probe, entry->key, entry->key_len); keep = index == count || index < next; next = index + 1; @@ -3634,7 +3935,8 @@ void scr_record_source_note(void *rec, const ScrDyn *src, const char *const *nam if (!keep) return; ScrDyn *view = scr_dyn_new_obj(); for (size_t i = 0; i < src->v.obj.len; i++) { - const ScrDynEntry *entry = &src->v.obj.entries[i]; + const ScrDynProp entry_prop = scr_dyn_obj_prop_at(src, i); + const ScrDynProp *entry = &entry_prop; if (scr_record_source_declared(&probe, entry->key, entry->key_len)) { scr_dyn_obj_set(view, entry->key, entry->key_len, scr_dyn_retain(scr_dyn_undefined())); } else if (!entry->accessor && entry->writable && entry->enumerable && entry->configurable) { @@ -3667,7 +3969,8 @@ void scr_record_source_spread(void *dst, const void *src, const char *const *nam bool keep = false; size_t next = 0; for (size_t i = 0; i < from->v.obj.len && !keep; i++) { - const ScrDynEntry *entry = &from->v.obj.entries[i]; + const ScrDynProp entry_prop = scr_dyn_obj_prop_at(from, i); + const ScrDynProp *entry = &entry_prop; size_t index = scr_record_source_index(&probe, entry->key, entry->key_len); if (index == count) continue; keep = index != next; @@ -3676,7 +3979,8 @@ void scr_record_source_spread(void *dst, const void *src, const char *const *nam if (!keep) return; ScrDyn *view = scr_dyn_new_obj(); for (size_t i = 0; i < from->v.obj.len; i++) { - const ScrDynEntry *entry = &from->v.obj.entries[i]; + const ScrDynProp entry_prop = scr_dyn_obj_prop_at(from, i); + const ScrDynProp *entry = &entry_prop; if (scr_record_source_declared(&probe, entry->key, entry->key_len)) scr_dyn_obj_set(view, entry->key, entry->key_len, scr_dyn_retain(scr_dyn_undefined())); } @@ -3715,7 +4019,8 @@ static ScrDyn *scr_record_source_merge(const ScrRecordSource *source, const ScrD const ScrDyn *fresh) { ScrDyn *out = scr_dyn_new_obj(); for (size_t i = 0; i < cached->v.obj.len; i++) { - const ScrDynEntry *entry = &cached->v.obj.entries[i]; + const ScrDynProp entry_prop = scr_dyn_obj_prop_at(cached, i); + const ScrDynProp *entry = &entry_prop; ScrDyn *value = scr_dyn_obj_get(fresh, entry->key, entry->key_len); if (value) { scr_dyn_obj_set(out, entry->key, entry->key_len, scr_dyn_retain(value)); @@ -3736,7 +4041,8 @@ static ScrDyn *scr_record_source_merge(const ScrRecordSource *source, const ScrD scr_str_release(name); } for (size_t i = 0; i < fresh->v.obj.len; i++) { - const ScrDynEntry *entry = &fresh->v.obj.entries[i]; + const ScrDynProp entry_prop = scr_dyn_obj_prop_at(fresh, i); + const ScrDynProp *entry = &entry_prop; if (scr_dyn_obj_get(out, entry->key, entry->key_len)) continue; scr_dyn_obj_set(out, entry->key, entry->key_len, scr_dyn_retain(entry->value)); } @@ -3812,7 +4118,8 @@ static void scr_record_source_key_order(const ScrDyn *view, size_t *out) { if (!keys) scr_json_oom(); size_t integers = 0, next = 0; for (size_t i = 0; i < len; i++) { - const ScrDynEntry *entry = &view->v.obj.entries[i]; + const ScrDynProp entry_prop = scr_dyn_obj_prop_at(view, i); + const ScrDynProp *entry = &entry_prop; double index; if (scr_dyn_key_is_index(entry->key, entry->key_len, &index)) keys[integers++] = (ScrRecordSourceIntegerKey){ index, i }; @@ -3821,7 +4128,8 @@ static void scr_record_source_key_order(const ScrDyn *view, size_t *out) { qsort(keys, integers, sizeof *keys, scr_record_source_integer_cmp); for (size_t i = 0; i < integers; i++) out[next++] = keys[i].entry; for (size_t i = 0; i < len; i++) { - const ScrDynEntry *entry = &view->v.obj.entries[i]; + const ScrDynProp entry_prop = scr_dyn_obj_prop_at(view, i); + const ScrDynProp *entry = &entry_prop; double index; if (!scr_dyn_key_is_index(entry->key, entry->key_len, &index)) out[next++] = i; } @@ -3854,7 +4162,7 @@ bool scr_jb_try_record_source(ScrJsonBuf *b, void *rec, size_t *order = NULL; for (size_t k = 0; k < view->v.obj.len && !order; k++) { double index; - if (!scr_dyn_key_is_index(view->v.obj.entries[k].key, view->v.obj.entries[k].key_len, &index)) continue; + if (!scr_dyn_key_is_index(scr_dyn_obj_dict_entries(view)[k].key, scr_dyn_obj_dict_entries(view)[k].key_len, &index)) continue; order = view->v.obj.len <= 64 ? order_small : malloc(view->v.obj.len * sizeof *order); if (!order) scr_json_oom(); scr_record_source_key_order(view, order); @@ -3865,7 +4173,8 @@ bool scr_jb_try_record_source(ScrJsonBuf *b, void *rec, * SerializeJSONObject takes them before reading any value. */ size_t i = 0; for (; i < view->v.obj.len && !scr_exc_pending(); i++) { - const ScrDynEntry *entry = &view->v.obj.entries[order ? order[i] : i]; + const ScrDynProp entry_prop = scr_dyn_obj_prop_at(view, order ? order[i] : i); + const ScrDynProp *entry = &entry_prop; size_t index = scr_record_source_index(&source, entry->key, entry->key_len); if (index < count) { if (!seen[index] && scr_jb_put_source_field(b, rec, &source, index, first, on_stack, field)) @@ -3885,7 +4194,8 @@ bool scr_jb_try_record_source(ScrJsonBuf *b, void *rec, if (i < view->v.obj.len && !scr_exc_pending()) { ScrDyn *rest = scr_dyn_new_arr(); for (size_t j = i; j < view->v.obj.len; j++) { - const ScrDynEntry *entry = &view->v.obj.entries[order ? order[j] : j]; + const ScrDynProp entry_prop = scr_dyn_obj_prop_at(view, order ? order[j] : j); + const ScrDynProp *entry = &entry_prop; if (!entry->enumerable && !scr_record_source_declared(&source, entry->key, entry->key_len)) continue; ScrStr *name = scr_str_new(entry->key, entry->key_len); scr_dyn_arr_push(rest, scr_dyn_new_str(name)); @@ -4038,7 +4348,7 @@ static void scr_dyn_typed_ref_preserve_children( } if (cached->kind == SCR_DYN_OBJ) { for (size_t i = 0; i < fresh->v.obj.len; i++) { - ScrDynEntry *entry = &fresh->v.obj.entries[i]; + ScrDynEntry *entry = &scr_dyn_obj_dict_entries(fresh)[i]; ScrDyn *cached_child = scr_dyn_obj_get( cached, entry->key, entry->key_len); scr_dyn_typed_ref_preserve_child(&entry->value, cached_child); @@ -4086,7 +4396,7 @@ static void scr_typed_ref_view_numeric_properties(const ScrDyn *capsule, ScrDyn if (value) scr_dyn_arr_named_put(view, x->props[i].key, x->props[i].key_len, value); } if (!named) return; - for (size_t i = 0; i < named->v.obj.len; i++) scr_dyn_copy_entry(view, named, &named->v.obj.entries[i]); + for (size_t i = 0; i < named->v.obj.len; i++) scr_dyn_copy_entry(view, named, &scr_dyn_obj_dict_entries(named)[i]); scr_dyn_release(named); } @@ -4121,7 +4431,7 @@ ScrDyn *scr_dyn_typed_ref_materialize(const ScrDyn *d) { fresh = ordered; } else if (record_view) { for (size_t i = 0; i < cached->v.obj.len; i++) { - ScrDynEntry *entry = &cached->v.obj.entries[i]; + ScrDynEntry *entry = &scr_dyn_obj_dict_entries(cached)[i]; if (scr_dyn_obj_get(fresh, entry->key, entry->key_len)) continue; ScrStr *name = scr_str_new(entry->key, entry->key_len); ScrDyn *key = scr_dyn_new_str(name); @@ -4855,16 +5165,16 @@ static ScrDyn *scr_bytes_constructor_for(ScrBytesElem elem) { scr_bytes_ctor_call, 3, "typed-array-constructor", scr_bytes_elem_name(elem)); ScrDyn *properties = scr_dyn_fn_properties(scr_bytes_ctors[elem]); scr_dyn_obj_set(properties, "BYTES_PER_ELEMENT", 17, scr_dyn_new_num((double)scr_bytes_elem_size(elem))); - ScrDynEntry *entry = &properties->v.obj.entries[properties->v.obj.len - 1]; + ScrDynEntry *entry = &scr_dyn_obj_dict_entries(properties)[properties->v.obj.len - 1]; entry->writable = entry->enumerable = entry->configurable = false; /* from and of live on %TypedArray%, which is not modeled: each * constructor carries them as non-enumerable properties. */ scr_dyn_obj_set(properties, "from", 4, scr_dyn_new_func(scr_closure_new(NULL, 0), scr_bytes_from_call, 1, "native:TypedArray", "from")); - properties->v.obj.entries[properties->v.obj.len - 1].enumerable = false; + scr_dyn_obj_dict_entries(properties)[properties->v.obj.len - 1].enumerable = false; scr_dyn_obj_set(properties, "of", 2, scr_dyn_new_func(scr_closure_new(NULL, 0), scr_bytes_of_call, 0, "native:TypedArray", "of")); - properties->v.obj.entries[properties->v.obj.len - 1].enumerable = false; + scr_dyn_obj_dict_entries(properties)[properties->v.obj.len - 1].enumerable = false; scr_dyn_release(properties); } return scr_dyn_retain(scr_bytes_ctors[elem]); @@ -5937,7 +6247,7 @@ ScrDyn *scr_dyn_class_prototype(ScrDyn *value, ScrDyn *base) { * `constructor`: the class value. The cycle it closes through the class * object is one the collector traces. */ scr_dyn_obj_set(data, "constructor", 11, scr_dyn_retain(value)); - data->v.obj.entries[data->v.obj.len - 1].enumerable = false; + scr_dyn_obj_dict_entries(data)[data->v.obj.len - 1].enumerable = false; cls->prototype_data = scr_box_new_obj(scr_dyn_retain_v, scr_dyn_release_v, scr_dyn_trace_v); scr_box_set_ref(cls->prototype_data, data); } @@ -6069,7 +6379,7 @@ const char *scr_dyn_specific_type(const ScrDyn *cb, char *detail, size_t cap) { if (cb->null_proto) { /* No constructor name: Node renders inspect(value, { depth: -1 }). */ bool keys = false; - for (size_t i = 0; i < cb->v.obj.len && !keys; i++) keys = cb->v.obj.entries[i].enumerable; + for (size_t i = 0; i < cb->v.obj.len && !keys; i++) keys = scr_dyn_obj_dict_entries(cb)[i].enumerable; d = keys ? "[Object: null prototype]" : "[Object: null prototype] {}"; } else { d = "an instance of Object"; @@ -6717,6 +7027,21 @@ void scr_dyn_obj_set_accessor(ScrDyn *obj, const char *key, size_t key_len, ScrD * attributes copied into it (a frozen instance's view is built the same way * as any other). Consumes value. */ void scr_dyn_obj_set_field(ScrDyn *obj, const char *key, size_t key_len, ScrDyn *value) { + if (obj->v.obj.layout) { + ScrDyn **slot = scr_dyn_layout_slot(obj, key, key_len); + if (slot) { + scr_dyn_region_store(obj, value); + ScrDyn *old = *slot; + *slot = value; + scr_dyn_release(old); + return; + } + bool non_extensible = obj->non_extensible; + obj->non_extensible = false; + scr_dyn_obj_put(obj, key, key_len, value); + obj->non_extensible = non_extensible; + return; + } ScrDynEntry *existing = obj->v.obj.index ? scr_dyn_find_entry(obj, key, key_len) : scr_dyn_find_linear_entry(obj, key, key_len); if (existing && existing->fenced) { @@ -6822,8 +7147,8 @@ static ScrDyn *scr_dyn_fn_properties(const ScrDyn *function) { scr_dyn_obj_set(table, "name", 4, scr_dyn_new_str(name_string)); scr_str_release(name_string); for (size_t i = 0; i < table->v.obj.len; i++) { - table->v.obj.entries[i].writable = false; - table->v.obj.entries[i].enumerable = false; + scr_dyn_obj_dict_entries(table)[i].writable = false; + scr_dyn_obj_dict_entries(table)[i].enumerable = false; } ScrBox *box = scr_box_new_obj(&scr_dyn_retain_v, &scr_dyn_release_v, &scr_dyn_trace_v); scr_box_set_ref(box, table); @@ -6832,9 +7157,9 @@ static ScrDyn *scr_dyn_fn_properties(const ScrDyn *function) { if (owner->function_kind & 4) { ScrDyn *prototype = scr_dyn_new_obj(); scr_dyn_obj_set(prototype, "constructor", 11, scr_dyn_retain((ScrDyn *)function)); - prototype->v.obj.entries[0].enumerable = false; + scr_dyn_obj_dict_entries(prototype)[0].enumerable = false; scr_dyn_obj_set(table, "prototype", 9, prototype); - ScrDynEntry *entry = &table->v.obj.entries[table->v.obj.len - 1]; + ScrDynEntry *entry = &scr_dyn_obj_dict_entries(table)[table->v.obj.len - 1]; entry->enumerable = false; entry->configurable = false; } @@ -7524,7 +7849,7 @@ static ScrDyn *scr_native_iterator_new(ScrDyn *source) { } #ifdef SCR_JS_TIER -/* A read site's answer for a receiver without a JS shape whose property is +/* A read site's answer for a receiver without a layout whose property is * plain data the runtime holds directly: a native array's length (the * generic read would build its checked view first) and a native iterator's * `next` (the builtin the generic read returns). +1, or NULL for the slow @@ -9636,7 +9961,7 @@ static void scr_errdyn_teardown(void); static size_t scr_errdyn_self_refs(const ScrDyn *d) { if (d->kind != SCR_DYN_OBJ) return 0; size_t n = 0; - for (size_t i = 0; i < d->v.obj.len; i++) n += d->v.obj.entries[i].value == d; + for (size_t i = 0; i < d->v.obj.len; i++) n += scr_dyn_obj_dict_entries(d)[i].value == d; return n; } @@ -9644,7 +9969,7 @@ static size_t scr_errdyn_self_refs(const ScrDyn *d) { * first so the release frees it. */ static void scr_errdyn_release_node(ScrDyn *d) { for (size_t i = 0; d->kind == SCR_DYN_OBJ && i < d->v.obj.len; i++) { - ScrDynEntry *entry = &d->v.obj.entries[i]; + ScrDynEntry *entry = &scr_dyn_obj_dict_entries(d)[i]; if (entry->value != d) continue; entry->value = scr_dyn_retain(scr_dyn_undefined()); scr_dyn_release(d); @@ -9819,9 +10144,9 @@ static ScrDyn *scr_error_stack_get_call(ScrClosure *closure, ScrDyn *const *args static ScrDyn *scr_error_stack_set_call(ScrClosure *closure, ScrDyn *const *args, size_t argc); /* Whether an own property is an error's `stack` accessor. */ -static bool scr_dyn_entry_is_error_stack(const ScrDynEntry *entry) { - return entry->accessor && entry->setter && entry->setter->kind == SCR_DYN_FUNC && - entry->setter->v.fn.thunk == scr_error_stack_set_call; +static bool scr_dyn_setter_is_error_stack(bool accessor, const ScrDyn *setter) { + return accessor && setter && setter->kind == SCR_DYN_FUNC && + setter->v.fn.thunk == scr_error_stack_set_call; } static ScrDyn *scr_error_stack_set_call(ScrClosure *closure, ScrDyn *const *args, size_t argc) { @@ -9838,7 +10163,7 @@ static ScrDyn *scr_error_stack_set_call(ScrClosure *closure, ScrDyn *const *args ScrStr *key = scr_str_new("stack", 5); ScrDynEntry *entry = scr_dyn_entry(self, key); scr_str_release(key); - if (entry && scr_dyn_entry_is_error_stack(entry)) { + if (entry && scr_dyn_setter_is_error_stack(entry->accessor, entry->setter)) { ScrDyn *old_value = entry->value, *old_getter = entry->getter, *old_setter = entry->setter; entry->value = scr_dyn_retain(value); entry->getter = entry->setter = NULL; @@ -9866,7 +10191,7 @@ static void scr_error_dyn_add_stack(ScrDyn *d) { scr_dyn_new_func(scr_closure_new(NULL, 0), scr_error_stack_set_call, 1, "native:error.stack", NULL); } scr_dyn_obj_set(d, "stack", 5, scr_dyn_retain(scr_dyn_undefined())); - ScrDynEntry *entry = &d->v.obj.entries[d->v.obj.len - 1]; + ScrDynEntry *entry = &scr_dyn_obj_dict_entries(d)[d->v.obj.len - 1]; entry->accessor = true; entry->getter = scr_dyn_retain(scr_error_stack_accessors[0]); entry->setter = scr_dyn_retain(scr_error_stack_accessors[1]); @@ -9889,25 +10214,25 @@ static bool scr_dyn_error_view_on_error_prototype(const ScrDyn *object) { ScrDyn *scr_error_dyn_fields(const ScrError *e) { ScrDyn *d = scr_dyn_new_obj(); scr_dyn_obj_set(d, "%error", 6, scr_dyn_new_bool(true)); /* the checked-dynamic tree's error marker */ - d->v.obj.entries[d->v.obj.len - 1].enumerable = false; + scr_dyn_obj_dict_entries(d)[d->v.obj.len - 1].enumerable = false; /* Node lists `stack` first among an error's own properties. */ scr_error_dyn_add_stack(d); if (!e->name_present || !e->message_present) { ScrDyn *prototype = scr_dyn_new_obj(); if (!e->name_present) { scr_dyn_obj_set(prototype, "name", 4, scr_dyn_new_str(e->name)); - prototype->v.obj.entries[prototype->v.obj.len - 1].enumerable = false; + scr_dyn_obj_dict_entries(prototype)[prototype->v.obj.len - 1].enumerable = false; } if (!e->message_present) { scr_dyn_obj_set(prototype, "message", 7, scr_dyn_new_str(e->message)); - prototype->v.obj.entries[prototype->v.obj.len - 1].enumerable = false; + scr_dyn_obj_dict_entries(prototype)[prototype->v.obj.len - 1].enumerable = false; } scr_dyn_release(scr_dyn_set_prototype(d, prototype)); scr_dyn_release(prototype); } if (e->message_present) { scr_dyn_obj_set(d, "message", 7, scr_dyn_new_str(e->message)); - d->v.obj.entries[d->v.obj.len - 1].enumerable = e->message_enumerable; + scr_dyn_obj_dict_entries(d)[d->v.obj.len - 1].enumerable = e->message_enumerable; } if (e->system_message) { /* SystemError: code, the read-only `info` context ({ message, path, @@ -9921,7 +10246,7 @@ ScrDyn *scr_error_dyn_fields(const ScrError *e) { scr_dyn_obj_set(info, "errno", 5, scr_dyn_new_num(e->system_errno)); if (e->system_code) scr_dyn_obj_set(info, "code", 4, scr_dyn_new_str(e->system_code)); scr_dyn_obj_set(d, "info", 4, info); - d->v.obj.entries[d->v.obj.len - 1].writable = false; + scr_dyn_obj_dict_entries(d)[d->v.obj.len - 1].writable = false; scr_dyn_obj_set(d, "errno", 5, scr_dyn_new_num(e->system_errno)); if (e->system_call) scr_dyn_obj_set(d, "syscall", 7, scr_dyn_new_str(e->system_call)); } else if (e->errno_order) { @@ -9947,7 +10272,7 @@ ScrDyn *scr_error_dyn_fields(const ScrError *e) { if (e->system_dest) scr_dyn_obj_set(d, "dest", 4, scr_dyn_new_str(e->system_dest)); if (e->error_cause) { scr_dyn_obj_set(d, "cause", 5, scr_dyn_retain(e->error_cause)); - d->v.obj.entries[d->v.obj.len - 1].enumerable = e->cause_enumerable; + scr_dyn_obj_dict_entries(d)[d->v.obj.len - 1].enumerable = e->cause_enumerable; } /* DOMException: `code` is the WebIDL legacy NUMBER (never the errno * string slot), and the options form's cause crosses as itself. */ @@ -9963,20 +10288,20 @@ ScrDyn *scr_error_dyn_fields(const ScrError *e) { if (e->vt == &scr_error_vts[SCR_ERR_SUPPRESSED] && scr_exc_suppressed_values(e, &suppressed_error, &suppressed_value)) { scr_dyn_obj_set(d, "error", 5, scr_caught_to_dyn(suppressed_error)); - d->v.obj.entries[d->v.obj.len - 1].enumerable = false; + scr_dyn_obj_dict_entries(d)[d->v.obj.len - 1].enumerable = false; scr_dyn_obj_set(d, "suppressed", 10, scr_caught_to_dyn(suppressed_value)); - d->v.obj.entries[d->v.obj.len - 1].enumerable = false; + scr_dyn_obj_dict_entries(d)[d->v.obj.len - 1].enumerable = false; } /* AggregateError's own non-enumerable `errors` list, shared with the * typed read so both spellings answer the same array. */ if (e->vt == &scr_error_vts[SCR_ERR_AGGREGATE]) { scr_dyn_obj_set(d, "errors", 6, scr_aggregate_errors((ScrError *)e)); - d->v.obj.entries[d->v.obj.len - 1].enumerable = false; + scr_dyn_obj_dict_entries(d)[d->v.obj.len - 1].enumerable = false; } /* An own `name` is assigned after construction defines the others. */ if (e->name_present) { scr_dyn_obj_set(d, "name", 4, scr_dyn_new_str(e->name)); - d->v.obj.entries[d->v.obj.len - 1].enumerable = e->name_enumerable; + scr_dyn_obj_dict_entries(d)[d->v.obj.len - 1].enumerable = e->name_enumerable; } return d; } @@ -9987,7 +10312,7 @@ ScrDyn *scr_error_dyn_fields(const ScrError *e) { * has no own `name` or no `after` property. */ void scr_error_dyn_place_name(ScrDyn *view, const char *after, size_t after_len) { if (view->kind != SCR_DYN_OBJ) return; - ScrDynEntry *entries = view->v.obj.entries; + ScrDynEntry *entries = scr_dyn_obj_dict_entries(view); size_t n = view->v.obj.len, from = n, to = n; for (size_t i = 0; i < n; i++) { if (entries[i].key_len == 4 && memcmp(entries[i].key, "name", 4) == 0) from = i; @@ -10000,14 +10325,14 @@ void scr_error_dyn_place_name(ScrDyn *view, const char *after, size_t after_len) memmove(&entries[from], &entries[from + 1], (n - from - 1) * sizeof *entries); memmove(&entries[at + 1], &entries[at], (n - 1 - at) * sizeof *entries); entries[at] = name; - SCR_JS_SHAPE_RESET(view); free(view->v.obj.index); view->v.obj.index = NULL; } static size_t scr_dyn_entry_index(const ScrDyn *object, const char *key, size_t key_len) { for (size_t i = 0; i < object->v.obj.len; i++) { - const ScrDynEntry *entry = &object->v.obj.entries[i]; + const ScrDynProp entry_prop = scr_dyn_obj_prop_at(object, i); + const ScrDynProp *entry = &entry_prop; if (entry->key_len == key_len && memcmp(entry->key, key, key_len) == 0) return i; } return SIZE_MAX; @@ -10018,7 +10343,8 @@ static size_t scr_dyn_entry_index(const ScrDyn *object, const char *key, size_t * starting with '%'), and a `message` that directly follows them. */ static bool scr_error_bag_constructed(const ScrDyn *bag, size_t b) { for (size_t i = 0; i <= b; i++) { - const ScrDynEntry *entry = &bag->v.obj.entries[i]; + const ScrDynProp entry_prop = scr_dyn_obj_prop_at(bag, i); + const ScrDynProp *entry = &entry_prop; bool constructed = (entry->key_len == 5 && memcmp(entry->key, "stack", 5) == 0) || (entry->key_len > 0 && entry->key[0] == '%') || (entry->key_len == 7 && memcmp(entry->key, "message", 7) == 0); @@ -10040,7 +10366,8 @@ static size_t scr_error_bag_place(const ScrDyn *view, const ScrDyn *bag, size_t bool name_placed, size_t from) { bool late = name || !scr_error_bag_constructed(bag, b); for (size_t p = b; p-- > 0;) { - const ScrDynEntry *anchor = &bag->v.obj.entries[p]; + const ScrDynProp anchor_prop = scr_dyn_obj_prop_at(bag, p); + const ScrDynProp *anchor = &anchor_prop; if (late && scr_error_bag_constructed(bag, p)) break; if (late && name_placed && anchor->key_len == 4 && memcmp(anchor->key, "name", 4) == 0) continue; size_t after = scr_dyn_entry_index(view, anchor->key, anchor->key_len); @@ -10048,7 +10375,7 @@ static size_t scr_error_bag_place(const ScrDyn *view, const ScrDyn *bag, size_t } if (!late) return 0; for (size_t p = b + 1; p < bag->v.obj.len; p++) { - size_t before = scr_dyn_entry_index(view, bag->v.obj.entries[p].key, bag->v.obj.entries[p].key_len); + size_t before = scr_dyn_entry_index(view, scr_dyn_obj_dict_entries(bag)[p].key, scr_dyn_obj_dict_entries(bag)[p].key_len); if (before != SIZE_MAX) return before > from ? before - 1 : before; } return from; @@ -10068,16 +10395,17 @@ void scr_error_dyn_follow_bag(ScrDyn *view, const ScrDyn *bag, const ScrError *e bool name = s == 0; if (!(name ? e->name_present : e->message_present)) continue; size_t at = scr_dyn_entry_index(view, slots[s].key, slots[s].len); - if (at == SIZE_MAX || view->v.obj.entries[at].accessor) continue; + if (at == SIZE_MAX || scr_dyn_obj_dict_entries(view)[at].accessor) continue; ScrDyn *value = scr_dyn_new_str(name ? e->name : e->message); scr_dyn_region_store(view, value); - ScrDyn *old = view->v.obj.entries[at].value; - view->v.obj.entries[at].value = value; + ScrDyn *old = scr_dyn_obj_dict_entries(view)[at].value; + scr_dyn_obj_dict_entries(view)[at].value = value; scr_dyn_release(old); } bool moved = false; for (size_t b = 0; b < bag->v.obj.len; b++) { - const ScrDynEntry *bag_entry = &bag->v.obj.entries[b]; + const ScrDynProp bag_entry_prop = scr_dyn_obj_prop_at(bag, b); + const ScrDynProp *bag_entry = &bag_entry_prop; bool slot = (bag_entry->key_len == 4 && memcmp(bag_entry->key, "name", 4) == 0) || (bag_entry->key_len == 7 && memcmp(bag_entry->key, "message", 7) == 0); bool name = bag_entry->key_len == 4; @@ -10087,7 +10415,7 @@ void scr_error_dyn_follow_bag(ScrDyn *view, const ScrDyn *bag, const ScrError *e if (from == SIZE_MAX) continue; size_t to = scr_error_bag_place(view, bag, b, name, name_placed, from); if (to == from) continue; - ScrDynEntry *entries = view->v.obj.entries; + ScrDynEntry *entries = scr_dyn_obj_dict_entries(view); ScrDynEntry entry = entries[from]; if (to < from) memmove(&entries[to + 1], &entries[to], (from - to) * sizeof *entries); else memmove(&entries[from], &entries[from + 1], (to - from) * sizeof *entries); @@ -10095,7 +10423,6 @@ void scr_error_dyn_follow_bag(ScrDyn *view, const ScrDyn *bag, const ScrError *e moved = true; } if (moved) { - SCR_JS_SHAPE_RESET(view); free(view->v.obj.index); view->v.obj.index = NULL; } @@ -10194,7 +10521,8 @@ void scr_error_commit_dyn(ScrError *e, const ScrDyn *view) { e->error_cause = replacement; e->cause_enumerable = false; for (size_t i = 0; cause && i < view->v.obj.len; i++) { - const ScrDynEntry *entry = &view->v.obj.entries[i]; + const ScrDynProp entry_prop = scr_dyn_obj_prop_at(view, i); + const ScrDynProp *entry = &entry_prop; if (entry->key_len == 5 && memcmp(entry->key, "cause", 5) == 0) e->cause_enumerable = entry->enumerable; } } @@ -10228,7 +10556,8 @@ ScrError *scr_error_from_dyn(const ScrDyn *d) { scr_error_install_cause_drop(&scr_error_cause_drop_impl); e->error_cause = scr_dyn_retain(cause); for (size_t i = 0; i < d->v.obj.len; i++) { - const ScrDynEntry *entry = &d->v.obj.entries[i]; + const ScrDynProp entry_prop = scr_dyn_obj_prop_at(d, i); + const ScrDynProp *entry = &entry_prop; if (entry->key_len == 5 && memcmp(entry->key, "cause", 5) == 0) e->cause_enumerable = entry->enumerable; } } @@ -11364,7 +11693,18 @@ static void scr_dyn_throw_property(const ScrDyn *object, const char *key, size_t * is written (or runs its setter, or refuses the write); an absent one * consults the prototype chain and is then added. */ static void scr_dyn_object_key_set(ScrDyn *recv, ScrStr *key, ScrDyn *value, const ScrDyn *receiver) { - ScrDynEntry *entry = scr_dyn_entry(recv, key); + if (recv->v.obj.layout) { + ScrDyn **slot = scr_dyn_layout_slot(recv, key->data, key->len); + if (slot) { + scr_dyn_region_store(recv, value); + ScrDyn *old = *slot; + *slot = scr_dyn_retain(value); + scr_dyn_release(old); + scr_error_sync_cause(recv, key); + return; + } + } + ScrDynEntry *entry = recv->v.obj.layout ? NULL : scr_dyn_entry(recv, key); if (entry) { if (entry->accessor && entry->setter) { ScrDyn *args[] = {value}; @@ -11396,6 +11736,13 @@ static void scr_dyn_object_key_set(ScrDyn *recv, ScrStr *key, ScrDyn *value, con ScrDyn *table = current->kind == SCR_DYN_FUNC ? scr_dyn_fn_properties(current) : NULL; const ScrDyn *object = table ? table : current; if (object->kind != SCR_DYN_OBJ) { scr_dyn_release(table); break; } + if (object->v.obj.layout) { + /* A layout-mode prototype's properties are writable data. */ + bool found = scr_layout_find(object->v.obj.layout, key->data, key->len) != UINT32_MAX; + current = found ? NULL : scr_dyn_proto_next(object); + scr_dyn_release(table); + continue; + } ScrDynEntry *inherited = scr_dyn_entry((ScrDyn *)object, key); if (!inherited) { current = scr_dyn_proto_next(object); @@ -12507,6 +12854,13 @@ static void scr_json_fit_array(ScrDyn *arr) { static void scr_json_fit_object(ScrDyn *obj) { size_t len = obj->v.obj.len, cap = obj->v.obj.cap; if (len == 0 || len == cap) return; + if (obj->v.obj.layout) { + ScrDyn **slots = scr_json_fit_block(obj->v.obj.slots, len * sizeof *slots); + if (!slots) return; /* keep the larger block */ + obj->v.obj.slots = slots; + obj->v.obj.cap = len; + return; + } for (size_t i = len; i < cap; i++) { ScrDynEntry *entry = &obj->v.obj.entries[i]; scr_dyn_key_release(entry->key, entry->key_len); @@ -12570,6 +12924,7 @@ static ScrDyn *scr_json_array(ScrJsonP *p) { typedef struct ScrJsonShape { char *key; size_t key_len; + const ScrLayout *layout; /* the object's layout after this transition */ uint32_t child; /* first transition; 0 = none (the root is never a child) */ uint32_t sibling; /* next transition from the same layout; 0 = none */ } ScrJsonShape; @@ -12603,13 +12958,14 @@ static inline uint32_t scr_json_shape_follow(ScrJsonP *p, uint32_t shape) { return 0; } -/* Record `entry`'s key as a transition from `shape`; 0 when the budget is - * spent (the object then finishes on the ordinary path). */ -static uint32_t scr_json_shape_add(ScrJsonP *p, uint32_t shape, const ScrDynEntry *entry) { +/* Record the last key of `layout`, an object's layout after a put appended + * it, as a transition from `shape`; 0 when the budget is spent (the object + * then finishes on the ordinary path). */ +static uint32_t scr_json_shape_add(ScrJsonP *p, uint32_t shape, const ScrLayout *layout) { if (!p->shapes) { p->shapes = malloc(16 * sizeof *p->shapes); if (!p->shapes) scr_json_oom(); - p->shapes[0] = (ScrJsonShape){0}; + p->shapes[0] = (ScrJsonShape){NULL, 0, &scr_layout_empty, 0, 0}; p->nshapes = 1; p->shape_cap = 16; } @@ -12621,41 +12977,18 @@ static uint32_t scr_json_shape_add(ScrJsonP *p, uint32_t shape, const ScrDynEntr p->shape_cap *= 2; } uint32_t added = p->nshapes++; - ((ScrDynKey *)(entry->key - offsetof(ScrDynKey, bytes)))->rc++; - p->shapes[added] = (ScrJsonShape){entry->key, entry->key_len, 0, p->shapes[shape].child}; + const ScrLayoutKey *key = &layout->keys[layout->count - 1]; + scr_dyn_key_retain(key->key); + p->shapes[added] = (ScrJsonShape){key->key, key->len, layout, 0, p->shapes[shape].child}; p->shapes[shape].child = added; return added; } -/* scr_dyn_obj_put for a fresh parser object and a key it does not hold yet, - * sharing the transition's key bytes. */ -static void scr_dyn_obj_append_shared(ScrDyn *obj, char *key, size_t key_len, ScrDyn *value) { +/* scr_dyn_obj_put for a fresh parser object in layout mode and a key it + * does not hold yet: the transition's layout extends the object's. */ +static void scr_dyn_obj_append_shared(ScrDyn *obj, const ScrLayout *layout, ScrDyn *value) { scr_dyn_region_store(obj, value); - if (obj->v.obj.len == obj->v.obj.cap) { - size_t cap = obj->v.obj.cap ? obj->v.obj.cap * 2 : 4; - ScrDynEntry *entries = scr_mem_realloc(obj->v.obj.entries, cap * sizeof *entries); - if (!entries) scr_json_oom(); - memset(entries + obj->v.obj.cap, 0, (cap - obj->v.obj.cap) * sizeof *entries); - obj->v.obj.entries = entries; - obj->v.obj.cap = cap; - } - SCR_JS_SHAPE_RESET(obj); - ScrDynEntry *e = &obj->v.obj.entries[obj->v.obj.len++]; - if (e->key != key) { - ((ScrDynKey *)(key - offsetof(ScrDynKey, bytes)))->rc++; - scr_dyn_key_release(e->key, e->key_len); - e->key = key; - } - e->key_len = key_len; - e->value = value; - e->getter = NULL; - e->setter = NULL; - e->accessor = false; - e->fenced = false; - e->writable = true; - e->enumerable = true; - e->configurable = true; - if (obj->v.obj.len >= SCR_DYN_OBJECT_INDEX_MIN) scr_dyn_index_append(obj); + scr_dyn_obj_layout_push(obj, layout, value); } static ScrDyn *scr_json_object(ScrJsonP *p) { @@ -12730,14 +13063,14 @@ static ScrDyn *scr_json_object(ScrJsonP *p) { return NULL; } if (shared_key) { - scr_dyn_obj_append_shared(obj, shared_key, key_len, value); + scr_dyn_obj_append_shared(obj, p->shapes[follow].layout, value); shape = follow; } else { size_t before = obj->v.obj.len; scr_dyn_obj_put(obj, key, key_len, value); /* later duplicate keys win */ if (shaped) { - uint32_t added = !decoded_key && obj->v.obj.len == before + 1 - ? scr_json_shape_add(p, shape, &obj->v.obj.entries[before]) : 0; + uint32_t added = !decoded_key && obj->v.obj.len == before + 1 && obj->v.obj.layout + ? scr_json_shape_add(p, shape, obj->v.obj.layout) : 0; if (added) shape = added; else shaped = false; } @@ -13548,7 +13881,7 @@ static ScrDyn *scr_json_member(const ScrDyn *holder, const ScrStr *key) { static void scr_json_delete_member(ScrDyn *object, const ScrStr *key) { for (size_t i = 0; i < object->v.obj.len; i++) { - ScrDynEntry *entry = &object->v.obj.entries[i]; + ScrDynEntry *entry = &scr_dyn_obj_dict_entries(object)[i]; if (entry->key_len != key->len || memcmp(entry->key, key->data, key->len) != 0) continue; if (entry->fenced) { scr_dyn_namespace_member_fence(); @@ -13557,12 +13890,11 @@ static void scr_json_delete_member(ScrDyn *object, const ScrStr *key) { ScrDynEntry removed = *entry; memmove(entry, entry + 1, (object->v.obj.len - i - 1) * sizeof *entry); object->v.obj.len--; - SCR_JS_SHAPE_RESET(object); free(object->v.obj.index); object->v.obj.index = NULL; /* The moved tail aliases a live entry; spare slots own only their own * retained key bytes, never a second pointer to a surviving property. */ - memset(&object->v.obj.entries[object->v.obj.len], 0, sizeof *entry); + memset(&scr_dyn_obj_dict_entries(object)[object->v.obj.len], 0, sizeof *entry); scr_dyn_key_release(removed.key, removed.key_len); scr_dyn_release(removed.value); scr_dyn_release(removed.getter); @@ -13937,7 +14269,8 @@ static bool scr_json_plain_container(const ScrDyn *value) { } if (value->kind != SCR_DYN_OBJ) return false; for (size_t i = 0; i < value->v.obj.len; i++) { - const ScrDynEntry *entry = &value->v.obj.entries[i]; + const ScrDynProp entry_prop = scr_dyn_obj_prop_at(value, i); + const ScrDynProp *entry = &entry_prop; if (!entry->enumerable) continue; double index; if (entry->accessor || (!intact && !scr_json_plain_value(entry->value)) || @@ -13960,7 +14293,8 @@ static __attribute__((noinline)) bool scr_json_plain_write(ScrJsonBuf *buffer, c scr_jb_putc(buffer, array ? '[' : '{'); bool first = true; for (size_t i = 0; i < length; i++) { - const ScrDynEntry *entry = array ? NULL : &value->v.obj.entries[i]; + const ScrDynProp entry_prop = array ? (ScrDynProp){0} : scr_dyn_obj_prop_at(value, i); + const ScrDynProp *entry = array ? NULL : &entry_prop; if (entry && !entry->enumerable) continue; const ScrDyn *child = array ? value->v.arr.items[i] : entry->value; bool omitted = scr_json_omitted(child); @@ -14296,7 +14630,8 @@ static bool scr_jb_put_pure(ScrJsonBuf *b, const ScrDyn *value, size_t depth) { scr_jb_putc(b, '{'); bool first = true; for (size_t i = 0; i < value->v.obj.len; i++) { - const ScrDynEntry *entry = &value->v.obj.entries[i]; + const ScrDynProp entry_prop = scr_dyn_obj_prop_at(value, i); + const ScrDynProp *entry = &entry_prop; if (!entry->enumerable) continue; double index; if (entry->accessor || (entry->key_len == 6 && memcmp(entry->key, "toJSON", 6) == 0) || @@ -14827,14 +15162,15 @@ static ScrDyn *scr_sc_clone(const ScrDyn *v, const ScrScParent *up, ScrDynRegion } ScrDyn *out = scr_dyn_new_obj(); for (size_t i = 0; i < v->v.obj.len; i++) { - const ScrDynEntry *e = &v->v.obj.entries[i]; - if (scr_dyn_entry_is_error_stack(e)) { + const ScrDynProp e_prop = scr_dyn_obj_prop_at(v, i); + const ScrDynProp *e = &e_prop; + if (scr_dyn_setter_is_error_stack(e->accessor, e->setter)) { /* A stack that was already formatted copies as a non-enumerable * data property; an unformatted one has nothing to copy. */ ScrError *error = scr_errdyn_err_of(v); if (error && error->stack) { scr_dyn_obj_set(out, "stack", 5, scr_dyn_new_str(error->stack)); - out->v.obj.entries[out->v.obj.len - 1].enumerable = false; + scr_dyn_obj_dict_entries(out)[out->v.obj.len - 1].enumerable = false; } scr_error_release(error); continue; @@ -14947,6 +15283,11 @@ static ScrDyn *scr_dyn_obj_read_receiver(const ScrDyn *d, const char *key, size_ continue; } if (current->kind != SCR_DYN_OBJ) continue; + if (current->v.obj.layout) { + ScrDyn **slot = scr_dyn_layout_slot(current, key, key_len); + if (slot) return scr_dyn_retain(*slot); + continue; + } ScrDynEntry *entry = scr_dyn_find_entry(current, key, key_len); if (entry) { if (!entry->accessor) return scr_dyn_retain(entry->value); @@ -15072,9 +15413,38 @@ static void scr_dyn_read_ics_reset(void) { scr_dyn_read_ics_registered = false; } +#ifndef SCR_RC_AUDIT +/* Points the site at `key` (shared key bytes). */ +static void scr_dyn_read_ic_key(ScrDynReadIc *ic, char *key, size_t key_len) { + if (ic->key == key) return; + scr_dyn_key_retain(key); + if (ic->key) { + scr_dyn_key_release(ic->key, ic->key_len); + } else { + if (!scr_dyn_read_ics_registered) { + scr_dyn_read_ics_registered = true; + scr_atexit(scr_dyn_read_ics_reset); + } + ic->next = scr_dyn_read_ics; + scr_dyn_read_ics = ic; + } + ic->key = key; + ic->key_len = key_len; +} +#endif + static __attribute__((noinline)) ScrDyn *scr_dyn_obj_read_ic_miss(const ScrDyn *d, const ScrStr *key, ScrDynReadIc *ic) { #ifndef SCR_RC_AUDIT + if (d->kind == SCR_DYN_OBJ && d->v.obj.layout) { + uint32_t i = d != scr_builtin_object_prototype + ? scr_layout_find(d->v.obj.layout, key->data, key->len) : UINT32_MAX; + if (i == UINT32_MAX) return scr_dyn_obj_read_receiver(d, key->data, key->len, d); + const ScrLayoutKey *k = &d->v.obj.layout->keys[i]; + scr_dyn_read_ic_key(ic, k->key, k->len); + ic->index = i; + return scr_dyn_retain(d->v.obj.slots[i]); + } ScrDynEntry *entry = d != scr_builtin_object_prototype ? scr_dyn_find_entry(d, key->data, key->len) : NULL; if (entry && !entry->accessor) { if (ic->key != entry->key) { @@ -15105,6 +15475,16 @@ static __attribute__((noinline)) ScrDyn *scr_dyn_obj_read_ic_miss(const ScrDyn * * do not, and compare their bytes at the remembered position instead. */ ScrDyn *scr_dyn_obj_read_ic(const ScrDyn *d, const ScrStr *key, ScrDynReadIc *ic) { size_t index = ic->index; + const ScrLayout *layout = d->kind == SCR_DYN_OBJ ? d->v.obj.layout : NULL; + if (layout) { + if (index < d->v.obj.len) { + const ScrLayoutKey *k = &layout->keys[index]; + if ((k->key == ic->key || (k->len == key->len && scr_key_equal(k->key, key->data, key->len))) && + d != scr_builtin_object_prototype) + return scr_dyn_retain(d->v.obj.slots[index]); + } + return scr_dyn_obj_read_ic_miss(d, key, ic); + } if (index < d->v.obj.len) { const ScrDynEntry *entry = &d->v.obj.entries[index]; if ((entry->key == ic->key || @@ -15301,7 +15681,8 @@ static size_t *scr_dyn_obj_key_order(const ScrDyn *v) { ScrKeyIndex *indices = NULL; size_t count = 0; for (size_t i = 0; i < n; i++) { - const ScrDynEntry *entry = &v->v.obj.entries[i]; + const ScrDynProp entry_prop = scr_dyn_obj_prop_at(v, i); + const ScrDynProp *entry = &entry_prop; uint32_t index; if (!scr_key_array_index(entry->key, entry->key_len, &index)) continue; if (!indices) { @@ -15318,7 +15699,8 @@ static size_t *scr_dyn_obj_key_order(const ScrDyn *v) { for (size_t i = 0; i < count; i++) order[i] = indices[i].entry; free(indices); for (size_t i = 0; i < n; i++) { - const ScrDynEntry *entry = &v->v.obj.entries[i]; + const ScrDynProp entry_prop = scr_dyn_obj_prop_at(v, i); + const ScrDynProp *entry = &entry_prop; uint32_t index; if (!scr_key_array_index(entry->key, entry->key_len, &index)) order[count++] = i; } @@ -15329,8 +15711,9 @@ static size_t *scr_dyn_obj_key_order(const ScrDyn *v) { * walk over its values runs no user code and the object cannot change * under it. */ static bool scr_dyn_obj_data_only(const ScrDyn *v) { + if (v->v.obj.layout) return true; for (size_t i = 0; i < v->v.obj.len; i++) - if (v->v.obj.entries[i].accessor) return false; + if (scr_dyn_obj_dict_entries(v)[i].accessor) return false; return true; } @@ -15339,7 +15722,8 @@ ScrDyn *scr_dyn_obj_own_keys(const ScrDyn *v) { ScrDyn *keys = scr_dyn_new_arr(); scr_dyn_arr_reserve(keys, v->v.obj.len); for (size_t i = 0; i < v->v.obj.len; i++) { - const ScrDynEntry *entry = &v->v.obj.entries[order ? order[i] : i]; + const ScrDynProp entry_prop = scr_dyn_obj_prop_at(v, order ? order[i] : i); + const ScrDynProp *entry = &entry_prop; scr_dyn_arr_push(keys, scr_dyn_objwalk_key(entry->key, entry->key_len)); } free(order); @@ -15552,7 +15936,8 @@ static ScrDyn *scr_dyn_obj_data_walk(const ScrDyn *v, ScrObjWalk mode) { ScrDyn *out = scr_dyn_new_arr(); scr_dyn_arr_reserve(out, v->v.obj.len); for (size_t i = 0; i < v->v.obj.len; i++) { - const ScrDynEntry *entry = &v->v.obj.entries[order ? order[i] : i]; + const ScrDynProp entry_prop = scr_dyn_obj_prop_at(v, order ? order[i] : i); + const ScrDynProp *entry = &entry_prop; if (entry->enumerable) scr_dyn_objwalk_push(out, mode, entry->key, entry->key_len, entry->value); } @@ -15577,7 +15962,8 @@ static ScrDyn *scr_dyn_objwalk(const ScrDyn *v, ScrObjWalk mode) { * the shared numeric/insertion ordering over a names-only table. */ ScrDyn *names = scr_dyn_new_obj(); for (size_t i = 0; i < v->v.proxy.target->v.obj.len; i++) { - const ScrDynEntry *entry = &v->v.proxy.target->v.obj.entries[i]; + const ScrDynProp entry_prop = scr_dyn_obj_prop_at(v->v.proxy.target, i); + const ScrDynProp *entry = &entry_prop; scr_dyn_obj_set(names, entry->key, entry->key_len, scr_dyn_retain(scr_dyn_undefined())); } raw = scr_dyn_obj_keys(names); @@ -15619,7 +16005,8 @@ static ScrDyn *scr_dyn_objwalk(const ScrDyn *v, ScrObjWalk mode) { scr_dyn_release(raw); const ScrDyn *target = v->v.proxy.target; for (size_t i = 0; target->kind == SCR_DYN_OBJ && i < target->v.obj.len; i++) { - const ScrDynEntry *entry = &target->v.obj.entries[i]; + const ScrDynProp entry_prop = scr_dyn_obj_prop_at(target, i); + const ScrDynProp *entry = &entry_prop; if (entry->configurable) continue; bool found = false; for (size_t j = 0; j < keys->v.arr.len; j++) { @@ -15888,7 +16275,8 @@ static ScrArr *scr_dyn_own_key_strs(const ScrDyn *v, bool shared) { size_t *order = scr_dyn_obj_key_order(v); ScrArr *out = scr_arr_new(SCR_ELEM_STR, v->v.obj.len); for (size_t i = 0; i < v->v.obj.len; i++) { - const ScrDynEntry *entry = &v->v.obj.entries[order ? order[i] : i]; + const ScrDynProp entry_prop = scr_dyn_obj_prop_at(v, order ? order[i] : i); + const ScrDynProp *entry = &entry_prop; if (entry->enumerable) scr_arr_push_ref(out, scr_str_new(entry->key, entry->key_len)); } free(order); @@ -15958,7 +16346,8 @@ ScrDynEntryPairs *scr_dyn_obj_entry_pairs(const ScrDyn *v) { size_t *order = scr_dyn_obj_key_order(v); ScrDynEntryPairs *out = scr_dyn_entry_pairs_new(v->v.obj.len); for (size_t i = 0; i < v->v.obj.len; i++) { - const ScrDynEntry *entry = &v->v.obj.entries[order ? order[i] : i]; + const ScrDynProp entry_prop = scr_dyn_obj_prop_at(v, order ? order[i] : i); + const ScrDynProp *entry = &entry_prop; if (!entry->enumerable) continue; out->pairs[out->count++] = (ScrDynEntryPair){scr_str_new(entry->key, entry->key_len), scr_dyn_retain(entry->value)}; @@ -16021,7 +16410,8 @@ ScrArr *scr_dyn_obj_value_list(const ScrDyn *v) { uint64_t *slots = scr_dyn_value_slots(v->v.obj.len, stack, 16); size_t count = 0; for (size_t i = 0; i < v->v.obj.len; i++) { - const ScrDynEntry *entry = &v->v.obj.entries[order ? order[i] : i]; + const ScrDynProp entry_prop = scr_dyn_obj_prop_at(v, order ? order[i] : i); + const ScrDynProp *entry = &entry_prop; if (entry->enumerable) slots[count++] = (uint64_t)(uintptr_t)scr_dyn_retain(entry->value); } free(order); @@ -16272,7 +16662,7 @@ static void scr_dyn_copy_property_descriptor(ScrDyn *target, const ScrDyn *src, ScrDyn *setter = accessor && from->setter ? scr_dyn_retain(from->setter) : NULL; ScrStr *name = slot ? scr_str_new(from->key, from->key_len) : NULL; scr_dyn_obj_set(target, from->key, from->key_len, value); - ScrDynEntry *entry = &target->v.obj.entries[target->v.obj.len - 1]; + ScrDynEntry *entry = &scr_dyn_obj_dict_entries(target)[target->v.obj.len - 1]; entry->accessor = accessor; entry->getter = getter; entry->setter = setter; @@ -16295,7 +16685,7 @@ ScrDyn *scr_dyn_copy_property_descriptors(ScrDyn *target, const ScrDyn *src) { if (src->v.obj.len) scr_dyn_region_store(target, NULL); size_t *order = scr_dyn_obj_key_order(src); for (size_t i = 0; i < src->v.obj.len && !scr_exc_pending(); i++) - scr_dyn_copy_property_descriptor(target, src, &src->v.obj.entries[order ? order[i] : i]); + scr_dyn_copy_property_descriptor(target, src, &scr_dyn_obj_dict_entries(src)[order ? order[i] : i]); free(order); } else { ScrDyn *keys = scr_dyn_obj_own_keys(src); @@ -16627,9 +17017,9 @@ ScrError *scr_error_new_options(int kind, const ScrDyn *message, const ScrDyn *o static void scr_suppressed_attach(ScrError *e, ScrDyn *error, ScrDyn *suppressed) { ScrDyn *view = scr_dyn_from_error(e); scr_dyn_obj_set(view, "error", 5, error); - view->v.obj.entries[view->v.obj.len - 1].enumerable = false; + scr_dyn_obj_dict_entries(view)[view->v.obj.len - 1].enumerable = false; scr_dyn_obj_set(view, "suppressed", 10, suppressed); - view->v.obj.entries[view->v.obj.len - 1].enumerable = false; + scr_dyn_obj_dict_entries(view)[view->v.obj.len - 1].enumerable = false; scr_dyn_release(view); } @@ -17228,7 +17618,8 @@ static ScrDyn *scr_ffi_open(ScrDyn *catalog, const ScrDyn *path, const ScrDyn *d if (scr_ffi_text_equal(scr_dyn_obj_get(catalog->v.arr.items[i], "library", 7), path)) found = true; if (!found) goto invalid; for (size_t i = 0; i < definitions->v.obj.len; i++) { - const ScrDynEntry *requested = &definitions->v.obj.entries[i]; + const ScrDynProp requested_prop = scr_dyn_obj_prop_at(definitions, i); + const ScrDynProp *requested = &requested_prop; if (!requested->enumerable) continue; if (requested->accessor || requested->value->kind != SCR_DYN_OBJ) goto invalid; ScrDyn *entry = NULL; @@ -18438,7 +18829,7 @@ ScrDyn *scr_dyn_freeze_data(ScrDyn *value) { if (value->kind == SCR_DYN_OBJ && !value->copied_from_native) { value->non_extensible = true; for (size_t i = 0; i < value->v.obj.len; i++) { - ScrDynEntry *entry = &value->v.obj.entries[i]; + ScrDynEntry *entry = &scr_dyn_obj_dict_entries(value)[i]; entry->configurable = false; if (!entry->accessor) entry->writable = false; } @@ -18474,7 +18865,8 @@ bool scr_dyn_is_frozen(const ScrDyn *value) { if (value->kind == SCR_DYN_OBJ && !value->copied_from_native) { if (!value->non_extensible) return false; for (size_t i = 0; i < value->v.obj.len; i++) { - const ScrDynEntry *entry = &value->v.obj.entries[i]; + const ScrDynProp entry_prop = scr_dyn_obj_prop_at(value, i); + const ScrDynProp *entry = &entry_prop; if (entry->configurable || (!entry->accessor && entry->writable)) return false; } return true; @@ -18536,7 +18928,7 @@ void scr_dyn_class_field_attributes(ScrDyn *view, ScrStr *name, double bits) { static void scr_dyn_class_table_attributes(ScrDyn *table, unsigned b) { table->non_extensible = true; for (size_t i = 0; i < table->v.obj.len; i++) { - ScrDynEntry *entry = &table->v.obj.entries[i]; + ScrDynEntry *entry = &scr_dyn_obj_dict_entries(table)[i]; if (b & (SCR_CLASS_SEALED | SCR_CLASS_FROZEN)) entry->configurable = false; if ((b & SCR_CLASS_FROZEN) && !entry->accessor) entry->writable = false; } @@ -18757,12 +19149,8 @@ bool scr_dyn_iterates_by_protocol(const ScrDyn *value) { const ScrDyn *scr_dyn_tier_object_prototype(void) { return scr_builtin_object_prototype; } -char *scr_dyn_tier_key_copy(const char *key, size_t key_len) { return scr_dyn_key_copy(key, key_len); } - -void scr_dyn_tier_key_release(char *key, size_t key_len) { scr_dyn_key_release(key, key_len); } - -void scr_dyn_tier_append(ScrDyn *obj, char *key, size_t key_len, ScrDyn *value) { - scr_dyn_obj_append_shared(obj, key, key_len, value); +void scr_dyn_tier_append(ScrDyn *obj, const ScrLayout *next, ScrDyn *value) { + scr_dyn_obj_append_shared(obj, next, value); } #endif diff --git a/packages/runtime/src/scr_json.test.c b/packages/runtime/src/scr_json.test.c index 29ba4bfe3..4ecae73b5 100644 --- a/packages/runtime/src/scr_json.test.c +++ b/packages/runtime/src/scr_json.test.c @@ -10,6 +10,7 @@ #ifdef SCR_RC_AUDIT long scr_str_live_count(void); long scr_dyn_key_live_count(void); +void scr_layout_reset_idle(void); #endif static void put(ScrDyn *map, ScrDyn *key, ScrDyn *value) { @@ -167,7 +168,7 @@ static void checked_storage(void) { char key[16]; int length = snprintf(key, sizeof key, "key-%d", i); scr_dyn_obj_set(object, key, (size_t)length, scr_dyn_new_num(i)); - assert((object->v.obj.index != NULL) == (i >= 31)); + assert((object->v.obj.index != NULL) == (i >= (int)SCR_LAYOUT_MAX_KEYS)); } for (int i = 0; i < 129; i++) { char key[16]; @@ -229,6 +230,8 @@ static void checked_storage(void) { static void shared_property_keys(void) { #ifdef SCR_RC_AUDIT + /* Layouts hold key references until the thread's state is torn down. */ + scr_layout_reset_idle(); long before = scr_dyn_key_live_count(); #endif /* Distinct objects share bytes, not values or property attributes. Key @@ -238,7 +241,8 @@ static void shared_property_keys(void) { char key[] = "shared\0name"; scr_dyn_obj_set(first, key, sizeof key - 1, scr_dyn_new_num(1)); scr_dyn_obj_set(second, key, sizeof key - 1, scr_dyn_new_num(2)); - assert(first->v.obj.entries[0].key == second->v.obj.entries[0].key); + size_t first_len, second_len; + assert(scr_dyn_obj_key_at(first, 0, &first_len) == scr_dyn_obj_key_at(second, 0, &second_len)); key[0] = 'x'; ScrStr *name = scr_str_new("shared\0name", sizeof key - 1); scr_dyn_key_delete(first, name, true); @@ -269,6 +273,7 @@ static void shared_property_keys(void) { } } #ifdef SCR_RC_AUDIT + scr_layout_reset_idle(); assert(scr_dyn_key_live_count() == before); #endif } @@ -651,8 +656,10 @@ static void json_schema_parse(void) { static const char *const order[] = {"tags", "ok", "extra", "qty", "sku"}; assert(view->kind == SCR_DYN_OBJ && view->v.obj.len == 5); for (size_t i = 0; i < 5; i++) { - assert(view->v.obj.entries[i].key_len == strlen(order[i])); - assert(memcmp(view->v.obj.entries[i].key, order[i], strlen(order[i])) == 0); + size_t key_len; + const char *key = scr_dyn_obj_key_at(view, i, &key_len); + assert(key_len == strlen(order[i])); + assert(memcmp(key, order[i], strlen(order[i])) == 0); } assert(scr_dyn_obj_get(view, "extra", 5)->kind == SCR_DYN_OBJ); test_item_release(second); diff --git a/packages/runtime/src/scr_message.c b/packages/runtime/src/scr_message.c index 419dcea4b..382907219 100644 --- a/packages/runtime/src/scr_message.c +++ b/packages/runtime/src/scr_message.c @@ -702,9 +702,10 @@ static ScrMessage *scr_message_try_publish(const ScrDyn *value) { } else if (d->rc != SIZE_MAX) { scr_cyc_on_dead(d); /* leave the candidate and tenured buffers */ d->rc = SIZE_MAX; - /* A shape names a node of this thread's transition tree (scr_js.h), - * which other threads cannot use and which ends with this thread. */ - if (d->kind == SCR_DYN_OBJ) d->v.obj.shape = NULL; + /* A layout names a node of this thread's transition tree + * (scr_dyn.h), which other threads cannot use and which ends with + * this thread: the object moves to dictionary mode. */ + if (d->kind == SCR_DYN_OBJ) scr_dyn_to_dictionary(d); #ifdef SCR_RC_AUDIT scr_dyn_live_forget(); #endif diff --git a/packages/runtime/src/scr_message.test.c b/packages/runtime/src/scr_message.test.c index b6adf34c5..10459255b 100644 --- a/packages/runtime/src/scr_message.test.c +++ b/packages/runtime/src/scr_message.test.c @@ -225,8 +225,11 @@ static void check_large(void) { ScrDyn *decoded = scr_message_decode(message); assert(decoded && !scr_exc_pending()); assert(decoded->v.obj.len == 42); - assert(decoded->v.obj.entries[0].key_len == 5 && !memcmp(decoded->v.obj.entries[0].key, "item0", 5)); - assert(decoded->v.obj.entries[41].key_len == 6 && !memcmp(decoded->v.obj.entries[41].key, "nested", 6)); + size_t member_len; + const char *member = scr_dyn_obj_key_at(decoded, 0, &member_len); + assert(member_len == 5 && !memcmp(member, "item0", 5)); + member = scr_dyn_obj_key_at(decoded, 41, &member_len); + assert(member_len == 6 && !memcmp(member, "nested", 6)); assert(scr_dyn_obj_get(decoded, "nested", 6)->v.num == 42); ScrDyn *first = scr_dyn_obj_get(decoded, "item0", 5); for (int i = 0; i < 40; i++) { diff --git a/packages/runtime/src/scr_publish.c b/packages/runtime/src/scr_publish.c index 1ba2b22cd..1b29a63aa 100644 --- a/packages/runtime/src/scr_publish.c +++ b/packages/runtime/src/scr_publish.c @@ -481,9 +481,9 @@ void scr_publish(void *root, ScrPubFn fn) { void *obj = scr_pub_log_obj(&ctx.log[i]); if (ctx.log[i].obj & SCR_PUB_DYN) { ScrDyn *d = obj; - /* Other threads share the object; its shape belongs to this one - * (scr_js.h). */ - if (d->kind == SCR_DYN_OBJ) d->v.obj.shape = NULL; + /* Other threads share the object; layouts belong to this thread + * (scr_dyn.h), so it moves to dictionary mode. */ + if (d->kind == SCR_DYN_OBJ) scr_dyn_to_dictionary(d); scr_dyn_release(scr_dyn_freeze_data(d)); } #ifdef SCR_RC_AUDIT diff --git a/packages/runtime/test/object-core.test.ts b/packages/runtime/test/object-core.test.ts index 04f7cfb38..ce9e1e3e0 100644 --- a/packages/runtime/test/object-core.test.ts +++ b/packages/runtime/test/object-core.test.ts @@ -10,13 +10,14 @@ const src = join(import.meta.dirname, "..", "src"); * change how it stores them. */ const CORE = new Set(["scr_json.c", "scr_js_object.c", "scr_dyn.h"]); -test("only the object core reads ordinary objects' entry storage", () => { +test("only the object core reads ordinary objects' storage", () => { const offenders: string[] = []; for (const name of readdirSync(src)) { if (!/\.(c|h)$/.test(name) || name.endsWith(".test.c") || CORE.has(name)) continue; const lines = readFileSync(join(src, name), "utf8").split("\n"); lines.forEach((line, i) => { - if (/\bv\.obj\.(entries|len)\b/.test(line)) offenders.push(`${name}:${i + 1}: ${line.trim()}`); + if (/\bv\.obj\.(entries|slots|layout|len|cap|index)\b/.test(line)) + offenders.push(`${name}:${i + 1}: ${line.trim()}`); }); } expect(offenders).toEqual([]); diff --git a/packages/runtime/test/test_json.c b/packages/runtime/test/test_json.c index 865f1c757..6d492065d 100644 --- a/packages/runtime/test/test_json.c +++ b/packages/runtime/test/test_json.c @@ -571,10 +571,10 @@ static ScrDyn *define_from(ScrDyn *target, const char *key, ScrDyn *value, bool } static const ScrDynEntry *entry_of(const ScrDyn *obj, const char *key) { + const ScrDynEntry *entries = scr_dyn_obj_dict_entries(obj); for (size_t i = 0; i < obj->v.obj.len; i++) - if (obj->v.obj.entries[i].key_len == strlen(key) && - memcmp(obj->v.obj.entries[i].key, key, strlen(key)) == 0) - return &obj->v.obj.entries[i]; + if (entries[i].key_len == strlen(key) && memcmp(entries[i].key, key, strlen(key)) == 0) + return &entries[i]; return NULL; } @@ -618,7 +618,7 @@ static void test_copy_property_descriptors(void) { scr_dyn_obj_set(existing, "label", 5, scr_dyn_new_num(9)); scr_dyn_release(scr_dyn_copy_property_descriptors(existing, bag)); const ScrDynEntry *label = entry_of(existing, "label"); - check(!scr_exc_pending() && existing->v.obj.len == 5 && existing->v.obj.entries[0].key_len == 5 && + check(!scr_exc_pending() && existing->v.obj.len == 5 && scr_dyn_obj_dict_entries(existing)[0].key_len == 5 && label->value->v.num == 1, "copy redefines an existing property in place"); From 18755e05994faccdab40742e283f4def8781ca97 Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 11:41:21 -0500 Subject: [PATCH 11/52] Allocate object groups that die together in arenas --- docs/content/docs/how-it-works.mdx | 2 +- packages/compiler/src/backend/llvm/alloc.ts | 2 +- packages/compiler/src/backend/llvm/arenas.ts | 437 +++++ packages/compiler/src/backend/llvm/classes.ts | 57 + .../src/backend/llvm/emit-function.ts | 1 + .../src/backend/llvm/emit-statements.ts | 3 + packages/compiler/src/backend/llvm/emitter.ts | 248 +++ .../compiler/src/backend/llvm/expr-calls.ts | 2 +- .../compiler/src/backend/llvm/expr-context.ts | 3 + .../compiler/src/backend/llvm/expr-control.ts | 901 ++++----- .../src/backend/llvm/expr-primitives.ts | 13 +- .../src/backend/llvm/region-groups.test.ts | 205 ++ .../src/backend/llvm/region-groups.ts | 1693 +++++++++++++++++ .../compiler/src/backend/llvm/region-ir.ts | 271 +++ .../src/backend/llvm/region-sites.test.ts | 223 +++ .../compiler/src/backend/llvm/region-sites.ts | 349 ++++ packages/compiler/src/backend/llvm/shapes.ts | 59 +- .../src/backend/llvm/stack-objects.ts | 5 +- .../src/backend/native/runtime-inputs.ts | 1 + .../tests/corpus/arena-array-subclass.ts.json | 6 + .../tests/corpus/arena-arrays.ts.json | 6 + .../tests/corpus/arena-cap.ts.json | 6 + .../tests/corpus/arena-escapes.ts.json | 6 + .../tests/corpus/arena-mixed.ts.json | 6 + .../tests/corpus/arena-outside.ts.json | 6 + .../tests/corpus/arena-region-throws.ts.json | 6 + .../tests/corpus/arena-regions.ts.json | 6 + .../tests/corpus/arena-thrown-member.ts.json | 6 + .../tests/corpus/arena-throws.ts.json | 6 + .../tests/corpus/arena-trees.ts.json | 6 + .../tests/corpus/arena-workers.ts.json | 6 + .../runtime-pack-matrix.mjs | 1 + packages/runtime/src/scr_arena.c | 263 +++ packages/runtime/src/scr_arena.h | 113 ++ packages/runtime/src/scr_arena.test.c | 108 ++ packages/runtime/src/scr_arena.test.ts | 67 + packages/runtime/src/scr_array.c | 120 +- packages/runtime/src/scr_array.h | 6 + packages/runtime/src/scr_runtime.h | 1 + tests/corpus/arena-array-subclass.ts | 63 + tests/corpus/arena-arrays.ts | 49 + tests/corpus/arena-cap.ts | 30 + tests/corpus/arena-escapes.ts | 72 + tests/corpus/arena-mixed.ts | 80 + tests/corpus/arena-outside.ts | 49 + tests/corpus/arena-region-throws.ts | 33 + tests/corpus/arena-regions.ts | 44 + tests/corpus/arena-thrown-member.ts | 36 + tests/corpus/arena-throws.ts | 40 + tests/corpus/arena-trees.ts | 70 + tests/corpus/arena-workers.ts | 75 + .../corpus-costs/arena-array-subclass.ts.json | 1 + .../corpus-costs/arena-workers.ts.json | 1 + 53 files changed, 5395 insertions(+), 474 deletions(-) create mode 100644 packages/compiler/src/backend/llvm/arenas.ts create mode 100644 packages/compiler/src/backend/llvm/region-groups.test.ts create mode 100644 packages/compiler/src/backend/llvm/region-groups.ts create mode 100644 packages/compiler/src/backend/llvm/region-ir.ts create mode 100644 packages/compiler/src/backend/llvm/region-sites.test.ts create mode 100644 packages/compiler/src/backend/llvm/region-sites.ts create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-array-subclass.ts.json create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-arrays.ts.json create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-cap.ts.json create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-escapes.ts.json create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-mixed.ts.json create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-outside.ts.json create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-region-throws.ts.json create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-regions.ts.json create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-thrown-member.ts.json create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-throws.ts.json create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-trees.ts.json create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-workers.ts.json create mode 100644 packages/runtime/src/scr_arena.c create mode 100644 packages/runtime/src/scr_arena.h create mode 100644 packages/runtime/src/scr_arena.test.c create mode 100644 packages/runtime/src/scr_arena.test.ts create mode 100644 tests/corpus/arena-array-subclass.ts create mode 100644 tests/corpus/arena-arrays.ts create mode 100644 tests/corpus/arena-cap.ts create mode 100644 tests/corpus/arena-escapes.ts create mode 100644 tests/corpus/arena-mixed.ts create mode 100644 tests/corpus/arena-outside.ts create mode 100644 tests/corpus/arena-region-throws.ts create mode 100644 tests/corpus/arena-regions.ts create mode 100644 tests/corpus/arena-thrown-member.ts create mode 100644 tests/corpus/arena-throws.ts create mode 100644 tests/corpus/arena-trees.ts create mode 100644 tests/corpus/arena-workers.ts create mode 100644 tests/harness/corpus-costs/arena-array-subclass.ts.json create mode 100644 tests/harness/corpus-costs/arena-workers.ts.json diff --git a/docs/content/docs/how-it-works.mdx b/docs/content/docs/how-it-works.mdx index a6520b46e..28dbf78b6 100644 --- a/docs/content/docs/how-it-works.mdx +++ b/docs/content/docs/how-it-works.mdx @@ -134,7 +134,7 @@ Program objects define `main` and leave selected `scr_*` runtime functions undef ## Native runtime -- **Memory:** Values use reference counting. Acyclic values are freed when their last reference is released, and a cycle collector runs at defined collection points. Some cycles involving opaque native values can remain allocated. When the main thread's script ends, the process exits without freeing what the program still holds, and the operating system reclaims it; worker threads free their heaps when they exit. Builds with `--sanitize`, and processes run with `SCRIPTC_EXIT_FREE=1` (for external leak checkers), free everything at exit. +- **Memory:** Values use reference counting. Acyclic values are freed when their last reference is released, and a cycle collector runs at defined collection points. When the compiler proves that a group of objects is released together, such as a tree that a recursive function builds and its caller only reads, the group is allocated in an arena and released at once, without freeing each object or collecting its cycles. Some cycles involving opaque native values can remain allocated. When the main thread's script ends, the process exits without freeing what the program still holds, and the operating system reclaims it; worker threads free their heaps when they exit. Builds with `--sanitize`, and processes run with `SCRIPTC_EXIT_FREE=1` (for external leak checkers), free everything at exit. - **Concurrency:** An `async` function that suspends only at its own `await` expressions compiles to a stackless coroutine whose heap frame holds the values live across those awaits; other suspending `async` functions and async generators use stackful fibers. The native event loop schedules microtasks, timers, and I/O, using kqueue on macOS and epoll on Linux. - **Networking:** Supported `net`, `http`, `https`, `tls`, `dgram`, and `dns` APIs use native implementations. TLS uses vendored mbedTLS. - **Numbers:** Values use JavaScript's double-precision representation. Number-to-string formatting uses shortest-roundtrip output and is tested against Node.js. diff --git a/packages/compiler/src/backend/llvm/alloc.ts b/packages/compiler/src/backend/llvm/alloc.ts index 2efeb96ac..d227ac005 100644 --- a/packages/compiler/src/backend/llvm/alloc.ts +++ b/packages/compiler/src/backend/llvm/alloc.ts @@ -141,7 +141,7 @@ const CYC_GEN = 3; /** ScrCycHdr.buf, an i32 at this header offset. */ export const CYC_BUF = 4; /** The emitted descriptor `{ trace, free_fn, kind, id }` (ScrCycType). */ -const CYC_TYPE = "{ ptr, ptr, i32, i32 }"; +export const CYC_TYPE = "{ ptr, ptr, i32, i32 }"; function declareState(host: AllocHost): void { if (host.threadLocalAlloc !== true) host.declare(`@scr_sa = external global ${SA_TYPE}`); diff --git a/packages/compiler/src/backend/llvm/arenas.ts b/packages/compiler/src/backend/llvm/arenas.ts new file mode 100644 index 000000000..ee5ea8ab0 --- /dev/null +++ b/packages/compiler/src/backend/llvm/arenas.ts @@ -0,0 +1,437 @@ +/* Group arenas (runtime scr_arena.h): objects that region-groups.ts proves + * die together are bump-allocated in an arena and released at once. + * + * - A root (a fresh-result call or `new` whose value its caller keeps in + * one scope) opens an arena before it is evaluated and closes it after. + * The scope that holds the value drops the arena when it exits, on every + * path. A statement-frame entry closes the arena too, so an exception + * that skips the close never leaves it the allocation target. + * - A call region (a call of a leak-free function that returns no + * reference) opens an arena and drops it as soon as the call returns, + * or when its statement frame unwinds. + * + * region-sites.ts keeps only the roots and call regions whose groups grow, + * and picks the allocations that take the arena: those whose value the + * group keeps. Arena-aware functions are the ones reached from the kept + * roots and call regions. There, a kept `new`, record or array literal + * calls the arena-aware constructor (`.r`, `scr_arr_new*_r`), which + * allocates in the current arena when one is open and on the heap + * otherwise, and a call whose value the group does not keep runs with the + * arena suspended. Every other allocation site stays as it is. + * + * Arenas are off in programs that construct weak collections, in programs + * of more than ARENA_FUNCTION_LIMIT functions, in libraries, and with + * lifetime regions. */ +import type { IrClassDef, IrFunction, IrModule, IrType } from "../../ir/ir.js"; +import { + analyzeClosedGroups, + analyzeRegionGroups, + source, + type RegionGroups, +} from "./region-groups.js"; +import { CYC_BUF, CYC_HDR, CYC_TYPE } from "./alloc.js"; +import { ALLOCATIONS, children, forEachNode, isExpr, type Node } from "./region-ir.js"; +import { planRegionSites, reachableFrom, type RegionSites } from "./region-sites.js"; + +/** The count an arena object starts with (scr_arena.h SCR_ARENA_RC). */ +export const ARENA_RC = 2 ** 29; + +/** Group arenas are on unless SCRIPTC_ARENAS=0 (for comparisons). */ +export function arenasRequested(): boolean { + return process.env["SCRIPTC_ARENAS"] !== "0"; +} + +export interface ArenaPlan { + groups: RegionGroups; + sites: RegionSites; + /** Record shapes and classes that get an arena-aware constructor. */ + shapes: Set; + classes: Set; +} + +export interface ArenaEligibility { + shape(shapeId: string): boolean; + cls(def: IrClassDef): boolean; + /** The reference arm of a union stored as a nullable pointer, or null. */ + nullableArm(unionId: string): IrType | null; + /** Whether values of `t` can be on a reference cycle (the collector + * traces them). */ + traced(t: IrType): boolean; +} + +/** Whether `mod` can construct a WeakMap or WeakSet, directly or through + * a stored global constructor. A weak collection's entry for a key goes + * when the key is freed, and an arena object is never freed on its own, so + * such programs use no arenas. */ +function constructsWeakCollections(mod: IrModule): boolean { + let found = false; + const visit = (node: Node): void => { + if (found) return; + if (node.kind === "libCall") { + if (node.fn === "weakMap.new" || node.fn === "weakSet.new") found = true; + else if (node.fn === "dyn.globalConstructor") { + const name = node.args[0]; + if (name?.kind !== "strLit" || name.value === "WeakMap" || name.value === "WeakSet") + found = true; + } + } + const kids: Node[] = []; + children(node, kids); + for (const k of kids) visit(k); + }; + for (const fn of mod.functions) for (const s of fn.body) visit(s); + return found; +} + +/** Programs with more functions than this use no arenas: the analysis + * visits every function, and on programs this large it costs more compile + * time than their arenas save at run time. */ +const ARENA_FUNCTION_LIMIT = 4000; + +/** The arena plan of `mod`, or null when nothing would use an arena. */ +export function planArenas(mod: IrModule, eligible: ArenaEligibility): ArenaPlan | null { + if (mod.functions.length > ARENA_FUNCTION_LIMIT || constructsWeakCollections(mod)) return null; + const groups = analyzeRegionGroups(mod); + const sites = planRegionSites(mod, groups); + if (groups.roots.size === 0 && groups.calls.size === 0) return null; + const shapes = new Set(); + const classes = new Set(); + const defs = new Map((mod.classes ?? []).map((c) => [c.name, c])); + const note = (node: Node): void => { + const kept = sites.arenaSites.has(node) || groups.roots.has(node); + if ( + kept && + node.kind === "recordLit" && + node.type.kind === "record" && + eligible.shape(node.type.shapeId) + ) + shapes.add(node.type.shapeId); + if (kept && node.kind === "new") { + const def = defs.get(node.className); + if (def !== undefined && eligible.cls(def)) classes.add(node.className); + } + const kids: Node[] = []; + children(node, kids); + for (const k of kids) note(k); + }; + for (const fn of mod.functions) + if (groups.reachable.has(fn.name)) for (const s of fn.body) note(s); + for (const r of groups.roots) if (r.kind === "new") note(r); + // A group's heap objects die when its arena drops, unless heap objects + // hold each other in a cycle: the collector frees those later, and by + // then their references into the arena point at recycled memory. So a + // group keeps its arena only if every cycle-capable object it can + // allocate takes the arena. + const takesArena = (node: Node): boolean => + (sites.arenaSites.has(node) || groups.roots.has(node)) && + ((node.kind === "recordLit" && node.type.kind === "record" && shapes.has(node.type.shapeId)) || + (node.kind === "new" && classes.has(node.className)) || + node.kind === "arrayLit"); + const unsafe = cycleUnsafeFunctions(mod, groups.reachable, sites, takesArena, eligible.traced); + for (const r of [...groups.roots, ...groups.calls]) { + const runs = reachableFrom(mod, [r]); + if ([...runs].some((f) => unsafe.has(f)) || (r.kind === "new" && !takesArena(r))) { + groups.roots.delete(r); + groups.calls.delete(r); + groups.drops.delete(r); + } + } + if (groups.roots.size === 0 && groups.calls.size === 0) return null; + groups.reachable = reachableFrom(mod, [...groups.roots, ...groups.calls]); + const arenaType = (t: IrType): boolean => { + if (t.kind === "object") return classes.has(t.className); + if (t.kind === "record") return shapes.has(t.shapeId); + if (t.kind === "union") { + const arm = eligible.nullableArm(t.unionId); + return arm !== null && arenaType(arm); + } + // Arrays of arena objects: kept array literals of them take the arena. + return t.kind === "array" && t.elem.kind !== "union" && arenaType(t.elem); + }; + const keptSite = (e: Node): boolean => sites.arenaSites.has(e) || groups.roots.has(e); + for (const r of analyzeClosedGroups(mod, groups, arenaType, keptSite)) groups.closed.add(r); + return { groups, sites, shapes, classes }; +} + +/** The functions in `reachable` that can allocate a cycle-capable object + * on the heap while an arena is open: one that does not take the arena + * (`takesArena`), or a call that runs with the arena suspended and reaches + * any cycle-capable allocation. */ +function cycleUnsafeFunctions( + mod: IrModule, + reachable: ReadonlySet, + sites: RegionSites, + takesArena: (node: Node) => boolean, + traced: (t: IrType) => boolean, +): Set { + const fns = new Map(mod.functions.map((f) => [f.name, f])); + const allocatesTraced = (node: Node): boolean => + isExpr(node) && + traced(node.type) && + (node.kind === "closure" + ? node.captures.length > 0 + : (ALLOCATIONS.has(node.kind) || source(node) || node.kind === "libCall") && + node.kind !== "call" && + node.kind !== "callValue"); + // Functions with a cycle-capable allocation, and what they call. + const direct = new Set(); + const calls = new Map>(); + const heap = new Set(); + for (const name of reachable) { + const fn = fns.get(name); + if (fn === undefined) continue; + const out = new Set(); + calls.set(name, out); + forEachNode(fn.body, (node) => { + if (allocatesTraced(node)) { + direct.add(name); + if (!takesArena(node)) heap.add(name); + } + if (node.kind === "call") out.add(node.callee); + else if (node.kind === "new") out.add(`%${node.className}.constructor`); + else if (node.kind === "closure") out.add(node.fnName); + }); + } + const tracedSomewhere = new Set(direct); + for (let changed = true; changed;) { + changed = false; + for (const [name, out] of calls) + if (!tracedSomewhere.has(name) && [...out].some((c) => tracedSomewhere.has(c))) { + tracedSomewhere.add(name); + changed = true; + } + } + for (const name of reachable) { + const fn = fns.get(name); + if (fn === undefined || heap.has(name)) continue; + forEachNode(fn.body, (node) => { + if (!sites.heapCalls.has(node)) return; + const target = + node.kind === "call" + ? node.callee + : node.kind === "new" + ? `%${node.className}.constructor` + : null; + // A suspended call of an unknown function (a closure, a virtual call) + // may allocate anything. + if (target === null || tracedSomewhere.has(target)) heap.add(name); + }); + } + return heap; +} + +/** The arena-aware constructor of a record shape or class. */ +export function arenaNewSym(newSym: string): string { + return `${newSym}.r`; +} + +/** The function that releases an arena object's fields at the drop. */ +export function arenaDisposeSym(newSym: string): string { + return `${newSym}.dispose`; +} + +/** Whether `fn` allocates through arena-aware constructors. */ +export function arenaAware(plan: ArenaPlan | null, fn: IrFunction | undefined): boolean { + return plan !== null && fn !== undefined && plan.groups.reachable.has(fn.name); +} + +/** What arenaNewLines needs from its host (a subset of ShapeHost). */ +export interface ArenaHost { + declare(decl: string): void; + threadLocalAlloc?: boolean; + inlineAlloc?: boolean; + /** The target C ABI's `size_t`: also the pointer width. */ + readonly sizeType: "i32" | "i64"; +} + +/** Instructions that set `dest` to the address of the calling thread's + * open arena pointer (scr_arena.c's scr_arena_cur), or null on targets + * without the inline allocator, which call scr_arena_current, + * scr_arena_suspend and scr_arena_resume instead. In worker programs the + * pointer is thread-local. */ +export function arenaCurrentAddress(host: ArenaHost, dest: string): string[] | null { + if (host.inlineAlloc !== true) return null; + if (host.threadLocalAlloc !== true) { + host.declare(`@scr_arena_cur = external global ptr`); + return [`${dest} = getelementptr inbounds i8, ptr @scr_arena_cur, i64 0`]; + } + host.declare(`@scr_arena_cur = external thread_local global ptr`); + host.declare(`declare nonnull ptr @llvm.threadlocal.address.p0(ptr nonnull)`); + return [`${dest} = call ptr @llvm.threadlocal.address.p0(ptr @scr_arena_cur)`]; +} + +/** + * The arena-aware constructor `.r`: an object of `size` bytes (a + * `size_t` constant expression) in the current arena, behind the collector header + * `cyc` names (or none), which `init` sets up the way the heap constructor + * does (with the count ARENA_RC). When `dispose` names a function and the + * arena is not closed, the object goes on the arena's dispose list, which + * the drop runs. The heap constructor's object when no arena is open or + * the arena is full. The bump, the clear, the header and the dispose entry + * are inline (scr_arena.c's ScrArena ABI); scr_arena_obj takes a new chunk + * and scr_arena_disposal grows the list. + */ +export function arenaNewLines( + host: ArenaHost, + newSym: string, + size: string, + cyc: string | null, + dispose: string | null, + init: string[], + result: string, +): string[] { + const S = host.sizeType; + // ScrArena's fields and dispose entries are pointer-sized (scr_arena.c). + const word = S === "i32" ? 4 : 8; + host.declare(`declare ptr @scr_arena_obj(ptr, ${S}, ptr)`); + host.declare(`declare void @llvm.memset.p0.${S}(ptr, i8, ${S}, i1)`); + const cur = arenaCurrentAddress(host, "%cur"); + const current = + cur === null + ? (host.declare(`declare ptr @scr_arena_current()`), [` %a = call ptr @scr_arena_current()`]) + : [...cur.map((line) => ` ${line}`), ` %a = load ptr, ptr %cur`]; + const lines: string[] = [ + `define internal ptr @${arenaNewSym(newSym)}() nounwind alwaysinline { ; in the open arena`, + `entry:`, + ...current, + ` %on = icmp ne ptr %a, null`, + ` br i1 %on, label %arena, label %heap`, + `arena:`, + ]; + // A traced type's first object registers its descriptor on the slow path. + if (cyc !== null) + lines.push( + ` %tidp = getelementptr inbounds ${CYC_TYPE}, ptr ${cyc}, i32 0, i32 3`, + ` %tid = load atomic i32, ptr %tidp acquire, align 4`, + ` %creg = icmp ne i32 %tid, 0`, + ); + const hdr = cyc === null ? 0 : CYC_HDR; + lines.push( + ` %n0 = add ${S} ${size}, ${hdr + 7}`, + ` %n = and ${S} %n0, -8`, + ` %bp = load ptr, ptr %a`, + ` %limp = getelementptr inbounds i8, ptr %a, ${S} ${word}`, + ` %lim = load ptr, ptr %limp`, + ` %bpi = ptrtoint ptr %bp to ${S}`, + ` %limi = ptrtoint ptr %lim to ${S}`, + ` %room = sub ${S} %limi, %bpi`, + ` %fits0 = icmp ule ${S} %n, %room`, + ); + if (cyc !== null) lines.push(` %fits = and i1 %fits0, %creg`); + lines.push( + ` br i1 ${cyc === null ? "%fits0" : "%fits"}, label %carve, label %slow`, + `carve:`, + ` %end = getelementptr inbounds i8, ptr %bp, ${S} %n`, + ` store ptr %end, ptr %a`, + ` call void @llvm.memset.p0.${S}(ptr align 8 %bp, i8 0, ${S} %n, i1 false)`, + ); + if (cyc !== null) + lines.push( + ` %id = trunc i32 %tid to i16`, + ` store i16 %id, ptr %bp ; ScrCycHdr.id`, + ` %bufp = getelementptr inbounds i8, ptr %bp, i64 ${CYC_BUF}`, + ` store i32 -1, ptr %bufp ; ScrCycHdr.buf = SCR_CYC_ACYCLIC`, + ); + lines.push( + ` %of = getelementptr inbounds i8, ptr %bp, ${S} ${hdr}`, + ` br label %init`, + `slow:`, + ` %os = call ptr @scr_arena_obj(ptr %a, ${S} ${size}, ptr ${cyc ?? "null"})`, + ` %got = icmp ne ptr %os, null`, + ` br i1 %got, label %init, label %heap`, + `init:`, + ` %o = phi ptr [ %of, %carve ], [ %os, %slow ]`, + ...init, + ); + if (dispose !== null) { + host.declare(`declare void @scr_arena_disposal(ptr, ptr, ptr)`); + lines.push( + ` %closedp = getelementptr inbounds i8, ptr %a, ${S} ${4 * word} ; ScrArena.closed`, + ` %closed = load i32, ptr %closedp`, + ` %skip = icmp ne i32 %closed, 0`, + ` br i1 %skip, label %done, label %list`, + `list:`, + ` %dpp = getelementptr inbounds i8, ptr %a, ${S} ${2 * word} ; ScrArena.disposals`, + ` %dp = load ptr, ptr %dpp`, + ` %dep = getelementptr inbounds i8, ptr %a, ${S} ${3 * word} ; ScrArena.disposals_end`, + ` %de = load ptr, ptr %dep`, + ` %full = icmp eq ptr %dp, %de`, + ` br i1 %full, label %grow, label %push`, + `push:`, + ` store ptr %o, ptr %dp ; ScrArenaDisposal.obj`, + ` %dfp = getelementptr inbounds i8, ptr %dp, ${S} ${word}`, + ` store ptr @${dispose}, ptr %dfp ; ScrArenaDisposal.dispose`, + ` %dn = getelementptr inbounds i8, ptr %dp, ${S} ${2 * word}`, + ` store ptr %dn, ptr %dpp`, + ` br label %done`, + `grow:`, + ` call void @scr_arena_disposal(ptr %a, ptr %o, ptr @${dispose})`, + ` br label %done`, + `done:`, + ); + } + lines.push( + ` ret ptr ${result}`, + `heap:`, + ` %h = call ptr @${newSym}()`, + ` ret ptr %h`, + `}`, + ``, + ); + return lines; +} + +/** Dispose lines for field `i` of `%o` at `ptr` (a getelementptr into + * `%o`), released by `release`: a plain reference (no union encoding) is + * released only when it is a heap object, since an arena or immortal + * object's count (the rc word's low half) is at least 2^28 and its release + * would change nothing. */ +export function disposeFieldLines( + i: number, + gep: string, + plain: boolean, + release: string, + comment: string, +): string[] { + const load = [` %f${i} = ${gep}`, ` %v${i} = load ptr, ptr %f${i}`]; + if (!plain) return [...load, ` call void ${release}(ptr %v${i}) ; ${comment}`]; + return [ + ...load, + ` %nn${i} = icmp ne ptr %v${i}, null`, + ` br i1 %nn${i}, label %chk${i}, label %next${i}`, + `chk${i}:`, + ` %rc${i} = load i32, ptr %v${i}`, + ` %heap${i} = icmp ult i32 %rc${i}, ${2 ** 28}`, + ` br i1 %heap${i}, label %rel${i}, label %next${i}`, + `rel${i}:`, + ` call void ${release}(ptr %v${i}) ; ${comment}`, + ` br label %next${i}`, + `next${i}:`, + ]; +} + +/** Whether values of `t` are plain pointers to counted objects. */ +export function plainRefType(t: IrType): boolean { + return ( + t.kind === "object" || + t.kind === "record" || + t.kind === "array" || + t.kind === "map" || + t.kind === "set" || + t.kind === "func" || + t.kind === "string" + ); +} + +/** The dispose function: releases each reference field (`fields`, lines + * that load `%v` and release it) of the object `%o`. */ +export function arenaDisposeLines(newSym: string, fields: string[]): string[] { + return [ + `define internal void @${arenaDisposeSym(newSym)}(ptr %o) nounwind { ; arena drop`, + `entry:`, + ...fields, + ` ret void`, + `}`, + ``, + ]; +} diff --git a/packages/compiler/src/backend/llvm/classes.ts b/packages/compiler/src/backend/llvm/classes.ts index 5941f5d5c..30265c66c 100644 --- a/packages/compiler/src/backend/llvm/classes.ts +++ b/packages/compiler/src/backend/llvm/classes.ts @@ -1,3 +1,11 @@ +import { + ARENA_RC, + arenaDisposeLines, + arenaDisposeSym, + arenaNewLines, + disposeFieldLines, + plainRefType, +} from "./arenas.js"; import { InternalCompilerError } from "../../errors.js"; /** Class layouts, reference counting, hierarchy intervals, virtual tables and * constructor values. Opaque LLVM pointers allow virtual slots to store method @@ -1415,6 +1423,8 @@ export function emitClassShapes( storedHeaderBytes(meta), ), ); + // The header and field set-up, shared with the arena-aware constructor. + const initStart = nw.length; if (meta.compact && !meta.hierarchy) nw.push(` store i32 ${compactHeaderWord(meta)}, ptr %o ; no count (compactHeaderWord)`); else if (meta.compact) { @@ -1483,6 +1493,7 @@ export function emitClassShapes( // Young instances: program-owned traced classes. Classes rooted at a // runtime base (errors, emitters, events, streams) carry runtime state // and stay with trial deletion, like every runtime family. + const init = nw.slice(initStart); if ( traced && !lifetime && @@ -1492,6 +1503,52 @@ export function emitClassShapes( nw.push(...youngEntryLines(host)); nw.push(` ret ptr ${meta.hierarchy ? "%o.vt" : "%o"}`, `}`, ``); defs.push(...nw); + if ( + host.arenaClasses?.has(cls.name) === true && + cls.arrayElem === undefined && + !lifetime && + regions === null && + !meta.compact && + runtimePrefix === null && + !isStreamRooted && + !meta.threadSlot + ) { + // The arena count in place of 1, in the rc word or its low half. + const counted = meta.idInRc + ? ` store i64 ${classIdRcWord(meta, false)}, ptr %o.vt` + : ` store ${host.sizeType} 1, ptr %o`; + const arenaCount = meta.idInRc + ? ` store i64 ${(BigInt(meta.pre + 1) * 2n ** 32n + BigInt(ARENA_RC)).toString()}, ptr %o.vt` + : ` store ${host.sizeType} ${ARENA_RC}, ptr %o`; + const newSym = mangleClassNew(cls.name); + const dispose = refFields.length > 0 ? arenaDisposeSym(newSym) : null; + defs.push( + ...arenaNewLines( + host, + newSym, + sizeOf, + traced ? cycType : null, + dispose, + init.map((line) => (line.startsWith(counted) ? arenaCount : line)), + meta.hierarchy ? "%o.vt" : "%o", + ), + ); + if (dispose !== null) + defs.push( + ...arenaDisposeLines( + newSym, + refFields.flatMap((f, t) => + disposeFieldLines( + t, + `getelementptr inbounds %${struct}, ptr %o, i64 0, i32 ${f.index}`, + plainRefType(f.type), + releaseSym(host, f.type), + llvmCommentText(f.name), + ), + ), + ), + ); + } if (traced) { // trace: visit exactly the cycle-capable fields; gcFree: release diff --git a/packages/compiler/src/backend/llvm/emit-function.ts b/packages/compiler/src/backend/llvm/emit-function.ts index 24e1d06a3..60ba14a1c 100644 --- a/packages/compiler/src/backend/llvm/emit-function.ts +++ b/packages/compiler/src/backend/llvm/emit-function.ts @@ -525,6 +525,7 @@ export function emitFunction(emitter: LlEmitter, fn: IrFunction): string { } } emitter.scopes.push(fnScope); + emitter.beginArenaFunction(fn); // Stackful native fibers and native coroutine frames retain these frames // while suspended. The active exception context owns the chain, so // concurrent fibers isolate it. diff --git a/packages/compiler/src/backend/llvm/emit-statements.ts b/packages/compiler/src/backend/llvm/emit-statements.ts index 45d341853..723f7f08c 100644 --- a/packages/compiler/src/backend/llvm/emit-statements.ts +++ b/packages/compiler/src/backend/llvm/emit-statements.ts @@ -105,8 +105,11 @@ const MAX_CALLBACK_VERSION_COST = 400; export function emitStmtBody(emitter: LlEmitter, s: IrStmt): void { const B = emitter.B; emitter.frames.push([]); + if (emitter.arenas !== null) + emitter.statementFrames.add(emitter.frames[emitter.frames.length - 1]!); switch (s.kind) { case "varDecl": { + emitter.ownArenasOf(s.localId); if (s.init && emitter.int32Locals.has(s.localId)) { emitter.storeInt32Local(s.localId, emitter.emitExpr(s.init), s.init); break; diff --git a/packages/compiler/src/backend/llvm/emitter.ts b/packages/compiler/src/backend/llvm/emitter.ts index 8118fe7d7..c8409cd67 100644 --- a/packages/compiler/src/backend/llvm/emitter.ts +++ b/packages/compiler/src/backend/llvm/emitter.ts @@ -343,6 +343,15 @@ import { type LlClassMeta, } from "./classes.js"; import { LifetimeRegions, REGION_TYPES } from "./regions.js"; +import { + arenaAware, + arenaCurrentAddress, + arenaNewSym, + arenasRequested, + planArenas, + type ArenaPlan, +} from "./arenas.js"; +import { children, type Node } from "./region-ir.js"; import { LlDyn, recordDynKeepsIdentity, type DynHost } from "./dyn.js"; import { VirtualBorrows } from "./virtual-borrows.js"; import { LlvmUnsupportedError } from "./unsupported.js"; @@ -375,6 +384,7 @@ import { retainSym, traceArg, vAdapters, + traceAdapter, } from "./shapes.js"; import type { ExprOf, LibCallExpr, LlStreamTypedRefAdapter, LlValue } from "./expr-context.js"; import { INLINE_LITERAL_BYTES } from "./string-literal-equality.js"; @@ -465,6 +475,9 @@ export interface LlScopeEntry { slot: string; type: IrType; boxed?: boolean; + /** A group arena list slot (arenas.ts), dropped after the scope's other + * entries. */ + arena?: boolean; /** A lazily created box: the slot stays null on paths that build no * environment, which skip the release call. */ lazy?: boolean; @@ -2407,6 +2420,40 @@ export class LlEmitter { mod.lib === undefined && options.lowRegion === true && [...this.classMeta.values()].some((m) => m.compact); + // Group arenas: off with lifetime regions, which own their classes' + // allocation, and in libraries, whose exports any host code calls. + if (arenasRequested() && mod.lifetimeRegions !== true && mod.lib === undefined) { + this.arenas = planArenas(mod, { + shape: (id) => { + const shape = this.recordsById.get(id); + return ( + shape !== undefined && + shape.freezable !== true && + shape.indexValue === undefined && + this.publishedTypes?.recordGuarded(id) !== true + ); + }, + cls: (def) => { + const meta = this.classMeta.get(def.name); + return ( + meta !== undefined && + !meta.compact && + !meta.threadSlot && + // An Array subclass's instance is an array (the runtime's header). + def.arrayElem === undefined && + meta.root.def.arrayElem === undefined && + !this.programLifetime.has(def.name) && + this.publishedTypes?.classGuarded(def.name) !== true + ); + }, + nullableArm: (unionId) => this.nullableUnions.single(unionId)?.arm ?? null, + traced: (t) => traceAdapter(this.shapeHost, t) !== null, + }); + if (this.arenas !== null) { + this.shapeHost.arenaShapes = this.arenas.shapes; + this.shapeHost.arenaClasses = this.arenas.classes; + } + } for (const [name, rec] of RUNTIME_ERROR_CLASSES) { const meta = this.classMeta.get(name); if (!meta) break; // hand-written IR without the builtin defs: no stamps @@ -3522,6 +3569,7 @@ export class LlEmitter { /** Releases a statement frame's temps and owned slots. */ releaseTemps(frame: LlValue[]): void { for (const v of frame) { + if (v.arena !== undefined) continue; if (v.slot) { const t = this.B.tmp(); this.B.line(`${t} = load ptr, ptr ${v.name}`); @@ -3534,10 +3582,19 @@ export class LlEmitter { this.releaseFrame(v.name, v.type); } } + // Arena lists last: the frame's temps may be arena objects. + for (const v of frame) + if (v.arena === "drop") this.B.line(`call void @scr_arena_drop(ptr ${v.name})`); + else if (v.arena === "close") { + const head = this.B.tmp(); + this.B.line(`${head} = load ptr, ptr ${v.name}`); + this.B.line(`call void @scr_arena_close(ptr ${head})`); + } } releaseScope(scope: LlScopeEntry[]): void { for (const e of scope) { + if (e.arena === true) continue; const t = this.B.tmp(); this.B.line(`${t} = load ptr, ptr ${e.slot}`); if (e.boxed && e.lazy) { @@ -3559,6 +3616,9 @@ export class LlEmitter { this.releaseFrame(t, e.type); // runtime releases are NULL-tolerant } } + // Arena lists last: the scope's bindings may hold arena objects. + for (const e of scope) + if (e.arena === true) this.B.line(`call void @scr_arena_drop(ptr ${e.slot})`); } /** THE release-on-jump path (break/continue/return): pending statement @@ -6314,6 +6374,7 @@ export class LlEmitter { type: local.type, slot: true, ...(local.boxed ? { boxed: true } : {}), + ...(local.arena === true ? { arena: "drop" as const } : {}), }); } return result; @@ -7408,9 +7469,196 @@ export class LlEmitter { } emitExpr(e: IrExpr): LlValue { + return this.arenas === null ? emitExpr(this, e) : this.emitArenaExpr(e, this.arenas); + } + + /** emitExpr when group arenas are planned. Kept out of emitExpr, whose + * frame each level of a nested expression holds while it is emitted. */ + private emitArenaExpr(e: IrExpr, arenas: ArenaPlan): LlValue { + if (arenas.groups.calls.has(e)) { + // A call region: everything the call allocates dies when it returns. + // The statement drops the arena after its temps, which an + // arena-aware caller can have allocated in it while evaluating the + // arguments; any other caller drops it as soon as the call returns. + const slot = this.arenaSlot(e); + this.statementFrame().push({ name: slot, type: e.type, slot: true, arena: "drop" }); + this.B.line(`call ptr @scr_arena_open(ptr ${slot}, i32 ${this.arenaClosed(e)})`); + const value = emitExpr(this, e); + if (!arenaAware(arenas, this.fnByName.get(this.currentFunctionName))) + this.B.line(`call void @scr_arena_drop(ptr ${slot})`); + return value; + } + if (arenas.sites.heapCalls.has(e) && this.arenaSite(null)) { + // A call whose value the group does not keep: everything it allocates + // takes the heap. + const saved = this.suspendArena(); + const value = emitExpr(this, e); + this.resumeArena(saved); + return value; + } + if (this.opensArena(e)) { + // A root: its group lives until the scope holding its value exits + // (the statement frame for a value used in place). + const slot = this.arenaSlot(e); + const local = arenas.groups.drops.get(e) ?? null; + this.statementFrame().push({ + name: slot, + type: e.type, + slot: true, + arena: local === null ? "drop" : "close", + }); + const arena = this.B.tmp(); + this.B.line(`${arena} = call ptr @scr_arena_open(ptr ${slot}, i32 ${this.arenaClosed(e)})`); + const value = emitExpr(this, e); + this.B.line(`call void @scr_arena_close(ptr ${arena})`); + return value; + } return emitExpr(this, e); } + /** Group arenas (arenas.ts): the plan, the list slot of each root and + * call region, and which locals' scopes drop which roots' arenas. */ + arenas: ArenaPlan | null = null; + private arenaSlots = new Map(); + /** The frames emitStmtBody opens for whole statements (arenas only). */ + readonly statementFrames = new Set(); + + /** The frame of the statement being emitted: a nested frame (call + * arguments, branches) ends before the values built in it do. */ + statementFrame(): LlValue[] { + for (let i = this.frames.length - 1; i >= 0; i--) + if (this.statementFrames.has(this.frames[i]!)) return this.frames[i]!; + return this.currentFrame(); + } + + /** The arena list slot of root or call region `e`: allocated, cleared and + * (for a root dropped with a local) owned by that local's scope when the + * function starts or the local is declared. */ + arenaSlot(e: Node): string { + let slot = this.arenaSlots.get(e); + if (slot === undefined) { + slot = this.B.tmp(); + this.B.entryAllocas.push(`${slot} = alloca ptr`, `store ptr null, ptr ${slot}`); + this.arenaSlots.set(e, slot); + this.declare(`declare ptr @scr_arena_open(ptr, i32)`); + this.declare(`declare void @scr_arena_close(ptr)`); + this.declare(`declare void @scr_arena_drop(ptr)`); + } + return slot; + } + + /** Whether emitExpr opens an arena for `e`: a root call or `new` of a + * counted value. */ + opensArena(e: Node): e is Extract { + return ( + this.arenas !== null && + this.arenas.groups.roots.has(e) && + (e.kind === "call" || e.kind === "new") && + isRefCounted(e.type) + ); + } + + /** 1 when the group of root or call region `e` is closed: its objects + * hold only each other and immortal values. */ + arenaClosed(e: Node): number { + return this.arenas?.groups.closed.has(e) === true ? 1 : 0; + } + + /** Registers on the innermost scope the arena lists of the roots whose + * arenas `localId`'s scope drops. */ + ownArenasOf(localId: string): void { + const roots = this.arenaDropsByLocal.get(localId); + if (roots === undefined) return; + const scope = this.scopes[this.scopes.length - 1]!; + for (const { root, type } of roots) + scope.push({ slot: this.arenaSlot(root), type, arena: true }); + } + + /** The roots of the function being emitted, by the local that drops + * them; set when a function's emission starts. */ + arenaDropsByLocal = new Map(); + + /** Starts a function's arena bookkeeping: its roots by dropping local, + * with the lists of locals the body never declares (parameters, loop + * and catch bindings) owned by the function's own scope. */ + beginArenaFunction(fn: IrFunction): void { + this.arenaSlots.clear(); + this.statementFrames.clear(); + this.arenaDropsByLocal = new Map(); + const arenas = this.arenas; + if (arenas === null) return; + const declared = new Set(); + const visit = (node: Node): void => { + if (node.kind === "varDecl") declared.add(node.localId); + if (this.opensArena(node)) { + const local = arenas.groups.drops.get(node); + if (local !== undefined && local !== null) { + const list = this.arenaDropsByLocal.get(local) ?? []; + list.push({ root: node, type: node.type }); + this.arenaDropsByLocal.set(local, list); + } + } + const kids: Node[] = []; + children(node, kids); + for (const kid of kids) visit(kid); + }; + for (const s of fn.body) visit(s); + for (const local of [...this.arenaDropsByLocal.keys()]) + if (!declared.has(local)) this.ownArenasOf(local); + } + + /** Whether allocation site `e` (null: any) in the function being + * emitted takes the open arena: the function is arena-aware and the group + * keeps the site's value (region-sites.ts). */ + arenaSite(e: IrExpr | null): boolean { + const arenas = this.arenas; + if (!arenaAware(arenas, this.fnByName.get(this.currentFunctionName))) return false; + return e === null || arenas!.sites.arenaSites.has(e); + } + + /** Stops any arena being the allocation target; returns what restores it. */ + suspendArena(): string { + const saved = this.B.tmp(); + const cur = this.B.tmp(); + const lines = arenaCurrentAddress(this.shapeHost, cur); + if (lines === null) { + this.declare(`declare ptr @scr_arena_suspend()`); + this.B.line(`${saved} = call ptr @scr_arena_suspend()`); + } else { + for (const line of lines) this.B.line(line); + this.B.line(`${saved} = load ptr, ptr ${cur}`); + this.B.line(`store ptr null, ptr ${cur}`); + } + return saved; + } + + /** Makes the arena suspendArena stopped (`saved`) the target again. */ + resumeArena(saved: string): void { + const cur = this.B.tmp(); + const lines = arenaCurrentAddress(this.shapeHost, cur); + if (lines === null) { + this.declare(`declare void @scr_arena_resume(ptr)`); + this.B.line(`call void @scr_arena_resume(ptr ${saved})`); + } else { + for (const line of lines) this.B.line(line); + this.B.line(`store ptr ${saved}, ptr ${cur}`); + } + } + + /** The arena-aware constructor of `newSym` for an allocation of a + * record shape or class in the function being emitted, or `newSym`. */ + allocSym(newSym: string, e: IrExpr): string { + const arenas = this.arenas; + if (arenas === null) return newSym; + const planned = + e.type.kind === "record" + ? arenas.shapes.has(e.type.shapeId) + : e.kind === "new" && arenas.classes.has(e.className); + if (!planned) return newSym; + const aware = this.arenaSite(e) || arenas.groups.roots.has(e); + return aware ? arenaNewSym(newSym) : newSym; + } + /** The helper classification of this module's inline-cache sites. */ get jsIcSites(): JsIcSites { return (this.jsIcSitesMemo ??= new JsIcSites(this.mod)); diff --git a/packages/compiler/src/backend/llvm/expr-calls.ts b/packages/compiler/src/backend/llvm/expr-calls.ts index 7faca5535..cc0f090b7 100644 --- a/packages/compiler/src/backend/llvm/expr-calls.ts +++ b/packages/compiler/src/backend/llvm/expr-calls.ts @@ -1104,7 +1104,7 @@ export function emitCallExpr( `llvm emitter bug: new ${e.className} without a constructor`, ); const o = B.tmp(); - B.line(`${o} = call ptr @${mangleClassNew(e.className)}()`); + B.line(`${o} = call ptr @${host.allocSym(mangleClassNew(e.className), e)}()`); const out = host.own({ name: o, type: e.type }); emitConstruction(host, e, o, ctor); return out; diff --git a/packages/compiler/src/backend/llvm/expr-context.ts b/packages/compiler/src/backend/llvm/expr-context.ts index a5b7f61dd..0df23f10a 100644 --- a/packages/compiler/src/backend/llvm/expr-context.ts +++ b/packages/compiler/src/backend/llvm/expr-context.ts @@ -33,6 +33,9 @@ export interface LlValue { slot?: boolean; /** A sequence local held in a capture box; release the box itself. */ boxed?: boolean; + /** A group arena list slot (arenas.ts): the frame closes the newest + * arena on it, or drops the whole list, after its other temps. */ + arena?: "close" | "drop"; } export interface WideInteger { diff --git a/packages/compiler/src/backend/llvm/expr-control.ts b/packages/compiler/src/backend/llvm/expr-control.ts index 6e0fd4acb..28281478a 100644 --- a/packages/compiler/src/backend/llvm/expr-control.ts +++ b/packages/compiler/src/backend/llvm/expr-control.ts @@ -11,6 +11,10 @@ import { emitRecordKeyGetOr } from "./expr-records.js"; import { NULLABLE_NULL, SHAPE_WORD_INDEX, shapeWordHeader } from "./nullable-unions.js"; import { emitUnionTag } from "./union-repr.js"; +/** Each kind emits in a function of its own: emitting a nested chain of + * these expressions holds one emitControlExpr frame per level, and in an + * unoptimized build of the compiler a frame holds every local of the + * function. */ export function emitControlExpr( host: LlvmEmitterContext, e: ExprOf< @@ -25,446 +29,25 @@ export function emitControlExpr( | "nullish" >, ): LlValue { - const B = host.B; switch (e.kind) { - case "dynDestrCheck": { - // RequireObjectCoercible with V8's destructuring TypeError. dyn - // values check in the runtime helper and pass through unchanged. - const v = host.emitExpr(e.value); - const first = e.firstProp !== undefined ? host.cstr(e.firstProp) : "null"; - - const helper = host.dyn.dynDestrCheckHelper(); - B.line(`call void @${helper}(ptr ${v.name}, ptr ${host.cstr(e.spelling)}, ptr ${first})`); - host.emitPendingCheck(); - return v; - } - case "dynIterN": { - // GetIterator + first-N steps as a fresh array (V8's exact - // not-iterable TypeError on non-iterables) through the native dyn helper. - const v = emitBorrowedInput(host, e.value); - - const helper = host.dyn.dynIterNHelper(); - const t = B.tmp(); - B.line( - `${t} = call ptr @${helper}(ptr ${v.name}, ${host.sizeType} ${e.count}, ptr ${e.notIterableMessage ? host.cstr(e.notIterableMessage) : "null"})`, - ); - const out = host.own({ name: t, type: e.type }); - host.emitPendingCheck(); - return out; - } + case "dynDestrCheck": + return emitDynDestrCheck(host, e); + case "dynIterN": + return emitDynIterN(host, e); case "toBool": return { name: host.truthy(host.emitUnionProjection(e.operand)), type: e.type }; - case "logical": { - const tagSet = e.op === "||" ? unionTagSet(e) : null; - if (tagSet) return { name: emitUnionTagSet(host, tagSet), type: e.type }; - // JS value semantics: the result is the deciding operand itself. - // Left evaluates once, ownership moves into the result slot; when - // the branch takes the right operand the stale left releases first - // and the right runs in its own frame. - const ty = host.llType(e.type); - const l = host.emitExpr(e.left); - host.toFrame(l); - const slot = B.slot(); - B.entryAllocas.push(`${slot} = alloca ${ty}`); - B.line(`store ${ty} ${l.name}, ptr ${slot}`); - const integerSlot = e.type.kind === "f64" && l.uint32 !== undefined ? B.slot() : undefined; - if (integerSlot !== undefined) { - B.entryAllocas.push(`${integerSlot} = alloca i32`); - B.line(`store i32 ${l.uint32!}, ptr ${integerSlot}`); - } - const truthy = host.truthy(l); - const rightLabel = B.newLabel("log.r"); - const joinLabel = B.newLabel("log.j"); - if (e.op === "&&") B.condBr(truthy, rightLabel, joinLabel); - else B.condBr(truthy, joinLabel, rightLabel); - B.startBlock(rightLabel); - if (isRefCounted(e.type)) host.releaseFrame(l.name, e.type); - const rightInteger = host.emitBranchInto(slot, e.right, integerSlot); - B.br(joinLabel); - B.startBlock(joinLabel); - const t = B.tmp(); - B.line(`${t} = load ${ty}, ptr ${slot}`); - if (integerSlot !== undefined && rightInteger) { - const uint32 = B.tmp(); - B.line(`${uint32} = load i32, ptr ${integerSlot}`); - return { name: t, type: e.type, uint32 }; - } - return host.own({ name: t, type: e.type }); - } - case "ternary": { - // Exactly one arm evaluates; each arm runs in its own frame and - // moves the chosen value into the result slot. - const ty = host.llType(e.type); - const c = host.emitExpr(e.cond); - const slot = B.slot(); - B.entryAllocas.push(`${slot} = alloca ${ty}`); - const integerSlot = e.type.kind === "f64" ? B.slot() : undefined; - if (integerSlot !== undefined) B.entryAllocas.push(`${integerSlot} = alloca i32`); - const lt = B.newLabel("tern.t"); - const lf = B.newLabel("tern.f"); - const lj = B.newLabel("tern.j"); - B.condBr(c.name, lt, lf); - B.startBlock(lt); - const thenInteger = host.emitBranchInto(slot, e.then, integerSlot); - B.br(lj); - B.startBlock(lf); - const elseInteger = host.emitBranchInto(slot, e.else_, integerSlot); - B.br(lj); - B.startBlock(lj); - const t = B.tmp(); - B.line(`${t} = load ${ty}, ptr ${slot}`); - // A view is available only when every incoming branch wrote it. - // Incomplete views are unused and disappear during promotion. - if (integerSlot !== undefined && thenInteger && elseInteger) { - const uint32 = B.tmp(); - B.line(`${uint32} = load i32, ptr ${integerSlot}`); - return { name: t, type: e.type, uint32 }; - } - // A choice between interned literals is an interned literal: like a - // strLit operand, nothing owns it (retain and release are no-ops). - if (literalChoice(e)) return host.markImmortal({ name: t, type: e.type }); - return host.own({ name: t, type: e.type }); - } - case "optChain": { - // `a?.b` / `f?.()`: the nullish test inverted. The receiver - // evaluates once into an ordinary frame temp (borrowed); on a unit - // tag the result is the interned undefined arm and the body never - // runs; otherwise the narrowed payload fills the bind slot (+1, - // frame-owned through a SLOT entry — NULL on the unit path, where - // the frame's release is a no-op) and the body reads it through - // chainRecv. - if (e.receiver.type.kind === "dyn") { - // A dyn (dyn) receiver — the `rawName?.match(re)` step: the - // nullish test reads the node's kind tag; the unit path is the - // undefined dyn singleton (dyn results) or nothing (void - // bodies), the body runs over the bound receiver otherwise. - const r = host.emitExpr(e.receiver); - const kd = host.dynKind(r.name); - const isU = B.tmp(); - const isN = B.tmp(); - const isUnit = B.tmp(); - B.line(`${isU} = icmp eq i32 ${kd}, ${DYN_KIND.UNDEF}`); - B.line(`${isN} = icmp eq i32 ${kd}, ${DYN_KIND.NULL}`); - B.line(`${isUnit} = or i1 ${isU}, ${isN}`); - const bind = B.slot(); - B.entryAllocas.push(`${bind} = alloca ptr`); - B.line(`store ptr null, ptr ${bind}`); - host.ownSlot(bind, e.receiver.type); - host.declare(`declare ptr @scr_dyn_retain_v(ptr)`); - if (e.type.kind === "void") { - const lb = B.newLabel("ocd.b"); - const lj = B.newLabel("ocd.j"); - B.condBr(isUnit, lj, lb); - B.startBlock(lb); - const rr = B.tmp(); - B.line(`${rr} = call ptr @scr_dyn_retain_v(ptr ${r.name})`); - B.line(`store ptr ${rr}, ptr ${bind}`); - host.chainSlots.set(e.id, { name: bind, type: e.receiver.type, slot: true }); - host.frames.push([]); - host.emitExpr(e.body); - host.releaseTemps(host.frames.pop()!); - host.chainSlots.delete(e.id); - B.br(lj); - B.startBlock(lj); - return { name: "", type: e.type }; - } - if (e.type.kind !== "dyn") - throw new InternalCompilerError("llvm emitter bug: dyn optChain result kind"); - const slot = B.slot(); - B.entryAllocas.push(`${slot} = alloca ptr`); - const lu = B.newLabel("ocd.u"); - const lb = B.newLabel("ocd.b"); - const lj = B.newLabel("ocd.j"); - B.condBr(isUnit, lu, lb); - B.startBlock(lu); - host.declare(`declare ptr @scr_dyn_undefined()`); - const un = B.tmp(); - const ur = B.tmp(); - B.line(`${un} = call ptr @scr_dyn_undefined()`); - B.line(`${ur} = call ptr @scr_dyn_retain_v(ptr ${un})`); - B.line(`store ptr ${ur}, ptr ${slot}`); - B.br(lj); - B.startBlock(lb); - const rr = B.tmp(); - B.line(`${rr} = call ptr @scr_dyn_retain_v(ptr ${r.name})`); - B.line(`store ptr ${rr}, ptr ${bind}`); - host.chainSlots.set(e.id, { name: bind, type: e.receiver.type, slot: true }); - host.emitBranchInto(slot, e.body); - host.chainSlots.delete(e.id); - B.br(lj); - B.startBlock(lj); - const t = B.tmp(); - B.line(`${t} = load ptr, ptr ${slot}`); - return host.own({ name: t, type: e.type }); - } - - const { isUnit, bindPresent } = emitOptionalChainReceiver(host, e); - if (e.type.kind === "void") { - // Statement form (cb?.()): no result value at all. - const lb = B.newLabel("oc.b"); - const lj = B.newLabel("oc.j"); - B.condBr(isUnit, lj, lb); - B.startBlock(lb); - bindPresent(); - host.frames.push([]); - host.emitExpr(e.body); - host.releaseTemps(host.frames.pop()!); - host.chainSlots.delete(e.id); - B.br(lj); - B.startBlock(lj); - return { name: "", type: e.type }; - } - if (e.type.kind === "dyn") { - // A dyn-typed chain (`pricing?.[key]` over an unknown-valued - // index signature): the unit path is the undefined dyn value — - // dyn represents undefined directly, no union wrapper exists. - const slotD = B.slot(); - B.entryAllocas.push(`${slotD} = alloca ptr`); - const lu = B.newLabel("ocu.u"); - const lb = B.newLabel("ocu.b"); - const lj = B.newLabel("ocu.j"); - B.condBr(isUnit, lu, lb); - B.startBlock(lu); - host.declare(`declare ptr @scr_dyn_undefined()`); - host.declare(`declare ptr @scr_dyn_retain_v(ptr)`); - const un = B.tmp(); - const ur = B.tmp(); - B.line(`${un} = call ptr @scr_dyn_undefined()`); - B.line(`${ur} = call ptr @scr_dyn_retain_v(ptr ${un})`); - B.line(`store ptr ${ur}, ptr ${slotD}`); - B.br(lj); - B.startBlock(lb); - bindPresent(); - host.emitBranchInto(slotD, e.body); - host.chainSlots.delete(e.id); - B.br(lj); - B.startBlock(lj); - const t = B.tmp(); - B.line(`${t} = load ptr, ptr ${slotD}`); - return host.own({ name: t, type: e.type }); - } - if (e.type.kind !== "union") - throw new LlvmUnsupportedError(`optChainResult:${e.type.kind}`, e.loc); - const undefTag = undefinedArmTag(e.type, host.unionsById); - if (undefTag < 0) - throw new InternalCompilerError( - "llvm emitter bug: optChain result lacks its undefined arm", - ); - const ty = host.llType(e.type); - const slot = B.slot(); - B.entryAllocas.push(`${slot} = alloca ${ty}`); - const lu = B.newLabel("oc.u"); - const lb = B.newLabel("oc.b"); - const lj = B.newLabel("oc.j"); - B.condBr(isUnit, lu, lb); - B.startBlock(lu); - B.line(`store ptr ${host.unitInstanceRef(e.type.unionId, undefTag)}, ptr ${slot}`); - B.br(lj); - B.startBlock(lb); - bindPresent(); - host.emitBranchInto(slot, e.body); - host.chainSlots.delete(e.id); - B.br(lj); - B.startBlock(lj); - const t = B.tmp(); - B.line(`${t} = load ${ty}, ptr ${slot}`); - return host.own({ name: t, type: e.type }); - } - case "chainRecv": { - const bound = host.chainSlots.get(e.id); - if (!bound) - throw new InternalCompilerError(`llvm emitter bug: chainRecv "${e.id}" outside its chain`); - const v = B.tmp(); - B.line(`${v} = load ${host.llType(bound.type)}, ptr ${bound.name}`); - if (!isRefCounted(e.type)) return { name: v, type: e.type }; - return host.own({ name: host.retainFrame(v, e.type), type: e.type }); - } - case "orDefault": { - // `u || d` narrowed to the single non-unit arm: nullish's dance - // with the union TRUTHY switch as the test — truthy extracts the - // arm (+1 for ref kinds), falsy releases and runs the default. - if (e.left.type.kind !== "union") - throw new InternalCompilerError("llvm emitter bug: orDefault left is not a union"); - if ( - e.retag === undefined && - !host.nullableUnions.has(e.left.type.unionId) && - host.isStackUnionSource(e.left) - ) { - // A stack box (`arr[i] || d`): test truthiness and extract the - // payload (+1). The box is never retained or released. - const l = host.emitUnionProjection(e.left); - const ty = host.llType(e.type); - const slot = B.slot(); - B.entryAllocas.push(`${slot} = alloca ${ty}`); - const lt = B.newLabel("ord.t"), - lf = B.newLabel("ord.f"), - lj = B.newLabel("ord.j"); - B.condBr(host.truthy(l), lt, lf); - B.startBlock(lt); - B.line( - `store ${ty} ${host.unionExtract(l.name, e.left.type.unionId, e.type)}, ptr ${slot}`, - ); - B.br(lj); - B.startBlock(lf); - host.emitBranchInto(slot, e.right); - B.br(lj); - B.startBlock(lj); - const t = B.tmp(); - B.line(`${t} = load ${ty}, ptr ${slot}`); - return host.own({ name: t, type: e.type }); - } - const l = host.emitExpr(e.left); - host.toFrame(l); - const ty = host.llType(e.type); - const slot = B.slot(); - B.entryAllocas.push(`${slot} = alloca ${ty}`); - const truthy = host.truthy(l); - const lt = B.newLabel("ord.t"); - const lf = B.newLabel("ord.f"); - const lj = B.newLabel("ord.j"); - B.condBr(truthy, lt, lf); - B.startBlock(lt); - if (e.retag !== undefined) { - // Retagged shape: the whole box goes to the union→union helper, - // which CONSUMES it (callees own their params) — no release on - // this side. The store precedes the pending check so an unwind - // leaves only the NULL dummy behind, in a slot nothing reads. - const t = B.tmp(); - B.line( - `${t} = call ${ty} @${host.callTarget(e.retag)}(${host.llType(e.left.type)} ${l.name})`, - ); - B.line(`store ${ty} ${t}, ptr ${slot}`); - if (host.mayThrow.has(e.retag)) host.emitPendingCheck(); - } else if (host.nullableUnions.single(e.left.type.unionId)) { - // The owned nullable pointer IS the owned arm value. - B.line(`store ${ty} ${l.name}, ptr ${slot}`); - } else { - B.line( - `store ${ty} ${host.unionExtract(l.name, e.left.type.unionId, e.type)}, ptr ${slot}`, - ); - host.releaseFrame(l.name, e.left.type); - } - B.br(lj); - B.startBlock(lf); - host.releaseFrame(l.name, e.left.type); - host.emitBranchInto(slot, e.right); - B.br(lj); - B.startBlock(lj); - const t = B.tmp(); - B.line(`${t} = load ${ty}, ptr ${slot}`); - return host.own({ name: t, type: e.type }); - } - case "nullish": { - // `a ?? b`: logical's move/release dance with the left's runtime - // TAG against its unit arms as the test. Pass-through shape: the - // result IS the left box. Narrowed shape: the single non-unit - // arm's payload extracts (+1 for ref kinds) and the box releases. - - if (e.left.type.kind === "dyn") { - // The native checked-value kind decides whether the left is - // nullish; the right runs lazily in its branch. - const l = host.emitExpr(e.left); - host.toFrame(l); - host.declare(`declare zeroext i1 @scr_dyn_is_nullish(ptr)`); - const slot = B.slot(); - B.entryAllocas.push(`${slot} = alloca ptr`); - const isN = B.tmp(); - B.line(`${isN} = call zeroext i1 @scr_dyn_is_nullish(ptr ${l.name})`); - const lu = B.newLabel("nuld.u"); - const lv = B.newLabel("nuld.v"); - const lj = B.newLabel("nuld.j"); - B.condBr(isN, lu, lv); - B.startBlock(lu); - host.releaseFrame(l.name, e.left.type); - host.emitBranchInto(slot, e.right); - B.br(lj); - B.startBlock(lv); - B.line(`store ptr ${l.name}, ptr ${slot}`); - B.br(lj); - B.startBlock(lj); - const t = B.tmp(); - B.line(`${t} = load ptr, ptr ${slot}`); - return host.own({ name: t, type: e.type }); - } - if (e.left.type.kind !== "union") - throw new InternalCompilerError("llvm emitter bug: nullish left is not a union"); - const def = host.unionsById.get(e.left.type.unionId); - if (!def) - throw new InternalCompilerError( - `llvm emitter bug: nullish of unknown union ${e.left.type.unionId}`, - ); - const unitTags = def.arms.flatMap((a, i) => (isUnitType(a) ? [i] : [])); - if (unitTags.length === 0) - throw new InternalCompilerError("llvm emitter bug: nullish union lacks unit arms"); - const fused = emitNullishOptionalChain(host, e); - if (fused) return fused; - if ( - e.left.kind === "recordKeyGet" && - e.left.missNaN !== true && - typeEquals(e.type, e.left.type) && - storesNoUnit(host, e.left) - ) - return emitRecordKeyGetOr(host, e.left, e.right); - if ( - !typeEquals(e.type, e.left.type) && - (e.left.kind === "varRef" || - host.isStackUnionSource(e.left) || - host.nullableFieldGet(e.left) !== null) - ) { - // Narrowed shape over a binding or a stack box (`arr[i] ?? d`, - // `map.get(k) ?? d`): test the tag and extract the payload (+1). - // The box is never retained or released. A binding is borrowed: - // no code runs between its read and the extraction, and the - // default never touches it. Bindings proven projection-only may - // hold stack boxes, which must never reach RC entry points. - const l = host.emitUnionProjection(e.left); - const ty = host.llType(e.type); - const slot = B.slot(); - B.entryAllocas.push(`${slot} = alloca ${ty}`); - const isUnit = host.tagInSet(l.name, def.id, unitTags); - const lu = B.newLabel("nul.u"); - const lv = B.newLabel("nul.v"); - const lj = B.newLabel("nul.j"); - B.condBr(isUnit, lu, lv); - B.startBlock(lu); - host.emitBranchInto(slot, e.right); - B.br(lj); - B.startBlock(lv); - B.line(`store ${ty} ${host.unionExtract(l.name, def.id, e.type)}, ptr ${slot}`); - B.br(lj); - B.startBlock(lj); - const t = B.tmp(); - B.line(`${t} = load ${ty}, ptr ${slot}`); - return host.own({ name: t, type: e.type }); - } - const l = host.emitExpr(e.left); - host.toFrame(l); - const ty = host.llType(e.type); - const slot = B.slot(); - B.entryAllocas.push(`${slot} = alloca ${ty}`); - const isUnit = host.tagInSet(l.name, def.id, unitTags); - const lu = B.newLabel("nul.u"); - const lv = B.newLabel("nul.v"); - const lj = B.newLabel("nul.j"); - B.condBr(isUnit, lu, lv); - B.startBlock(lu); - host.releaseFrame(l.name, e.left.type); - host.emitBranchInto(slot, e.right); - B.br(lj); - B.startBlock(lv); - if (typeEquals(e.type, e.left.type) || host.nullableUnions.single(def.id)) { - // Pass-through, or a nullable pointer that IS its owned arm value. - B.line(`store ${ty} ${l.name}, ptr ${slot}`); - } else { - B.line(`store ${ty} ${host.unionExtract(l.name, def.id, e.type)}, ptr ${slot}`); - host.releaseFrame(l.name, e.left.type); - } - B.br(lj); - B.startBlock(lj); - const t = B.tmp(); - B.line(`${t} = load ${ty}, ptr ${slot}`); - return host.own({ name: t, type: e.type }); - } + case "logical": + return emitLogical(host, e); + case "ternary": + return emitTernary(host, e); + case "optChain": + return emitOptChain(host, e); + case "chainRecv": + return emitChainRecv(host, e); + case "orDefault": + return emitOrDefault(host, e); + case "nullish": + return emitNullish(host, e); default: { const _exhaustive: never = e; void _exhaustive; @@ -473,6 +56,450 @@ export function emitControlExpr( } } +function emitDynDestrCheck(host: LlvmEmitterContext, e: ExprOf<"dynDestrCheck">): LlValue { + const B = host.B; + // RequireObjectCoercible with V8's destructuring TypeError. dyn + // values check in the runtime helper and pass through unchanged. + const v = host.emitExpr(e.value); + const first = e.firstProp !== undefined ? host.cstr(e.firstProp) : "null"; + + const helper = host.dyn.dynDestrCheckHelper(); + B.line(`call void @${helper}(ptr ${v.name}, ptr ${host.cstr(e.spelling)}, ptr ${first})`); + host.emitPendingCheck(); + return v; +} + +function emitDynIterN(host: LlvmEmitterContext, e: ExprOf<"dynIterN">): LlValue { + const B = host.B; + // GetIterator + first-N steps as a fresh array (V8's exact + // not-iterable TypeError on non-iterables) through the native dyn helper. + const v = emitBorrowedInput(host, e.value); + + const helper = host.dyn.dynIterNHelper(); + const t = B.tmp(); + B.line( + `${t} = call ptr @${helper}(ptr ${v.name}, ${host.sizeType} ${e.count}, ptr ${e.notIterableMessage ? host.cstr(e.notIterableMessage) : "null"})`, + ); + const out = host.own({ name: t, type: e.type }); + host.emitPendingCheck(); + return out; +} + +function emitLogical(host: LlvmEmitterContext, e: ExprOf<"logical">): LlValue { + const B = host.B; + const tagSet = e.op === "||" ? unionTagSet(e) : null; + if (tagSet) return { name: emitUnionTagSet(host, tagSet), type: e.type }; + // JS value semantics: the result is the deciding operand itself. + // Left evaluates once, ownership moves into the result slot; when + // the branch takes the right operand the stale left releases first + // and the right runs in its own frame. + const ty = host.llType(e.type); + const l = host.emitExpr(e.left); + host.toFrame(l); + const slot = B.slot(); + B.entryAllocas.push(`${slot} = alloca ${ty}`); + B.line(`store ${ty} ${l.name}, ptr ${slot}`); + const integerSlot = e.type.kind === "f64" && l.uint32 !== undefined ? B.slot() : undefined; + if (integerSlot !== undefined) { + B.entryAllocas.push(`${integerSlot} = alloca i32`); + B.line(`store i32 ${l.uint32!}, ptr ${integerSlot}`); + } + const truthy = host.truthy(l); + const rightLabel = B.newLabel("log.r"); + const joinLabel = B.newLabel("log.j"); + if (e.op === "&&") B.condBr(truthy, rightLabel, joinLabel); + else B.condBr(truthy, joinLabel, rightLabel); + B.startBlock(rightLabel); + if (isRefCounted(e.type)) host.releaseFrame(l.name, e.type); + const rightInteger = host.emitBranchInto(slot, e.right, integerSlot); + B.br(joinLabel); + B.startBlock(joinLabel); + const t = B.tmp(); + B.line(`${t} = load ${ty}, ptr ${slot}`); + if (integerSlot !== undefined && rightInteger) { + const uint32 = B.tmp(); + B.line(`${uint32} = load i32, ptr ${integerSlot}`); + return { name: t, type: e.type, uint32 }; + } + return host.own({ name: t, type: e.type }); +} + +function emitTernary(host: LlvmEmitterContext, e: ExprOf<"ternary">): LlValue { + const B = host.B; + // Exactly one arm evaluates; each arm runs in its own frame and + // moves the chosen value into the result slot. + const ty = host.llType(e.type); + const c = host.emitExpr(e.cond); + const slot = B.slot(); + B.entryAllocas.push(`${slot} = alloca ${ty}`); + const integerSlot = e.type.kind === "f64" ? B.slot() : undefined; + if (integerSlot !== undefined) B.entryAllocas.push(`${integerSlot} = alloca i32`); + const lt = B.newLabel("tern.t"); + const lf = B.newLabel("tern.f"); + const lj = B.newLabel("tern.j"); + B.condBr(c.name, lt, lf); + B.startBlock(lt); + const thenInteger = host.emitBranchInto(slot, e.then, integerSlot); + B.br(lj); + B.startBlock(lf); + const elseInteger = host.emitBranchInto(slot, e.else_, integerSlot); + B.br(lj); + B.startBlock(lj); + const t = B.tmp(); + B.line(`${t} = load ${ty}, ptr ${slot}`); + // A view is available only when every incoming branch wrote it. + // Incomplete views are unused and disappear during promotion. + if (integerSlot !== undefined && thenInteger && elseInteger) { + const uint32 = B.tmp(); + B.line(`${uint32} = load i32, ptr ${integerSlot}`); + return { name: t, type: e.type, uint32 }; + } + // A choice between interned literals is an interned literal: like a + // strLit operand, nothing owns it (retain and release are no-ops). + if (literalChoice(e)) return host.markImmortal({ name: t, type: e.type }); + return host.own({ name: t, type: e.type }); +} + +function emitOptChain(host: LlvmEmitterContext, e: ExprOf<"optChain">): LlValue { + const B = host.B; + // `a?.b` / `f?.()`: the nullish test inverted. The receiver + // evaluates once into an ordinary frame temp (borrowed); on a unit + // tag the result is the interned undefined arm and the body never + // runs; otherwise the narrowed payload fills the bind slot (+1, + // frame-owned through a SLOT entry — NULL on the unit path, where + // the frame's release is a no-op) and the body reads it through + // chainRecv. + if (e.receiver.type.kind === "dyn") { + // A dyn (dyn) receiver — the `rawName?.match(re)` step: the + // nullish test reads the node's kind tag; the unit path is the + // undefined dyn singleton (dyn results) or nothing (void + // bodies), the body runs over the bound receiver otherwise. + const r = host.emitExpr(e.receiver); + const kd = host.dynKind(r.name); + const isU = B.tmp(); + const isN = B.tmp(); + const isUnit = B.tmp(); + B.line(`${isU} = icmp eq i32 ${kd}, ${DYN_KIND.UNDEF}`); + B.line(`${isN} = icmp eq i32 ${kd}, ${DYN_KIND.NULL}`); + B.line(`${isUnit} = or i1 ${isU}, ${isN}`); + const bind = B.slot(); + B.entryAllocas.push(`${bind} = alloca ptr`); + B.line(`store ptr null, ptr ${bind}`); + host.ownSlot(bind, e.receiver.type); + host.declare(`declare ptr @scr_dyn_retain_v(ptr)`); + if (e.type.kind === "void") { + const lb = B.newLabel("ocd.b"); + const lj = B.newLabel("ocd.j"); + B.condBr(isUnit, lj, lb); + B.startBlock(lb); + const rr = B.tmp(); + B.line(`${rr} = call ptr @scr_dyn_retain_v(ptr ${r.name})`); + B.line(`store ptr ${rr}, ptr ${bind}`); + host.chainSlots.set(e.id, { name: bind, type: e.receiver.type, slot: true }); + host.frames.push([]); + host.emitExpr(e.body); + host.releaseTemps(host.frames.pop()!); + host.chainSlots.delete(e.id); + B.br(lj); + B.startBlock(lj); + return { name: "", type: e.type }; + } + if (e.type.kind !== "dyn") + throw new InternalCompilerError("llvm emitter bug: dyn optChain result kind"); + const slot = B.slot(); + B.entryAllocas.push(`${slot} = alloca ptr`); + const lu = B.newLabel("ocd.u"); + const lb = B.newLabel("ocd.b"); + const lj = B.newLabel("ocd.j"); + B.condBr(isUnit, lu, lb); + B.startBlock(lu); + host.declare(`declare ptr @scr_dyn_undefined()`); + const un = B.tmp(); + const ur = B.tmp(); + B.line(`${un} = call ptr @scr_dyn_undefined()`); + B.line(`${ur} = call ptr @scr_dyn_retain_v(ptr ${un})`); + B.line(`store ptr ${ur}, ptr ${slot}`); + B.br(lj); + B.startBlock(lb); + const rr = B.tmp(); + B.line(`${rr} = call ptr @scr_dyn_retain_v(ptr ${r.name})`); + B.line(`store ptr ${rr}, ptr ${bind}`); + host.chainSlots.set(e.id, { name: bind, type: e.receiver.type, slot: true }); + host.emitBranchInto(slot, e.body); + host.chainSlots.delete(e.id); + B.br(lj); + B.startBlock(lj); + const t = B.tmp(); + B.line(`${t} = load ptr, ptr ${slot}`); + return host.own({ name: t, type: e.type }); + } + + const { isUnit, bindPresent } = emitOptionalChainReceiver(host, e); + if (e.type.kind === "void") { + // Statement form (cb?.()): no result value at all. + const lb = B.newLabel("oc.b"); + const lj = B.newLabel("oc.j"); + B.condBr(isUnit, lj, lb); + B.startBlock(lb); + bindPresent(); + host.frames.push([]); + host.emitExpr(e.body); + host.releaseTemps(host.frames.pop()!); + host.chainSlots.delete(e.id); + B.br(lj); + B.startBlock(lj); + return { name: "", type: e.type }; + } + if (e.type.kind === "dyn") { + // A dyn-typed chain (`pricing?.[key]` over an unknown-valued + // index signature): the unit path is the undefined dyn value — + // dyn represents undefined directly, no union wrapper exists. + const slotD = B.slot(); + B.entryAllocas.push(`${slotD} = alloca ptr`); + const lu = B.newLabel("ocu.u"); + const lb = B.newLabel("ocu.b"); + const lj = B.newLabel("ocu.j"); + B.condBr(isUnit, lu, lb); + B.startBlock(lu); + host.declare(`declare ptr @scr_dyn_undefined()`); + host.declare(`declare ptr @scr_dyn_retain_v(ptr)`); + const un = B.tmp(); + const ur = B.tmp(); + B.line(`${un} = call ptr @scr_dyn_undefined()`); + B.line(`${ur} = call ptr @scr_dyn_retain_v(ptr ${un})`); + B.line(`store ptr ${ur}, ptr ${slotD}`); + B.br(lj); + B.startBlock(lb); + bindPresent(); + host.emitBranchInto(slotD, e.body); + host.chainSlots.delete(e.id); + B.br(lj); + B.startBlock(lj); + const t = B.tmp(); + B.line(`${t} = load ptr, ptr ${slotD}`); + return host.own({ name: t, type: e.type }); + } + if (e.type.kind !== "union") + throw new LlvmUnsupportedError(`optChainResult:${e.type.kind}`, e.loc); + const undefTag = undefinedArmTag(e.type, host.unionsById); + if (undefTag < 0) + throw new InternalCompilerError("llvm emitter bug: optChain result lacks its undefined arm"); + const ty = host.llType(e.type); + const slot = B.slot(); + B.entryAllocas.push(`${slot} = alloca ${ty}`); + const lu = B.newLabel("oc.u"); + const lb = B.newLabel("oc.b"); + const lj = B.newLabel("oc.j"); + B.condBr(isUnit, lu, lb); + B.startBlock(lu); + B.line(`store ptr ${host.unitInstanceRef(e.type.unionId, undefTag)}, ptr ${slot}`); + B.br(lj); + B.startBlock(lb); + bindPresent(); + host.emitBranchInto(slot, e.body); + host.chainSlots.delete(e.id); + B.br(lj); + B.startBlock(lj); + const t = B.tmp(); + B.line(`${t} = load ${ty}, ptr ${slot}`); + return host.own({ name: t, type: e.type }); +} + +function emitChainRecv(host: LlvmEmitterContext, e: ExprOf<"chainRecv">): LlValue { + const B = host.B; + const bound = host.chainSlots.get(e.id); + if (!bound) + throw new InternalCompilerError(`llvm emitter bug: chainRecv "${e.id}" outside its chain`); + const v = B.tmp(); + B.line(`${v} = load ${host.llType(bound.type)}, ptr ${bound.name}`); + if (!isRefCounted(e.type)) return { name: v, type: e.type }; + return host.own({ name: host.retainFrame(v, e.type), type: e.type }); +} + +function emitOrDefault(host: LlvmEmitterContext, e: ExprOf<"orDefault">): LlValue { + const B = host.B; + // `u || d` narrowed to the single non-unit arm: nullish's dance + // with the union TRUTHY switch as the test — truthy extracts the + // arm (+1 for ref kinds), falsy releases and runs the default. + if (e.left.type.kind !== "union") + throw new InternalCompilerError("llvm emitter bug: orDefault left is not a union"); + if ( + e.retag === undefined && + !host.nullableUnions.has(e.left.type.unionId) && + host.isStackUnionSource(e.left) + ) { + // A stack box (`arr[i] || d`): test truthiness and extract the + // payload (+1). The box is never retained or released. + const l = host.emitUnionProjection(e.left); + const ty = host.llType(e.type); + const slot = B.slot(); + B.entryAllocas.push(`${slot} = alloca ${ty}`); + const lt = B.newLabel("ord.t"), + lf = B.newLabel("ord.f"), + lj = B.newLabel("ord.j"); + B.condBr(host.truthy(l), lt, lf); + B.startBlock(lt); + B.line(`store ${ty} ${host.unionExtract(l.name, e.left.type.unionId, e.type)}, ptr ${slot}`); + B.br(lj); + B.startBlock(lf); + host.emitBranchInto(slot, e.right); + B.br(lj); + B.startBlock(lj); + const t = B.tmp(); + B.line(`${t} = load ${ty}, ptr ${slot}`); + return host.own({ name: t, type: e.type }); + } + const l = host.emitExpr(e.left); + host.toFrame(l); + const ty = host.llType(e.type); + const slot = B.slot(); + B.entryAllocas.push(`${slot} = alloca ${ty}`); + const truthy = host.truthy(l); + const lt = B.newLabel("ord.t"); + const lf = B.newLabel("ord.f"); + const lj = B.newLabel("ord.j"); + B.condBr(truthy, lt, lf); + B.startBlock(lt); + if (e.retag !== undefined) { + // Retagged shape: the whole box goes to the union→union helper, + // which CONSUMES it (callees own their params) — no release on + // this side. The store precedes the pending check so an unwind + // leaves only the NULL dummy behind, in a slot nothing reads. + const t = B.tmp(); + B.line(`${t} = call ${ty} @${host.callTarget(e.retag)}(${host.llType(e.left.type)} ${l.name})`); + B.line(`store ${ty} ${t}, ptr ${slot}`); + if (host.mayThrow.has(e.retag)) host.emitPendingCheck(); + } else if (host.nullableUnions.single(e.left.type.unionId)) { + // The owned nullable pointer IS the owned arm value. + B.line(`store ${ty} ${l.name}, ptr ${slot}`); + } else { + B.line(`store ${ty} ${host.unionExtract(l.name, e.left.type.unionId, e.type)}, ptr ${slot}`); + host.releaseFrame(l.name, e.left.type); + } + B.br(lj); + B.startBlock(lf); + host.releaseFrame(l.name, e.left.type); + host.emitBranchInto(slot, e.right); + B.br(lj); + B.startBlock(lj); + const t = B.tmp(); + B.line(`${t} = load ${ty}, ptr ${slot}`); + return host.own({ name: t, type: e.type }); +} + +function emitNullish(host: LlvmEmitterContext, e: ExprOf<"nullish">): LlValue { + const B = host.B; + // `a ?? b`: logical's move/release dance with the left's runtime + // TAG against its unit arms as the test. Pass-through shape: the + // result IS the left box. Narrowed shape: the single non-unit + // arm's payload extracts (+1 for ref kinds) and the box releases. + + if (e.left.type.kind === "dyn") { + // The native checked-value kind decides whether the left is + // nullish; the right runs lazily in its branch. + const l = host.emitExpr(e.left); + host.toFrame(l); + host.declare(`declare zeroext i1 @scr_dyn_is_nullish(ptr)`); + const slot = B.slot(); + B.entryAllocas.push(`${slot} = alloca ptr`); + const isN = B.tmp(); + B.line(`${isN} = call zeroext i1 @scr_dyn_is_nullish(ptr ${l.name})`); + const lu = B.newLabel("nuld.u"); + const lv = B.newLabel("nuld.v"); + const lj = B.newLabel("nuld.j"); + B.condBr(isN, lu, lv); + B.startBlock(lu); + host.releaseFrame(l.name, e.left.type); + host.emitBranchInto(slot, e.right); + B.br(lj); + B.startBlock(lv); + B.line(`store ptr ${l.name}, ptr ${slot}`); + B.br(lj); + B.startBlock(lj); + const t = B.tmp(); + B.line(`${t} = load ptr, ptr ${slot}`); + return host.own({ name: t, type: e.type }); + } + if (e.left.type.kind !== "union") + throw new InternalCompilerError("llvm emitter bug: nullish left is not a union"); + const def = host.unionsById.get(e.left.type.unionId); + if (!def) + throw new InternalCompilerError( + `llvm emitter bug: nullish of unknown union ${e.left.type.unionId}`, + ); + const unitTags = def.arms.flatMap((a, i) => (isUnitType(a) ? [i] : [])); + if (unitTags.length === 0) + throw new InternalCompilerError("llvm emitter bug: nullish union lacks unit arms"); + const fused = emitNullishOptionalChain(host, e); + if (fused) return fused; + if ( + e.left.kind === "recordKeyGet" && + e.left.missNaN !== true && + typeEquals(e.type, e.left.type) && + storesNoUnit(host, e.left) + ) + return emitRecordKeyGetOr(host, e.left, e.right); + if ( + !typeEquals(e.type, e.left.type) && + (e.left.kind === "varRef" || + host.isStackUnionSource(e.left) || + host.nullableFieldGet(e.left) !== null) + ) { + // Narrowed shape over a binding or a stack box (`arr[i] ?? d`, + // `map.get(k) ?? d`): test the tag and extract the payload (+1). + // The box is never retained or released. A binding is borrowed: + // no code runs between its read and the extraction, and the + // default never touches it. Bindings proven projection-only may + // hold stack boxes, which must never reach RC entry points. + const l = host.emitUnionProjection(e.left); + const ty = host.llType(e.type); + const slot = B.slot(); + B.entryAllocas.push(`${slot} = alloca ${ty}`); + const isUnit = host.tagInSet(l.name, def.id, unitTags); + const lu = B.newLabel("nul.u"); + const lv = B.newLabel("nul.v"); + const lj = B.newLabel("nul.j"); + B.condBr(isUnit, lu, lv); + B.startBlock(lu); + host.emitBranchInto(slot, e.right); + B.br(lj); + B.startBlock(lv); + B.line(`store ${ty} ${host.unionExtract(l.name, def.id, e.type)}, ptr ${slot}`); + B.br(lj); + B.startBlock(lj); + const t = B.tmp(); + B.line(`${t} = load ${ty}, ptr ${slot}`); + return host.own({ name: t, type: e.type }); + } + const l = host.emitExpr(e.left); + host.toFrame(l); + const ty = host.llType(e.type); + const slot = B.slot(); + B.entryAllocas.push(`${slot} = alloca ${ty}`); + const isUnit = host.tagInSet(l.name, def.id, unitTags); + const lu = B.newLabel("nul.u"); + const lv = B.newLabel("nul.v"); + const lj = B.newLabel("nul.j"); + B.condBr(isUnit, lu, lv); + B.startBlock(lu); + host.releaseFrame(l.name, e.left.type); + host.emitBranchInto(slot, e.right); + B.br(lj); + B.startBlock(lv); + if (typeEquals(e.type, e.left.type) || host.nullableUnions.single(def.id)) { + // Pass-through, or a nullable pointer that IS its owned arm value. + B.line(`store ${ty} ${l.name}, ptr ${slot}`); + } else { + B.line(`store ${ty} ${host.unionExtract(l.name, def.id, e.type)}, ptr ${slot}`); + host.releaseFrame(l.name, e.left.type); + } + B.br(lj); + B.startBlock(lj); + const t = B.tmp(); + B.line(`${t} = load ${ty}, ptr ${slot}`); + return host.own({ name: t, type: e.type }); +} + /** The receiver half of a union-receiver `a?.b`. The receiver evaluates * once; `isUnit` tests its unit arms, and `bindPresent` fills the chain's * bind slot with the narrowed payload for the body to read through diff --git a/packages/compiler/src/backend/llvm/expr-primitives.ts b/packages/compiler/src/backend/llvm/expr-primitives.ts index 1a4973a3a..5d2a1cfeb 100644 --- a/packages/compiler/src/backend/llvm/expr-primitives.ts +++ b/packages/compiler/src/backend/llvm/expr-primitives.ts @@ -1080,16 +1080,21 @@ export function emitContainerExpr( B.line(`${fits} = icmp ule ${host.sizeType} ${capacity}, ${SMALL_ARRAY_SLOTS}`); B.condBr(fits, smallLabel, sizedLabel); B.startBlock(smallLabel); - B.line(`${smallArr} = ${arrNewCall(host.shapeHost, elem, "0", true)}`); + B.line(`${smallArr} = ${arrNewCall(host.shapeHost, elem, "0", true, host.arenaSite(e))}`); B.br(joined); B.startBlock(sizedLabel); - B.line(`${sizedArr} = ${arrNewCall(host.shapeHost, elem, capacity)}`); + B.line( + `${sizedArr} = ${arrNewCall(host.shapeHost, elem, capacity, false, host.arenaSite(e))}`, + ); B.br(joined); B.startBlock(joined); B.line( `${arr} = phi ptr [ ${smallArr}, %${smallLabel} ], [ ${sizedArr}, %${sizedLabel} ]`, ); - } else B.line(`${arr} = ${arrNewCall(host.shapeHost, elem, String(capacity), small)}`); + } else + B.line( + `${arr} = ${arrNewCall(host.shapeHost, elem, String(capacity), small, host.arenaSite(e))}`, + ); } const out = host.own({ name: arr, type: e.type }); const acc: ArrayAccess = int32 ? "i32" : elemAccess(elem); @@ -1362,7 +1367,7 @@ export function emitRecordExpr( throw new InternalCompilerError("llvm emitter bug: recordLit of non-record type"); const shapeId = e.type.shapeId; const rec = B.tmp(); - B.line(`${rec} = call ptr @${mangleRecordNew(shapeId)}()`); + B.line(`${rec} = call ptr @${host.allocSym(mangleRecordNew(shapeId), e)}()`); const out = host.own({ name: rec, type: e.type }); // A null-prototype record: SCR_MAP_NULL_PROTO on the fresh map. if (e.nullProto) B.line(`store i8 1, ptr ${host.recordMapFlagsPtr(rec, shapeId)}`); diff --git a/packages/compiler/src/backend/llvm/region-groups.test.ts b/packages/compiler/src/backend/llvm/region-groups.test.ts new file mode 100644 index 000000000..1e4e8dd0c --- /dev/null +++ b/packages/compiler/src/backend/llvm/region-groups.test.ts @@ -0,0 +1,205 @@ +import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; +import { expect, test } from "vitest"; +import { compile, deserializeModule } from "../../index.js"; +import type { IrExpr, IrModule, IrType } from "../../ir/ir.js"; +import { analyzeClosedGroups, analyzeRegionGroups } from "./region-groups.js"; +import { children, type Node } from "./region-ir.js"; + +async function moduleFor(source: string): Promise { + const dir = await mkdtemp(join(tmpdir(), "scriptc-region-groups-")); + try { + const entry = join(dir, "main.ts"), + output = join(dir, "main.ir.json"); + await writeFile(entry, source); + const result = await compile(entry, { outDir: dir, outPath: output, outputKind: "ir" }); + if (!result.ok) + throw new Error(result.diagnostics.map((item) => `${item.code}: ${item.message}`).join("\n")); + return deserializeModule(await readFile(output, "utf8")); + } finally { + await rm(dir, { recursive: true, force: true }); + } +} + +/** The calls of `callee` in the module, in order. */ +function callsOf(mod: IrModule, callee: string): IrExpr[] { + const out: IrExpr[] = []; + const visit = (node: Node): void => { + if (node.kind === "call" && node.callee === callee) out.push(node); + const kids: Node[] = []; + children(node, kids); + for (const k of kids) visit(k); + }; + for (const fn of mod.functions) for (const s of fn.body) visit(s); + return out; +} + +// Every object and record is an arena type here, and every union a nullable +// pointer to one (the emitter decides both from layouts). +const everyObject = (t: IrType): boolean => + t.kind === "object" || t.kind === "record" || t.kind === "union"; + +const TREE = ` +class Node { + left: Node | null; + right: Node | null; + constructor(left: Node | null, right: Node | null) { + this.left = left; + this.right = right; + } + count(): number { + return 1 + (this.left === null ? 0 : this.left.count()) + (this.right === null ? 0 : this.right.count()); + } +} +function tree(depth: number): Node { + return depth === 0 ? new Node(null, null) : new Node(tree(depth - 1), tree(depth - 1)); +} +`; + +test("a builder whose result its caller only reads is a closed root", async () => { + const mod = await moduleFor(`${TREE} +let total = 0; +for (let d = 0; d < 4; d++) total += tree(d).count(); +console.log(total); +`); + const groups = analyzeRegionGroups(mod); + expect(groups.fresh.has("tree")).toBe(true); + const [root] = callsOf(mod, "tree").filter((c) => groups.roots.has(c)); + expect(root).toBeDefined(); + expect(groups.drops.get(root!)).toBeNull(); + expect(groups.reachable.has("tree")).toBe(true); + expect(analyzeClosedGroups(mod, groups, everyObject).has(root!)).toBe(true); +}); + +test("a result kept past its caller's frame is no root", async () => { + const mod = await moduleFor(`${TREE} +const kept: Node[] = []; +for (let d = 0; d < 4; d++) kept.push(tree(d)); +console.log(kept.length); +`); + const groups = analyzeRegionGroups(mod); + expect(callsOf(mod, "tree").some((c) => groups.roots.has(c))).toBe(false); +}); + +test("a function that stores what it allocates in a global is not leak-free", async () => { + const mod = await moduleFor(` +interface P { x: number } +const seen: P[] = []; +function note(x: number): void { + seen.push({ x }); +} +function sum(n: number): number { + let s = 0; + for (let i = 0; i < n; i++) { + const p = { x: i }; + s += p.x; + } + return s; +} +note(1); +console.log(sum(3), seen.length); +`); + const groups = analyzeRegionGroups(mod); + expect(groups.leakFree.has("note")).toBe(false); + expect(callsOf(mod, "note").some((c) => groups.calls.has(c))).toBe(false); + expect(groups.leakFree.has("sum")).toBe(true); +}); + +test("a leak-free call that returns no reference is a call region", async () => { + const mod = await moduleFor(` +interface V { x: number; y: number } +function add(a: V, b: V): V { + return { x: a.x + b.x, y: a.y + b.y }; +} +function walk(n: number): number { + let at: V = { x: 0, y: 0 }; + for (let i = 0; i < n; i++) at = add(at, { x: i, y: 1 }); + return at.x + at.y; +} +console.log(walk(10)); +`); + const groups = analyzeRegionGroups(mod); + const [region] = callsOf(mod, "walk"); + expect(groups.calls.has(region!)).toBe(true); +}); + +test("a graph that holds strings or outside objects is not closed", async () => { + const mod = await moduleFor(` +class Tag { + name: string; + constructor(name: string) { + this.name = name; + } +} +class Box { + tag: Tag; + owner: Tag | null; + constructor(tag: Tag, owner: Tag | null) { + this.tag = tag; + this.owner = owner; + } +} +const shared = new Tag("shared"); +function labelled(n: number): Box { + let box = new Box(new Tag("t" + n), null); + for (let i = 0; i < n; i++) box = new Box(new Tag("t" + i), null); + return box; +} +function owned(n: number): Box { + let box = new Box(new Tag("x"), shared); + for (let i = 0; i < n; i++) box = new Box(new Tag("x"), shared); + return box; +} +let n = 0; +for (let i = 0; i < 3; i++) n += labelled(i).tag.name.length + owned(i).tag.name.length; +console.log(n); +`); + const groups = analyzeRegionGroups(mod); + const closed = analyzeClosedGroups(mod, groups, everyObject); + const labelled = callsOf(mod, "labelled").filter((c) => groups.roots.has(c)); + const owned = callsOf(mod, "owned").filter((c) => groups.roots.has(c)); + expect(labelled.length).toBe(1); + expect(owned.length).toBe(1); + expect(closed.has(labelled[0]!)).toBe(false); + expect(closed.has(owned[0]!)).toBe(false); +}); + +test("a root bound in a loop body is dropped with that body's local", async () => { + const mod = await moduleFor(`${TREE} +function run(n: number): number { + let total = 0; + for (let i = 0; i < n; i++) { + const t = tree(i % 4); + total += t.count(); + } + return total; +} +console.log(run(10)); +`); + const groups = analyzeRegionGroups(mod); + const [root] = callsOf(mod, "tree").filter((c) => groups.roots.has(c)); + const run = mod.functions.find((f) => f.name === "run")!; + const local = groups.drops.get(root!); + expect(run.locals.find((l) => l.id === local)?.name).toBe("t"); +}); + +test("a root whose value a callee writes into is not closed", async () => { + const mod = await moduleFor(`${TREE} +function graft(n: Node, extra: Node): void { + n.left = extra; +} +const spare = new Node(null, null); +let total = 0; +for (let d = 0; d < 3; d++) { + const t = tree(d); + graft(t, spare); + total += t.count(); +} +console.log(total); +`); + const groups = analyzeRegionGroups(mod); + const closed = analyzeClosedGroups(mod, groups, everyObject); + for (const root of callsOf(mod, "tree").filter((c) => groups.roots.has(c))) + expect(closed.has(root)).toBe(false); +}); diff --git a/packages/compiler/src/backend/llvm/region-groups.ts b/packages/compiler/src/backend/llvm/region-groups.ts new file mode 100644 index 000000000..70e4168ed --- /dev/null +++ b/packages/compiler/src/backend/llvm/region-groups.ts @@ -0,0 +1,1693 @@ +/* Region groups: call sites whose result is a fresh object graph the + * caller only borrows and then drops, so everything the call allocates + * can live in an arena that is dropped at once (arenas.ts). + * + * The group of a call is every object allocated while it runs. It can be + * dropped with its result when nothing outside reaches any member once the + * call returns except through the result. A function is leak-free when + * every value it allocates (an allocation, a fresh-producing builtin, or + * the result of a call) dies in its frame, is returned, or is stored into + * the graph of a value it returns, and every function it calls is + * leak-free too. Members may refer out of the group (to longer-lived + * objects, which an arena would release when it drops); nothing outside + * may refer in. A function is fresh when it is leak-free and returns only + * values it allocated. + * + * A root is a call of a fresh function (or a leak-free construction) whose + * value, and every reference read out of it, the caller keeps in its frame: + * deep parameter summaries, where reading a reference out of a parameter + * makes a value the callee must keep too. Everything is solved + * optimistically over the call graph and refined to a fixpoint. */ +import { + isRefCounted, + type IrExpr, + type IrFunction, + type IrModule, + type IrStmt, + type IrType, +} from "../../ir/ir.js"; +import { everyExprChild, everyStmtChild } from "../../ir/traverse.js"; +import { + ALLOCATIONS, + FRESH_ARRAY_METHODS, + argsOf, + children, + forEachNode, + indexOfNode, + isExpr, + keepsInFrame, + same, + refType, + transparent, + type Node, +} from "./region-ir.js"; +import { VirtualTargets } from "./reference-effects.js"; + +/** The module functions a virtual call can run, or null when unknown (or + * when `node` is no virtual call). */ +function virtualTargetsOf(vt: VirtualTargets, node: Node): readonly string[] | null { + return node.kind === "virtualCall" ? vt.targets(node.className, node.method) : null; +} + +export interface RegionGroups { + /** Fresh call and `new` expressions whose value the caller only borrows. */ + roots: Set; + /** Calls of leak-free functions that return no reference: everything + * they allocate is dead when they return. */ + calls: Set; + /** Where each root's arena is dropped: the local whose scope exit drops + * it, or null for the end of the statement. */ + drops: Map; + /** Functions whose allocations go to the open arena. */ + reachable: Set; + /** Roots and call regions whose groups are closed: every reference a + * member holds is to a member or an immortal value (analyzeClosedGroups + * fills it in). */ + closed: Set; + /** The locals that share a root's value in its function (empty for a + * value used in place), and the function of each root and call region. */ + rootLocals: Map>; + rootFunction: Map; + /** Functions whose results are fresh. */ + fresh: Set; + /** Functions that keep nothing they allocate except through their result. */ + leakFree: Set; + /** Functions that allocate, directly or through what they call. */ + allocates: Set; +} + +/** Projections whose result is a reference read out of the operand. + * Strings are leaves, not group members: reading one out of a member and + * keeping it anywhere keeps no member. */ +function projection(child: Node, parent: Node | undefined): boolean { + if (parent === undefined || !isExpr(parent) || !refType(parent.type)) return false; + switch (parent.kind) { + case "fieldGet": + case "recordGet": + case "recordKeyGet": + return same(parent.obj, child); + case "arrayGet": + return same(parent.arr, child); + case "unionKeyGet": + return same(parent.value, child); + case "mapIntrinsic": + case "setIntrinsic": + return ( + same(parent.receiver, child) && + (parent.method === "get" || parent.method === "iterKey" || parent.method === "iterValue") + ); + default: + return false; + } +} + +const LOOP_KINDS = new Set(["while", "doWhile", "for", "forOf"]); + +/** Collection methods that add their arguments to the receiver. */ +const ADDING_METHODS = new Set(["push", "unshift", "set", "add"]); + +export const throws = (e: IrExpr): boolean => e.kind === "libCall" && e.fn === "error.nodeThrow"; + +/** Receiver methods that read a collection or remove from it, and so add + * nothing to its graph. */ +const READ_RECEIVER = new Set([ + "get", + "has", + "delete", + "iterKey", + "iterValue", + "size", + "clear", + "length", + "at", + "includes", + "indexOf", + "lastIndexOf", + "indexEq", + "getNumber", + "join", + "nextPresent", + "slice", + "concatSpread", + "pop", + "shift", +]); + +/** The local a reference is read out of, through casts, checked reads and + * projections (`l.items[0]` → l), or the local itself. */ +function projectionBase(e: IrExpr, through?: (call: IrExpr) => IrExpr | null): string | null { + let at: IrExpr = e; + for (let i = 0; i < 64; i++) { + if (at.kind === "varRef") return at.localId; + if (at.kind === "call" && through !== undefined) { + const next = through(at); + if (next === null) return null; + at = next; + continue; + } + if (at.kind === "fieldGet" || at.kind === "recordGet" || at.kind === "recordKeyGet") + at = at.obj; + else if (at.kind === "arrayGet") at = at.arr; + else if (at.kind === "unionKeyGet") at = at.value; + else if ( + (at.kind === "mapIntrinsic" || at.kind === "setIntrinsic") && + (at.method === "get" || at.method === "iterKey" || at.method === "iterValue") + ) + at = at.receiver; + else if ( + at.kind === "unionNarrow" || + at.kind === "upcast" || + at.kind === "downcast" || + at.kind === "unionWrap" || + at.kind === "unionRetype" + ) + at = at.value; + else if (at.kind === "ternary" && throws(at.then)) at = at.else_; + else if (at.kind === "ternary" && throws(at.else_)) at = at.then; + else return null; + } + return null; +} + +/** The local whose graph a store into `target` writes (`l.f.items` → l). */ +export function storeTarget(target: IrExpr | undefined): string | null { + let at: IrExpr | undefined = target; + for (let i = 0; at !== undefined && i < 64; i++) { + if (at.kind === "varRef") return at.localId; + if (at.kind === "fieldGet" || at.kind === "recordGet" || at.kind === "recordKeyGet") + at = at.obj; + else if (at.kind === "arrayGet") at = at.arr; + else if (at.kind === "unionNarrow" || at.kind === "upcast" || at.kind === "downcast") + at = at.value; + // A checked read (`entry.skus` on `entry | undefined`) throws on one side. + else if (at.kind === "ternary" && throws(at.then)) at = at.else_; + else if (at.kind === "ternary" && throws(at.else_)) at = at.then; + else return null; + } + return null; +} + +/** An expression that produces a value it allocates (a group member). */ +export function source(e: Node): boolean { + if (!isExpr(e)) return false; + if (ALLOCATIONS.has(e.kind)) return true; + if (e.kind === "arrIntrinsic") return FRESH_ARRAY_METHODS.has(e.method); + if (e.kind === "strIntrinsic") return e.method === "split"; + if (e.kind === "libCall") return e.fn === "json.parse"; + if (e.kind === "dynCheck") return e.value.kind === "libCall" && e.value.fn === "json.parse"; + if (e.kind === "call" || e.kind === "callValue") return refType(e.type); + return false; +} + +/** Store-like uses: the value goes into the graph of `target`'s value. */ +export function storeOf(value: Node, parent: Node): IrExpr | undefined { + switch (parent.kind) { + case "fieldSet": + case "recordSet": + case "recordKeySet": + return same(parent.value, value) ? parent.obj : undefined; + case "arraySet": + return same(parent.value, value) ? parent.arr : undefined; + case "arrIntrinsic": + return (parent.method === "push" || parent.method === "unshift") && + indexOfNode(parent.args, value) >= 0 + ? parent.receiver + : undefined; + case "mapIntrinsic": + return parent.method === "set" && indexOfNode(parent.args, value) >= 0 + ? parent.receiver + : undefined; + case "setIntrinsic": + return parent.method === "add" && indexOfNode(parent.args, value) >= 0 + ? parent.receiver + : undefined; + default: + return undefined; + } +} + +/** Content positions: the value becomes part of the new value `parent`. */ +export function contentOf(value: Node, parent: Node): boolean { + switch (parent.kind) { + case "arrayLit": + case "recordLit": + case "new": + case "mapNew": + case "setNew": + return !same(parent, value); + case "recordClone": + return !same(parent.source, value); + default: + return false; + } +} + +/** Whether `parent` is a fresh array holding the elements of `child`, an + * array of references (`xs.slice()`, `a.concat(b)`): the elements share the + * fate of the copy. Strings are leaves, not members. */ +function copiesElements(child: Node, parent: Node | undefined): boolean { + if (parent === undefined || parent.kind !== "arrIntrinsic" || !isExpr(child)) return false; + if (!FRESH_ARRAY_METHODS.has(parent.method) && !SPREAD_METHODS.has(parent.method)) return false; + if ( + !same(parent.receiver, child) && + !(parent.method === "concatSpread" && indexOfNode(parent.args, child) >= 0) + ) + return false; + const t = child.type; + return t.kind === "array" && refType(t.elem); +} + +/** Array intrinsics that copy their array arguments' elements. */ +const SPREAD_METHODS = new Set(["pushSpread", "unshiftSpread", "concatSpread"]); + +/** Array intrinsics that call their function-typed arguments natively. */ +const CALLBACK_INTRINSICS = new Set(["sortDense", "sortValues"]); +const callbackArg = (child: Node, parent: Node | undefined): boolean => + parent !== undefined && + parent.kind === "arrIntrinsic" && + CALLBACK_INTRINSICS.has(parent.method) && + indexOfNode(parent.args, child) >= 0 && + isExpr(child) && + child.type.kind === "func"; + +type Use = "bound" | "kept" | "returned" | "stored" | "content" | "internal" | "thrown" | "escapes"; +interface UseInfo { + bound?: string; + /** For "internal": the index of the call in `parents`. */ + at?: number; + target?: string | null; +} + +export function analyzeRegionGroups(mod: IrModule): RegionGroups { + const fns = new Map(); + for (const fn of mod.functions) fns.set(fn.name, fn); + const vt = new VirtualTargets(mod.classes ?? []); + const suspends = (fn: IrFunction): boolean => fn.async === true || fn.generator !== undefined; + // Who refers to each function: by calls (direct, virtual, constructions), + // and by closures too. A function's summaries depend only on those of + // the functions it refers to, so the fixpoints below revisit just the + // referrers of a function whose summary changed. + const callers = new Map>(); + const referrers = new Map>(); + const directAlloc = new Set(); + for (const fn of mod.functions) { + const note = (map: Map>, name: string): void => { + let set = map.get(name); + if (set === undefined) map.set(name, (set = new Set())); + set.add(fn.name); + }; + forEachNode(fn.body, (node) => { + if (node.kind === "call") { + note(callers, node.callee); + note(referrers, node.callee); + } else if (node.kind === "virtualCall") + for (const t of virtualTargetsOf(vt, node) ?? []) { + note(callers, t); + note(referrers, t); + } + else if (node.kind === "new") { + const ctor = `%${node.className}.constructor`; + note(callers, ctor); + note(referrers, ctor); + } else if (node.kind === "closure") note(referrers, node.fnName); + if (source(node) && node.kind !== "call") directAlloc.add(fn.name); + }); + } + /** Runs `step` on the functions named, and again on the referrers of each + * whose summary it reports changed, until nothing changes. */ + const solve = ( + names: Iterable, + by: Map>, + step: (fn: IrFunction) => boolean, + ): void => { + const queue = [...names]; + const queued = new Set(queue); + while (queue.length > 0) { + const name = queue.pop()!; + queued.delete(name); + const fn = fns.get(name); + if (fn === undefined || !step(fn)) continue; + for (const r of by.get(name) ?? new Set()) + if (!queued.has(r)) { + queued.add(r); + queue.push(r); + } + } + }; + + // Deep summaries. + const deep = new Map>(); + // Internal parameters: ones a leak-free function only borrows, returns, or + // stores into the graphs of values it allocates (so an argument a caller + // allocated stays inside the caller's group). Optimistic, refined below. + const internal = new Map>(); + // Callback parameters (see below), and the function being analyzed. + const callbacks = new Map>(); + let current: IrFunction | null = null; + // While finding roots: a value passed to the function's own callback + // parameter leaves the frame (its callers' callbacks are unknown here). + let framePass = false; + const keeps = (child: Node, parent: Node | undefined): boolean => { + if (parent?.kind === "virtualCall") { + const index = indexOfNode(parent.args, child); + const targets = virtualTargetsOf(vt, parent); + return ( + index >= 0 && + targets !== null && + targets.length > 0 && + targets.every((t) => deep.get(t)?.has(index) === true) + ); + } + // A spread copies the array's elements into another array: they + // escape with it. + if ( + parent?.kind === "arrIntrinsic" && + SPREAD_METHODS.has(parent.method) && + !same(parent.receiver, child) && + isExpr(child) + ) { + const t = child.type; + return t.kind !== "array" || !refType(t.elem); + } + if (callbackArg(child, parent)) return true; + if (parent?.kind === "jsonStringify") return true; + // Comparisons only read their operands. + if (parent?.kind === "strCmp" || parent?.kind === "strEq") return true; + if (parent?.kind === "bin" && !refType(parent.type)) return true; + return keepsInFrame(child, parent, deep); + }; + + /** How the value of `node` (`parents` its ancestors) is used, after the + * expressions that pass it on (and, with `projections`, the reads of a + * reference out of it). */ + const useOf = (node: Node, parents: readonly Node[], projections: boolean, out: UseInfo): Use => { + let value: Node = node; + let at = parents.length - 1; + while ( + at >= 0 && + (transparent(value, parents[at]) || + copiesElements(value, parents[at]) || + (projections && projection(value, parents[at]))) + ) + value = parents[at--]!; + const p = at >= 0 ? parents[at] : undefined; + if (p === undefined) return "escapes"; + if ( + (p.kind === "varDecl" && p.init !== null && same(p.init, value)) || + (p.kind === "assign" && same(p.value, value)) + ) { + out.bound = p.localId; + return "bound"; + } + if (p.kind === "return") return "returned"; + if (p.kind === "throw") return "thrown"; + if (p.kind === "exprStmt") return "kept"; + const target = storeOf(value, p); + if (target !== undefined) { + out.target = storeTarget(target); + return "stored"; + } + if (contentOf(value, p)) return "content"; + if (keeps(value, p)) return "kept"; + if (p.kind === "callValue" && current !== null && !framePass) { + const i = indexOfNode(p.args, value) >= 0 ? paramIndex(current, p.callee) : -1; + if (i >= 0 && callbacks.get(current.name)!.has(i)) return "kept"; + } + if (p.kind === "call") { + const c = p; + const i = indexOfNode(c.args, value); + // The callee may hand the value to the callbacks it is passed, which + // must keep it too. + if ( + i >= 0 && + internal.get(c.callee)?.has(i) === true && + [...(callbacks.get(c.callee) ?? new Set())].every((j) => callbackClean(c.args[j])) + ) { + out.at = at; + return "internal"; + } + } + return "escapes"; + }; + + /** How the result of the call at `parents[at]` is used, through calls + * that keep it in their own results (`report(select(load()))`). */ + const resultUse = (at: number, parents: readonly Node[], out: UseInfo): Use => { + let index = at; + for (let i = 0; i < 64; i++) { + const info: UseInfo = {}; + const use = useOf(parents[index]!, parents.slice(0, index), false, info); + if (use !== "internal") { + Object.assign(out, info); + return use; + } + index = info.at!; + } + return "escapes"; + }; + /** `fn`'s body in preorder, with each node's parent (-1 for statements + * of the body), the uses of locals that can hold references, and the + * sources: walked once, for escapingLocals' many passes. */ + interface Flat { + nodes: Node[]; + parent: number[]; + refs: number[]; + sources: number[]; + } + const flats = new Map(); + const flatOf = (fn: IrFunction): Flat => { + let flat = flats.get(fn.name); + if (flat !== undefined) return flat; + flat = { nodes: [], parent: [], refs: [], sources: [] }; + const f = flat; + // Parents come before their children, so each node's parent is indexed. + const index = new Map(); + forEachNode(fn.body, (node, parent) => { + const i = f.nodes.length; + index.set(node, i); + f.nodes.push(node); + f.parent.push(parent === undefined ? -1 : index.get(parent)!); + if (source(node)) f.sources.push(i); + if (node.kind === "varRef" && (refType(node.type) || node.type.kind === "string")) + f.refs.push(i); + }); + flats.set(fn.name, flat); + return flat; + }; + /** The ancestors of node `i` of `flat`, outermost first, into `out`. */ + const ancestors = (flat: Flat, i: number, out: Node[]): Node[] => { + out.length = 0; + for (let p = flat.parent[i]!; p >= 0; p = flat.parent[p]!) out.push(flat.nodes[p]!); + out.reverse(); + return out; + }; + /** Locals of `fn` whose value (or a reference read out of it) escapes. + * With `members` (the locals bound to group members), a value may also be + * returned, be content of a new value, or be stored into a member's + * graph. */ + const escapingLocals = ( + fn: IrFunction, + members: Set | null, + classes?: Map, + ): Set => { + const out = new Set(); + const add = (id: string): void => { + out.add(id); + }; + const own = new Set(fn.locals.map((l) => l.id)); + const group = new Map(); + const find = (id: string): string => { + let r = id; + while (group.has(r) && group.get(r) !== r) r = group.get(r)!; + return r; + }; + const unite = (a: string, b: string): void => { + const ra = find(a), + rb = find(b); + if (ra !== rb) group.set(ra, rb); + }; + // Copies: locals bound to a local or to a fresh copy of one (`slice`). + // A store of a value read out of a copy into the graph of another copy + // adds no reference into the group, unless a member went into a copy. + const copy = new Map(); + const findCopy = (id: string): string => { + let r = id; + while (copy.has(r) && copy.get(r) !== r) r = copy.get(r)!; + return r; + }; + const uniteCopy = (a: string, b: string): void => { + const ra = findCopy(a), + rb = findCopy(b); + if (ra !== rb) copy.set(ra, rb); + }; + const filled = new Set(); + const selfStores: [string, string][] = []; + const flat = flatOf(fn); + const parents: Node[] = []; + if (members !== null) + for (const i of flat.sources) { + const node = flat.nodes[i]!; + ancestors(flat, i, parents); + // A copy class holds something new once a value it did not have + // goes into it: stored into its graph, or bound to one of its locals + // (`visited = new Map(); this.visited = visited`). A `slice` of a + // local in the class holds only what the class held. + const info: UseInfo = {}; + const use = useOf(node, parents, false, info); + if (use === "stored" && info.target) filled.add(info.target); + if (use === "bound" && !(node.kind === "arrIntrinsic" && node.method === "slice")) + filled.add(info.bound!); + } + // Uses of locals that can hold references (a value without references + // cannot keep a member). + for (const i of flat.refs) { + const node = flat.nodes[i]!; + if (node.kind !== "varRef") continue; + ancestors(flat, i, parents); + const id = node.localId; + const info: UseInfo = {}; + const use = useOf(node, parents, true, info); + if (use === "bound") { + if (own.has(info.bound!)) { + unite(id, info.bound!); + uniteCopy(id, info.bound!); + } else add(id); + } else if (use === "internal" && members === null) { + // The callee keeps the value only in its result: the value stays + // in this frame while the result does (a module global needs no + // frame to hold it). + const result: UseInfo = {}; + const r = resultUse(info.at!, parents, result); + if (r === "bound" && own.has(result.bound!)) { + if (own.has(id)) unite(id, result.bound!); + } else if (r !== "kept") add(id); + } else if (use === "thrown") { + // A thrown value leaves the frame and outlives the group. + add(id); + } else if (use === "returned" || use === "content" || use === "internal") { + if (members === null) add(id); + } else if (use === "stored") { + if (members?.has(id) && info.target) filled.add(info.target); + if ( + members !== null && + info.target !== null && + info.target !== undefined && + !members.has(info.target) && + own.has(info.target) + ) + selfStores.push([id, info.target]); + else if ( + members === null || + info.target === null || + info.target === undefined || + !members.has(info.target) + ) + add(id); + } else if (use === "escapes") add(id); + // `const copy = id.slice()`. + // An optional chain on a Node, or a field read in the same condition + // as its kind test, tests every Node kind in turn: the kind is read + // after an undefined check, and the fields in a statement of their own. + const p = parents[parents.length - 1]; + if (members !== null && p !== undefined && p.kind === "arrIntrinsic") { + if (same(p.receiver, node) && p.method === "slice") { + const copied: UseInfo = {}; + if (useOf(p, parents.slice(0, -1), false, copied) === "bound" && own.has(copied.bound!)) + uniteCopy(id, copied.bound!); + } + } + } + const filledCopies = new Set([...filled].map(findCopy)); + for (const [id, target] of selfStores) + if (findCopy(id) !== findCopy(target) || filledCopies.has(findCopy(id))) add(id); + for (const local of fn.locals) if (local.boxed === true) out.add(local.id); + const roots = new Set(); + for (const id of out) roots.add(find(id)); + for (const local of fn.locals) if (roots.has(find(local.id))) out.add(local.id); + if (classes !== undefined) for (const local of fn.locals) classes.set(local.id, find(local.id)); + return out; + }; + + const solveDeep = (): void => { + for (const fn of mod.functions) { + const safe = new Set(); + if (!suspends(fn)) + fn.params.forEach((param, i) => { + const local = fn.locals.find((l) => l.id === param.localId); + if ((refType(param.type) || param.type.kind === "string") && local?.boxed !== true) + safe.add(i); + }); + deep.set(fn.name, safe); + } + solve(fns.keys(), referrers, (fn) => { + const safe = deep.get(fn.name)!; + if (safe.size === 0) return false; + const esc = escapingLocals(fn, null); + let changed = false; + fn.params.forEach((param, i) => { + if (safe.has(i) && esc.has(param.localId)) { + safe.delete(i); + changed = true; + } + }); + return changed; + }); + }; + solveDeep(); + + // Leak-free and fresh functions, optimistic. + const leakFree = new Set(); + const fresh = new Set(); + for (const fn of mod.functions) { + if (suspends(fn)) continue; + leakFree.add(fn.name); + if (refType(fn.returnType)) fresh.add(fn.name); + const inner = new Set(); + fn.params.forEach((param, i) => { + const local = fn.locals.find((l) => l.id === param.localId); + if ((refType(param.type) || param.type.kind === "string") && local?.boxed !== true) + inner.add(i); + }); + internal.set(fn.name, inner); + } + let internalChanged = false; + const unwrap = (e: Node): Node => { + let at: Node = e; + for (let i = 0; i < 16; i++) { + if ( + at.kind === "unionWrap" || + at.kind === "upcast" || + at.kind === "downcast" || + at.kind === "unionRetype" + ) + at = at.value; + else break; + } + return at; + }; + // Callback parameters: parameters a function calls (or passes on to a + // callback parameter). Each argument for one must be a leak-free closure, + // or a callback parameter of the caller. + const reassignedMemo = new Map>(); + const reassignedIn = (fn: IrFunction): Set => { + let out = reassignedMemo.get(fn.name); + if (out !== undefined) return out; + out = new Set(); + for (const node of flatOf(fn).nodes) if (node.kind === "assign") out.add(node.localId); + for (const l of fn.locals) if (l.boxed === true) out.add(l.id); + reassignedMemo.set(fn.name, out); + return out; + }; + const paramIndex = (fn: IrFunction, e: Node): number => { + const u = unwrap(e); + if (u.kind !== "varRef") return -1; + const id = u.localId; + if (reassignedIn(fn).has(id)) return -1; + return fn.params.findIndex((p) => p.localId === id); + }; + for (const fn of mod.functions) callbacks.set(fn.name, new Set()); + solve(fns.keys(), callers, (fn) => { + const set = callbacks.get(fn.name)!; + const before = set.size; + for (const node of flatOf(fn).nodes) { + if (node.kind === "callValue") { + const i = paramIndex(fn, node.callee); + if (i >= 0) set.add(i); + } else if (node.kind === "arrIntrinsic" && CALLBACK_INTRINSICS.has(node.method)) { + for (const a of node.args) + if (a.type.kind === "func") { + const i = paramIndex(fn, a); + if (i >= 0) set.add(i); + } + } else if (node.kind === "call") { + for (const j of callbacks.get(node.callee) ?? new Set()) { + const arg = node.args[j]; + const i = arg === undefined ? -1 : paramIndex(fn, arg); + if (i >= 0) set.add(i); + } + } + } + return set.size !== before; + }); + const callbackClean = (arg: IrExpr | undefined): boolean => { + if (arg === undefined) return true; + const u = unwrap(arg); + if (u.kind === "closure") { + // The callee passes the callback values it borrows (or that came from + // its caller): its parameters must stay internal. + const name = u.fnName; + const target = fns.get(name); + if (target === undefined || !leakFree.has(name)) return false; + const inner = internal.get(name)!; + return target.params.every((p, i) => !refType(p.type) || inner.has(i)); + } + if (current === null || framePass) return false; + const i = paramIndex(current, u); + return i >= 0 && callbacks.get(current.name)!.has(i); + }; + const calleesClean = (node: Node): boolean => { + if (node.kind === "call") { + if (!leakFree.has(node.callee)) return false; + for (const j of callbacks.get(node.callee) ?? new Set()) + if (!callbackClean(node.args[j])) return false; + return true; + } + if (node.kind === "callValue" && current !== null) { + const i = paramIndex(current, node.callee); + return i >= 0 && callbacks.get(current.name)!.has(i); + } + if (node.kind === "arrIntrinsic" && CALLBACK_INTRINSICS.has(node.method)) + return node.args.every((a) => a.type.kind !== "func" || callbackClean(a)); + if (node.kind === "virtualCall") { + const t = virtualTargetsOf(vt, node); + return t !== null && t.length > 0 && t.every((x) => leakFree.has(x)); + } + if ( + node.kind === "callValue" || + node.kind === "newValue" || + node.kind === "dynCall" || + node.kind === "dynInvoke" + ) + return false; + if (node.kind === "new") return leakFree.has(`%${node.className}.constructor`); + return true; + }; + /** The values `e` can produce, through casts and conditionals. */ + const leaves = (e: Node, out: Node[] = []): Node[] => { + const u = unwrap(e); + if (u.kind === "ternary") { + // A side that throws produces no value. + if (!throws(u.then)) leaves(u.then, out); + if (!throws(u.else_)) leaves(u.else_, out); + } else out.push(u); + return out; + }; + /** A source whose value is a new group member (a call result only when + * the callee is fresh). */ + const memberSource = (u: Node): boolean => + source(u) && u.kind !== "callValue" && (u.kind !== "call" || fresh.has(u.callee)); + /** What analyze reads of `fn` that no summary changes: the values bound + * to each local, the stores into locals' graphs, and the locals that are + * not closed (see analyze). */ + const bodyFacts = new Map< + string, + { bindings: Map; stores: [string, Node][]; open: Set } + >(); + const factsOf = ( + fn: IrFunction, + ): { bindings: Map; stores: [string, Node][]; open: Set } => { + const memo = bodyFacts.get(fn.name); + if (memo !== undefined) return memo; + const bindings = new Map(); + const scan = (node: Node): void => { + if (node.kind === "varDecl" || node.kind === "assign") { + const v = node.kind === "varDecl" ? node.init : node.value; + if (v !== null) bindings.set(node.localId, [...(bindings.get(node.localId) ?? []), v]); + } + const kids: Node[] = []; + children(node, kids); + for (const k of kids) scan(k); + }; + for (const s of fn.body) scan(s); + const stores: [string, Node][] = []; + const open = new Set(); + { + const parents: Node[] = []; + const walk = (node: Node): void => { + const parent = parents[parents.length - 1]; + if (parent !== undefined) { + const t = storeOf(node, parent); + if (t !== undefined) { + const target = storeTarget(t); + if (target !== null) stores.push([target, node]); + } + } + if (node.kind === "varRef") { + const id = node.localId; + let value: Node = node; + let at = parents.length - 1; + while (at >= 0 && (transparent(value, parents[at]) || projection(value, parents[at]))) + value = parents[at--]!; + const p = parents[at]; + if (p !== undefined && isExpr(p)) { + const x = p; + if ( + x.kind === "call" || + x.kind === "virtualCall" || + x.kind === "callValue" || + x.kind === "new" || + x.kind === "newValue" || + x.kind === "dynCall" || + x.kind === "dynInvoke" || + x.kind === "libCall" + ) + open.add(id); + else if ( + (x.kind === "arrIntrinsic" || + x.kind === "mapIntrinsic" || + x.kind === "setIntrinsic") && + same(x.receiver, value) && + !READ_RECEIVER.has(x.method) && + !x.method.startsWith("iter") && + storeOf(x.args[0] ?? x, x) === undefined + ) + open.add(id); + } + } + const kids: Node[] = []; + children(node, kids); + parents.push(node); + for (const kid of kids) walk(kid); + parents.pop(); + }; + for (const st of fn.body) walk(st); + } + const facts = { bindings, stores, open }; + bodyFacts.set(fn.name, facts); + return facts; + }; + const analyze = (fn: IrFunction): { leakFree: boolean; fresh: boolean } => { + current = fn; + // Member locals: bound only to sources, other members, or non-references. + const members = new Set(fn.locals.filter((l) => l.boxed !== true).map((l) => l.id)); + for (const p of fn.params) members.delete(p.localId); + // A constructor's `this` is the object its `new` allocated. + const ctor = fn.name.endsWith(".constructor") && fn.params.length > 0; + const thisId = ctor ? fn.params[0]!.localId : null; + // Closed members: members whose graph holds only members and leaves + // (values without a graph: numbers, strings). A reference read out of a + // closed member is a member too. A local is not closed when it is passed + // to a call (which may store into its graph) or used as the receiver of + // a method that adds what this analysis does not see. + const { bindings, stores, open } = factsOf(fn); + const closed = new Set([...members].filter((id) => !open.has(id) && id !== thisId)); + const leaf = (u: Node): boolean => isExpr(u) && !refType(u.type); + const closedSource = (u: Node): boolean => { + if (u.kind === "libCall") return u.fn === "json.parse"; + if (u.kind === "dynCheck") return closedSource(u.value); + if (u.kind === "strIntrinsic") return u.method === "split"; + if ( + u.kind !== "arrayLit" && + u.kind !== "recordLit" && + u.kind !== "mapNew" && + u.kind !== "setNew" + ) + return false; + const kids: Node[] = []; + children(u, kids); + return kids.every((k) => !isExpr(k) || closedValue(k)); + }; + const closedValue = (v: Node): boolean => + leaves(v).every((u) => { + if (leaf(u) || closedSource(u)) return true; + const base = isExpr(u) ? projectionBase(u) : null; + return base !== null && closed.has(base); + }); + for (let again = true; again;) { + again = false; + for (const id of [...members]) { + const list = bindings.get(id) ?? []; + if (id === thisId) continue; + const ok = + list.length > 0 && + list.every((v) => + leaves(v).every((u) => { + if (memberSource(u) || leaf(u)) return true; + if (u.kind === "varRef") return members.has(u.localId); + const base = isExpr(u) ? projectionBase(u) : null; + return base !== null && closed.has(base); + }), + ); + if (!ok) { + members.delete(id); + closed.delete(id); + again = true; + } + } + for (const id of [...closed]) { + const ok = + members.has(id) && + (bindings.get(id) ?? []).every(closedValue) && + stores.every(([target, value]) => target !== id || closedValue(value)); + if (!ok) { + closed.delete(id); + again = true; + } + } + // A local bound to a reference read out of another shares its graph. + for (const [id, list] of bindings) + if (!closed.has(id)) + for (const v of list) + for (const u of leaves(v)) { + const base = isExpr(u) ? projectionBase(u) : null; + if (base !== null && base !== id && closed.delete(base)) again = true; + } + } + if (thisId !== null) members.add(thisId); + // Members that escape (other than by return or into a member's graph) + // are no longer members; repeat, since a store into a former member's + // graph now escapes too. + let esc = escapingLocals(fn, members); + for (let again = true; again;) { + again = false; + for (const id of esc) if (members.delete(id)) again = true; + if (again) esc = escapingLocals(fn, members); + } + // Every source must die, be returned, or go into a member's graph; a + // constructor's `this` must stay a member. + const inner = internal.get(fn.name)!; + fn.params.forEach((param, i) => { + if (inner.has(i) && esc.has(param.localId)) { + inner.delete(i); + internalChanged = true; + } + }); + let clean = thisId === null || members.has(thisId); + let returnsFresh = true; + const parents: Node[] = []; + const walk = (node: Node): void => { + if (!calleesClean(node)) clean = false; + if (source(node)) { + const info: UseInfo = {}; + const use = useOf(node, parents, false, info); + if (use === "bound") { + if (esc.has(info.bound!) || !fn.locals.some((l) => l.id === info.bound)) { + clean = false; + } + } else if (use === "stored") { + if (info.target === null || info.target === undefined || !members.has(info.target)) { + clean = false; + } + } else if (use === "escapes") { + clean = false; + } else if (use === "thrown") { + // A thrown value outlives the group, so it may hold no member and + // nothing allocated with it (a message string is fine). + const kids: Node[] = []; + children(node, kids); + for (const k of kids) + if ( + isExpr(k) && + refType(k.type) && + leaves(k).some((u) => { + if (source(u)) return true; + const base = isExpr(u) ? projectionBase(u) : null; + return base !== null && members.has(base); + }) + ) + clean = false; + } + } + if (node.kind === "return") { + const v = node.value; + if (v !== null && refType(v.type)) { + for (const u of leaves(v)) { + if (!(memberSource(u) || (u.kind === "varRef" && members.has(u.localId)))) + returnsFresh = false; + if (u.kind === "call" && !fresh.has(u.callee)) returnsFresh = false; + } + } + } + const kids: Node[] = []; + children(node, kids); + parents.push(node); + for (const kid of kids) walk(kid); + parents.pop(); + }; + for (const s of fn.body) walk(s); + current = null; + return { leakFree: clean, fresh: clean && returnsFresh }; + }; + solve(leakFree, referrers, (fn) => { + if (!leakFree.has(fn.name)) return false; + internalChanged = false; + const r = analyze(fn); + if (!r.leakFree) { + leakFree.delete(fn.name); + fresh.delete(fn.name); + internal.get(fn.name)!.clear(); + return true; + } + return (!r.fresh && fresh.delete(fn.name)) || internalChanged; + }); + + // With internal parameters known, a value passed to one stays in the + // frame while the call's result does: solve the deep summaries again. + solveDeep(); + // Functions that allocate, directly or through what they call. + const allocates = new Set(); + solve(directAlloc, callers, (fn) => { + if (allocates.has(fn.name)) return false; + allocates.add(fn.name); + return true; + }); + // Roots, and call regions: calls of leak-free functions that allocate and + // return no reference, so all they allocate is dead when they return. + const roots = new Set(); + const calls = new Set(); + /** Whether the operands of `node` (evaluated inside its group) are clean: + * every call in them is leak-free, no library call returns a reference + * (the runtime may keep it: `process.argv`'s cached array), and every value they + * allocate goes to `node` as an internal or borrowed argument, or into the + * value of another operand. */ + const operandsClean = (node: Node, parents: readonly Node[]): boolean => { + const stack: Node[] = [...parents, node]; + let ok = true; + const visit = (n: Node): void => { + if (!ok) return; + if (!same(n, node)) { + if (!calleesClean(n)) ok = false; + if (n.kind === "libCall" && n.fn !== "json.parse" && refType(n.type)) ok = false; + // `JSON.parse(text) as T`: the parse is the checked value itself. + const checked = node.kind === "dynCheck" && same(node.value, n); + if (source(n) && !checked) { + const info: UseInfo = {}; + const use = useOf(n, stack, false, info); + const at = info.at ?? -1; + if ( + !(use === "kept" || use === "content" || (use === "internal" && at >= parents.length)) + ) + ok = false; + } + } + const kids: Node[] = []; + children(n, kids); + const inner = !same(n, node); + if (inner) stack.push(n); + for (const k of kids) visit(k); + if (inner) stack.pop(); + }; + visit(node); + return ok; + }; + const drops = new Map(); + const rootLocals = new Map>(); + const rootFunction = new Map(); + framePass = true; + for (const fn of mod.functions) { + if (suspends(fn)) continue; + current = fn; + const classes = new Map(); + const esc = escapingLocals(fn, null, classes); + const own = new Set(fn.locals.map((l) => l.id)); + const paths = declarationPaths(fn); + /** The local of `bound`'s class whose scope holds every other one's, + * or undefined when no one does. */ + const classOf = (bound: string): string[] => { + const cls = classes.get(bound); + return fn.locals.filter((l) => classes.get(l.id) === cls).map((l) => l.id); + }; + const dropLocal = (bound: string): string | undefined => { + const members = classOf(bound); + const path = (id: string): readonly number[] => paths.get(id) ?? []; + return members.find((m) => + members.every((o) => { + const a = path(m); + const b = path(o); + return a.length <= b.length && a.every((x, i) => b[i] === x); + }), + ); + }; + const parents: Node[] = []; + const walk = (node: Node): void => { + const isRoot = + isExpr(node) && + ((node.kind === "call" && fresh.has(node.callee)) || + (node.kind === "new" && leakFree.has(`%${node.className}.constructor`)) || + ((node.kind === "libCall" || node.kind === "dynCheck" || node.kind === "strIntrinsic") && + source(node)) || + (node.kind === "arrIntrinsic" && source(node))); + const callbacksClean = + node.kind !== "call" || + [...(callbacks.get(node.callee) ?? new Set())].every((j) => + callbackClean(node.args[j]), + ); + const clean = + (isRoot || node.kind === "call") && callbacksClean && operandsClean(node, parents); + if ( + node.kind === "call" && + clean && + !refType(node.type) && + // A constructor (a `super(...)` call) stores into `this`, which its + // caller holds: it is leak-free only as part of a `new`. + !node.callee.endsWith(".constructor") && + leakFree.has(node.callee) && + allocates.has(node.callee) + ) { + calls.add(node); + rootFunction.set(node, fn); + } + if (isRoot && clean) { + const info: UseInfo = {}; + let use = useOf(node, parents, false, info); + if (use === "internal") use = resultUse(info.at!, parents, info); + rootFunction.set(node, fn); + if (use === "kept") { + roots.add(node); + drops.set(node, null); + rootLocals.set(node, new Set()); + } else if (use === "bound" && own.has(info.bound!) && !esc.has(info.bound!)) { + const local = dropLocal(info.bound!); + // An assignment in a loop would add a group per iteration to a + // list that is dropped only when the local's scope exits. + let binding = parents.length - 1; + while ( + binding >= 0 && + parents[binding]!.kind !== "varDecl" && + parents[binding]!.kind !== "assign" + ) + binding--; + const reassignedInLoop = + binding >= 0 && + parents[binding]!.kind === "assign" && + parents.slice(0, binding).some((p) => LOOP_KINDS.has(p.kind)); + if (local !== undefined && !reassignedInLoop) { + roots.add(node); + drops.set(node, local); + rootLocals.set(node, new Set(classOf(info.bound!))); + } + } + } + const kids: Node[] = []; + children(node, kids); + parents.push(node); + for (const kid of kids) walk(kid); + parents.pop(); + }; + for (const s of fn.body) walk(s); + } + current = null; + // Functions that run inside an arena: what roots and call regions call, + // and what those call, with the closures they pass. + const reachable = new Set(); + const queue: string[] = []; + const reach = (name: string): void => { + if (fns.has(name) && !reachable.has(name)) { + reachable.add(name); + queue.push(name); + } + }; + const callees = (node: Node): void => { + if (node.kind === "call") reach(node.callee); + else if (node.kind === "virtualCall") + for (const t of virtualTargetsOf(vt, node) ?? []) reach(t); + else if (node.kind === "new") reach(`%${node.className}.constructor`); + else if (node.kind === "closure") reach(node.fnName); + }; + const scanAll = (node: Node, visit: (n: Node) => void): void => { + visit(node); + const kids: Node[] = []; + children(node, kids); + for (const k of kids) scanAll(k, visit); + }; + for (const r of [...roots, ...calls]) scanAll(r, callees); + while (queue.length > 0) { + const fn = fns.get(queue.pop()!)!; + for (const st of fn.body) scanAll(st, callees); + } + const closed = new Set(); + return { + roots, + calls, + drops, + rootLocals, + rootFunction, + reachable, + closed, + fresh, + leakFree, + allocates, + }; +} + +/** For each local declared in `fn`, the statement lists that enclose its + * declaration, outermost first (the body included); a declaration inside an + * expression (a sequence's statements) is nested in the statement that + * holds it. Parameters and locals without a declaration have none: the + * function's own scope. A `for…of` variable counts as declared in the list + * holding the loop. */ +function declarationPaths(fn: IrFunction): Map { + const out = new Map(); + // Each statement list (and each expression holding one) gets an id. + let next = 0; + const walk = (list: readonly IrStmt[], path: readonly number[]): void => { + if (list.length === 0) return; + const here = [...path, next++]; + for (const stmt of list) { + if (stmt.kind === "varDecl" || stmt.kind === "forOf") out.set(stmt.localId, here); + for (const inner of stmtLists(stmt)) walk(inner, here); + // Statements inside the statement's expressions, one level deeper. + const visit = (e: IrExpr): boolean => { + if (e.kind === "seqExpr") walk(e.stmts, [...here, next++]); + everyExprChild(e, visit, () => true); + return true; + }; + everyStmtChild(stmt, visit, () => true); + } + }; + walk(fn.body, []); + return out; +} + +/** The statement lists directly inside `stmt`. */ +function stmtLists(stmt: IrStmt): readonly (readonly IrStmt[])[] { + switch (stmt.kind) { + case "if": + return stmt.else_ === null ? [stmt.then] : [stmt.then, stmt.else_]; + case "while": + case "doWhile": + case "for": + case "forOf": + case "block": + return [stmt.body]; + case "switch": + return stmt.cases.map((c) => c.body); + case "tryCatch": + return [stmt.tryBody, stmt.catchBody ?? [], stmt.finallyBody ?? []]; + default: + return []; + } +} + +/** + * The roots and call regions whose groups are closed: every reference an + * arena object of the group holds is to an arena object of the group or an + * immortal value, so dropping the arena releases nothing. + * + * `arenaType(t)` says whether a value of type `t` is a plain reference to + * an object the arena-aware constructors allocate (no box around it). + * + * A function is closed when every reference it stores (into a field, an + * element, a collection, or the content of a new object) is closed: + * - a value without references, an immortal literal, or null/undefined; + * - an object of an arena type it allocates, or the result of a call of a + * closed function whose results are closed; + * - a local bound only to closed values, or a reference of an arena type + * read out of one; + * - a constructor's `this`; + * - a parameter, or a reference read out of one: its callers must pass a + * closed value (the function's stored parameters). + * Every function it calls must be closed and get closed values for their + * stored parameters. A root's group is then closed when its callee is, + * its arguments for stored parameters are closed in its caller, and the + * caller stores only closed values into the root's graph afterwards (there, + * only values without references, literals, and references read out of the + * root's own locals are closed: the caller's own allocations are on the + * heap). Solved optimistically to a fixpoint. + */ +export function analyzeClosedGroups( + mod: IrModule, + groups: RegionGroups, + arenaType: (t: IrType) => boolean, + /** Whether an allocation or call site's objects take the arena. */ + kept: (e: Node) => boolean = () => true, +): Set { + const fns = new Map(); + for (const fn of mod.functions) fns.set(fn.name, fn); + const vt = new VirtualTargets(mod.classes ?? []); + const closedFn = new Set([...groups.reachable].filter((f) => groups.leakFree.has(f))); + const closedFresh = new Set([...closedFn].filter((f) => groups.fresh.has(f))); + const stored = new Map>(); + const storedOf = (name: string): Set => stored.get(name) ?? new Set(); + const leavesOf = (e: IrExpr, out: IrExpr[] = []): IrExpr[] => { + let at = e; + for (let i = 0; i < 16; i++) + if ( + at.kind === "unionWrap" || + at.kind === "upcast" || + at.kind === "downcast" || + at.kind === "unionRetype" + ) + at = at.value; + else break; + if (at.kind === "ternary") { + if (!throws(at.then)) leavesOf(at.then, out); + if (!throws(at.else_)) leavesOf(at.else_, out); + } else out.push(at); + return out; + }; + // Functions that return only references read out of one parameter (or + // null/undefined), such as the checked element read `%arr.idxOr`: a call + // of one reads out of that argument. + const projects = new Map(); + for (const fn of mod.functions) { + const assigned = new Set(); + let index: number | null = null; + let ok = true; + const visit = (node: Node): void => { + if (!ok) return; + if (node.kind === "assign") assigned.add(node.localId); + if (node.kind === "return") { + const v = node.value; + if (v === null) ok = false; + else + for (const u of leavesOf(v)) { + if (u.kind === "unitLit") continue; + const base = projectionBase(u); + const i = base === null ? -1 : fn.params.findIndex((p) => p.localId === base); + if (i < 0 || (index !== null && index !== i)) ok = false; + else index = i; + } + } + const kids: Node[] = []; + children(node, kids); + for (const k of kids) visit(k); + }; + if (!refType(fn.returnType)) continue; + for (const st of fn.body) visit(st); + if (ok && index !== null && !assigned.has(fn.params[index]!.localId)) + projects.set(fn.name, index); + } + const through = (call: IrExpr): IrExpr | null => { + if (call.kind !== "call") return null; + const i = projects.get(call.callee); + return i === undefined ? null : (call.args[i] ?? null); + }; + /** Whether `e` (in `fn`, `own` its closed locals, `inArena` whether its + * allocations are arena objects) is a closed value; parameters it reads + * go into `params`. */ + const closedValue = ( + e: Node, + fn: IrFunction, + own: ReadonlySet, + inArena: boolean, + params: Set, + ): boolean => { + if (!isExpr(e)) return false; + const t = e.type; + if (t.kind === "string") return e.kind === "strLit"; + // Any other counted value (a typed array, a promise) is a heap object. + if (!refType(t) && !isRefCounted(t)) return true; + if (!arenaType(t)) return false; + return leavesOf(e).every((u) => { + if (u.kind === "unitLit") return true; + if (u.kind === "recordLit" || u.kind === "new" || u.kind === "arrayLit") + return inArena && arenaType(u.type) && kept(u); + if (u.kind === "call" && !projects.has(u.callee)) + return inArena && closedFresh.has(u.callee) && arenaType(u.type) && kept(u); + const base = projectionBase(u, through); + if (base === null) return false; + const i = fn.params.findIndex((p) => p.localId === base); + if (i >= 0) { + if (i === 0 && fn.name.endsWith(".constructor") && u.kind === "varRef") return true; + params.add(i); + return arenaType(u.type); + } + return own.has(base) && arenaType(u.type); + }); + }; + /** Every reference store and content position in `fn`'s body, and every + * call with the arguments its callee stores. */ + const siteMemo = new Map(); + const sites = (fn: IrFunction): { value: Node; target: string | null }[] => { + const memo = siteMemo.get(fn.name); + if (memo !== undefined) return memo; + const out: { value: Node; target: string | null }[] = []; + siteMemo.set(fn.name, out); + const walk = (node: Node, parent: Node | undefined): void => { + if (parent !== undefined && isExpr(node)) { + const target = storeOf(node, parent); + if (target !== undefined) out.push({ value: node, target: storeTarget(target) }); + else if (contentOf(node, parent) && parent.kind !== "new") + out.push({ value: node, target: null }); + } + const kids: Node[] = []; + children(node, kids); + for (const k of kids) walk(k, node); + }; + for (const st of fn.body) walk(st, undefined); + return out; + }; + const bindingMemo = new Map>(); + const bindingsOf = (fn: IrFunction): Map => { + const memo = bindingMemo.get(fn.name); + if (memo !== undefined) return memo; + const out = new Map(); + bindingMemo.set(fn.name, out); + const scan = (node: Node): void => { + if (node.kind === "varDecl" || node.kind === "assign") { + const v = node.kind === "varDecl" ? node.init : node.value; + if (v !== null) out.set(node.localId, [...(out.get(node.localId) ?? []), v]); + } + // A loop variable holds elements read out of the iterable. + if (node.kind === "forOf") + out.set(node.localId, [...(out.get(node.localId) ?? []), node.iterable]); + const kids: Node[] = []; + children(node, kids); + for (const k of kids) scan(k); + }; + for (const st of fn.body) scan(st); + return out; + }; + // Written parameters: those whose graph a function may store into, itself + // or through what it calls (any function, not only arena-aware ones). + const writes = new Map>(); + /** The parameter whose graph `local` reaches into, through bindings to + * references read out of it, or -1. */ + const paramOf = (fn: IrFunction, bindings: Map, local: string): number => { + let at = local; + for (let i = 0; i < 16; i++) { + const p = fn.params.findIndex((q) => q.localId === at); + if (p >= 0) return p; + const list = bindings.get(at); + if (list === undefined || list.length !== 1) return -1; + const base = projectionBase(list[0]!); + if (base === null || base === at) return -1; + at = base; + } + return -1; + }; + // Each function's own writes, and the parameters it passes to calls: a + // parameter passed where the callee writes is written too. + const passed = new Map< + string, + { param: number; callees: readonly string[] | null; index: number }[] + >(); + const writers = new Map>(); + // Only what the functions holding roots call, transitively, is asked. + const asked = new Set(); + { + const queue = [ + ...new Set( + [...groups.roots, ...groups.calls].flatMap((r) => groups.rootFunction.get(r)?.name ?? []), + ), + ]; + for (const name of queue) asked.add(name); + while (queue.length > 0) { + const fn = fns.get(queue.pop()!); + if (fn === undefined) continue; + const visit = (n: Node): void => { + const targets = + n.kind === "call" + ? [n.callee] + : n.kind === "virtualCall" + ? (virtualTargetsOf(vt, n) ?? []) + : []; + for (const t of targets) + if (fns.has(t) && !asked.has(t)) { + asked.add(t); + queue.push(t); + } + const kids: Node[] = []; + children(n, kids); + for (const k of kids) visit(k); + }; + for (const st of fn.body) visit(st); + } + } + for (const fn of mod.functions) { + if (!asked.has(fn.name)) continue; + const bindings = bindingsOf(fn); + const set = new Set(); + for (const { target } of sites(fn)) + if (target !== null) { + const i = paramOf(fn, bindings, target); + if (i >= 0) set.add(i); + } + const list: { param: number; callees: readonly string[] | null; index: number }[] = []; + const visit = (n: Node): void => { + const args = argsOf(n); + if (args !== null) { + const callees = + n.kind === "call" + ? [n.callee] + : n.kind === "virtualCall" + ? (virtualTargetsOf(vt, n) ?? []) + : null; + args.forEach((a, j) => { + const base = projectionBase(a); + const i = base === null ? -1 : paramOf(fn, bindings, base); + if (i < 0) return; + if (callees === null || callees.length === 0 || callees.some((c) => !fns.has(c))) + set.add(i); + else { + list.push({ param: i, callees, index: j }); + for (const c of callees) { + let w = writers.get(c); + if (w === undefined) writers.set(c, (w = new Set())); + w.add(fn.name); + } + } + }); + } + const kids: Node[] = []; + children(n, kids); + for (const k of kids) visit(k); + }; + for (const st of fn.body) visit(st); + writes.set(fn.name, set); + passed.set(fn.name, list); + } + { + const queue = [...asked]; + const queued = new Set(queue); + while (queue.length > 0) { + const name = queue.pop()!; + queued.delete(name); + const set = writes.get(name)!; + const before = set.size; + for (const { param, callees, index } of passed.get(name)!) + if (callees!.some((c) => writes.get(c)?.has(index) === true)) set.add(param); + if (set.size !== before) + for (const r of writers.get(name) ?? new Set()) + if (!queued.has(r)) { + queued.add(r); + queue.push(r); + } + } + } + /** The locals of `fn` bound only to closed values. */ + const closedLocals = ( + fn: IrFunction, + inArena: boolean, + seed?: ReadonlySet, + ): Set => { + const bindings = bindingsOf(fn); + const own = new Set( + fn.locals + .filter((l) => l.boxed !== true && !fn.params.some((p) => p.localId === l.id)) + .map((l) => l.id), + ); + for (const id of seed ?? new Set()) own.add(id); + for (let again = true; again;) { + again = false; + for (const id of [...own]) { + if (seed?.has(id) === true) continue; + const list = bindings.get(id) ?? []; + if (!list.every((v) => closedValue(v, fn, own, inArena, new Set()))) { + own.delete(id); + again = true; + } + } + } + return own; + }; + /** Whether the calls in `node`'s subtree are of closed functions with + * closed arguments for their stored parameters. */ + const callsClosed = ( + node: Node, + fn: IrFunction, + own: ReadonlySet, + inArena: boolean, + params: Set, + ): boolean => { + let ok = true; + const visit = (n: Node): void => { + if (!ok) return; + if (n.kind === "call" || n.kind === "new" || n.kind === "virtualCall") { + const targets = + n.kind === "call" + ? [n.callee] + : n.kind === "new" + ? [`%${n.className}.constructor`] + : (virtualTargetsOf(vt, n) ?? []); + if (targets.length === 0) ok = false; + const shift = n.kind === "new" ? 1 : 0; + for (const t of targets) { + if (!closedFn.has(t)) ok = false; + for (const j of storedOf(t)) { + const arg = n.args[j - shift]; + if (arg !== undefined && !closedValue(arg, fn, own, inArena, params)) ok = false; + } + } + } else if (n.kind === "callValue" || n.kind === "dynCall" || n.kind === "dynInvoke") + ok = false; + else if ( + (n.kind === "arrIntrinsic" || n.kind === "mapIntrinsic" || n.kind === "setIntrinsic") && + !READ_RECEIVER.has(n.method) && + !ADDING_METHODS.has(n.method) && + n.args.some((a) => refType(a.type) || isRefCounted(a.type)) + ) + ok = false; + const kids: Node[] = []; + children(n, kids); + for (const k of kids) visit(k); + }; + visit(node); + return ok; + }; + for (let changed = true; changed;) { + changed = false; + for (const name of [...closedFn]) { + const fn = fns.get(name)!; + const params = new Set(); + const own = closedLocals(fn, true); + let ok = sites(fn).every(({ value }) => closedValue(value, fn, own, true, params)); + for (const st of fn.body) if (ok) ok = callsClosed(st, fn, own, true, params); + let returnsClosed = true; + const scanReturns = (node: Node): void => { + if (node.kind === "return") { + const v = node.value; + if (v !== null && !closedValue(v, fn, own, true, params)) returnsClosed = false; + } + const kids: Node[] = []; + children(node, kids); + for (const k of kids) scanReturns(k); + }; + for (const st of fn.body) scanReturns(st); + const before = storedOf(name); + if ([...params].some((i) => !before.has(i))) { + stored.set(name, new Set([...before, ...params])); + changed = true; + } + if (!ok) { + closedFn.delete(name); + closedFresh.delete(name); + changed = true; + } else if (!returnsClosed && closedFresh.delete(name)) changed = true; + } + } + const out = new Set(); + for (const root of [...groups.roots, ...groups.calls]) { + const fn = groups.rootFunction.get(root); + if (fn === undefined) continue; + const locals = groups.rootLocals.get(root) ?? new Set(); + const bindings = bindingsOf(fn); + /** Whether `local` reaches into the root's graph: one of its locals, + * or bound (a loop variable included) to a reference read out of one. */ + const intoRoot = (local: string, depth = 0): boolean => + locals.has(local) || + (depth < 16 && + (bindings.get(local) ?? []).some((v) => { + const base = projectionBase(v); + return base !== null && base !== local && intoRoot(base, depth + 1); + })); + // In the caller only the root's own locals and what is read out of them + // are closed references. + const params = new Set(); + let ok = callsClosed(root, fn, locals, false, params) && params.size === 0; + // After the arena closes, a call that is passed the root's value (or a + // reference read out of it) must not write into it. + const passes = (n: Node, parent: Node | undefined): void => { + if (!ok) return; + if (parent !== undefined && isExpr(n)) { + const args = argsOf(parent); + const j = args === null ? -1 : indexOfNode(args, n); + const base = projectionBase(n); + if (j >= 0 && refType(n.type) && (same(n, root) || (base !== null && intoRoot(base)))) { + const callees = + parent.kind === "call" + ? [parent.callee] + : parent.kind === "virtualCall" + ? (virtualTargetsOf(vt, parent) ?? []) + : []; + if (callees.length === 0 || callees.some((c) => writes.get(c)?.has(j) !== false)) + ok = false; + } + } + const kids: Node[] = []; + children(n, kids); + for (const k of kids) passes(k, n); + }; + if (ok && !groups.calls.has(root)) for (const st of fn.body) passes(st, undefined); + if (ok && locals.size > 0) + ok = sites(fn).every( + ({ value, target }) => + target === null || + !intoRoot(target) || + (closedValue(value, fn, locals, false, params) && params.size === 0), + ); + if (ok) out.add(root); + } + return out; +} diff --git a/packages/compiler/src/backend/llvm/region-ir.ts b/packages/compiler/src/backend/llvm/region-ir.ts new file mode 100644 index 000000000..405558f06 --- /dev/null +++ b/packages/compiler/src/backend/llvm/region-ir.ts @@ -0,0 +1,271 @@ +/* IR helpers shared by the region analyses (region-groups.ts): node + * traversal, allocation kinds, and how a use of a value passes it on or + * keeps it in the frame. */ +import type { IrExpr, IrStmt, IrType } from "../../ir/ir.js"; +import { everyExprChild, everyStmtChild } from "../../ir/traverse.js"; + +export type Node = IrExpr | IrStmt; + +/** The kinds of heap allocation sites counted. */ +export const ALLOCATIONS = new Set([ + "arrayLit", + "arrayNewLen", + "mapNew", + "setNew", + "new", + "recordLit", + "recordClone", + "closure", +]); + +/** Array methods that return a fresh array without keeping the receiver. */ +export const FRESH_ARRAY_METHODS = new Set([ + "slice", + "concatSpread", + "toReversed", + "toSpliced", + "with", + "withUndefined", + "flatCopy", + "flatOne", + "toSortedPrimitive", + "splice", +]); +/** Array methods that return the receiver itself. */ +export const RECEIVER_RESULT = new Set([ + "reverse", + "fill", + "fillUndefined", + "copyWithin", + "sortPrimitive", +]); +/** Array methods whose arguments are only read (compared, copied from). */ +export const READ_ARGS = new Set([ + "includes", + "indexOf", + "indexEq", + "getNumber", + "join", + "slice", + "concatSpread", + "pushSpread", + "unshiftSpread", + "nextPresent", + "length", +]); + +export function refType(t: IrType): boolean { + return ( + t.kind === "array" || + t.kind === "map" || + t.kind === "set" || + t.kind === "object" || + t.kind === "record" || + t.kind === "func" || + t.kind === "union" + ); +} + +export function children(node: Node, out: Node[]): void { + const push = (child: Node): boolean => { + out.push(child); + return true; + }; + if ("type" in node && (node as IrExpr).type !== undefined && isExpr(node)) + everyExprChild(node as IrExpr, push, push); + else everyStmtChild(node as IrStmt, push, push); +} + +const STMT_KINDS = new Set([ + "varDecl", + "assign", + "exprStmt", + "if", + "while", + "doWhile", + "switch", + "for", + "arraySet", + "arraySetLength", + "arraySetUndefined", + "arrayDelete", + "bytesSet", + "forOf", + "return", + "fieldSet", + "recordSet", + "recordKeySet", + "recordKeyDelete", + "break", + "continue", + "block", + "throw", + "runtimeFence", + "rethrow", + "tryCatch", +]); +export function isExpr(node: Node): node is IrExpr { + return !STMT_KINDS.has(node.kind); +} + +/** Whether `a` and `b` are the same node. */ +export function same(a: Node | undefined, b: Node): boolean { + return a !== undefined && a === b; +} + +/** Whether `parent` passes `child`'s value on as its own value (a branch of + * a conditional, a union wrap or narrow, a class up- or downcast, the + * result of a sequence), so the value's fate is the parent's. */ +export function transparent(child: Node, parent: Node | undefined): boolean { + if (parent === undefined) return false; + switch (parent.kind) { + case "ternary": + return same(parent.then, child) || same(parent.else_, child); + case "nullish": + case "logical": + return true; + case "seqExpr": + return same(parent.result, child); + case "unionWrap": + case "unionRetype": + case "unionNarrow": + case "upcast": + case "downcast": + return same(parent.value, child); + default: + return false; + } +} + +/** Whether a use of a local's value as `child` of `parent` keeps it in the + * frame (given the current parameter summaries). */ +export function keepsInFrame( + child: Node, + parent: Node | undefined, + summaries: ReadonlyMap>, +): boolean { + if (parent === undefined) return false; + switch (parent.kind) { + case "exprStmt": + return true; + case "arrayGet": + case "arrayHas": + case "arrayState": + case "arraySetUndefined": + case "arrayDelete": + case "arraySetLength": + case "arraySet": + return same(parent.arr, child); + case "fieldGet": + case "recordGet": + case "recordKeyGet": + case "recordHas": + case "recordOvfHas": + case "recordOvfKeys": + case "fieldSet": + case "recordSet": + case "recordKeySet": + case "recordKeyDelete": + return same(parent.obj, child); + case "forOf": + return same(parent.iterable, child); + case "arrIntrinsic": + if (same(parent.receiver, child)) return !RECEIVER_RESULT.has(parent.method); + return READ_ARGS.has(parent.method); + case "mapIntrinsic": + if (same(parent.receiver, child)) return true; + return parent.method === "get" || parent.method === "has" || parent.method === "delete"; + case "setIntrinsic": + if (same(parent.receiver, child)) return true; + return parent.method === "has" || parent.method === "delete"; + case "bin": + return parent.op === "===" || parent.op === "!=="; + case "toBool": + case "unary": + case "unionIsTag": + case "unionEq": + return true; + case "unionDisc": + case "unionKeyGet": + return same(parent.value, child); + case "callValue": + return same(parent.callee, child); + case "call": { + const index = indexOfNode(parent.args, child); + return index >= 0 && summaries.get(parent.callee)?.has(index) === true; + } + default: + return false; + } +} + +/** The index of `node` in `list`, or -1. */ +export function indexOfNode(list: readonly IrExpr[], node: Node): number { + for (let i = 0; i < list.length; i++) if (same(list[i], node)) return i; + return -1; +} + +/** The arguments of a node that takes them (calls, constructions, + * intrinsics), or null. */ +export function argsOf(node: Node): readonly IrExpr[] | null { + switch (node.kind) { + case "call": + case "callValue": + case "virtualCall": + case "new": + case "newValue": + case "ffiCall": + case "dynCall": + case "dynInvoke": + case "intrinsic": + case "libCall": + case "arrIntrinsic": + case "bytesIntrinsic": + case "mapIntrinsic": + case "setIntrinsic": + case "strIntrinsic": + case "regexIntrinsic": + return node.args; + default: + return null; + } +} + +const LOOP_STMTS = new Set(["while", "doWhile", "for", "forOf"]); + +/** Calls `visit(node, parent, loops)` for every node of `body`, parents + * before their children (siblings in no set order), where `loops` counts + * the loops around `node`. Allocates nothing per node. */ +export function forEachNode( + body: readonly IrStmt[], + visit: (node: Node, parent: Node | undefined, loops: number) => void, +): void { + const nodes: Node[] = []; + const parents: (Node | undefined)[] = []; + const depths: number[] = []; + let parent: Node | undefined = undefined; + let depth = 0; + const pushExpr = (child: IrExpr): boolean => { + nodes.push(child); + parents.push(parent); + depths.push(depth); + return true; + }; + const pushStmt = (child: IrStmt): boolean => { + nodes.push(child); + parents.push(parent); + depths.push(depth); + return true; + }; + for (const st of body) pushStmt(st); + while (nodes.length > 0) { + const node = nodes.pop()!; + const above = parents.pop(); + const loops = depths.pop()!; + visit(node, above, loops); + parent = node; + depth = loops + (LOOP_STMTS.has(node.kind) ? 1 : 0); + if (isExpr(node)) everyExprChild(node, pushExpr, pushStmt); + else everyStmtChild(node, pushExpr, pushStmt); + } +} diff --git a/packages/compiler/src/backend/llvm/region-sites.test.ts b/packages/compiler/src/backend/llvm/region-sites.test.ts new file mode 100644 index 000000000..97fa94577 --- /dev/null +++ b/packages/compiler/src/backend/llvm/region-sites.test.ts @@ -0,0 +1,223 @@ +import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; +import { expect, test } from "vitest"; +import { compile, deserializeModule } from "../../index.js"; +import type { IrExpr, IrModule } from "../../ir/ir.js"; +import { analyzeRegionGroups } from "./region-groups.js"; +import { children, type Node } from "./region-ir.js"; +import { planRegionSites } from "./region-sites.js"; + +async function moduleFor(source: string): Promise { + const dir = await mkdtemp(join(tmpdir(), "scriptc-region-sites-")); + try { + const entry = join(dir, "main.ts"), + output = join(dir, "main.ir.json"); + await writeFile(entry, source); + const result = await compile(entry, { outDir: dir, outPath: output, outputKind: "ir" }); + if (!result.ok) + throw new Error(result.diagnostics.map((item) => `${item.code}: ${item.message}`).join("\n")); + return deserializeModule(await readFile(output, "utf8")); + } finally { + await rm(dir, { recursive: true, force: true }); + } +} + +/** The nodes in function `fn` matching `pick`, in order. */ +function nodesIn(mod: IrModule, fn: string, pick: (e: IrExpr) => boolean): IrExpr[] { + const out: IrExpr[] = []; + const visit = (node: Node): void => { + if (pick(node as IrExpr)) out.push(node as IrExpr); + const kids: Node[] = []; + children(node, kids); + for (const k of kids) visit(k); + }; + for (const s of mod.functions.find((f) => f.name === fn)!.body) visit(s); + return out; +} + +const calls = (callee: string) => (e: IrExpr) => e.kind === "call" && e.callee === callee; +const records = (e: IrExpr) => e.kind === "recordLit"; + +function plan(mod: IrModule) { + const groups = analyzeRegionGroups(mod); + const sites = planRegionSites(mod, groups); + return { groups, sites }; +} + +const TREE = ` +class Node { + left: Node | null; + right: Node | null; + constructor(left: Node | null, right: Node | null) { + this.left = left; + this.right = right; + } + count(): number { + return 1 + (this.left === null ? 0 : this.left.count()) + (this.right === null ? 0 : this.right.count()); + } +} +function tree(depth: number): Node { + return depth === 0 ? new Node(null, null) : new Node(tree(depth - 1), tree(depth - 1)); +} +`; + +test("a recursive builder's root takes an arena for every node", async () => { + const mod = await moduleFor(`${TREE} +let total = 0; +for (let d = 0; d < 4; d++) total += tree(d).count(); +console.log(total); +`); + const { groups, sites } = plan(mod); + const roots = nodesIn(mod, "%init.0", calls("tree")).filter((c) => groups.roots.has(c)); + expect(roots.length).toBe(1); + for (const n of nodesIn(mod, "tree", (e) => e.kind === "new")) + expect(sites.arenaSites.has(n)).toBe(true); + for (const c of nodesIn(mod, "tree", calls("tree"))) expect(sites.arenaSites.has(c)).toBe(true); +}); + +test("a builder of a bounded number of objects is no root", async () => { + const mod = await moduleFor(` +interface V { x: number; y: number } +function add(a: V, b: V): V { + return { x: a.x + b.x, y: a.y + b.y }; +} +let at: V = { x: 0, y: 0 }; +let sum = 0; +for (let i = 0; i < 10; i++) { + const step = add(at, { x: i, y: 1 }); + sum += step.x; +} +console.log(sum, at.y); +`); + const { groups } = plan(mod); + expect(groups.roots.size).toBe(0); + expect(groups.calls.size).toBe(0); + expect(groups.reachable.size).toBe(0); +}); + +test("a list a builder appends to in a loop takes the arena", async () => { + const mod = await moduleFor(` +interface Row { id: number; score: number } +function rows(n: number): Row[] { + const out: Row[] = []; + for (let i = 0; i < n; i++) { + const row: Row = { id: i, score: i * 2 }; + out.push(row); + } + return out; +} +let total = 0; +for (let k = 0; k < 3; k++) total += rows(10 + k).length; +console.log(total); +`); + const { groups, sites } = plan(mod); + expect(nodesIn(mod, "%init.0", calls("rows")).some((c) => groups.roots.has(c))).toBe(true); + const [row] = nodesIn(mod, "rows", records); + expect(sites.arenaSites.has(row!)).toBe(true); + const [out] = nodesIn(mod, "rows", (e) => e.kind === "arrayLit"); + expect(sites.arenaSites.has(out!)).toBe(true); +}); + +test("values that replace elements or die in the loop take the heap", async () => { + const mod = await moduleFor(` +interface V { x: number; y: number } +function vec(x: number, y: number): V { + return { x, y }; +} +function add(a: V, b: V): V { + return { x: a.x + b.x, y: a.y + b.y }; +} +function simulate(n: number, steps: number): number { + const points: V[] = []; + for (let i = 0; i < n; i++) points.push(vec(i, i)); + for (let s = 0; s < steps; s++) + for (let i = 0; i < n; i++) points[i] = add(points[i]!, vec(0, 1)); + let sum = 0; + for (const p of points) sum += p.x + p.y; + return sum; +} +console.log(simulate(100, 10)); +`); + const { groups, sites } = plan(mod); + // The list's elements are replaced, so it keeps nothing: no group grows. + expect(groups.calls.size).toBe(0); + expect(groups.roots.size).toBe(0); + expect(sites.arenaSites.size).toBe(0); +}); + +test("a value reassigned in a loop and returned takes the heap", async () => { + const mod = await moduleFor(` +class C { + re: number; + im: number; + constructor(re: number, im: number) { + this.re = re; + this.im = im; + } + times(o: C): C { + return new C(this.re * o.re - this.im * o.im, this.re * o.im + this.im * o.re); + } +} +function power(c: C, n: number): C { + let z = new C(1, 0); + for (let i = 0; i < n; i++) z = z.times(c); + return z; +} +let s = 0; +for (let k = 0; k < 5; k++) s += power(new C(0.5, 0.5), k).re; +console.log(s); +`); + const { groups } = plan(mod); + expect(nodesIn(mod, "%init.0", calls("power")).some((c) => groups.roots.has(c))).toBe(false); +}); + +test("calls in an arena-aware function whose values die take the heap", async () => { + const mod = await moduleFor(` +interface P { x: number; next: P | null } +function weight(p: P): number { + return p.x * 2; +} +function probe(x: number): P { + return { x, next: null }; +} +function chain(n: number): P { + let head: P = { x: 0, next: null }; + const first = head; + for (let i = 1; i < n; i++) { + const node: P = { x: weight(probe(i)), next: null }; + head.next = node; + head = node; + } + return first; +} +let total = 0; +for (let k = 0; k < 3; k++) total += chain(5).x; +console.log(total); +`); + const { groups, sites } = plan(mod); + expect(nodesIn(mod, "%init.0", calls("chain")).some((c) => groups.roots.has(c))).toBe(true); + const [probe] = nodesIn(mod, "chain", calls("probe")); + expect(sites.arenaSites.has(probe!)).toBe(false); + expect(sites.heapCalls.has(probe!)).toBe(true); + for (const node of nodesIn(mod, "chain", records)) expect(sites.arenaSites.has(node)).toBe(true); +}); + +test("a root assigned in a loop to a local declared outside it is no root", async () => { + const mod = await moduleFor(`${TREE} +function run(n: number): number { + let t = tree(1); + let total = t.count(); + for (let d = 0; d < n; d++) { + t = tree(d); + total += t.count(); + } + return total; +} +console.log(run(6)); +`); + const { groups } = plan(mod); + const [first, inLoop] = nodesIn(mod, "run", calls("tree")); + expect(groups.roots.has(first!)).toBe(true); + expect(groups.roots.has(inLoop!)).toBe(false); +}); diff --git a/packages/compiler/src/backend/llvm/region-sites.ts b/packages/compiler/src/backend/llvm/region-sites.ts new file mode 100644 index 000000000..95167524b --- /dev/null +++ b/packages/compiler/src/backend/llvm/region-sites.ts @@ -0,0 +1,349 @@ +/* Which allocations of a region group take its arena (arenas.ts), and + * which roots and call regions are worth one. + * + * An arena pays off for objects that live until the group is dropped: it + * saves their frees and teardown, but holds their memory until the drop. + * A temporary that dies early is cheaper on the heap, which reuses its + * memory at once. So in an arena-aware function an allocation takes the + * arena only when its value is kept by the group (its fate is the arena): + * - it is returned; + * - it is content of a new value that is kept; + * - it is stored, other than by an element write, into the graph of a + * local that is kept (`out.push(row)`, `last.next = member`); + * - it is bound to a local that is kept. + * A local is kept when its value is returned or stored or put into + * something kept; a constructor's `this` is kept (its object follows its + * `new`); and in the callee of a call region, a local declared at the top + * of the body lives until the region drops. An element write (`a[i] = v`) + * usually replaces a value, so its value takes the heap. + * + * Every other allocation takes the heap, and so does everything a call + * allocates when the call's value is not kept: the emitter suspends the + * arena around such a call (heapCalls). Heap objects are always safe in a + * group; only arena objects need the group's proof. + * + * A root or call region is worth an arena when its group grows: a kept + * allocation runs in a loop, or a kept value comes from a recursive call + * or from a call of a function whose group grows. Other groups are small, + * and opening and dropping their arenas costs more than their frees. */ +import type { IrFunction, IrModule } from "../../ir/ir.js"; +import { contentOf, source, storeOf, storeTarget, type RegionGroups } from "./region-groups.js"; +import { + argsOf, + children, + indexOfNode, + isExpr, + refType, + same, + transparent, + type Node, +} from "./region-ir.js"; +import { VirtualTargets } from "./reference-effects.js"; + +export interface RegionSites { + /** Allocation sites (and calls) whose value the group keeps. */ + arenaSites: Set; + /** Calls, constructions and closure calls in arena-aware functions whose + * value the group does not keep and whose callee may allocate: the + * arena is suspended while they run. */ + heapCalls: Set; +} + +const LOOPS = new Set(["while", "doWhile", "for", "forOf"]); + +/** Collection methods that remove what their receiver holds. */ +const REMOVALS = new Set(["pop", "shift", "splice", "delete", "clear"]); + +/** The local whose graph `node` drops values from (an element write, a + * length write, a delete, a removing method), or null. */ +function removalTarget(node: Node): string | null { + switch (node.kind) { + case "arraySet": + case "arraySetLength": + case "arraySetUndefined": + case "arrayDelete": + return storeTarget(node.arr); + case "recordKeyDelete": + return storeTarget(node.obj); + case "arrIntrinsic": + case "mapIntrinsic": + case "setIntrinsic": + return REMOVALS.has(node.method) ? storeTarget(node.receiver) : null; + default: + return null; + } +} + +/** The functions a call-like node may run, or null when unknown. */ +function targetsOf(vt: VirtualTargets, node: Node): readonly string[] | null { + if (node.kind === "call") return [node.callee]; + if (node.kind === "new") return [`%${node.className}.constructor`]; + if (node.kind === "virtualCall") { + const t = vt.targets(node.className, node.method); + return t !== null && t.length > 0 ? t : null; + } + return null; +} + +const callLike = (node: Node): boolean => + node.kind === "call" || + node.kind === "new" || + node.kind === "virtualCall" || + node.kind === "callValue" || + node.kind === "newValue"; + +/** The functions that run inside the arenas of `roots`: what they call, + * transitively, with the closures they pass. */ +export function reachableFrom(mod: IrModule, roots: Iterable): Set { + const fns = new Map(mod.functions.map((f) => [f.name, f])); + const vt = new VirtualTargets(mod.classes ?? []); + const reachable = new Set(); + const queue: string[] = []; + const visit = (node: Node): void => { + const reach = (name: string): void => { + if (fns.has(name) && !reachable.has(name)) { + reachable.add(name); + queue.push(name); + } + }; + if (node.kind === "closure") reach(node.fnName); + else for (const t of targetsOf(vt, node) ?? []) reach(t); + const kids: Node[] = []; + children(node, kids); + for (const k of kids) visit(k); + }; + for (const r of roots) visit(r); + while (queue.length > 0) for (const st of fns.get(queue.pop()!)!.body) visit(st); + return reachable; +} + +interface FnSites { + /** Kept call-like nodes and allocations, with whether each is in a loop. */ + kept: Map; + /** Call-like nodes whose value is not kept. */ + dropped: Node[]; +} + +/** Classifies the allocations and calls of `fn`. */ +function classify(fn: IrFunction, topLocalsKept: boolean): FnSites { + const locals = new Set(fn.locals.map((l) => l.id)); + // Alias classes: a local bound to another local shares its fate. + const parent = new Map(); + const find = (id: string): string => { + let r = id; + while (parent.has(r)) r = parent.get(r)!; + return r; + }; + const unite = (a: string, b: string): void => { + const ra = find(a), + rb = find(b); + if (ra !== rb) parent.set(ra, rb); + }; + const kept = new Set(); + const keep = (id: string): boolean => { + const r = find(id); + if (kept.has(r)) return false; + kept.add(r); + return true; + }; + const isKept = (id: string): boolean => kept.has(find(id)); + // Kept from the start (applied once the alias classes are known). + const seeds: string[] = []; + if (fn.name.endsWith(".constructor") && fn.params.length > 0) seeds.push(fn.params[0]!.localId); + if (topLocalsKept) { + const types = new Map(fn.locals.map((l) => [l.id, l.type])); + for (const st of fn.body) + if (st.kind === "varDecl" && refType(types.get(st.localId) ?? { kind: "void" })) + seeds.push(st.localId); + } + + // Uses of locals and of value-producing nodes, recorded once. + type Fate = + | { kind: "kept" } + | { kind: "local"; id: string } + | { kind: "target"; id: string } + | { kind: "node"; node: Node } + | { kind: "heap" }; + const fateOf = (node: Node, parents: readonly Node[]): Fate => { + let value: Node = node; + let at = parents.length - 1; + while (at >= 0 && transparent(value, parents[at])) value = parents[at--]!; + const p = at >= 0 ? parents[at] : undefined; + if (p === undefined) return { kind: "heap" }; + if (p.kind === "return") return { kind: "kept" }; + if ( + (p.kind === "varDecl" && p.init !== null && same(p.init, value)) || + (p.kind === "assign" && same(p.value, value)) + ) { + const id = p.localId; + // A local assigned in a loop usually drops its old value. + if (!locals.has(id) || (p.kind === "assign" && depth > 0)) return { kind: "heap" }; + return { kind: "local", id }; + } + const target = storeOf(value, p); + if (target !== undefined) { + if (p.kind === "arraySet") return { kind: "heap" }; + const id = storeTarget(target); + return id !== null && locals.has(id) ? { kind: "target", id } : { kind: "heap" }; + } + if (isExpr(p) && contentOf(value, p)) return { kind: "node", node: p }; + // An argument of a call that returns a reference follows the call's + // value: the callee may put it into its result. + const args = argsOf(p); + if ( + callLike(p) && + isExpr(p) && + refType(p.type) && + args !== null && + indexOfNode(args, value) >= 0 + ) + return { kind: "node", node: p }; + return { kind: "heap" }; + }; + + // Lossy locals: their graphs drop values (element writes, removals), so + // what is stored into them is not kept. + const lossy = new Set(); + const fates = new Map(); + const loops = new Map(); + const localUses: [string, Fate][] = []; + const parents: Node[] = []; + let depth = 0; + const walk = (node: Node): void => { + const removal = removalTarget(node); + if (removal !== null) lossy.add(removal); + if (source(node) || callLike(node)) { + fates.set(node, fateOf(node, parents)); + loops.set(node, depth > 0); + } else if (node.kind === "varRef" && locals.has(node.localId) && refType(node.type)) { + const f = fateOf(node, parents); + if (f.kind !== "heap") localUses.push([node.localId, f]); + } + const loop = LOOPS.has(node.kind); + if (loop) depth++; + const kids: Node[] = []; + children(node, kids); + parents.push(node); + for (const k of kids) walk(k); + parents.pop(); + if (loop) depth--; + }; + for (const st of fn.body) walk(st); + + // A local bound to another local joins its class. + for (const [id, f] of localUses) if (f.kind === "local") unite(id, f.id); + for (const id of [...lossy]) lossy.add(find(id)); + for (const id of seeds) keep(id); + const keptFate = (f: Fate, seen = 0): boolean => { + if (seen > 64) return false; + switch (f.kind) { + case "kept": + return true; + case "local": + return isKept(f.id); + case "target": + return isKept(f.id) && !lossy.has(find(f.id)); + case "node": { + const g = fates.get(f.node); + return g !== undefined && keptFate(g, seen + 1); + } + case "heap": + return false; + } + }; + for (let changed = true; changed;) { + changed = false; + for (const [id, f] of localUses) + if (f.kind !== "local" && keptFate(f) && keep(id)) changed = true; + } + const out: FnSites = { kept: new Map(), dropped: [] }; + for (const [e, f] of fates) + if (keptFate(f)) out.kept.set(e, loops.get(e)!); + else if (callLike(e)) out.dropped.push(e); + return out; +} + +/** + * Narrows `groups` to the roots and call regions worth an arena (with + * `reachable` recomputed for them) and classifies the allocations of the + * functions that run in their arenas. + */ +export function planRegionSites(mod: IrModule, groups: RegionGroups): RegionSites { + const fns = new Map(mod.functions.map((f) => [f.name, f])); + const vt = new VirtualTargets(mod.classes ?? []); + const regionCallees = new Set(); + for (const c of groups.calls) if (c.kind === "call") regionCallees.add(c.callee); + const sites = new Map(); + for (const name of groups.reachable) { + const fn = fns.get(name); + if (fn !== undefined) sites.set(name, classify(fn, regionCallees.has(name))); + } + // Which functions reach which (for recursion), over the reachable ones. + const calleesOf = (name: string): Set => { + const out = new Set(); + const s = sites.get(name); + if (s === undefined) return out; + for (const e of [...s.kept.keys(), ...s.dropped]) + for (const t of targetsOf(vt, e) ?? []) if (sites.has(t)) out.add(t); + return out; + }; + const edges = new Map([...sites.keys()].map((n) => [n, calleesOf(n)])); + const reaches = (from: string, to: string): boolean => { + const seen = new Set(); + const stack = [from]; + while (stack.length > 0) { + const n = stack.pop()!; + if (n === to) return true; + if (seen.has(n)) continue; + seen.add(n); + for (const m of edges.get(n) ?? new Set()) stack.push(m); + } + return false; + }; + const grows = new Set(); + for (let changed = true; changed;) { + changed = false; + for (const [name, s] of sites) { + if (grows.has(name)) continue; + let g = false; + for (const [e, inLoop] of s.kept) { + if (inLoop) g = true; + for (const t of targetsOf(vt, e) ?? []) if (grows.has(t) || reaches(t, name)) g = true; + if (g) break; + } + if (g) { + grows.add(name); + changed = true; + } + } + } + const worth = (r: Node): boolean => { + // Module code runs once, and its groups hold the program's own state. + if (r.kind === "call") return grows.has(r.callee) && !r.callee.startsWith("%init."); + if (r.kind !== "new") return false; + if (grows.has(`%${r.className}.constructor`)) return true; + return r.args.some((a) => a.kind === "call" && grows.has(a.callee)); + }; + for (const r of [...groups.roots]) + if (!worth(r)) { + groups.roots.delete(r); + groups.drops.delete(r); + } + for (const c of [...groups.calls]) if (!worth(c)) groups.calls.delete(c); + groups.reachable = reachableFrom(mod, [...groups.roots, ...groups.calls]); + + const arenaSites = new Set(); + const heapCalls = new Set(); + const mayAllocate = (e: Node): boolean => { + const t = targetsOf(vt, e); + return t === null || t.some((n) => groups.allocates.has(n) || !fns.has(n)); + }; + for (const name of groups.reachable) { + const s = sites.get(name); + if (s === undefined) continue; + for (const e of s.kept.keys()) arenaSites.add(e); + for (const e of s.dropped) + if (!groups.roots.has(e) && !groups.calls.has(e) && mayAllocate(e)) heapCalls.add(e); + } + return { arenaSites, heapCalls }; +} diff --git a/packages/compiler/src/backend/llvm/shapes.ts b/packages/compiler/src/backend/llvm/shapes.ts index ea429d71a..b5b1e735a 100644 --- a/packages/compiler/src/backend/llvm/shapes.ts +++ b/packages/compiler/src/backend/llvm/shapes.ts @@ -60,6 +60,14 @@ import { type InlineUnionFields, } from "./inline-unions.js"; import { JS_BITS, JS_TAGS } from "./jsval-encoding.js"; +import { + ARENA_RC, + arenaDisposeLines, + arenaDisposeSym, + arenaNewLines, + disposeFieldLines, + plainRefType, +} from "./arenas.js"; import { recordMayKeepSource } from "./record-sources.js"; import { LlvmUnsupportedError } from "./unsupported.js"; @@ -137,6 +145,10 @@ export interface ShapeHost { * allocate in regions and count references in their region chunk instead * of being empty (llvm/regions.ts). */ regions?: RegionHooks | null; + /** Record shapes and classes with an arena-aware constructor + * (arenas.ts). */ + arenaShapes?: ReadonlySet; + arenaClasses?: ReadonlySet; /** The target C ABI's `size_t` / refcount integer type. */ readonly sizeType: "i32" | "i64"; /** Worker executables: the inline allocator state is thread-local. */ @@ -1198,22 +1210,25 @@ export function arrNewCall( /** An empty array expected to receive a few elements (its first slots * live in its own block): capText must be "0". */ small = false, + /** In the current group arena when one is open (arenas.ts). */ + arena = false, ): string { + const r = arena ? "_r" : ""; const useRef = arrUsesRef(host, elem); if (!useRef) { if (small) { - host.declare(`declare ptr @scr_arr_new_small(i32)`); - return `call ptr @scr_arr_new_small(i32 ${elemKindNum(elem)})`; + host.declare(`declare ptr @scr_arr_new_small${r}(i32)`); + return `call ptr @scr_arr_new_small${r}(i32 ${elemKindNum(elem)})`; } - host.declare(`declare ptr @scr_arr_new(i32, ${host.sizeType})`); - return `call ptr @scr_arr_new(i32 ${elemKindNum(elem)}, ${host.sizeType} ${capText})`; + host.declare(`declare ptr @scr_arr_new${r}(i32, ${host.sizeType})`); + return `call ptr @scr_arr_new${r}(i32 ${elemKindNum(elem)}, ${host.sizeType} ${capText})`; } if (small) { - host.declare(`declare ptr @scr_arr_new_ops_small(ptr)`); - return `call ptr @scr_arr_new_ops_small(ptr ${arrOps(host, elem)})`; + host.declare(`declare ptr @scr_arr_new_ops_small${r}(ptr)`); + return `call ptr @scr_arr_new_ops_small${r}(ptr ${arrOps(host, elem)})`; } - host.declare(`declare ptr @scr_arr_new_ops(ptr, ${host.sizeType})`); - return `call ptr @scr_arr_new_ops(ptr ${arrOps(host, elem)}, ${host.sizeType} ${capText})`; + host.declare(`declare ptr @scr_arr_new_ops${r}(ptr, ${host.sizeType})`); + return `call ptr @scr_arr_new_ops${r}(ptr ${arrOps(host, elem)}, ${host.sizeType} ${capText})`; } /** The ScrElemKind and ops descriptor (or `null`) an array of `elem` @@ -2327,6 +2342,34 @@ export function emitRecordShapes( if (traced) nw.push(...youngEntryLines(host)); nw.push(` ret ptr %o`, `}`, ``); defs.push(...nw); + if (host.arenaShapes?.has(shape.id) === true && !shape.indexValue) { + const newSym = mangleRecordNew(shape.id); + const dispose = refMembers.length > 0 ? arenaDisposeSym(newSym) : null; + const init = [` store ${host.sizeType} ${ARENA_RC}, ptr %o`]; + if (shapeNumber !== 0) + init.push( + ` %shp = getelementptr inbounds %${struct}, ptr %o, i64 0, i32 ${SHAPE_WORD_INDEX}`, + ` store i32 ${shapeNumber}, ptr %shp ; shape number`, + ); + defs.push( + ...arenaNewLines(host, newSym, sizeOf, traced ? cycType : null, dispose, init, "%o"), + ); + if (dispose !== null) + defs.push( + ...arenaDisposeLines( + newSym, + refMembers.flatMap((m, i) => + disposeFieldLines( + i, + `getelementptr inbounds %${struct}, ptr %o, i64 0, i32 ${m.index}`, + plainRefType(m.type), + releaseSym(host, m.type), + llvmCommentText(m.name), + ), + ), + ), + ); + } if (host.recordCloneShapes.has(shape.id)) { const attrs = shape.fields.length >= 16 ? "#2" : FN_ATTRS; diff --git a/packages/compiler/src/backend/llvm/stack-objects.ts b/packages/compiler/src/backend/llvm/stack-objects.ts index ae2b904db..36793598b 100644 --- a/packages/compiler/src/backend/llvm/stack-objects.ts +++ b/packages/compiler/src/backend/llvm/stack-objects.ts @@ -57,8 +57,9 @@ export function canStackObject(host: LlvmEmitterContext, e: IrExpr): e is StackO if (e.type.kind === "record" && host.recordsById.get(e.type.shapeId)?.freezable === true) return false; // A producer with a result-slot entry builds its fresh result in the - // caller's storage. - if (e.kind === "call") return host.fnByName.has(resultEntryName(e.callee)); + // caller's storage, unless the call roots a group: then the result goes + // in the group's arena with the objects it holds (arenas.ts). + if (e.kind === "call") return host.fnByName.has(resultEntryName(e.callee)) && !host.opensArena(e); if (e.kind === "recordLit") { if (e.type.kind !== "record") return false; const shape = host.recordsById.get(e.type.shapeId); diff --git a/packages/compiler/src/backend/native/runtime-inputs.ts b/packages/compiler/src/backend/native/runtime-inputs.ts index 891fa9312..60f1a8960 100644 --- a/packages/compiler/src/backend/native/runtime-inputs.ts +++ b/packages/compiler/src/backend/native/runtime-inputs.ts @@ -70,6 +70,7 @@ export const EXECUTABLE_RUNTIME_SOURCES = [ "scr_cycle.c", "scr_publish.c", "scr_region.c", + "scr_arena.c", "scr_itable.c", "scr_slots.c", "scr_alloc.c", diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-array-subclass.ts.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-array-subclass.ts.json new file mode 100644 index 000000000..84bff57e0 --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-array-subclass.ts.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/arena-array-subclass.ts" + ], + "diags": [] +} diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-arrays.ts.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-arrays.ts.json new file mode 100644 index 000000000..eafbe937c --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-arrays.ts.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/arena-arrays.ts" + ], + "diags": [] +} diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-cap.ts.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-cap.ts.json new file mode 100644 index 000000000..70593bc13 --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-cap.ts.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/arena-cap.ts" + ], + "diags": [] +} diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-escapes.ts.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-escapes.ts.json new file mode 100644 index 000000000..402b73088 --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-escapes.ts.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/arena-escapes.ts" + ], + "diags": [] +} diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-mixed.ts.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-mixed.ts.json new file mode 100644 index 000000000..17269a5b1 --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-mixed.ts.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/arena-mixed.ts" + ], + "diags": [] +} diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-outside.ts.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-outside.ts.json new file mode 100644 index 000000000..59a1a597c --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-outside.ts.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/arena-outside.ts" + ], + "diags": [] +} diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-region-throws.ts.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-region-throws.ts.json new file mode 100644 index 000000000..392abe549 --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-region-throws.ts.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/arena-region-throws.ts" + ], + "diags": [] +} diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-regions.ts.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-regions.ts.json new file mode 100644 index 000000000..7f2425ffc --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-regions.ts.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/arena-regions.ts" + ], + "diags": [] +} diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-thrown-member.ts.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-thrown-member.ts.json new file mode 100644 index 000000000..8657adc5c --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-thrown-member.ts.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/arena-thrown-member.ts" + ], + "diags": [] +} diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-throws.ts.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-throws.ts.json new file mode 100644 index 000000000..c21f13a02 --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-throws.ts.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/arena-throws.ts" + ], + "diags": [] +} diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-trees.ts.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-trees.ts.json new file mode 100644 index 000000000..9d9b75df2 --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-trees.ts.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/arena-trees.ts" + ], + "diags": [] +} diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-workers.ts.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-workers.ts.json new file mode 100644 index 000000000..97915bb85 --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/arena-workers.ts.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/arena-workers.ts" + ], + "diags": [] +} diff --git a/packages/runtime-pack-common/runtime-pack-matrix.mjs b/packages/runtime-pack-common/runtime-pack-matrix.mjs index 16178e851..1b1425286 100644 --- a/packages/runtime-pack-common/runtime-pack-matrix.mjs +++ b/packages/runtime-pack-common/runtime-pack-matrix.mjs @@ -47,6 +47,7 @@ export const BASE_RUNTIME_SOURCES = [ "scr_cycle.c", "scr_publish.c", "scr_region.c", + "scr_arena.c", "scr_itable.c", "scr_slots.c", "scr_alloc.c", diff --git a/packages/runtime/src/scr_arena.c b/packages/runtime/src/scr_arena.c new file mode 100644 index 000000000..f562f8e45 --- /dev/null +++ b/packages/runtime/src/scr_arena.c @@ -0,0 +1,263 @@ +/* Group arenas: see scr_arena.h. */ +#include "scr_runtime.h" + +#include +#include +#include + +/* The first chunk lives inside the arena, so a small group (one result + * record, a short builder) touches no other memory. */ +#define SCR_ARENA_INLINE 512 +#define SCR_ARENA_CHUNK_MIN ((size_t)4096) +#define SCR_ARENA_CHUNK_MAX ((size_t)1 << 20) +/* Bytes an arena that is not closed takes before its call allocates on the + * heap again: a group whose objects die before it is dropped holds at most + * this much dead memory. A closed arena has no cap: once on the heap, its + * later objects could come to be held by earlier ones, which are not on + * its dispose list. Neither do objects with a collector header: on the + * heap, they could form cycles that outlive the drop (llvm/arenas.ts). */ +#define SCR_ARENA_CAP ((size_t)32 << 20) +/* What a thread keeps for reuse: arenas, chunk bytes, and dispose list + * entries per pooled arena. */ +#define SCR_ARENA_POOL 64 +#define SCR_ARENA_POOL_BYTES ((size_t)8 << 20) +#define SCR_ARENA_POOL_DISPOSALS ((size_t)4096) + +/* A chunk's objects run from scr_arena_chunk_start to its end. */ +typedef struct ScrArenaChunk { + struct ScrArenaChunk *next; + size_t size; /* bytes, this header included */ +} ScrArenaChunk; + +/* The leading fields are an ABI: emitted arena-aware constructors bump + * `bump` up to `limit`, test `closed`, and append to the dispose list at + * `disposals` up to `disposals_end` inline (llvm/arenas.ts). Without the + * small-object allocator `bump` and `limit` stay NULL, so every object + * takes scr_arena_obj and is a block of its own. */ +struct ScrArena { + char *bump, *limit; + ScrArenaDisposal *disposals, *disposals_end; + uint32_t closed; + uint32_t open; /* still the allocation target, or under one that is */ + ScrArena *outer; /* the allocation target before it opened */ + ScrArena *next; /* its scope's list, or the pool */ + ScrArenaDisposal *disposal_base; + ScrArenaChunk *chunks; /* newest first */ + size_t bytes; +#if !SCR_SMALL_ALLOC + char **blocks; + size_t nblocks, cap; +#endif + _Alignas(16) char inline_chunk[SCR_ARENA_INLINE]; +}; +/* llvm/arenas.ts addresses these fields in pointer-sized units. */ +#define SCR_ARENA_PTR sizeof(void *) +_Static_assert(offsetof(ScrArena, bump) == 0 && offsetof(ScrArena, limit) == SCR_ARENA_PTR, + "llvm/arenas.ts bumps the arena inline"); +_Static_assert(offsetof(ScrArena, disposals) == 2 * SCR_ARENA_PTR && + offsetof(ScrArena, disposals_end) == 3 * SCR_ARENA_PTR && + offsetof(ScrArena, closed) == 4 * SCR_ARENA_PTR, + "llvm/arenas.ts appends to the dispose list inline"); +_Static_assert(sizeof(ScrArenaDisposal) == 2 * SCR_ARENA_PTR, + "llvm/arenas.ts stores dispose entries of two pointers"); +_Static_assert(offsetof(ScrArenaHead, disposals) == offsetof(ScrArena, disposals) && + offsetof(ScrArenaHead, closed) == offsetof(ScrArena, closed), + "ScrArenaHead is ScrArena's prefix"); + +SCR_TL ScrArena *scr_arena_cur; +static SCR_TL ScrArena *scr_arena_pool; +static SCR_TL unsigned scr_arena_pooled; +static SCR_TL ScrArenaChunk *scr_arena_chunk_pool; +static SCR_TL size_t scr_arena_chunk_bytes; + +void *scr_arena_current(void) { return scr_arena_cur; } + +void *scr_arena_suspend(void) { + ScrArena *a = scr_arena_cur; + scr_arena_cur = NULL; + return a; +} + +void scr_arena_resume(void *arena) { scr_arena_cur = (ScrArena *)arena; } + +void *scr_arena_open(void **list, int32_t closed) { + ScrArena *a = scr_arena_pool; + if (a) { + scr_arena_pool = a->next; + scr_arena_pooled--; + } else { + a = malloc(sizeof *a); + if (!a) scr_trap("scriptc: out of memory\n"); + a->disposal_base = NULL; + a->disposals_end = NULL; +#if !SCR_SMALL_ALLOC + a->blocks = NULL; + a->cap = 0; +#endif + } + a->closed = closed != 0; + a->chunks = NULL; + a->bytes = 0; + a->disposals = a->disposal_base; +#if SCR_SMALL_ALLOC + a->bump = a->inline_chunk; + a->limit = a->inline_chunk + SCR_ARENA_INLINE; +#else + a->bump = a->limit = NULL; + a->nblocks = 0; +#endif + a->open = 1; + a->outer = scr_arena_cur; + scr_arena_cur = a; + a->next = (ScrArena *)*list; + *list = a; + return a; +} + +/* Makes `a`'s outer target current again, if `a` is still the target or + * under it: an exception can leave the arenas a call opened unclosed until + * their scopes drop them. */ +static void scr_arena_unlink(ScrArena *a) { + if (!a->open) return; + a->open = 0; + for (ScrArena *t = scr_arena_cur; t; t = t->outer) + if (t == a) { + scr_arena_cur = a->outer; + return; + } +} + +void scr_arena_close(void *arena) { + if (arena) scr_arena_unlink((ScrArena *)arena); +} + +void scr_arena_disposal(void *arena, void *obj, ScrArenaDispose dispose) { + ScrArena *a = (ScrArena *)arena; + if (a->disposals == a->disposals_end) { + size_t n = (size_t)(a->disposals - a->disposal_base); + size_t cap = n ? n * 2 : 64; + ScrArenaDisposal *grown = realloc(a->disposal_base, cap * sizeof *grown); + if (!grown) scr_trap("scriptc: out of memory\n"); + a->disposal_base = grown; + a->disposals = grown + n; + a->disposals_end = grown + cap; + } + a->disposals->obj = obj; + a->disposals->dispose = dispose; + a->disposals++; +} + +#if SCR_SMALL_ALLOC +static ScrArenaChunk *scr_arena_chunk(size_t want) { + for (ScrArenaChunk **p = &scr_arena_chunk_pool; *p; p = &(*p)->next) + if ((*p)->size >= want) { + ScrArenaChunk *c = *p; + *p = c->next; + scr_arena_chunk_bytes -= c->size; + return c; + } + ScrArenaChunk *c = malloc(want); + if (!c) scr_trap("scriptc: out of memory\n"); + c->size = want; + return c; +} + +static char *scr_arena_chunk_start(ScrArenaChunk *c) { + return (char *)(((uintptr_t)(c + 1) + 15) & ~(uintptr_t)15); +} + +/* A new current chunk with room for `n` bytes, or false past the cap + * when `capped`. */ +static bool scr_arena_refill(ScrArena *a, size_t n, bool capped) { + size_t want = a->chunks ? a->chunks->size * 2 : SCR_ARENA_CHUNK_MIN; + if (want > SCR_ARENA_CHUNK_MAX) want = SCR_ARENA_CHUNK_MAX; + size_t need = n + sizeof(ScrArenaChunk) + 15; + if (want < need) want = need; + if (capped && a->bytes + want > SCR_ARENA_CAP) return false; + ScrArenaChunk *c = scr_arena_chunk(want); + a->bytes += c->size; + c->next = a->chunks; + a->chunks = c; + a->bump = scr_arena_chunk_start(c); + a->limit = (char *)c + c->size; + return true; +} +#endif + +void *scr_arena_obj(void *arena, size_t size, void *cyc) { + ScrArena *a = (ScrArena *)arena; + size_t hdr = cyc ? sizeof(ScrCycHdr) : 0; + bool capped = !a->closed && !cyc; + if (capped && size > SCR_ARENA_CAP) return NULL; + size_t n = (hdr + size + 7) & ~(size_t)7; +#if SCR_SMALL_ALLOC + if ((size_t)(a->limit - a->bump) < n && !scr_arena_refill(a, n, capped)) return NULL; + char *block = a->bump; + a->bump += n; + memset(block, 0, n); +#else + if (capped && a->bytes + n > SCR_ARENA_CAP) return NULL; + a->bytes += n; + if (a->nblocks == a->cap) { + size_t cap = a->cap ? a->cap * 2 : 16; + char **grown = realloc(a->blocks, cap * sizeof *grown); + if (!grown) scr_trap("scriptc: out of memory\n"); + a->blocks = grown; + a->cap = cap; + } + char *block = calloc(1, n); + if (!block) scr_trap("scriptc: out of memory\n"); + a->blocks[a->nblocks++] = block; +#endif + if (!cyc) return block; + ScrCycHdr *ch = (ScrCycHdr *)block; + ch->id = (uint16_t)scr_cyc_type_id((ScrCycType *)cyc); + ch->buf = SCR_CYC_ACYCLIC; + return block + hdr; +} + +static void scr_arena_free(ScrArena *a) { + /* Every entry before any memory: a release can reach another object of + * the arena. Newest first, the reverse of construction. */ + for (ScrArenaDisposal *d = a->disposals; d != a->disposal_base;) { + d--; + d->dispose(d->obj); + } + if ((size_t)(a->disposals_end - a->disposal_base) > SCR_ARENA_POOL_DISPOSALS) { + free(a->disposal_base); + a->disposal_base = a->disposals_end = NULL; + } +#if SCR_SMALL_ALLOC + for (ScrArenaChunk *c = a->chunks, *next; c; c = next) { + next = c->next; + if (scr_arena_chunk_bytes + c->size <= SCR_ARENA_POOL_BYTES) { + c->next = scr_arena_chunk_pool; + scr_arena_chunk_pool = c; + scr_arena_chunk_bytes += c->size; + } else + free(c); + } + if (scr_arena_pooled < SCR_ARENA_POOL) { + a->next = scr_arena_pool; + scr_arena_pool = a; + scr_arena_pooled++; + return; + } +#else + for (size_t i = 0; i < a->nblocks; i++) free(a->blocks[i]); + free(a->blocks); +#endif + free(a->disposal_base); + free(a); +} + +void scr_arena_drop(void **list) { + ScrArena *a = (ScrArena *)*list; + *list = NULL; + while (a) { + ScrArena *next = a->next; + scr_arena_unlink(a); + scr_arena_free(a); + a = next; + } +} diff --git a/packages/runtime/src/scr_arena.h b/packages/runtime/src/scr_arena.h new file mode 100644 index 000000000..a897a13be --- /dev/null +++ b/packages/runtime/src/scr_arena.h @@ -0,0 +1,113 @@ +#ifndef SCR_ARENA_H +#define SCR_ARENA_H +/* Group arenas (llvm/region-groups.ts, llvm/arenas.ts): the objects a call + * allocates while the compiler has proven they die together, bump-allocated + * and released at once. + * + * Two kinds of call open one: + * - a fresh-result call (a root) whose value its caller keeps in one scope: + * the arena stays the allocation target while the call runs, and is + * dropped when that scope exits, on every path; + * - a call region, a call of a function that keeps nothing it allocates + * and returns no reference: the arena is dropped when the call returns. + * + * Only allocation sites in functions the compiler reached from such a call + * consult the target (scr_arena_cur), and only those whose value the group + * keeps (llvm/region-sites.ts), so runtime-internal allocations and + * temporaries never land in an arena. + * + * An arena object is an ordinary object with an ordinary count, starting + * at SCR_ARENA_RC instead of 1, so no release reaches zero while it lives: + * no teardown, no free, and (with `buf` SCR_CYC_ACYCLIC) never a collector + * candidate. The count is far below SCR_RC_PUBLISHED, so the arena object + * stays mutable and thread-local like any other. Dropping the arena runs + * its dispose list, whose entries release their objects' fields (and + * storage) without freeing the objects, and then recycles the memory. A + * closed arena's objects hold only each other and immortal values, so only + * objects with storage of their own (arrays) go on its list. + * + * Without the small-object allocator (sanitized and audit builds), every + * arena object is a block of its own that the drop frees, so a use after + * the drop is a use after free that the sanitizer reports. */ +#include +#include + +/* The starting count of an arena object (a count, in the low 32 bits of + * the rc word, so it also suits classes that keep their id in the high + * half). */ +#define SCR_ARENA_RC ((uint32_t)1 << 29) + +typedef struct ScrArena ScrArena; +/* Releases what an arena object holds (its fields, an array's storage) + * without freeing the object. */ +typedef void (*ScrArenaDispose)(void *obj); + +/* An entry of an arena's dispose list. The emitted arena-aware + * constructors append one inline for an object whose type has fields to + * release, unless the arena is closed (llvm/arenas.ts). */ +typedef struct ScrArenaDisposal { + void *obj; + ScrArenaDispose dispose; +} ScrArenaDisposal; + +/* The arena that allocation sites in arena-aware functions use, or NULL. + * Emitted code reads scr_arena_cur directly outside worker programs. */ +extern SCR_TL ScrArena *scr_arena_cur; +void *scr_arena_current(void); +/* Stops any arena being the allocation target while a call whose value + * its group does not keep runs; returns the target, which + * scr_arena_resume restores. */ +void *scr_arena_suspend(void); +void scr_arena_resume(void *arena); +/* Opens an arena as the allocation target and links it onto `*list`, the + * list its scope drops. Returns it. A `closed` arena's objects hold only + * each other and immortal values (the compiler proved it), so dropping it + * releases nothing. */ +void *scr_arena_open(void **list, int32_t closed); +/* Stops `arena` (may be NULL) being the allocation target; its objects + * live on until its list is dropped. */ +void scr_arena_close(void *arena); +/* Drops every arena on `*list`, newest first, and clears the list. */ +void scr_arena_drop(void **list); +/* A zeroed object of `size` bytes in `arena` (behind a collector header + * when `cyc` is not NULL, its `buf` SCR_CYC_ACYCLIC), for when the emitted + * bump finds no room: a new chunk. Returns NULL when an arena that is not + * closed is past its byte cap and `cyc` is NULL, and the caller allocates + * on the heap. The caller stores the count (SCR_ARENA_RC). */ +void *scr_arena_obj(void *arena, size_t size, void *cyc); +/* Appends `obj` to `arena`'s dispose list, which the drop runs. */ +void scr_arena_disposal(void *arena, void *obj, ScrArenaDispose dispose); + +/* The leading fields of an arena (scr_arena.c's ScrArena), for the + * runtime's own inline allocation. */ +typedef struct ScrArenaHead { + char *bump, *limit; + ScrArenaDisposal *disposals, *disposals_end; + uint32_t closed; +} ScrArenaHead; + +/* `n` bytes (a multiple of 8) from `arena`'s current chunk, not cleared, + * or NULL when the chunk has no room (scr_arena_obj takes a new one). */ +static inline void *scr_arena_bump(void *arena, size_t n) { + ScrArenaHead *h = (ScrArenaHead *)arena; + if ((size_t)(h->limit - h->bump) < n) return NULL; + char *p = h->bump; + h->bump = p + n; + return p; +} + +/* scr_arena_disposal with the append inline. */ +static inline void scr_arena_dispose_later(void *arena, void *obj, ScrArenaDispose dispose) { + ScrArenaHead *h = (ScrArenaHead *)arena; + if (h->disposals == h->disposals_end) { + scr_arena_disposal(arena, obj, dispose); + return; + } + h->disposals->obj = obj; + h->disposals->dispose = dispose; + h->disposals++; +} + +static inline int scr_arena_is_closed(void *arena) { return ((ScrArenaHead *)arena)->closed != 0; } + +#endif diff --git a/packages/runtime/src/scr_arena.test.c b/packages/runtime/src/scr_arena.test.c new file mode 100644 index 000000000..8f369d4e3 --- /dev/null +++ b/packages/runtime/src/scr_arena.test.c @@ -0,0 +1,108 @@ +/* Group arenas (scr_arena.h): allocation, nesting, closing and dropping, + * and the drop's dispose list. Prints one line per check. */ +#include "scr_runtime.h" + +#include +#include + +typedef struct { + int64_t rc; + int64_t id; +} TestObj; + +static int disposed; +static int64_t disposed_sum; +static void test_dispose(void *obj) { + disposed++; + disposed_sum += ((TestObj *)obj)->id; +} +/* What an emitted arena-aware constructor does: the object, and its + * dispose entry unless the arena is closed. */ +static TestObj *obj(void *arena, int64_t id, int closed) { + TestObj *o = scr_arena_obj(arena, sizeof *o, NULL); + if (!o) return NULL; + o->rc = SCR_ARENA_RC; + o->id = id; + if (!closed) scr_arena_disposal(arena, o, test_dispose); + return o; +} + +int main(void) { + /* An open arena is the allocation target until it closes. */ + void *list = NULL; + void *a = scr_arena_open(&list, 0); + printf("current while open: %s\n", scr_arena_current() == a ? "yes" : "no"); + TestObj *first = obj(a, 1, 0); + int zero = 1, adjacent = 1; + TestObj *prev = first; + for (int i = 0; i < 16; i++) { + TestObj *o = scr_arena_obj(a, sizeof *o, NULL); + if (o->rc != 0 || o->id != 0) zero = 0; + if ((char *)o != (char *)(prev + 1)) adjacent = 0; + prev = o; + } + printf("objects start zeroed: %s\n", zero ? "yes" : "no"); +#if !SCR_SMALL_ALLOC + adjacent = 1; /* a block per object */ +#endif + printf("objects without headers: %s\n", adjacent ? "yes" : "no"); + /* A nested arena makes the outer one current again when it closes. */ + void *inner_list = NULL; + void *b = scr_arena_open(&inner_list, 0); + for (int i = 0; i < 10; i++) obj(b, 100, 0); + scr_arena_close(b); + scr_arena_close(b); + printf("outer current after inner close: %s\n", scr_arena_current() == a ? "yes" : "no"); + scr_arena_drop(&inner_list); + printf("inner drop disposed %d (sum %lld)\n", disposed, (long long)disposed_sum); + /* Many objects span chunks; each is disposed once. */ + disposed = 0; + disposed_sum = 0; + for (int i = 0; i < 100000; i++) obj(a, 1, 0); + scr_arena_close(a); + printf("current after close: %s\n", scr_arena_current() == NULL ? "none" : "some"); + scr_arena_drop(&list); + printf("drop disposed %d (sum %lld), list %s\n", disposed, (long long)disposed_sum, + list == NULL ? "cleared" : "kept"); + + /* A closed arena's objects take no dispose entries, and it has no cap. */ + disposed = 0; + void *closed = scr_arena_open(&list, 1); + int held = 0; + for (int i = 0; i < 3000000; i++) + if (obj(closed, 1, 1)) held++; + scr_arena_drop(&list); + printf("closed arena held %d, disposed %d, current %s\n", held, disposed, + scr_arena_current() == NULL ? "none" : "some"); + + /* Past the byte cap an arena that is not closed refuses, and its drop + * disposes everything it holds. */ + disposed = 0; + void *capped = scr_arena_open(&list, 0); + int refused = 0; + held = 0; + for (int i = 0; i < 3000000 && !refused; i++) { + if (obj(capped, 1, 0)) + held++; + else + refused = 1; + } + scr_arena_drop(&list); + printf("cap refused: %s, all disposed: %s\n", refused ? "yes" : "no", disposed == held ? "yes" : "no"); + + /* A drop of an arena that is still open (an exception skipped its close) + * restores the target it replaced. */ + void *outer_list = NULL, *skipped_list = NULL; + void *outer = scr_arena_open(&outer_list, 0); + scr_arena_open(&skipped_list, 0); + scr_arena_drop(&skipped_list); + printf("target after dropping an open arena: %s\n", scr_arena_current() == outer ? "outer" : "other"); + /* A suspended arena is no target until it resumes. */ + void *saved = scr_arena_suspend(); + printf("target while suspended: %s\n", scr_arena_current() == NULL ? "none" : "some"); + scr_arena_resume(saved); + printf("target after resume: %s\n", scr_arena_current() == outer ? "outer" : "other"); + scr_arena_close(outer); + scr_arena_drop(&outer_list); + return 0; +} diff --git a/packages/runtime/src/scr_arena.test.ts b/packages/runtime/src/scr_arena.test.ts new file mode 100644 index 000000000..0e48c8ea8 --- /dev/null +++ b/packages/runtime/src/scr_arena.test.ts @@ -0,0 +1,67 @@ +import { execFile } from "node:child_process"; +import { mkdtemp, rm } from "node:fs/promises"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; +import { promisify } from "node:util"; +import { describe, expect, test } from "vitest"; +import { EXECUTABLE_RUNTIME_SOURCES } from "../../compiler/src/backend/native-toolchain.js"; + +const exec = promisify(execFile); + +const EXPECTED = [ + "current while open: yes", + "objects start zeroed: yes", + "objects without headers: yes", + "outer current after inner close: yes", + "inner drop disposed 10 (sum 1000)", + "current after close: none", + "drop disposed 100001 (sum 100001), list cleared", + "closed arena held 3000000, disposed 0, current none", + "cap refused: yes, all disposed: yes", + "target after dropping an open arena: outer", + "target while suspended: none", + "target after resume: outer", +]; + +// The size-class allocator build (chunks, the inline bump's fields), and +// the sanitized lane's build (a block per object, freed by the drop). +describe.skipIf(process.platform === "win32")("group arenas", () => { + test.each([ + ["size-class", ["-fsanitize=undefined"]], + ["sanitized", ["-fsanitize=address,undefined", "-DSCR_RC_AUDIT"]], + ])( + "open, allocate, close and drop (%s)", + async (_lane, flags) => { + const dir = await mkdtemp(join(tmpdir(), "scriptc-arena-")); + try { + const bin = join(dir, "arena"); + await exec("clang", [ + "-std=c11", + "-O1", + "-pthread", + "-Wno-deprecated-declarations", + ...(process.platform === "linux" ? ["-D_GNU_SOURCE"] : []), + ...flags, + ...["scr_arena.test.c", ...EXECUTABLE_RUNTIME_SOURCES].map((source) => + join(import.meta.dirname, source), + ), + ...(process.platform === "linux" ? ["-lm"] : []), + "-o", + bin, + ]); + const { stdout } = await exec(bin, [], { + timeout: 60000, + env: { + ...process.env, + ASAN_OPTIONS: "halt_on_error=1", + UBSAN_OPTIONS: "halt_on_error=1", + }, + }); + expect(stdout.trim().split("\n")).toEqual(EXPECTED); + } finally { + await rm(dir, { recursive: true, force: true }); + } + }, + 300000, + ); +}); diff --git a/packages/runtime/src/scr_array.c b/packages/runtime/src/scr_array.c index b9e0efa74..e6d53be25 100644 --- a/packages/runtime/src/scr_array.c +++ b/packages/runtime/src/scr_array.c @@ -1426,15 +1426,53 @@ static void scr_arr_put_slots(ScrArr *a, size_t to, size_t count, const uint64_t /* Inlined into each constructor, so `small` and the slot unit fold to * constants there. */ +static void scr_arr_arena_dispose(void *object); +static void scr_arr_arena_dispose_closed(void *object); +static ScrCycType scr_arr_cyc_type; + +/* An array block of `size` bytes in the current group arena, or NULL. + * Its storage beyond the block is the heap's, so it goes on the arena's + * dispose list even when the arena is closed; there, its elements are + * arena objects and immortal values, which need no release. */ +static inline ScrArr *scr_arr_arena_block(size_t size, bool cyc) { + void *arena = scr_arena_cur; + if (!arena) return NULL; + size_t hdr = cyc ? sizeof(ScrCycHdr) : 0; + size_t n = (hdr + size + 7) & ~(size_t)7; + uint32_t id = cyc ? scr_cyc_type_id(&scr_arr_cyc_type) : 0; + char *block = scr_arena_bump(arena, n); + ScrArr *a; + if (block) { + /* The constructor sets every header field, as on the heap; only the + * collector header needs setting here. */ + if (cyc) *(ScrCycHdr *)block = (ScrCycHdr){.id = (uint16_t)id, .buf = SCR_CYC_ACYCLIC}; + a = (ScrArr *)(block + hdr); + } else { + a = scr_arena_obj(arena, size, cyc ? &scr_arr_cyc_type : NULL); + if (!a) return NULL; + } + scr_arena_dispose_later(arena, a, + scr_arena_is_closed(arena) ? scr_arr_arena_dispose_closed + : scr_arr_arena_dispose); + return a; +} + static inline __attribute__((always_inline)) ScrArr *scr_arr_make(ScrElemKind elem, size_t initial_cap, - bool small) { + bool small, + bool arena) { size_t unit = scr_elem_slot_width(elem); size_t inline_cap = small ? scr_arr_small_cap(SCR_ARR_INLINE_OFFSET, unit) : scr_arr_known_cap(SCR_ARR_INLINE_OFFSET, initial_cap, unit); - ScrArr *a = scr_mem_alloc(inline_cap ? SCR_ARR_INLINE_OFFSET + inline_cap * unit : sizeof(ScrArr)); - if (!a) scr_arr_oom(); - a->rc = 1; + size_t size = inline_cap ? SCR_ARR_INLINE_OFFSET + inline_cap * unit : sizeof(ScrArr); + ScrArr *a = arena ? scr_arr_arena_block(size, false) : NULL; + if (a) + a->rc = SCR_ARENA_RC; + else { + a = scr_mem_alloc(size); + if (!a) scr_arr_oom(); + a->rc = 1; + } a->len = 0; a->cap = 0; a->elem = (uint8_t)elem; @@ -1451,10 +1489,16 @@ static inline __attribute__((always_inline)) ScrArr *scr_arr_make(ScrElemKind el } ScrArr *scr_arr_new(ScrElemKind elem, size_t initial_cap) { - return scr_arr_make(elem, initial_cap, false); + return scr_arr_make(elem, initial_cap, false, false); } -ScrArr *scr_arr_new_small(ScrElemKind elem) { return scr_arr_make(elem, 0, true); } +ScrArr *scr_arr_new_small(ScrElemKind elem) { return scr_arr_make(elem, 0, true, false); } + +ScrArr *scr_arr_new_r(ScrElemKind elem, size_t initial_cap) { + return scr_arr_make(elem, initial_cap, false, true); +} + +ScrArr *scr_arr_new_small_r(ScrElemKind elem) { return scr_arr_make(elem, 0, true, true); } /* A non-cycle array whose final length the runtime knows when it builds * it (regex match results): its `cap` slots share the header's block, so @@ -1463,7 +1507,7 @@ ScrArr *scr_arr_new_small(ScrElemKind elem) { return scr_arr_make(elem, 0, true) * `cap` moves the slots out like any inline array. */ ScrArr *scr_arr_new_inline(ScrElemKind elem, size_t cap, bool states) { if (cap == 0) { - ScrArr *a = scr_arr_make(elem, 0, false); + ScrArr *a = scr_arr_make(elem, 0, false, false); if (states) a->spare |= SCR_ARR_STATES; return a; } @@ -1572,13 +1616,16 @@ static void scr_arr_gc_free(void *a0) { scr_cyc_free_inline(a); } +static ScrCycType scr_arr_cyc_type = {&scr_arr_trace_v, &scr_arr_gc_free, SCR_CYC_KIND_ARRAY}; + /* Inlined into each constructor like scr_arr_make: with `small`, the count * and `elem` constant, scr_arr_new_ops_small's size class folds to a table * index and the slot sizes to constants. */ static inline __attribute__((always_inline)) ScrArr *scr_arr_make_ops_kind(const ScrArrOps *ops, size_t initial_cap, bool small, - uint8_t elem) { + uint8_t elem, + bool arena) { ScrArr *a; bool cyc = ops->trace != NULL; /* The array starts without states: slots of the value width alone. */ @@ -1587,14 +1634,18 @@ static inline __attribute__((always_inline)) ScrArr *scr_arr_make_ops_kind(const size_t inline_cap = small ? scr_arr_small_cap(prefix, unit) : scr_arr_known_cap(prefix, initial_cap, unit); size_t size = inline_cap ? SCR_ARR_INLINE_OFFSET + inline_cap * unit : sizeof(ScrArr); - if (cyc) { - static ScrCycType cyc_type = { &scr_arr_trace_v, &scr_arr_gc_free, SCR_CYC_KIND_ARRAY }; - a = scr_cyc_alloc_inline(size, &cyc_type); - } else { - a = scr_mem_alloc(size); - if (!a) scr_arr_oom(); + a = arena ? scr_arr_arena_block(size, cyc) : NULL; + if (a) + a->rc = SCR_ARENA_RC; + else { + if (cyc) + a = scr_cyc_alloc_inline(size, &scr_arr_cyc_type); + else { + a = scr_mem_alloc(size); + if (!a) scr_arr_oom(); + } + a->rc = 1; } - a->rc = 1; a->len = 0; a->cap = 0; a->elem = elem; @@ -1622,17 +1673,26 @@ static inline __attribute__((always_inline)) ScrArr *scr_arr_make_ops_kind(const * branch inlines scr_arr_make_ops_kind with a constant kind. */ static inline __attribute__((always_inline)) ScrArr *scr_arr_make_ops(const ScrArrOps *ops, size_t initial_cap, - bool small) { + bool small, + bool arena) { if (__builtin_expect(scr_arr_ops_compact(ops), 0)) - return scr_arr_make_ops_kind(ops, initial_cap, small, SCR_ELEM_CREF); - return scr_arr_make_ops_kind(ops, initial_cap, small, SCR_ELEM_REF); + return scr_arr_make_ops_kind(ops, initial_cap, small, SCR_ELEM_CREF, arena); + return scr_arr_make_ops_kind(ops, initial_cap, small, SCR_ELEM_REF, arena); } ScrArr *scr_arr_new_ops(const ScrArrOps *ops, size_t initial_cap) { - return scr_arr_make_ops(ops, initial_cap, false); + return scr_arr_make_ops(ops, initial_cap, false, false); } -ScrArr *scr_arr_new_ops_small(const ScrArrOps *ops) { return scr_arr_make_ops(ops, 0, true); } +ScrArr *scr_arr_new_ops_small(const ScrArrOps *ops) { return scr_arr_make_ops(ops, 0, true, false); } + +/* The constructors arena-aware functions call (llvm/arenas.ts): in the + * current group arena when one is open. */ +ScrArr *scr_arr_new_ops_r(const ScrArrOps *ops, size_t initial_cap) { + return scr_arr_make_ops(ops, initial_cap, false, true); +} + +ScrArr *scr_arr_new_ops_small_r(const ScrArrOps *ops) { return scr_arr_make_ops(ops, 0, true, true); } /* Frees an acyclic array whose elements are already released. */ static inline __attribute__((always_inline)) void scr_arr_free(ScrArr *a) { @@ -1746,6 +1806,26 @@ static void scr_arr_destroy(void *object) { else scr_arr_free(a); } +/* An arena array at its arena's drop: its contents and the storage beyond + * its block go; the block goes with the arena. */ +static void scr_arr_arena_dispose(void *object) { + ScrArr *a = object; + scr_arr_release_contents(a); + scr_arr_free_parts(a); +#ifdef SCR_RC_AUDIT + scr_live_arrays--; +#endif +} + +/* The same in a closed arena, whose objects hold only each other and + * immortal values: only the storage beyond the block goes. */ +static void scr_arr_arena_dispose_closed(void *object) { + scr_arr_free_parts((ScrArr *)object); +#ifdef SCR_RC_AUDIT + scr_live_arrays--; +#endif +} + void scr_arr_subclass_init(ScrArr *a, uint8_t elem, const ScrArrOps *ops, const ScrArrClass *cls, bool cyc) { a->len = 0; diff --git a/packages/runtime/src/scr_array.h b/packages/runtime/src/scr_array.h index 0b162ff5e..86ef8d999 100644 --- a/packages/runtime/src/scr_array.h +++ b/packages/runtime/src/scr_array.h @@ -490,6 +490,12 @@ ScrArr *scr_arr_new_small(ScrElemKind elem); * SCR_ELEM_F64); no-op for any other kind. */ void scr_arr_widen_i32(ScrArr *a); ScrArr *scr_arr_new_ops_small(const ScrArrOps *ops); +/* The same constructors in the current group arena, when one is open + * (scr_arena.h): what arena-aware functions call. */ +ScrArr *scr_arr_new_r(ScrElemKind elem, size_t initial_cap); +ScrArr *scr_arr_new_small_r(ScrElemKind elem); +ScrArr *scr_arr_new_ops_r(const ScrArrOps *ops, size_t initial_cap); +ScrArr *scr_arr_new_ops_small_r(const ScrArrOps *ops); /* scr_arr_new(elem, cap) for a known final length: the `cap` slots share * the array's own block (one allocation). With `states`, the array starts * with states (for holes or present undefined). Returns +1. */ diff --git a/packages/runtime/src/scr_runtime.h b/packages/runtime/src/scr_runtime.h index f19f3918b..5c73917f4 100644 --- a/packages/runtime/src/scr_runtime.h +++ b/packages/runtime/src/scr_runtime.h @@ -56,6 +56,7 @@ #include "scr_blob.h" #include "scr_object.h" #include "scr_region.h" +#include "scr_arena.h" #include "scr_itable.h" #include "scr_slots.h" #include "scr_async.h" diff --git a/tests/corpus/arena-array-subclass.ts b/tests/corpus/arena-array-subclass.ts new file mode 100644 index 000000000..281d07823 --- /dev/null +++ b/tests/corpus/arena-array-subclass.ts @@ -0,0 +1,63 @@ +// Builders whose groups hold instances of a class that extends Array, +// beside a builder whose group takes an arena. An Array subclass's +// instance is an array, so a group that allocates one keeps its objects on +// the heap; the results and their teardown match Node either way. +class Row extends Array { + sum(): number { + let s = 0; + for (const v of this) s += v; + return s; + } +} + +class Branch { + row: Row; + left: Branch | null; + right: Branch | null; + constructor(row: Row, left: Branch | null, right: Branch | null) { + this.row = row; + this.left = left; + this.right = right; + } + total(): number { + return this.row.sum() + (this.left ? this.left.total() : 0) + (this.right ? this.right.total() : 0); + } +} + +class Pair { + left: Pair | null; + right: Pair | null; + constructor(left: Pair | null, right: Pair | null) { + this.left = left; + this.right = right; + } + count(): number { + return 1 + (this.left ? this.left.count() : 0) + (this.right ? this.right.count() : 0); + } +} + +function row(n: number): Row { + const r = new Row(); + for (let j = 0; j <= n; j++) r.push(j); + return r; +} + +function branches(depth: number): Branch { + return depth === 0 + ? new Branch(row(depth), null, null) + : new Branch(row(depth), branches(depth - 1), branches(depth - 1)); +} + +function pairs(depth: number): Pair { + return depth === 0 ? new Pair(null, null) : new Pair(pairs(depth - 1), pairs(depth - 1)); +} + +let checks = 0; +for (let round = 0; round < 20; round++) { + const b = branches(6); + const p = pairs(8); + const r = row(round); + checks += b.total() + p.count() + r.sum() + r.length; + if (round === 0) console.log(b.total(), b.row.length, b.row instanceof Row, p.count(), r.sum()); +} +console.log(checks); diff --git a/tests/corpus/arena-arrays.ts b/tests/corpus/arena-arrays.ts new file mode 100644 index 000000000..fb2134231 --- /dev/null +++ b/tests/corpus/arena-arrays.ts @@ -0,0 +1,49 @@ +// Groups with arrays: child lists that grow past their first storage, +// back references to parents and siblings, and lists of lists. +class Node { + parent: Node | undefined = undefined; + children: Node[] = []; + sibling: Node | undefined = undefined; + weight: number; + constructor(weight: number) { + this.weight = weight; + } +} + +function wide(depth: number, fan: number, parent: Node | undefined, weight: number): Node { + const node = new Node(weight); + node.parent = parent; + if (depth > 0) { + for (let i = 0; i < fan; i++) node.children.push(wide(depth - 1, fan, node, weight * 3 + i)); + for (let i = 0; i < fan; i++) node.children[i]!.sibling = node.children[(i + 1) % fan]!; + } + return node; +} + +function weigh(node: Node): number { + let total = node.weight; + for (const child of node.children) total += weigh(child); + return total % 1000003; +} + +let w = 0; +for (let round = 0; round < 30; round++) w = (w + weigh(wide(2 + (round % 3), 3 + (round % 20), undefined, round))) % 1000003; +console.log("weights", w); + +function grid(rows: number, cols: number): number[][] { + const out: number[][] = []; + for (let r = 0; r < rows; r++) { + const row: number[] = []; + for (let c = 0; c < cols; c++) row.push(r * cols + c); + out.push(row); + } + return out; +} +let cells = 0; +for (let k = 1; k < 40; k++) { + const g = grid(k, 70); + cells += g.length + g[k - 1]![69]! + g[0]!.length; +} +console.log("cells", cells); +const t = wide(2, 4, undefined, 1); +console.log(t.children.length, t.children[1]!.parent === t, t.children[3]!.sibling === t.children[0], t.children[2]!.children[3]!.weight); diff --git a/tests/corpus/arena-cap.ts b/tests/corpus/arena-cap.ts new file mode 100644 index 000000000..1ab1f43aa --- /dev/null +++ b/tests/corpus/arena-cap.ts @@ -0,0 +1,30 @@ +// A group too large for one arena: past its byte cap the rest of the +// group goes to the heap, and both parts are released together. +interface Cell { + index: number; + label: string; + next: Cell | null; +} + +function list(n: number): Cell { + let head: Cell = { index: 0, label: "c0", next: null }; + const first = head; + for (let i = 1; i < n; i++) { + const cell: Cell = { index: i, label: i % 1000 === 0 ? `c${i}` : "c", next: null }; + head.next = cell; + head = cell; + } + return first; +} + +function walk(c: Cell | null): number { + let total = 0; + let labels = 0; + for (let at = c; at !== null; at = at.next) { + total += at.index; + if (at.label.length > 1) labels++; + } + return total + labels; +} + +for (let round = 0; round < 3; round++) console.log("cells", walk(list(900000 + round))); diff --git a/tests/corpus/arena-escapes.ts b/tests/corpus/arena-escapes.ts new file mode 100644 index 000000000..f65a34e87 --- /dev/null +++ b/tests/corpus/arena-escapes.ts @@ -0,0 +1,72 @@ +// Values built in a group that leave it: handed to callbacks that keep +// them, stored by a method into a module list, kept from a getter, pushed +// into a caller's list, or captured by a returned closure. None of those +// groups takes an arena; the one whose values stay in the frame does. +class Node { + kids: Node[] = []; + label: string; + constructor(label: string) { + this.label = label; + } + get first(): Node { + return this.kids[0]!; + } + register(): void { + registry.push(this); + } +} +const registry: Node[] = []; +const saved: Node[] = []; +const held = new Map(); +function build(depth: number, label: string): Node { + const n = new Node(label); + for (let i = 0; depth > 0 && i < 3; i++) n.kids.push(build(depth - 1, `${label}.${i}`)); + return n; +} +function each(depth: number, cb: (n: Node) => void): number { + const t = build(depth, "e"); + cb(t); + return t.kids.length; +} +function visit(n: Node, cb: (x: Node) => void): void { + cb(n); + for (const k of n.kids) visit(k, cb); +} +function forward(depth: number, cb: (x: Node) => void): number { + const t = build(depth, "f"); + visit(t, cb); + return t.kids.length; +} +function buildInto(sink: Node[], depth: number): number { + const n = build(depth, "s"); + sink.push(n.kids[0]!); + return n.kids.length; +} +function closureOf(depth: number): () => string { + const n = build(depth, "c"); + return () => n.kids[1]!.label; +} +let total = 0; +for (let r = 0; r < 8; r++) { + total += each(2, (n) => saved.push(n.kids[1]!)); + total += forward(2, (x) => { + if (x.label.endsWith(".2")) saved.push(x); + }); + const t = build(2, `t${r}`); + t.kids.forEach((k) => { + if (k.label.endsWith(".0")) saved.push(k); + }); + const u = build(2, `u${r}`); + for (const k of u.kids) if (k.label.endsWith(".1")) saved.push(k); + const v = build(2, `v${r}`); + held.set(r, v.first); + const a = build(2, `a${r}`); + if (r % 3 === 0) a.kids[0]!.register(); + total += buildInto(saved, 2); + const w = build(2, `w${r}`); + total += w.kids.length + w.first.kids.length; +} +console.log(total, saved.length, saved.map((n) => n.label + "/" + n.kids.length).slice(0, 10).join(",")); +const f = closureOf(2); +console.log(f(), registry.map((n) => n.label + n.kids.length).join(",")); +console.log([...held.values()].map((n) => n.label + n.kids[0]!.label).join(",")); diff --git a/tests/corpus/arena-mixed.ts b/tests/corpus/arena-mixed.ts new file mode 100644 index 000000000..ff6c8e76c --- /dev/null +++ b/tests/corpus/arena-mixed.ts @@ -0,0 +1,80 @@ +// Groups built through virtual calls and sorted with callbacks, nested +// groups inside a group, and temporaries the group does not keep. +abstract class Shape { + abstract area(): number; + abstract scaled(k: number): Shape; +} +class Square extends Shape { + side: number; + constructor(side: number) { + super(); + this.side = side; + } + area(): number { + return this.side * this.side; + } + scaled(k: number): Shape { + return new Square(this.side * k); + } +} +class Circle extends Shape { + radius: number; + constructor(radius: number) { + super(); + this.radius = radius; + } + area(): number { + return Math.round(Math.PI * this.radius * this.radius * 100) / 100; + } + scaled(k: number): Shape { + return new Circle(this.radius * k); + } +} + +interface Box { + label: string; + shapes: Shape[]; +} + +function measure(s: Shape): { area: number } { + return { area: s.area() }; +} + +function boxes(n: number): Box[] { + const out: Box[] = []; + for (let i = 0; i < n; i++) { + const shapes: Shape[] = []; + for (let j = 0; j < 4; j++) { + const base: Shape = j % 2 === 0 ? new Square(j + i) : new Circle(j + 1); + shapes.push(base.scaled(2)); + } + // Temporaries the group does not keep. + let total = 0; + for (const s of shapes) total += measure(s).area; + shapes.sort((a, b) => a.area() - b.area()); + out.push({ label: `box${i}:${Math.round(total)}`, shapes }); + } + return out; +} + +function summarize(n: number): string { + const list = boxes(n); + let largest = ""; + let best = -1; + for (const b of list) { + const top = b.shapes[b.shapes.length - 1]!.area(); + if (top > best) { + best = top; + largest = b.label; + } + } + return `${largest}@${best}`; +} + +let out = ""; +for (let round = 1; round < 30; round++) { + const all = boxes(round); + out = `${all.length} ${all[0]!.label} ${all[round - 1]!.shapes[0]!.area()} ${summarize(round)}`; + if (round % 7 === 0) console.log(out); +} +console.log(out); diff --git a/tests/corpus/arena-outside.ts b/tests/corpus/arena-outside.ts new file mode 100644 index 000000000..cc965d5d3 --- /dev/null +++ b/tests/corpus/arena-outside.ts @@ -0,0 +1,49 @@ +// Groups whose members refer to objects outside them: a long-lived +// registry, strings built along the way, and a parameter's object. The +// arena's drop releases those references; the outside objects stay usable. +class Category { + members = 0; + name: string; + constructor(name: string) { + this.name = name; + } +} + +class Member { + next: Member | undefined = undefined; + category: Category; + label: string; + rank: number; + constructor(category: Category, label: string, rank: number) { + this.category = category; + this.label = label; + this.rank = rank; + category.members++; + } +} + +function ring(categories: Category[], size: number, seed: number): Member { + const first = new Member(categories[seed % categories.length]!, `m${seed}`, seed); + let last = first; + for (let i = 1; i < size; i++) { + const member = new Member(categories[(seed + i * 7) % categories.length]!, `m${seed}-${i}`, seed + i); + last.next = member; + last = member; + } + last.next = first; + return first; +} + +const categories: Category[] = []; +for (let i = 0; i < 5; i++) categories.push(new Category(`cat-${i}`)); + +let ranks = 0; +let labels = ""; +for (let round = 0; round < 200; round++) { + const r = ring(categories, 30, round); + ranks += r.next!.rank + r.next!.next!.rank; + if (round % 50 === 0) labels += `${r.label}:${r.category.name}:${r.next!.label} `; +} +console.log("ranks", ranks); +console.log("labels", labels.trim()); +for (const c of categories) console.log(c.name, c.members); diff --git a/tests/corpus/arena-region-throws.ts b/tests/corpus/arena-region-throws.ts new file mode 100644 index 000000000..073dca966 --- /dev/null +++ b/tests/corpus/arena-region-throws.ts @@ -0,0 +1,33 @@ +// Exceptions inside call regions: the region's arena is dropped as the +// exception leaves the call, and the caller's own objects are untouched. +interface Entry { + key: string; + value: number; + next: Entry | null; +} + +function tally(keys: string[], limit: number): number { + const entries: Entry[] = []; + for (const k of keys) { + entries.push({ key: k, value: k.length, next: entries.length > 0 ? entries[entries.length - 1]! : null }); + if (entries.length > limit) throw new RangeError(`too many entries: ${entries.length}`); + } + let sum = 0; + for (const e of entries) sum += e.value + (e.next === null ? 0 : e.next.value); + return sum; +} + +const kept: Entry[] = [{ key: "outside", value: 1, next: null }]; +const keys = "alpha beta gamma delta epsilon zeta eta theta iota kappa".split(" "); +let total = 0; +let errors = 0; +for (let round = 0; round < 40; round++) { + try { + total += tally(keys, 3 + (round % 10)); + } catch (e) { + errors++; + if (round < 6) console.log((e as Error).name, (e as Error).message); + } + kept.push({ key: `k${round}`, value: round, next: kept[kept.length - 1]! }); +} +console.log("total", total, "errors", errors, "kept", kept.length, kept[kept.length - 1]!.next!.key); diff --git a/tests/corpus/arena-regions.ts b/tests/corpus/arena-regions.ts new file mode 100644 index 000000000..cd1aa9679 --- /dev/null +++ b/tests/corpus/arena-regions.ts @@ -0,0 +1,44 @@ +// Call regions: calls of functions that build what they need and return +// a number, so everything they allocate is dead when they return. +interface Point { + x: number; + y: number; +} +interface Segment { + from: Point; + to: Point; +} + +function perimeter(n: number, scale: number): number { + const points: Point[] = []; + for (let i = 0; i < n; i++) points.push({ x: Math.cos(i) * scale, y: Math.sin(i) * scale }); + const segments: Segment[] = []; + for (let i = 0; i < n; i++) segments.push({ from: points[i]!, to: points[(i + 1) % n]! }); + let total = 0; + for (const s of segments) total += Math.hypot(s.to.x - s.from.x, s.to.y - s.from.y); + return Math.round(total * 1000) / 1000; +} + +let sum = 0; +for (let k = 3; k < 300; k++) sum += perimeter(k, k / 10); +console.log("perimeters", sum.toFixed(3)); + +function histogram(words: string[]): number { + const buckets: { word: string; count: number }[] = []; + for (const w of words) { + let found = false; + for (const b of buckets) + if (b.word === w) { + b.count++; + found = true; + } + if (!found) buckets.push({ word: w, count: 1 }); + } + let best = 0; + for (const b of buckets) best = Math.max(best, b.count * 100 + b.word.length); + return best; +} +const words = "the quick brown fox jumps over the lazy dog the end".split(" "); +let h = 0; +for (let i = 0; i < 200; i++) h += histogram(words); +console.log("histogram", h); diff --git a/tests/corpus/arena-thrown-member.ts b/tests/corpus/arena-thrown-member.ts new file mode 100644 index 000000000..68382075c --- /dev/null +++ b/tests/corpus/arena-thrown-member.ts @@ -0,0 +1,36 @@ +// A thrown value that holds an object built in a group: the group cannot +// take an arena, because the value outlives it in the catch handler. +class Node { + label: string; + weight: number; + constructor(label: string, weight: number) { + this.label = label; + this.weight = weight; + } +} +class BuildError { + node: Node; + constructor(node: Node) { + this.node = node; + } +} +function build(n: number, failAt: number): Node[] { + const out: Node[] = []; + for (let i = 0; i < n; i++) { + const node = new Node(`n${i}`, i); + out.push(node); + if (i === failAt) throw new BuildError(node); + } + return out; +} +let total = 0; +const saved: string[] = []; +for (let r = 0; r < 20; r++) { + try { + total += build(50, r % 4 === 0 ? 30 : -1).length; + } catch (e) { + const b = e as BuildError; + saved.push(b.node.label + ":" + b.node.weight); + } +} +console.log(total, saved.join(",")); diff --git a/tests/corpus/arena-throws.ts b/tests/corpus/arena-throws.ts new file mode 100644 index 000000000..b3dbd3c16 --- /dev/null +++ b/tests/corpus/arena-throws.ts @@ -0,0 +1,40 @@ +// A builder that throws part way: the arena of the group it was building +// is dropped as the exception leaves, and building goes on afterwards. +interface Item { + id: number; + tags: string[]; + next: Item | null; +} + +function chain(n: number, failAt: number): Item { + let head: Item = { id: 0, tags: ["head"], next: null }; + const first = head; + for (let i = 1; i < n; i++) { + if (i === failAt) throw new Error(`failed at ${i} of ${n}`); + const item: Item = { id: i, tags: [`t${i}`, `u${i % 3}`], next: null }; + head.next = item; + head = item; + } + return first; +} + +function length(item: Item | null): number { + let n = 0; + for (let at = item; at !== null; at = at.next) n++; + return n; +} + +let built = 0; +let failed = 0; +for (let round = 0; round < 60; round++) { + try { + const c = chain(20 + (round % 7), round % 5 === 0 ? 10 + (round % 3) : -1); + built += length(c) + c.next!.tags.length; + } catch (e) { + failed++; + if (round < 20) console.log("caught", (e as Error).message); + } +} +console.log("built", built, "failed", failed); +const last = chain(5, -1); +console.log(last.id, last.next!.id, last.next!.tags.join("/"), length(last)); diff --git a/tests/corpus/arena-trees.ts b/tests/corpus/arena-trees.ts new file mode 100644 index 000000000..eb736dbab --- /dev/null +++ b/tests/corpus/arena-trees.ts @@ -0,0 +1,70 @@ +// Recursive builders whose results their callers only read: each tree is a +// group that lives in an arena until the statement (or the loop body that +// holds it) ends. +class TreeNode { + left: TreeNode | null; + right: TreeNode | null; + value: number; + constructor(left: TreeNode | null, right: TreeNode | null, value: number) { + this.left = left; + this.right = right; + this.value = value; + } + sum(): number { + return this.value + (this.left === null ? 0 : this.left.sum()) + (this.right === null ? 0 : this.right.sum()); + } + depth(): number { + return 1 + Math.max(this.left === null ? 0 : this.left.depth(), this.right === null ? 0 : this.right.depth()); + } +} + +function build(depth: number, value: number): TreeNode { + return depth === 0 + ? new TreeNode(null, null, value) + : new TreeNode(build(depth - 1, value * 2), build(depth - 1, value * 2 + 1), value); +} + +let total = 0; +for (let d = 0; d < 12; d++) total += build(d, 1).sum(); +console.log("sums", total); + +for (let d = 2; d <= 4; d++) { + const t = build(d, 1); + console.log("tree", d, t.sum(), t.depth(), t.left!.value, t.right!.right!.value); +} + +function deepest(n: number): number { + let best = 0; + for (let i = 0; i < n; i++) { + const t = build(i % 6, i); + best = Math.max(best, t.depth() * 1000 + (t.sum() % 1000)); + } + return best; +} +console.log("deepest", deepest(40)); + +// Record-literal trees: a root call whose result its caller only reads +// builds the whole tree, its root node included, in the group's arena. +interface Node2 { + left: Node2 | null; + right: Node2 | null; + value: number; +} + +function buildRecord(depth: number, value: number): Node2 { + return depth === 0 + ? { left: null, right: null, value } + : { left: buildRecord(depth - 1, value * 2), right: buildRecord(depth - 1, value * 2 + 1), value }; +} + +function sumRecord(node: Node2): number { + return node.value + (node.left === null ? 0 : sumRecord(node.left)) + (node.right === null ? 0 : sumRecord(node.right)); +} + +let recordTotal = 0; +for (let d = 0; d < 12; d++) recordTotal += sumRecord(buildRecord(d, 1)); +console.log("record sums", recordTotal); +for (let d = 1; d <= 3; d++) { + const t = buildRecord(d, 1); + console.log("record tree", d, sumRecord(t), t.value, t.left!.value, t.right!.value); +} diff --git a/tests/corpus/arena-workers.ts b/tests/corpus/arena-workers.ts new file mode 100644 index 000000000..b08a49748 --- /dev/null +++ b/tests/corpus/arena-workers.ts @@ -0,0 +1,75 @@ +// Arena groups in worker threads: each worker builds and reads trees of +// classes and record literals, groups that live in the worker's own arena +// until the statement or loop body that holds them ends. The main thread +// builds its own groups meanwhile and keeps one tree for the whole run. +import { isMainThread, parentPort, Worker, workerData } from "node:worker_threads"; + +class Pair { + left: Pair | null; + right: Pair | null; + label: string; + constructor(left: Pair | null, right: Pair | null, label: string) { + this.left = left; + this.right = right; + this.label = label; + } +} + +interface Leaf { + left: Leaf | null; + right: Leaf | null; + weight: number; +} + +function pairs(depth: number, label: string): Pair { + return depth === 0 ? new Pair(null, null, label) : new Pair(pairs(depth - 1, label + "l"), pairs(depth - 1, label + "r"), label); +} + +function leaves(depth: number, weight: number): Leaf { + return depth === 0 + ? { left: null, right: null, weight } + : { left: leaves(depth - 1, weight + 1), right: leaves(depth - 1, weight * 2), weight }; +} + +function countPairs(p: Pair): number { + return 1 + (p.left === null ? 0 : countPairs(p.left)) + (p.right === null ? 0 : countPairs(p.right)); +} + +function rightmost(p: Pair): string { + return p.right === null ? p.label : rightmost(p.right); +} + +function weigh(l: Leaf): number { + return l.weight + (l.left === null ? 0 : weigh(l.left)) + (l.right === null ? 0 : weigh(l.right)); +} + +function task(depth: number, rounds: number): string { + let nodes = 0; + let total = 0; + for (let i = 0; i < rounds; i++) { + nodes += countPairs(pairs(depth, "p")); + total += weigh(leaves(depth, i)); + } + const kept = pairs(depth, "k"); + return `depth ${depth}: ${nodes} pairs, weight ${total}, rightmost ${rightmost(kept)}, kept ${countPairs(kept)}`; +} + +if (isMainThread) { + const longLived = leaves(10, 1); + const depths = [3, 5, 7, 9]; + const lines: string[] = new Array(depths.length).fill(""); + let pending = depths.length; + depths.forEach((depth, index) => { + const worker = new Worker(new URL(import.meta.url), { workerData: depth }); + worker.on("message", (line: string) => { + lines[index] = line; + if (--pending === 0) { + for (const l of lines) console.log(l); + console.log("main", task(6, 20)); + console.log("long lived", weigh(longLived)); + } + }); + }); +} else { + parentPort!.postMessage(task(workerData as number, 50)); +} diff --git a/tests/harness/corpus-costs/arena-array-subclass.ts.json b/tests/harness/corpus-costs/arena-array-subclass.ts.json new file mode 100644 index 000000000..a4a33f447 --- /dev/null +++ b/tests/harness/corpus-costs/arena-array-subclass.ts.json @@ -0,0 +1 @@ +{ "plain": 3100 } diff --git a/tests/harness/corpus-costs/arena-workers.ts.json b/tests/harness/corpus-costs/arena-workers.ts.json new file mode 100644 index 000000000..2180ff94b --- /dev/null +++ b/tests/harness/corpus-costs/arena-workers.ts.json @@ -0,0 +1 @@ +{ "plain": 3600, "san": 18500 } From 9c7d552fdcce6dc9d567d81f7a50d67462d2b897 Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 13:26:29 -0500 Subject: [PATCH 12/52] Link the arena runtime into the runtime C tests --- packages/runtime/src/scr_arena.c | 2 +- packages/runtime/src/scr_arena.h | 2 ++ packages/runtime/src/scr_js_object.test.ts | 1 + packages/runtime/src/scr_json.test.ts | 1 + packages/runtime/src/scr_map.test.ts | 1 + packages/runtime/test/array.test.ts | 1 + packages/runtime/test/bigint.test.ts | 1 + packages/runtime/test/bytes.test.ts | 1 + packages/runtime/test/cipher.test.ts | 1 + packages/runtime/test/closure.test.ts | 1 + packages/runtime/test/dh.test.ts | 1 + packages/runtime/test/glob.test.ts | 1 + packages/runtime/test/inspect.test.ts | 1 + packages/runtime/test/json.test.ts | 1 + packages/runtime/test/lib.test.ts | 1 + packages/runtime/test/map.test.ts | 1 + packages/runtime/test/path.test.ts | 1 + packages/runtime/test/regex.test.ts | 1 + packages/runtime/test/runtime.test.ts | 1 + packages/runtime/test/sha-kernels.test.ts | 1 + packages/runtime/test/sort.test.ts | 1 + packages/runtime/test/string.test.ts | 1 + packages/runtime/test/tonumber.test.ts | 1 + packages/runtime/test/url-legacy.test.ts | 1 + packages/runtime/test/url.test.ts | 1 + 25 files changed, 26 insertions(+), 1 deletion(-) diff --git a/packages/runtime/src/scr_arena.c b/packages/runtime/src/scr_arena.c index f562f8e45..e04a6ed35 100644 --- a/packages/runtime/src/scr_arena.c +++ b/packages/runtime/src/scr_arena.c @@ -64,7 +64,7 @@ _Static_assert(offsetof(ScrArenaHead, disposals) == offsetof(ScrArena, disposals offsetof(ScrArenaHead, closed) == offsetof(ScrArena, closed), "ScrArenaHead is ScrArena's prefix"); -SCR_TL ScrArena *scr_arena_cur; +SCR_TL ScrArena *scr_arena_cur = NULL; static SCR_TL ScrArena *scr_arena_pool; static SCR_TL unsigned scr_arena_pooled; static SCR_TL ScrArenaChunk *scr_arena_chunk_pool; diff --git a/packages/runtime/src/scr_arena.h b/packages/runtime/src/scr_arena.h index a897a13be..cdfe5a476 100644 --- a/packages/runtime/src/scr_arena.h +++ b/packages/runtime/src/scr_arena.h @@ -29,6 +29,8 @@ * Without the small-object allocator (sanitized and audit builds), every * arena object is a block of its own that the drop frees, so a use after * the drop is a use after free that the sanitizer reports. */ +#include "scr_core.h" + #include #include diff --git a/packages/runtime/src/scr_js_object.test.ts b/packages/runtime/src/scr_js_object.test.ts index 1fb90cdaa..6b0e9465b 100644 --- a/packages/runtime/src/scr_js_object.test.ts +++ b/packages/runtime/src/scr_js_object.test.ts @@ -29,6 +29,7 @@ test("dynamic-tier shapes stay within the shape and key-byte budgets, and absent "scr_json.c", "scr_string.c", "scr_array.c", + "scr_arena.c", "scr_map.c", "scr_exception.c", "scr_error.c", diff --git a/packages/runtime/src/scr_json.test.ts b/packages/runtime/src/scr_json.test.ts index e181674ce..88a89c321 100644 --- a/packages/runtime/src/scr_json.test.ts +++ b/packages/runtime/src/scr_json.test.ts @@ -30,6 +30,7 @@ test.each([false, true])( "scr_json.c", "scr_string.c", "scr_array.c", + "scr_arena.c", "scr_map.c", "scr_exception.c", "scr_error.c", diff --git a/packages/runtime/src/scr_map.test.ts b/packages/runtime/src/scr_map.test.ts index 88aef9c63..b567884fc 100644 --- a/packages/runtime/src/scr_map.test.ts +++ b/packages/runtime/src/scr_map.test.ts @@ -27,6 +27,7 @@ test("number-key maps keep Map semantics across linear, direct and hashed indexe "scr_json.c", "scr_string.c", "scr_array.c", + "scr_arena.c", "scr_map.c", "scr_exception.c", "scr_error.c", diff --git a/packages/runtime/test/array.test.ts b/packages/runtime/test/array.test.ts index 4b42b2beb..ffdafb5e0 100644 --- a/packages/runtime/test/array.test.ts +++ b/packages/runtime/test/array.test.ts @@ -24,6 +24,7 @@ beforeAll(async () => { bin, join(testDir, "test_array.c"), join(testDir, "../src/scr_array.c"), + join(testDir, "../src/scr_arena.c"), // Checked-value collection equality shares the native JSON value runtime. join(testDir, "../src/scr_json.c"), join(testDir, "../src/scr_map.c"), diff --git a/packages/runtime/test/bigint.test.ts b/packages/runtime/test/bigint.test.ts index ea0a8b79c..7b6a5e51a 100644 --- a/packages/runtime/test/bigint.test.ts +++ b/packages/runtime/test/bigint.test.ts @@ -32,6 +32,7 @@ beforeAll(async () => { // which pull in the closure/array/box machinery join(testDir, "../src/scr_union.c"), join(testDir, "../src/scr_array.c"), + join(testDir, "../src/scr_arena.c"), // Checked-value collection equality shares the native JSON value runtime. join(testDir, "../src/scr_json.c"), join(testDir, "../src/scr_bigint.c"), diff --git a/packages/runtime/test/bytes.test.ts b/packages/runtime/test/bytes.test.ts index 7ca0606ec..05123bf5f 100644 --- a/packages/runtime/test/bytes.test.ts +++ b/packages/runtime/test/bytes.test.ts @@ -40,6 +40,7 @@ beforeAll(async () => { join(testDir, "../src/scr_hash.c"), join(testDir, "../src/scr_string.c"), join(testDir, "../src/scr_array.c"), + join(testDir, "../src/scr_arena.c"), join(testDir, "../src/scr_map.c"), join(testDir, "../src/scr_exception.c"), join(testDir, "../src/scr_error.c"), diff --git a/packages/runtime/test/cipher.test.ts b/packages/runtime/test/cipher.test.ts index 6b44a4b4b..44bbc250c 100644 --- a/packages/runtime/test/cipher.test.ts +++ b/packages/runtime/test/cipher.test.ts @@ -20,6 +20,7 @@ const runtimeSources = [ "scr_hash.c", "scr_string.c", "scr_array.c", + "scr_arena.c", "scr_map.c", "scr_exception.c", "scr_error.c", diff --git a/packages/runtime/test/closure.test.ts b/packages/runtime/test/closure.test.ts index 96fad6c10..e4c6200dc 100644 --- a/packages/runtime/test/closure.test.ts +++ b/packages/runtime/test/closure.test.ts @@ -25,6 +25,7 @@ test("closure/box runtime: RC cascades clean under ASan + audit", async () => { join(srcDir, "scr_closure.c"), join(srcDir, "scr_string.c"), join(srcDir, "scr_array.c"), + join(srcDir, "scr_arena.c"), join(srcDir, "scr_json.c"), join(srcDir, "scr_bigint.c"), join(srcDir, "scr_map.c"), diff --git a/packages/runtime/test/dh.test.ts b/packages/runtime/test/dh.test.ts index d402d0465..1f324ffb0 100644 --- a/packages/runtime/test/dh.test.ts +++ b/packages/runtime/test/dh.test.ts @@ -20,6 +20,7 @@ const runtimeSources = [ "scr_hash.c", "scr_string.c", "scr_array.c", + "scr_arena.c", "scr_map.c", "scr_exception.c", "scr_error.c", diff --git a/packages/runtime/test/glob.test.ts b/packages/runtime/test/glob.test.ts index 92292787a..9900382ea 100644 --- a/packages/runtime/test/glob.test.ts +++ b/packages/runtime/test/glob.test.ts @@ -35,6 +35,7 @@ beforeAll(async () => { join(testDir, "../src/scr_string.c"), join(testDir, "../src/scr_map.c"), join(testDir, "../src/scr_array.c"), + join(testDir, "../src/scr_arena.c"), join(testDir, "../src/scr_json.c"), join(testDir, "../src/scr_bigint.c"), join(testDir, "../src/scr_exception.c"), diff --git a/packages/runtime/test/inspect.test.ts b/packages/runtime/test/inspect.test.ts index 772afe4ef..40d812e53 100644 --- a/packages/runtime/test/inspect.test.ts +++ b/packages/runtime/test/inspect.test.ts @@ -35,6 +35,7 @@ beforeAll(async () => { join(testDir, "../src/scr_string.c"), join(testDir, "../src/scr_number.c"), join(testDir, "../src/scr_array.c"), + join(testDir, "../src/scr_arena.c"), join(testDir, "../src/scr_bytes.c"), join(testDir, "../src/scr_shared.c"), join(testDir, "../src/scr_lib.c"), diff --git a/packages/runtime/test/json.test.ts b/packages/runtime/test/json.test.ts index b08f2fdd3..b049e6922 100644 --- a/packages/runtime/test/json.test.ts +++ b/packages/runtime/test/json.test.ts @@ -29,6 +29,7 @@ beforeAll(async () => { join(testDir, "../src/scr_bigint.c"), join(testDir, "../src/scr_string.c"), join(testDir, "../src/scr_array.c"), + join(testDir, "../src/scr_arena.c"), join(testDir, "../src/scr_map.c"), join(testDir, "../src/scr_exception.c"), join(testDir, "../src/scr_error.c"), diff --git a/packages/runtime/test/lib.test.ts b/packages/runtime/test/lib.test.ts index 2a32202b7..d1e9e8c90 100644 --- a/packages/runtime/test/lib.test.ts +++ b/packages/runtime/test/lib.test.ts @@ -35,6 +35,7 @@ beforeAll(async () => { join(testDir, "../src/scr_path.c"), join(testDir, "../src/scr_string.c"), join(testDir, "../src/scr_array.c"), + join(testDir, "../src/scr_arena.c"), join(testDir, "../src/scr_map.c"), join(testDir, "../src/scr_exception.c"), join(testDir, "../src/scr_error.c"), diff --git a/packages/runtime/test/map.test.ts b/packages/runtime/test/map.test.ts index 4db1889ac..4a56c3055 100644 --- a/packages/runtime/test/map.test.ts +++ b/packages/runtime/test/map.test.ts @@ -33,6 +33,7 @@ beforeAll(async () => { // which pull in the closure/array/box machinery join(testDir, "../src/scr_union.c"), join(testDir, "../src/scr_array.c"), + join(testDir, "../src/scr_arena.c"), // Checked-value collection equality shares the native JSON value runtime. join(testDir, "../src/scr_json.c"), join(testDir, "../src/scr_bigint.c"), diff --git a/packages/runtime/test/path.test.ts b/packages/runtime/test/path.test.ts index 7f0da7841..79d34c1c3 100644 --- a/packages/runtime/test/path.test.ts +++ b/packages/runtime/test/path.test.ts @@ -29,6 +29,7 @@ beforeAll(async () => { join(testDir, "../src/scr_string.c"), join(testDir, "../src/scr_number.c"), join(testDir, "../src/scr_array.c"), + join(testDir, "../src/scr_arena.c"), // Checked-value collection equality shares the native JSON value runtime. join(testDir, "../src/scr_json.c"), join(testDir, "../src/scr_map.c"), diff --git a/packages/runtime/test/regex.test.ts b/packages/runtime/test/regex.test.ts index 47853d960..cbcbc868b 100644 --- a/packages/runtime/test/regex.test.ts +++ b/packages/runtime/test/regex.test.ts @@ -36,6 +36,7 @@ beforeAll(async () => { join(testDir, "../src/scr_string.c"), join(testDir, "../src/scr_map.c"), join(testDir, "../src/scr_array.c"), + join(testDir, "../src/scr_arena.c"), join(testDir, "../src/scr_json.c"), join(testDir, "../src/scr_bigint.c"), join(testDir, "../src/scr_exception.c"), diff --git a/packages/runtime/test/runtime.test.ts b/packages/runtime/test/runtime.test.ts index 11bdf75b4..5b115f868 100644 --- a/packages/runtime/test/runtime.test.ts +++ b/packages/runtime/test/runtime.test.ts @@ -13,6 +13,7 @@ const RUNTIME_SOURCES = [ "scr_bigint.c", "scr_string.c", "scr_array.c", + "scr_arena.c", "scr_bytes.c", "scr_shared.c", "scr_bytes_io.c", diff --git a/packages/runtime/test/sha-kernels.test.ts b/packages/runtime/test/sha-kernels.test.ts index 6f7759348..4cb12a638 100644 --- a/packages/runtime/test/sha-kernels.test.ts +++ b/packages/runtime/test/sha-kernels.test.ts @@ -19,6 +19,7 @@ const runtimeSources = [ "scr_hash.c", "scr_string.c", "scr_array.c", + "scr_arena.c", "scr_map.c", "scr_exception.c", "scr_error.c", diff --git a/packages/runtime/test/sort.test.ts b/packages/runtime/test/sort.test.ts index 711a41f03..fed629b73 100644 --- a/packages/runtime/test/sort.test.ts +++ b/packages/runtime/test/sort.test.ts @@ -24,6 +24,7 @@ beforeAll(async () => { bin, join(testDir, "test_sort.c"), join(testDir, "../src/scr_array.c"), + join(testDir, "../src/scr_arena.c"), // Checked-value collection equality shares the native JSON value runtime. join(testDir, "../src/scr_json.c"), join(testDir, "../src/scr_map.c"), diff --git a/packages/runtime/test/string.test.ts b/packages/runtime/test/string.test.ts index 72a479a10..0ca58aaf4 100644 --- a/packages/runtime/test/string.test.ts +++ b/packages/runtime/test/string.test.ts @@ -30,6 +30,7 @@ beforeAll(async () => { // scr_str_split returns a real string[]: the array module and its // own dependencies join the link (the array.test.ts set). join(testDir, "../src/scr_array.c"), + join(testDir, "../src/scr_arena.c"), // Checked-value collection equality shares the native JSON value runtime. join(testDir, "../src/scr_json.c"), join(testDir, "../src/scr_map.c"), diff --git a/packages/runtime/test/tonumber.test.ts b/packages/runtime/test/tonumber.test.ts index 2a3c24575..0a95f2bb6 100644 --- a/packages/runtime/test/tonumber.test.ts +++ b/packages/runtime/test/tonumber.test.ts @@ -37,6 +37,7 @@ test("scr_string_to_number and scr_parse_float match Node on committed oracle ca // scr_string.c's own link closure (the string.test.ts set): // scr_str_split pulls the array module and its dependencies. join(testDir, "../src/scr_array.c"), + join(testDir, "../src/scr_arena.c"), // Checked-value collection equality shares the native JSON value runtime. join(testDir, "../src/scr_json.c"), join(testDir, "../src/scr_map.c"), diff --git a/packages/runtime/test/url-legacy.test.ts b/packages/runtime/test/url-legacy.test.ts index a237382ae..0af2f7768 100644 --- a/packages/runtime/test/url-legacy.test.ts +++ b/packages/runtime/test/url-legacy.test.ts @@ -38,6 +38,7 @@ beforeAll(async () => { join(testDir, "../src/scr_string.c"), join(testDir, "../src/scr_map.c"), join(testDir, "../src/scr_array.c"), + join(testDir, "../src/scr_arena.c"), join(testDir, "../src/scr_json.c"), join(testDir, "../src/scr_bigint.c"), join(testDir, "../src/scr_exception.c"), diff --git a/packages/runtime/test/url.test.ts b/packages/runtime/test/url.test.ts index 9876ec4e5..ea6948487 100644 --- a/packages/runtime/test/url.test.ts +++ b/packages/runtime/test/url.test.ts @@ -29,6 +29,7 @@ beforeAll(async () => { join(testDir, "../src/scr_string.c"), join(testDir, "../src/scr_number.c"), join(testDir, "../src/scr_array.c"), + join(testDir, "../src/scr_arena.c"), // Checked-value collection equality shares the native JSON value runtime. join(testDir, "../src/scr_json.c"), join(testDir, "../src/scr_map.c"), From 05dda22efa5ac3039211bedb9a3d7a41ccc27153 Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 14:09:17 -0500 Subject: [PATCH 13/52] Read TypeScript 7.1's heritage clause elements beside 7.0's TypeScript 7.1 parses the elements of an interface's `extends` and a class's `implements` as TypeReference nodes, whose names are entity names, where 7.0 gives ExpressionWithTypeArguments nodes. heritage-elements.ts recognizes both forms, and the readers that took an element's expression read either: - contract-types.ts finds `implements ProgramLifetime` and `implements Acyclic` written as type references; - narrowing-stability.ts takes a qualified name as it takes a property access; - generic-functions.ts reads an element's name in either form, and keeps counting a name in a heritage clause as a value reference. --- .../compiler/src/frontend/contract-types.ts | 15 ++-- .../src/frontend/heritage-elements.test.ts | 82 +++++++++++++++++++ .../src/frontend/heritage-elements.ts | 28 +++++++ .../frontend/lowering/generic-functions.ts | 13 ++- .../frontend/lowering/narrowing-stability.ts | 6 +- 5 files changed, 132 insertions(+), 12 deletions(-) create mode 100644 packages/compiler/src/frontend/heritage-elements.test.ts create mode 100644 packages/compiler/src/frontend/heritage-elements.ts diff --git a/packages/compiler/src/frontend/contract-types.ts b/packages/compiler/src/frontend/contract-types.ts index 4ded2a1a0..a7bf32268 100644 --- a/packages/compiler/src/frontend/contract-types.ts +++ b/packages/compiler/src/frontend/contract-types.ts @@ -11,6 +11,7 @@ import type { ScrDiagnostic } from "../diagnostics/diagnostic.js"; import type { SrcLoc } from "../ir/ir.js"; import { locOf } from "./program.js"; import * as ts from "./ts7/adapter.js"; +import { type HeritageElement, isHeritageElement } from "./heritage-elements.js"; export const CONTRACT_TYPES_MODULE = "@scriptc/types"; @@ -86,11 +87,11 @@ function markerOf(checker: ts.TypeChecker, ref: ts.TypeReferenceNode): ContractM } /** The marker a heritage clause names (`implements Acyclic`, - * `implements sc.ProgramLifetime`). */ -function markerOfHeritage( - checker: ts.TypeChecker, - node: ts.ExpressionWithTypeArguments, -): ContractMarker | null { + * `implements sc.ProgramLifetime`), as an ExpressionWithTypeArguments or, + * in TypeScript 7.1's interface `extends` and class `implements`, a + * TypeReference. */ +function markerOfHeritage(checker: ts.TypeChecker, node: HeritageElement): ContractMarker | null { + if (ts.isTypeReferenceNode(node)) return markerOf(checker, node); const e = node.expression; if (ts.isIdentifier(e)) return markerNamed(checker, e, e.text, false); if (ts.isPropertyAccessExpression(e) && ts.isIdentifier(e.expression) && ts.isIdentifier(e.name)) @@ -168,7 +169,7 @@ export function collectContractAnnotations( ts.walkPreorder( sf, (node) => { - if (ts.isExpressionWithTypeArguments(node)) { + if (isHeritageElement(node)) { const marker = markerOfHeritage(checker, node); if (marker === null) return; out.count++; @@ -231,7 +232,7 @@ function unsupported(out: ContractAnnotations, node: ts.Node, marker: ContractMa function placeHeritage( out: ContractAnnotations, checker: ts.TypeChecker, - node: ts.ExpressionWithTypeArguments, + node: HeritageElement, marker: ContractMarker, resolveUnit: ContractUnitResolver, ): void { diff --git a/packages/compiler/src/frontend/heritage-elements.test.ts b/packages/compiler/src/frontend/heritage-elements.test.ts new file mode 100644 index 000000000..4ceb3c983 --- /dev/null +++ b/packages/compiler/src/frontend/heritage-elements.test.ts @@ -0,0 +1,82 @@ +import { fileURLToPath } from "node:url"; +import { dirname } from "node:path"; +import { expect, test } from "vitest"; +import { collectContractAnnotations } from "./contract-types.js"; +import { isHeritageElement, heritageElementTarget } from "./heritage-elements.js"; +import * as ts from "./ts7/adapter.js"; +import { Ts7Api } from "./ts7/api.js"; +import { Ts7Host } from "./ts7/program-host.js"; +import { Ts7RpcClient } from "./ts7/rpc-client.js"; +import { TS7_FILE_SYSTEM_CALLBACKS } from "./ts7/rpc-filesystem.js"; +import { spawnTs7Wire } from "./ts7/rpc-process.js"; +import { ts7TestServers, type Ts7TestServer } from "./ts7/test-servers.js"; + +const corpus = fileURLToPath(new URL("../../../../tests/corpus/", import.meta.url)); + +/** Corpus programs whose classes implement contract markers and interfaces. */ +const programs = [ + "4636-contract-program-lifetime-references.ts", + "5010-lifetime-region-generations.ts", + "7401-program-lifetime-array-teardown.ts", +]; + +function host(server: Ts7TestServer): Ts7Host { + return new Ts7Host( + (options) => + new Ts7Api( + new Ts7RpcClient( + spawnTs7Wire(server.executable, [ + "--api", + "--cwd", + options.cwd, + `--callbacks=${TS7_FILE_SYSTEM_CALLBACKS}`, + ]), + ), + options.fs, + options.collectTiming, + ), + { cwd: dirname(corpus) }, + ); +} + +/** Each heritage element's clause token, kind and the text it refers to, + * and the program's contract annotations. */ +function facts(server: Ts7TestServer, file: string) { + const programHost = host(server); + try { + const program = programHost.createProgram([corpus + file], { + strict: true, + types: [], + target: ts.ScriptTarget.ESNext, + }); + const source = program.getSourceFile(corpus + file)!; + const elements: string[] = []; + ts.walkPreorder(source, (node) => { + if (!isHeritageElement(node)) return undefined; + const clause = node.parent as ts.HeritageClause; + elements.push( + `${clause.token === ts.SyntaxKind.ImplementsKeyword ? "implements" : "extends"} ${ts.getTextOfNode(heritageElementTarget(node))}`, + ); + return undefined; + }); + const contracts = collectContractAnnotations(program.getTypeChecker(), [source]); + return { + elements, + classes: [...contracts.classes.values()].map((note) => `${note.marker} ${note.name}`), + acyclic: contracts.acyclic.map((entry) => entry.note.name), + diagnostics: contracts.diagnostics.map((diagnostic) => diagnostic.code), + }; + } finally { + programHost.close(); + } +} + +test("heritage elements and the contracts they name read the same from tsc 7.0 and tsc 7.1", () => { + const [old, next] = ts7TestServers(); + for (const file of programs) { + const expected = facts(old!, file); + expect(expected.classes.length, file).toBeGreaterThan(0); + expect(expected.diagnostics, file).toEqual([]); + expect(facts(next!, file), file).toEqual(expected); + } +}); diff --git a/packages/compiler/src/frontend/heritage-elements.ts b/packages/compiler/src/frontend/heritage-elements.ts new file mode 100644 index 000000000..b937c073a --- /dev/null +++ b/packages/compiler/src/frontend/heritage-elements.ts @@ -0,0 +1,28 @@ +import * as ts from "./ts7/adapter.js"; + +/** An element of a heritage clause. TypeScript 7.0 parses every element as + * an ExpressionWithTypeArguments. TypeScript 7.1 parses the elements of an + * interface's `extends` and a class's `implements` as TypeReference nodes, + * whose names are entity names (an Identifier or a QualifiedName); a class's + * `extends` element stays an ExpressionWithTypeArguments. */ +export type HeritageElement = ts.ExpressionWithTypeArguments | ts.TypeReferenceNode; + +/** Whether `node` is a TypeReference that is a heritage clause element. */ +export function isHeritageTypeReference(node: ts.Node): node is ts.TypeReferenceNode { + return ( + ts.isTypeReferenceNode(node) && node.parent !== undefined && ts.isHeritageClause(node.parent) + ); +} + +/** Whether `node` is a heritage clause element in either form. */ +export function isHeritageElement(node: ts.Node): node is HeritageElement { + return ts.isExpressionWithTypeArguments(node) || isHeritageTypeReference(node); +} + +/** The name or expression a heritage clause element refers to: its + * expression (an ExpressionWithTypeArguments) or its type name (a + * TypeReference). */ +export function heritageElementTarget(element: ts.Node): ts.Expression | ts.EntityName { + if (ts.isTypeReferenceNode(element)) return element.typeName; + return (element as ts.ExpressionWithTypeArguments).expression; +} diff --git a/packages/compiler/src/frontend/lowering/generic-functions.ts b/packages/compiler/src/frontend/lowering/generic-functions.ts index dcd2efc08..046b34008 100644 --- a/packages/compiler/src/frontend/lowering/generic-functions.ts +++ b/packages/compiler/src/frontend/lowering/generic-functions.ts @@ -4,6 +4,7 @@ import { staticNameBindings } from "./static-function-names.js"; import { positionTag } from "./structural-positions.js"; import { keyedHelperName } from "./stable-names.js"; import * as ts from "../ts7/adapter.js"; +import { heritageElementTarget, isHeritageTypeReference } from "../heritage-elements.js"; import { bodyReadsArguments } from "../arguments-usage.js"; import type { Lowerer } from "./lowerer.js"; import { @@ -655,8 +656,9 @@ function extendsParameter( } for (const clause of decl.heritageClauses?.nodes ?? []) for (const base of clause.types.nodes) { - const symbol = ts.isIdentifier(base.expression) - ? lowerer.checker.getSymbolAtLocation(base.expression) + const target = heritageElementTarget(base); + const symbol = ts.isIdentifier(target) + ? lowerer.checker.getSymbolAtLocation(target) : undefined; if (symbol !== undefined && params.has(symbol)) return true; } @@ -3036,7 +3038,12 @@ function bindingReferences( resolved = lowerer.checker.getShorthandAssignmentValueSymbol(parent) ?? resolved; if (resolved !== symbol) return false; for (let p: ts.Node | undefined = parent; p !== undefined; p = p.parent) { - if (ts.isTypeNode(p) && p.kind !== ts.SyntaxKind.ExpressionWithTypeArguments) return false; + if ( + ts.isTypeNode(p) && + p.kind !== ts.SyntaxKind.ExpressionWithTypeArguments && + !isHeritageTypeReference(p) + ) + return false; if (ts.isStatement(p) || ts.isFunctionLike(p)) break; } return true; diff --git a/packages/compiler/src/frontend/lowering/narrowing-stability.ts b/packages/compiler/src/frontend/lowering/narrowing-stability.ts index d0c9b04a6..9fae65a89 100644 --- a/packages/compiler/src/frontend/lowering/narrowing-stability.ts +++ b/packages/compiler/src/frontend/lowering/narrowing-stability.ts @@ -1,4 +1,5 @@ import * as ts from "../ts7/adapter.js"; +import { heritageElementTarget } from "../heritage-elements.js"; import { InternalCompilerError } from "../../errors.js"; import { typeEquals } from "../../ir/ir.js"; import type { IrType } from "../../ir/ir.js"; @@ -674,8 +675,9 @@ export class NarrowingStability { if (node.modifiers?.nodes.some((m) => m.kind === ts.SyntaxKind.Decorator)) return true; for (const clause of node.heritageClauses?.nodes ?? []) { for (const heritage of clause.types.nodes) { - const e = heritage.expression; - if (!ts.isIdentifier(e) && !ts.isPropertyAccessExpression(e)) return true; + const e = heritageElementTarget(heritage); + if (!ts.isIdentifier(e) && !ts.isPropertyAccessExpression(e) && !ts.isQualifiedName(e)) + return true; } } return node.members.nodes.some( From f1e27f2e44d018d5b008a8038a1dfd7c4e5c6307 Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 14:31:32 -0500 Subject: [PATCH 14/52] Poll the loops of a nest on every iteration in ELF worker executables --- .../src/backend/llvm/emit-statements.ts | 25 +---- packages/compiler/src/backend/llvm/emitter.ts | 29 +++++- packages/compiler/src/backend/loop-polls.ts | 15 +++ .../test/counted-loop-emission.test.ts | 53 ++++++++++ ...worker-terminate-short-inner-loops.ts.json | 6 ++ ...tive-worker-terminate-short-inner-loops.ts | 96 +++++++++++++++++++ ...worker-terminate-short-inner-loops.ts.json | 1 + 7 files changed, 201 insertions(+), 24 deletions(-) create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/native-worker-terminate-short-inner-loops.ts.json create mode 100644 tests/corpus/native-worker-terminate-short-inner-loops.ts create mode 100644 tests/harness/corpus-costs/native-worker-terminate-short-inner-loops.ts.json diff --git a/packages/compiler/src/backend/llvm/emit-statements.ts b/packages/compiler/src/backend/llvm/emit-statements.ts index 45d341853..1ea18d8e1 100644 --- a/packages/compiler/src/backend/llvm/emit-statements.ts +++ b/packages/compiler/src/backend/llvm/emit-statements.ts @@ -96,7 +96,7 @@ import { import { emitStringInputs } from "./string-lifetimes.js"; import { LOOPS } from "./loop-state.js"; import { loopUnrollAttachment, periodicGuardPeriod } from "./periodic-guards.js"; -import { loopAccessesTypedArrays } from "../loop-polls.js"; +import { containsLoop, loopAccessesTypedArrays } from "../loop-polls.js"; import { emitConstantChoice, matchConstantChoice } from "./constant-choices.js"; /** A callback loop version copies the loop; keep the copies small. */ @@ -1228,8 +1228,8 @@ export function emitStmtBody(emitter: LlEmitter, s: IrStmt): void { }; // A counted loop over typed arrays, or a loop to a typed array's // length, polls between blocks of WORKER_POLL_BLOCK iterations instead - // of counting a budget in its body: the inner loop over a block then - // has no exit besides its own bound, which LLVM can vectorize. A typed + // of in its body: the inner loop over a block then has no exit + // besides its own bound, which LLVM can vectorize. A typed // array's length is fixed, so each block can take it as its limit when // the loop does not assign the array's binding. // @@ -2760,8 +2760,8 @@ interface StripMinedCounter { * iterations, with the cancellation poll between blocks: the outer header * tests the counter against the loop's limit, each block runs the body up * to the nearer of the limit and WORKER_POLL_BLOCK steps on, and the poll - * follows the block. It polls as often as the budget it replaces, and the - * inner loop's only exit besides `break` and `return` is its bound. + * follows the block. It polls once per block, and the inner loop's only + * exit besides `break` and `return` is its bound. * * With `runSlot` (for a loop that another loop of the function encloses), a * block that ends at the limit leaves the loop without polling, and a run @@ -2895,21 +2895,6 @@ function emitStripMinedCountedLoop( B.br(lc); } -/** Whether `body` holds a loop outside its closures. */ -function containsLoop(body: IrStmt[]): boolean { - const inStmt = (s: IrStmt): boolean => - s.kind === "while" || - s.kind === "doWhile" || - s.kind === "for" || - s.kind === "forOf" || - !everyStmtChild( - s, - () => true, - (child) => !inStmt(child), - ); - return body.some(inStmt); -} - function enterLoopHeader(emitter: LlEmitter, header: string): void { const dispatch = emitter.speculationHeader; emitter.speculationHeader = null; diff --git a/packages/compiler/src/backend/llvm/emitter.ts b/packages/compiler/src/backend/llvm/emitter.ts index 2f3a0f212..4e6f8af0b 100644 --- a/packages/compiler/src/backend/llvm/emitter.ts +++ b/packages/compiler/src/backend/llvm/emitter.ts @@ -27,7 +27,7 @@ import { streamTypedRefEligible, undefinedArmTag, } from "../../ir/analysis.js"; -import { loopTestsEveryIteration } from "../loop-polls.js"; +import { containsLoop, loopTestsEveryIteration } from "../loop-polls.js"; import type { IrBytesElem, IrExpr, @@ -826,6 +826,11 @@ const NO_BORROWED: ReadonlySet = new Set(); /** The nodes that write a binding by its id (numberGlobalWriters). */ const GLOBAL_WRITE_KINDS: readonly IrNodeKind[] = ["assign", "varDecl", "assignExpr", "incDec"]; + +/** workerLoopBudget's answer for a loop that polls on every iteration + * instead of counting down in a slot. */ +const POLL_EVERY_ITERATION = "%worker.poll.every"; + /** Runtime library calls (readsLoopMetrics). */ const LIB_CALL_KINDS: readonly IrNodeKind[] = ["libCall"]; @@ -4013,10 +4018,22 @@ export class LlEmitter { ); } + /** The countdown slot of `loop`'s cancellation poll (emitWorkerLoopCheck), + * or null when the loop does not poll. An ELF worker executable's poll is + * one ordered load of the thread's own pending word. A loop nest keeps + * one countdown per loop, which its register pressure often leaves in + * memory, so the loops of a nest there poll on every iteration and get + * POLL_EVERY_ITERATION instead of a slot. A loop on its own keeps its + * countdown in a register, which costs less than the load. */ workerLoopBudget( loop: Extract, ): string | null { if (!this.workerLoopPolls(loop)) return null; + if ( + this.executableTls && + (this.jumpTargets.some((target) => target.kind === "loop") || containsLoop(loop.body)) + ) + return POLL_EVERY_ITERATION; const slot = this.B.slot(); this.B.entryAllocas.push(`${slot} = alloca i32 ; worker cancellation budget`); this.B.line(`store i32 0, ptr ${slot}`); @@ -4121,6 +4138,10 @@ export class LlEmitter { * stay in the loop. */ emitWorkerLoopCheck(slot: string | null): void { if (slot === null) return; + if (slot === POLL_EVERY_ITERATION) { + this.emitWorkerPoll(); + return; + } const B = this.B; const budget = B.tmp(), due = B.tmp(), @@ -4140,9 +4161,9 @@ export class LlEmitter { } /** The cancellation poll itself. Calls and throwing operations retain - * their own checks. Loops amortize this extra poll across bounded - * batches of iterations so scalar work does not cross the runtime ABI on - * every iteration. */ + * their own checks. Outside ELF worker executables, loops amortize this + * extra poll across bounded batches of iterations so scalar work does not + * cross the runtime ABI on every iteration. */ emitWorkerPoll(): void { this.emitPendingCheck(undefined, true); } diff --git a/packages/compiler/src/backend/loop-polls.ts b/packages/compiler/src/backend/loop-polls.ts index 866711fb7..b49026fa2 100644 --- a/packages/compiler/src/backend/loop-polls.ts +++ b/packages/compiler/src/backend/loop-polls.ts @@ -137,3 +137,18 @@ export function loopAccessesTypedArrays(loop: Loop): boolean { }; return loop.body.some(inStmt); } + +/** Whether `body` holds a loop outside its closures. */ +export function containsLoop(body: readonly IrStmt[]): boolean { + const inStmt = (s: IrStmt): boolean => + s.kind === "while" || + s.kind === "doWhile" || + s.kind === "for" || + s.kind === "forOf" || + !everyStmtChild( + s, + () => true, + (child) => !inStmt(child), + ); + return body.some(inStmt); +} diff --git a/packages/compiler/test/counted-loop-emission.test.ts b/packages/compiler/test/counted-loop-emission.test.ts index 66d31e14b..914dc81d8 100644 --- a/packages/compiler/test/counted-loop-emission.test.ts +++ b/packages/compiler/test/counted-loop-emission.test.ts @@ -137,6 +137,59 @@ test("worker programs poll counted loops over typed arrays between blocks of ite } }); +test("ELF worker executables poll the loops of a nest on every iteration", async () => { + const dir = await mkdtemp(join(tmpdir(), "scriptc-nest-poll-")); + try { + const entry = join(dir, "nest.ts"); + await writeFile( + entry, + [ + 'import { isMainThread, Worker } from "node:worker_threads";', + "export function steps(limit: number): number {", + " let total = 0;", + " for (let start = 1; start < limit; start++) {", + " let x = start;", + " while (x !== 1) {", + " x = x % 2 === 0 ? x / 2 : 3 * x + 1;", + " total++;", + " }", + " }", + " return total;", + "}", + "export function mix(n: number): number {", + " let t = 0;", + " for (let i = 0; i < n; i++) t = (t * 31 + i) % 1000003;", + " return t;", + "}", + "console.log(steps(8), mix(8));", + "if (!isMainThread) new Worker(new URL(import.meta.url));", + ].join("\n"), + ); + const outPath = join(dir, "nest.ir.json"); + const result = await compile(entry, { outPath, outDir: dir, outputKind: "ir" }); + if (!result.ok) throw new Error(result.diagnostics.map((d) => d.message).join("\n")); + const mod = deserializeModule(await readFile(outPath, "utf8")); + const body = (ll: string, name: string): string => + ll.match( + new RegExp( + `define internal [^\\n]+ @sc_b?f_${name}(?:\\.i32)?\\([^\\n]*\\n([\\s\\S]*?)\\n\\}`, + ), + )![1]!; + // Both loops of the nest test the thread's pending word on every + // iteration and keep no countdown; a loop on its own keeps one. + const elf = emitLlvmModule(mod, { targetTriple: "x86_64-unknown-linux-gnu" }); + const steps = body(elf, "steps"); + expect(steps).not.toContain("worker cancellation budget"); + expect(steps.match(/= load atomic i32, ptr @scr_exc_flag monotonic/g)?.length).toBe(2); + expect(body(elf, "mix")).toContain("worker cancellation budget"); + // Elsewhere the poll reads the process-wide alert word: the nest counts. + const darwin = emitLlvmModule(mod, { targetTriple: "arm64-apple-macosx14.0.0" }); + expect(body(darwin, "steps").match(/worker cancellation budget/g)?.length).toBe(2); + } finally { + await rm(dir, { recursive: true, force: true }); + } +}); + test("worker programs poll no loop whose proven ranges bound its runs inside another loop", async () => { const dir = await mkdtemp(join(tmpdir(), "scriptc-bounded-loop-polls-")); try { diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/native-worker-terminate-short-inner-loops.ts.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/native-worker-terminate-short-inner-loops.ts.json new file mode 100644 index 000000000..8332ee20d --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/native-worker-terminate-short-inner-loops.ts.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/native-worker-terminate-short-inner-loops.ts" + ], + "diags": [] +} diff --git a/tests/corpus/native-worker-terminate-short-inner-loops.ts b/tests/corpus/native-worker-terminate-short-inner-loops.ts new file mode 100644 index 000000000..33a213ea8 --- /dev/null +++ b/tests/corpus/native-worker-terminate-short-inner-loops.ts @@ -0,0 +1,96 @@ +// worker.terminate() stops a worker that spends its time in short runs of +// inner loops: counted and paired loops of a few iterations inside loops +// without a condition, runs at the length where an inner loop starts to +// poll on its own, and a short inner loop whose body calls a slow function. +// Each terminate resolves promptly. +import { Worker, isMainThread, parentPort, workerData } from "node:worker_threads"; + +function flips(n: number): number { + const p = new Int32Array(n), + q = new Int32Array(n), + count = new Int32Array(n); + for (let i = 0; i < n; i++) p[i] = i; + let total = 0; + for (let round = 0; ; round++) { + for (let i = 0; i < n; i++) q[i] = p[i]!; + let first = q[0]!; + for (;;) { + if (first === 0) break; + for (let i = 0, j = first; i < j; i++, j--) { + const t = q[i]!; + q[i] = q[j]!; + q[j] = t; + } + total++; + first = q[0]!; + } + // The next permutation: rotate the first k + 1 elements for the + // smallest k whose count has not run out. + for (let k = 1; ; k++) { + if (k === n) { + for (let i = 0; i < n; i++) p[i] = i; + count.fill(0); + break; + } + const head = p[0]!; + for (let i = 0; i < k; i++) p[i] = p[i + 1]!; + p[k] = head; + if (++count[k]! <= k) break; + count[k] = 0; + } + if (round === 2000) parentPort!.postMessage("ready"); + } + return total; +} + +function thresholds(values: number[]): number { + let acc = 0; + for (let round = 0; ; round++) { + for (const run of [63, 64, 65]) { + for (let i = 0; i < run; i++) acc = (acc + values[i]! * round) % 1000003; + for (let i = 0, j = run; i < j; i++, j--) acc = (acc + values[i]! + values[j]!) % 1000003; + } + if (round === 2000) parentPort!.postMessage("ready"); + } + return acc; +} + +function slow(seed: number): number { + let acc = seed; + for (let i = 0; i < 20000; i++) acc = (acc * 31 + i) % 1000003; + return acc; +} + +function slowBodies(): number { + let acc = 0; + for (let round = 0; ; round++) { + for (let i = 0; i < 4; i++) acc = (acc + slow(acc + i)) % 1000003; + if (round === 50) parentPort!.postMessage("ready"); + } + return acc; +} + +if (isMainThread) { + for (const kind of ["flips", "thresholds", "slow"]) { + await new Promise((resolve) => { + const worker = new Worker(new URL(import.meta.url), { workerData: kind }); + worker.once("message", () => { + const asked = Date.now(); + void worker.terminate().then((code: number) => { + console.log(kind, "terminate", code, Date.now() - asked < 1000 ? "prompt" : "late"); + }); + }); + worker.once("exit", (code: number) => { + console.log(kind, "exit", code); + resolve(); + }); + }); + } +} else { + let result = 0; + if (workerData === "flips") result = flips(9); + else if (workerData === "thresholds") + result = thresholds(Array.from({ length: 70 }, (_, i) => i)); + else result = slowBodies(); + console.log("unexpected result", result); +} diff --git a/tests/harness/corpus-costs/native-worker-terminate-short-inner-loops.ts.json b/tests/harness/corpus-costs/native-worker-terminate-short-inner-loops.ts.json new file mode 100644 index 000000000..c85984a8b --- /dev/null +++ b/tests/harness/corpus-costs/native-worker-terminate-short-inner-loops.ts.json @@ -0,0 +1 @@ +{ "plain": 4906, "san": 6969 } From f12b2b041d31e75119ccf707be03178091930930 Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 14:34:49 -0500 Subject: [PATCH 15/52] Cheaper trial deletion in the cycle collector --- packages/runtime/src/scr_cycle.c | 83 +++++++++++++++++--------- packages/runtime/test/test_cycle.c | 93 ++++++++++++++++++++++++++++++ 2 files changed, 148 insertions(+), 28 deletions(-) diff --git a/packages/runtime/src/scr_cycle.c b/packages/runtime/src/scr_cycle.c index d421e8e45..a7157f9af 100644 --- a/packages/runtime/src/scr_cycle.c +++ b/packages/runtime/src/scr_cycle.c @@ -199,6 +199,8 @@ typedef struct { * depth budget covers every participating destructor. Queued zero-count * objects still own their children until their callback runs. */ #define SCR_DESTROY_DEPTH 64 +/* How deep the collector's walks recurse (see "the walks" below). */ +#define SCR_CYC_WALK_DEPTH 64 #ifdef SCR_WORKERS /* Worker executables keep the collector's per-thread state in one * thread-local block: on Darwin every distinct thread-local costs a call @@ -218,7 +220,7 @@ typedef struct { ScrVec white; ScrVec xgen; ScrVec xgen_edges; - void *gray_holder; + void *gray_holders[SCR_CYC_WALK_DEPTH]; ScrVec pub_holes[SCR_CYC_NGENS]; unsigned gen_limit; size_t live_after[SCR_CYC_NGENS]; @@ -260,7 +262,7 @@ static _Thread_local ScrCycThread scr_cyc_thread = {.gen_limit = SCR_CYC_OLD}; #define scr_white (scr_cyc_thread.white) #define scr_xgen (scr_cyc_thread.xgen) #define scr_xgen_edges (scr_cyc_thread.xgen_edges) -#define scr_gray_holder (scr_cyc_thread.gray_holder) +#define scr_gray_holders (scr_cyc_thread.gray_holders) #define scr_pub_holes (scr_cyc_thread.pub_holes) #define scr_gen_limit (scr_cyc_thread.gen_limit) #define scr_cyc_live_after (scr_cyc_thread.live_after) @@ -475,11 +477,13 @@ static SCR_TL ScrVec scr_xgen; /* Edges from a gray object into a generation the pass does not walk, as * (holder, target) pairs, recorded by markGray (each gray object is traced - * there exactly once, so each edge appears once), and the object markGray is - * tracing. */ + * there exactly once, so each edge appears once), and the objects markGray is + * tracing, by walk depth: an edge's holder is the entry one level above the + * depth its visit sees. Nothing is restored after an object's children are + * traced, so markGray ends in a tail call to the trace. */ #ifndef SCR_WORKERS static SCR_TL ScrVec scr_xgen_edges; -static SCR_TL void *scr_gray_holder; +static SCR_TL void *scr_gray_holders[SCR_CYC_WALK_DEPTH]; #endif /* Objects above this generation are invisible to the pass in flight. */ @@ -1338,12 +1342,12 @@ void scr_cyc_on_release(void *obj) { ((child) == NULL || SCR_RC(child) == SCR_RC_IMMORTAL \ || SCR_CYC_WALK_GEN(scr_cyc_hdr(child)) > scr_gen_limit) -/* The walks are depth-first and recursive up to SCR_CYC_WALK_DEPTH, where - * an object is queued instead (scr_pending, or scr_restore_pending for the - * restoration, which can run inside scan) and traced from the queue. Trace - * callbacks forward that integer depth through their opaque context; it is - * never dereferenced. */ -#define SCR_CYC_WALK_DEPTH 64 +/* The walks are depth-first and recursive up to SCR_CYC_WALK_DEPTH (defined + * with the per-thread state, which it sizes), where an object is queued + * instead (scr_pending, or scr_restore_pending for the restoration, which + * can run inside scan) and traced from the queue. Trace callbacks forward + * that integer depth through their opaque context; it is never + * dereferenced. */ /* A walk visits a dense cycle-capable array's children itself: the present * dense elements, which are all scr_arr_trace_v visits when the array has @@ -1382,9 +1386,10 @@ SCR_CYC_ARRAY_WALK(scr_sb_array, scr_sb_visit) SCR_CYC_ARRAY_WALK(scr_scan_array, scr_scan_visit) static inline __attribute__((always_inline)) void scr_mark_gray(void *obj, uintptr_t depth); -/* An edge into a generation this pass does not walk, for settle. */ -static __attribute__((noinline)) void scr_mg_skip_edge(void *child) { - scr_cyc_push_work(&scr_xgen_edges, scr_gray_holder); +/* An edge into a generation this pass does not walk, for settle, seen at + * `depth`. */ +static __attribute__((noinline)) void scr_mg_skip_edge(void *child, uintptr_t depth) { + scr_cyc_push_work(&scr_xgen_edges, scr_gray_holders[depth - 1]); scr_cyc_push_work(&scr_xgen_edges, child); } /* The first visit of an object: gray it and walk its children. */ @@ -1398,7 +1403,7 @@ static void scr_mg_visit(void *child, void *ctx) { if (child == NULL || SCR_RC(child) == SCR_RC_IMMORTAL) return; ScrCycHdr *h = scr_cyc_hdr(child); if (SCR_CYC_WALK_GEN(h) > scr_gen_limit) { - scr_mg_skip_edge(child); + scr_mg_skip_edge(child, (uintptr_t)ctx); return; } --SCR_RC(child); @@ -1438,11 +1443,9 @@ static inline __attribute__((always_inline)) void scr_mark_gray(void *obj, uintp scr_cyc_push_work(&scr_pending, obj); return; } - void *holder = scr_gray_holder; - scr_gray_holder = obj; + scr_gray_holders[depth] = obj; const ScrCycType *type = scr_cyc_type(h); SCR_CYC_CHILDREN(obj, type, scr_mg_array, scr_mg_visit, depth + 1); - scr_gray_holder = holder; } /* markGray from one (black) candidate, through the queue. */ static void scr_mark_gray_from(void *root) { @@ -1450,7 +1453,7 @@ static void scr_mark_gray_from(void *root) { while (scr_pending.n) { void *obj = scr_pending.v[--scr_pending.n]; const ScrCycType *type = scr_cyc_type(scr_cyc_hdr(obj)); - scr_gray_holder = obj; + scr_gray_holders[0] = obj; SCR_CYC_CHILDREN(obj, type, scr_mg_array, scr_mg_visit, 1); } } @@ -1953,7 +1956,9 @@ static SCR_CYC_COMPACT size_t scr_cyc_settle(unsigned gen_limit, bool doomed) { /* The list holds the dead set: doomed components, and what scan whitened * (black once a later outside root restored it), or, when the pass found * nothing externally referenced, every gray object. `doomed` says that - * every entry is a doomed component's already. */ + * every entry is a doomed component's: every candidate and every holder + * of a recorded edge is about to be freed, and the entries can still be + * gray (see "Components" in scr_cyc_pass). */ for (size_t i = 0; i < scr_white.n && !doomed; i++) { void *obj = scr_white.v[i]; ScrCycHdr *h = scr_cyc_hdr(obj); @@ -1974,7 +1979,7 @@ static SCR_CYC_COMPACT size_t scr_cyc_settle(unsigned gen_limit, bool doomed) { * what changes them). A full pass skips no edge, so it pins nothing. */ scr_xgen.n = 0; for (size_t i = 0; i < scr_xgen_edges.n; i += 2) { - if (scr_cyc_color(scr_cyc_hdr(scr_xgen_edges.v[i])) != SCR_CYC_DOOMED) continue; + if (!doomed && scr_cyc_color(scr_cyc_hdr(scr_xgen_edges.v[i])) != SCR_CYC_DOOMED) continue; void *target = scr_xgen_edges.v[i + 1]; SCR_RC(target) += 1; /* pin across the teardowns */ scr_cyc_push_work(&scr_xgen, target); @@ -2005,7 +2010,7 @@ static SCR_CYC_COMPACT size_t scr_cyc_settle(unsigned gen_limit, bool doomed) { * genuine outside reference and Bacon-Rajan's own reasoning retires the * candidate. Re-buffering costs a walk, never correctness: an object that * is truly live survives the next pass at its level and is dropped then. */ - if (gen_limit < SCR_CYC_OLD) { + if (gen_limit < SCR_CYC_OLD && !doomed) { for (size_t i = 0; i < scr_cands.n; i++) { void *obj = scr_cands.v[i]; ScrCycHdr *h = scr_cyc_hdr(obj); @@ -2113,6 +2118,17 @@ static size_t scr_cyc_pass_done(size_t freed) { return freed; } +/* Color the doomed components' entries of the gray list: every entry + * outside the referenced components' ranges. */ +static SCR_CYC_COMPACT void scr_cyc_doom_components(void) { + size_t from = 0; + for (size_t k = 0; k <= scr_live_ranges.n; k += 2) { + size_t end = k < scr_live_ranges.n ? (uintptr_t)scr_live_ranges.v[k] : scr_white.n; + for (size_t j = from; j < end; j++) scr_cyc_set_color(scr_cyc_hdr(scr_white.v[j]), SCR_CYC_DOOMED); + if (k < scr_live_ranges.n) from = (uintptr_t)scr_live_ranges.v[k + 1]; + } +} + static size_t scr_cyc_pass(unsigned gen_limit) { if (scr_collecting) return 0; scr_cyc_route_bypassed(); @@ -2193,9 +2209,15 @@ static size_t scr_cyc_pass(unsigned gen_limit) { * cannot add one: its objects would be referencing this component, and * those references are still counted. scan would whiten exactly this * set, so it is doomed at once and scan runs only over the components - * that are externally referenced, if any. A limited pass keeps the single - * whole-pass decision below (its untaken candidates cannot carry the - * component number). */ + * that are externally referenced, if any. A doomed component's entries + * stay gray, outside the referenced components' ranges, until something + * reads their color: settle colors them while it filters the list, and + * needs no colors when every component is doomed; a scan from the + * candidates colors them first (scr_cyc_doom_components); and with a + * dispose observer installed they are colored here, because a weak map's + * teardown tells a collected owner by its color. A limited pass keeps + * the single whole-pass decision below (its untaken candidates cannot + * carry the component number). */ bool split = scr_cyc_take == NULL; uint32_t comp = 0; for (size_t i = 0; i < scr_cands.n; i++) { @@ -2208,8 +2230,11 @@ static size_t scr_cyc_pass(unsigned gen_limit) { if (!split) continue; size_t end = scr_white.n; if (scr_comp_referenced == 0 && end < SCR_CYC_GRAY_LIST_MAX) { - for (size_t j = start; j < end; j++) scr_cyc_set_color(scr_cyc_hdr(scr_white.v[j]), SCR_CYC_DOOMED); - } else if (scr_live_ranges.n && (uintptr_t)scr_live_ranges.v[scr_live_ranges.n - 1] == start) { + if (scr_weak_dispose_hook) + for (size_t j = start; j < end; j++) scr_cyc_set_color(scr_cyc_hdr(scr_white.v[j]), SCR_CYC_DOOMED); + continue; + } + if (scr_live_ranges.n && (uintptr_t)scr_live_ranges.v[scr_live_ranges.n - 1] == start) { scr_live_ranges.v[scr_live_ranges.n - 1] = (void *)(uintptr_t)end; } else { scr_cyc_push_work(&scr_live_ranges, (void *)(uintptr_t)start); @@ -2255,7 +2280,9 @@ static size_t scr_cyc_pass(unsigned gen_limit) { } /* Otherwise scan walks from the candidates. Keep only the doomed - * components' entries; scan appends what it whitens. */ + * components' entries, colored first so that scan passes over them; scan + * appends what it whitens. */ + if (split) scr_cyc_doom_components(); if (!split) { scr_white.n = 0; } else if (scr_live_ranges.n) { diff --git a/packages/runtime/test/test_cycle.c b/packages/runtime/test/test_cycle.c index 08eaecad4..961d43586 100644 --- a/packages/runtime/test/test_cycle.c +++ b/packages/runtime/test/test_cycle.c @@ -833,6 +833,96 @@ static void check_deferred_white_restoration(void) { * scheduling decision or pass would do. */ size_t scr_cyc_pass_at(unsigned gen); void scr_cyc_route_bypassed_at(void); + +/* A nursery pass over a dead ring, longer than the walk recurses, whose + * nodes hold edges into an older ring, and two live nodes the ring reaches + * that hold edges into another: only the dead ring's edges are paid off. */ +static void check_cross_generation_holders(void) { + enum { RING = 200 }; + /* The ring's candidate must wait for the pass below. */ + if (configured_nursery_threshold() < 8) return; + static ScrCycType cyc_type = { &node_trace, &node_free, 0 }; + scr_collect_cycles(); + size_t before = freed; + Node *targets[2]; + for (int r = 0; r < 2; r++) { + targets[r] = make_ring(2); + targets[r]->rc++; + release_live(targets[r]); + } + scr_collect_cycles(); /* both survive, out of the nursery */ + Node *live[2]; + for (int i = 0; i < 2; i++) { + live[i] = scr_cyc_alloc(sizeof(*live[i]), &cyc_type); + live[i]->rc = 3; /* itself, the ring's edge and an outside owner */ + live[i]->next = live[i]; + live[i]->other = targets[1]; + targets[1]->rc++; + } + Node *ring = make_ring(RING); + Node *node = ring; + for (size_t i = 0; i < RING; i++, node = node->next) { + node->other = i == 10 ? live[0] : i == 150 ? live[1] : targets[0]; + if (node->other == targets[0]) targets[0]->rc++; + } + release_live(ring); + scr_cyc_pass_at(SCR_CYC_NURSERY); + check(freed == before + RING, "nursery pass did not free only the dead ring"); + check(targets[0]->rc == 2, "the dead ring's edges into an older ring were not paid off"); + check(targets[1]->rc == 4, "a live node's edge into an older ring was paid off"); + release_live(live[0]); + release_live(live[1]); + scr_collect_cycles(); + check(freed == before + RING + 2, "the live nodes were not collected once dead"); + release_live(targets[0]); + release_live(targets[1]); + scr_collect_cycles(); + check(freed == before + RING + 6, "the older rings were not collected once dead"); +} + +/* A dispose observer (scr_cyc_free notifies it) reads the color of the + * objects a pass tears down. */ +static size_t observed_doomed, observed_other; +static void observe_disposal(void *obj) { + if (scr_cyc_color(scr_cyc_hdr(obj)) == SCR_CYC_DOOMED) observed_doomed++; + else observed_other++; +} + +static void check_dispose_observer_sees_doomed(void) { + enum { RING = 8 }; + size_t before = freed; + void (*hook)(void *) = scr_weak_dispose_hook; + scr_weak_dispose_hook = observe_disposal; + observed_doomed = observed_other = 0; + Node *ring = make_ring(RING); + release_live(ring); + scr_cyc_pass_at(SCR_CYC_NURSERY); + scr_weak_dispose_hook = hook; + check(freed == before + RING, "the dead ring was not freed"); + check(observed_doomed == RING && observed_other == 0, + "a dispose observer saw a collected object that was not DOOMED"); +} + +/* A full pass whose gray list fills: the dead rings walked before it filled + * stay in the list, and the scan from the candidates passes over them. */ +static void check_doomed_rings_before_full_gray_list(void) { + enum { RINGS = 4, RING = 8, LIVE = 70000 }; + if (configured_nursery_threshold() < 8) return; + size_t before = freed; + Node *dead[RINGS]; + for (int i = 0; i < RINGS; i++) dead[i] = make_ring(RING); + Node *live = make_ring(LIVE); + scr_collect_cycles(); /* re-arms the allocation trigger */ + for (int i = 0; i < RINGS; i++) release_live(dead[i]); + live->rc++; + release_live(live); + scr_collect_cycles(); + check(freed == before + RINGS * RING, "a pass with a full gray list did not free only the dead rings"); + release_live(live); + scr_collect_cycles(); + check(freed == before + RINGS * RING + LIVE, "the large ring was not collected once dead"); +} + static size_t bypass_traced; /* trace calls on bypass-kind nodes */ static size_t bypass_freed; /* bypass-kind nodes freed */ static void bypass_trace(void *obj, ScrTraceVisit visit, void *ctx) { @@ -1617,6 +1707,9 @@ int main(void) { check_deferred_white_restoration(); check_cross_generation_edges(); check_deep_cross_generation_chain(); + check_cross_generation_holders(); + check_dispose_observer_sees_doomed(); + check_doomed_rings_before_full_gray_list(); check_teardown_rebuffers_and_immortals(); check_growth_schedule_follows_yield(); check_growth_cap_bounds_floating_garbage(); From 1d72466f51eb43bbad6c0aafb6fe50fc49f3e978 Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 15:00:12 -0500 Subject: [PATCH 16/52] Read int32-slot arrays at their width in integer clones An integer clone reads a number array's element as an 8-byte double. A number array proven to hold only int32s keeps 4-byte int32 slots (SCR_ELEM_I32), so the clone read such an array at the wrong width: it returned wrong values, and near the array's end it read past the slots. The clone now tests the array's element kind: int32 slots load as 4-byte int32s, double slots load as doubles and keep the exact-int32 test, and any other storage bails to the ordinary body. New corpus program: integer-clone-int32-slots.ts. --- .../src/backend/llvm/dense-array-access.ts | 3 ++ .../src/backend/llvm/integer-clones.ts | 33 ++++++++++++++- .../corpus/integer-clone-int32-slots.ts.json | 6 +++ tests/corpus/integer-clone-int32-slots.ts | 40 +++++++++++++++++++ .../integer-clone-int32-slots.ts.json | 1 + 5 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/integer-clone-int32-slots.ts.json create mode 100644 tests/corpus/integer-clone-int32-slots.ts create mode 100644 tests/harness/corpus-costs/integer-clone-int32-slots.ts.json diff --git a/packages/compiler/src/backend/llvm/dense-array-access.ts b/packages/compiler/src/backend/llvm/dense-array-access.ts index e002ecd8a..fabe70f37 100644 --- a/packages/compiler/src/backend/llvm/dense-array-access.ts +++ b/packages/compiler/src/backend/llvm/dense-array-access.ts @@ -300,6 +300,9 @@ function loadState(host: LlvmEmitterContext, guard: DenseGuard): string { return state; } +/** The ScrElemKind of double arrays (scr_array.h). */ +export const SCR_ELEM_F64 = 0; + /** The ScrElemKind of int32 arrays (scr_array.h). */ export const SCR_ELEM_I32 = 7; diff --git a/packages/compiler/src/backend/llvm/integer-clones.ts b/packages/compiler/src/backend/llvm/integer-clones.ts index 314eae5ea..8e9074736 100644 --- a/packages/compiler/src/backend/llvm/integer-clones.ts +++ b/packages/compiler/src/backend/llvm/integer-clones.ts @@ -3,6 +3,7 @@ import type { IrExpr, IrFunction, IrLocal, IrModule, IrStmt, IrType } from "../. import { mangleFunction } from "../mangle.js"; import { BlockBuilder } from "./blocks.js"; import { SCR_ARR_FIELD } from "./common.js"; +import { SCR_ELEM_F64, SCR_ELEM_I32 } from "./dense-array-access.js"; /** Speculative integer clones of pure number-valued functions. * @@ -1044,9 +1045,39 @@ class CloneEmitter { ); B.line(`${data} = load ptr, ptr ${dataField}`); B.line(`${offset} = zext i32 ${index} to i64`); + // A number array keeps 8-byte doubles, or 4-byte int32 slots when it is + // proven to hold only int32s (SCR_ELEM_I32); any other storage bails. + const kindField = B.tmp(); + const kind = B.tmp(); + const isInt32 = B.tmp(); + B.line( + `${kindField} = getelementptr inbounds %ScrArr, ptr ${array}, i32 0, i32 ${SCR_ARR_FIELD.elem}`, + ); + B.line(`${kind} = load i8, ptr ${kindField}`); + B.line(`${isInt32} = icmp eq i8 ${kind}, ${SCR_ELEM_I32}`); + const int32Slots = B.newLabel("elem.i32"); + const doubleSlots = B.newLabel("elem.f64"); + const join = B.newLabel("elem.join"); + B.condBr(isInt32, int32Slots, doubleSlots); + B.startBlock(int32Slots); + const int32Slot = B.tmp(); + const int32 = B.tmp(); + B.line(`${int32Slot} = getelementptr inbounds i32, ptr ${data}, i64 ${offset}`); + B.line(`${int32} = load i32, ptr ${int32Slot}`); + B.br(join); + B.startBlock(doubleSlots); + const isDouble = B.tmp(); + B.line(`${isDouble} = icmp eq i8 ${kind}, ${SCR_ELEM_F64}`); + this.require(isDouble); B.line(`${slot} = getelementptr inbounds double, ptr ${data}, i64 ${offset}`); B.line(`${number} = load double, ptr ${slot}`); - return this.exactInt32(number); + const exact = this.exactInt32(number); + const doubleEnd = B.currentLabel(); + B.br(join); + B.startBlock(join); + const value = B.tmp(); + B.line(`${value} = phi i32 [ ${int32}, %${int32Slots} ], [ ${exact}, %${doubleEnd} ]`); + return value; } /** The int32 the double `number` equals bit for bit (never -0, NaN, a diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/integer-clone-int32-slots.ts.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/integer-clone-int32-slots.ts.json new file mode 100644 index 000000000..e26a5a727 --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/integer-clone-int32-slots.ts.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/integer-clone-int32-slots.ts" + ], + "diags": [] +} diff --git a/tests/corpus/integer-clone-int32-slots.ts b/tests/corpus/integer-clone-int32-slots.ts new file mode 100644 index 000000000..5c34ada67 --- /dev/null +++ b/tests/corpus/integer-clone-int32-slots.ts @@ -0,0 +1,40 @@ +// A recursive function over a number array runs as an integer clone. +// sumFrom only receives arrays that hold int32s, which keep 4-byte int32 +// slots, and the clone reads them at that width, near their end too. +// sumWide receives an array that also holds a fraction, with 8-byte slots. +function sumFrom(xs: number[], i: number): number { + if (i >= xs.length) return 0; + return xs[i]! + sumFrom(xs, i + 1); +} + +function masked(n: number, start: number): number { + const a: number[] = []; + for (let i = 0; i < n; i++) a.push(i & 7); + return sumFrom(a, start); +} + +function halves(n: number, start: number): number { + const a: number[] = []; + for (let i = 0; i < n; i++) a.push(i < n / 2 ? 0 : 3); + return sumFrom(a, start); +} + +function sumWide(xs: number[], i: number): number { + if (i >= xs.length) return 0; + return xs[i]! + sumWide(xs, i + 1); +} + +function widened(n: number, start: number): number { + const a: number[] = []; + for (let i = 0; i < n; i++) a.push(i % 5); + const before = sumWide(a, start); + a.push(0.5); + return before * 10 + sumWide(a, start); +} + +const { n } = JSON.parse('{"n": 1000}') as { n: number }; +for (const start of [0, 1, n / 2, n - 9, n - 2, n - 1, n]) + console.log(start, masked(n | 0, start | 0), halves(n | 0, start | 0)); +for (const size of [63, 64, 65]) + console.log(size, halves(size, size - 24), halves(size, size - 1), masked(size, size - 3)); +console.log(widened(40, 0), widened(40, 37)); diff --git a/tests/harness/corpus-costs/integer-clone-int32-slots.ts.json b/tests/harness/corpus-costs/integer-clone-int32-slots.ts.json new file mode 100644 index 000000000..91deb4042 --- /dev/null +++ b/tests/harness/corpus-costs/integer-clone-int32-slots.ts.json @@ -0,0 +1 @@ +{ "plain": 3474, "san": 38229 } From 133551d76e29345297f6a8cb6cf7acfa762d30da Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 15:12:51 -0500 Subject: [PATCH 17/52] Build node:zlib on the zlib Node bundles The runtime vendored zlib 1.3.1 and archived it at -Os, and host C-lane builds linked the system libz, so deflate, raw deflate and gzip output differed from Node's at every level. The vendored copy is now Node v24.22.0's deps/zlib (Chromium's zlib, 1.3.2.1-motley-285e94b), built at -O3 with the units and defines Node's zlib.gyp selects per target: the SSSE3 Adler-32 and SSE2 inflate and slide-hash code on x86-64, the NEON and ARMv8 CRC-32 code on arm64, and the portable code on wasm32. The SIMD units check the CPU at run time and give the same output, so compressed bytes match Node's on every target. zlibInputs (runtime-pack-common/scripts/zlib-inputs.mjs for the runtime packs, vendor-inputs.ts for Zig cross builds and the sanitized runtime) holds the per-target table, and a unit test keeps the two identical. Every C-lane driver now links the vendored objects instead of -lz. Chromium's BSD license ships beside zlib's in the runtime packs. Corpus 8405 compares compressed bytes with Node across levels, strategies, memLevel, windowBits, dictionaries and flushing streams; 8406 covers chunked inflation with small input pieces and output chunks. --- .../src/backend/native-toolchain.test.ts | 6 +- .../backend/native/compiler-fingerprint.ts | 10 +- .../compiler/src/backend/native/contracts.ts | 11 +- .../compiler/src/backend/native/executable.ts | 28 +- .../compiler/src/backend/native/library.ts | 5 +- .../compiler/src/backend/vendor-archives.ts | 38 +- .../src/backend/vendor-inputs.test.ts | 80 + .../compiler/src/backend/vendor-inputs.ts | 82 +- packages/compiler/src/native/sanitizer.ts | 7 +- .../corpus/8405-zlib-compressed-bytes.ts.json | 6 + .../corpus/8406-zlib-inflate-chunks.cjs.json | 6 + .../runtime-darwin-arm64/scripts/build.mjs | 21 +- .../runtime-pack-common/scripts/build.mjs | 21 +- .../scripts/zlib-inputs.mjs | 83 + packages/runtime/src/scr_zlib.c | 11 +- packages/runtime/vendor/README.md | 10 +- packages/runtime/vendor/zlib/LICENSE | 2 +- packages/runtime/vendor/zlib/LICENSE.chromium | 27 + packages/runtime/vendor/zlib/README.chromium | 38 + packages/runtime/vendor/zlib/adler32.c | 33 + packages/runtime/vendor/zlib/adler32_simd.c | 459 +++++ packages/runtime/vendor/zlib/adler32_simd.h | 16 + packages/runtime/vendor/zlib/chromeconf.h | 211 +++ packages/runtime/vendor/zlib/compare256.h | 56 + packages/runtime/vendor/zlib/compress.c | 55 +- .../zlib/contrib/optimizations/chunkcopy.h | 564 ++++++ .../contrib/optimizations/inffast_chunk.c | 376 ++++ .../contrib/optimizations/inffast_chunk.h | 42 + .../zlib/contrib/optimizations/inflate.c | 1562 +++++++++++++++++ .../contrib/optimizations/insert_string.h | 80 + packages/runtime/vendor/zlib/cpu_features.c | 218 +++ packages/runtime/vendor/zlib/cpu_features.h | 22 + packages/runtime/vendor/zlib/crc32.c | 325 ++-- packages/runtime/vendor/zlib/crc32_simd.c | 628 +++++++ packages/runtime/vendor/zlib/crc32_simd.h | 57 + packages/runtime/vendor/zlib/crc_folding.c | 513 ++++++ packages/runtime/vendor/zlib/deflate.c | 478 +++-- packages/runtime/vendor/zlib/deflate.h | 48 +- packages/runtime/vendor/zlib/gzguts.h | 69 +- packages/runtime/vendor/zlib/gzlib.c | 106 +- packages/runtime/vendor/zlib/gzread.c | 318 ++-- packages/runtime/vendor/zlib/gzwrite.c | 267 +-- packages/runtime/vendor/zlib/infback.c | 98 +- packages/runtime/vendor/zlib/inffast.c | 36 +- packages/runtime/vendor/zlib/inffast.h | 15 + packages/runtime/vendor/zlib/inffixed.h | 182 +- packages/runtime/vendor/zlib/inflate.c | 199 +-- packages/runtime/vendor/zlib/inflate.h | 2 +- packages/runtime/vendor/zlib/inftrees.c | 143 +- packages/runtime/vendor/zlib/inftrees.h | 14 +- .../runtime/vendor/zlib/slide_hash_simd.h | 116 ++ packages/runtime/vendor/zlib/trees.c | 82 +- packages/runtime/vendor/zlib/uncompr.c | 62 +- packages/runtime/vendor/zlib/zconf.h | 61 +- packages/runtime/vendor/zlib/zlib.h | 344 ++-- packages/runtime/vendor/zlib/zutil.c | 85 +- packages/runtime/vendor/zlib/zutil.h | 120 +- tests/corpus/8405-zlib-compressed-bytes.ts | 96 + tests/corpus/8406-zlib-inflate-chunks.cjs | 69 + .../8405-zlib-compressed-bytes.ts.json | 1 + .../8406-zlib-inflate-chunks.cjs.json | 1 + tests/harness/wasi-differential.test.ts | 2 + 62 files changed, 7506 insertions(+), 1217 deletions(-) create mode 100644 packages/compiler/src/backend/vendor-inputs.test.ts create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8405-zlib-compressed-bytes.ts.json create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8406-zlib-inflate-chunks.cjs.json create mode 100644 packages/runtime-pack-common/scripts/zlib-inputs.mjs create mode 100644 packages/runtime/vendor/zlib/LICENSE.chromium create mode 100644 packages/runtime/vendor/zlib/README.chromium create mode 100644 packages/runtime/vendor/zlib/adler32_simd.c create mode 100644 packages/runtime/vendor/zlib/adler32_simd.h create mode 100644 packages/runtime/vendor/zlib/chromeconf.h create mode 100644 packages/runtime/vendor/zlib/compare256.h create mode 100644 packages/runtime/vendor/zlib/contrib/optimizations/chunkcopy.h create mode 100644 packages/runtime/vendor/zlib/contrib/optimizations/inffast_chunk.c create mode 100644 packages/runtime/vendor/zlib/contrib/optimizations/inffast_chunk.h create mode 100644 packages/runtime/vendor/zlib/contrib/optimizations/inflate.c create mode 100644 packages/runtime/vendor/zlib/contrib/optimizations/insert_string.h create mode 100644 packages/runtime/vendor/zlib/cpu_features.c create mode 100644 packages/runtime/vendor/zlib/cpu_features.h create mode 100644 packages/runtime/vendor/zlib/crc32_simd.c create mode 100644 packages/runtime/vendor/zlib/crc32_simd.h create mode 100644 packages/runtime/vendor/zlib/crc_folding.c create mode 100644 packages/runtime/vendor/zlib/slide_hash_simd.h create mode 100644 tests/corpus/8405-zlib-compressed-bytes.ts create mode 100644 tests/corpus/8406-zlib-inflate-chunks.cjs create mode 100644 tests/harness/corpus-costs/8405-zlib-compressed-bytes.ts.json create mode 100644 tests/harness/corpus-costs/8406-zlib-inflate-chunks.cjs.json diff --git a/packages/compiler/src/backend/native-toolchain.test.ts b/packages/compiler/src/backend/native-toolchain.test.ts index 0ac21e853..1651da083 100644 --- a/packages/compiler/src/backend/native-toolchain.test.ts +++ b/packages/compiler/src/backend/native-toolchain.test.ts @@ -326,9 +326,9 @@ test.skipIf( let vendorEntries = await readdir(vendorRoot); expect(vendorEntries.filter((name) => name.startsWith("mbedtls-")).length).toBe(2); - // Host clang uses system zlib, so only the Zig build materializes a zlib - // object family in the shared vendor root. - expect(vendorEntries.filter((name) => name.startsWith("zlib-")).length).toBe(1); + // Host clang and Zig each materialize their own vendored zlib object + // family in the shared vendor root. + expect(vendorEntries.filter((name) => name.startsWith("zlib-")).length).toBe(2); // Invalidate the host archive. A targetless Zig rebuild must continue to // use the separately keyed Zig archive instead of repairing or consuming // the host-clang entry. diff --git a/packages/compiler/src/backend/native/compiler-fingerprint.ts b/packages/compiler/src/backend/native/compiler-fingerprint.ts index 6f92707f6..00d84c09b 100644 --- a/packages/compiler/src/backend/native/compiler-fingerprint.ts +++ b/packages/compiler/src/backend/native/compiler-fingerprint.ts @@ -1,7 +1,7 @@ import { createHash } from "node:crypto"; import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; import { tmpdir } from "node:os"; -import { dirname, join, resolve } from "node:path"; +import { basename, dirname, join, resolve } from "node:path"; import { type CcDriver } from "./driver.js"; import { resolvedToolIdentity, resolvedTool } from "./tool-identity.js"; import { execFileAsync } from "./process.js"; @@ -168,7 +168,7 @@ export function effectiveCompilerInvocationFingerprint( export async function implicitDependencyProbeIncludes(rtDir: string): Promise { const vendor = join(rtDir, "..", "vendor"); const quickjsSources = new Set(LRE_SOURCES); - const zlibSources = new Set(ZLIB_SOURCES); + const zlibSources = new Set(ZLIB_SOURCES.map((source) => basename(source))); const fileGroups = await Promise.all([ nativeSourceFiles(rtDir, false), nativeSourceFiles(join(vendor, "ryu"), false), @@ -181,7 +181,7 @@ export async function implicitDependencyProbeIncludes(rtDir: string): Promise name.endsWith(".h") || zlibSources.has(name), ), ]); @@ -199,8 +199,10 @@ export async function implicitDependencyProbeIncludes(rtDir: string): Promise, * , ...), , and . */ +/** clang's x86 intrinsic headers: every <...intrin.h> but the Windows + * (, , ...), and . */ function x86OnlyHeader(include: string): boolean { - return include === "" || /^<(x86|x86gpr|[a-z]*mm)intrin\.h>$/.test(include); + return include === "" || /^<[a-z0-9_]+intrin\.h>$/.test(include); } /** One guarded line of the implicit-toolchain probe source: the header is diff --git a/packages/compiler/src/backend/native/contracts.ts b/packages/compiler/src/backend/native/contracts.ts index 49fd792ba..03d9ead2a 100644 --- a/packages/compiler/src/backend/native/contracts.ts +++ b/packages/compiler/src/backend/native/contracts.ts @@ -76,14 +76,9 @@ export interface CcOptions { fetch?: boolean; /** The program uses zlib (index.ts detects zlib.* libCalls on the IR): * compiles scr_zlib.c — the regex gating precedent, so zlib-free - * binaries keep their exact link line. The default host-clang build links - * the SYSTEM libz (macOS ships it), byte-identical to the historical line; - * every Zig build compiles the vendored zlib with the selected driver instead - * (ensureZlibObjects — zig has no libz in its sysroots). Compressed bytes may - * differ between the - * system and vendored libraries, which is why the corpus only ever - * compares round-trips and fixed-blob inflation, never raw deflate - * output. */ + * binaries keep their exact link line. Every driver compiles the vendored + * zlib, the copy Node bundles (ensureZlibObjects), so compressed bytes match + * Node's. */ zlib?: boolean; /** The program uses node:zlib's Brotli forms (with zlib): compiles * scr_brotli.c and links the vendored brotli archive. */ diff --git a/packages/compiler/src/backend/native/executable.ts b/packages/compiler/src/backend/native/executable.ts index abacd5c8c..3ec689de0 100644 --- a/packages/compiler/src/backend/native/executable.ts +++ b/packages/compiler/src/backend/native/executable.ts @@ -217,18 +217,13 @@ const RUNTIME_UNITS: readonly RuntimeUnit[] = [ // Blob and File (every blob.* call selects dynAsync, whose unit boxes // their reads as dyn promises). unit((u) => u.opts.dynAsync, "scr_blob.c"), - // The zlib UNIT (scr_zlib.c) gates on zlib.* IR use; the LINK (system - // libz on the default host-clang build, vendored objects on Zig builds) - // also serves the native fetch's gzip decoder — spread exactly once. + // The zlib UNIT (scr_zlib.c) gates on zlib.* IR use; the vendored zlib + // objects also serve the native fetch's gzip decoder — spread exactly once. unitArgs((u) => u.opts.zlib - ? isZigDriver(u.driver) - ? ["-I", vendorZlibDir(), u.rt(join(u.rtDir, "scr_zlib.c")), ...u.zlibObjects] - : [u.rt(join(u.rtDir, "scr_zlib.c"))] + ? ["-I", vendorZlibDir(), u.rt(join(u.rtDir, "scr_zlib.c")), ...u.zlibObjects] : u.nativeFetch - ? isZigDriver(u.driver) - ? ["-I", vendorZlibDir(), ...u.zlibObjects] - : [] + ? ["-I", vendorZlibDir(), ...u.zlibObjects] : [], ), // Brotli (scr_brotli.c) plugs into the zlib engine and links the @@ -674,11 +669,11 @@ export async function compileCInternal( let lreObjects = regex ? lreObjectPaths(sanitize, driver, vendorBuildIdentity, vendorCacheRoot) : []; - // Vendored zlib is the Zig story — default host-clang builds keep the exact - // historical `-lz` system link (see CcOptions.zlib). The native fetch's - // gzip decoder rides the same objects/link. + // Every driver links the vendored zlib (the copy Node bundles), so + // compressed bytes match Node's. The native fetch's gzip decoder rides the + // same objects. let zlibObjects = - ((opts.zlib ?? false) || nativeFetch) && isZigDriver(driver) + (opts.zlib ?? false) || nativeFetch ? zlibObjectPaths(sanitize, driver, vendorBuildIdentity, vendorCacheRoot) : []; const materializeVendorPrerequisites = async ( @@ -827,11 +822,6 @@ export async function compileCInternal( ...(opts.linkInputs ?? []), ...(opts.systemLibraries ?? []).map((name) => `-l${name}`), ...(opts.frameworks ?? []).flatMap((name) => ["-framework", name]), - // GNU ld resolves libraries from left to right and commonly enables - // --as-needed: host-clang libz must follow scr_zlib.c/scr_fetch.c and every - // generated/native input that references inflate symbols. Cross - // and targetless Zig builds use vendored zlib objects in the input section above. - ...(((opts.zlib ?? false) || nativeFetch) && !isZigDriver(driver) ? ["-lz"] : []), ...unwinderLinkArgs(driver), // glibc keeps libm separate from libc. This must trail the generated // program and every native FFI input because GNU ld resolves archives @@ -1085,7 +1075,6 @@ export async function compileCInternal( ...(targetPlatform(driver) === "win32" ? ["-ladvapi32", "-liphlpapi", "-lws2_32"] : []), ...(mbedtls && targetPlatform(driver) === "win32" ? ["-lbcrypt"] : []), ...(tlsCa && targetPlatform(driver) === "win32" ? ["-lcrypt32"] : []), - ...(((opts.zlib ?? false) || nativeFetch) && !isZigDriver(driver) ? ["-lz"] : []), ...unwinderLinkArgs(driver), ...driver.linkArgs, ...executableLinkFlags, @@ -1098,7 +1087,6 @@ export async function compileCInternal( ...(targetPlatform(driver) === "win32" ? ["-ladvapi32", "-liphlpapi", "-lws2_32"] : []), ...(mbedtls && targetPlatform(driver) === "win32" ? ["-lbcrypt"] : []), ...(tlsCa && targetPlatform(driver) === "win32" ? ["-lcrypt32"] : []), - ...(((opts.zlib ?? false) || nativeFetch) && !isZigDriver(driver) ? ["-lz"] : []), ...unwinderLinkArgs(driver), ...driver.linkArgs, ...executableLinkFlags, diff --git a/packages/compiler/src/backend/native/library.ts b/packages/compiler/src/backend/native/library.ts index 06b4ce1df..3cf4afa53 100644 --- a/packages/compiler/src/backend/native/library.ts +++ b/packages/compiler/src/backend/native/library.ts @@ -78,9 +78,8 @@ import { CacheInputsChangedError } from "./session.js"; * External-symbol contract: undefined references only to the target's C/math * runtime and system APIs. Windows embedders additionally link advapi32, * iphlpapi, and ws2_32; the platform driver supplies its ordinary CRT and - * kernel imports. Zlib rides the VENDORED per-flavor objects here even on - * hosts because the executable lane's system `-lz` cannot ride inside an - * archive. */ + * kernel imports. Zlib rides the vendored per-flavor objects, as in the + * executable lane. */ export async function compileLibArchive(opts: LibArchiveOptions): Promise { clearCcCaches(); diff --git a/packages/compiler/src/backend/vendor-archives.ts b/packages/compiler/src/backend/vendor-archives.ts index ef63aa4e4..363d14b08 100644 --- a/packages/compiler/src/backend/vendor-archives.ts +++ b/packages/compiler/src/backend/vendor-archives.ts @@ -18,6 +18,12 @@ const execFileAsync = promisify(execFile); * runtime pack's executable_section_elimination flags). */ const LRE_SECTION_FLAGS = ["-ffunction-sections", "-fdata-sections"]; +/** A vendored source's object file name: sources in subdirectories + * (zlib's contrib/optimizations/inflate.c) flatten to one directory. */ +function vendorObjectName(source: string): string { + return source.replaceAll("/", "-").replace(/\.c$/, ".o"); +} + import { QJS_COMMIT, MBEDTLS_VERSION, @@ -25,6 +31,7 @@ import { BROTLI_VERSION, LRE_SOURCES, ZLIB_SOURCES, + zlibInputs, } from "./vendor-inputs.js"; export { QJS_COMMIT, @@ -243,11 +250,18 @@ export function createVendorArchives(context: VendorArchiveContext) { return join(runtimeSrcDir(), "..", "vendor", "zlib"); } - /** The vendored zlib TUs behind Zig zlib support: every root *.c - * except the gzFile file-I/O units (gz*.c — nothing in scr_zlib.c - * references the gzFile API, and those TUs alone want unistd/io headers). - * The default host-clang build links the system libz; Zig builds use this - * list so targetless and explicit-target Zig inputs stay on one toolchain. */ + /** The vendored zlib TUs every C-lane build links (zlibInputs picks them + * per target; the gzFile file-I/O units are never compiled, nothing in + * scr_zlib.c references the gzFile API). */ + + /** The triple zlibInputs reads for a driver: its explicit target, else + * the host. */ + function zlibTriple(driver: Pick): string { + if (driver.target !== null) return driver.target; + const cpu = + process.arch === "x64" ? "x86_64" : process.arch === "arm64" ? "aarch64" : process.arch; + return `${cpu}-${process.platform === "win32" ? "windows" : process.platform}`; + } function zlibObjectPaths( sanitize: boolean, @@ -260,15 +274,15 @@ export function createVendorArchives(context: VendorArchiveContext) { (driver.argv.length === 1 && driver.argv[0] === "clang" ? "" : "-zigcc") + `-${vendorCacheTargetFlavor(driver)}-${buildIdentity}`; const cacheDir = join(cacheRoot, `zlib-${ZLIB_VERSION}-${flavor}`); - return ZLIB_SOURCES.map((f) => join(cacheDir, f.replace(/\.c$/, ".o"))); + return zlibInputs(zlibTriple(driver)).sources.map((f) => join(cacheDir, vendorObjectName(f))); } /** The zlib objects for one flavor, compiled lazily on the first zlib-using - * Zig build (~1s) and cached like the lre objects — + * C-lane build (~1s) and cached like the lre objects — * /vendor/zlib----/*.o — with the same atomic-rename * publish (parallel first builds race safely; losers discard their work). - * Plain is -Os, asan matches the final link so the sanitized lane - * instruments the codec too. The flavor keys the driver and target exactly + * Plain is -O3, as Node builds zlib; asan matches the final link so the + * sanitized lane instruments the codec too. The flavor keys the driver and target exactly * like the lre flavor: the keying * must never hand a zig-built object set to a clang link off a shared * directory. */ @@ -282,6 +296,7 @@ export function createVendorArchives(context: VendorArchiveContext) { (sanitize ? "asan" : "plain") + (driver.argv.length === 1 && driver.argv[0] === "clang" ? "" : "-zigcc") + `-${vendorCacheTargetFlavor(driver)}-${buildIdentity}`; + const inputs = zlibInputs(zlibTriple(driver)); return ensureVendorObjects({ sanitize, driver, @@ -289,8 +304,9 @@ export function createVendorArchives(context: VendorArchiveContext) { flavor, name: "zlib", vendor: vendorZlibDir(), - sources: ZLIB_SOURCES, + sources: inputs.sources, objects: zlibObjectPaths(sanitize, driver, buildIdentity, cacheRoot), + flags: [...(sanitize ? [] : ["-O3"]), ...inputs.defines.map((define) => `-D${define}`)], }); } @@ -327,7 +343,7 @@ export function createVendorArchives(context: VendorArchiveContext) { "-c", join(vendor, f), "-o", - join(buildDir, f.replace(/\.c$/, ".o")), + join(buildDir, vendorObjectName(f)), ], { cwd: buildDir }, ); diff --git a/packages/compiler/src/backend/vendor-inputs.test.ts b/packages/compiler/src/backend/vendor-inputs.test.ts new file mode 100644 index 000000000..53e9b8c22 --- /dev/null +++ b/packages/compiler/src/backend/vendor-inputs.test.ts @@ -0,0 +1,80 @@ +import { existsSync } from "node:fs"; +import { join } from "node:path"; +import { fileURLToPath, pathToFileURL } from "node:url"; +import { expect, test } from "vitest"; +import { ZLIB_SOURCES, zlibInputs } from "./vendor-inputs.js"; + +const repoRoot = fileURLToPath(new URL("../../../..", import.meta.url)); +const zlibDir = join(repoRoot, "packages/runtime/vendor/zlib"); + +const TRIPLES = [ + // The runtime packs' targets. + "x86_64-unknown-linux-gnu", + "x86_64-unknown-linux-musl", + "aarch64-unknown-linux-gnu", + "aarch64-unknown-linux-musl", + "aarch64-unknown-linux-android26", + "arm64-apple-macosx14.0.0", + "x86_64-apple-macosx14.0.0", + "arm64-apple-ios15.0", + "arm64-apple-ios15.0-simulator", + "x86_64-pc-windows-msvc", + "wasm32-unknown-wasi", + // Zig cross targets and host spellings. + "x86_64-linux-gnu", + "aarch64-linux-musl", + "aarch64-macos", + "x86_64-windows-gnu", + "aarch64-windows-gnu", + "wasm32-wasi", + "x86_64-linux", + "aarch64-darwin", +]; + +test("the compiler's zlib inputs match the runtime packs' for every target", async () => { + const packInputs = (await import( + pathToFileURL(join(repoRoot, "packages/runtime-pack-common/scripts/zlib-inputs.mjs")).href + )) as { zlibInputs(triple: string): { sources: string[]; defines: string[] } }; + for (const triple of TRIPLES) { + expect(zlibInputs(triple), triple).toEqual(packInputs.zlibInputs(triple)); + } +}); + +test("every zlib input exists, and ZLIB_SOURCES lists every source a target compiles", () => { + const listed = new Set(ZLIB_SOURCES); + for (const triple of TRIPLES) { + for (const source of zlibInputs(triple).sources) { + expect(listed.has(source), `${triple}: ${source}`).toBe(true); + expect(existsSync(join(zlibDir, source)), source).toBe(true); + } + } +}); + +test("zlib inputs follow Node's deps/zlib/zlib.gyp", () => { + const x64 = zlibInputs("x86_64-unknown-linux-gnu"); + expect(x64.sources).toContain("adler32_simd.c"); + expect(x64.sources).toContain("contrib/optimizations/inflate.c"); + expect(x64.sources).not.toContain("inflate.c"); + expect(x64.defines).toEqual([ + "HAVE_HIDDEN", + "ADLER32_SIMD_SSSE3", + "X86_NOT_WINDOWS", + "INFLATE_CHUNK_SIMD_SSE2", + "INFLATE_CHUNK_READ_64LE", + "DEFLATE_SLIDE_HASH_SSE2", + ]); + expect(zlibInputs("x86_64-pc-windows-msvc").defines).toContain("X86_WINDOWS"); + const mac = zlibInputs("arm64-apple-macosx14.0.0"); + expect(mac.sources).toContain("crc32_simd.c"); + expect(mac.defines).toContain("ARMV8_OS_MACOS"); + expect(mac.defines).toContain("CRC32_ARMV8_CRC32"); + const ios = zlibInputs("arm64-apple-ios15.0"); + expect(ios.sources).not.toContain("crc32_simd.c"); + expect(ios.defines).not.toContain("CRC32_ARMV8_CRC32"); + expect(ios.defines).toContain("INFLATE_CHUNK_SIMD_NEON"); + expect(zlibInputs("aarch64-unknown-linux-android26").defines).toContain("ARMV8_OS_LINUX"); + const wasm = zlibInputs("wasm32-unknown-wasi"); + expect(wasm.sources).toContain("inflate.c"); + expect(wasm.sources).not.toContain("contrib/optimizations/inflate.c"); + expect(wasm.defines).toEqual(["HAVE_HIDDEN", "CPU_NO_SIMD"]); +}); diff --git a/packages/compiler/src/backend/vendor-inputs.ts b/packages/compiler/src/backend/vendor-inputs.ts index a9d13e2f0..270815b00 100644 --- a/packages/compiler/src/backend/vendor-inputs.ts +++ b/packages/compiler/src/backend/vendor-inputs.ts @@ -1,22 +1,98 @@ /** The pinned QuickJS, mbedTLS, zlib, and brotli inputs used by native recipes. */ export const QJS_COMMIT = "3c8f3d68953955950074c41c6e4d999562ae82a7"; export const MBEDTLS_VERSION = "3.6.7"; -export const ZLIB_VERSION = "1.3.1"; +/** The zlib Node v24.22.0 bundles (`process.versions.zlib` there), the + * Chromium fork in Node's deps/zlib (packages/runtime/vendor/zlib). */ +export const ZLIB_VERSION = "1.3.2.1-motley-285e94b"; /** The brotli release Node v24.22.0 bundles (packages/runtime/vendor/brotli). */ export const BROTLI_VERSION = "1.2.0"; /** Exact translation-unit membership shared by cache builds and external * source-pack recipes. */ export const LRE_SOURCES = ["libregexp.c", "libunicode.c"] as const; -export const ZLIB_SOURCES = [ +const ZLIB_COMMON_SOURCES = [ "adler32.c", "compress.c", + "cpu_features.c", "crc32.c", "deflate.c", "infback.c", "inffast.c", - "inflate.c", "inftrees.c", "trees.c", "uncompr.c", "zutil.c", ] as const; + +/** Every zlib translation unit some target compiles (zlibInputs). */ +export const ZLIB_SOURCES = [ + ...ZLIB_COMMON_SOURCES, + "adler32_simd.c", + "crc32_simd.c", + "inflate.c", + "contrib/optimizations/inffast_chunk.c", + "contrib/optimizations/inflate.c", +] as const; + +/** The zlib translation units and defines for a target, chosen the way + * Node's deps/zlib/zlib.gyp chooses them. The SIMD units carry their own + * target attributes and check the CPU at run time, so every unit builds with + * the same flags, and compressed output does not depend on the choice. + * packages/runtime-pack-common/scripts/zlib-inputs.mjs keeps the same table + * for the runtime packs. `triple` is an LLVM or Zig target triple. */ +export function zlibInputs(triple: string): { sources: string[]; defines: string[] } { + const [cpu = "", ...rest] = triple.split("-"); + const system = rest.join("-"); + const architecture = + cpu === "x86_64" || cpu === "amd64" + ? "x64" + : cpu === "aarch64" || cpu === "arm64" + ? "arm64" + : cpu; + const ios = system.includes("ios"); + const windows = + system.includes("windows") || system.includes("win32") || system.includes("mingw"); + // Android reads the CPU features through getauxval, as Linux does: Node's + // ARMV8_OS_ANDROID path needs the NDK's cpu-features library. + const linux = system.includes("linux") || system.includes("android"); + const mac = !ios && (system.includes("darwin") || system.includes("macos")); + const sources: string[] = [...ZLIB_COMMON_SOURCES]; + const defines = windows ? [] : ["HAVE_HIDDEN"]; + if (architecture === "x64" && !ios) { + sources.push( + "adler32_simd.c", + "contrib/optimizations/inffast_chunk.c", + "contrib/optimizations/inflate.c", + ); + defines.push( + "ADLER32_SIMD_SSSE3", + windows ? "X86_WINDOWS" : "X86_NOT_WINDOWS", + "INFLATE_CHUNK_SIMD_SSE2", + "INFLATE_CHUNK_READ_64LE", + "DEFLATE_SLIDE_HASH_SSE2", + ); + } else if (architecture === "arm64") { + sources.push("contrib/optimizations/inffast_chunk.c", "contrib/optimizations/inflate.c"); + defines.push( + "INFLATE_CHUNK_SIMD_NEON", + "INFLATE_CHUNK_READ_64LE", + "__ARM_NEON__", + "DEFLATE_SLIDE_HASH_NEON", + ); + if (windows) { + defines.push("ARMV8_OS_WINDOWS"); + } else if (linux || mac) { + // Node builds the Adler-32 and CRC-32 units for every arm64 target but + // iOS and Windows. + sources.push("adler32_simd.c", "crc32_simd.c"); + defines.push( + "ADLER32_SIMD_NEON", + "CRC32_ARMV8_CRC32", + linux ? "ARMV8_OS_LINUX" : "ARMV8_OS_MACOS", + ); + } + } else { + sources.push("inflate.c"); + defines.push("CPU_NO_SIMD"); + } + return { sources, defines }; +} diff --git a/packages/compiler/src/native/sanitizer.ts b/packages/compiler/src/native/sanitizer.ts index abc15d043..81667b28b 100644 --- a/packages/compiler/src/native/sanitizer.ts +++ b/packages/compiler/src/native/sanitizer.ts @@ -14,7 +14,7 @@ import { selectedRuntimeUnits, type RuntimePackMode, } from "../backend/runtime-pack-core.js"; -import { LRE_SOURCES, ZLIB_SOURCES } from "../backend/vendor-inputs.js"; +import { LRE_SOURCES, zlibInputs } from "../backend/vendor-inputs.js"; import { contentDigest, type NativeCache } from "./cache.js"; import type { NativeToolchain } from "./toolchain.js"; @@ -171,9 +171,10 @@ export function buildSanitizedRuntime( directory = quickjs; args = ["-std=c11", "-I", quickjs]; } else if (name === "zlib") { - sources = ZLIB_SOURCES; + const inputs = zlibInputs(toolchain.target.llvmTriple); + sources = inputs.sources; directory = zlib; - args = ["-std=c11", "-I", zlib]; + args = ["-std=c11", ...inputs.defines.map((define) => "-D" + define), "-I", zlib]; } else if (name === "mbedtls") { directory = join(mbedtls, "library"); sources = readdirSync(directory) diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8405-zlib-compressed-bytes.ts.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8405-zlib-compressed-bytes.ts.json new file mode 100644 index 000000000..509b30d34 --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8405-zlib-compressed-bytes.ts.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/8405-zlib-compressed-bytes.ts" + ], + "diags": [] +} diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8406-zlib-inflate-chunks.cjs.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8406-zlib-inflate-chunks.cjs.json new file mode 100644 index 000000000..772d91511 --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8406-zlib-inflate-chunks.cjs.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/8406-zlib-inflate-chunks.cjs" + ], + "diags": [] +} diff --git a/packages/runtime-darwin-arm64/scripts/build.mjs b/packages/runtime-darwin-arm64/scripts/build.mjs index dc6c24a47..95fe91ab3 100644 --- a/packages/runtime-darwin-arm64/scripts/build.mjs +++ b/packages/runtime-darwin-arm64/scripts/build.mjs @@ -16,6 +16,7 @@ import { import { createDeterministicArchive } from "./archive.mjs"; import { installRuntimePack, withBuildLock } from "./build-state.mjs"; import { shareIdenticalArtifacts } from "../../runtime-pack-common/scripts/share-artifacts.mjs"; +import { zlibInputs } from "../../runtime-pack-common/scripts/zlib-inputs.mjs"; const run = promisify(execFile); const packageRoot = dirname(dirname(fileURLToPath(import.meta.url))); @@ -76,19 +77,7 @@ async function build() { const brotli = join(vendorRoot, "brotli", "c"); const QJS_SOURCES = ["dtoa.c", "libregexp.c", "libunicode.c", "quickjs.c"]; const LRE_SOURCES = ["libregexp.c", "libunicode.c"]; - const ZLIB_SOURCES = [ - "adler32.c", - "compress.c", - "crc32.c", - "deflate.c", - "infback.c", - "inffast.c", - "inflate.c", - "inftrees.c", - "trees.c", - "uncompr.c", - "zutil.c", - ]; + const ZLIB_BUILD = zlibInputs(RUNTIME_PACK_MATRIX.target.llvm_triple); // Speed-flavor executable units are emitted through the host LLVM helper // so their object and import bitcode come from one promoted module. The @@ -309,11 +298,12 @@ async function build() { "-I", quickjs, ]), - await archive("zlib", ZLIB_SOURCES, zlib, [ + await archive("zlib", ZLIB_BUILD.sources, zlib, [ "-target", RUNTIME_PACK_MATRIX.target.llvm_triple, "-std=c11", - "-Os", + "-O3", + ...ZLIB_BUILD.defines.map((define) => `-D${define}`), ...codeAlignment, "-I", zlib, @@ -356,6 +346,7 @@ async function build() { ], [join(vendorRoot, "unicode", "LICENSE"), "artifacts/licenses/unicode.txt", "Unicode-3.0"], [join(zlib, "LICENSE"), "artifacts/licenses/zlib.txt", "Zlib"], + [join(zlib, "LICENSE.chromium"), "artifacts/licenses/zlib-chromium.txt", "BSD-3-Clause"], [join(vendorRoot, "brotli", "LICENSE"), "artifacts/licenses/brotli.txt", "MIT"], [join(mbedtls, "LICENSE"), "artifacts/licenses/mbedtls.txt", "Apache-2.0"], ]; diff --git a/packages/runtime-pack-common/scripts/build.mjs b/packages/runtime-pack-common/scripts/build.mjs index ad9441d67..aebf1b017 100644 --- a/packages/runtime-pack-common/scripts/build.mjs +++ b/packages/runtime-pack-common/scripts/build.mjs @@ -17,6 +17,7 @@ import { buildImportBitcode, buildRuntimeUnit, resolveRuntimeUnitHelper } from " import { installRuntimePack, withBuildLock } from "./build-state.mjs"; import { shareIdenticalArtifacts } from "./share-artifacts.mjs"; import { parallelMap } from "./parallel-map.mjs"; +import { zlibInputs } from "./zlib-inputs.mjs"; const run = promisify(execFile); const packageRoot = process.env.SCRIPTC_RUNTIME_PACK_ROOT; @@ -89,19 +90,7 @@ async function build() { const brotli = join(vendorRoot, "brotli", "c"); const qjsSources = ["dtoa.c", "libregexp.c", "libunicode.c", "quickjs.c"]; const lreSources = ["libregexp.c", "libunicode.c"]; - const zlibSources = [ - "adler32.c", - "compress.c", - "crc32.c", - "deflate.c", - "infback.c", - "inffast.c", - "inflate.c", - "inftrees.c", - "trees.c", - "uncompr.c", - "zutil.c", - ]; + const zlibBuild = zlibInputs(config.target.llvm_triple); const sha256 = async (path) => createHash("sha256") .update(await readFile(path)) @@ -400,10 +389,11 @@ async function build() { : []), ...(requestedArchives.has("zlib") ? [ - await archive("zlib", zlibSources, zlib, [ + await archive("zlib", zlibBuild.sources, zlib, [ ...vendorTarget, "-std=c11", - "-Os", + "-O3", + ...zlibBuild.defines.map((define) => `-D${define}`), "-I", zlib, ]), @@ -454,6 +444,7 @@ async function build() { "BSD-3-Clause", ], [join(zlib, "LICENSE"), "artifacts/licenses/zlib.txt", "Zlib"], + [join(zlib, "LICENSE.chromium"), "artifacts/licenses/zlib-chromium.txt", "BSD-3-Clause"], [join(vendorRoot, "brotli", "LICENSE"), "artifacts/licenses/brotli.txt", "MIT"], [join(mbedtls, "LICENSE"), "artifacts/licenses/mbedtls.txt", "Apache-2.0"], ]; diff --git a/packages/runtime-pack-common/scripts/zlib-inputs.mjs b/packages/runtime-pack-common/scripts/zlib-inputs.mjs new file mode 100644 index 000000000..efb433ff8 --- /dev/null +++ b/packages/runtime-pack-common/scripts/zlib-inputs.mjs @@ -0,0 +1,83 @@ +// The translation units and defines of the vendored zlib (packages/runtime/vendor/zlib, +// the copy Node v24.22.0 bundles in deps/zlib), chosen per target the way Node's +// deps/zlib/zlib.gyp chooses them. The SIMD units carry their own target attributes +// and check the CPU at run time, so every unit builds with the same flags. Compressed +// output does not depend on these choices. packages/compiler/src/backend/vendor-inputs.ts +// keeps the same table for cross builds; a unit test checks that the two agree. + +const COMMON_SOURCES = [ + "adler32.c", + "compress.c", + "cpu_features.c", + "crc32.c", + "deflate.c", + "infback.c", + "inffast.c", + "inftrees.c", + "trees.c", + "uncompr.c", + "zutil.c", +]; + +/** + * @param {string} triple an LLVM or Zig target triple, such as + * "x86_64-unknown-linux-gnu", "arm64-apple-ios15.0" or "aarch64-linux-musl". + * @returns {{ sources: string[], defines: string[] }} + */ +export function zlibInputs(triple) { + const [cpu = "", ...rest] = triple.split("-"); + const system = rest.join("-"); + const architecture = + cpu === "x86_64" || cpu === "amd64" + ? "x64" + : cpu === "aarch64" || cpu === "arm64" + ? "arm64" + : cpu; + const ios = system.includes("ios"); + const windows = + system.includes("windows") || system.includes("win32") || system.includes("mingw"); + // Android reads the CPU features through getauxval, as Linux does: Node's + // ARMV8_OS_ANDROID path needs the NDK's cpu-features library. + const linux = system.includes("linux") || system.includes("android"); + const mac = !ios && (system.includes("darwin") || system.includes("macos")); + const sources = [...COMMON_SOURCES]; + const defines = windows ? [] : ["HAVE_HIDDEN"]; + if (architecture === "x64" && !ios) { + sources.push( + "adler32_simd.c", + "contrib/optimizations/inffast_chunk.c", + "contrib/optimizations/inflate.c", + ); + defines.push( + "ADLER32_SIMD_SSSE3", + windows ? "X86_WINDOWS" : "X86_NOT_WINDOWS", + "INFLATE_CHUNK_SIMD_SSE2", + "INFLATE_CHUNK_READ_64LE", + "DEFLATE_SLIDE_HASH_SSE2", + ); + } else if (architecture === "arm64") { + sources.push("contrib/optimizations/inffast_chunk.c", "contrib/optimizations/inflate.c"); + defines.push( + "INFLATE_CHUNK_SIMD_NEON", + "INFLATE_CHUNK_READ_64LE", + "__ARM_NEON__", + "DEFLATE_SLIDE_HASH_NEON", + ); + if (windows) { + defines.push("ARMV8_OS_WINDOWS"); + } else if (linux || mac) { + // Node builds the Adler-32 and CRC-32 units for every arm64 target but + // iOS and Windows. + sources.push("adler32_simd.c", "crc32_simd.c"); + defines.push( + "ADLER32_SIMD_NEON", + "CRC32_ARMV8_CRC32", + linux ? "ARMV8_OS_LINUX" : "ARMV8_OS_MACOS", + ); + } + } else { + sources.push("inflate.c"); + defines.push("CPU_NO_SIMD"); + } + return { sources, defines }; +} diff --git a/packages/runtime/src/scr_zlib.c b/packages/runtime/src/scr_zlib.c index 8756c3d17..bc1254f29 100644 --- a/packages/runtime/src/scr_zlib.c +++ b/packages/runtime/src/scr_zlib.c @@ -1,13 +1,10 @@ /* node:zlib, the lowered slice: the one-shot zlib/raw-DEFLATE/gzip codecs * over u8 bytes with Node's DEFAULT options. Compiled ONLY when the program * uses zlib (native-toolchain.ts gates it exactly like scr_regex.c/libregexp), - * so zlib-free binaries keep their historical link line. Host builds link - * the system -lz; cross targets link the vendored zlib built per target - * (ensureZlibObjects in native-toolchain.ts). - * - * Compressed OUTPUT bytes are zlib-version-dependent — the differential - * corpus tests round-trips and fixed-blob inflation, never raw deflate - * output. deflate of valid input cannot fail (OOM aborts); inflate of + * so zlib-free binaries keep their historical link line. Every build links + * the vendored zlib (packages/runtime/vendor/zlib), the copy Node bundles, + * so compressed bytes match Node's for the same parameters. deflate of valid + * input cannot fail (OOM aborts); inflate of * corrupt input THROWS Node's catchable Error (zlib's own msg text: * "incorrect header check", ...). */ #include "scr_runtime.h" diff --git a/packages/runtime/vendor/README.md b/packages/runtime/vendor/README.md index 53238410e..cfb0d196f 100644 --- a/packages/runtime/vendor/README.md +++ b/packages/runtime/vendor/README.md @@ -38,13 +38,15 @@ The native runtime pack build produces `libscriptc-quickjs.a` for the compiler b ## zlib/ -- Project: https://github.com/madler/zlib -- Version: 1.3.1 (release tarball zlib-1.3.1.tar.gz, sha256 9a93b2b7dfdac77ceba5a558a580e74667dd6fede4585b91eefb60f03b72df23) +- Project: https://chromium.googlesource.com/chromium/src/third_party/zlib (Chromium's zlib, a fork of https://github.com/madler/zlib) +- Version: 1.3.2.1-motley-285e94b, the copy Node v24.22.0 bundles in `deps/zlib` (`process.versions.zlib`) - License: zlib (see zlib/LICENSE) -The CROSS-target arm of node:zlib (see packages/runtime/src/scr_zlib.c): host builds keep the historical system `-lz` link (macOS ships libz), but zig's cross sysroots have no libz, so SCRIPTC_TARGET builds compile this vendored copy per target instead. Only the flat `*.c`/`*.h` at the distribution root are vendored (LICENSE beside them) — contrib, tests, build machinery, and docs are not. No vendored file is modified; the gz* file-I/O TUs are vendored for faithfulness but never compiled (nothing references the gzFile API — see ZLIB_SOURCES in packages/compiler/src/backend/vendor-archives.ts). To update, re-fetch the release tarball, copy the same flat set, and bump `ZLIB_VERSION` in vendor-archives.ts. +The codec behind node:zlib's gzip, deflate and inflate functions and streams (see packages/runtime/src/scr_zlib.c) and the native fetch's gzip decoder. The flat `*.c`/`*.h` files at the root of Node's `deps/zlib`, `contrib/optimizations/`, `LICENSE` and `README.chromium` are vendored; `contrib/minizip`, the other contrib directories, tests, patches, Chromium's build files and docs are not. No vendored file is modified, and the files match Node's copy. The gz* file-I/O units are vendored but never compiled (nothing references the gzFile API). -The objects build lazily on the first zlib-using cross compile into the per-user build cache's `vendor/zlib----/` directory — one flavor per driver/target and compiler environment/identity (the lre-objects pattern). Zlib-free binaries never compile any of this; compressed OUTPUT bytes are zlib-version-dependent, which is why the corpus only compares round-trips and fixed-blob inflation. +Each target compiles the units and defines Node's `deps/zlib/zlib.gyp` selects for it: the SSSE3 Adler-32 and SSE2 inflate and slide-hash code on x86-64, the NEON code and the ARMv8 CRC-32 code on arm64 Linux, Android and macOS, the NEON inflate and slide-hash code on iOS and Windows arm64, and the portable code (`CPU_NO_SIMD`) elsewhere. The table is `zlibInputs` in packages/runtime-pack-common/scripts/zlib-inputs.mjs (runtime packs) and in packages/compiler/src/backend/vendor-inputs.ts (Zig cross builds and the sanitized runtime), and a unit test keeps the two identical. Android reads CPU features through `getauxval` as Linux does, where Node's Android build uses the NDK's cpu-features library. The SIMD units check the CPU at run time and give the same output as the portable code, so compressed bytes match Node's for the same parameters on every target. To update, copy the same files from the `deps/zlib` of the Node version scriptc follows and bump `ZLIB_VERSION` in vendor-inputs.ts. + +Runtime packs archive zlib at `-O3`, as Node builds it. Zig cross builds compile the objects lazily on the first zlib-using cross compile into the per-user build cache's `vendor/zlib----/` directory, one flavor per driver/target and compiler environment/identity (the lre-objects pattern). Zlib-free binaries compile and link none of it. ## brotli/ diff --git a/packages/runtime/vendor/zlib/LICENSE b/packages/runtime/vendor/zlib/LICENSE index ab8ee6f71..b7a69d058 100644 --- a/packages/runtime/vendor/zlib/LICENSE +++ b/packages/runtime/vendor/zlib/LICENSE @@ -1,6 +1,6 @@ Copyright notice: - (C) 1995-2022 Jean-loup Gailly and Mark Adler + (C) 1995-2026 Jean-loup Gailly and Mark Adler This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/packages/runtime/vendor/zlib/LICENSE.chromium b/packages/runtime/vendor/zlib/LICENSE.chromium new file mode 100644 index 000000000..2249a2865 --- /dev/null +++ b/packages/runtime/vendor/zlib/LICENSE.chromium @@ -0,0 +1,27 @@ +// Copyright 2015 The Chromium Authors +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google LLC nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/packages/runtime/vendor/zlib/README.chromium b/packages/runtime/vendor/zlib/README.chromium new file mode 100644 index 000000000..232ef66ae --- /dev/null +++ b/packages/runtime/vendor/zlib/README.chromium @@ -0,0 +1,38 @@ +Name: zlib +Short Name: zlib +URL: https://github.com/madler/zlib +Version: 1.3.2 +Revision: 09a1572aa624e5ddb6c075dc013880de70b1b9b9 +Update Mechanism: Manual (https://crbug.com/422348588) +CPEPrefix: cpe:/a:zlib:zlib:1.3.2 +Security Critical: yes +Shipped: yes +License: Zlib +License File: LICENSE +License Android Compatible: yes + +Description: +"A massively spiffy yet delicately unobtrusive compression library." + +zlib is a free, general-purpose, legally unencumbered lossless data-compression +library. zlib implements the "deflate" compression algorithm described by RFC +1951, which combines the LZ77 (Lempel-Ziv) algorithm with Huffman coding. zlib +also implements the zlib (RFC 1950) and gzip (RFC 1952) wrapper formats. + +Local Modifications: + - Only source code from the http://zlib.net distribution used to build the zlib + and minizip libraries are present. Many other files have been omitted. Only *.c + and *.h files from the upstream root directory, contrib/minizip and + examples/zpipe.c were imported. + - The files named '*simd*' are original x86/Arm/RISC-V specific optimizations. + - The contents of the google directory are original Chromium-specific + additions. + - The contents of the 'contrib' of directory are either Chromium-specific + additions or heavily patched zlib files (e.g. inffast_chunk*). + - Added chromeconf.h + - Plus the changes in 'patches' folder. + - Code in contrib/ other than contrib/minizip was added to match zlib's + contributor layout. + - In sync with 1.3.2 official release + - ZIP reader modified to allow for progress callbacks during extraction. + - ZIP reader modified to add detection of AES encrypted content. diff --git a/packages/runtime/vendor/zlib/adler32.c b/packages/runtime/vendor/zlib/adler32.c index 04b81d29b..de78b4e56 100644 --- a/packages/runtime/vendor/zlib/adler32.c +++ b/packages/runtime/vendor/zlib/adler32.c @@ -57,10 +57,27 @@ # define MOD63(a) a %= BASE #endif +#include "cpu_features.h" +#if defined(ADLER32_SIMD_SSSE3) || defined(ADLER32_SIMD_NEON) || defined(ADLER32_SIMD_RVV) +#include "adler32_simd.h" +#endif + /* ========================================================================= */ uLong ZEXPORT adler32_z(uLong adler, const Bytef *buf, z_size_t len) { unsigned long sum2; unsigned n; + /* TODO(cavalcantii): verify if this lengths are optimal for current CPUs. */ +#if defined(ADLER32_SIMD_SSSE3) || defined(ADLER32_SIMD_NEON) \ + || defined(ADLER32_SIMD_RVV) +#if defined(ADLER32_SIMD_SSSE3) + if (buf != Z_NULL && len >= 64 && x86_cpu_enable_ssse3) +#elif defined(ADLER32_SIMD_NEON) + if (buf != Z_NULL && len >= 64) +#elif defined(ADLER32_SIMD_RVV) + if (buf != Z_NULL && len >= 32 && riscv_cpu_enable_rvv) +#endif + return adler32_simd_(adler, buf, len); +#endif /* split Adler-32 into component sums */ sum2 = (adler >> 16) & 0xffff; @@ -77,9 +94,25 @@ uLong ZEXPORT adler32_z(uLong adler, const Bytef *buf, z_size_t len) { return adler | (sum2 << 16); } +#if defined(ADLER32_SIMD_SSSE3) || defined(ADLER32_SIMD_NEON) \ + || defined(RISCV_RVV) + /* + * Use SIMD to compute the adler32. Since this function can be + * freely used, check CPU features here. zlib convention is to + * call adler32(0, NULL, 0), before making calls to adler32(). + * So this is a good early (and infrequent) place to cache CPU + * features for those later, more interesting adler32() calls. + */ + if (buf == Z_NULL) { + if (!len) /* Assume user is calling adler32(0, NULL, 0); */ + cpu_check_features(); + return 1L; + } +#else /* initial Adler-32 value (deferred check for len == 1 speed) */ if (buf == Z_NULL) return 1L; +#endif /* in case short lengths are provided, keep it somewhat fast */ if (len < 16) { diff --git a/packages/runtime/vendor/zlib/adler32_simd.c b/packages/runtime/vendor/zlib/adler32_simd.c new file mode 100644 index 000000000..ce4ce7c57 --- /dev/null +++ b/packages/runtime/vendor/zlib/adler32_simd.c @@ -0,0 +1,459 @@ +/* adler32_simd.c + * + * Copyright 2017 The Chromium Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the Chromium source repository LICENSE file. + * + * Per http://en.wikipedia.org/wiki/Adler-32 the adler32 A value (aka s1) is + * the sum of N input data bytes D1 ... DN, + * + * A = A0 + D1 + D2 + ... + DN + * + * where A0 is the initial value. + * + * SSE2 _mm_sad_epu8() can be used for byte sums (see http://bit.ly/2wpUOeD, + * for example) and accumulating the byte sums can use SSE shuffle-adds (see + * the "Integer" section of http://bit.ly/2erPT8t for details). Arm NEON has + * similar instructions. + * + * The adler32 B value (aka s2) sums the A values from each step: + * + * B0 + (A0 + D1) + (A0 + D1 + D2) + ... + (A0 + D1 + D2 + ... + DN) or + * + * B0 + N.A0 + N.D1 + (N-1).D2 + (N-2).D3 + ... + (N-(N-1)).DN + * + * B0 being the initial value. For 32 bytes (ideal for garden-variety SIMD): + * + * B = B0 + 32.A0 + [D1 D2 D3 ... D32] x [32 31 30 ... 1]. + * + * Adjacent blocks of 32 input bytes can be iterated with the expressions to + * compute the adler32 s1 s2 of M >> 32 input bytes [1]. + * + * As M grows, the s1 s2 sums grow. If left unchecked, they would eventually + * overflow the precision of their integer representation (bad). However, s1 + * and s2 also need to be computed modulo the adler BASE value (reduced). If + * at most NMAX bytes are processed before a reduce, s1 s2 _cannot_ overflow + * a uint32_t type (the NMAX constraint) [2]. + * + * [1] the iterative equations for s2 contain constant factors; these can be + * hoisted from the n-blocks do loop of the SIMD code. + * + * [2] zlib adler32_z() uses this fact to implement NMAX-block-based updates + * of the adler s1 s2 of uint32_t type (see adler32.c). + */ + +#include "adler32_simd.h" + +/* Definitions from adler32.c: largest prime smaller than 65536 */ +#define BASE 65521U +/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */ +#define NMAX 5552 + +#if defined(ADLER32_SIMD_SSSE3) + +#include + +#if defined(__GNUC__) || defined(__clang__) +__attribute__((__target__("ssse3"))) +#endif +uint32_t ZLIB_INTERNAL adler32_simd_( /* SSSE3 */ + uint32_t adler, + const unsigned char *buf, + z_size_t len) +{ + /* + * Split Adler-32 into component sums. + */ + uint32_t s1 = adler & 0xffff; + uint32_t s2 = adler >> 16; + + /* + * Process the data in blocks. + */ + const unsigned BLOCK_SIZE = 1 << 5; + + z_size_t blocks = len / BLOCK_SIZE; + len -= blocks * BLOCK_SIZE; + + while (blocks) + { + unsigned n = NMAX / BLOCK_SIZE; /* The NMAX constraint. */ + if (n > blocks) + n = (unsigned) blocks; + blocks -= n; + + const __m128i tap1 = + _mm_setr_epi8(32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17); + const __m128i tap2 = + _mm_setr_epi8(16,15,14,13,12,11,10, 9, 8, 7, 6, 5, 4, 3, 2, 1); + const __m128i zero = + _mm_setr_epi8( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + const __m128i ones = + _mm_set_epi16( 1, 1, 1, 1, 1, 1, 1, 1); + + /* + * Process n blocks of data. At most NMAX data bytes can be + * processed before s2 must be reduced modulo BASE. + */ + __m128i v_ps = _mm_set_epi32(0, 0, 0, s1 * n); + __m128i v_s2 = _mm_set_epi32(0, 0, 0, s2); + __m128i v_s1 = _mm_set_epi32(0, 0, 0, 0); + + do { + /* + * Load 32 input bytes. + */ + const __m128i bytes1 = _mm_loadu_si128((__m128i*)(buf)); + const __m128i bytes2 = _mm_loadu_si128((__m128i*)(buf + 16)); + + /* + * Add previous block byte sum to v_ps. + */ + v_ps = _mm_add_epi32(v_ps, v_s1); + + /* + * Horizontally add the bytes for s1, multiply-adds the + * bytes by [ 32, 31, 30, ... ] for s2. + */ + v_s1 = _mm_add_epi32(v_s1, _mm_sad_epu8(bytes1, zero)); + const __m128i mad1 = _mm_maddubs_epi16(bytes1, tap1); + v_s2 = _mm_add_epi32(v_s2, _mm_madd_epi16(mad1, ones)); + + v_s1 = _mm_add_epi32(v_s1, _mm_sad_epu8(bytes2, zero)); + const __m128i mad2 = _mm_maddubs_epi16(bytes2, tap2); + v_s2 = _mm_add_epi32(v_s2, _mm_madd_epi16(mad2, ones)); + + buf += BLOCK_SIZE; + + } while (--n); + + v_s2 = _mm_add_epi32(v_s2, _mm_slli_epi32(v_ps, 5)); + + /* + * Sum epi32 ints v_s1(s2) and accumulate in s1(s2). + */ + +#define S23O1 _MM_SHUFFLE(2,3,0,1) /* A B C D -> B A D C */ +#define S1O32 _MM_SHUFFLE(1,0,3,2) /* A B C D -> C D A B */ + + v_s1 = _mm_add_epi32(v_s1, _mm_shuffle_epi32(v_s1, S23O1)); + v_s1 = _mm_add_epi32(v_s1, _mm_shuffle_epi32(v_s1, S1O32)); + + s1 += _mm_cvtsi128_si32(v_s1); + + v_s2 = _mm_add_epi32(v_s2, _mm_shuffle_epi32(v_s2, S23O1)); + v_s2 = _mm_add_epi32(v_s2, _mm_shuffle_epi32(v_s2, S1O32)); + + s2 = _mm_cvtsi128_si32(v_s2); + +#undef S23O1 +#undef S1O32 + + /* + * Reduce. + */ + s1 %= BASE; + s2 %= BASE; + } + + /* + * Handle leftover data. + */ + if (len) { + if (len >= 16) { + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + + len -= 16; + } + + while (len--) { + s2 += (s1 += *buf++); + } + + if (s1 >= BASE) + s1 -= BASE; + s2 %= BASE; + } + + /* + * Return the recombined sums. + */ + return s1 | (s2 << 16); +} + +#elif defined(ADLER32_SIMD_NEON) + +#include + +uint32_t ZLIB_INTERNAL adler32_simd_( /* NEON */ + uint32_t adler, + const unsigned char *buf, + z_size_t len) +{ + /* + * Split Adler-32 into component sums. + */ + uint32_t s1 = adler & 0xffff; + uint32_t s2 = adler >> 16; + + /* + * Serially compute s1 & s2, until the data is 16-byte aligned. + */ + if ((uintptr_t)buf & 15) { + while ((uintptr_t)buf & 15) { + s2 += (s1 += *buf++); + --len; + } + + if (s1 >= BASE) + s1 -= BASE; + s2 %= BASE; + } + + /* + * Process the data in blocks. + */ + const unsigned BLOCK_SIZE = 1 << 5; + + z_size_t blocks = len / BLOCK_SIZE; + len -= blocks * BLOCK_SIZE; + + while (blocks) + { + unsigned n = NMAX / BLOCK_SIZE; /* The NMAX constraint. */ + if (n > blocks) + n = (unsigned) blocks; + blocks -= n; + + /* + * Process n blocks of data. At most NMAX data bytes can be + * processed before s2 must be reduced modulo BASE. + */ + uint32x4_t v_s2 = (uint32x4_t) { 0, 0, 0, s1 * n }; + uint32x4_t v_s1 = (uint32x4_t) { 0, 0, 0, 0 }; + + uint16x8_t v_column_sum_1 = vdupq_n_u16(0); + uint16x8_t v_column_sum_2 = vdupq_n_u16(0); + uint16x8_t v_column_sum_3 = vdupq_n_u16(0); + uint16x8_t v_column_sum_4 = vdupq_n_u16(0); + + do { + /* + * Load 32 input bytes. + */ + const uint8x16_t bytes1 = vld1q_u8((uint8_t*)(buf)); + const uint8x16_t bytes2 = vld1q_u8((uint8_t*)(buf + 16)); + + /* + * Add previous block byte sum to v_s2. + */ + v_s2 = vaddq_u32(v_s2, v_s1); + + /* + * Horizontally add the bytes for s1. + */ + v_s1 = vpadalq_u16(v_s1, vpadalq_u8(vpaddlq_u8(bytes1), bytes2)); + + /* + * Vertically add the bytes for s2. + */ + v_column_sum_1 = vaddw_u8(v_column_sum_1, vget_low_u8 (bytes1)); + v_column_sum_2 = vaddw_u8(v_column_sum_2, vget_high_u8(bytes1)); + v_column_sum_3 = vaddw_u8(v_column_sum_3, vget_low_u8 (bytes2)); + v_column_sum_4 = vaddw_u8(v_column_sum_4, vget_high_u8(bytes2)); + + buf += BLOCK_SIZE; + + } while (--n); + + v_s2 = vshlq_n_u32(v_s2, 5); + + /* + * Multiply-add bytes by [ 32, 31, 30, ... ] for s2. + */ + v_s2 = vmlal_u16(v_s2, vget_low_u16 (v_column_sum_1), + (uint16x4_t) { 32, 31, 30, 29 }); + v_s2 = vmlal_u16(v_s2, vget_high_u16(v_column_sum_1), + (uint16x4_t) { 28, 27, 26, 25 }); + v_s2 = vmlal_u16(v_s2, vget_low_u16 (v_column_sum_2), + (uint16x4_t) { 24, 23, 22, 21 }); + v_s2 = vmlal_u16(v_s2, vget_high_u16(v_column_sum_2), + (uint16x4_t) { 20, 19, 18, 17 }); + v_s2 = vmlal_u16(v_s2, vget_low_u16 (v_column_sum_3), + (uint16x4_t) { 16, 15, 14, 13 }); + v_s2 = vmlal_u16(v_s2, vget_high_u16(v_column_sum_3), + (uint16x4_t) { 12, 11, 10, 9 }); + v_s2 = vmlal_u16(v_s2, vget_low_u16 (v_column_sum_4), + (uint16x4_t) { 8, 7, 6, 5 }); + v_s2 = vmlal_u16(v_s2, vget_high_u16(v_column_sum_4), + (uint16x4_t) { 4, 3, 2, 1 }); + + /* + * Sum epi32 ints v_s1(s2) and accumulate in s1(s2). + */ + uint32x2_t sum1 = vpadd_u32(vget_low_u32(v_s1), vget_high_u32(v_s1)); + uint32x2_t sum2 = vpadd_u32(vget_low_u32(v_s2), vget_high_u32(v_s2)); + uint32x2_t s1s2 = vpadd_u32(sum1, sum2); + + s1 += vget_lane_u32(s1s2, 0); + s2 += vget_lane_u32(s1s2, 1); + + /* + * Reduce. + */ + s1 %= BASE; + s2 %= BASE; + } + + /* + * Handle leftover data. + */ + if (len) { + if (len >= 16) { + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + + len -= 16; + } + + while (len--) { + s2 += (s1 += *buf++); + } + + if (s1 >= BASE) + s1 -= BASE; + s2 %= BASE; + } + + /* + * Return the recombined sums. + */ + return s1 | (s2 << 16); +} + +#elif defined(ADLER32_SIMD_RVV) +#include + +/* + * Patch by Simon Hosie, from: + * https://github.com/cloudflare/zlib/pull/55 + */ + +uint32_t ZLIB_INTERNAL adler32_simd_( /* RVV */ + uint32_t adler, + const unsigned char *buf, + unsigned long len) +{ + size_t vl = __riscv_vsetvlmax_e8m2(); + const vuint16m4_t zero16 = __riscv_vmv_v_x_u16m4(0, vl); + vuint16m4_t a_sum = zero16; + vuint32m8_t b_sum = __riscv_vmv_v_x_u32m8(0, vl); + + /* Deal with the part which is not a multiple of vl first; because it's + * easier to zero-stuff the beginning of the checksum than it is to tweak the + * multipliers and sums for odd lengths afterwards. + */ + size_t head = len & (vl - 1); + if (head > 0) { + vuint8m2_t zero8 = __riscv_vmv_v_x_u8m2(0, vl); + vuint8m2_t in = __riscv_vle8_v_u8m2(buf, vl); + in = __riscv_vslideup(zero8, in, vl - head, vl); + vuint16m4_t in16 = __riscv_vwcvtu_x(in, vl); + a_sum = in16; + buf += head; + } + + /* We have a 32-bit accumulator, and in each iteration we add 22-times a + * 16-bit value, plus another 16-bit value. We periodically subtract up to + * 65535 times BASE to avoid overflow. b_overflow estimates how often we + * need to do this subtraction. + */ + const int b_overflow = BASE / 23; + int fixup = b_overflow; + ssize_t iters = (len - head) / vl; + while (iters > 0) { + const vuint16m4_t a_overflow = __riscv_vrsub(a_sum, BASE, vl); + int batch = iters < 22 ? iters : 22; + iters -= batch; + b_sum = __riscv_vwmaccu(b_sum, batch, a_sum, vl); + vuint16m4_t a_batch = zero16, b_batch = zero16; + + /* Do a short batch, where neither a_sum nor b_sum can overflow a 16-bit + * register. Then add them back into the main accumulators. + */ + while (batch-- > 0) { + vuint8m2_t in8 = __riscv_vle8_v_u8m2(buf, vl); + buf += vl; + b_batch = __riscv_vadd(b_batch, a_batch, vl); + a_batch = __riscv_vwaddu_wv(a_batch, in8, vl); + } + vbool4_t ov = __riscv_vmsgeu(a_batch, a_overflow, vl); + a_sum = __riscv_vadd(a_sum, a_batch, vl); + a_sum = __riscv_vadd_mu(ov, a_sum, a_sum, 65536 - BASE, vl); + b_sum = __riscv_vwaddu_wv(b_sum, b_batch, vl); + if (--fixup <= 0) { + b_sum = __riscv_vnmsac(b_sum, BASE, __riscv_vsrl(b_sum, 16, vl), vl); + fixup = b_overflow; + } + } + /* Adjust per-lane sums to have appropriate offsets from the end of the + * buffer. + */ + const vuint16m4_t off = __riscv_vrsub(__riscv_vid_v_u16m4(vl), vl, vl); + vuint16m4_t bsum16 = __riscv_vncvt_x(__riscv_vremu(b_sum, BASE, vl), vl); + b_sum = __riscv_vadd(__riscv_vwmulu(a_sum, off, vl), + __riscv_vwmulu(bsum16, vl, vl), vl); + bsum16 = __riscv_vncvt_x(__riscv_vremu(b_sum, BASE, vl), vl); + + /* And finally, do a horizontal sum across the registers for the final + * result. + */ + uint32_t a = adler & 0xffff; + uint32_t b = ((adler >> 16) + a * (len % BASE)) % BASE; + vuint32m1_t sca = __riscv_vmv_v_x_u32m1(a, 1); + vuint32m1_t scb = __riscv_vmv_v_x_u32m1(b, 1); + sca = __riscv_vwredsumu(a_sum, sca, vl); + scb = __riscv_vwredsumu(bsum16, scb, vl); + a = __riscv_vmv_x(sca); + b = __riscv_vmv_x(scb); + a %= BASE; + b %= BASE; + return (b << 16) | a; +} + +#endif /* ADLER32_SIMD_SSSE3 */ diff --git a/packages/runtime/vendor/zlib/adler32_simd.h b/packages/runtime/vendor/zlib/adler32_simd.h new file mode 100644 index 000000000..0b2361a51 --- /dev/null +++ b/packages/runtime/vendor/zlib/adler32_simd.h @@ -0,0 +1,16 @@ +/* adler32_simd.h + * + * Copyright 2017 The Chromium Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the Chromium source repository LICENSE file. + */ + +#include + +#include "zconf.h" +#include "zutil.h" + +uint32_t ZLIB_INTERNAL adler32_simd_( + uint32_t adler, + const unsigned char *buf, + z_size_t len); diff --git a/packages/runtime/vendor/zlib/chromeconf.h b/packages/runtime/vendor/zlib/chromeconf.h new file mode 100644 index 000000000..77f0e29e0 --- /dev/null +++ b/packages/runtime/vendor/zlib/chromeconf.h @@ -0,0 +1,211 @@ +/* Copyright 2017 The Chromium Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. */ + +#ifndef THIRD_PARTY_ZLIB_CHROMECONF_H_ +#define THIRD_PARTY_ZLIB_CHROMECONF_H_ + +#if defined(COMPONENT_BUILD) +#if defined(WIN32) +#if defined(ZLIB_IMPLEMENTATION) +#define ZEXTERN __declspec(dllexport) +#else +#define ZEXTERN __declspec(dllimport) +#endif +#elif defined(ZLIB_IMPLEMENTATION) +#define ZEXTERN __attribute__((visibility("default"))) +#endif +#endif + +/* Rename all zlib names with a Cr_z_ prefix. This is based on the Z_PREFIX + * option from zconf.h, but with a custom prefix. Where zconf.h would rename + * both a macro and its underscore-suffixed internal implementation (such as + * deflateInit2 and deflateInit2_), only the implementation is renamed here. + * The Byte type is also omitted. + * + * To generate this list, run + * sed -rn -e 's/^# *define +([^ ]+) +(z_[^ ]+)$/#define \1 Cr_\2/p' zconf.h + * (use -E instead of -r on macOS). + * + * gzread is also addressed by modifications in gzread.c and zlib.h. */ + +#define Z_CR_PREFIX_SET + +#define _dist_code Cr_z__dist_code +#define _length_code Cr_z__length_code +#define _tr_align Cr_z__tr_align +#define _tr_flush_bits Cr_z__tr_flush_bits +#define _tr_flush_block Cr_z__tr_flush_block +#define _tr_init Cr_z__tr_init +#define _tr_stored_block Cr_z__tr_stored_block +#define _tr_tally Cr_z__tr_tally +#define adler32 Cr_z_adler32 +#define adler32_combine Cr_z_adler32_combine +#define adler32_combine64 Cr_z_adler32_combine64 +#define adler32_z Cr_z_adler32_z +#define compress Cr_z_compress +#define compress2 Cr_z_compress2 +#define compress_z Cr_z_compress_z +#define compress2_z Cr_z_compress2_z +#define compressBound Cr_z_compressBound +#define compressBound_z Cr_z_compressBound_z +#define crc32 Cr_z_crc32 +#define crc32_combine Cr_z_crc32_combine +#define crc32_combine64 Cr_z_crc32_combine64 +#define crc32_combine_gen Cr_z_crc32_combine_gen +#define crc32_combine_gen64 Cr_z_crc32_combine_gen64 +#define crc32_combine_op Cr_z_crc32_combine_op +#define crc32_z Cr_z_crc32_z +#define deflate Cr_z_deflate +#define deflateBound Cr_z_deflateBound +#define deflateBound_z Cr_z_deflateBound_z +#define deflateCopy Cr_z_deflateCopy +#define deflateEnd Cr_z_deflateEnd +#define deflateGetDictionary Cr_z_deflateGetDictionary +/* #undef deflateInit */ +/* #undef deflateInit2 */ +#define deflateInit2_ Cr_z_deflateInit2_ +#define deflateInit_ Cr_z_deflateInit_ +#define deflateParams Cr_z_deflateParams +#define deflatePending Cr_z_deflatePending +#define deflatePrime Cr_z_deflatePrime +#define deflateReset Cr_z_deflateReset +#define deflateResetKeep Cr_z_deflateResetKeep +#define deflateSetDictionary Cr_z_deflateSetDictionary +#define deflateSetHeader Cr_z_deflateSetHeader +#define deflateTune Cr_z_deflateTune +#define deflateUsed Cr_z_deflateUsed +#define deflate_copyright Cr_z_deflate_copyright +#define get_crc_table Cr_z_get_crc_table +#define gz_error Cr_z_gz_error +#define gz_intmax Cr_z_gz_intmax +#define gz_strwinerror Cr_z_gz_strwinerror +#define gzbuffer Cr_z_gzbuffer +#define gzclearerr Cr_z_gzclearerr +#define gzclose Cr_z_gzclose +#define gzclose_r Cr_z_gzclose_r +#define gzclose_w Cr_z_gzclose_w +#define gzdirect Cr_z_gzdirect +#define gzdopen Cr_z_gzdopen +#define gzeof Cr_z_gzeof +#define gzerror Cr_z_gzerror +#define gzflush Cr_z_gzflush +#define gzfread Cr_z_gzfread +#define gzfwrite Cr_z_gzfwrite +#define gzgetc Cr_z_gzgetc +#define gzgetc_ Cr_z_gzgetc_ +#define gzgets Cr_z_gzgets +#define gzoffset Cr_z_gzoffset +#define gzoffset64 Cr_z_gzoffset64 +#define gzopen Cr_z_gzopen +#define gzopen64 Cr_z_gzopen64 +#define gzopen_w Cr_z_gzopen_w +#define gzprintf Cr_z_gzprintf +#define gzputc Cr_z_gzputc +#define gzputs Cr_z_gzputs +#define gzread Cr_z_gzread +#define gzrewind Cr_z_gzrewind +#define gzseek Cr_z_gzseek +#define gzseek64 Cr_z_gzseek64 +#define gzsetparams Cr_z_gzsetparams +#define gztell Cr_z_gztell +#define gztell64 Cr_z_gztell64 +#define gzungetc Cr_z_gzungetc +#define gzvprintf Cr_z_gzvprintf +#define gzwrite Cr_z_gzwrite +#define inflate Cr_z_inflate +#define inflateBack Cr_z_inflateBack +#define inflateBackEnd Cr_z_inflateBackEnd +/* #undef inflateBackInit */ +#define inflateBackInit_ Cr_z_inflateBackInit_ +#define inflateCodesUsed Cr_z_inflateCodesUsed +#define inflateCopy Cr_z_inflateCopy +#define inflateEnd Cr_z_inflateEnd +#define inflateGetDictionary Cr_z_inflateGetDictionary +#define inflateGetHeader Cr_z_inflateGetHeader +/* #undef inflateInit */ +/* #undef inflateInit2 */ +#define inflateInit2_ Cr_z_inflateInit2_ +#define inflateInit_ Cr_z_inflateInit_ +#define inflateMark Cr_z_inflateMark +#define inflatePrime Cr_z_inflatePrime +#define inflateReset Cr_z_inflateReset +#define inflateReset2 Cr_z_inflateReset2 +#define inflateResetKeep Cr_z_inflateResetKeep +#define inflateSetDictionary Cr_z_inflateSetDictionary +#define inflateSync Cr_z_inflateSync +#define inflateSyncPoint Cr_z_inflateSyncPoint +#define inflateUndermine Cr_z_inflateUndermine +#define inflateValidate Cr_z_inflateValidate +#define inflate_copyright Cr_z_inflate_copyright +#define inflate_fast Cr_z_inflate_fast +#define inflate_table Cr_z_inflate_table +#define inflate_fixed Cr_z_inflate_fixed +#define uncompress Cr_z_uncompress +#define uncompress2 Cr_z_uncompress2 +#define uncompress_z Cr_z_uncompress_z +#define uncompress2_z Cr_z_uncompress2_z +#define zError Cr_z_zError +#define zcalloc Cr_z_zcalloc +#define zcfree Cr_z_zcfree +#define zlibCompileFlags Cr_z_zlibCompileFlags +#define zlibVersion Cr_z_zlibVersion +/* #undef Byte */ +#define Bytef Cr_z_Bytef +#define alloc_func Cr_z_alloc_func +#define charf Cr_z_charf +#define free_func Cr_z_free_func +#define gzFile Cr_z_gzFile +#define gz_header Cr_z_gz_header +#define gz_headerp Cr_z_gz_headerp +#define in_func Cr_z_in_func +#define intf Cr_z_intf +#define out_func Cr_z_out_func +#define uInt Cr_z_uInt +#define uIntf Cr_z_uIntf +#define uLong Cr_z_uLong +#define uLongf Cr_z_uLongf +#define voidp Cr_z_voidp +#define voidpc Cr_z_voidpc +#define voidpf Cr_z_voidpf +#define gz_header_s Cr_z_gz_header_s +/* #undef internal_state */ +/* #undef z_off64_t */ + +/* An exported symbol that isn't handled by Z_PREFIX in zconf.h */ +#define z_errmsg Cr_z_z_errmsg + +/* Symbols added in simd.patch */ +#define copy_with_crc Cr_z_copy_with_crc +#define crc_finalize Cr_z_crc_finalize +#define crc_fold_512to32 Cr_z_crc_fold_512to32 +#define crc_fold_copy Cr_z_crc_fold_copy +#define crc_fold_init Cr_z_crc_fold_init +#define crc_reset Cr_z_crc_reset +#define fill_window_sse Cr_z_fill_window_sse +#define deflate_read_buf Cr_z_deflate_read_buf +#define x86_check_features Cr_z_x86_check_features +#define x86_cpu_enable_simd Cr_z_x86_cpu_enable_simd + +/* Symbols added by adler_simd.c */ +#define adler32_simd_ Cr_z_adler32_simd_ +#define x86_cpu_enable_ssse3 Cr_z_x86_cpu_enable_ssse3 + +/* Symbols added by contrib/optimizations/inffast_chunk */ +#define inflate_fast_chunk_ Cr_z_inflate_fast_chunk_ + +/* Symbols added by crc32_simd.c */ +#define crc32_sse42_simd_ Cr_z_crc32_sse42_simd_ + +/* Symbols added by armv8_crc32 */ +#define arm_cpu_enable_crc32 Cr_z_arm_cpu_enable_crc32 +#define arm_cpu_enable_pmull Cr_z_arm_cpu_enable_pmull +#define arm_check_features Cr_z_arm_check_features +#define armv8_crc32_little Cr_z_armv8_crc32_little +#define armv8_crc32_pmull_little Cr_z_armv8_crc32_pmull_little + +/* Symbols added by cpu_features.c */ +#define cpu_check_features Cr_z_cpu_check_features +#define x86_cpu_enable_sse2 Cr_z_x86_cpu_enable_sse2 + +#endif /* THIRD_PARTY_ZLIB_CHROMECONF_H_ */ diff --git a/packages/runtime/vendor/zlib/compare256.h b/packages/runtime/vendor/zlib/compare256.h new file mode 100644 index 000000000..80061c3fe --- /dev/null +++ b/packages/runtime/vendor/zlib/compare256.h @@ -0,0 +1,56 @@ +/* compare256.h + * + * This does 256-byte match comparison for deflate's longest_match. + * + * Copyright 2026 The Chromium Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the Chromium source repository LICENSE file. + */ +#ifndef COMPARE256_H +#define COMPARE256_H + +#include +#include +#if defined(_MSC_VER) && !defined(__clang__) +#include +#endif + +/* Safe unaligned 16-bit load. Compilers optimize this into a single load + * instruction. */ +static inline uint16_t read16(const void* p) { + uint16_t v; + memcpy(&v, p, sizeof(v)); + return v; +} + +/* Finds the byte offset (0..7) of the first difference in non-zero XOR mask + * `x`: + */ +static inline int compare256_diff(uint64_t x) { +#if defined(_MSC_VER) && !defined(__clang__) + unsigned long i; + _BitScanForward64(&i, x); + return (int)i / 8; +#else + return __builtin_ctzll(x) / 8; +#endif +} + +/* Returns the number of matching leading bytes (0 to 256) between src0 and + * src1. Compares 8 bytes per iteration with early exit. */ +static inline int compare256(const unsigned char* src0, + const unsigned char* src1) { + int len = 0; + do { + uint64_t a, b, x; + memcpy(&a, src0 + len, sizeof(a)); + memcpy(&b, src1 + len, sizeof(b)); + x = a ^ b; + if (x) + return len + compare256_diff(x); + len += (int)sizeof(a); + } while (len < 256); + return 256; +} + +#endif /* COMPARE256_H */ diff --git a/packages/runtime/vendor/zlib/compress.c b/packages/runtime/vendor/zlib/compress.c index f43bacf7a..e3a7516e4 100644 --- a/packages/runtime/vendor/zlib/compress.c +++ b/packages/runtime/vendor/zlib/compress.c @@ -1,5 +1,5 @@ /* compress.c -- compress a memory buffer - * Copyright (C) 1995-2005, 2014, 2016 Jean-loup Gailly, Mark Adler + * Copyright (C) 1995-2026 Jean-loup Gailly, Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -18,13 +18,19 @@ compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_BUF_ERROR if there was not enough room in the output buffer, Z_STREAM_ERROR if the level parameter is invalid. + + The _z versions of the functions take size_t length arguments. */ -int ZEXPORT compress2(Bytef *dest, uLongf *destLen, const Bytef *source, - uLong sourceLen, int level) { +int ZEXPORT compress2_z(Bytef *dest, z_size_t *destLen, const Bytef *source, + z_size_t sourceLen, int level) { z_stream stream; int err; const uInt max = (uInt)-1; - uLong left; + z_size_t left; + + if ((sourceLen > 0 && source == NULL) || + destLen == NULL || (*destLen > 0 && dest == NULL)) + return Z_STREAM_ERROR; left = *destLen; *destLen = 0; @@ -43,23 +49,36 @@ int ZEXPORT compress2(Bytef *dest, uLongf *destLen, const Bytef *source, do { if (stream.avail_out == 0) { - stream.avail_out = left > (uLong)max ? max : (uInt)left; + stream.avail_out = left > (z_size_t)max ? max : (uInt)left; left -= stream.avail_out; } if (stream.avail_in == 0) { - stream.avail_in = sourceLen > (uLong)max ? max : (uInt)sourceLen; + stream.avail_in = sourceLen > (z_size_t)max ? max : + (uInt)sourceLen; sourceLen -= stream.avail_in; } err = deflate(&stream, sourceLen ? Z_NO_FLUSH : Z_FINISH); } while (err == Z_OK); - *destLen = stream.total_out; + *destLen = (z_size_t)(stream.next_out - dest); deflateEnd(&stream); return err == Z_STREAM_END ? Z_OK : err; } - +int ZEXPORT compress2(Bytef *dest, uLongf *destLen, const Bytef *source, + uLong sourceLen, int level) { + int ret; + z_size_t got = *destLen; + ret = compress2_z(dest, &got, source, sourceLen, level); + *destLen = (uLong)got; + return ret; +} /* =========================================================================== */ +int ZEXPORT compress_z(Bytef *dest, z_size_t *destLen, const Bytef *source, + z_size_t sourceLen) { + return compress2_z(dest, destLen, source, sourceLen, + Z_DEFAULT_COMPRESSION); +} int ZEXPORT compress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen) { return compress2(dest, destLen, source, sourceLen, Z_DEFAULT_COMPRESSION); @@ -69,7 +88,23 @@ int ZEXPORT compress(Bytef *dest, uLongf *destLen, const Bytef *source, If the default memLevel or windowBits for deflateInit() is changed, then this function needs to be updated. */ +z_size_t ZEXPORT compressBound_z(z_size_t sourceLen) { + z_size_t bound = sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + + (sourceLen >> 25) + 13; + + /* FIXME(cavalcantii): usage of CRC32 Castagnoli as a hash function + * for the hash table of symbols used for compression has a side effect + * where for compression level [4, 5] it will increase the output buffer size + * by 0.1% (i.e. less than 1%) for a high entropy input (i.e. random data). + * To avoid a scenario where client code would fail, for safety we increase + * the expected output size by 0.8% (i.e. 8x more than the worst scenario). + * See: http://crbug.com/990489 + */ + bound += bound >> 7; // Equivalent to 1.0078125 + + return bound < sourceLen ? (z_size_t)-1 : bound; +} uLong ZEXPORT compressBound(uLong sourceLen) { - return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + - (sourceLen >> 25) + 13; + z_size_t bound = compressBound_z(sourceLen); + return (uLong)bound != bound ? (uLong)-1 : (uLong)bound; } diff --git a/packages/runtime/vendor/zlib/contrib/optimizations/chunkcopy.h b/packages/runtime/vendor/zlib/contrib/optimizations/chunkcopy.h new file mode 100644 index 000000000..97efff3a4 --- /dev/null +++ b/packages/runtime/vendor/zlib/contrib/optimizations/chunkcopy.h @@ -0,0 +1,564 @@ +/* chunkcopy.h -- fast chunk copy and set operations + * Copyright (C) 2017 ARM, Inc. + * Copyright 2017 The Chromium Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the Chromium source repository LICENSE file. + */ + +#ifndef CHUNKCOPY_H +#define CHUNKCOPY_H + +#include +#include "zutil.h" + +#define Z_STATIC_ASSERT(name, assert) typedef char name[(assert) ? 1 : -1] + +#if __STDC_VERSION__ >= 199901L +#define Z_RESTRICT restrict +#else +#define Z_RESTRICT +#endif + +#if defined(__clang__) || defined(__GNUC__) || defined(__llvm__) +#define Z_BUILTIN_MEMCPY __builtin_memcpy +#define Z_BUILTIN_MEMSET __builtin_memset +#else +#define Z_BUILTIN_MEMCPY zmemcpy +#define Z_BUILTIN_MEMSET zmemset +#endif + +#if defined(INFLATE_CHUNK_SIMD_NEON) +#include +typedef uint8x16_t z_vec128i_t; +#elif defined(INFLATE_CHUNK_SIMD_SSE2) +#include +typedef __m128i z_vec128i_t; +#elif defined(INFLATE_CHUNK_GENERIC) +typedef struct { uint8_t x[16]; } z_vec128i_t; +#else +#error chunkcopy.h inflate chunk SIMD is not defined for your build target +#endif + +/* + * Suppress MSan errors about copying uninitialized bytes (crbug.com/1376033). + */ +#define Z_DISABLE_MSAN +#if defined(__has_feature) + #if __has_feature(memory_sanitizer) + #undef Z_DISABLE_MSAN + #define Z_DISABLE_MSAN __attribute__((no_sanitize("memory"))) + #endif +#endif + +/* + * chunk copy type: the z_vec128i_t type size should be exactly 128-bits + * and equal to CHUNKCOPY_CHUNK_SIZE. + */ +#define CHUNKCOPY_CHUNK_SIZE sizeof(z_vec128i_t) + +Z_STATIC_ASSERT(vector_128_bits_wide, + CHUNKCOPY_CHUNK_SIZE == sizeof(int8_t) * 16); + +/* + * Ask the compiler to perform a wide, unaligned load with a machine + * instruction appropriate for the z_vec128i_t type. + */ +static inline z_vec128i_t loadchunk( + const unsigned char FAR* s) Z_DISABLE_MSAN { + z_vec128i_t v; + Z_BUILTIN_MEMCPY(&v, s, sizeof(v)); + return v; +} + +/* + * Ask the compiler to perform a wide, unaligned store with a machine + * instruction appropriate for the z_vec128i_t type. + */ +static inline void storechunk( + unsigned char FAR* d, + const z_vec128i_t v) { + Z_BUILTIN_MEMCPY(d, &v, sizeof(v)); +} + +/* + * Perform a memcpy-like operation, assuming that length is non-zero and that + * it's OK to overwrite at least CHUNKCOPY_CHUNK_SIZE bytes of output even if + * the length is shorter than this. + * + * It also guarantees that it will properly unroll the data if the distance + * between `out` and `from` is at least CHUNKCOPY_CHUNK_SIZE, which we rely on + * in chunkcopy_relaxed(). + * + * Aside from better memory bus utilisation, this means that short copies + * (CHUNKCOPY_CHUNK_SIZE bytes or fewer) will fall straight through the loop + * without iteration, which will hopefully make the branch prediction more + * reliable. + */ +static inline unsigned char FAR* chunkcopy_core( + unsigned char FAR* out, + const unsigned char FAR* from, + unsigned len) Z_DISABLE_MSAN { + const int bump = (--len % CHUNKCOPY_CHUNK_SIZE) + 1; + storechunk(out, loadchunk(from)); + out += bump; + from += bump; + len /= CHUNKCOPY_CHUNK_SIZE; + while (len-- > 0) { + storechunk(out, loadchunk(from)); + out += CHUNKCOPY_CHUNK_SIZE; + from += CHUNKCOPY_CHUNK_SIZE; + } + return out; +} + +/* + * Like chunkcopy_core(), but avoid writing beyond of legal output. + * + * Accepts an additional pointer to the end of safe output. A generic safe + * copy would use (out + len), but it's normally the case that the end of the + * output buffer is beyond the end of the current copy, and this can still be + * exploited. + */ +static inline unsigned char FAR* chunkcopy_core_safe( + unsigned char FAR* out, + const unsigned char FAR* from, + unsigned len, + unsigned char FAR* limit) { + Assert(out + len <= limit, "chunk copy exceeds safety limit"); + if ((limit - out) < (ptrdiff_t)CHUNKCOPY_CHUNK_SIZE) { + const unsigned char FAR* Z_RESTRICT rfrom = from; + Assert((uintptr_t)out - (uintptr_t)from >= len, + "invalid restrict in chunkcopy_core_safe"); + Assert((uintptr_t)from - (uintptr_t)out >= len, + "invalid restrict in chunkcopy_core_safe"); + if (len & 8) { + Z_BUILTIN_MEMCPY(out, rfrom, 8); + out += 8; + rfrom += 8; + } + if (len & 4) { + Z_BUILTIN_MEMCPY(out, rfrom, 4); + out += 4; + rfrom += 4; + } + if (len & 2) { + Z_BUILTIN_MEMCPY(out, rfrom, 2); + out += 2; + rfrom += 2; + } + if (len & 1) { + *out++ = *rfrom++; + } + return out; + } + return chunkcopy_core(out, from, len); +} + +/* + * Perform short copies until distance can be rewritten as being at least + * CHUNKCOPY_CHUNK_SIZE. + * + * Assumes it's OK to overwrite at least the first 2*CHUNKCOPY_CHUNK_SIZE + * bytes of output even if the copy is shorter than this. This assumption + * holds within zlib inflate_fast(), which starts every iteration with at + * least 258 bytes of output space available (258 being the maximum length + * output from a single token; see inffast.c). + */ +static inline unsigned char FAR* chunkunroll_relaxed( + unsigned char FAR* out, + unsigned FAR* dist, + unsigned FAR* len) Z_DISABLE_MSAN { + const unsigned char FAR* from = out - *dist; + while (*dist < *len && *dist < CHUNKCOPY_CHUNK_SIZE) { + storechunk(out, loadchunk(from)); + out += *dist; + *len -= *dist; + *dist += *dist; + } + return out; +} + +#if defined(INFLATE_CHUNK_SIMD_NEON) +/* + * v_load64_dup(): load *src as an unaligned 64-bit int and duplicate it in + * every 64-bit component of the 128-bit result (64-bit int splat). + */ +static inline z_vec128i_t v_load64_dup(const void* src) { + return vcombine_u8(vld1_u8(src), vld1_u8(src)); +} + +/* + * v_load32_dup(): load *src as an unaligned 32-bit int and duplicate it in + * every 32-bit component of the 128-bit result (32-bit int splat). + */ +static inline z_vec128i_t v_load32_dup(const void* src) { + int32_t i32; + Z_BUILTIN_MEMCPY(&i32, src, sizeof(i32)); + return vreinterpretq_u8_s32(vdupq_n_s32(i32)); +} + +/* + * v_load16_dup(): load *src as an unaligned 16-bit int and duplicate it in + * every 16-bit component of the 128-bit result (16-bit int splat). + */ +static inline z_vec128i_t v_load16_dup(const void* src) { + int16_t i16; + Z_BUILTIN_MEMCPY(&i16, src, sizeof(i16)); + return vreinterpretq_u8_s16(vdupq_n_s16(i16)); +} + +/* + * v_load8_dup(): load the 8-bit int *src and duplicate it in every 8-bit + * component of the 128-bit result (8-bit int splat). + */ +static inline z_vec128i_t v_load8_dup(const void* src) { + return vld1q_dup_u8((const uint8_t*)src); +} + +/* + * v_store_128(): store the 128-bit vec in a memory destination (that might + * not be 16-byte aligned) void* out. + */ +static inline void v_store_128(void* out, const z_vec128i_t vec) { + vst1q_u8(out, vec); +} + +#elif defined(INFLATE_CHUNK_SIMD_SSE2) +/* + * v_load64_dup(): load *src as an unaligned 64-bit int and duplicate it in + * every 64-bit component of the 128-bit result (64-bit int splat). + */ +static inline z_vec128i_t v_load64_dup(const void* src) { + int64_t i64; + Z_BUILTIN_MEMCPY(&i64, src, sizeof(i64)); + return _mm_set1_epi64x(i64); +} + +/* + * v_load32_dup(): load *src as an unaligned 32-bit int and duplicate it in + * every 32-bit component of the 128-bit result (32-bit int splat). + */ +static inline z_vec128i_t v_load32_dup(const void* src) { + int32_t i32; + Z_BUILTIN_MEMCPY(&i32, src, sizeof(i32)); + return _mm_set1_epi32(i32); +} + +/* + * v_load16_dup(): load *src as an unaligned 16-bit int and duplicate it in + * every 16-bit component of the 128-bit result (16-bit int splat). + */ +static inline z_vec128i_t v_load16_dup(const void* src) { + int16_t i16; + Z_BUILTIN_MEMCPY(&i16, src, sizeof(i16)); + return _mm_set1_epi16(i16); +} + +/* + * v_load8_dup(): load the 8-bit int *src and duplicate it in every 8-bit + * component of the 128-bit result (8-bit int splat). + */ +static inline z_vec128i_t v_load8_dup(const void* src) { + return _mm_set1_epi8(*(const char*)src); +} + +/* + * v_store_128(): store the 128-bit vec in a memory destination (that might + * not be 16-byte aligned) void* out. + */ +static inline void v_store_128(void* out, const z_vec128i_t vec) { + _mm_storeu_si128((__m128i*)out, vec); +} +#elif defined(INFLATE_CHUNK_GENERIC) +/* + * Default implementations for chunk-copy functions rely on memcpy() being + * inlined by the compiler for best performance. This is most likely to work + * as expected when the length argument is constant (as is the case here) and + * the target supports unaligned loads and stores. Since that's not always a + * safe assumption, this may need extra compiler arguments such as + * `-mno-strict-align` or `-munaligned-access`, or the availability of + * extensions like SIMD. + */ + +/* + * v_load64_dup(): load *src as an unaligned 64-bit int and duplicate it in + * every 64-bit component of the 128-bit result (64-bit int splat). + */ +static inline z_vec128i_t v_load64_dup(const void* src) { + int64_t in; + Z_BUILTIN_MEMCPY(&in, src, sizeof(in)); + z_vec128i_t out; + for (int i = 0; i < sizeof(out); i += sizeof(in)) { + Z_BUILTIN_MEMCPY((uint8_t*)&out + i, &in, sizeof(in)); + } + return out; +} + +/* + * v_load32_dup(): load *src as an unaligned 32-bit int and duplicate it in + * every 32-bit component of the 128-bit result (32-bit int splat). + */ +static inline z_vec128i_t v_load32_dup(const void* src) { + int32_t in; + Z_BUILTIN_MEMCPY(&in, src, sizeof(in)); + z_vec128i_t out; + for (int i = 0; i < sizeof(out); i += sizeof(in)) { + Z_BUILTIN_MEMCPY((uint8_t*)&out + i, &in, sizeof(in)); + } + return out; +} + +/* + * v_load16_dup(): load *src as an unaligned 16-bit int and duplicate it in + * every 16-bit component of the 128-bit result (16-bit int splat). + */ +static inline z_vec128i_t v_load16_dup(const void* src) { + int16_t in; + Z_BUILTIN_MEMCPY(&in, src, sizeof(in)); + z_vec128i_t out; + for (int i = 0; i < sizeof(out); i += sizeof(in)) { + Z_BUILTIN_MEMCPY((uint8_t*)&out + i, &in, sizeof(in)); + } + return out; +} + +/* + * v_load8_dup(): load the 8-bit int *src and duplicate it in every 8-bit + * component of the 128-bit result (8-bit int splat). + */ +static inline z_vec128i_t v_load8_dup(const void* src) { + int8_t in = *(const uint8_t*)src; + z_vec128i_t out; + Z_BUILTIN_MEMSET(&out, in, sizeof(out)); + return out; +} + +/* + * v_store_128(): store the 128-bit vec in a memory destination (that might + * not be 16-byte aligned) void* out. + */ +static inline void v_store_128(void* out, const z_vec128i_t vec) { + Z_BUILTIN_MEMCPY(out, &vec, sizeof(vec)); +} +#endif + +/* + * Perform an overlapping copy which behaves as a memset() operation, but + * supporting periods other than one, and assume that length is non-zero and + * that it's OK to overwrite at least CHUNKCOPY_CHUNK_SIZE*3 bytes of output + * even if the length is shorter than this. + */ +static inline unsigned char FAR* chunkset_core( + unsigned char FAR* out, + unsigned period, + unsigned len) { + z_vec128i_t v; + const int bump = ((len - 1) % sizeof(v)) + 1; + + switch (period) { + case 1: + v = v_load8_dup(out - 1); + v_store_128(out, v); + out += bump; + len -= bump; + while (len > 0) { + v_store_128(out, v); + out += sizeof(v); + len -= sizeof(v); + } + return out; + case 2: + v = v_load16_dup(out - 2); + v_store_128(out, v); + out += bump; + len -= bump; + if (len > 0) { + v = v_load16_dup(out - 2); + do { + v_store_128(out, v); + out += sizeof(v); + len -= sizeof(v); + } while (len > 0); + } + return out; + case 4: + v = v_load32_dup(out - 4); + v_store_128(out, v); + out += bump; + len -= bump; + if (len > 0) { + v = v_load32_dup(out - 4); + do { + v_store_128(out, v); + out += sizeof(v); + len -= sizeof(v); + } while (len > 0); + } + return out; + case 8: + v = v_load64_dup(out - 8); + v_store_128(out, v); + out += bump; + len -= bump; + if (len > 0) { + v = v_load64_dup(out - 8); + do { + v_store_128(out, v); + out += sizeof(v); + len -= sizeof(v); + } while (len > 0); + } + return out; + } + out = chunkunroll_relaxed(out, &period, &len); + return chunkcopy_core(out, out - period, len); +} + +/* + * Perform a memcpy-like operation, but assume that length is non-zero and that + * it's OK to overwrite at least CHUNKCOPY_CHUNK_SIZE bytes of output even if + * the length is shorter than this. + * + * Unlike chunkcopy_core() above, no guarantee is made regarding the behaviour + * of overlapping buffers, regardless of the distance between the pointers. + * This is reflected in the `restrict`-qualified pointers, allowing the + * compiler to re-order loads and stores. + */ +static inline unsigned char FAR* chunkcopy_relaxed( + unsigned char FAR* Z_RESTRICT out, + const unsigned char FAR* Z_RESTRICT from, + unsigned len) { + Assert((uintptr_t)out - (uintptr_t)from >= len, + "invalid restrict in chunkcopy_relaxed"); + Assert((uintptr_t)from - (uintptr_t)out >= len, + "invalid restrict in chunkcopy_relaxed"); + return chunkcopy_core(out, from, len); +} + +/* + * Like chunkcopy_relaxed(), but avoid writing beyond of legal output. + * + * Unlike chunkcopy_core_safe() above, no guarantee is made regarding the + * behaviour of overlapping buffers, regardless of the distance between the + * pointers. This is reflected in the `restrict`-qualified pointers, allowing + * the compiler to re-order loads and stores. + * + * Accepts an additional pointer to the end of safe output. A generic safe + * copy would use (out + len), but it's normally the case that the end of the + * output buffer is beyond the end of the current copy, and this can still be + * exploited. + */ +static inline unsigned char FAR* chunkcopy_safe( + unsigned char FAR* out, + const unsigned char FAR* Z_RESTRICT from, + unsigned len, + unsigned char FAR* limit) { + Assert(out + len <= limit, "chunk copy exceeds safety limit"); + Assert((uintptr_t)out - (uintptr_t)from >= len, + "invalid restrict in chunkcopy_safe"); + Assert((uintptr_t)from - (uintptr_t)out >= len, + "invalid restrict in chunkcopy_safe"); + + return chunkcopy_core_safe(out, from, len, limit); +} + +/* + * Perform chunky copy within the same buffer, where the source and destination + * may potentially overlap. + * + * Assumes that len > 0 on entry, and that it's safe to write at least + * CHUNKCOPY_CHUNK_SIZE*3 bytes to the output. + */ +static inline unsigned char FAR* chunkcopy_lapped_relaxed( + unsigned char FAR* out, + unsigned dist, + unsigned len) { + if (dist < len && dist < CHUNKCOPY_CHUNK_SIZE) { + return chunkset_core(out, dist, len); + } + return chunkcopy_core(out, out - dist, len); +} + +/* + * Behave like chunkcopy_lapped_relaxed(), but avoid writing beyond of legal + * output. + * + * Accepts an additional pointer to the end of safe output. A generic safe + * copy would use (out + len), but it's normally the case that the end of the + * output buffer is beyond the end of the current copy, and this can still be + * exploited. + */ +static inline unsigned char FAR* chunkcopy_lapped_safe( + unsigned char FAR* out, + unsigned dist, + unsigned len, + unsigned char FAR* limit) { + Assert(out + len <= limit, "chunk copy exceeds safety limit"); + if ((limit - out) < (ptrdiff_t)(3 * CHUNKCOPY_CHUNK_SIZE)) { + /* TODO(cavalcantii): try harder to optimise this */ + while (len-- > 0) { + *out = *(out - dist); + out++; + } + return out; + } + return chunkcopy_lapped_relaxed(out, dist, len); +} + +/* TODO(cavalcanti): see crbug.com/1110083. */ +static inline unsigned char FAR* chunkcopy_safe_ugly(unsigned char FAR* out, + unsigned dist, + unsigned len, + unsigned char FAR* limit) { +#if defined(__GNUC__) && !defined(__clang__) + /* Speed is the same as using chunkcopy_safe + w/ GCC on ARM (tested gcc 6.3 and 7.5) and avoids + undefined behavior. + */ + return chunkcopy_core_safe(out, out - dist, len, limit); +#elif defined(__clang__) && defined(ARMV8_OS_ANDROID) && !defined(__aarch64__) + /* Seems to perform better on 32bit (i.e. Android). */ + return chunkcopy_core_safe(out, out - dist, len, limit); +#else + /* Seems to perform better on 64bit. */ + return chunkcopy_lapped_safe(out, dist, len, limit); +#endif +} + +/* + * The chunk-copy code above deals with writing the decoded DEFLATE data to + * the output with SIMD methods to increase decode speed. Reading the input + * to the DEFLATE decoder with a wide, SIMD method can also increase decode + * speed. This option is supported on little endian machines, and reads the + * input data in 64-bit (8 byte) chunks. + */ + +#ifdef INFLATE_CHUNK_READ_64LE +/* + * Buffer the input in a uint64_t (8 bytes) in the wide input reading case. + */ +typedef uint64_t inflate_holder_t; + +/* + * Ask the compiler to perform a wide, unaligned load of a uint64_t using a + * machine instruction appropriate for the uint64_t type. + */ +static inline inflate_holder_t read64le(const unsigned char FAR *in) { + inflate_holder_t input; + Z_BUILTIN_MEMCPY(&input, in, sizeof(input)); + return input; +} +#else +/* + * Otherwise, buffer the input bits using zlib's default input buffer type. + */ +typedef unsigned long inflate_holder_t; + +#endif /* INFLATE_CHUNK_READ_64LE */ + +#undef Z_STATIC_ASSERT +#undef Z_RESTRICT +#undef Z_BUILTIN_MEMCPY +#undef Z_DISABLE_MSAN + +#endif /* CHUNKCOPY_H */ diff --git a/packages/runtime/vendor/zlib/contrib/optimizations/inffast_chunk.c b/packages/runtime/vendor/zlib/contrib/optimizations/inffast_chunk.c new file mode 100644 index 000000000..3c93da051 --- /dev/null +++ b/packages/runtime/vendor/zlib/contrib/optimizations/inffast_chunk.c @@ -0,0 +1,376 @@ +/* inffast_chunk.c -- fast decoding + * Copyright (C) 1995-2026 Mark Adler + * Copyright 2023 The Chromium Authors + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +#include "zutil.h" +#include "inftrees.h" +#include "inflate.h" +#include "contrib/optimizations/inffast_chunk.h" +#include "contrib/optimizations/chunkcopy.h" + +#ifdef ASMINF +# pragma message("Assembler code may have bugs -- use at your own risk") +#else + +/* + Decode literal, length, and distance codes and write out the resulting + literal and match bytes until either not enough input or output is + available, an end-of-block is encountered, or a data error is encountered. + When large enough input and output buffers are supplied to inflate(), for + example, a 16K input buffer and a 64K output buffer, more than 95% of the + inflate() execution time is spent in this routine. + + Entry assumptions: + + state->mode == LEN + strm->avail_in >= INFLATE_FAST_MIN_INPUT (6 or 8 bytes + 7 bytes) + strm->avail_out >= INFLATE_FAST_MIN_OUTPUT (258 bytes + 2 bytes) + start >= strm->avail_out + state->bits < 8 + (state->hold >> state->bits) == 0 + strm->next_out[0..strm->avail_out] does not overlap with + strm->next_in[0..strm->avail_in] + strm->state->window is allocated with an additional + CHUNKCOPY_CHUNK_SIZE-1 bytes of padding beyond strm->state->wsize + + On return, state->mode is one of: + + LEN -- ran out of enough output space or enough available input + TYPE -- reached end of block code, inflate() to interpret next block + BAD -- error in block data + + Notes: + + INFLATE_FAST_MIN_INPUT: 6 or 8 bytes + 7 bytes + + - The maximum input bits used by a length/distance pair is 15 bits for the + length code, 5 bits for the length extra, 15 bits for the distance code, + and 13 bits for the distance extra. This totals 48 bits, or six bytes. + Therefore if strm->avail_in >= 6, then there is enough input to avoid + checking for available input while decoding. + + - The wide input data reading option reads 64 input bits at a time. Thus, + if strm->avail_in >= 8, then there is enough input to avoid checking for + available input while decoding. Reading consumes the input with: + + hold |= read64le(in) << bits; + in += 6; + bits += 48; + + reporting 6 bytes of new input because |bits| is 0..15 (2 bytes rounded + up, worst case) and 6 bytes is enough to decode as noted above. At exit, + hold &= (1U << bits) - 1 drops excess input to keep the invariant: + + (state->hold >> state->bits) == 0 + + INFLATE_FAST_MIN_OUTPUT: 258 bytes + 2 bytes for literals = 260 bytes + + - The maximum bytes that a single length/distance pair can output is 258 + bytes, which is the maximum length that can be coded. inflate_fast() + requires strm->avail_out >= 260 for each loop to avoid checking for + available output space while decoding. + */ +void ZLIB_INTERNAL inflate_fast_chunk_(z_streamp strm, unsigned start) { + struct inflate_state FAR *state; + z_const unsigned char FAR *in; /* local strm->next_in */ + z_const unsigned char FAR *last; /* have enough input while in < last */ + unsigned char FAR *out; /* local strm->next_out */ + unsigned char FAR *beg; /* inflate()'s initial strm->next_out */ + unsigned char FAR *end; /* while out < end, enough space available */ + unsigned char FAR *limit; /* safety limit for chunky copies */ +#ifdef INFLATE_STRICT + unsigned dmax; /* maximum distance from zlib header */ +#endif + unsigned wsize; /* window size or zero if not using window */ + unsigned whave; /* valid bytes in the window */ + unsigned wnext; /* window write index */ + unsigned char FAR *window; /* allocated sliding window, if wsize != 0 */ + inflate_holder_t hold; /* local strm->hold */ + unsigned bits; /* local strm->bits */ + code const FAR *lcode; /* local strm->lencode */ + code const FAR *dcode; /* local strm->distcode */ + unsigned lmask; /* mask for first level of length codes */ + unsigned dmask; /* mask for first level of distance codes */ + code const *here; /* retrieved table entry */ + unsigned op; /* code bits, operation, extra bits, or */ + /* window position, window bytes to copy */ + unsigned len; /* match length, unused bytes */ + unsigned dist; /* match distance */ + unsigned char FAR *from; /* where to copy match from */ + + /* copy state to local variables */ + state = (struct inflate_state FAR *)strm->state; + in = strm->next_in; + last = in + (strm->avail_in - (INFLATE_FAST_MIN_INPUT - 1)); + out = strm->next_out; + beg = out - (start - strm->avail_out); + end = out + (strm->avail_out - (INFLATE_FAST_MIN_OUTPUT - 1)); + limit = out + strm->avail_out; +#ifdef INFLATE_STRICT + dmax = state->dmax; +#endif + wsize = state->wsize; + whave = state->whave; + wnext = (state->wnext == 0 && whave >= wsize) ? wsize : state->wnext; + window = state->window; + hold = state->hold; + bits = state->bits; + lcode = state->lencode; + dcode = state->distcode; + lmask = (1U << state->lenbits) - 1; + dmask = (1U << state->distbits) - 1; + +#ifdef INFLATE_CHUNK_READ_64LE +#define REFILL() do { \ + Assert(bits < 64, "### Too many bits in inflate_fast."); \ + hold |= read64le(in) << bits; \ + in += 7; \ + in -= bits >> 3; \ + bits |= 56; \ + } while (0) +#endif + + /* decode literals and length/distances until end-of-block or not enough + input data or output space */ + do { +#ifdef INFLATE_CHUNK_READ_64LE + REFILL(); +#else + if (bits < 15) { + hold += (unsigned long)(*in++) << bits; + bits += 8; + hold += (unsigned long)(*in++) << bits; + bits += 8; + } +#endif + here = lcode + (hold & lmask); +#ifdef INFLATE_CHUNK_READ_64LE + if (here->op == 0) { /* literal */ + Tracevv((stderr, here->val >= 0x20 && here->val < 0x7f ? + "inflate: literal '%c'\n" : + "inflate: literal 0x%02x\n", here->val)); + *out++ = (unsigned char)(here->val); + hold >>= here->bits; + bits -= here->bits; + here = lcode + (hold & lmask); + if (here->op == 0) { /* literal */ + Tracevv((stderr, here->val >= 0x20 && here->val < 0x7f ? + "inflate: 2nd literal '%c'\n" : + "inflate: 2nd literal 0x%02x\n", here->val)); + *out++ = (unsigned char)(here->val); + hold >>= here->bits; + bits -= here->bits; + here = lcode + (hold & lmask); + } + } +#endif + dolen: + op = (unsigned)(here->bits); + hold >>= op; + bits -= op; + op = (unsigned)(here->op); + if (op == 0) { /* literal */ + Tracevv((stderr, here->val >= 0x20 && here->val < 0x7f ? + "inflate: literal '%c'\n" : + "inflate: literal 0x%02x\n", here->val)); + *out++ = (unsigned char)(here->val); + } + else if (op & 16) { /* length base */ + len = (unsigned)(here->val); + op &= 15; /* number of extra bits */ + if (op) { +#ifndef INFLATE_CHUNK_READ_64LE + if (bits < op) { + hold += (unsigned long)(*in++) << bits; + bits += 8; + } +#endif + len += (unsigned)hold & ((1U << op) - 1); + hold >>= op; + bits -= op; + } + Tracevv((stderr, "inflate: length %u\n", len)); +#ifndef INFLATE_CHUNK_READ_64LE + if (bits < 15) { + hold += (unsigned long)(*in++) << bits; + bits += 8; + hold += (unsigned long)(*in++) << bits; + bits += 8; + } +#endif + here = dcode + (hold & dmask); + dodist: + op = (unsigned)(here->bits); + hold >>= op; + bits -= op; + op = (unsigned)(here->op); + if (op & 16) { /* distance base */ + dist = (unsigned)(here->val); + op &= 15; /* number of extra bits */ + /* we have two fast-path loads: 10+10 + 15+5 + 15 = 55, + but we may need to refill here in the worst case */ + if (bits < op) { +#ifdef INFLATE_CHUNK_READ_64LE + REFILL(); +#else + hold += (unsigned long)(*in++) << bits; + bits += 8; + if (bits < op) { + hold += (unsigned long)(*in++) << bits; + bits += 8; + } +#endif + } + dist += (unsigned)hold & ((1U << op) - 1); +#ifdef INFLATE_STRICT + if (dist > dmax) { + strm->msg = (z_const char *)"invalid distance too far back"; + state->mode = BAD; + break; + } +#endif + hold >>= op; + bits -= op; + Tracevv((stderr, "inflate: distance %u\n", dist)); + op = (unsigned)(out - beg); /* max distance in output */ + if (dist > op) { /* see if copy from window */ + op = dist - op; /* distance back in window */ + if (op > whave) { + if (state->sane) { + strm->msg = + (z_const char *)"invalid distance too far back"; + state->mode = BAD; + break; + } +#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR + if (len <= op - whave) { + do { + *out++ = 0; + } while (--len); + continue; + } + len -= op - whave; + do { + *out++ = 0; + } while (--op > whave); + if (op == 0) { + from = out - dist; + do { + *out++ = *from++; + } while (--len); + continue; + } +#endif + } + from = window; + if (wnext >= op) { /* contiguous in window */ + from += wnext - op; + } + else { /* wrap around window */ + op -= wnext; + from += wsize - op; + if (op < len) { /* some from end of window */ + len -= op; + out = chunkcopy_safe(out, from, op, limit); + from = window; /* more from start of window */ + op = wnext; + /* This (rare) case can create a situation where + the first chunkcopy below must be checked. + */ + } + } + if (op < len) { /* still need some from output */ + out = chunkcopy_safe(out, from, op, limit); + len -= op; + /* When dist is small the amount of data that can be + copied from the window is also small, and progress + towards the dangerous end of the output buffer is + also small. This means that for trivial memsets and + for chunkunroll_relaxed() a safety check is + unnecessary. However, these conditions may not be + entered at all, and in that case it's possible that + the main copy is near the end. + */ + out = chunkunroll_relaxed(out, &dist, &len); + out = chunkcopy_safe_ugly(out, dist, len, limit); + } else { + /* from points to window, so there is no risk of + overlapping pointers requiring memset-like behaviour + */ + out = chunkcopy_safe(out, from, len, limit); + } + } + else { + /* Whole reference is in range of current output. No + range checks are necessary because we start with room + for at least 258 bytes of output, so unroll and roundoff + operations can write beyond `out+len` so long as they + stay within 258 bytes of `out`. + */ + out = chunkcopy_lapped_relaxed(out, dist, len); + } + } + else if ((op & 64) == 0) { /* 2nd level distance code */ + here = dcode + here->val + (hold & ((1U << op) - 1)); + goto dodist; + } + else { + strm->msg = (z_const char *)"invalid distance code"; + state->mode = BAD; + break; + } + } + else if ((op & 64) == 0) { /* 2nd level length code */ + here = lcode + here->val + (hold & ((1U << op) - 1)); + goto dolen; + } + else if (op & 32) { /* end-of-block */ + Tracevv((stderr, "inflate: end of block\n")); + state->mode = TYPE; + break; + } + else { + strm->msg = (z_const char *)"invalid literal/length code"; + state->mode = BAD; + break; + } + } while (in < last && out < end); + + /* return unused bytes (on entry, bits < 8, so in won't go too far back) */ + len = bits >> 3; + in -= len; + bits -= len << 3; + hold &= (1U << bits) - 1; + + /* update state and return */ + strm->next_in = in; + strm->next_out = out; + strm->avail_in = (unsigned)(in < last ? + (INFLATE_FAST_MIN_INPUT - 1) + (last - in) : + (INFLATE_FAST_MIN_INPUT - 1) - (in - last)); + strm->avail_out = (unsigned)(out < end ? + (INFLATE_FAST_MIN_OUTPUT - 1) + (end - out) : + (INFLATE_FAST_MIN_OUTPUT - 1) - (out - end)); + state->hold = hold; + state->bits = bits; + + Assert((state->hold >> state->bits) == 0, "invalid input data state"); +} + +/* + inflate_fast() speedups that turned out slower (on a PowerPC G3 750CXe): + - Using bit fields for code structure + - Different op definition to avoid & for extra bits (do & for table bits) + - Three separate decoding do-loops for direct, window, and wnext == 0 + - Special case for distance > 1 copies to do overlapped load and store copy + - Explicit branch predictions (based on measured branch probabilities) + - Deferring match copy and interspersed it with decoding subsequent codes + - Swapping literal/length else + - Swapping window/direct else + - Larger unrolled copy loops (three is about right) + - Moving len -= 3 statement into middle of loop + */ + +#endif /* !ASMINF */ diff --git a/packages/runtime/vendor/zlib/contrib/optimizations/inffast_chunk.h b/packages/runtime/vendor/zlib/contrib/optimizations/inffast_chunk.h new file mode 100644 index 000000000..e75ee5e91 --- /dev/null +++ b/packages/runtime/vendor/zlib/contrib/optimizations/inffast_chunk.h @@ -0,0 +1,42 @@ +/* inffast_chunk.h -- header to use inffast_chunk.c + * Copyright (C) 1995-2003, 2010 Mark Adler + * Copyright (C) 2017 ARM, Inc. + * Copyright 2023 The Chromium Authors + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* WARNING: this file should *not* be used by applications. It is + part of the implementation of the compression library and is + subject to change. Applications should only use zlib.h. + */ + +#include "inffast.h" + +/* INFLATE_FAST_MIN_INPUT: + The minimum number of input bytes needed so that we can safely call + inflate_fast() with only one up-front bounds check. One + length/distance code pair (15 bits for the length code, 5 bits for length + extra, 15 bits for the distance code, 13 bits for distance extra) requires + reading up to 48 input bits. Additionally, in the same iteraction, we may + decode two literals from the root-table (requiring MIN_OUTPUT = 258 + 2). + + Each root-table entry is up to 10 bits, for a total of 68 input bits each + iteraction. + + The refill variant reads 8 bytes from the buffer at a time, and advances + the input pointer by up to 7 bytes, ensuring there are at least 56-bits + available in the bit-buffer. The technique was documented by Fabian Giesen + on his blog as variant 4 in the article 'Reading bits in far too many ways': + https://fgiesen.wordpress.com/2018/02/20/ + + In the worst case, we may refill twice in the same iteraction, requiring + MIN_INPUT = 8 + 7. +*/ +#ifdef INFLATE_CHUNK_READ_64LE +#undef INFLATE_FAST_MIN_INPUT +#define INFLATE_FAST_MIN_INPUT 15 +#undef INFLATE_FAST_MIN_OUTPUT +#define INFLATE_FAST_MIN_OUTPUT 260 +#endif + +void ZLIB_INTERNAL inflate_fast_chunk_(z_streamp strm, unsigned start); diff --git a/packages/runtime/vendor/zlib/contrib/optimizations/inflate.c b/packages/runtime/vendor/zlib/contrib/optimizations/inflate.c new file mode 100644 index 000000000..3268320e9 --- /dev/null +++ b/packages/runtime/vendor/zlib/contrib/optimizations/inflate.c @@ -0,0 +1,1562 @@ +/* inflate.c -- zlib decompression + * Copyright (C) 1995-2022 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* + * Change history: + * + * 1.2.beta0 24 Nov 2002 + * - First version -- complete rewrite of inflate to simplify code, avoid + * creation of window when not needed, minimize use of window when it is + * needed, make inffast.c even faster, implement gzip decoding, and to + * improve code readability and style over the previous zlib inflate code + * + * 1.2.beta1 25 Nov 2002 + * - Use pointers for available input and output checking in inffast.c + * - Remove input and output counters in inffast.c + * - Change inffast.c entry and loop from avail_in >= 7 to >= 6 + * - Remove unnecessary second byte pull from length extra in inffast.c + * - Unroll direct copy to three copies per loop in inffast.c + * + * 1.2.beta2 4 Dec 2002 + * - Change external routine names to reduce potential conflicts + * - Correct filename to inffixed.h for fixed tables in inflate.c + * - Make hbuf[] unsigned char to match parameter type in inflate.c + * - Change strm->next_out[-state->offset] to *(strm->next_out - state->offset) + * to avoid negation problem on Alphas (64 bit) in inflate.c + * + * 1.2.beta3 22 Dec 2002 + * - Add comments on state->bits assertion in inffast.c + * - Add comments on op field in inftrees.h + * - Fix bug in reuse of allocated window after inflateReset() + * - Remove bit fields--back to byte structure for speed + * - Remove distance extra == 0 check in inflate_fast()--only helps for lengths + * - Change post-increments to pre-increments in inflate_fast(), PPC biased? + * - Add compile time option, POSTINC, to use post-increments instead (Intel?) + * - Make MATCH copy in inflate() much faster for when inflate_fast() not used + * - Use local copies of stream next and avail values, as well as local bit + * buffer and bit count in inflate()--for speed when inflate_fast() not used + * + * 1.2.beta4 1 Jan 2003 + * - Split ptr - 257 statements in inflate_table() to avoid compiler warnings + * - Move a comment on output buffer sizes from inffast.c to inflate.c + * - Add comments in inffast.c to introduce the inflate_fast() routine + * - Rearrange window copies in inflate_fast() for speed and simplification + * - Unroll last copy for window match in inflate_fast() + * - Use local copies of window variables in inflate_fast() for speed + * - Pull out common wnext == 0 case for speed in inflate_fast() + * - Make op and len in inflate_fast() unsigned for consistency + * - Add FAR to lcode and dcode declarations in inflate_fast() + * - Simplified bad distance check in inflate_fast() + * - Added inflateBackInit(), inflateBack(), and inflateBackEnd() in new + * source file infback.c to provide a call-back interface to inflate for + * programs like gzip and unzip -- uses window as output buffer to avoid + * window copying + * + * 1.2.beta5 1 Jan 2003 + * - Improved inflateBack() interface to allow the caller to provide initial + * input in strm. + * - Fixed stored blocks bug in inflateBack() + * + * 1.2.beta6 4 Jan 2003 + * - Added comments in inffast.c on effectiveness of POSTINC + * - Typecasting all around to reduce compiler warnings + * - Changed loops from while (1) or do {} while (1) to for (;;), again to + * make compilers happy + * - Changed type of window in inflateBackInit() to unsigned char * + * + * 1.2.beta7 27 Jan 2003 + * - Changed many types to unsigned or unsigned short to avoid warnings + * - Added inflateCopy() function + * + * 1.2.0 9 Mar 2003 + * - Changed inflateBack() interface to provide separate opaque descriptors + * for the in() and out() functions + * - Changed inflateBack() argument and in_func typedef to swap the length + * and buffer address return values for the input function + * - Check next_in and next_out for Z_NULL on entry to inflate() + * + * The history for versions after 1.2.0 are in ChangeLog in zlib distribution. + */ + +#include "zutil.h" +#include "inftrees.h" +#include "inflate.h" +#include "contrib/optimizations/inffast_chunk.h" +#include "contrib/optimizations/chunkcopy.h" + +#ifdef MAKEFIXED +# ifndef BUILDFIXED +# define BUILDFIXED +# endif +#endif + +local int inflateStateCheck(z_streamp strm) { + struct inflate_state FAR *state; + if (strm == Z_NULL || + strm->zalloc == (alloc_func)0 || strm->zfree == (free_func)0) + return 1; + state = (struct inflate_state FAR *)strm->state; + if (state == Z_NULL || state->strm != strm || + state->mode < HEAD || state->mode > SYNC) + return 1; + return 0; +} + +int ZEXPORT inflateResetKeep(z_streamp strm) { + struct inflate_state FAR *state; + + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + strm->total_in = strm->total_out = state->total = 0; + strm->msg = Z_NULL; + if (state->wrap) /* to support ill-conceived Java test suite */ + strm->adler = state->wrap & 1; + state->mode = HEAD; + state->last = 0; + state->havedict = 0; + state->flags = -1; + state->dmax = 32768U; + state->head = Z_NULL; + state->hold = 0; + state->bits = 0; + state->lencode = state->distcode = state->next = state->codes; + state->sane = 1; + state->back = -1; + Tracev((stderr, "inflate: reset\n")); + return Z_OK; +} + +int ZEXPORT inflateReset(z_streamp strm) { + struct inflate_state FAR *state; + + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + state->wsize = 0; + state->whave = 0; + state->wnext = 0; + return inflateResetKeep(strm); +} + +int ZEXPORT inflateReset2(z_streamp strm, int windowBits) { + int wrap; + struct inflate_state FAR *state; + + /* get the state */ + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + + /* extract wrap request from windowBits parameter */ + if (windowBits < 0) { + if (windowBits < -15) + return Z_STREAM_ERROR; + wrap = 0; + windowBits = -windowBits; + } + else { + wrap = (windowBits >> 4) + 5; +#ifdef GUNZIP + if (windowBits < 48) + windowBits &= 15; +#endif + } + + /* set number of window bits, free window if different */ + if (windowBits && (windowBits < 8 || windowBits > 15)) + return Z_STREAM_ERROR; + if (state->window != Z_NULL && state->wbits != (unsigned)windowBits) { + ZFREE(strm, state->window); + state->window = Z_NULL; + } + + /* update state and reset the rest of it */ + state->wrap = wrap; + state->wbits = (unsigned)windowBits; + return inflateReset(strm); +} + +int ZEXPORT inflateInit2_(z_streamp strm, int windowBits, + const char *version, int stream_size) { + int ret; + struct inflate_state FAR *state; + + if (version == Z_NULL || version[0] != ZLIB_VERSION[0] || + stream_size != (int)(sizeof(z_stream))) + return Z_VERSION_ERROR; + if (strm == Z_NULL) return Z_STREAM_ERROR; + strm->msg = Z_NULL; /* in case we return an error */ + if (strm->zalloc == (alloc_func)0) { +#ifdef Z_SOLO + return Z_STREAM_ERROR; +#else + strm->zalloc = zcalloc; + strm->opaque = (voidpf)0; +#endif + } + if (strm->zfree == (free_func)0) +#ifdef Z_SOLO + return Z_STREAM_ERROR; +#else + strm->zfree = zcfree; +#endif + state = (struct inflate_state FAR *) + ZALLOC(strm, 1, sizeof(struct inflate_state)); + if (state == Z_NULL) return Z_MEM_ERROR; + Tracev((stderr, "inflate: allocated\n")); + strm->state = (struct internal_state FAR *)state; + state->strm = strm; + state->window = Z_NULL; + state->mode = HEAD; /* to pass state test in inflateReset2() */ + state->check = 1L; /* 1L is the result of adler32() zero length data */ + ret = inflateReset2(strm, windowBits); + if (ret != Z_OK) { + ZFREE(strm, state); + strm->state = Z_NULL; + } + return ret; +} + +int ZEXPORT inflateInit_(z_streamp strm, const char *version, + int stream_size) { + return inflateInit2_(strm, DEF_WBITS, version, stream_size); +} + +int ZEXPORT inflatePrime(z_streamp strm, int bits, int value) { + struct inflate_state FAR *state; + + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + if (bits == 0) + return Z_OK; + state = (struct inflate_state FAR *)strm->state; + if (bits < 0) { + state->hold = 0; + state->bits = 0; + return Z_OK; + } + if (bits > 16 || state->bits + (uInt)bits > 32) return Z_STREAM_ERROR; + value &= (1L << bits) - 1; + state->hold += (unsigned)value << state->bits; + state->bits += (uInt)bits; + return Z_OK; +} + +/* + Return state with length and distance decoding tables and index sizes set to + fixed code decoding. Normally this returns fixed tables from inffixed.h. + If BUILDFIXED is defined, then instead this routine builds the tables the + first time it's called, and returns those tables the first time and + thereafter. This reduces the size of the code by about 2K bytes, in + exchange for a little execution time. However, BUILDFIXED should not be + used for threaded applications, since the rewriting of the tables and virgin + may not be thread-safe. + */ +local void fixedtables(struct inflate_state FAR *state) { +#ifdef BUILDFIXED + static int virgin = 1; + static code *lenfix, *distfix; + static code fixed[544]; + + /* build fixed huffman tables if first call (may not be thread safe) */ + if (virgin) { + unsigned sym, bits; + static code *next; + + /* literal/length table */ + sym = 0; + while (sym < 144) state->lens[sym++] = 8; + while (sym < 256) state->lens[sym++] = 9; + while (sym < 280) state->lens[sym++] = 7; + while (sym < 288) state->lens[sym++] = 8; + next = fixed; + lenfix = next; + bits = 9; + inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work); + + /* distance table */ + sym = 0; + while (sym < 32) state->lens[sym++] = 5; + distfix = next; + bits = 5; + inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work); + + /* do this just once */ + virgin = 0; + } +#else /* !BUILDFIXED */ +# include "inffixed.h" +#endif /* BUILDFIXED */ + state->lencode = lenfix; + state->lenbits = 9; + state->distcode = distfix; + state->distbits = 5; +} + +#ifdef MAKEFIXED +#include + +/* + Write out the inffixed.h that is #include'd above. Defining MAKEFIXED also + defines BUILDFIXED, so the tables are built on the fly. makefixed() writes + those tables to stdout, which would be piped to inffixed.h. A small program + can simply call makefixed to do this: + + void makefixed(void); + + int main(void) + { + makefixed(); + return 0; + } + + Then that can be linked with zlib built with MAKEFIXED defined and run: + + a.out > inffixed.h + */ +void makefixed(void) +{ + unsigned low, size; + struct inflate_state state; + + fixedtables(&state); + puts(" /* inffixed.h -- table for decoding fixed codes"); + puts(" * Generated automatically by makefixed()."); + puts(" */"); + puts(""); + puts(" /* WARNING: this file should *not* be used by applications."); + puts(" It is part of the implementation of this library and is"); + puts(" subject to change. Applications should only use zlib.h."); + puts(" */"); + puts(""); + size = 1U << 9; + printf(" static const code lenfix[%u] = {", size); + low = 0; + for (;;) { + if ((low % 7) == 0) printf("\n "); + printf("{%u,%u,%d}", (low & 127) == 99 ? 64 : state.lencode[low].op, + state.lencode[low].bits, state.lencode[low].val); + if (++low == size) break; + putchar(','); + } + puts("\n };"); + size = 1U << 5; + printf("\n static const code distfix[%u] = {", size); + low = 0; + for (;;) { + if ((low % 6) == 0) printf("\n "); + printf("{%u,%u,%d}", state.distcode[low].op, state.distcode[low].bits, + state.distcode[low].val); + if (++low == size) break; + putchar(','); + } + puts("\n };"); +} +#endif /* MAKEFIXED */ + +/* + Update the window with the last wsize (normally 32K) bytes written before + returning. If window does not exist yet, create it. This is only called + when a window is already in use, or when output has been written during this + inflate call, but the end of the deflate stream has not been reached yet. + It is also called to create a window for dictionary data when a dictionary + is loaded. + + Providing output buffers larger than 32K to inflate() should provide a speed + advantage, since only the last 32K of output is copied to the sliding window + upon return from inflate(), and since all distances after the first 32K of + output will fall in the output data, making match copies simpler and faster. + The advantage may be dependent on the size of the processor's data caches. + */ +local int updatewindow(z_streamp strm, const Bytef *end, unsigned copy) { + struct inflate_state FAR *state; + unsigned dist; + + state = (struct inflate_state FAR *)strm->state; + + /* if it hasn't been done already, allocate space for the window */ + if (state->window == Z_NULL) { + unsigned wsize = 1U << state->wbits; + state->window = (unsigned char FAR *) + ZALLOC(strm, wsize + CHUNKCOPY_CHUNK_SIZE, + sizeof(unsigned char)); + if (state->window == Z_NULL) return 1; +#ifdef INFLATE_CLEAR_UNUSED_UNDEFINED + /* Copies from the overflow portion of this buffer are undefined and + may cause analysis tools to raise a warning if we don't initialize + it. However, this undefined data overwrites other undefined data + and is subsequently either overwritten or left deliberately + undefined at the end of decode; so there's really no point. + */ + zmemzero(state->window + wsize, CHUNKCOPY_CHUNK_SIZE); +#endif + } + + /* if window not in use yet, initialize */ + if (state->wsize == 0) { + state->wsize = 1U << state->wbits; + state->wnext = 0; + state->whave = 0; + } + + /* copy state->wsize or less output bytes into the circular window */ + if (copy >= state->wsize) { + zmemcpy(state->window, end - state->wsize, state->wsize); + state->wnext = 0; + state->whave = state->wsize; + } + else { + dist = state->wsize - state->wnext; + if (dist > copy) dist = copy; + zmemcpy(state->window + state->wnext, end - copy, dist); + copy -= dist; + if (copy) { + zmemcpy(state->window, end - copy, copy); + state->wnext = copy; + state->whave = state->wsize; + } + else { + state->wnext += dist; + if (state->wnext == state->wsize) state->wnext = 0; + if (state->whave < state->wsize) state->whave += dist; + } + } + return 0; +} + +/* Macros for inflate(): */ + +/* check function to use adler32() for zlib or crc32() for gzip */ +#ifdef GUNZIP +# define UPDATE_CHECK(check, buf, len) \ + (state->flags ? crc32(check, buf, len) : adler32(check, buf, len)) +#else +# define UPDATE_CHECK(check, buf, len) adler32(check, buf, len) +#endif + +/* check macros for header crc */ +#ifdef GUNZIP +# define CRC2(check, word) \ + do { \ + hbuf[0] = (unsigned char)(word); \ + hbuf[1] = (unsigned char)((word) >> 8); \ + check = crc32(check, hbuf, 2); \ + } while (0) + +# define CRC4(check, word) \ + do { \ + hbuf[0] = (unsigned char)(word); \ + hbuf[1] = (unsigned char)((word) >> 8); \ + hbuf[2] = (unsigned char)((word) >> 16); \ + hbuf[3] = (unsigned char)((word) >> 24); \ + check = crc32(check, hbuf, 4); \ + } while (0) +#endif + +/* Load registers with state in inflate() for speed */ +#define LOAD() \ + do { \ + put = strm->next_out; \ + left = strm->avail_out; \ + next = strm->next_in; \ + have = strm->avail_in; \ + hold = state->hold; \ + bits = state->bits; \ + } while (0) + +/* Restore state from registers in inflate() */ +#define RESTORE() \ + do { \ + strm->next_out = put; \ + strm->avail_out = left; \ + strm->next_in = next; \ + strm->avail_in = have; \ + state->hold = hold; \ + state->bits = bits; \ + } while (0) + +/* Clear the input bit accumulator */ +#define INITBITS() \ + do { \ + hold = 0; \ + bits = 0; \ + } while (0) + +/* Get a byte of input into the bit accumulator, or return from inflate() + if there is no input available. */ +#define PULLBYTE() \ + do { \ + if (have == 0) goto inf_leave; \ + have--; \ + hold += (unsigned long)(*next++) << bits; \ + bits += 8; \ + } while (0) + +/* Assure that there are at least n bits in the bit accumulator. If there is + not enough available input to do that, then return from inflate(). */ +#define NEEDBITS(n) \ + do { \ + while (bits < (unsigned)(n)) \ + PULLBYTE(); \ + } while (0) + +/* Return the low n bits of the bit accumulator (n < 16) */ +#define BITS(n) \ + ((unsigned)hold & ((1U << (n)) - 1)) + +/* Remove n bits from the bit accumulator */ +#define DROPBITS(n) \ + do { \ + hold >>= (n); \ + bits -= (unsigned)(n); \ + } while (0) + +/* Remove zero to seven bits as needed to go to a byte boundary */ +#define BYTEBITS() \ + do { \ + hold >>= bits & 7; \ + bits -= bits & 7; \ + } while (0) + +/* + inflate() uses a state machine to process as much input data and generate as + much output data as possible before returning. The state machine is + structured roughly as follows: + + for (;;) switch (state) { + ... + case STATEn: + if (not enough input data or output space to make progress) + return; + ... make progress ... + state = STATEm; + break; + ... + } + + so when inflate() is called again, the same case is attempted again, and + if the appropriate resources are provided, the machine proceeds to the + next state. The NEEDBITS() macro is usually the way the state evaluates + whether it can proceed or should return. NEEDBITS() does the return if + the requested bits are not available. The typical use of the BITS macros + is: + + NEEDBITS(n); + ... do something with BITS(n) ... + DROPBITS(n); + + where NEEDBITS(n) either returns from inflate() if there isn't enough + input left to load n bits into the accumulator, or it continues. BITS(n) + gives the low n bits in the accumulator. When done, DROPBITS(n) drops + the low n bits off the accumulator. INITBITS() clears the accumulator + and sets the number of available bits to zero. BYTEBITS() discards just + enough bits to put the accumulator on a byte boundary. After BYTEBITS() + and a NEEDBITS(8), then BITS(8) would return the next byte in the stream. + + NEEDBITS(n) uses PULLBYTE() to get an available byte of input, or to return + if there is no input available. The decoding of variable length codes uses + PULLBYTE() directly in order to pull just enough bytes to decode the next + code, and no more. + + Some states loop until they get enough input, making sure that enough + state information is maintained to continue the loop where it left off + if NEEDBITS() returns in the loop. For example, want, need, and keep + would all have to actually be part of the saved state in case NEEDBITS() + returns: + + case STATEw: + while (want < need) { + NEEDBITS(n); + keep[want++] = BITS(n); + DROPBITS(n); + } + state = STATEx; + case STATEx: + + As shown above, if the next state is also the next case, then the break + is omitted. + + A state may also return if there is not enough output space available to + complete that state. Those states are copying stored data, writing a + literal byte, and copying a matching string. + + When returning, a "goto inf_leave" is used to update the total counters, + update the check value, and determine whether any progress has been made + during that inflate() call in order to return the proper return code. + Progress is defined as a change in either strm->avail_in or strm->avail_out. + When there is a window, goto inf_leave will update the window with the last + output written. If a goto inf_leave occurs in the middle of decompression + and there is no window currently, goto inf_leave will create one and copy + output to the window for the next call of inflate(). + + In this implementation, the flush parameter of inflate() only affects the + return code (per zlib.h). inflate() always writes as much as possible to + strm->next_out, given the space available and the provided input--the effect + documented in zlib.h of Z_SYNC_FLUSH. Furthermore, inflate() always defers + the allocation of and copying into a sliding window until necessary, which + provides the effect documented in zlib.h for Z_FINISH when the entire input + stream available. So the only thing the flush parameter actually does is: + when flush is set to Z_FINISH, inflate() cannot return Z_OK. Instead it + will return Z_BUF_ERROR if it has not reached the end of the stream. + */ + +int ZEXPORT inflate(z_streamp strm, int flush) { + struct inflate_state FAR *state; + z_const unsigned char FAR *next; /* next input */ + unsigned char FAR *put; /* next output */ + unsigned have, left; /* available input and output */ + unsigned long hold; /* bit buffer */ + unsigned bits; /* bits in bit buffer */ + unsigned in, out; /* save starting available input and output */ + unsigned copy; /* number of stored or match bytes to copy */ + unsigned char FAR *from; /* where to copy match bytes from */ + code here; /* current decoding table entry */ + code last; /* parent table entry */ + unsigned len; /* length to copy for repeats, bits to drop */ + int ret; /* return code */ +#ifdef GUNZIP + unsigned char hbuf[4]; /* buffer for gzip header crc calculation */ +#endif + static const unsigned short order[19] = /* permutation of code lengths */ + {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15}; + + if (inflateStateCheck(strm) || strm->next_out == Z_NULL || + (strm->next_in == Z_NULL && strm->avail_in != 0)) + return Z_STREAM_ERROR; + + state = (struct inflate_state FAR *)strm->state; + if (state->mode == TYPE) state->mode = TYPEDO; /* skip check */ + LOAD(); + in = have; + out = left; + ret = Z_OK; + for (;;) + switch (state->mode) { + case HEAD: + if (state->wrap == 0) { + state->mode = TYPEDO; + break; + } + NEEDBITS(16); +#ifdef GUNZIP + if ((state->wrap & 2) && hold == 0x8b1f) { /* gzip header */ + if (state->wbits == 0) + state->wbits = 15; + state->check = crc32(0L, Z_NULL, 0); + CRC2(state->check, hold); + INITBITS(); + state->mode = FLAGS; + break; + } + if (state->head != Z_NULL) + state->head->done = -1; + if (!(state->wrap & 1) || /* check if zlib header allowed */ +#else + if ( +#endif + ((BITS(8) << 8) + (hold >> 8)) % 31) { + strm->msg = (char *)"incorrect header check"; + state->mode = BAD; + break; + } + if (BITS(4) != Z_DEFLATED) { + strm->msg = (char *)"unknown compression method"; + state->mode = BAD; + break; + } + DROPBITS(4); + len = BITS(4) + 8; + if (state->wbits == 0) + state->wbits = len; + if (len > 15 || len > state->wbits) { + strm->msg = (char *)"invalid window size"; + state->mode = BAD; + break; + } + state->dmax = 1U << len; + state->flags = 0; /* indicate zlib header */ + Tracev((stderr, "inflate: zlib header ok\n")); + strm->adler = state->check = adler32(0L, Z_NULL, 0); + state->mode = hold & 0x200 ? DICTID : TYPE; + INITBITS(); + break; +#ifdef GUNZIP + case FLAGS: + NEEDBITS(16); + state->flags = (int)(hold); + if ((state->flags & 0xff) != Z_DEFLATED) { + strm->msg = (char *)"unknown compression method"; + state->mode = BAD; + break; + } + if (state->flags & 0xe000) { + strm->msg = (char *)"unknown header flags set"; + state->mode = BAD; + break; + } + if (state->head != Z_NULL) + state->head->text = (int)((hold >> 8) & 1); + if ((state->flags & 0x0200) && (state->wrap & 4)) + CRC2(state->check, hold); + INITBITS(); + state->mode = TIME; + /* fallthrough */ + case TIME: + NEEDBITS(32); + if (state->head != Z_NULL) + state->head->time = hold; + if ((state->flags & 0x0200) && (state->wrap & 4)) + CRC4(state->check, hold); + INITBITS(); + state->mode = OS; + /* fallthrough */ + case OS: + NEEDBITS(16); + if (state->head != Z_NULL) { + state->head->xflags = (int)(hold & 0xff); + state->head->os = (int)(hold >> 8); + } + if ((state->flags & 0x0200) && (state->wrap & 4)) + CRC2(state->check, hold); + INITBITS(); + state->mode = EXLEN; + /* fallthrough */ + case EXLEN: + if (state->flags & 0x0400) { + NEEDBITS(16); + state->length = (unsigned)(hold); + if (state->head != Z_NULL) + state->head->extra_len = (unsigned)hold; + if ((state->flags & 0x0200) && (state->wrap & 4)) + CRC2(state->check, hold); + INITBITS(); + } + else if (state->head != Z_NULL) + state->head->extra = Z_NULL; + state->mode = EXTRA; + /* fallthrough */ + case EXTRA: + if (state->flags & 0x0400) { + copy = state->length; + if (copy > have) copy = have; + if (copy) { + if (state->head != Z_NULL && + state->head->extra != Z_NULL && + (len = state->head->extra_len - state->length) < + state->head->extra_max) { + zmemcpy(state->head->extra + len, next, + len + copy > state->head->extra_max ? + state->head->extra_max - len : copy); + } + if ((state->flags & 0x0200) && (state->wrap & 4)) + state->check = crc32(state->check, next, copy); + have -= copy; + next += copy; + state->length -= copy; + } + if (state->length) goto inf_leave; + } + state->length = 0; + state->mode = NAME; + /* fallthrough */ + case NAME: + if (state->flags & 0x0800) { + if (have == 0) goto inf_leave; + copy = 0; + do { + len = (unsigned)(next[copy++]); + if (state->head != Z_NULL && + state->head->name != Z_NULL && + state->length < state->head->name_max) + state->head->name[state->length++] = (Bytef)len; + } while (len && copy < have); + if ((state->flags & 0x0200) && (state->wrap & 4)) + state->check = crc32(state->check, next, copy); + have -= copy; + next += copy; + if (len) goto inf_leave; + } + else if (state->head != Z_NULL) + state->head->name = Z_NULL; + state->length = 0; + state->mode = COMMENT; + /* fallthrough */ + case COMMENT: + if (state->flags & 0x1000) { + if (have == 0) goto inf_leave; + copy = 0; + do { + len = (unsigned)(next[copy++]); + if (state->head != Z_NULL && + state->head->comment != Z_NULL && + state->length < state->head->comm_max) + state->head->comment[state->length++] = (Bytef)len; + } while (len && copy < have); + if ((state->flags & 0x0200) && (state->wrap & 4)) + state->check = crc32(state->check, next, copy); + have -= copy; + next += copy; + if (len) goto inf_leave; + } + else if (state->head != Z_NULL) + state->head->comment = Z_NULL; + state->mode = HCRC; + /* fallthrough */ + case HCRC: + if (state->flags & 0x0200) { + NEEDBITS(16); + if ((state->wrap & 4) && hold != (state->check & 0xffff)) { + strm->msg = (char *)"header crc mismatch"; + state->mode = BAD; + break; + } + INITBITS(); + } + if (state->head != Z_NULL) { + state->head->hcrc = (int)((state->flags >> 9) & 1); + state->head->done = 1; + } + strm->adler = state->check = crc32(0L, Z_NULL, 0); + state->mode = TYPE; + break; +#endif + case DICTID: + NEEDBITS(32); + strm->adler = state->check = ZSWAP32(hold); + INITBITS(); + state->mode = DICT; + /* fallthrough */ + case DICT: + if (state->havedict == 0) { + RESTORE(); + return Z_NEED_DICT; + } + strm->adler = state->check = adler32(0L, Z_NULL, 0); + state->mode = TYPE; + /* fallthrough */ + case TYPE: + if (flush == Z_BLOCK || flush == Z_TREES) goto inf_leave; + /* fallthrough */ + case TYPEDO: + if (state->last) { + BYTEBITS(); + state->mode = CHECK; + break; + } + NEEDBITS(3); + state->last = BITS(1); + DROPBITS(1); + switch (BITS(2)) { + case 0: /* stored block */ + Tracev((stderr, "inflate: stored block%s\n", + state->last ? " (last)" : "")); + state->mode = STORED; + break; + case 1: /* fixed block */ + fixedtables(state); + Tracev((stderr, "inflate: fixed codes block%s\n", + state->last ? " (last)" : "")); + state->mode = LEN_; /* decode codes */ + if (flush == Z_TREES) { + DROPBITS(2); + goto inf_leave; + } + break; + case 2: /* dynamic block */ + Tracev((stderr, "inflate: dynamic codes block%s\n", + state->last ? " (last)" : "")); + state->mode = TABLE; + break; + case 3: + strm->msg = (char *)"invalid block type"; + state->mode = BAD; + } + DROPBITS(2); + break; + case STORED: + BYTEBITS(); /* go to byte boundary */ + NEEDBITS(32); + if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) { + strm->msg = (char *)"invalid stored block lengths"; + state->mode = BAD; + break; + } + state->length = (unsigned)hold & 0xffff; + Tracev((stderr, "inflate: stored length %u\n", + state->length)); + INITBITS(); + state->mode = COPY_; + if (flush == Z_TREES) goto inf_leave; + /* fallthrough */ + case COPY_: + state->mode = COPY; + /* fallthrough */ + case COPY: + copy = state->length; + if (copy) { + if (copy > have) copy = have; + if (copy > left) copy = left; + if (copy == 0) goto inf_leave; + zmemcpy(put, next, copy); + have -= copy; + next += copy; + left -= copy; + put += copy; + state->length -= copy; + break; + } + Tracev((stderr, "inflate: stored end\n")); + state->mode = TYPE; + break; + case TABLE: + NEEDBITS(14); + state->nlen = BITS(5) + 257; + DROPBITS(5); + state->ndist = BITS(5) + 1; + DROPBITS(5); + state->ncode = BITS(4) + 4; + DROPBITS(4); +#ifndef PKZIP_BUG_WORKAROUND + if (state->nlen > 286 || state->ndist > 30) { + strm->msg = (char *)"too many length or distance symbols"; + state->mode = BAD; + break; + } +#endif + Tracev((stderr, "inflate: table sizes ok\n")); + state->have = 0; + state->mode = LENLENS; + /* fallthrough */ + case LENLENS: + while (state->have < state->ncode) { + NEEDBITS(3); + state->lens[order[state->have++]] = (unsigned short)BITS(3); + DROPBITS(3); + } + while (state->have < 19) + state->lens[order[state->have++]] = 0; + state->next = state->codes; + state->lencode = state->distcode = (const code FAR *)(state->next); + state->lenbits = 7; + ret = inflate_table(CODES, state->lens, 19, &(state->next), + &(state->lenbits), state->work); + if (ret) { + strm->msg = (char *)"invalid code lengths set"; + state->mode = BAD; + break; + } + Tracev((stderr, "inflate: code lengths ok\n")); + state->have = 0; + state->mode = CODELENS; + /* fallthrough */ + case CODELENS: + while (state->have < state->nlen + state->ndist) { + for (;;) { + here = state->lencode[BITS(state->lenbits)]; + if ((unsigned)(here.bits) <= bits) break; + PULLBYTE(); + } + if (here.val < 16) { + DROPBITS(here.bits); + state->lens[state->have++] = here.val; + } + else { + if (here.val == 16) { + NEEDBITS(here.bits + 2); + DROPBITS(here.bits); + if (state->have == 0) { + strm->msg = (char *)"invalid bit length repeat"; + state->mode = BAD; + break; + } + len = state->lens[state->have - 1]; + copy = 3 + BITS(2); + DROPBITS(2); + } + else if (here.val == 17) { + NEEDBITS(here.bits + 3); + DROPBITS(here.bits); + len = 0; + copy = 3 + BITS(3); + DROPBITS(3); + } + else { + NEEDBITS(here.bits + 7); + DROPBITS(here.bits); + len = 0; + copy = 11 + BITS(7); + DROPBITS(7); + } + if (state->have + copy > state->nlen + state->ndist) { + strm->msg = (char *)"invalid bit length repeat"; + state->mode = BAD; + break; + } + while (copy--) + state->lens[state->have++] = (unsigned short)len; + } + } + + /* handle error breaks in while */ + if (state->mode == BAD) break; + + /* check for end-of-block code (better have one) */ + if (state->lens[256] == 0) { + strm->msg = (char *)"invalid code -- missing end-of-block"; + state->mode = BAD; + break; + } + + /* build code tables -- note: do not change the lenbits or distbits + values here (10 and 9) without reading the comments in inftrees.h + concerning the ENOUGH constants, which depend on those values */ + state->next = state->codes; + state->lencode = (const code FAR *)(state->next); + state->lenbits = 10; + ret = inflate_table(LENS, state->lens, state->nlen, &(state->next), + &(state->lenbits), state->work); + if (ret) { + strm->msg = (char *)"invalid literal/lengths set"; + state->mode = BAD; + break; + } + state->distcode = (const code FAR *)(state->next); + state->distbits = 9; + ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist, + &(state->next), &(state->distbits), state->work); + if (ret) { + strm->msg = (char *)"invalid distances set"; + state->mode = BAD; + break; + } + Tracev((stderr, "inflate: codes ok\n")); + state->mode = LEN_; + if (flush == Z_TREES) goto inf_leave; + /* fallthrough */ + case LEN_: + state->mode = LEN; + /* fallthrough */ + case LEN: + if (have >= INFLATE_FAST_MIN_INPUT && + left >= INFLATE_FAST_MIN_OUTPUT) { + RESTORE(); + inflate_fast_chunk_(strm, out); + LOAD(); + if (state->mode == TYPE) + state->back = -1; + break; + } + state->back = 0; + for (;;) { + here = state->lencode[BITS(state->lenbits)]; + if ((unsigned)(here.bits) <= bits) break; + PULLBYTE(); + } + if (here.op && (here.op & 0xf0) == 0) { + last = here; + for (;;) { + here = state->lencode[last.val + + (BITS(last.bits + last.op) >> last.bits)]; + if ((unsigned)(last.bits + here.bits) <= bits) break; + PULLBYTE(); + } + DROPBITS(last.bits); + state->back += last.bits; + } + DROPBITS(here.bits); + state->back += here.bits; + state->length = (unsigned)here.val; + if ((int)(here.op) == 0) { + Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? + "inflate: literal '%c'\n" : + "inflate: literal 0x%02x\n", here.val)); + state->mode = LIT; + break; + } + if (here.op & 32) { + Tracevv((stderr, "inflate: end of block\n")); + state->back = -1; + state->mode = TYPE; + break; + } + if (here.op & 64) { + strm->msg = (char *)"invalid literal/length code"; + state->mode = BAD; + break; + } + state->extra = (unsigned)(here.op) & 15; + state->mode = LENEXT; + /* fallthrough */ + case LENEXT: + if (state->extra) { + NEEDBITS(state->extra); + state->length += BITS(state->extra); + DROPBITS(state->extra); + state->back += state->extra; + } + Tracevv((stderr, "inflate: length %u\n", state->length)); + state->was = state->length; + state->mode = DIST; + /* fallthrough */ + case DIST: + for (;;) { + here = state->distcode[BITS(state->distbits)]; + if ((unsigned)(here.bits) <= bits) break; + PULLBYTE(); + } + if ((here.op & 0xf0) == 0) { + last = here; + for (;;) { + here = state->distcode[last.val + + (BITS(last.bits + last.op) >> last.bits)]; + if ((unsigned)(last.bits + here.bits) <= bits) break; + PULLBYTE(); + } + DROPBITS(last.bits); + state->back += last.bits; + } + DROPBITS(here.bits); + state->back += here.bits; + if (here.op & 64) { + strm->msg = (char *)"invalid distance code"; + state->mode = BAD; + break; + } + state->offset = (unsigned)here.val; + state->extra = (unsigned)(here.op) & 15; + state->mode = DISTEXT; + /* fallthrough */ + case DISTEXT: + if (state->extra) { + NEEDBITS(state->extra); + state->offset += BITS(state->extra); + DROPBITS(state->extra); + state->back += state->extra; + } +#ifdef INFLATE_STRICT + if (state->offset > state->dmax) { + strm->msg = (char *)"invalid distance too far back"; + state->mode = BAD; + break; + } +#endif + Tracevv((stderr, "inflate: distance %u\n", state->offset)); + state->mode = MATCH; + /* fallthrough */ + case MATCH: + if (left == 0) goto inf_leave; + copy = out - left; + if (state->offset > copy) { /* copy from window */ + copy = state->offset - copy; + if (copy > state->whave) { + if (state->sane) { + strm->msg = (char *)"invalid distance too far back"; + state->mode = BAD; + break; + } +#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR + Trace((stderr, "inflate.c too far\n")); + copy -= state->whave; + if (copy > state->length) copy = state->length; + if (copy > left) copy = left; + left -= copy; + state->length -= copy; + do { + *put++ = 0; + } while (--copy); + if (state->length == 0) state->mode = LEN; + break; +#endif + } + if (copy > state->wnext) { + copy -= state->wnext; + from = state->window + (state->wsize - copy); + } + else + from = state->window + (state->wnext - copy); + if (copy > state->length) copy = state->length; + if (copy > left) copy = left; + put = chunkcopy_safe(put, from, copy, put + left); + } + else { /* copy from output */ + copy = state->length; + if (copy > left) copy = left; + put = chunkcopy_lapped_safe(put, state->offset, copy, put + left); + } + left -= copy; + state->length -= copy; + if (state->length == 0) state->mode = LEN; + break; + case LIT: + if (left == 0) goto inf_leave; + *put++ = (unsigned char)(state->length); + left--; + state->mode = LEN; + break; + case CHECK: + if (state->wrap) { + NEEDBITS(32); + out -= left; + strm->total_out += out; + state->total += out; + if ((state->wrap & 4) && out) + strm->adler = state->check = + UPDATE_CHECK(state->check, put - out, out); + out = left; + if ((state->wrap & 4) && ( +#ifdef GUNZIP + state->flags ? hold : +#endif + ZSWAP32(hold)) != state->check) { + strm->msg = (char *)"incorrect data check"; + state->mode = BAD; + break; + } + INITBITS(); + Tracev((stderr, "inflate: check matches trailer\n")); + } +#ifdef GUNZIP + state->mode = LENGTH; + /* fallthrough */ + case LENGTH: + if (state->wrap && state->flags) { + NEEDBITS(32); + if ((state->wrap & 4) && hold != (state->total & 0xffffffff)) { + strm->msg = (char *)"incorrect length check"; + state->mode = BAD; + break; + } + INITBITS(); + Tracev((stderr, "inflate: length matches trailer\n")); + } +#endif + state->mode = DONE; + /* fallthrough */ + case DONE: + ret = Z_STREAM_END; + goto inf_leave; + case BAD: + ret = Z_DATA_ERROR; + goto inf_leave; + case MEM: + return Z_MEM_ERROR; + case SYNC: + /* fallthrough */ + default: + return Z_STREAM_ERROR; + } + + /* + Return from inflate(), updating the total counts and the check value. + If there was no progress during the inflate() call, return a buffer + error. Call updatewindow() to create and/or update the window state. + Note: a memory error from inflate() is non-recoverable. + */ + inf_leave: +#if defined(ZLIB_DEBUG) + /* XXX(cavalcantii): I put this in place back in 2017 to help debug faulty + * client code relying on undefined behavior when chunk_copy first landed. + * + * It is save to say after all these years that Chromium code is well + * behaved and works fine with the optimization, therefore we can enable + * this only for DEBUG builds. + * + * We write a defined value in the unused space to help mark + * where the stream has ended. We don't use zeros as that can + * mislead clients relying on undefined behavior (i.e. assuming + * that the data is over when the buffer has a zero/null value). + * + * The basic idea is that if client code is not relying on the zlib context + * to inform the amount of decompressed data, but instead reads the output + * buffer until a zero/null is found, it will fail faster and harder + * when the remaining of the buffer is marked with a symbol (e.g. 0x55). + */ + if (left >= CHUNKCOPY_CHUNK_SIZE) + memset(put, 0x55, CHUNKCOPY_CHUNK_SIZE); + else + memset(put, 0x55, left); +#endif + RESTORE(); + if (state->wsize || (out != strm->avail_out && state->mode < BAD && + (state->mode < CHECK || flush != Z_FINISH))) + if (updatewindow(strm, strm->next_out, out - strm->avail_out)) { + state->mode = MEM; + return Z_MEM_ERROR; + } + in -= strm->avail_in; + out -= strm->avail_out; + strm->total_in += in; + strm->total_out += out; + state->total += out; + if ((state->wrap & 4) && out) + strm->adler = state->check = + UPDATE_CHECK(state->check, strm->next_out - out, out); + strm->data_type = (int)state->bits + (state->last ? 64 : 0) + + (state->mode == TYPE ? 128 : 0) + + (state->mode == LEN_ || state->mode == COPY_ ? 256 : 0); + if (((in == 0 && out == 0) || flush == Z_FINISH) && ret == Z_OK) + ret = Z_BUF_ERROR; + return ret; +} + +int ZEXPORT inflateEnd(z_streamp strm) { + struct inflate_state FAR *state; + if (inflateStateCheck(strm)) + return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + if (state->window != Z_NULL) ZFREE(strm, state->window); + ZFREE(strm, strm->state); + strm->state = Z_NULL; + Tracev((stderr, "inflate: end\n")); + return Z_OK; +} + +int ZEXPORT inflateGetDictionary(z_streamp strm, Bytef *dictionary, + uInt *dictLength) { + struct inflate_state FAR *state; + + /* check state */ + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + + /* copy dictionary */ + if (state->whave && dictionary != Z_NULL) { + zmemcpy(dictionary, state->window + state->wnext, + state->whave - state->wnext); + zmemcpy(dictionary + state->whave - state->wnext, + state->window, state->wnext); + } + if (dictLength != Z_NULL) + *dictLength = state->whave; + return Z_OK; +} + +int ZEXPORT inflateSetDictionary(z_streamp strm, const Bytef *dictionary, + uInt dictLength) { + struct inflate_state FAR *state; + unsigned long dictid; + int ret; + + /* check state */ + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + if (state->wrap != 0 && state->mode != DICT) + return Z_STREAM_ERROR; + + /* check for correct dictionary identifier */ + if (state->mode == DICT) { + dictid = adler32(0L, Z_NULL, 0); + dictid = adler32(dictid, dictionary, dictLength); + if (dictid != state->check) + return Z_DATA_ERROR; + } + + /* copy dictionary to window using updatewindow(), which will amend the + existing dictionary if appropriate */ + ret = updatewindow(strm, dictionary + dictLength, dictLength); + if (ret) { + state->mode = MEM; + return Z_MEM_ERROR; + } + state->havedict = 1; + Tracev((stderr, "inflate: dictionary set\n")); + return Z_OK; +} + +int ZEXPORT inflateGetHeader(z_streamp strm, gz_headerp head) { + struct inflate_state FAR *state; + + /* check state */ + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + if ((state->wrap & 2) == 0) return Z_STREAM_ERROR; + + /* save header structure */ + state->head = head; + head->done = 0; + return Z_OK; +} + +/* + Search buf[0..len-1] for the pattern: 0, 0, 0xff, 0xff. Return when found + or when out of input. When called, *have is the number of pattern bytes + found in order so far, in 0..3. On return *have is updated to the new + state. If on return *have equals four, then the pattern was found and the + return value is how many bytes were read including the last byte of the + pattern. If *have is less than four, then the pattern has not been found + yet and the return value is len. In the latter case, syncsearch() can be + called again with more data and the *have state. *have is initialized to + zero for the first call. + */ +local unsigned syncsearch(unsigned FAR *have, const unsigned char FAR *buf, + unsigned len) { + unsigned got; + unsigned next; + + got = *have; + next = 0; + while (next < len && got < 4) { + if ((int)(buf[next]) == (got < 2 ? 0 : 0xff)) + got++; + else if (buf[next]) + got = 0; + else + got = 4 - got; + next++; + } + *have = got; + return next; +} + +int ZEXPORT inflateSync(z_streamp strm) { + unsigned len; /* number of bytes to look at or looked at */ + int flags; /* temporary to save header status */ + unsigned long in, out; /* temporary to save total_in and total_out */ + unsigned char buf[4]; /* to restore bit buffer to byte string */ + struct inflate_state FAR *state; + + /* check parameters */ + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + if (strm->avail_in == 0 && state->bits < 8) return Z_BUF_ERROR; + + /* if first time, start search in bit buffer */ + if (state->mode != SYNC) { + state->mode = SYNC; + state->hold >>= state->bits & 7; + state->bits -= state->bits & 7; + len = 0; + while (state->bits >= 8) { + buf[len++] = (unsigned char)(state->hold); + state->hold >>= 8; + state->bits -= 8; + } + state->have = 0; + syncsearch(&(state->have), buf, len); + } + + /* search available input */ + len = syncsearch(&(state->have), strm->next_in, strm->avail_in); + strm->avail_in -= len; + strm->next_in += len; + strm->total_in += len; + + /* return no joy or set up to restart inflate() on a new block */ + if (state->have != 4) return Z_DATA_ERROR; + if (state->flags == -1) + state->wrap = 0; /* if no header yet, treat as raw */ + else + state->wrap &= ~4; /* no point in computing a check value now */ + flags = state->flags; + in = strm->total_in; out = strm->total_out; + inflateReset(strm); + strm->total_in = in; strm->total_out = out; + state->flags = flags; + state->mode = TYPE; + return Z_OK; +} + +/* + Returns true if inflate is currently at the end of a block generated by + Z_SYNC_FLUSH or Z_FULL_FLUSH. This function is used by one PPP + implementation to provide an additional safety check. PPP uses + Z_SYNC_FLUSH but removes the length bytes of the resulting empty stored + block. When decompressing, PPP checks that at the end of input packet, + inflate is waiting for these length bytes. + */ +int ZEXPORT inflateSyncPoint(z_streamp strm) { + struct inflate_state FAR *state; + + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + return state->mode == STORED && state->bits == 0; +} + +int ZEXPORT inflateCopy(z_streamp dest, z_streamp source) { + struct inflate_state FAR *state; + struct inflate_state FAR *copy; + unsigned char FAR *window; + unsigned wsize; + + /* check input */ + if (inflateStateCheck(source) || dest == Z_NULL) + return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)source->state; + + /* allocate space */ + copy = (struct inflate_state FAR *) + ZALLOC(source, 1, sizeof(struct inflate_state)); + if (copy == Z_NULL) return Z_MEM_ERROR; + window = Z_NULL; + if (state->window != Z_NULL) { + window = (unsigned char FAR *)ZALLOC( + source, (1U << state->wbits) + CHUNKCOPY_CHUNK_SIZE, + sizeof(unsigned char)); + if (window == Z_NULL) { + ZFREE(source, copy); + return Z_MEM_ERROR; + } + } + + /* copy state */ + zmemcpy((voidpf)dest, (voidpf)source, sizeof(z_stream)); + zmemcpy((voidpf)copy, (voidpf)state, sizeof(struct inflate_state)); + copy->strm = dest; + if (state->lencode >= state->codes && + state->lencode <= state->codes + ENOUGH - 1) { + copy->lencode = copy->codes + (state->lencode - state->codes); + copy->distcode = copy->codes + (state->distcode - state->codes); + } + copy->next = copy->codes + (state->next - state->codes); + if (window != Z_NULL) { + wsize = 1U << state->wbits; + zmemcpy(window, state->window, wsize); + } + copy->window = window; + dest->state = (struct internal_state FAR *)copy; + return Z_OK; +} + +int ZEXPORT inflateUndermine(z_streamp strm, int subvert) { + struct inflate_state FAR *state; + + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; +#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR + state->sane = !subvert; + return Z_OK; +#else + (void)subvert; + state->sane = 1; + return Z_DATA_ERROR; +#endif +} + +int ZEXPORT inflateValidate(z_streamp strm, int check) { + struct inflate_state FAR *state; + + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + if (check && state->wrap) + state->wrap |= 4; + else + state->wrap &= ~4; + return Z_OK; +} + +long ZEXPORT inflateMark(z_streamp strm) { + struct inflate_state FAR *state; + + if (inflateStateCheck(strm)) + return -(1L << 16); + state = (struct inflate_state FAR *)strm->state; + return (long)(((unsigned long)((long)state->back)) << 16) + + (state->mode == COPY ? state->length : + (state->mode == MATCH ? state->was - state->length : 0)); +} + +unsigned long ZEXPORT inflateCodesUsed(z_streamp strm) { + struct inflate_state FAR *state; + if (inflateStateCheck(strm)) return (unsigned long)-1; + state = (struct inflate_state FAR *)strm->state; + return (unsigned long)(state->next - state->codes); +} diff --git a/packages/runtime/vendor/zlib/contrib/optimizations/insert_string.h b/packages/runtime/vendor/zlib/contrib/optimizations/insert_string.h new file mode 100644 index 000000000..260b82680 --- /dev/null +++ b/packages/runtime/vendor/zlib/contrib/optimizations/insert_string.h @@ -0,0 +1,80 @@ +/* insert_string.h + * + * Copyright 2019 The Chromium Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the Chromium source repository LICENSE file. + */ + +#ifndef INSERT_STRING_H +#define INSERT_STRING_H + +#ifndef INLINE +#if defined(_MSC_VER) && !defined(__clang__) +#define INLINE __inline +#else +#define INLINE inline +#endif +#endif + +#include + +/** + * Some applications need to match zlib DEFLATE output exactly [3]. Use the + * canonical zlib Rabin-Karp rolling hash [1,2] in that case. + * + * [1] For a description of the Rabin and Karp algorithm, see "Algorithms" + * book by R. Sedgewick, Addison-Wesley, p252. + * [2] https://www.euccas.me/zlib/#zlib_rabin_karp and also "rolling hash" + * https://en.wikipedia.org/wiki/Rolling_hash + * [3] crbug.com/1316541 AOSP incremental client APK package OTA upgrades. + */ +#ifdef CHROMIUM_ZLIB_NO_CASTAGNOLI +#define USE_ZLIB_RABIN_KARP_ROLLING_HASH +#endif + +/* =========================================================================== + * Update a hash value with the given input byte (Rabin-Karp rolling hash). + * IN assertion: all calls to UPDATE_HASH are made with consecutive input + * characters, so that a running hash key can be computed from the previous + * key instead of complete recalculation each time. + */ +#define UPDATE_HASH(s, h, c) (h = (((h) << s->hash_shift) ^ (c)) & s->hash_mask) + +/* =========================================================================== + * Insert string str in the dictionary and set match_head to the previous head + * of the hash chain (the most recent string with same hash key). Return + * the previous length of the hash chain. + * If this file is compiled with -DFASTEST, the compression level is forced + * to 1, and no hash chains are maintained. + * IN assertion: all calls to INSERT_STRING are made with consecutive input + * characters and the first MIN_MATCH bytes of str are valid (except for + * the last MIN_MATCH-1 bytes of the input file). + */ +local INLINE Pos insert_string(deflate_state* const s, const Pos str) { + Pos ret; +/* insert_string dictionary insertion: ANZAC++ hasher + * significantly improves data compression speed. + * + * Note: the generated compressed output is a valid DEFLATE stream, but will + * differ from canonical zlib output. + */ +#if defined(USE_ZLIB_RABIN_KARP_ROLLING_HASH) + UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH - 1)]); +#else + uint32_t value; + // Validated for little endian archs (i.e. x86, Arm). YMMV for big endian. + zmemcpy(&value, &s->window[str], sizeof(value)); + s->ins_h = ((value * 66521 + 66521) >> 16) & s->hash_mask; +#endif + +#ifdef FASTEST + ret = s->head[s->ins_h]; +#else + ret = s->prev[str & s->w_mask] = s->head[s->ins_h]; +#endif + s->head[s->ins_h] = str; + + return ret; +} + +#endif /* INSERT_STRING_H */ diff --git a/packages/runtime/vendor/zlib/cpu_features.c b/packages/runtime/vendor/zlib/cpu_features.c new file mode 100644 index 000000000..6613a65e3 --- /dev/null +++ b/packages/runtime/vendor/zlib/cpu_features.c @@ -0,0 +1,218 @@ +/* cpu_features.c -- Processor features detection. + * + * Copyright 2018 The Chromium Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the Chromium source repository LICENSE file. + */ + +#include "cpu_features.h" +#include "zutil.h" + +#include +#if defined(_MSC_VER) +#include +#elif defined(ADLER32_SIMD_SSSE3) +#include +#endif + +/* TODO(cavalcantii): remove checks for x86_flags on deflate. + */ +#if defined(ARMV8_OS_MACOS) +/* Crypto extensions (crc32/pmull) are a baseline feature in ARMv8.1-A, and + * OSX running on arm64 is new enough that these can be assumed without + * runtime detection. + */ +int ZLIB_INTERNAL arm_cpu_enable_crc32 = 1; +int ZLIB_INTERNAL arm_cpu_enable_pmull = 1; +#else +int ZLIB_INTERNAL arm_cpu_enable_crc32 = 0; +int ZLIB_INTERNAL arm_cpu_enable_pmull = 0; +#endif +int ZLIB_INTERNAL x86_cpu_enable_sse2 = 0; +int ZLIB_INTERNAL x86_cpu_enable_ssse3 = 0; +int ZLIB_INTERNAL x86_cpu_enable_simd = 0; +int ZLIB_INTERNAL x86_cpu_enable_avx512 = 0; + +int ZLIB_INTERNAL riscv_cpu_enable_rvv = 0; +int ZLIB_INTERNAL riscv_cpu_enable_vclmul = 0; + +#ifndef CPU_NO_SIMD + +#if defined(ARMV8_OS_ANDROID) || defined(ARMV8_OS_LINUX) || \ + defined(ARMV8_OS_FUCHSIA) || defined(ARMV8_OS_IOS) +#include +#endif + +#if defined(ARMV8_OS_ANDROID) +#include +#elif defined(ARMV8_OS_LINUX) +#include +#include +#elif defined(ARMV8_OS_FUCHSIA) +#include +#include +#include +#elif defined(ARMV8_OS_WINDOWS) || defined(X86_WINDOWS) +#include +#elif defined(ARMV8_OS_IOS) +#include +#elif !defined(_MSC_VER) +#include +#else +#error cpu_features.c CPU feature detection in not defined for your platform +#endif + +#if !defined(CPU_NO_SIMD) && !defined(ARMV8_OS_MACOS) +static void _cpu_check_features(void); +#endif + +#if defined(ARMV8_OS_ANDROID) || defined(ARMV8_OS_LINUX) || \ + defined(ARMV8_OS_MACOS) || defined(ARMV8_OS_FUCHSIA) || \ + defined(X86_NOT_WINDOWS) || defined(ARMV8_OS_IOS) || \ + defined(RISCV_RVV) +#if !defined(ARMV8_OS_MACOS) +// _cpu_check_features() doesn't need to do anything on mac/arm since all +// features are known at build time, so don't call it. +// Do provide cpu_check_features() (with a no-op implementation) so that we +// don't have to make all callers of it check for mac/arm. +static pthread_once_t cpu_check_inited_once = PTHREAD_ONCE_INIT; +#endif +void ZLIB_INTERNAL cpu_check_features(void) +{ +#if !defined(ARMV8_OS_MACOS) + pthread_once(&cpu_check_inited_once, _cpu_check_features); +#endif +} +#elif defined(ARMV8_OS_WINDOWS) || defined(X86_WINDOWS) +static INIT_ONCE cpu_check_inited_once = INIT_ONCE_STATIC_INIT; +static BOOL CALLBACK _cpu_check_features_forwarder(PINIT_ONCE once, PVOID param, PVOID* context) +{ + _cpu_check_features(); + return TRUE; +} +void ZLIB_INTERNAL cpu_check_features(void) +{ + InitOnceExecuteOnce(&cpu_check_inited_once, _cpu_check_features_forwarder, + NULL, NULL); +} +#endif + +#if (defined(__ARM_NEON__) || defined(__ARM_NEON)) +#if !defined(ARMV8_OS_MACOS) +/* + * See http://bit.ly/2CcoEsr for run-time detection of ARM features and also + * crbug.com/931275 for android_getCpuFeatures() use in the Android sandbox. + */ +static void _cpu_check_features(void) +{ +#if defined(ARMV8_OS_ANDROID) && defined(__aarch64__) + uint64_t features = android_getCpuFeatures(); + arm_cpu_enable_crc32 = !!(features & ANDROID_CPU_ARM64_FEATURE_CRC32); + arm_cpu_enable_pmull = !!(features & ANDROID_CPU_ARM64_FEATURE_PMULL); +#elif defined(ARMV8_OS_ANDROID) /* aarch32 */ + uint64_t features = android_getCpuFeatures(); + arm_cpu_enable_crc32 = !!(features & ANDROID_CPU_ARM_FEATURE_CRC32); + arm_cpu_enable_pmull = !!(features & ANDROID_CPU_ARM_FEATURE_PMULL); +#elif defined(ARMV8_OS_LINUX) && defined(__aarch64__) + unsigned long features = getauxval(AT_HWCAP); + arm_cpu_enable_crc32 = !!(features & HWCAP_CRC32); + arm_cpu_enable_pmull = !!(features & HWCAP_PMULL); +#elif defined(ARMV8_OS_LINUX) && (defined(__ARM_NEON) || defined(__ARM_NEON__)) + /* Query HWCAP2 for ARMV8-A SoCs running in aarch32 mode */ + unsigned long features = getauxval(AT_HWCAP2); + arm_cpu_enable_crc32 = !!(features & HWCAP2_CRC32); + arm_cpu_enable_pmull = !!(features & HWCAP2_PMULL); +#elif defined(ARMV8_OS_FUCHSIA) + uint32_t features; + zx_status_t rc = zx_system_get_features(ZX_FEATURE_KIND_CPU, &features); + if (rc != ZX_OK || (features & ZX_ARM64_FEATURE_ISA_ASIMD) == 0) + return; /* Report nothing if ASIMD(NEON) is missing */ + arm_cpu_enable_crc32 = !!(features & ZX_ARM64_FEATURE_ISA_CRC32); + arm_cpu_enable_pmull = !!(features & ZX_ARM64_FEATURE_ISA_PMULL); +#elif defined(ARMV8_OS_WINDOWS) + arm_cpu_enable_crc32 = IsProcessorFeaturePresent(PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE); + arm_cpu_enable_pmull = IsProcessorFeaturePresent(PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE); +#elif defined(ARMV8_OS_IOS) + // Determine what features are supported dynamically. This code is applicable to macOS + // as well if we wish to do that dynamically on that platform in the future. + // See https://developer.apple.com/documentation/kernel/1387446-sysctlbyname/determining_instruction_set_characteristics + int val = 0; + size_t len = sizeof(val); + arm_cpu_enable_crc32 = sysctlbyname("hw.optional.armv8_crc32", &val, &len, 0, 0) == 0 + && val != 0; + val = 0; + len = sizeof(val); + arm_cpu_enable_pmull = sysctlbyname("hw.optional.arm.FEAT_PMULL", &val, &len, 0, 0) == 0 + && val != 0; +#endif +} +#endif +#elif defined(X86_NOT_WINDOWS) || defined(X86_WINDOWS) +/* + * iOS@x86 (i.e. emulator) is another special case where we disable + * SIMD optimizations. + */ +#ifndef CPU_NO_SIMD +/* On x86 we simply use a instruction to check the CPU features. + * (i.e. CPUID). + */ +#ifdef CRC32_SIMD_AVX512_PCLMUL +#include +#include +#endif +/* _xgetbv() below needs the xsave ISA. Annotate it here so the build does not + * need -mxsave. */ +#if defined(CRC32_SIMD_AVX512_PCLMUL) && (defined(__GNUC__) || defined(__clang__)) +__attribute__((__target__("xsave"))) +#endif +static void _cpu_check_features(void) +{ + int x86_cpu_has_sse2; + int x86_cpu_has_ssse3; + int x86_cpu_has_sse42; + int x86_cpu_has_pclmulqdq; + int abcd[4]; + +#ifdef _MSC_VER + __cpuid(abcd, 1); +#else + __cpuid(1, abcd[0], abcd[1], abcd[2], abcd[3]); +#endif + + x86_cpu_has_sse2 = abcd[3] & 0x4000000; + x86_cpu_has_ssse3 = abcd[2] & 0x000200; + x86_cpu_has_sse42 = abcd[2] & 0x100000; + x86_cpu_has_pclmulqdq = abcd[2] & 0x2; + + x86_cpu_enable_sse2 = x86_cpu_has_sse2; + + x86_cpu_enable_ssse3 = x86_cpu_has_ssse3; + + x86_cpu_enable_simd = x86_cpu_has_sse2 && + x86_cpu_has_sse42 && + x86_cpu_has_pclmulqdq; + +#ifdef CRC32_SIMD_AVX512_PCLMUL + x86_cpu_enable_avx512 = _xgetbv(0) & 0x00000040; +#endif +} +#endif // x86 & NO_SIMD + +#elif defined(RISCV_RVV) +#include + +#ifndef ZLIB_HWCAP_RVV +#define ZLIB_HWCAP_RVV (1 << ('v' - 'a')) +#endif + +/* TODO(cavalcantii) + * - add support for Android@RISCV i.e. __riscv_hwprobe(). + * - detect vclmul (crypto extensions). + */ +static void _cpu_check_features(void) +{ + unsigned long features = getauxval(AT_HWCAP); + riscv_cpu_enable_rvv = !!(features & ZLIB_HWCAP_RVV); +} +#endif // ARM | x86 | RISCV +#endif // NO SIMD CPU diff --git a/packages/runtime/vendor/zlib/cpu_features.h b/packages/runtime/vendor/zlib/cpu_features.h new file mode 100644 index 000000000..6092c7e85 --- /dev/null +++ b/packages/runtime/vendor/zlib/cpu_features.h @@ -0,0 +1,22 @@ +/* cpu_features.h -- Processor features detection. + * + * Copyright 2018 The Chromium Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the Chromium source repository LICENSE file. + */ + +#include "zlib.h" + +/* TODO(cavalcantii): remove checks for x86_flags on deflate. + */ +extern int arm_cpu_enable_crc32; +extern int arm_cpu_enable_pmull; +extern int x86_cpu_enable_sse2; +extern int x86_cpu_enable_ssse3; +extern int x86_cpu_enable_simd; +extern int x86_cpu_enable_avx512; + +extern int riscv_cpu_enable_rvv; +extern int riscv_cpu_enable_vclmul; + +void cpu_check_features(void); diff --git a/packages/runtime/vendor/zlib/crc32.c b/packages/runtime/vendor/zlib/crc32.c index 6c38f5c04..2ec5ab5ce 100644 --- a/packages/runtime/vendor/zlib/crc32.c +++ b/packages/runtime/vendor/zlib/crc32.c @@ -1,5 +1,5 @@ /* crc32.c -- compute the CRC-32 of a data stream - * Copyright (C) 1995-2022 Mark Adler + * Copyright (C) 1995-2026 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h * * This interleaved implementation of a CRC makes use of pipelined multiple @@ -24,11 +24,24 @@ # include # ifndef DYNAMIC_CRC_TABLE # define DYNAMIC_CRC_TABLE -# endif /* !DYNAMIC_CRC_TABLE */ -#endif /* MAKECRCH */ +# endif +#endif +#ifdef DYNAMIC_CRC_TABLE +# define Z_ONCE +#endif +#include "deflate.h" +#include "cpu_features.h" #include "zutil.h" /* for Z_U4, Z_U8, z_crc_t, and FAR definitions */ +#ifdef HAVE_S390X_VX +# include "contrib/crc32vx/crc32_vx_hooks.h" +#endif + +#if defined(CRC32_SIMD_SSE42_PCLMUL) || defined(CRC32_ARMV8_CRC32) +#include "crc32_simd.h" +#endif + /* A CRC of a message is computed on N braids of words in the message, where each word consists of W bytes (4 or 8). If N is 3, for example, then three @@ -99,11 +112,12 @@ #endif /* If available, use the ARM processor CRC32 instruction. */ -#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) && W == 8 -# define ARMCRC32 +#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) && \ + defined(W) && W == 8 && defined(USE_CANONICAL_ARMV8_CRC32) +# define ARMCRC32_CANONICAL_ZLIB #endif -#if defined(W) && (!defined(ARMCRC32) || defined(DYNAMIC_CRC_TABLE)) +#if defined(W) && (!defined(ARMCRC32_CANONICAL_ZLIB) || defined(DYNAMIC_CRC_TABLE)) /* Swap the bytes in a z_word_t to convert between little and big endian. Any self-respecting compiler will optimize this to a single machine byte-swap @@ -152,10 +166,10 @@ local z_word_t byte_swap(z_word_t word) { Return a(x) multiplied by b(x) modulo p(x), where p(x) is the CRC polynomial, reflected. For speed, this requires that a not be zero. */ -local z_crc_t multmodp(z_crc_t a, z_crc_t b) { - z_crc_t m, p; +local uLong multmodp(uLong a, uLong b) { + uLong m, p; - m = (z_crc_t)1 << 31; + m = (uLong)1 << 31; p = 0; for (;;) { if (a & m) { @@ -171,12 +185,12 @@ local z_crc_t multmodp(z_crc_t a, z_crc_t b) { /* Return x^(n * 2^k) modulo p(x). Requires that x2n_table[] has been - initialized. + initialized. n must not be negative. */ -local z_crc_t x2nmodp(z_off64_t n, unsigned k) { - z_crc_t p; +local uLong x2nmodp(z_off64_t n, unsigned k) { + uLong p; - p = (z_crc_t)1 << 31; /* x^0 == 1 */ + p = (uLong)1 << 31; /* x^0 == 1 */ while (n) { if (n & 1) p = multmodp(x2n_table[k & 31], p); @@ -204,83 +218,8 @@ local z_crc_t FAR crc_table[256]; local void write_table64(FILE *, const z_word_t FAR *, int); #endif /* MAKECRCH */ -/* - Define a once() function depending on the availability of atomics. If this is - compiled with DYNAMIC_CRC_TABLE defined, and if CRCs will be computed in - multiple threads, and if atomics are not available, then get_crc_table() must - be called to initialize the tables and must return before any threads are - allowed to compute or combine CRCs. - */ - -/* Definition of once functionality. */ -typedef struct once_s once_t; - -/* Check for the availability of atomics. */ -#if defined(__STDC__) && __STDC_VERSION__ >= 201112L && \ - !defined(__STDC_NO_ATOMICS__) - -#include - -/* Structure for once(), which must be initialized with ONCE_INIT. */ -struct once_s { - atomic_flag begun; - atomic_int done; -}; -#define ONCE_INIT {ATOMIC_FLAG_INIT, 0} - -/* - Run the provided init() function exactly once, even if multiple threads - invoke once() at the same time. The state must be a once_t initialized with - ONCE_INIT. - */ -local void once(once_t *state, void (*init)(void)) { - if (!atomic_load(&state->done)) { - if (atomic_flag_test_and_set(&state->begun)) - while (!atomic_load(&state->done)) - ; - else { - init(); - atomic_store(&state->done, 1); - } - } -} - -#else /* no atomics */ - -/* Structure for once(), which must be initialized with ONCE_INIT. */ -struct once_s { - volatile int begun; - volatile int done; -}; -#define ONCE_INIT {0, 0} - -/* Test and set. Alas, not atomic, but tries to minimize the period of - vulnerability. */ -local int test_and_set(int volatile *flag) { - int was; - - was = *flag; - *flag = 1; - return was; -} - -/* Run the provided init() function once. This is not thread-safe. */ -local void once(once_t *state, void (*init)(void)) { - if (!state->done) { - if (test_and_set(&state->begun)) - while (!state->done) - ; - else { - init(); - state->done = 1; - } - } -} - -#endif - /* State for once(). */ -local once_t made = ONCE_INIT; +local z_once_t made = Z_ONCE_INIT; /* Generate tables for a byte-wise 32-bit CRC calculation on the polynomial: @@ -306,8 +245,8 @@ local once_t made = ONCE_INIT; information needed to generate CRCs on data a byte at a time for all combinations of CRC register values and incoming bytes. */ - -local void make_crc_table(void) { +local void make_crc_table(void) +{ unsigned i, j, n; z_crc_t p; @@ -326,7 +265,7 @@ local void make_crc_table(void) { p = (z_crc_t)1 << 30; /* x^1 */ x2n_table[0] = p; for (n = 1; n < 32; n++) - x2n_table[n] = p = multmodp(p, p); + x2n_table[n] = p = (z_crc_t)multmodp(p, p); #ifdef W /* initialize the braiding tables -- needs x2n_table[] */ @@ -529,11 +468,11 @@ local void braid(z_crc_t ltl[][256], z_word_t big[][256], int n, int w) { int k; z_crc_t i, p, q; for (k = 0; k < w; k++) { - p = x2nmodp((n * w + 3 - k) << 3, 0); + p = (z_crc_t)x2nmodp((n * w + 3 - k) << 3, 0); ltl[k][0] = 0; big[w - 1 - k][0] = 0; for (i = 1; i < 256; i++) { - ltl[k][i] = q = multmodp(i << 24, p); + ltl[k][i] = q = (z_crc_t)multmodp(i << 24, p); big[w - 1 - k][i] = byte_swap(q); } } @@ -548,7 +487,7 @@ local void braid(z_crc_t ltl[][256], z_word_t big[][256], int n, int w) { */ const z_crc_t FAR * ZEXPORT get_crc_table(void) { #ifdef DYNAMIC_CRC_TABLE - once(&made, make_crc_table); + z_once(&made, make_crc_table); #endif /* DYNAMIC_CRC_TABLE */ return (const z_crc_t FAR *)crc_table; } @@ -562,7 +501,7 @@ const z_crc_t FAR * ZEXPORT get_crc_table(void) { * -march=armv8-a+crc, or -march=native if the compile machine has the crc32 * instructions. */ -#ifdef ARMCRC32 +#if ARMCRC32_CANONICAL_ZLIB /* Constants empirically determined to maximize speed. These values are from @@ -572,9 +511,8 @@ const z_crc_t FAR * ZEXPORT get_crc_table(void) { #define Z_BATCH_ZEROS 0xa10d3d0c /* computed from Z_BATCH = 3990 */ #define Z_BATCH_MIN 800 /* fewest words in a final batch */ -unsigned long ZEXPORT crc32_z(unsigned long crc, const unsigned char FAR *buf, - z_size_t len) { - z_crc_t val; +uLong ZEXPORT crc32_z(uLong crc, const unsigned char FAR *buf, z_size_t len) { + uLong val; z_word_t crc1, crc2; const z_word_t *word; z_word_t val0, val1, val2; @@ -585,7 +523,7 @@ unsigned long ZEXPORT crc32_z(unsigned long crc, const unsigned char FAR *buf, if (buf == Z_NULL) return 0; #ifdef DYNAMIC_CRC_TABLE - once(&made, make_crc_table); + z_once(&made, make_crc_table); #endif /* DYNAMIC_CRC_TABLE */ /* Pre-condition the CRC */ @@ -640,7 +578,7 @@ unsigned long ZEXPORT crc32_z(unsigned long crc, const unsigned char FAR *buf, } word += 3 * last; num -= 3 * last; - val = x2nmodp(last, 6); + val = x2nmodp((int)last, 6); crc = multmodp(val, crc) ^ crc1; crc = multmodp(val, crc) ^ crc2; } @@ -691,15 +629,79 @@ local z_word_t crc_word_big(z_word_t data) { #endif /* ========================================================================= */ -unsigned long ZEXPORT crc32_z(unsigned long crc, const unsigned char FAR *buf, - z_size_t len) { - /* Return initial CRC, if requested. */ - if (buf == Z_NULL) return 0; +uLong ZEXPORT crc32_z(uLong crc, const unsigned char FAR *buf, z_size_t len) { + + /* If no optimizations are enabled, do it as canonical zlib. */ +#if !defined(CRC32_SIMD_SSE42_PCLMUL) && !defined(CRC32_ARMV8_CRC32) && \ + !defined(RISCV_RVV) && !defined(CRC32_SIMD_AVX512_PCLMUL) + if (buf == Z_NULL) { + return 0UL; + } +#else + /* + * zlib convention is to call crc32(0, NULL, 0); before making + * calls to crc32(). So this is a good, early (and infrequent) + * place to cache CPU features if needed for those later, more + * interesting crc32() calls. + */ + if (buf == Z_NULL) { + if (!len) + cpu_check_features(); + return 0UL; + } +#endif + /* If AVX-512 is enabled, we will use it for longer inputs and fallback + * to SSE4.2 and eventually the portable implementation to handle the tail. + */ +#if defined(CRC32_SIMD_AVX512_PCLMUL) + if (x86_cpu_enable_avx512 && len >= Z_CRC32_AVX512_MINIMUM_LENGTH) { + /* crc32 64-byte chunks */ + z_size_t chunk_size = len & ~Z_CRC32_AVX512_CHUNKSIZE_MASK; + crc = ~crc32_avx512_simd_(buf, chunk_size, ~(uint32_t)crc); + /* check remaining data */ + len -= chunk_size; + if (!len) + return crc; + /* Fall into the default crc32 for the remaining data. */ + buf += chunk_size; + } +#endif +#if defined(CRC32_SIMD_SSE42_PCLMUL) + if (x86_cpu_enable_simd && len >= Z_CRC32_SSE42_MINIMUM_LENGTH) { + /* crc32 16-byte chunks */ + z_size_t chunk_size = len & ~Z_CRC32_SSE42_CHUNKSIZE_MASK; + crc = ~crc32_sse42_simd_(buf, chunk_size, ~(uint32_t)crc); + /* check remaining data */ + len -= chunk_size; + if (!len) + return crc; + /* Fall into the default crc32 for the remaining data. */ + buf += chunk_size; + } +#elif defined(CRC32_ARMV8_CRC32) + if (arm_cpu_enable_crc32) { +#if defined(__aarch64__) + /* PMULL is 64bit only, plus code needs at least a 64 bytes buffer. */ + if (arm_cpu_enable_pmull && (len > Z_CRC32_PMULL_MINIMUM_LENGTH)) { + const size_t chunk_size = len & ~Z_CRC32_PMULL_CHUNKSIZE_MASK; + crc = ~armv8_crc32_pmull_little(buf, chunk_size, ~(uint32_t)crc); + /* Check remaining data. */ + len -= chunk_size; + if (!len) + return crc; + + /* Fall through for the remaining data. */ + buf += chunk_size; + } +#endif + /* This is scalar and self contained, used on Armv8@32bit or tail. */ + return armv8_crc32_little(buf, len, crc); + } +#endif /* CRC32_SIMD */ #ifdef DYNAMIC_CRC_TABLE - once(&made, make_crc_table); + z_once(&made, make_crc_table); #endif /* DYNAMIC_CRC_TABLE */ - /* Pre-condition the CRC */ crc = (~crc) & 0xffffffff; @@ -1012,28 +1014,56 @@ unsigned long ZEXPORT crc32_z(unsigned long crc, const unsigned char FAR *buf, #endif /* ========================================================================= */ -unsigned long ZEXPORT crc32(unsigned long crc, const unsigned char FAR *buf, - uInt len) { - return crc32_z(crc, buf, len); -} +uLong ZEXPORT crc32(uLong crc, const unsigned char FAR *buf, uInt len) { + #ifdef HAVE_S390X_VX + return crc32_z_hook(crc, buf, len); + #endif -/* ========================================================================= */ -uLong ZEXPORT crc32_combine64(uLong crc1, uLong crc2, z_off64_t len2) { -#ifdef DYNAMIC_CRC_TABLE - once(&made, make_crc_table); -#endif /* DYNAMIC_CRC_TABLE */ - return multmodp(x2nmodp(len2, 3), crc1) ^ (crc2 & 0xffffffff); -} + /* Some bots compile with optimizations disabled, others will emulate + * ARM on x86 and other weird combinations. + */ +#if defined(CRC32_SIMD_SSE42_PCLMUL) || defined(CRC32_ARMV8_CRC32) \ + || defined(RISCV_RVV) + /* We got to verify CPU features, so exploit the common usage pattern + * of calling this function with Z_NULL for an initial valid crc value. + * This allows to cache the result of the feature check and avoid extraneous + * function calls. + */ + if (buf == Z_NULL) { + if (!len) /* Assume user is calling crc32(0, NULL, 0); */ + cpu_check_features(); + return 0UL; + } +#endif -/* ========================================================================= */ -uLong ZEXPORT crc32_combine(uLong crc1, uLong crc2, z_off_t len2) { - return crc32_combine64(crc1, crc2, (z_off64_t)len2); +#if defined(CRC32_ARMV8_CRC32) + if (arm_cpu_enable_crc32) { +#if defined(__aarch64__) + /* PMULL is 64bit only, plus code needs at least a 64 bytes buffer. */ + if (arm_cpu_enable_pmull && (len > Z_CRC32_PMULL_MINIMUM_LENGTH)) { + const size_t chunk_size = len & ~Z_CRC32_PMULL_CHUNKSIZE_MASK; + crc = ~armv8_crc32_pmull_little(buf, chunk_size, ~(uint32_t)crc); + /* Check remaining data. */ + len -= chunk_size; + if (!len) + return crc; + + /* Fall through for the remaining data. */ + buf += chunk_size; + } +#endif + return armv8_crc32_little(buf, len, crc); /* Armv8@32bit or tail. */ + } +#endif + return crc32_z(crc, buf, len); /* Armv7 or Armv8 w/o crypto extensions. */ } /* ========================================================================= */ uLong ZEXPORT crc32_combine_gen64(z_off64_t len2) { + if (len2 < 0) + return 0; #ifdef DYNAMIC_CRC_TABLE - once(&made, make_crc_table); + z_once(&made, make_crc_table); #endif /* DYNAMIC_CRC_TABLE */ return x2nmodp(len2, 3); } @@ -1042,8 +1072,55 @@ uLong ZEXPORT crc32_combine_gen64(z_off64_t len2) { uLong ZEXPORT crc32_combine_gen(z_off_t len2) { return crc32_combine_gen64((z_off64_t)len2); } - /* ========================================================================= */ uLong ZEXPORT crc32_combine_op(uLong crc1, uLong crc2, uLong op) { - return multmodp(op, crc1) ^ (crc2 & 0xffffffff); + if (op == 0) + return 0; + return multmodp(op, crc1 & 0xffffffff) ^ (crc2 & 0xffffffff); +} + +/* ========================================================================= */ +uLong ZEXPORT crc32_combine64(uLong crc1, uLong crc2, z_off64_t len2) { + return crc32_combine_op(crc1, crc2, crc32_combine_gen64(len2)); +} + +/* ========================================================================= */ +uLong ZEXPORT crc32_combine(uLong crc1, uLong crc2, z_off_t len2) { + return crc32_combine64(crc1, crc2, (z_off64_t)len2); +} + +ZLIB_INTERNAL void crc_reset(deflate_state *const s) +{ +#ifdef CRC32_SIMD_SSE42_PCLMUL + if (x86_cpu_enable_simd) { + crc_fold_init(s); + return; + } +#endif + s->strm->adler = crc32(0L, Z_NULL, 0); +} + +ZLIB_INTERNAL void crc_finalize(deflate_state *const s) +{ +#ifdef QAT_COMPRESSION_ENABLED + if (s->qat_s) { + return; + } +#endif +#ifdef CRC32_SIMD_SSE42_PCLMUL + if (x86_cpu_enable_simd) + s->strm->adler = crc_fold_512to32(s); +#endif +} + +ZLIB_INTERNAL void copy_with_crc(z_streamp strm, Bytef *dst, long size) +{ +#ifdef CRC32_SIMD_SSE42_PCLMUL + if (x86_cpu_enable_simd) { + crc_fold_copy(strm->state, dst, strm->next_in, size); + return; + } +#endif + zmemcpy(dst, strm->next_in, size); + strm->adler = crc32(strm->adler, dst, size); } diff --git a/packages/runtime/vendor/zlib/crc32_simd.c b/packages/runtime/vendor/zlib/crc32_simd.c new file mode 100644 index 000000000..f9d52a631 --- /dev/null +++ b/packages/runtime/vendor/zlib/crc32_simd.c @@ -0,0 +1,628 @@ +/* crc32_simd.c + * + * Copyright 2017 The Chromium Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the Chromium source repository LICENSE file. + */ + +#include "crc32_simd.h" +#if defined(CRC32_SIMD_AVX512_PCLMUL) + +/* + * crc32_avx512_simd_(): compute the crc32 of the buffer, where the buffer + * length must be at least 256, and a multiple of 64. Based on: + * + * "Fast CRC Computation for Generic Polynomials Using PCLMULQDQ Instruction" + * V. Gopal, E. Ozturk, et al., 2009, http://intel.ly/2ySEwL0 + */ + +#include +#include +#include +#include + +#if defined(__GNUC__) || defined(__clang__) +__attribute__((__target__("avx512f,pclmul,vpclmulqdq"))) +#endif +uint32_t ZLIB_INTERNAL crc32_avx512_simd_( /* AVX512+PCLMUL */ + const unsigned char *buf, + z_size_t len, + uint32_t crc) +{ + /* + * Definitions of the bit-reflected domain constants k1,k2,k3,k4 + * are similar to those given at the end of the paper, and remaining + * constants and CRC32+Barrett polynomials remain unchanged. + * + * Replace the index of x from 128 to 512. As follows: + * k1 = ( x ^ ( 512 * 4 + 32 ) mod P(x) << 32 )' << 1 = 0x011542778a + * k2 = ( x ^ ( 512 * 4 - 32 ) mod P(x) << 32 )' << 1 = 0x01322d1430 + * k3 = ( x ^ ( 512 + 32 ) mod P(x) << 32 )' << 1 = 0x0154442bd4 + * k4 = ( x ^ ( 512 - 32 ) mod P(x) << 32 )' << 1 = 0x01c6e41596 + */ + static const uint64_t zalign(64) k1k2[] = { 0x011542778a, 0x01322d1430, + 0x011542778a, 0x01322d1430, + 0x011542778a, 0x01322d1430, + 0x011542778a, 0x01322d1430 }; + static const uint64_t zalign(64) k3k4[] = { 0x0154442bd4, 0x01c6e41596, + 0x0154442bd4, 0x01c6e41596, + 0x0154442bd4, 0x01c6e41596, + 0x0154442bd4, 0x01c6e41596 }; + static const uint64_t zalign(16) k5k6[] = { 0x01751997d0, 0x00ccaa009e }; + static const uint64_t zalign(16) k7k8[] = { 0x0163cd6124, 0x0000000000 }; + static const uint64_t zalign(16) poly[] = { 0x01db710641, 0x01f7011641 }; + __m512i x0, x1, x2, x3, x4, x5, x6, x7, x8, y5, y6, y7, y8; + __m128i a0, a1, a2, a3; + + /* + * There's at least one block of 256. + */ + x1 = _mm512_loadu_si512((__m512i *)(buf + 0x00)); + x2 = _mm512_loadu_si512((__m512i *)(buf + 0x40)); + x3 = _mm512_loadu_si512((__m512i *)(buf + 0x80)); + x4 = _mm512_loadu_si512((__m512i *)(buf + 0xC0)); + + x1 = _mm512_xor_si512(x1, _mm512_castsi128_si512(_mm_cvtsi32_si128(crc))); + + x0 = _mm512_load_si512((__m512i *)k1k2); + + buf += 256; + len -= 256; + + /* + * Parallel fold blocks of 256, if any. + */ + while (len >= 256) + { + x5 = _mm512_clmulepi64_epi128(x1, x0, 0x00); + x6 = _mm512_clmulepi64_epi128(x2, x0, 0x00); + x7 = _mm512_clmulepi64_epi128(x3, x0, 0x00); + x8 = _mm512_clmulepi64_epi128(x4, x0, 0x00); + + + x1 = _mm512_clmulepi64_epi128(x1, x0, 0x11); + x2 = _mm512_clmulepi64_epi128(x2, x0, 0x11); + x3 = _mm512_clmulepi64_epi128(x3, x0, 0x11); + x4 = _mm512_clmulepi64_epi128(x4, x0, 0x11); + + y5 = _mm512_loadu_si512((__m512i *)(buf + 0x00)); + y6 = _mm512_loadu_si512((__m512i *)(buf + 0x40)); + y7 = _mm512_loadu_si512((__m512i *)(buf + 0x80)); + y8 = _mm512_loadu_si512((__m512i *)(buf + 0xC0)); + + x1 = _mm512_xor_si512(x1, x5); + x2 = _mm512_xor_si512(x2, x6); + x3 = _mm512_xor_si512(x3, x7); + x4 = _mm512_xor_si512(x4, x8); + + x1 = _mm512_xor_si512(x1, y5); + x2 = _mm512_xor_si512(x2, y6); + x3 = _mm512_xor_si512(x3, y7); + x4 = _mm512_xor_si512(x4, y8); + + buf += 256; + len -= 256; + } + + /* + * Fold into 512-bits. + */ + x0 = _mm512_load_si512((__m512i *)k3k4); + + x5 = _mm512_clmulepi64_epi128(x1, x0, 0x00); + x1 = _mm512_clmulepi64_epi128(x1, x0, 0x11); + x1 = _mm512_xor_si512(x1, x2); + x1 = _mm512_xor_si512(x1, x5); + + x5 = _mm512_clmulepi64_epi128(x1, x0, 0x00); + x1 = _mm512_clmulepi64_epi128(x1, x0, 0x11); + x1 = _mm512_xor_si512(x1, x3); + x1 = _mm512_xor_si512(x1, x5); + + x5 = _mm512_clmulepi64_epi128(x1, x0, 0x00); + x1 = _mm512_clmulepi64_epi128(x1, x0, 0x11); + x1 = _mm512_xor_si512(x1, x4); + x1 = _mm512_xor_si512(x1, x5); + + /* + * Single fold blocks of 64, if any. + */ + while (len >= 64) + { + x2 = _mm512_loadu_si512((__m512i *)buf); + + x5 = _mm512_clmulepi64_epi128(x1, x0, 0x00); + x1 = _mm512_clmulepi64_epi128(x1, x0, 0x11); + x1 = _mm512_xor_si512(x1, x2); + x1 = _mm512_xor_si512(x1, x5); + + buf += 64; + len -= 64; + } + + /* + * Fold 512-bits to 384-bits. + */ + a0 = _mm_load_si128((__m128i *)k5k6); + + a1 = _mm512_extracti32x4_epi32(x1, 0); + a2 = _mm512_extracti32x4_epi32(x1, 1); + + a3 = _mm_clmulepi64_si128(a1, a0, 0x00); + a1 = _mm_clmulepi64_si128(a1, a0, 0x11); + + a1 = _mm_xor_si128(a1, a3); + a1 = _mm_xor_si128(a1, a2); + + /* + * Fold 384-bits to 256-bits. + */ + a2 = _mm512_extracti32x4_epi32(x1, 2); + a3 = _mm_clmulepi64_si128(a1, a0, 0x00); + a1 = _mm_clmulepi64_si128(a1, a0, 0x11); + a1 = _mm_xor_si128(a1, a3); + a1 = _mm_xor_si128(a1, a2); + + /* + * Fold 256-bits to 128-bits. + */ + a2 = _mm512_extracti32x4_epi32(x1, 3); + a3 = _mm_clmulepi64_si128(a1, a0, 0x00); + a1 = _mm_clmulepi64_si128(a1, a0, 0x11); + a1 = _mm_xor_si128(a1, a3); + a1 = _mm_xor_si128(a1, a2); + + /* + * Fold 128-bits to 64-bits. + */ + a2 = _mm_clmulepi64_si128(a1, a0, 0x10); + a3 = _mm_setr_epi32(~0, 0, ~0, 0); + a1 = _mm_srli_si128(a1, 8); + a1 = _mm_xor_si128(a1, a2); + + a0 = _mm_loadl_epi64((__m128i*)k7k8); + a2 = _mm_srli_si128(a1, 4); + a1 = _mm_and_si128(a1, a3); + a1 = _mm_clmulepi64_si128(a1, a0, 0x00); + a1 = _mm_xor_si128(a1, a2); + + /* + * Barret reduce to 32-bits. + */ + a0 = _mm_load_si128((__m128i*)poly); + + a2 = _mm_and_si128(a1, a3); + a2 = _mm_clmulepi64_si128(a2, a0, 0x10); + a2 = _mm_and_si128(a2, a3); + a2 = _mm_clmulepi64_si128(a2, a0, 0x00); + a1 = _mm_xor_si128(a1, a2); + + /* + * Return the crc32. + */ + return _mm_extract_epi32(a1, 1); +} + +#endif +#if defined(CRC32_SIMD_SSE42_PCLMUL) + +/* + * crc32_sse42_simd_(): compute the crc32 of the buffer, where the buffer + * length must be at least 64, and a multiple of 16. + */ + +#include +#include +#include + +#if defined(__GNUC__) || defined(__clang__) +__attribute__((__target__("sse4.2,pclmul"))) +#endif +uint32_t ZLIB_INTERNAL crc32_sse42_simd_( /* SSE4.2+PCLMUL */ + const unsigned char *buf, + z_size_t len, + uint32_t crc) +{ + /* + * Definitions of the bit-reflected domain constants k1,k2,k3, etc and + * the CRC32+Barrett polynomials given at the end of the paper. + */ + static const uint64_t zalign(16) k1k2[] = { 0x0154442bd4, 0x01c6e41596 }; + static const uint64_t zalign(16) k3k4[] = { 0x01751997d0, 0x00ccaa009e }; + static const uint64_t zalign(16) k5k0[] = { 0x0163cd6124, 0x0000000000 }; + static const uint64_t zalign(16) poly[] = { 0x01db710641, 0x01f7011641 }; + + __m128i x0, x1, x2, x3, x4, x5, x6, x7, x8, y5, y6, y7, y8; + + /* + * There's at least one block of 64. + */ + x1 = _mm_loadu_si128((__m128i *)(buf + 0x00)); + x2 = _mm_loadu_si128((__m128i *)(buf + 0x10)); + x3 = _mm_loadu_si128((__m128i *)(buf + 0x20)); + x4 = _mm_loadu_si128((__m128i *)(buf + 0x30)); + + x1 = _mm_xor_si128(x1, _mm_cvtsi32_si128(crc)); + + x0 = _mm_load_si128((__m128i *)k1k2); + + buf += 64; + len -= 64; + + /* + * Parallel fold blocks of 64, if any. + */ + while (len >= 64) + { + x5 = _mm_clmulepi64_si128(x1, x0, 0x00); + x6 = _mm_clmulepi64_si128(x2, x0, 0x00); + x7 = _mm_clmulepi64_si128(x3, x0, 0x00); + x8 = _mm_clmulepi64_si128(x4, x0, 0x00); + + x1 = _mm_clmulepi64_si128(x1, x0, 0x11); + x2 = _mm_clmulepi64_si128(x2, x0, 0x11); + x3 = _mm_clmulepi64_si128(x3, x0, 0x11); + x4 = _mm_clmulepi64_si128(x4, x0, 0x11); + + y5 = _mm_loadu_si128((__m128i *)(buf + 0x00)); + y6 = _mm_loadu_si128((__m128i *)(buf + 0x10)); + y7 = _mm_loadu_si128((__m128i *)(buf + 0x20)); + y8 = _mm_loadu_si128((__m128i *)(buf + 0x30)); + + x1 = _mm_xor_si128(x1, x5); + x2 = _mm_xor_si128(x2, x6); + x3 = _mm_xor_si128(x3, x7); + x4 = _mm_xor_si128(x4, x8); + + x1 = _mm_xor_si128(x1, y5); + x2 = _mm_xor_si128(x2, y6); + x3 = _mm_xor_si128(x3, y7); + x4 = _mm_xor_si128(x4, y8); + + buf += 64; + len -= 64; + } + + /* + * Fold into 128-bits. + */ + x0 = _mm_load_si128((__m128i *)k3k4); + + x5 = _mm_clmulepi64_si128(x1, x0, 0x00); + x1 = _mm_clmulepi64_si128(x1, x0, 0x11); + x1 = _mm_xor_si128(x1, x2); + x1 = _mm_xor_si128(x1, x5); + + x5 = _mm_clmulepi64_si128(x1, x0, 0x00); + x1 = _mm_clmulepi64_si128(x1, x0, 0x11); + x1 = _mm_xor_si128(x1, x3); + x1 = _mm_xor_si128(x1, x5); + + x5 = _mm_clmulepi64_si128(x1, x0, 0x00); + x1 = _mm_clmulepi64_si128(x1, x0, 0x11); + x1 = _mm_xor_si128(x1, x4); + x1 = _mm_xor_si128(x1, x5); + + /* + * Single fold blocks of 16, if any. + */ + while (len >= 16) + { + x2 = _mm_loadu_si128((__m128i *)buf); + + x5 = _mm_clmulepi64_si128(x1, x0, 0x00); + x1 = _mm_clmulepi64_si128(x1, x0, 0x11); + x1 = _mm_xor_si128(x1, x2); + x1 = _mm_xor_si128(x1, x5); + + buf += 16; + len -= 16; + } + + /* + * Fold 128-bits to 64-bits. + */ + x2 = _mm_clmulepi64_si128(x1, x0, 0x10); + x3 = _mm_setr_epi32(~0, 0, ~0, 0); + x1 = _mm_srli_si128(x1, 8); + x1 = _mm_xor_si128(x1, x2); + + x0 = _mm_loadl_epi64((__m128i*)k5k0); + + x2 = _mm_srli_si128(x1, 4); + x1 = _mm_and_si128(x1, x3); + x1 = _mm_clmulepi64_si128(x1, x0, 0x00); + x1 = _mm_xor_si128(x1, x2); + + /* + * Barret reduce to 32-bits. + */ + x0 = _mm_load_si128((__m128i*)poly); + + x2 = _mm_and_si128(x1, x3); + x2 = _mm_clmulepi64_si128(x2, x0, 0x10); + x2 = _mm_and_si128(x2, x3); + x2 = _mm_clmulepi64_si128(x2, x0, 0x00); + x1 = _mm_xor_si128(x1, x2); + + /* + * Return the crc32. + */ + return _mm_extract_epi32(x1, 1); +} + +#elif defined(CRC32_ARMV8_CRC32) + +/* CRC32 checksums using ARMv8-a crypto instructions. + */ + +#if defined(__clang__) +/* We need some extra types for using PMULL. + */ +#if defined(__aarch64__) +#include +#include +#endif + +/* CRC32 intrinsics are #ifdef'ed out of arm_acle.h unless we build with an + * armv8 target, which is incompatible with ThinLTO optimizations on Android. + * (Namely, mixing and matching different module-level targets makes ThinLTO + * warn, and Android defaults to armv7-a. This restriction does not apply to + * function-level `target`s, however.) + * + * Since we only need four crc intrinsics, and since clang's implementation of + * those are just wrappers around compiler builtins, it's simplest to #define + * those builtins directly. If this #define list grows too much (or we depend on + * an intrinsic that isn't a trivial wrapper), we may have to find a better way + * to go about this. + * + * NOTE: clang currently complains that "'+soft-float-abi' is not a recognized + * feature for this target (ignoring feature)." This appears to be a harmless + * bug in clang. + * + * These definitions must appear *after* including arm_acle.h otherwise that + * header may end up defining functions named __builtin_arm_crc32* that call + * themselves, creating an infinite loop when the intrinsic is called. + */ +/* XXX: Cannot hook into builtins with XCode for arm64. */ +#if !defined(ARMV8_OS_MACOS) +#define __crc32b __builtin_arm_crc32b +#define __crc32d __builtin_arm_crc32d +#define __crc32w __builtin_arm_crc32w +#define __crc32cw __builtin_arm_crc32cw +#endif + +#if defined(__aarch64__) +#define TARGET_ARMV8_WITH_CRC __attribute__((target("arch=armv8-a+aes+crc"))) +#else // !defined(__aarch64__) +#define TARGET_ARMV8_WITH_CRC __attribute__((target("crc"))) +#endif // defined(__aarch64__) + +#elif defined(__GNUC__) +/* For GCC, we are setting CRC extensions at module level, so ThinLTO is not + * allowed. We can just include arm_acle.h. + */ +#include +#include +#define TARGET_ARMV8_WITH_CRC __attribute__((target("arch=armv8-a+crc+crypto"))) +#else // !defined(__GNUC__) && !defined(_aarch64__) +#error ARM CRC32 SIMD extensions only supported for Clang and GCC +#endif + +TARGET_ARMV8_WITH_CRC +uint32_t ZLIB_INTERNAL armv8_crc32_little( + const unsigned char *buf, + z_size_t len, + uint32_t crc) +{ + uint32_t c = (uint32_t) ~crc; + + while (len && ((uintptr_t)buf & 7)) { + c = __crc32b(c, *buf++); + --len; + } + + const uint64_t *buf8 = (const uint64_t *)buf; + + while (len >= 64) { + c = __crc32d(c, *buf8++); + c = __crc32d(c, *buf8++); + c = __crc32d(c, *buf8++); + c = __crc32d(c, *buf8++); + + c = __crc32d(c, *buf8++); + c = __crc32d(c, *buf8++); + c = __crc32d(c, *buf8++); + c = __crc32d(c, *buf8++); + len -= 64; + } + + while (len >= 8) { + c = __crc32d(c, *buf8++); + len -= 8; + } + + buf = (const unsigned char *)buf8; + + while (len--) { + c = __crc32b(c, *buf++); + } + + return ~c; +} + +#if defined(__aarch64__) || defined(ARMV8_OS_MACOS) /* aarch64 specific code. */ + +/* + * crc32_pmull_simd_(): compute the crc32 of the buffer, where the buffer + * length must be at least 64, and a multiple of 16. Based on: + * + * "Fast CRC Computation for Generic Polynomials Using PCLMULQDQ Instruction" + * V. Gopal, E. Ozturk, et al., 2009, http://intel.ly/2ySEwL0 + */ +TARGET_ARMV8_WITH_CRC +static inline uint8x16_t pmull_lo(const uint64x2_t a, const uint64x2_t b) +{ + uint8x16_t r; + __asm__ __volatile__ ("pmull %0.1q, %1.1d, %2.1d \n\t" + : "=w" (r) : "w" (a), "w" (b) ); + return r; +} + +TARGET_ARMV8_WITH_CRC +static inline uint8x16_t pmull_01(const uint64x2_t a, const uint64x2_t b) +{ + uint8x16_t r; + __asm__ __volatile__ ("pmull %0.1q, %1.1d, %2.1d \n\t" + : "=w" (r) : "w" (a), "w" (vgetq_lane_u64(b, 1)) ); + return r; +} + +TARGET_ARMV8_WITH_CRC +static inline uint8x16_t pmull_hi(const uint64x2_t a, const uint64x2_t b) +{ + uint8x16_t r; + __asm__ __volatile__ ("pmull2 %0.1q, %1.2d, %2.2d \n\t" + : "=w" (r) : "w" (a), "w" (b) ); + return r; +} + +TARGET_ARMV8_WITH_CRC +uint32_t ZLIB_INTERNAL armv8_crc32_pmull_little( + const unsigned char *buf, + z_size_t len, + uint32_t crc) +{ + /* + * Definitions of the bit-reflected domain constants k1,k2,k3, etc and + * the CRC32+Barrett polynomials given at the end of the paper. + */ + static const uint64_t zalign(16) k1k2[] = { 0x0154442bd4, 0x01c6e41596 }; + static const uint64_t zalign(16) k3k4[] = { 0x01751997d0, 0x00ccaa009e }; + static const uint64_t zalign(16) k5k0[] = { 0x0163cd6124, 0x0000000000 }; + static const uint64_t zalign(16) poly[] = { 0x01db710641, 0x01f7011641 }; + + uint64x2_t x0, x1, x2, x3, x4, x5, x6, x7, x8, y5, y6, y7, y8; + + /* + * There's at least one block of 64. + */ + x1 = vld1q_u64((const uint64_t *)(buf + 0x00)); + x2 = vld1q_u64((const uint64_t *)(buf + 0x10)); + x3 = vld1q_u64((const uint64_t *)(buf + 0x20)); + x4 = vld1q_u64((const uint64_t *)(buf + 0x30)); + + x1 = veorq_u64(x1, (uint64x2_t) vsetq_lane_u32(crc, vdupq_n_u32(0), 0)); + + x0 = vld1q_u64(k1k2); + + buf += 64; + len -= 64; + + /* + * Parallel fold blocks of 64, if any. + */ + while (len >= 64) + { + x5 = (uint64x2_t) pmull_lo(x1, x0); + x6 = (uint64x2_t) pmull_lo(x2, x0); + x7 = (uint64x2_t) pmull_lo(x3, x0); + x8 = (uint64x2_t) pmull_lo(x4, x0); + + y5 = vld1q_u64((const uint64_t *)(buf + 0x00)); + y6 = vld1q_u64((const uint64_t *)(buf + 0x10)); + y7 = vld1q_u64((const uint64_t *)(buf + 0x20)); + y8 = vld1q_u64((const uint64_t *)(buf + 0x30)); + + x1 = (uint64x2_t) pmull_hi(x1, x0); + x2 = (uint64x2_t) pmull_hi(x2, x0); + x3 = (uint64x2_t) pmull_hi(x3, x0); + x4 = (uint64x2_t) pmull_hi(x4, x0); + + x1 = veorq_u64(x1, x5); + x2 = veorq_u64(x2, x6); + x3 = veorq_u64(x3, x7); + x4 = veorq_u64(x4, x8); + + x1 = veorq_u64(x1, y5); + x2 = veorq_u64(x2, y6); + x3 = veorq_u64(x3, y7); + x4 = veorq_u64(x4, y8); + + buf += 64; + len -= 64; + } + + /* + * Fold into 128-bits. + */ + x0 = vld1q_u64(k3k4); + + x5 = (uint64x2_t) pmull_lo(x1, x0); + x1 = (uint64x2_t) pmull_hi(x1, x0); + x1 = veorq_u64(x1, x2); + x1 = veorq_u64(x1, x5); + + x5 = (uint64x2_t) pmull_lo(x1, x0); + x1 = (uint64x2_t) pmull_hi(x1, x0); + x1 = veorq_u64(x1, x3); + x1 = veorq_u64(x1, x5); + + x5 = (uint64x2_t) pmull_lo(x1, x0); + x1 = (uint64x2_t) pmull_hi(x1, x0); + x1 = veorq_u64(x1, x4); + x1 = veorq_u64(x1, x5); + + /* + * Single fold blocks of 16, if any. + */ + while (len >= 16) + { + x2 = vld1q_u64((const uint64_t *)buf); + + x5 = (uint64x2_t) pmull_lo(x1, x0); + x1 = (uint64x2_t) pmull_hi(x1, x0); + x1 = veorq_u64(x1, x2); + x1 = veorq_u64(x1, x5); + + buf += 16; + len -= 16; + } + + /* + * Fold 128-bits to 64-bits. + */ + static uint32_t zalign(16) mask[] = { ~0u, 0u, ~0u, 0u }; + + x2 = (uint64x2_t) pmull_01(x1, x0); + x1 = (uint64x2_t) vextq_u8(vreinterpretq_u8_u64(x1), vdupq_n_u8(0), 8); + x3 = (uint64x2_t) vld1q_u32(mask); + x1 = veorq_u64(x1, x2); + + x0 = vld1q_u64(k5k0); + + x2 = (uint64x2_t) pmull_01(x2, x0); + x2 = (uint64x2_t) vextq_u8(vreinterpretq_u8_u64(x1), vdupq_n_u8(0), 4); + x1 = vandq_u64(x1, x3); + x1 = (uint64x2_t) pmull_lo(x1, x0); + x1 = veorq_u64(x1, x2); + + /* + * Barret reduce to 32-bits. + */ + x0 = vld1q_u64(poly); + + x2 = vandq_u64(x1, x3); + x2 = (uint64x2_t) pmull_01(x2, x0); + x2 = vandq_u64(x2, x3); + x2 = (uint64x2_t) pmull_lo(x2, x0); + x1 = veorq_u64(x1, x2); + + /* + * Return the crc32. + */ + return vgetq_lane_u32(vreinterpretq_u32_u64(x1), 1); +} +#endif /* aarch64 specific code. */ + +#endif diff --git a/packages/runtime/vendor/zlib/crc32_simd.h b/packages/runtime/vendor/zlib/crc32_simd.h new file mode 100644 index 000000000..84624647b --- /dev/null +++ b/packages/runtime/vendor/zlib/crc32_simd.h @@ -0,0 +1,57 @@ +/* crc32_simd.h + * + * Copyright 2017 The Chromium Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the Chromium source repository LICENSE file. + */ + +#include + +#include "zconf.h" +#include "zutil.h" +#include "deflate.h" + +/* + * crc32_sse42_simd_(): compute the crc32 of the buffer, where the buffer + * length must be at least 64, and a multiple of 16. + */ +uint32_t ZLIB_INTERNAL crc32_sse42_simd_(const unsigned char* buf, + z_size_t len, + uint32_t crc); + +uint32_t ZLIB_INTERNAL crc32_avx512_simd_(const unsigned char* buf, + z_size_t len, + uint32_t crc); + +/* + * crc32_sse42_simd_ buffer size constraints: see the use in zlib/crc32.c + * for computing the crc32 of an arbitrary length buffer. + */ +#define Z_CRC32_SSE42_MINIMUM_LENGTH 64 +#define Z_CRC32_SSE42_CHUNKSIZE_MASK 15 +#define Z_CRC32_AVX512_MINIMUM_LENGTH 256 +#define Z_CRC32_AVX512_CHUNKSIZE_MASK 63 + +/* + * CRC32 checksums using ARMv8-a crypto instructions. + */ +uint32_t ZLIB_INTERNAL armv8_crc32_little(const unsigned char* buf, + z_size_t len, + uint32_t crc); + +/* aarch64 specific code. */ +#if defined(__aarch64__) + +/* 128 is the sweet spot at the time of coding (late 2020). */ +#define Z_CRC32_PMULL_MINIMUM_LENGTH 128 +#define Z_CRC32_PMULL_CHUNKSIZE_MASK 15 + +/* + * CRC32 checksums using ARMv8-a PMULL instructions, where the buffer + * length must be at least 64, and a multiple of 16. + */ +uint32_t ZLIB_INTERNAL armv8_crc32_pmull_little(const unsigned char* buf, + z_size_t len, + uint32_t crc); + +#endif diff --git a/packages/runtime/vendor/zlib/crc_folding.c b/packages/runtime/vendor/zlib/crc_folding.c new file mode 100644 index 000000000..3e31ae4a7 --- /dev/null +++ b/packages/runtime/vendor/zlib/crc_folding.c @@ -0,0 +1,513 @@ +/* + * Compute the CRC32 using a parallelized folding approach with the PCLMULQDQ + * instruction. + * + * A white paper describing this algorithm can be found at: + * http://www.intel.com/content/dam/www/public/us/en/documents/white-papers/fast-crc-computation-generic-polynomials-pclmulqdq-paper.pdf + * + * Copyright (C) 2013 Intel Corporation. All rights reserved. + * Authors: + * Wajdi Feghali + * Jim Guilford + * Vinodh Gopal + * Erdinc Ozturk + * Jim Kukunas + * + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +#include "deflate.h" + +#ifdef CRC32_SIMD_SSE42_PCLMUL + +#include +#include +#include +#include + +#if defined(__GNUC__) || defined(__clang__) +#define TARGET_SSE42_PCLMUL __attribute__((__target__("sse4.2,pclmul"))) +#else +#define TARGET_SSE42_PCLMUL +#endif + +#define CRC_LOAD(s) \ + do { \ + __m128i xmm_crc0 = _mm_loadu_si128((__m128i *)s->crc0 + 0);\ + __m128i xmm_crc1 = _mm_loadu_si128((__m128i *)s->crc0 + 1);\ + __m128i xmm_crc2 = _mm_loadu_si128((__m128i *)s->crc0 + 2);\ + __m128i xmm_crc3 = _mm_loadu_si128((__m128i *)s->crc0 + 3);\ + __m128i xmm_crc_part = _mm_loadu_si128((__m128i *)s->crc0 + 4); + +#define CRC_SAVE(s) \ + _mm_storeu_si128((__m128i *)s->crc0 + 0, xmm_crc0);\ + _mm_storeu_si128((__m128i *)s->crc0 + 1, xmm_crc1);\ + _mm_storeu_si128((__m128i *)s->crc0 + 2, xmm_crc2);\ + _mm_storeu_si128((__m128i *)s->crc0 + 3, xmm_crc3);\ + _mm_storeu_si128((__m128i *)s->crc0 + 4, xmm_crc_part);\ + } while (0); + +TARGET_SSE42_PCLMUL +ZLIB_INTERNAL void crc_fold_init(deflate_state *const s) +{ + CRC_LOAD(s) + + xmm_crc0 = _mm_cvtsi32_si128(0x9db42487); + xmm_crc1 = _mm_setzero_si128(); + xmm_crc2 = _mm_setzero_si128(); + xmm_crc3 = _mm_setzero_si128(); + + CRC_SAVE(s) + + s->strm->adler = 0; +} + +TARGET_SSE42_PCLMUL +local void fold_1(deflate_state *const s, + __m128i *xmm_crc0, __m128i *xmm_crc1, + __m128i *xmm_crc2, __m128i *xmm_crc3) +{ + const __m128i xmm_fold4 = _mm_set_epi32( + 0x00000001, 0x54442bd4, + 0x00000001, 0xc6e41596); + + __m128i x_tmp3; + __m128 ps_crc0, ps_crc3, ps_res; + + x_tmp3 = *xmm_crc3; + + *xmm_crc3 = *xmm_crc0; + *xmm_crc0 = _mm_clmulepi64_si128(*xmm_crc0, xmm_fold4, 0x01); + *xmm_crc3 = _mm_clmulepi64_si128(*xmm_crc3, xmm_fold4, 0x10); + ps_crc0 = _mm_castsi128_ps(*xmm_crc0); + ps_crc3 = _mm_castsi128_ps(*xmm_crc3); + ps_res = _mm_xor_ps(ps_crc0, ps_crc3); + + *xmm_crc0 = *xmm_crc1; + *xmm_crc1 = *xmm_crc2; + *xmm_crc2 = x_tmp3; + *xmm_crc3 = _mm_castps_si128(ps_res); +} + +TARGET_SSE42_PCLMUL +local void fold_2(deflate_state *const s, + __m128i *xmm_crc0, __m128i *xmm_crc1, + __m128i *xmm_crc2, __m128i *xmm_crc3) +{ + const __m128i xmm_fold4 = _mm_set_epi32( + 0x00000001, 0x54442bd4, + 0x00000001, 0xc6e41596); + + __m128i x_tmp3, x_tmp2; + __m128 ps_crc0, ps_crc1, ps_crc2, ps_crc3, ps_res31, ps_res20; + + x_tmp3 = *xmm_crc3; + x_tmp2 = *xmm_crc2; + + *xmm_crc3 = *xmm_crc1; + *xmm_crc1 = _mm_clmulepi64_si128(*xmm_crc1, xmm_fold4, 0x01); + *xmm_crc3 = _mm_clmulepi64_si128(*xmm_crc3, xmm_fold4, 0x10); + ps_crc3 = _mm_castsi128_ps(*xmm_crc3); + ps_crc1 = _mm_castsi128_ps(*xmm_crc1); + ps_res31= _mm_xor_ps(ps_crc3, ps_crc1); + + *xmm_crc2 = *xmm_crc0; + *xmm_crc0 = _mm_clmulepi64_si128(*xmm_crc0, xmm_fold4, 0x01); + *xmm_crc2 = _mm_clmulepi64_si128(*xmm_crc2, xmm_fold4, 0x10); + ps_crc0 = _mm_castsi128_ps(*xmm_crc0); + ps_crc2 = _mm_castsi128_ps(*xmm_crc2); + ps_res20= _mm_xor_ps(ps_crc0, ps_crc2); + + *xmm_crc0 = x_tmp2; + *xmm_crc1 = x_tmp3; + *xmm_crc2 = _mm_castps_si128(ps_res20); + *xmm_crc3 = _mm_castps_si128(ps_res31); +} + +TARGET_SSE42_PCLMUL +local void fold_3(deflate_state *const s, + __m128i *xmm_crc0, __m128i *xmm_crc1, + __m128i *xmm_crc2, __m128i *xmm_crc3) +{ + const __m128i xmm_fold4 = _mm_set_epi32( + 0x00000001, 0x54442bd4, + 0x00000001, 0xc6e41596); + + __m128i x_tmp3; + __m128 ps_crc0, ps_crc1, ps_crc2, ps_crc3, ps_res32, ps_res21, ps_res10; + + x_tmp3 = *xmm_crc3; + + *xmm_crc3 = *xmm_crc2; + *xmm_crc2 = _mm_clmulepi64_si128(*xmm_crc2, xmm_fold4, 0x01); + *xmm_crc3 = _mm_clmulepi64_si128(*xmm_crc3, xmm_fold4, 0x10); + ps_crc2 = _mm_castsi128_ps(*xmm_crc2); + ps_crc3 = _mm_castsi128_ps(*xmm_crc3); + ps_res32 = _mm_xor_ps(ps_crc2, ps_crc3); + + *xmm_crc2 = *xmm_crc1; + *xmm_crc1 = _mm_clmulepi64_si128(*xmm_crc1, xmm_fold4, 0x01); + *xmm_crc2 = _mm_clmulepi64_si128(*xmm_crc2, xmm_fold4, 0x10); + ps_crc1 = _mm_castsi128_ps(*xmm_crc1); + ps_crc2 = _mm_castsi128_ps(*xmm_crc2); + ps_res21= _mm_xor_ps(ps_crc1, ps_crc2); + + *xmm_crc1 = *xmm_crc0; + *xmm_crc0 = _mm_clmulepi64_si128(*xmm_crc0, xmm_fold4, 0x01); + *xmm_crc1 = _mm_clmulepi64_si128(*xmm_crc1, xmm_fold4, 0x10); + ps_crc0 = _mm_castsi128_ps(*xmm_crc0); + ps_crc1 = _mm_castsi128_ps(*xmm_crc1); + ps_res10= _mm_xor_ps(ps_crc0, ps_crc1); + + *xmm_crc0 = x_tmp3; + *xmm_crc1 = _mm_castps_si128(ps_res10); + *xmm_crc2 = _mm_castps_si128(ps_res21); + *xmm_crc3 = _mm_castps_si128(ps_res32); +} + +TARGET_SSE42_PCLMUL +local void fold_4(deflate_state *const s, + __m128i *xmm_crc0, __m128i *xmm_crc1, + __m128i *xmm_crc2, __m128i *xmm_crc3) +{ + const __m128i xmm_fold4 = _mm_set_epi32( + 0x00000001, 0x54442bd4, + 0x00000001, 0xc6e41596); + + __m128i x_tmp0, x_tmp1, x_tmp2, x_tmp3; + __m128 ps_crc0, ps_crc1, ps_crc2, ps_crc3; + __m128 ps_t0, ps_t1, ps_t2, ps_t3; + __m128 ps_res0, ps_res1, ps_res2, ps_res3; + + x_tmp0 = *xmm_crc0; + x_tmp1 = *xmm_crc1; + x_tmp2 = *xmm_crc2; + x_tmp3 = *xmm_crc3; + + *xmm_crc0 = _mm_clmulepi64_si128(*xmm_crc0, xmm_fold4, 0x01); + x_tmp0 = _mm_clmulepi64_si128(x_tmp0, xmm_fold4, 0x10); + ps_crc0 = _mm_castsi128_ps(*xmm_crc0); + ps_t0 = _mm_castsi128_ps(x_tmp0); + ps_res0 = _mm_xor_ps(ps_crc0, ps_t0); + + *xmm_crc1 = _mm_clmulepi64_si128(*xmm_crc1, xmm_fold4, 0x01); + x_tmp1 = _mm_clmulepi64_si128(x_tmp1, xmm_fold4, 0x10); + ps_crc1 = _mm_castsi128_ps(*xmm_crc1); + ps_t1 = _mm_castsi128_ps(x_tmp1); + ps_res1 = _mm_xor_ps(ps_crc1, ps_t1); + + *xmm_crc2 = _mm_clmulepi64_si128(*xmm_crc2, xmm_fold4, 0x01); + x_tmp2 = _mm_clmulepi64_si128(x_tmp2, xmm_fold4, 0x10); + ps_crc2 = _mm_castsi128_ps(*xmm_crc2); + ps_t2 = _mm_castsi128_ps(x_tmp2); + ps_res2 = _mm_xor_ps(ps_crc2, ps_t2); + + *xmm_crc3 = _mm_clmulepi64_si128(*xmm_crc3, xmm_fold4, 0x01); + x_tmp3 = _mm_clmulepi64_si128(x_tmp3, xmm_fold4, 0x10); + ps_crc3 = _mm_castsi128_ps(*xmm_crc3); + ps_t3 = _mm_castsi128_ps(x_tmp3); + ps_res3 = _mm_xor_ps(ps_crc3, ps_t3); + + *xmm_crc0 = _mm_castps_si128(ps_res0); + *xmm_crc1 = _mm_castps_si128(ps_res1); + *xmm_crc2 = _mm_castps_si128(ps_res2); + *xmm_crc3 = _mm_castps_si128(ps_res3); +} + +local const unsigned zalign(32) pshufb_shf_table[60] = { + 0x84838281,0x88878685,0x8c8b8a89,0x008f8e8d, /* shl 15 (16 - 1)/shr1 */ + 0x85848382,0x89888786,0x8d8c8b8a,0x01008f8e, /* shl 14 (16 - 3)/shr2 */ + 0x86858483,0x8a898887,0x8e8d8c8b,0x0201008f, /* shl 13 (16 - 4)/shr3 */ + 0x87868584,0x8b8a8988,0x8f8e8d8c,0x03020100, /* shl 12 (16 - 4)/shr4 */ + 0x88878685,0x8c8b8a89,0x008f8e8d,0x04030201, /* shl 11 (16 - 5)/shr5 */ + 0x89888786,0x8d8c8b8a,0x01008f8e,0x05040302, /* shl 10 (16 - 6)/shr6 */ + 0x8a898887,0x8e8d8c8b,0x0201008f,0x06050403, /* shl 9 (16 - 7)/shr7 */ + 0x8b8a8988,0x8f8e8d8c,0x03020100,0x07060504, /* shl 8 (16 - 8)/shr8 */ + 0x8c8b8a89,0x008f8e8d,0x04030201,0x08070605, /* shl 7 (16 - 9)/shr9 */ + 0x8d8c8b8a,0x01008f8e,0x05040302,0x09080706, /* shl 6 (16 -10)/shr10*/ + 0x8e8d8c8b,0x0201008f,0x06050403,0x0a090807, /* shl 5 (16 -11)/shr11*/ + 0x8f8e8d8c,0x03020100,0x07060504,0x0b0a0908, /* shl 4 (16 -12)/shr12*/ + 0x008f8e8d,0x04030201,0x08070605,0x0c0b0a09, /* shl 3 (16 -13)/shr13*/ + 0x01008f8e,0x05040302,0x09080706,0x0d0c0b0a, /* shl 2 (16 -14)/shr14*/ + 0x0201008f,0x06050403,0x0a090807,0x0e0d0c0b /* shl 1 (16 -15)/shr15*/ +}; + +TARGET_SSE42_PCLMUL +local void partial_fold(deflate_state *const s, const size_t len, + __m128i *xmm_crc0, __m128i *xmm_crc1, + __m128i *xmm_crc2, __m128i *xmm_crc3, + __m128i *xmm_crc_part) +{ + + const __m128i xmm_fold4 = _mm_set_epi32( + 0x00000001, 0x54442bd4, + 0x00000001, 0xc6e41596); + const __m128i xmm_mask3 = _mm_set1_epi32(0x80808080); + + __m128i xmm_shl, xmm_shr, xmm_tmp1, xmm_tmp2, xmm_tmp3; + __m128i xmm_a0_0, xmm_a0_1; + __m128 ps_crc3, psa0_0, psa0_1, ps_res; + + xmm_shl = _mm_load_si128((__m128i *)pshufb_shf_table + (len - 1)); + xmm_shr = xmm_shl; + xmm_shr = _mm_xor_si128(xmm_shr, xmm_mask3); + + xmm_a0_0 = _mm_shuffle_epi8(*xmm_crc0, xmm_shl); + + *xmm_crc0 = _mm_shuffle_epi8(*xmm_crc0, xmm_shr); + xmm_tmp1 = _mm_shuffle_epi8(*xmm_crc1, xmm_shl); + *xmm_crc0 = _mm_or_si128(*xmm_crc0, xmm_tmp1); + + *xmm_crc1 = _mm_shuffle_epi8(*xmm_crc1, xmm_shr); + xmm_tmp2 = _mm_shuffle_epi8(*xmm_crc2, xmm_shl); + *xmm_crc1 = _mm_or_si128(*xmm_crc1, xmm_tmp2); + + *xmm_crc2 = _mm_shuffle_epi8(*xmm_crc2, xmm_shr); + xmm_tmp3 = _mm_shuffle_epi8(*xmm_crc3, xmm_shl); + *xmm_crc2 = _mm_or_si128(*xmm_crc2, xmm_tmp3); + + *xmm_crc3 = _mm_shuffle_epi8(*xmm_crc3, xmm_shr); + *xmm_crc_part = _mm_shuffle_epi8(*xmm_crc_part, xmm_shl); + *xmm_crc3 = _mm_or_si128(*xmm_crc3, *xmm_crc_part); + + xmm_a0_1 = _mm_clmulepi64_si128(xmm_a0_0, xmm_fold4, 0x10); + xmm_a0_0 = _mm_clmulepi64_si128(xmm_a0_0, xmm_fold4, 0x01); + + ps_crc3 = _mm_castsi128_ps(*xmm_crc3); + psa0_0 = _mm_castsi128_ps(xmm_a0_0); + psa0_1 = _mm_castsi128_ps(xmm_a0_1); + + ps_res = _mm_xor_ps(ps_crc3, psa0_0); + ps_res = _mm_xor_ps(ps_res, psa0_1); + + *xmm_crc3 = _mm_castps_si128(ps_res); +} + +TARGET_SSE42_PCLMUL +ZLIB_INTERNAL void crc_fold_copy(deflate_state *const s, + unsigned char *dst, const unsigned char *src, long len) +{ + unsigned long algn_diff; + __m128i xmm_t0, xmm_t1, xmm_t2, xmm_t3; + + CRC_LOAD(s) + + if (len < 16) { + if (len == 0) + return; + goto partial; + } + + algn_diff = (0 - (uintptr_t)src) & 0xF; + if (algn_diff) { + xmm_crc_part = _mm_loadu_si128((__m128i *)src); + _mm_storeu_si128((__m128i *)dst, xmm_crc_part); + + dst += algn_diff; + src += algn_diff; + len -= algn_diff; + + partial_fold(s, algn_diff, &xmm_crc0, &xmm_crc1, &xmm_crc2, &xmm_crc3, + &xmm_crc_part); + } + + while ((len -= 64) >= 0) { + xmm_t0 = _mm_load_si128((__m128i *)src); + xmm_t1 = _mm_load_si128((__m128i *)src + 1); + xmm_t2 = _mm_load_si128((__m128i *)src + 2); + xmm_t3 = _mm_load_si128((__m128i *)src + 3); + + fold_4(s, &xmm_crc0, &xmm_crc1, &xmm_crc2, &xmm_crc3); + + _mm_storeu_si128((__m128i *)dst, xmm_t0); + _mm_storeu_si128((__m128i *)dst + 1, xmm_t1); + _mm_storeu_si128((__m128i *)dst + 2, xmm_t2); + _mm_storeu_si128((__m128i *)dst + 3, xmm_t3); + + xmm_crc0 = _mm_xor_si128(xmm_crc0, xmm_t0); + xmm_crc1 = _mm_xor_si128(xmm_crc1, xmm_t1); + xmm_crc2 = _mm_xor_si128(xmm_crc2, xmm_t2); + xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_t3); + + src += 64; + dst += 64; + } + + /* + * len = num bytes left - 64 + */ + if (len + 16 >= 0) { + len += 16; + + xmm_t0 = _mm_load_si128((__m128i *)src); + xmm_t1 = _mm_load_si128((__m128i *)src + 1); + xmm_t2 = _mm_load_si128((__m128i *)src + 2); + + fold_3(s, &xmm_crc0, &xmm_crc1, &xmm_crc2, &xmm_crc3); + + _mm_storeu_si128((__m128i *)dst, xmm_t0); + _mm_storeu_si128((__m128i *)dst + 1, xmm_t1); + _mm_storeu_si128((__m128i *)dst + 2, xmm_t2); + + xmm_crc1 = _mm_xor_si128(xmm_crc1, xmm_t0); + xmm_crc2 = _mm_xor_si128(xmm_crc2, xmm_t1); + xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_t2); + + if (len == 0) + goto done; + + dst += 48; + src += 48; + } else if (len + 32 >= 0) { + len += 32; + + xmm_t0 = _mm_load_si128((__m128i *)src); + xmm_t1 = _mm_load_si128((__m128i *)src + 1); + + fold_2(s, &xmm_crc0, &xmm_crc1, &xmm_crc2, &xmm_crc3); + + _mm_storeu_si128((__m128i *)dst, xmm_t0); + _mm_storeu_si128((__m128i *)dst + 1, xmm_t1); + + xmm_crc2 = _mm_xor_si128(xmm_crc2, xmm_t0); + xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_t1); + + if (len == 0) + goto done; + + dst += 32; + src += 32; + } else if (len + 48 >= 0) { + len += 48; + + xmm_t0 = _mm_load_si128((__m128i *)src); + + fold_1(s, &xmm_crc0, &xmm_crc1, &xmm_crc2, &xmm_crc3); + + _mm_storeu_si128((__m128i *)dst, xmm_t0); + + xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_t0); + + if (len == 0) + goto done; + + dst += 16; + src += 16; + } else { + len += 64; + if (len == 0) + goto done; + } + +partial: + +#if defined(_MSC_VER) + /* VS does not permit the use of _mm_set_epi64x in 32-bit builds */ + { + int32_t parts[4] = {0, 0, 0, 0}; + memcpy(&parts, src, len); + xmm_crc_part = _mm_set_epi32(parts[3], parts[2], parts[1], parts[0]); + } +#else + { + int64_t parts[2] = {0, 0}; + memcpy(&parts, src, len); + xmm_crc_part = _mm_set_epi64x(parts[1], parts[0]); + } +#endif + + zmemcpy(dst, src, len); /* TODO: Possibly generate more efficient code. */ + partial_fold(s, len, &xmm_crc0, &xmm_crc1, &xmm_crc2, &xmm_crc3, + &xmm_crc_part); +done: + CRC_SAVE(s) +} + +local const unsigned zalign(16) crc_k[] = { + 0xccaa009e, 0x00000000, /* rk1 */ + 0x751997d0, 0x00000001, /* rk2 */ + 0xccaa009e, 0x00000000, /* rk5 */ + 0x63cd6124, 0x00000001, /* rk6 */ + 0xf7011640, 0x00000001, /* rk7 */ + 0xdb710640, 0x00000001 /* rk8 */ +}; + +local const unsigned zalign(16) crc_mask[4] = { + 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x00000000 +}; + +local const unsigned zalign(16) crc_mask2[4] = { + 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF +}; + +TARGET_SSE42_PCLMUL +unsigned ZLIB_INTERNAL crc_fold_512to32(deflate_state *const s) +{ + const __m128i xmm_mask = _mm_load_si128((__m128i *)crc_mask); + const __m128i xmm_mask2 = _mm_load_si128((__m128i *)crc_mask2); + + unsigned crc; + __m128i x_tmp0, x_tmp1, x_tmp2, crc_fold; + + __m128i xmm_crc0 = _mm_loadu_si128((__m128i *)s->crc0 + 0); + __m128i xmm_crc1 = _mm_loadu_si128((__m128i *)s->crc0 + 1); + __m128i xmm_crc2 = _mm_loadu_si128((__m128i *)s->crc0 + 2); + __m128i xmm_crc3 = _mm_loadu_si128((__m128i *)s->crc0 + 3); + + /* + * k1 + */ + crc_fold = _mm_load_si128((__m128i *)crc_k); + + x_tmp0 = _mm_clmulepi64_si128(xmm_crc0, crc_fold, 0x10); + xmm_crc0 = _mm_clmulepi64_si128(xmm_crc0, crc_fold, 0x01); + xmm_crc1 = _mm_xor_si128(xmm_crc1, x_tmp0); + xmm_crc1 = _mm_xor_si128(xmm_crc1, xmm_crc0); + + x_tmp1 = _mm_clmulepi64_si128(xmm_crc1, crc_fold, 0x10); + xmm_crc1 = _mm_clmulepi64_si128(xmm_crc1, crc_fold, 0x01); + xmm_crc2 = _mm_xor_si128(xmm_crc2, x_tmp1); + xmm_crc2 = _mm_xor_si128(xmm_crc2, xmm_crc1); + + x_tmp2 = _mm_clmulepi64_si128(xmm_crc2, crc_fold, 0x10); + xmm_crc2 = _mm_clmulepi64_si128(xmm_crc2, crc_fold, 0x01); + xmm_crc3 = _mm_xor_si128(xmm_crc3, x_tmp2); + xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_crc2); + + /* + * k5 + */ + crc_fold = _mm_load_si128((__m128i *)crc_k + 1); + + xmm_crc0 = xmm_crc3; + xmm_crc3 = _mm_clmulepi64_si128(xmm_crc3, crc_fold, 0); + xmm_crc0 = _mm_srli_si128(xmm_crc0, 8); + xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_crc0); + + xmm_crc0 = xmm_crc3; + xmm_crc3 = _mm_slli_si128(xmm_crc3, 4); + xmm_crc3 = _mm_clmulepi64_si128(xmm_crc3, crc_fold, 0x10); + xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_crc0); + xmm_crc3 = _mm_and_si128(xmm_crc3, xmm_mask2); + + /* + * k7 + */ + xmm_crc1 = xmm_crc3; + xmm_crc2 = xmm_crc3; + crc_fold = _mm_load_si128((__m128i *)crc_k + 2); + + xmm_crc3 = _mm_clmulepi64_si128(xmm_crc3, crc_fold, 0); + xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_crc2); + xmm_crc3 = _mm_and_si128(xmm_crc3, xmm_mask); + + xmm_crc2 = xmm_crc3; + xmm_crc3 = _mm_clmulepi64_si128(xmm_crc3, crc_fold, 0x10); + xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_crc2); + xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_crc1); + + crc = _mm_extract_epi32(xmm_crc3, 2); + return ~crc; +} + +#endif /* CRC32_SIMD_SSE42_PCLMUL */ diff --git a/packages/runtime/vendor/zlib/deflate.c b/packages/runtime/vendor/zlib/deflate.c index 012ea8148..b98a985e5 100644 --- a/packages/runtime/vendor/zlib/deflate.c +++ b/packages/runtime/vendor/zlib/deflate.c @@ -1,5 +1,5 @@ /* deflate.c -- compress data using the deflation algorithm - * Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler + * Copyright (C) 1995-2026 Jean-loup Gailly and Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -37,7 +37,7 @@ * REFERENCES * * Deutsch, L.P.,"DEFLATE Compressed Data Format Specification". - * Available in http://tools.ietf.org/html/rfc1951 + * Available at https://datatracker.ietf.org/doc/html/rfc1951 * * A description of the Rabin and Karp algorithm is given in the book * "Algorithms" by R. Sedgewick, Addison-Wesley, p252. @@ -48,11 +48,30 @@ */ /* @(#) $Id$ */ - +#include #include "deflate.h" +#include "cpu_features.h" + +#if defined(DEFLATE_SLIDE_HASH_SSE2) || defined(DEFLATE_SLIDE_HASH_NEON) +#include "slide_hash_simd.h" +#endif + +#include "compare256.h" + +#if defined(QAT_COMPRESSION_ENABLED) +#include "contrib/qat/deflate_qat.h" +#endif + +#include "contrib/optimizations/insert_string.h" + +#ifdef FASTEST +/* See http://crbug.com/1113596 */ +#error "FASTEST is not supported in Chromium's zlib." +#endif + const char deflate_copyright[] = - " deflate 1.3.1 Copyright 1995-2024 Jean-loup Gailly and Mark Adler "; + " deflate 1.3.2.1 Copyright 1995-2026 Jean-loup Gailly and Mark Adler "; /* If you use the zlib library in a product, an acknowledgment is welcome in the documentation of your product. If for some reason you cannot @@ -78,6 +97,11 @@ local block_state deflate_slow(deflate_state *s, int flush); local block_state deflate_rle(deflate_state *s, int flush); local block_state deflate_huff(deflate_state *s, int flush); +/* From crc32.c */ +extern void ZLIB_INTERNAL crc_reset(deflate_state *const s); +extern void ZLIB_INTERNAL crc_finalize(deflate_state *const s); +extern void ZLIB_INTERNAL copy_with_crc(z_streamp strm, Bytef *dst, long size); + /* =========================================================================== * Local data */ @@ -132,46 +156,17 @@ local const config configuration_table[10] = { /* rank Z_BLOCK between Z_NO_FLUSH and Z_PARTIAL_FLUSH */ #define RANK(f) (((f) * 2) - ((f) > 4 ? 9 : 0)) -/* =========================================================================== - * Update a hash value with the given input byte - * IN assertion: all calls to UPDATE_HASH are made with consecutive input - * characters, so that a running hash key can be computed from the previous - * key instead of complete recalculation each time. - */ -#define UPDATE_HASH(s,h,c) (h = (((h) << s->hash_shift) ^ (c)) & s->hash_mask) - - -/* =========================================================================== - * Insert string str in the dictionary and set match_head to the previous head - * of the hash chain (the most recent string with same hash key). Return - * the previous length of the hash chain. - * If this file is compiled with -DFASTEST, the compression level is forced - * to 1, and no hash chains are maintained. - * IN assertion: all calls to INSERT_STRING are made with consecutive input - * characters and the first MIN_MATCH bytes of str are valid (except for - * the last MIN_MATCH-1 bytes of the input file). - */ -#ifdef FASTEST -#define INSERT_STRING(s, str, match_head) \ - (UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]), \ - match_head = s->head[s->ins_h], \ - s->head[s->ins_h] = (Pos)(str)) -#else -#define INSERT_STRING(s, str, match_head) \ - (UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]), \ - match_head = s->prev[(str) & s->w_mask] = s->head[s->ins_h], \ - s->head[s->ins_h] = (Pos)(str)) -#endif - /* =========================================================================== * Initialize the hash table (avoiding 64K overflow for 16 bit systems). * prev[] will be initialized on the fly. + * TODO(cavalcantii): optimization opportunity, check comments on: + * https://chromium-review.googlesource.com/c/chromium/src/+/3561506/ */ #define CLEAR_HASH(s) \ do { \ s->head[s->hash_size - 1] = NIL; \ - zmemzero((Bytef *)s->head, \ - (unsigned)(s->hash_size - 1)*sizeof(*s->head)); \ + zmemzero(s->head, (unsigned)(s->hash_size - 1)*sizeof(*s->head)); \ + s->slid = 0; \ } while (0) /* =========================================================================== @@ -185,6 +180,12 @@ local const config configuration_table[10] = { # endif #endif local void slide_hash(deflate_state *s) { +#if defined(DEFLATE_SLIDE_HASH_SSE2) || defined(DEFLATE_SLIDE_HASH_NEON) + slide_hash_simd(s->head, s->prev, s->w_size, s->hash_size); + s->slid = 1; + return; +#endif + unsigned n, m; Posf *p; uInt wsize = s->w_size; @@ -195,8 +196,8 @@ local void slide_hash(deflate_state *s) { m = *--p; *p = (Pos)(m >= wsize ? m - wsize : NIL); } while (--n); - n = wsize; #ifndef FASTEST + n = wsize; p = &s->prev[n]; do { m = *--p; @@ -206,6 +207,7 @@ local void slide_hash(deflate_state *s) { */ } while (--n); #endif + s->slid = 1; } /* =========================================================================== @@ -223,15 +225,19 @@ local unsigned read_buf(z_streamp strm, Bytef *buf, unsigned size) { strm->avail_in -= len; - zmemcpy(buf, strm->next_in, len); - if (strm->state->wrap == 1) { - strm->adler = adler32(strm->adler, buf, len); - } + /* TODO(cavalcantii): verify if we can remove 'copy_with_crc', it is legacy + * of the Intel optimizations dating back to 2015. + */ #ifdef GZIP - else if (strm->state->wrap == 2) { - strm->adler = crc32(strm->adler, buf, len); - } + if (strm->state->wrap == 2) + copy_with_crc(strm, buf, len); + else #endif + { + zmemcpy(buf, strm->next_in, len); + if (strm->state->wrap == 1) + strm->adler = adler32(strm->adler, buf, len); + } strm->next_in += len; strm->total_in += len; @@ -259,7 +265,14 @@ local void fill_window(deflate_state *s) { more = (unsigned)(s->window_size -(ulg)s->lookahead -(ulg)s->strstart); /* Deal with !@#$% 64K limit: */ +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable: 4127) +#endif if (sizeof(int) <= 2) { +#ifdef _MSC_VER +#pragma warning(pop) +#endif if (more == 0 && s->strstart == 0 && s->lookahead == 0) { more = wsize; @@ -303,6 +316,20 @@ local void fill_window(deflate_state *s) { n = read_buf(s->strm, s->window + s->strstart + s->lookahead, more); s->lookahead += n; + /* Initialize the hash value now that we have some input: */ + if (s->chromium_zlib_hash) { + /* chromium hash reads 4 bytes */ + if (s->lookahead + s->insert > MIN_MATCH) { + uInt str = s->strstart - s->insert; + while (s->insert) { + insert_string(s, str); + str++; + s->insert--; + if (s->lookahead + s->insert <= MIN_MATCH) + break; + } + } + } else /* Initialize the hash value now that we have some input: */ if (s->lookahead + s->insert >= MIN_MATCH) { uInt str = s->strstart - s->insert; @@ -375,6 +402,8 @@ int ZEXPORT deflateInit_(z_streamp strm, int level, const char *version, /* To do: ignore strm->next_in if we use it as window */ } +#define WINDOW_PADDING 8 + /* ========================================================================= */ int ZEXPORT deflateInit2_(z_streamp strm, int level, int method, int windowBits, int memLevel, int strategy, @@ -383,6 +412,15 @@ int ZEXPORT deflateInit2_(z_streamp strm, int level, int method, int wrap = 1; static const char my_version[] = ZLIB_VERSION; + // Needed to activate optimized insert_string() that helps compression + // for all wrapper formats (e.g. RAW, ZLIB, GZIP). + // Feature detection is not triggered while using RAW mode (i.e. we never + // call crc32() with a NULL buffer). +#if defined(CRC32_ARMV8_CRC32) || defined(CRC32_SIMD_SSE42_PCLMUL) \ + || defined(RISCV_RVV) + cpu_check_features(); +#endif + if (version == Z_NULL || version[0] != my_version[0] || stream_size != sizeof(z_stream)) { return Z_VERSION_ERROR; @@ -431,6 +469,7 @@ int ZEXPORT deflateInit2_(z_streamp strm, int level, int method, if (windowBits == 8) windowBits = 9; /* until 256-byte window bug fixed */ s = (deflate_state *) ZALLOC(strm, 1, sizeof(deflate_state)); if (s == Z_NULL) return Z_MEM_ERROR; + zmemzero(s, sizeof(deflate_state)); strm->state = (struct internal_state FAR *)s; s->strm = strm; s->status = INIT_STATE; /* to pass state test in deflateReset() */ @@ -441,12 +480,23 @@ int ZEXPORT deflateInit2_(z_streamp strm, int level, int method, s->w_size = 1 << s->w_bits; s->w_mask = s->w_size - 1; - s->hash_bits = (uInt)memLevel + 7; + s->chromium_zlib_hash = 1; +#if defined(USE_ZLIB_RABIN_KARP_ROLLING_HASH) + s->chromium_zlib_hash = 0; +#endif + + s->hash_bits = memLevel + 7; + if (s->chromium_zlib_hash && s->hash_bits < 15) { + s->hash_bits = 15; + } + s->hash_size = 1 << s->hash_bits; s->hash_mask = s->hash_size - 1; s->hash_shift = ((s->hash_bits + MIN_MATCH-1) / MIN_MATCH); - s->window = (Bytef *) ZALLOC(strm, s->w_size, 2*sizeof(Byte)); + s->window = (Bytef *) ZALLOC(strm, + s->w_size + WINDOW_PADDING, + 2*sizeof(Byte)); s->prev = (Posf *) ZALLOC(strm, s->w_size, sizeof(Pos)); s->head = (Posf *) ZALLOC(strm, s->hash_size, sizeof(Pos)); @@ -492,8 +542,11 @@ int ZEXPORT deflateInit2_(z_streamp strm, int level, int method, * the compressed data for a dynamic block also cannot overwrite the * symbols from which it is being constructed. */ - - s->pending_buf = (uchf *) ZALLOC(strm, s->lit_bufsize, LIT_BUFS); +#ifdef LIT_MEM + s->pending_buf = (uchf *) ZALLOC(strm, s->lit_bufsize, 5); +#else + s->pending_buf = (uchf *) ZALLOC(strm, s->lit_bufsize, 4); +#endif s->pending_buf_size = (ulg)s->lit_bufsize * 4; if (s->window == Z_NULL || s->prev == Z_NULL || s->head == Z_NULL || @@ -503,6 +556,13 @@ int ZEXPORT deflateInit2_(z_streamp strm, int level, int method, deflateEnd (strm); return Z_MEM_ERROR; } + /* Avoid use of unitialized values in the window, see crbug.com/1137613 and + * crbug.com/1144420 */ + zmemzero(s->window, (s->w_size + WINDOW_PADDING) * (2 * sizeof(Byte))); + /* Avoid use of uninitialized value, see: + * https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11360 + */ + zmemzero(s->prev, s->w_size * sizeof(Pos)); #ifdef LIT_MEM s->d_buf = (ushf *)(s->pending_buf + (s->lit_bufsize << 1)); s->l_buf = s->pending_buf + (s->lit_bufsize << 2); @@ -520,6 +580,13 @@ int ZEXPORT deflateInit2_(z_streamp strm, int level, int method, s->strategy = strategy; s->method = (Byte)method; +#if defined(QAT_COMPRESSION_ENABLED) + s->qat_s = NULL; + if (s->level && qat_deflate_init() == Z_OK) { + s->qat_s = qat_deflate_state_init(s->level, s->wrap); + } +#endif + return deflateReset(strm); } @@ -589,11 +656,7 @@ int ZEXPORT deflateSetDictionary(z_streamp strm, const Bytef *dictionary, str = s->strstart; n = s->lookahead - (MIN_MATCH-1); do { - UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); -#ifndef FASTEST - s->prev[str & s->w_mask] = s->head[s->ins_h]; -#endif - s->head[s->ins_h] = (Pos)str; + insert_string(s, str); str++; } while (--n); s->strstart = str; @@ -712,10 +775,23 @@ int ZEXPORT deflateSetHeader(z_streamp strm, gz_headerp head) { /* ========================================================================= */ int ZEXPORT deflatePending(z_streamp strm, unsigned *pending, int *bits) { if (deflateStateCheck(strm)) return Z_STREAM_ERROR; - if (pending != Z_NULL) - *pending = strm->state->pending; if (bits != Z_NULL) *bits = strm->state->bi_valid; + if (pending != Z_NULL) { + *pending = (unsigned)strm->state->pending; + if (*pending != strm->state->pending) { + *pending = (unsigned)-1; + return Z_BUF_ERROR; + } + } + return Z_OK; +} + +/* ========================================================================= */ +int ZEXPORT deflateUsed(z_streamp strm, int *bits) { + if (deflateStateCheck(strm)) return Z_STREAM_ERROR; + if (bits != Z_NULL) + *bits = strm->state->bi_used; return Z_OK; } @@ -739,7 +815,11 @@ int ZEXPORT deflatePrime(z_streamp strm, int bits, int value) { put = Buf_size - s->bi_valid; if (put > bits) put = bits; +#if defined(DEFLATE_CHUNK_WRITE_64LE) + s->bi_buf |= (uint64_t)((value & ((1ULL << put) - 1)) << s->bi_valid); +#else s->bi_buf |= (ush)((value & ((1 << put) - 1)) << s->bi_valid); +#endif /* DEFLATE_CHUNK_WRITE_64LE */ s->bi_valid += put; _tr_flush_bits(s); value >>= put; @@ -831,28 +911,34 @@ int ZEXPORT deflateTune(z_streamp strm, int good_length, int max_lazy, * * Shifts are used to approximate divisions, for speed. */ -uLong ZEXPORT deflateBound(z_streamp strm, uLong sourceLen) { +z_size_t ZEXPORT deflateBound_z(z_streamp strm, z_size_t sourceLen) { deflate_state *s; - uLong fixedlen, storelen, wraplen; + z_size_t fixedlen, storelen, wraplen, bound; /* upper bound for fixed blocks with 9-bit literals and length 255 (memLevel == 2, which is the lowest that may not use stored blocks) -- ~13% overhead plus a small constant */ fixedlen = sourceLen + (sourceLen >> 3) + (sourceLen >> 8) + (sourceLen >> 9) + 4; + if (fixedlen < sourceLen) + fixedlen = (z_size_t)-1; /* upper bound for stored blocks with length 127 (memLevel == 1) -- ~4% overhead plus a small constant */ storelen = sourceLen + (sourceLen >> 5) + (sourceLen >> 7) + (sourceLen >> 11) + 7; + if (storelen < sourceLen) + storelen = (z_size_t)-1; - /* if can't get parameters, return larger bound plus a zlib wrapper */ - if (deflateStateCheck(strm)) - return (fixedlen > storelen ? fixedlen : storelen) + 6; + /* if can't get parameters, return larger bound plus a wrapper */ + if (deflateStateCheck(strm)) { + bound = fixedlen > storelen ? fixedlen : storelen; + return bound + 18 < bound ? (z_size_t)-1 : bound + 18; + } /* compute wrapper length */ s = strm->state; - switch (s->wrap) { + switch (s->wrap < 0 ? -s->wrap : s->wrap) { case 0: /* raw deflate */ wraplen = 0; break; @@ -882,18 +968,33 @@ uLong ZEXPORT deflateBound(z_streamp strm, uLong sourceLen) { break; #endif default: /* for compiler happiness */ - wraplen = 6; + wraplen = 18; + } + + /* With Chromium's hashing, s->hash_bits may not correspond to the + memLevel, making the computations below incorrect. Return the + conservative bound. */ + if (s->chromium_zlib_hash) { + bound = fixedlen > storelen ? fixedlen : storelen; + return bound + wraplen < bound ? (z_size_t)-1 : bound + wraplen; } /* if not default parameters, return one of the conservative bounds */ - if (s->w_bits != 15 || s->hash_bits != 8 + 7) - return (s->w_bits <= s->hash_bits && s->level ? fixedlen : storelen) + - wraplen; + if (s->w_bits != 15 || s->hash_bits != 8 + 7) { + bound = s->w_bits <= s->hash_bits && s->level ? fixedlen : + storelen; + return bound + wraplen < bound ? (z_size_t)-1 : bound + wraplen; + } /* default settings: return tight bound for that case -- ~0.03% overhead plus a small constant */ - return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + - (sourceLen >> 25) + 13 - 6 + wraplen; + bound = sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + + (sourceLen >> 25) + 13 - 6 + wraplen; + return bound < sourceLen ? (z_size_t)-1 : bound; +} +uLong ZEXPORT deflateBound(z_streamp strm, uLong sourceLen) { + z_size_t bound = deflateBound_z(strm, sourceLen); + return (uLong)bound != bound ? (uLong)-1 : (uLong)bound; } /* ========================================================================= @@ -916,9 +1017,15 @@ local void flush_pending(z_streamp strm) { unsigned len; deflate_state *s = strm->state; +#if defined(QAT_COMPRESSION_ENABLED) + if (s->qat_s) { + qat_flush_pending(s); + } +#endif + _tr_flush_bits(s); - len = s->pending; - if (len > strm->avail_out) len = strm->avail_out; + len = s->pending > strm->avail_out ? strm->avail_out : + (unsigned)s->pending; if (len == 0) return; zmemcpy(strm->next_out, s->pending_out, len); @@ -938,8 +1045,8 @@ local void flush_pending(z_streamp strm) { #define HCRC_UPDATE(beg) \ do { \ if (s->gzhead->hcrc && s->pending > (beg)) \ - strm->adler = crc32(strm->adler, s->pending_buf + (beg), \ - s->pending - (beg)); \ + strm->adler = crc32_z(strm->adler, s->pending_buf + (beg), \ + s->pending - (beg)); \ } while (0) /* ========================================================================= */ @@ -1030,7 +1137,7 @@ int ZEXPORT deflate(z_streamp strm, int flush) { #ifdef GZIP if (s->status == GZIP_STATE) { /* gzip header */ - strm->adler = crc32(0L, Z_NULL, 0); + crc_reset(s); put_byte(s, 31); put_byte(s, 139); put_byte(s, 8); @@ -1073,8 +1180,8 @@ int ZEXPORT deflate(z_streamp strm, int flush) { put_byte(s, (s->gzhead->extra_len >> 8) & 0xff); } if (s->gzhead->hcrc) - strm->adler = crc32(strm->adler, s->pending_buf, - s->pending); + strm->adler = crc32_z(strm->adler, s->pending_buf, + s->pending); s->gzindex = 0; s->status = EXTRA_STATE; } @@ -1082,9 +1189,9 @@ int ZEXPORT deflate(z_streamp strm, int flush) { if (s->status == EXTRA_STATE) { if (s->gzhead->extra != Z_NULL) { ulg beg = s->pending; /* start of bytes to update crc */ - uInt left = (s->gzhead->extra_len & 0xffff) - s->gzindex; + ulg left = (s->gzhead->extra_len & 0xffff) - s->gzindex; while (s->pending + left > s->pending_buf_size) { - uInt copy = s->pending_buf_size - s->pending; + ulg copy = s->pending_buf_size - s->pending; zmemcpy(s->pending_buf + s->pending, s->gzhead->extra + s->gzindex, copy); s->pending = s->pending_buf_size; @@ -1231,6 +1338,7 @@ int ZEXPORT deflate(z_streamp strm, int flush) { /* Write the trailer */ #ifdef GZIP if (s->wrap == 2) { + crc_finalize(s); put_byte(s, (Byte)(strm->adler & 0xff)); put_byte(s, (Byte)((strm->adler >> 8) & 0xff)); put_byte(s, (Byte)((strm->adler >> 16) & 0xff)); @@ -1268,6 +1376,12 @@ int ZEXPORT deflateEnd(z_streamp strm) { TRY_FREE(strm, strm->state->prev); TRY_FREE(strm, strm->state->window); +#if defined(QAT_COMPRESSION_ENABLED) + if (strm->state->qat_s) { + qat_deflate_state_free(strm->state); + } +#endif + ZFREE(strm, strm->state); strm->state = Z_NULL; @@ -1295,18 +1409,25 @@ int ZEXPORT deflateCopy(z_streamp dest, z_streamp source) { ss = source->state; - zmemcpy((voidpf)dest, (voidpf)source, sizeof(z_stream)); + zmemcpy(dest, source, sizeof(z_stream)); ds = (deflate_state *) ZALLOC(dest, 1, sizeof(deflate_state)); if (ds == Z_NULL) return Z_MEM_ERROR; + zmemzero(ds, sizeof(deflate_state)); dest->state = (struct internal_state FAR *) ds; - zmemcpy((voidpf)ds, (voidpf)ss, sizeof(deflate_state)); + zmemcpy(ds, ss, sizeof(deflate_state)); ds->strm = dest; - ds->window = (Bytef *) ZALLOC(dest, ds->w_size, 2*sizeof(Byte)); + ds->window = (Bytef *) ZALLOC(dest, + ds->w_size + WINDOW_PADDING, + 2*sizeof(Byte)); ds->prev = (Posf *) ZALLOC(dest, ds->w_size, sizeof(Pos)); ds->head = (Posf *) ZALLOC(dest, ds->hash_size, sizeof(Pos)); - ds->pending_buf = (uchf *) ZALLOC(dest, ds->lit_bufsize, LIT_BUFS); +#ifdef LIT_MEM + ds->pending_buf = (uchf *) ZALLOC(dest, ds->lit_bufsize, 5); +#else + ds->pending_buf = (uchf *) ZALLOC(dest, ds->lit_bufsize, 4); +#endif if (ds->window == Z_NULL || ds->prev == Z_NULL || ds->head == Z_NULL || ds->pending_buf == Z_NULL) { @@ -1314,23 +1435,36 @@ int ZEXPORT deflateCopy(z_streamp dest, z_streamp source) { return Z_MEM_ERROR; } /* following zmemcpy do not work for 16-bit MSDOS */ - zmemcpy(ds->window, ss->window, ds->w_size * 2 * sizeof(Byte)); - zmemcpy((voidpf)ds->prev, (voidpf)ss->prev, ds->w_size * sizeof(Pos)); - zmemcpy((voidpf)ds->head, (voidpf)ss->head, ds->hash_size * sizeof(Pos)); - zmemcpy(ds->pending_buf, ss->pending_buf, ds->lit_bufsize * LIT_BUFS); + zmemcpy(ds->window, ss->window, ss->high_water); + zmemcpy(ds->prev, ss->prev, + (ss->slid || ss->strstart - ss->insert > ds->w_size ? ds->w_size : + ss->strstart - ss->insert) * sizeof(Pos)); + zmemcpy(ds->head, ss->head, ds->hash_size * sizeof(Pos)); ds->pending_out = ds->pending_buf + (ss->pending_out - ss->pending_buf); + zmemcpy(ds->pending_out, ss->pending_out, ss->pending); #ifdef LIT_MEM ds->d_buf = (ushf *)(ds->pending_buf + (ds->lit_bufsize << 1)); ds->l_buf = ds->pending_buf + (ds->lit_bufsize << 2); + zmemcpy(ds->d_buf, ss->d_buf, ss->sym_next * sizeof(ush)); + zmemcpy(ds->l_buf, ss->l_buf, ss->sym_next); #else ds->sym_buf = ds->pending_buf + ds->lit_bufsize; + zmemcpy(ds->sym_buf, ss->sym_buf, ss->sym_next); #endif ds->l_desc.dyn_tree = ds->dyn_ltree; ds->d_desc.dyn_tree = ds->dyn_dtree; ds->bl_desc.dyn_tree = ds->bl_tree; +#if defined(QAT_COMPRESSION_ENABLED) + if(ss->qat_s) { + ds->qat_s = qat_deflate_copy(ss); + if (!ds->qat_s) + return Z_MEM_ERROR; + } +#endif + return Z_OK; #endif /* MAXSEG_64K */ } @@ -1347,9 +1481,9 @@ int ZEXPORT deflateCopy(z_streamp dest, z_streamp source) { */ local uInt longest_match(deflate_state *s, IPos cur_match) { unsigned chain_length = s->max_chain_length;/* max hash chain length */ - register Bytef *scan = s->window + s->strstart; /* current string */ - register Bytef *match; /* matched string */ - register int len; /* length of current match */ + Bytef *scan = s->window + s->strstart; /* current string */ + Bytef *match; /* matched string */ + int len; /* length of current match */ int best_len = (int)s->prev_length; /* best match length so far */ int nice_match = s->nice_match; /* stop if match long enough */ IPos limit = s->strstart > (IPos)MAX_DIST(s) ? @@ -1360,17 +1494,23 @@ local uInt longest_match(deflate_state *s, IPos cur_match) { Posf *prev = s->prev; uInt wmask = s->w_mask; -#ifdef UNALIGNED_OK +#if defined(DEFLATE_COMPARE256_64LE) + /* Quickly reject non-matches with the 2-byte prefilter + * (scan_start/scan_end); candidates that pass are extended 8 bytes at a + * time with compare256(). */ + uInt scan_start = read16(scan); + uInt scan_end = read16(scan + best_len - 1); +#elif defined(UNALIGNED_OK) /* Compare two bytes at a time. Note: this is not always beneficial. * Try with and without -DUNALIGNED_OK to check. */ - register Bytef *strend = s->window + s->strstart + MAX_MATCH - 1; - register ush scan_start = *(ushf*)scan; - register ush scan_end = *(ushf*)(scan + best_len - 1); + Bytef *strend = s->window + s->strstart + MAX_MATCH - 1; + ush scan_start = *(ushf*)scan; + ush scan_end = *(ushf*)(scan + best_len - 1); #else - register Bytef *strend = s->window + s->strstart + MAX_MATCH; - register Byte scan_end1 = scan[best_len - 1]; - register Byte scan_end = scan[best_len]; + Bytef *strend = s->window + s->strstart + MAX_MATCH; + Byte scan_end1 = scan[best_len - 1]; + Byte scan_end = scan[best_len]; #endif /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. @@ -1402,7 +1542,13 @@ local uInt longest_match(deflate_state *s, IPos cur_match) { * However the length of the match is limited to the lookahead, so * the output of deflate is not affected by the uninitialized values. */ -#if (defined(UNALIGNED_OK) && MAX_MATCH == 258) +#if defined(DEFLATE_COMPARE256_64LE) + if (read16(match + best_len - 1) != scan_end || + read16(match) != scan_start) continue; + /* scan_start matched, so bytes 0..1 are equal; compare the remaining + * up to 256 bytes so the length can still reach MAX_MATCH (258). */ + len = 2 + compare256(scan + 2, match + 2); +#elif (defined(UNALIGNED_OK) && MAX_MATCH == 258) /* This code assumes sizeof(unsigned short) == 2. Do not use * UNALIGNED_OK if your compiler uses a different size. */ @@ -1418,7 +1564,16 @@ local uInt longest_match(deflate_state *s, IPos cur_match) { * necessary to put more guard bytes at the end of the window, or * to check more often for insufficient lookahead. */ - Assert(scan[2] == match[2], "scan[2]?"); + if (!s->chromium_zlib_hash) { + Assert(scan[2] == match[2], "scan[2]?"); + } else { + /* When using CRC hashing, scan[2] and match[2] may mismatch, but in + * that case at least one of the other hashed bytes will mismatch + * also. Bytes 0 and 1 were already checked above, and we know there + * are at least four bytes to check otherwise the mismatch would have + * been found by the scan_end comparison above, so: */ + Assert(scan[2] == match[2] || scan[3] != match[3], "scan[2]??"); + } scan++, match++; do { } while (*(ushf*)(scan += 2) == *(ushf*)(match += 2) && @@ -1429,7 +1584,7 @@ local uInt longest_match(deflate_state *s, IPos cur_match) { /* The funny "do {}" generates better code on most compilers */ /* Here, scan <= window + strstart + 257 */ - Assert(scan <= s->window + (unsigned)(s->window_size - 1), + Assert(scan <= s->window+(unsigned)(s->window_size - 1), "wild scan"); if (*scan == *match) scan++; @@ -1438,10 +1593,10 @@ local uInt longest_match(deflate_state *s, IPos cur_match) { #else /* UNALIGNED_OK */ - if (match[best_len] != scan_end || + if (match[best_len] != scan_end || match[best_len - 1] != scan_end1 || - *match != *scan || - *++match != scan[1]) continue; + *match != *scan || + *++match != scan[1]) continue; /* The check at best_len - 1 can be removed because it will be made * again later. (This heuristic is not always a win.) @@ -1450,7 +1605,16 @@ local uInt longest_match(deflate_state *s, IPos cur_match) { * the hash keys are equal and that HASH_BITS >= 8. */ scan += 2, match++; - Assert(*scan == *match, "match[2]?"); + if (!s->chromium_zlib_hash) { + Assert(*scan == *match, "match[2]?"); + } else { + /* When using CRC hashing, scan[2] and match[2] may mismatch, but in + * that case at least one of the other hashed bytes will mismatch + * also. Bytes 0 and 1 were already checked above, and we know there + * are at least four bytes to check otherwise the mismatch would have + * been found by the scan_end comparison above, so: */ + Assert(*scan == *match || scan[1] != match[1], "match[2]??"); + } /* We check for insufficient lookahead only every 8th comparison; * the 256th check will be made at strstart + 258. @@ -1474,7 +1638,9 @@ local uInt longest_match(deflate_state *s, IPos cur_match) { s->match_start = cur_match; best_len = len; if (len >= nice_match) break; -#ifdef UNALIGNED_OK +#if defined(DEFLATE_COMPARE256_64LE) + scan_end = read16(scan + best_len - 1); +#elif defined(UNALIGNED_OK) scan_end = *(ushf*)(scan + best_len - 1); #else scan_end1 = scan[best_len - 1]; @@ -1494,10 +1660,10 @@ local uInt longest_match(deflate_state *s, IPos cur_match) { * Optimized version for FASTEST only */ local uInt longest_match(deflate_state *s, IPos cur_match) { - register Bytef *scan = s->window + s->strstart; /* current string */ - register Bytef *match; /* matched string */ - register int len; /* length of current match */ - register Bytef *strend = s->window + s->strstart + MAX_MATCH; + Bytef *scan = s->window + s->strstart; /* current string */ + Bytef *match; /* matched string */ + int len; /* length of current match */ + Bytef *strend = s->window + s->strstart + MAX_MATCH; /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. * It is easy to get rid of this optimization if necessary. @@ -1557,7 +1723,7 @@ local uInt longest_match(deflate_state *s, IPos cur_match) { local void check_match(deflate_state *s, IPos start, IPos match, int length) { /* check that the match is indeed a match */ Bytef *back = s->window + (int)match, *here = s->window + start; - IPos len = length; + IPos len = (IPos)length; if (match == (IPos)-1) { /* match starts one byte before the current window -- just compare the subsequent length-1 bytes */ @@ -1629,13 +1795,14 @@ local block_state deflate_stored(deflate_state *s, int flush) { * this is 32K. This can be as small as 507 bytes for memLevel == 1. For * large input and output buffers, the stored block size will be larger. */ - unsigned min_block = MIN(s->pending_buf_size - 5, s->w_size); + unsigned min_block = (unsigned)(MIN(s->pending_buf_size - 5, s->w_size)); /* Copy as many min_block or larger stored blocks directly to next_out as * possible. If flushing, copy the remaining available input to next_out as * stored blocks, if there is enough space. */ - unsigned len, left, have, last = 0; + int last = 0; + unsigned len, left, have; unsigned used = s->strm->avail_in; do { /* Set len to the maximum size block that we can copy directly with the @@ -1643,12 +1810,12 @@ local block_state deflate_stored(deflate_state *s, int flush) { * would be copied from what's left in the window. */ len = MAX_STORED; /* maximum deflate stored block length */ - have = (s->bi_valid + 42) >> 3; /* number of header bytes */ + have = ((unsigned)s->bi_valid + 42) >> 3; /* bytes in header */ if (s->strm->avail_out < have) /* need room for header */ break; /* maximum stored block length that will fit in avail_out: */ have = s->strm->avail_out - have; - left = s->strstart - s->block_start; /* bytes left in window */ + left = (unsigned)(s->strstart - s->block_start); /* window bytes */ if (len > (ulg)left + s->strm->avail_in) len = left + s->strm->avail_in; /* limit len to the input */ if (len > have) @@ -1671,10 +1838,10 @@ local block_state deflate_stored(deflate_state *s, int flush) { _tr_stored_block(s, (char *)0, 0L, last); /* Replace the lengths in the dummy stored block with len. */ - s->pending_buf[s->pending - 4] = len; - s->pending_buf[s->pending - 3] = len >> 8; - s->pending_buf[s->pending - 2] = ~len; - s->pending_buf[s->pending - 1] = ~len >> 8; + s->pending_buf[s->pending - 4] = (Bytef)len; + s->pending_buf[s->pending - 3] = (Bytef)(len >> 8); + s->pending_buf[s->pending - 2] = (Bytef)~len; + s->pending_buf[s->pending - 1] = (Bytef)(~len >> 8); /* Write the stored block header bytes. */ flush_pending(s->strm); @@ -1745,8 +1912,10 @@ local block_state deflate_stored(deflate_state *s, int flush) { s->high_water = s->strstart; /* If the last block was written to next_out, then done. */ - if (last) + if (last) { + s->bi_used = 8; return finish_done; + } /* If flushing and all input has been consumed, then done. */ if (flush != Z_NO_FLUSH && flush != Z_FINISH && @@ -1754,7 +1923,7 @@ local block_state deflate_stored(deflate_state *s, int flush) { return block_done; /* Fill the window with any remaining input. */ - have = s->window_size - s->strstart; + have = (unsigned)(s->window_size - s->strstart); if (s->strm->avail_in > have && s->block_start >= (long)s->w_size) { /* Slide the window down. */ s->block_start -= s->w_size; @@ -1781,11 +1950,11 @@ local block_state deflate_stored(deflate_state *s, int flush) { * have enough input for a worthy block, or if flushing and there is enough * room for the remaining input as a stored block in the pending buffer. */ - have = (s->bi_valid + 42) >> 3; /* number of header bytes */ + have = ((unsigned)s->bi_valid + 42) >> 3; /* bytes in header */ /* maximum stored block length that will fit in pending: */ - have = MIN(s->pending_buf_size - have, MAX_STORED); + have = (unsigned)MIN(s->pending_buf_size - have, MAX_STORED); min_block = MIN(have, s->w_size); - left = s->strstart - s->block_start; + left = (unsigned)(s->strstart - s->block_start); if (left >= min_block || ((left || flush == Z_FINISH) && flush != Z_NO_FLUSH && s->strm->avail_in == 0 && left <= have)) { @@ -1798,6 +1967,8 @@ local block_state deflate_stored(deflate_state *s, int flush) { } /* We've done all we can with the available input and output. */ + if (last) + s->bi_used = 8; return last ? finish_started : need_more; } @@ -1812,6 +1983,24 @@ local block_state deflate_fast(deflate_state *s, int flush) { IPos hash_head; /* head of the hash chain */ int bflush; /* set if current block must be flushed */ +#if defined(QAT_COMPRESSION_ENABLED) + if (s->qat_s) { + qat_block_state qat_block = qat_deflate_step(s, flush); + switch (qat_block) { + case qat_block_need_more: + return need_more; + case qat_block_done: + return block_done; + case qat_block_finish_started: + return finish_started; + case qat_block_finish_done: + return finish_done; + case qat_failure: + break; + } + } +#endif + for (;;) { /* Make sure that we always have enough lookahead, except * at the end of the input file. We need MAX_MATCH bytes @@ -1831,7 +2020,7 @@ local block_state deflate_fast(deflate_state *s, int flush) { */ hash_head = NIL; if (s->lookahead >= MIN_MATCH) { - INSERT_STRING(s, s->strstart, hash_head); + hash_head = insert_string(s, s->strstart); } /* Find the longest match, discarding those <= prev_length. @@ -1846,7 +2035,7 @@ local block_state deflate_fast(deflate_state *s, int flush) { /* longest_match() sets match_start */ } if (s->match_length >= MIN_MATCH) { - check_match(s, s->strstart, s->match_start, s->match_length); + check_match(s, s->strstart, s->match_start, (int)s->match_length); _tr_tally_dist(s, s->strstart - s->match_start, s->match_length - MIN_MATCH, bflush); @@ -1862,7 +2051,7 @@ local block_state deflate_fast(deflate_state *s, int flush) { s->match_length--; /* string at strstart already in table */ do { s->strstart++; - INSERT_STRING(s, s->strstart, hash_head); + hash_head = insert_string(s, s->strstart); /* strstart never exceeds WSIZE-MAX_MATCH, so there are * always MIN_MATCH bytes ahead. */ @@ -1873,14 +2062,17 @@ local block_state deflate_fast(deflate_state *s, int flush) { { s->strstart += s->match_length; s->match_length = 0; - s->ins_h = s->window[s->strstart]; - UPDATE_HASH(s, s->ins_h, s->window[s->strstart + 1]); + + if (!s->chromium_zlib_hash) { + s->ins_h = s->window[s->strstart]; + UPDATE_HASH(s, s->ins_h, s->window[s->strstart + 1]); #if MIN_MATCH != 3 - Call UPDATE_HASH() MIN_MATCH-3 more times + Call UPDATE_HASH() MIN_MATCH-3 more times #endif - /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not - * matter since it will be recomputed at next deflate call. - */ + /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not + * matter since it will be recomputed at next deflate call. + */ + } } } else { /* No match, output a literal byte */ @@ -1911,6 +2103,24 @@ local block_state deflate_slow(deflate_state *s, int flush) { IPos hash_head; /* head of hash chain */ int bflush; /* set if current block must be flushed */ +#if defined(QAT_COMPRESSION_ENABLED) + if (s->qat_s) { + qat_block_state qat_block = qat_deflate_step(s, flush); + switch (qat_block) { + case qat_block_need_more: + return need_more; + case qat_block_done: + return block_done; + case qat_block_finish_started: + return finish_started; + case qat_block_finish_done: + return finish_done; + case qat_failure: + break; + } + } +#endif + /* Process the input block. */ for (;;) { /* Make sure that we always have enough lookahead, except @@ -1931,7 +2141,7 @@ local block_state deflate_slow(deflate_state *s, int flush) { */ hash_head = NIL; if (s->lookahead >= MIN_MATCH) { - INSERT_STRING(s, s->strstart, hash_head); + hash_head = insert_string(s, s->strstart); } /* Find the longest match, discarding those <= prev_length. @@ -1968,7 +2178,7 @@ local block_state deflate_slow(deflate_state *s, int flush) { uInt max_insert = s->strstart + s->lookahead - MIN_MATCH; /* Do not insert strings in hash table beyond this. */ - check_match(s, s->strstart - 1, s->prev_match, s->prev_length); + check_match(s, s->strstart - 1, s->prev_match, (int)s->prev_length); _tr_tally_dist(s, s->strstart - 1 - s->prev_match, s->prev_length - MIN_MATCH, bflush); @@ -1982,7 +2192,7 @@ local block_state deflate_slow(deflate_state *s, int flush) { s->prev_length -= 2; do { if (++s->strstart <= max_insert) { - INSERT_STRING(s, s->strstart, hash_head); + hash_head = insert_string(s, s->strstart); } } while (--s->prev_length != 0); s->match_available = 0; @@ -2076,7 +2286,7 @@ local block_state deflate_rle(deflate_state *s, int flush) { /* Emit match if have run of MIN_MATCH or longer, else emit literal */ if (s->match_length >= MIN_MATCH) { - check_match(s, s->strstart, s->strstart - 1, s->match_length); + check_match(s, s->strstart, s->strstart - 1, (int)s->match_length); _tr_tally_dist(s, 1, s->match_length - MIN_MATCH, bflush); diff --git a/packages/runtime/vendor/zlib/deflate.h b/packages/runtime/vendor/zlib/deflate.h index 300c6ada6..c55fd8f6a 100644 --- a/packages/runtime/vendor/zlib/deflate.h +++ b/packages/runtime/vendor/zlib/deflate.h @@ -1,5 +1,5 @@ /* deflate.h -- internal compression state - * Copyright (C) 1995-2024 Jean-loup Gailly + * Copyright (C) 1995-2026 Jean-loup Gailly * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -13,6 +13,10 @@ #ifndef DEFLATE_H #define DEFLATE_H +#if defined(DEFLATE_CHUNK_WRITE_64LE) +#include +#endif + #include "zutil.h" /* define NO_GZIP when compiling if you want to disable gzip header and @@ -25,7 +29,7 @@ /* define LIT_MEM to slightly increase the speed of deflate (order 1% to 2%) at the cost of a larger memory footprint */ -/* #define LIT_MEM */ +#define LIT_MEM /* =========================================================================== * Internal compression state. @@ -52,7 +56,11 @@ #define MAX_BITS 15 /* All codes must not exceed MAX_BITS bits */ +#if defined(DEFLATE_CHUNK_WRITE_64LE) +#define Buf_size 64 +#else #define Buf_size 16 +#endif /* size of bit buffer in bi_buf */ #define INIT_STATE 42 /* zlib header -> BUSY_STATE */ @@ -113,8 +121,8 @@ typedef struct internal_state { ulg gzindex; /* where in extra, name, or comment */ Byte method; /* can only be DEFLATED */ int last_flush; /* value of flush param for previous deflate call */ - - /* used by deflate.c: */ + unsigned crc0[4 * 5]; + /* used by deflate.c: */ uInt w_size; /* LZ77 window size (32K by default) */ uInt w_bits; /* log2(w_size) (8..16) */ @@ -222,11 +230,9 @@ typedef struct internal_state { */ #ifdef LIT_MEM -# define LIT_BUFS 5 ushf *d_buf; /* buffer for distances */ uchf *l_buf; /* buffer for literals/lengths */ #else -# define LIT_BUFS 4 uchf *sym_buf; /* buffer for distances and literals/lengths */ #endif @@ -263,7 +269,11 @@ typedef struct internal_state { ulg bits_sent; /* bit length of compressed data sent mod 2^32 */ #endif +#if defined(DEFLATE_CHUNK_WRITE_64LE) + uint64_t bi_buf; +#else ush bi_buf; +#endif /* Output buffer. bits are inserted starting at the bottom (least * significant bits). */ @@ -271,6 +281,9 @@ typedef struct internal_state { /* Number of valid bits in bi_buf. All bits above the last valid bit * are always zero. */ + int bi_used; + /* Last number of used bits when going to a byte boundary. + */ ulg high_water; /* High water mark offset in window for initialized bytes -- bytes above @@ -279,6 +292,21 @@ typedef struct internal_state { * updated to the new high water mark. */ + uInt chromium_zlib_hash; + /* 0 if Rabin-Karp rolling hash is enabled, non-zero if chromium zlib + * hash is enabled. + */ + +#if defined(QAT_COMPRESSION_ENABLED) + /* Pointer to a struct that contains the current state of the QAT + * stream. + */ + struct qat_deflate *qat_s; +#endif + + int slid; + /* True if the hash table has been slid since it was cleared. */ + } FAR deflate_state; /* Output a byte on the stream. @@ -374,4 +402,12 @@ void ZLIB_INTERNAL _tr_stored_block(deflate_state *s, charf *buf, flush = _tr_tally(s, distance, length) #endif +/* Functions that are SIMD optimised on x86 */ +void ZLIB_INTERNAL crc_fold_init(deflate_state* const s); +void ZLIB_INTERNAL crc_fold_copy(deflate_state* const s, + unsigned char* dst, + const unsigned char* src, + long len); +unsigned ZLIB_INTERNAL crc_fold_512to32(deflate_state* const s); + #endif /* DEFLATE_H */ diff --git a/packages/runtime/vendor/zlib/gzguts.h b/packages/runtime/vendor/zlib/gzguts.h index eba72085b..f7946bdc5 100644 --- a/packages/runtime/vendor/zlib/gzguts.h +++ b/packages/runtime/vendor/zlib/gzguts.h @@ -1,5 +1,5 @@ /* gzguts.h -- zlib internal header definitions for gz* operations - * Copyright (C) 2004-2024 Mark Adler + * Copyright (C) 2004-2026 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -17,6 +17,18 @@ # define ZLIB_INTERNAL #endif +#if defined(_WIN32) +# ifndef WIN32_LEAN_AND_MEAN +# define WIN32_LEAN_AND_MEAN +# endif +# ifndef _CRT_SECURE_NO_WARNINGS +# define _CRT_SECURE_NO_WARNINGS +# endif +# ifndef _CRT_NONSTDC_NO_DEPRECATE +# define _CRT_NONSTDC_NO_DEPRECATE +# endif +#endif + #include #include "zlib.h" #ifdef STDC @@ -25,8 +37,8 @@ # include #endif -#ifndef _POSIX_SOURCE -# define _POSIX_SOURCE +#ifndef _POSIX_C_SOURCE +# define _POSIX_C_SOURCE 200112L #endif #include @@ -36,19 +48,13 @@ #if defined(__TURBOC__) || defined(_MSC_VER) || defined(_WIN32) # include +# include #endif -#if defined(_WIN32) +#if defined(_WIN32) && !defined(WIDECHAR) # define WIDECHAR #endif -#ifdef WINAPI_FAMILY -# define open _open -# define read _read -# define write _write -# define close _close -#endif - #ifdef NO_DEFLATE /* for compatibility with old definition */ # define NO_GZCOMPRESS #endif @@ -72,33 +78,28 @@ #endif #ifndef HAVE_VSNPRINTF -# ifdef MSDOS +# if !defined(NO_vsnprintf) && \ + (defined(MSDOS) || defined(__TURBOC__) || defined(__SASC) || \ + defined(VMS) || defined(__OS400) || defined(__MVS__)) /* vsnprintf may exist on some MS-DOS compilers (DJGPP?), but for now we just assume it doesn't. */ # define NO_vsnprintf # endif -# ifdef __TURBOC__ -# define NO_vsnprintf -# endif # ifdef WIN32 /* In Win32, vsnprintf is available as the "non-ANSI" _vsnprintf. */ -# if !defined(vsnprintf) && !defined(NO_vsnprintf) -# if !defined(_MSC_VER) || ( defined(_MSC_VER) && _MSC_VER < 1500 ) -# define vsnprintf _vsnprintf +# if !defined(_MSC_VER) || ( defined(_MSC_VER) && _MSC_VER < 1500 ) +# ifndef vsnprintf +# define vsnprintf _vsnprintf # endif # endif -# endif -# ifdef __SASC -# define NO_vsnprintf -# endif -# ifdef VMS -# define NO_vsnprintf -# endif -# ifdef __OS400__ -# define NO_vsnprintf -# endif -# ifdef __MVS__ -# define NO_vsnprintf +# elif !defined(__STDC_VERSION__) || __STDC_VERSION__-0 < 199901L +/* Otherwise if C89/90, assume no C99 snprintf() or vsnprintf() */ +# ifndef NO_snprintf +# define NO_snprintf +# endif +# ifndef NO_vsnprintf +# define NO_vsnprintf +# endif # endif #endif @@ -135,6 +136,11 @@ # endif #endif +/* some environments don't define EWOULDBLOCK */ +#ifndef EWOULDBLOCK +# define EWOULDBLOCK EAGAIN +#endif + /* provide prototypes for these when building zlib without LFS */ #if !defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0 ZEXTERN gzFile ZEXPORT gzopen64(const char *, const char *); @@ -182,7 +188,9 @@ typedef struct { unsigned char *out; /* output buffer (double-sized when reading) */ int direct; /* 0 if processing gzip, 1 if transparent */ /* just for reading */ + int junk; /* -1 = start, 1 = junk candidate, 0 = in gzip */ int how; /* 0: get header, 1: copy, 2: decompress */ + int again; /* true if EAGAIN or EWOULDBLOCK on last i/o */ z_off64_t start; /* where the gzip data started, for rewinding */ int eof; /* true if end of input file reached */ int past; /* true if read requested past end */ @@ -192,7 +200,6 @@ typedef struct { int reset; /* true if a reset is pending after a Z_FINISH */ /* seek request */ z_off64_t skip; /* amount to skip (already rewound if backwards) */ - int seek; /* true if seek request pending */ /* error information */ int err; /* error code */ char *msg; /* error message */ diff --git a/packages/runtime/vendor/zlib/gzlib.c b/packages/runtime/vendor/zlib/gzlib.c index 983153cc8..2db29c8f0 100644 --- a/packages/runtime/vendor/zlib/gzlib.c +++ b/packages/runtime/vendor/zlib/gzlib.c @@ -1,18 +1,21 @@ /* gzlib.c -- zlib functions common to reading and writing gzip files - * Copyright (C) 2004-2024 Mark Adler + * Copyright (C) 2004-2026 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ #include "gzguts.h" -#if defined(_WIN32) && !defined(__BORLANDC__) +#if defined(__DJGPP__) +# define LSEEK llseek +#elif defined(_WIN32) && !defined(__BORLANDC__) && !defined(UNDER_CE) # define LSEEK _lseeki64 -#else -#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0 +# define OPEN open +#elif defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0 # define LSEEK lseek64 +# define OPEN open64 #else # define LSEEK lseek -#endif +# define OPEN open #endif #if defined UNDER_CE @@ -52,7 +55,7 @@ char ZLIB_INTERNAL *gz_strwinerror(DWORD error) { msgbuf[chars] = 0; } - wcstombs(buf, msgbuf, chars + 1); + wcstombs(buf, msgbuf, chars + 1); /* assumes buf is big enough */ LocalFree(msgbuf); } else { @@ -72,10 +75,12 @@ local void gz_reset(gz_statep state) { state->eof = 0; /* not at end of file */ state->past = 0; /* have not read past end yet */ state->how = LOOK; /* look for gzip header */ + state->junk = -1; /* mark first member */ } else /* for writing ... */ state->reset = 0; /* no deflateReset pending */ - state->seek = 0; /* no seek request pending */ + state->again = 0; /* no stalled i/o yet */ + state->skip = 0; /* no seek request pending */ gz_error(state, Z_OK, NULL); /* clear error */ state->x.pos = 0; /* no uncompressed data yet */ state->strm.avail_in = 0; /* no input data yet */ @@ -85,16 +90,13 @@ local void gz_reset(gz_statep state) { local gzFile gz_open(const void *path, int fd, const char *mode) { gz_statep state; z_size_t len; - int oflag; -#ifdef O_CLOEXEC - int cloexec = 0; -#endif + int oflag = 0; #ifdef O_EXCL int exclusive = 0; #endif /* check input */ - if (path == NULL) + if (path == NULL || mode == NULL) return NULL; /* allocate gzFile structure to return */ @@ -103,6 +105,7 @@ local gzFile gz_open(const void *path, int fd, const char *mode) { return NULL; state->size = 0; /* no buffers allocated yet */ state->want = GZBUFSIZE; /* requested buffer size */ + state->err = Z_OK; /* no error yet */ state->msg = NULL; /* no error message yet */ /* interpret mode */ @@ -133,7 +136,7 @@ local gzFile gz_open(const void *path, int fd, const char *mode) { break; #ifdef O_CLOEXEC case 'e': - cloexec = 1; + oflag |= O_CLOEXEC; break; #endif #ifdef O_EXCL @@ -153,6 +156,14 @@ local gzFile gz_open(const void *path, int fd, const char *mode) { case 'F': state->strategy = Z_FIXED; break; + case 'G': + state->direct = -1; + break; +#ifdef O_NONBLOCK + case 'N': + oflag |= O_NONBLOCK; + break; +#endif case 'T': state->direct = 1; break; @@ -168,22 +179,30 @@ local gzFile gz_open(const void *path, int fd, const char *mode) { return NULL; } - /* can't force transparent read */ + /* direct is 0, 1 if "T", or -1 if "G" (last "G" or "T" wins) */ if (state->mode == GZ_READ) { - if (state->direct) { + if (state->direct == 1) { + /* can't force a transparent read */ free(state); return NULL; } - state->direct = 1; /* for empty file */ + if (state->direct == 0) + /* default when reading is auto-detect of gzip vs. transparent -- + start with a transparent assumption in case of an empty file */ + state->direct = 1; } + else if (state->direct == -1) { + /* "G" has no meaning when writing -- disallow it */ + free(state); + return NULL; + } + /* if reading, direct == 1 for auto-detect, -1 for gzip only; if writing or + appending, direct == 0 for gzip, 1 for transparent (copy in to out) */ /* save the path name for error messages */ #ifdef WIDECHAR - if (fd == -2) { + if (fd == -2) len = wcstombs(NULL, path, 0); - if (len == (z_size_t)-1) - len = 0; - } else #endif len = strlen((const char *)path); @@ -193,29 +212,29 @@ local gzFile gz_open(const void *path, int fd, const char *mode) { return NULL; } #ifdef WIDECHAR - if (fd == -2) + if (fd == -2) { if (len) wcstombs(state->path, path, len + 1); else *(state->path) = 0; + } else #endif + { #if !defined(NO_snprintf) && !defined(NO_vsnprintf) (void)snprintf(state->path, len + 1, "%s", (const char *)path); #else strcpy(state->path, path); #endif + } /* compute the flags for open() */ - oflag = + oflag |= #ifdef O_LARGEFILE O_LARGEFILE | #endif #ifdef O_BINARY O_BINARY | -#endif -#ifdef O_CLOEXEC - (cloexec ? O_CLOEXEC : 0) | #endif (state->mode == GZ_READ ? O_RDONLY : @@ -228,11 +247,23 @@ local gzFile gz_open(const void *path, int fd, const char *mode) { O_APPEND))); /* open the file with the appropriate flags (or just use fd) */ - state->fd = fd > -1 ? fd : ( + if (fd == -1) + state->fd = OPEN((const char *)path, oflag, 0666); #ifdef WIDECHAR - fd == -2 ? _wopen(path, oflag, 0666) : + else if (fd == -2) + state->fd = _wopen(path, oflag, _S_IREAD | _S_IWRITE); #endif - open((const char *)path, oflag, 0666)); + else { +#ifdef O_NONBLOCK + if (oflag & O_NONBLOCK) + fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) | O_NONBLOCK); +#endif +#ifdef O_CLOEXEC + if (oflag & O_CLOEXEC) + fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | O_CLOEXEC); +#endif + state->fd = fd; + } if (state->fd == -1) { free(state->path); free(state); @@ -359,9 +390,10 @@ z_off64_t ZEXPORT gzseek64(gzFile file, z_off64_t offset, int whence) { /* normalize offset to a SEEK_CUR specification */ if (whence == SEEK_SET) offset -= state->x.pos; - else if (state->seek) - offset += state->skip; - state->seek = 0; + else { + offset += state->past ? 0 : state->skip; + state->skip = 0; + } /* if within raw area while reading, just go there */ if (state->mode == GZ_READ && state->how == COPY && @@ -372,7 +404,7 @@ z_off64_t ZEXPORT gzseek64(gzFile file, z_off64_t offset, int whence) { state->x.have = 0; state->eof = 0; state->past = 0; - state->seek = 0; + state->skip = 0; gz_error(state, Z_OK, NULL); state->strm.avail_in = 0; state->x.pos += offset; @@ -401,10 +433,7 @@ z_off64_t ZEXPORT gzseek64(gzFile file, z_off64_t offset, int whence) { } /* request skip (if not zero) */ - if (offset) { - state->seek = 1; - state->skip = offset; - } + state->skip = offset; return state->x.pos + offset; } @@ -428,7 +457,7 @@ z_off64_t ZEXPORT gztell64(gzFile file) { return -1; /* return position */ - return state->x.pos + (state->seek ? state->skip : 0); + return state->x.pos + (state->past ? 0 : state->skip); } /* -- see zlib.h -- */ @@ -535,7 +564,7 @@ void ZLIB_INTERNAL gz_error(gz_statep state, int err, const char *msg) { } /* if fatal, set state->x.have to 0 so that the gzgetc() macro fails */ - if (err != Z_OK && err != Z_BUF_ERROR) + if (err != Z_OK && err != Z_BUF_ERROR && !state->again) state->x.have = 0; /* set error code, and if no message, then done */ @@ -572,6 +601,7 @@ unsigned ZLIB_INTERNAL gz_intmax(void) { return INT_MAX; #else unsigned p = 1, q; + do { q = p; p <<= 1; diff --git a/packages/runtime/vendor/zlib/gzread.c b/packages/runtime/vendor/zlib/gzread.c index 4168cbc88..bf41d63bc 100644 --- a/packages/runtime/vendor/zlib/gzread.c +++ b/packages/runtime/vendor/zlib/gzread.c @@ -1,5 +1,5 @@ /* gzread.c -- zlib functions for reading gzip files - * Copyright (C) 2004-2017 Mark Adler + * Copyright (C) 2004-2026 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -8,23 +8,36 @@ /* Use read() to load a buffer -- return -1 on error, otherwise 0. Read from state->fd, and update state->eof, state->err, and state->msg as appropriate. This function needs to loop on read(), since read() is not guaranteed to - read the number of bytes requested, depending on the type of descriptor. */ + read the number of bytes requested, depending on the type of descriptor. It + also needs to loop to manage the fact that read() returns an int. If the + descriptor is non-blocking and read() returns with no data in order to avoid + blocking, then gz_load() will return 0 if some data has been read, or -1 if + no data has been read. Either way, state->again is set true to indicate a + non-blocking event. If errno is non-zero on return, then there was an error + signaled from read(). *have is set to the number of bytes read. */ local int gz_load(gz_statep state, unsigned char *buf, unsigned len, unsigned *have) { int ret; unsigned get, max = ((unsigned)-1 >> 2) + 1; + state->again = 0; + errno = 0; *have = 0; do { get = len - *have; if (get > max) get = max; - ret = read(state->fd, buf + *have, get); + ret = (int)read(state->fd, buf + *have, get); if (ret <= 0) break; *have += (unsigned)ret; } while (*have < len); if (ret < 0) { + if (errno == EAGAIN || errno == EWOULDBLOCK) { + state->again = 1; + if (*have != 0) + return 0; + } gz_error(state, Z_ERRNO, zstrerror()); return -1; } @@ -50,10 +63,14 @@ local int gz_avail(gz_statep state) { if (strm->avail_in) { /* copy what's there to the start */ unsigned char *p = state->in; unsigned const char *q = strm->next_in; - unsigned n = strm->avail_in; - do { - *p++ = *q++; - } while (--n); + + if (q != p) { + unsigned n = strm->avail_in; + + do { + *p++ = *q++; + } while (--n); + } } if (gz_load(state, state->in + strm->avail_in, state->size - strm->avail_in, &got) == -1) @@ -104,39 +121,44 @@ local int gz_look(gz_statep state) { } } - /* get at least the magic bytes in the input buffer */ - if (strm->avail_in < 2) { - if (gz_avail(state) == -1) - return -1; - if (strm->avail_in == 0) - return 0; - } - - /* look for gzip magic bytes -- if there, do gzip decoding (note: there is - a logical dilemma here when considering the case of a partially written - gzip file, to wit, if a single 31 byte is written, then we cannot tell - whether this is a single-byte file, or just a partially written gzip - file -- for here we assume that if a gzip file is being written, then - the header will be written in a single operation, so that reading a - single byte is sufficient indication that it is not a gzip file) */ - if (strm->avail_in > 1 && - strm->next_in[0] == 31 && strm->next_in[1] == 139) { + /* if transparent reading is disabled, which would only be at the start, or + if we're looking for a gzip member after the first one, which is not at + the start, then proceed directly to look for a gzip member next */ + if (state->direct == -1 || state->junk == 0) { inflateReset(strm); state->how = GZIP; + state->junk = state->junk != -1; state->direct = 0; return 0; } - /* no gzip header -- if we were decoding gzip before, then this is trailing - garbage. Ignore the trailing garbage and finish. */ - if (state->direct == 0) { - strm->avail_in = 0; - state->eof = 1; - state->x.have = 0; + /* otherwise we're at the start with auto-detect -- we check to see if the + first four bytes could be gzip header in order to decide whether or not + this will be a transparent read */ + + /* load any header bytes into the input buffer -- if the input is empty, + then it's not an error as this is a transparent read of zero bytes */ + if (gz_avail(state) == -1) + return -1; + if (strm->avail_in == 0 || (state->again && strm->avail_in < 4)) + /* if non-blocking input stalled before getting four bytes, then + return and wait until a later call has accumulated enough */ + return 0; + + /* see if this is (likely) gzip input -- if the first four bytes are + consistent with a gzip header, then go look for the first gzip member, + otherwise proceed to copy the input transparently */ + if (strm->avail_in > 3 && + strm->next_in[0] == 31 && strm->next_in[1] == 139 && + strm->next_in[2] == 8 && strm->next_in[3] < 32) { + inflateReset(strm); + state->how = GZIP; + state->junk = 1; + state->direct = 0; return 0; } - /* doing raw i/o, copy any leftover input to output -- this assumes that + /* doing raw i/o: copy any leftover input to output -- this assumes that the output buffer is larger than the input buffer, which also assures space for gzungetc() */ state->x.next = state->out; @@ -144,15 +166,17 @@ local int gz_look(gz_statep state) { state->x.have = strm->avail_in; strm->avail_in = 0; state->how = COPY; - state->direct = 1; return 0; } /* Decompress from input to the provided next_out and avail_out in the state. On return, state->x.have and state->x.next point to the just decompressed - data. If the gzip stream completes, state->how is reset to LOOK to look for - the next gzip stream or raw data, once state->x.have is depleted. Returns 0 - on success, -1 on failure. */ + data. If the gzip stream completes, state->how is reset to LOOK to look for + the next gzip stream or raw data, once state->x.have is depleted. Returns 0 + on success, -1 on failure. If EOF is reached when looking for more input to + complete the gzip member, then an unexpected end of file error is raised. + If there is no more input, but state->again is true, then EOF has not been + reached, and no error is raised. */ local int gz_decomp(gz_statep state) { int ret = Z_OK; unsigned had; @@ -162,28 +186,41 @@ local int gz_decomp(gz_statep state) { had = strm->avail_out; do { /* get more input for inflate() */ - if (strm->avail_in == 0 && gz_avail(state) == -1) - return -1; + if (strm->avail_in == 0 && gz_avail(state) == -1) { + ret = state->err; + break; + } if (strm->avail_in == 0) { - gz_error(state, Z_BUF_ERROR, "unexpected end of file"); + if (!state->again) + gz_error(state, Z_BUF_ERROR, "unexpected end of file"); break; } /* decompress and handle errors */ ret = inflate(strm, Z_NO_FLUSH); + if (strm->avail_out < had) + /* any decompressed data marks this as a real gzip stream */ + state->junk = 0; if (ret == Z_STREAM_ERROR || ret == Z_NEED_DICT) { gz_error(state, Z_STREAM_ERROR, "internal error: inflate stream corrupt"); - return -1; + break; } if (ret == Z_MEM_ERROR) { gz_error(state, Z_MEM_ERROR, "out of memory"); - return -1; + break; } if (ret == Z_DATA_ERROR) { /* deflate stream invalid */ + if (state->junk == 1) { /* trailing garbage is ok */ + strm->avail_in = 0; + state->eof = 1; + state->how = LOOK; + ret = Z_OK; + break; + } gz_error(state, Z_DATA_ERROR, strm->msg == NULL ? "compressed data error" : strm->msg); - return -1; + break; } } while (strm->avail_out && ret != Z_STREAM_END); @@ -192,11 +229,14 @@ local int gz_decomp(gz_statep state) { state->x.next = strm->next_out - state->x.have; /* if the gzip stream completed successfully, look for another */ - if (ret == Z_STREAM_END) + if (ret == Z_STREAM_END) { + state->junk = 0; state->how = LOOK; + return 0; + } - /* good decompression */ - return 0; + /* return decompression status */ + return ret != Z_OK ? -1 : 0; } /* Fetch data and put it in the output buffer. Assumes state->x.have is 0. @@ -227,25 +267,31 @@ local int gz_fetch(gz_statep state) { strm->next_out = state->out; if (gz_decomp(state) == -1) return -1; + break; + default: + gz_error(state, Z_STREAM_ERROR, "state corrupt"); + return -1; } } while (state->x.have == 0 && (!state->eof || strm->avail_in)); return 0; } -/* Skip len uncompressed bytes of output. Return -1 on error, 0 on success. */ -local int gz_skip(gz_statep state, z_off64_t len) { +/* Skip state->skip (> 0) uncompressed bytes of output. Return -1 on error, 0 + on success. */ +local int gz_skip(gz_statep state) { unsigned n; /* skip over len bytes or reach end-of-file, whichever comes first */ - while (len) + do { /* skip over whatever is in output buffer */ if (state->x.have) { - n = GT_OFF(state->x.have) || (z_off64_t)state->x.have > len ? - (unsigned)len : state->x.have; + n = GT_OFF(state->x.have) || + (z_off64_t)state->x.have > state->skip ? + (unsigned)state->skip : state->x.have; state->x.have -= n; state->x.next += n; state->x.pos += n; - len -= n; + state->skip -= n; } /* output buffer empty -- return if we're at the end of the input */ @@ -258,30 +304,32 @@ local int gz_skip(gz_statep state, z_off64_t len) { if (gz_fetch(state) == -1) return -1; } + } while (state->skip); return 0; } /* Read len bytes into buf from file, or less than len up to the end of the - input. Return the number of bytes read. If zero is returned, either the - end of file was reached, or there was an error. state->err must be - consulted in that case to determine which. */ + input. Return the number of bytes read. If zero is returned, either the end + of file was reached, or there was an error. state->err must be consulted in + that case to determine which. If there was an error, but some uncompressed + bytes were read before the error, then that count is returned. The error is + still recorded, and so is deferred until the next call. */ local z_size_t gz_read(gz_statep state, voidp buf, z_size_t len) { z_size_t got; unsigned n; + int err; /* if len is zero, avoid unnecessary operations */ if (len == 0) return 0; /* process a skip request */ - if (state->seek) { - state->seek = 0; - if (gz_skip(state, state->skip) == -1) - return 0; - } + if (state->skip && gz_skip(state) == -1) + return 0; /* get len bytes to buf, or less than len if at the end */ got = 0; + err = 0; do { /* set n to the maximum amount of len that fits in an unsigned int */ n = (unsigned)-1; @@ -295,37 +343,36 @@ local z_size_t gz_read(gz_statep state, voidp buf, z_size_t len) { memcpy(buf, state->x.next, n); state->x.next += n; state->x.have -= n; + if (state->err != Z_OK) + /* caught deferred error from gz_fetch() */ + err = -1; } /* output buffer empty -- return if we're at the end of the input */ - else if (state->eof && state->strm.avail_in == 0) { - state->past = 1; /* tried to read past end */ + else if (state->eof && state->strm.avail_in == 0) break; - } /* need output data -- for small len or new stream load up our output - buffer */ + buffer, so that gzgetc() can be fast */ else if (state->how == LOOK || n < (state->size << 1)) { /* get more output, looking for header if required */ - if (gz_fetch(state) == -1) - return 0; + if (gz_fetch(state) == -1 && state->x.have == 0) + /* if state->x.have != 0, error will be caught after copy */ + err = -1; continue; /* no progress yet -- go back to copy above */ /* the copy above assures that we will leave with space in the output buffer, allowing at least one gzungetc() to succeed */ } /* large len -- read directly into user buffer */ - else if (state->how == COPY) { /* read directly */ - if (gz_load(state, (unsigned char *)buf, n, &n) == -1) - return 0; - } + else if (state->how == COPY) /* read directly */ + err = gz_load(state, (unsigned char *)buf, n, &n); /* large len -- decompress directly into user buffer */ else { /* state->how == GZIP */ state->strm.avail_out = n; state->strm.next_out = (unsigned char *)buf; - if (gz_decomp(state) == -1) - return 0; + err = gz_decomp(state); n = state->x.have; state->x.have = 0; } @@ -335,7 +382,11 @@ local z_size_t gz_read(gz_statep state, voidp buf, z_size_t len) { buf = (char *)buf + n; got += n; state->x.pos += n; - } while (len); + } while (len && !err); + + /* note read past eof */ + if (len && state->eof) + state->past = 1; /* return number of bytes read into user buffer */ return got; @@ -345,16 +396,18 @@ local z_size_t gz_read(gz_statep state, voidp buf, z_size_t len) { int ZEXPORT gzread(gzFile file, voidp buf, unsigned len) { gz_statep state; - /* get internal structure */ + /* get internal structure and check that it's for reading */ if (file == NULL) return -1; state = (gz_statep)file; - - /* check that we're reading and that there's no (serious) error */ - if (state->mode != GZ_READ || - (state->err != Z_OK && state->err != Z_BUF_ERROR)) + if (state->mode != GZ_READ) return -1; + /* check that there was no (serious) error */ + if (state->err != Z_OK && state->err != Z_BUF_ERROR && !state->again) + return -1; + gz_error(state, Z_OK, NULL); + /* since an int is returned, make sure len fits in one, otherwise return with an error (this avoids a flaw in the interface) */ if ((int)len < 0) { @@ -366,28 +419,40 @@ int ZEXPORT gzread(gzFile file, voidp buf, unsigned len) { len = (unsigned)gz_read(state, buf, len); /* check for an error */ - if (len == 0 && state->err != Z_OK && state->err != Z_BUF_ERROR) - return -1; + if (len == 0) { + if (state->err != Z_OK && state->err != Z_BUF_ERROR) + return -1; + if (state->again) { + /* non-blocking input stalled after some input was read, but no + uncompressed bytes were produced -- let the application know + this isn't EOF */ + gz_error(state, Z_ERRNO, zstrerror()); + return -1; + } + } - /* return the number of bytes read (this is assured to fit in an int) */ + /* return the number of bytes read */ return (int)len; } /* -- see zlib.h -- */ -z_size_t ZEXPORT gzfread(voidp buf, z_size_t size, z_size_t nitems, gzFile file) { +z_size_t ZEXPORT gzfread(voidp buf, z_size_t size, z_size_t nitems, + gzFile file) { z_size_t len; gz_statep state; - /* get internal structure */ + /* get internal structure and check that it's for reading */ if (file == NULL) return 0; state = (gz_statep)file; - - /* check that we're reading and that there's no (serious) error */ - if (state->mode != GZ_READ || - (state->err != Z_OK && state->err != Z_BUF_ERROR)) + if (state->mode != GZ_READ) return 0; + /* check that there was no (serious) error */ + if (state->err != Z_OK && state->err != Z_BUF_ERROR && !state->again) + return 0; + gz_error(state, Z_OK, NULL); + /* compute bytes to read -- error on overflow */ len = nitems * size; if (size && len / size != nitems) { @@ -404,21 +469,27 @@ z_size_t ZEXPORT gzfread(voidp buf, z_size_t size, z_size_t nitems, gzFile file) # undef z_gzgetc #else # undef gzgetc +# ifdef Z_CR_PREFIX_SET +# define gzgetc Cr_z_gzgetc +# endif #endif + int ZEXPORT gzgetc(gzFile file) { unsigned char buf[1]; gz_statep state; - /* get internal structure */ + /* get internal structure and check that it's for reading */ if (file == NULL) return -1; state = (gz_statep)file; - - /* check that we're reading and that there's no (serious) error */ - if (state->mode != GZ_READ || - (state->err != Z_OK && state->err != Z_BUF_ERROR)) + if (state->mode != GZ_READ) return -1; + /* check that there was no (serious) error */ + if (state->err != Z_OK && state->err != Z_BUF_ERROR && !state->again) + return -1; + gz_error(state, Z_OK, NULL); + /* try output buffer (no need to check for skip request) */ if (state->x.have) { state->x.have--; @@ -438,26 +509,25 @@ int ZEXPORT gzgetc_(gzFile file) { int ZEXPORT gzungetc(int c, gzFile file) { gz_statep state; - /* get internal structure */ + /* get internal structure and check that it's for reading */ if (file == NULL) return -1; state = (gz_statep)file; - - /* in case this was just opened, set up the input buffer */ - if (state->mode == GZ_READ && state->how == LOOK && state->x.have == 0) - (void)gz_look(state); - - /* check that we're reading and that there's no (serious) error */ - if (state->mode != GZ_READ || - (state->err != Z_OK && state->err != Z_BUF_ERROR)) + if (state->mode != GZ_READ) return -1; + /* in case this was just opened, set up the input buffer */ + if (state->how == LOOK && state->x.have == 0) + (void)gz_look(state); + + /* check that there was no (serious) error */ + if (state->err != Z_OK && state->err != Z_BUF_ERROR && !state->again) + return -1; + gz_error(state, Z_OK, NULL); + /* process a skip request */ - if (state->seek) { - state->seek = 0; - if (gz_skip(state, state->skip) == -1) - return -1; - } + if (state->skip && gz_skip(state) == -1) + return -1; /* can't push EOF */ if (c < 0) @@ -483,6 +553,7 @@ int ZEXPORT gzungetc(int c, gzFile file) { if (state->x.next == state->out) { unsigned char *src = state->out + state->x.have; unsigned char *dest = state->out + (state->size << 1); + while (src > state->out) *--dest = *--src; state->x.next = dest; @@ -502,32 +573,31 @@ char * ZEXPORT gzgets(gzFile file, char *buf, int len) { unsigned char *eol; gz_statep state; - /* check parameters and get internal structure */ + /* check parameters, get internal structure, and check that it's for + reading */ if (file == NULL || buf == NULL || len < 1) return NULL; state = (gz_statep)file; - - /* check that we're reading and that there's no (serious) error */ - if (state->mode != GZ_READ || - (state->err != Z_OK && state->err != Z_BUF_ERROR)) + if (state->mode != GZ_READ) return NULL; - /* process a skip request */ - if (state->seek) { - state->seek = 0; - if (gz_skip(state, state->skip) == -1) - return NULL; - } + /* check that there was no (serious) error */ + if (state->err != Z_OK && state->err != Z_BUF_ERROR && !state->again) + return NULL; + gz_error(state, Z_OK, NULL); - /* copy output bytes up to new line or len - 1, whichever comes first -- - append a terminating zero to the string (we don't check for a zero in - the contents, let the user worry about that) */ + /* process a skip request */ + if (state->skip && gz_skip(state) == -1) + return NULL; + + /* copy output up to a new line, len-1 bytes, or there is no more output, + whichever comes first */ str = buf; left = (unsigned)len - 1; if (left) do { /* assure that something is in the output buffer */ if (state->x.have == 0 && gz_fetch(state) == -1) - return NULL; /* error */ + break; /* error */ if (state->x.have == 0) { /* end of file */ state->past = 1; /* read past end */ break; /* return what we have */ @@ -548,7 +618,9 @@ char * ZEXPORT gzgets(gzFile file, char *buf, int len) { buf += n; } while (left && eol == NULL); - /* return terminated string, or if nothing, end of file */ + /* append a terminating zero to the string (we don't check for a zero in + the contents, let the user worry about that) -- return the terminated + string, or if nothing was read, NULL */ if (buf == str) return NULL; buf[0] = 0; @@ -570,7 +642,7 @@ int ZEXPORT gzdirect(gzFile file) { (void)gz_look(state); /* return 1 if transparent, 0 if processing a gzip stream */ - return state->direct; + return state->direct == 1; } /* -- see zlib.h -- */ @@ -578,12 +650,10 @@ int ZEXPORT gzclose_r(gzFile file) { int ret, err; gz_statep state; - /* get internal structure */ + /* get internal structure and check that it's for reading */ if (file == NULL) return Z_STREAM_ERROR; state = (gz_statep)file; - - /* check that we're reading */ if (state->mode != GZ_READ) return Z_STREAM_ERROR; diff --git a/packages/runtime/vendor/zlib/gzwrite.c b/packages/runtime/vendor/zlib/gzwrite.c index 435b4621b..13a3700a8 100644 --- a/packages/runtime/vendor/zlib/gzwrite.c +++ b/packages/runtime/vendor/zlib/gzwrite.c @@ -1,5 +1,5 @@ /* gzwrite.c -- zlib functions for writing gzip files - * Copyright (C) 2004-2019 Mark Adler + * Copyright (C) 2004-2026 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -74,9 +74,13 @@ local int gz_comp(gz_statep state, int flush) { /* write directly if requested */ if (state->direct) { while (strm->avail_in) { + errno = 0; + state->again = 0; put = strm->avail_in > max ? max : strm->avail_in; - writ = write(state->fd, strm->next_in, put); + writ = (int)write(state->fd, strm->next_in, put); if (writ < 0) { + if (errno == EAGAIN || errno == EWOULDBLOCK) + state->again = 1; gz_error(state, Z_ERRNO, zstrerror()); return -1; } @@ -88,8 +92,9 @@ local int gz_comp(gz_statep state, int flush) { /* check for a pending reset */ if (state->reset) { - /* don't start a new gzip member unless there is data to write */ - if (strm->avail_in == 0) + /* don't start a new gzip member unless there is data to write and + we're not flushing */ + if (strm->avail_in == 0 && flush == Z_NO_FLUSH) return 0; deflateReset(strm); state->reset = 0; @@ -103,10 +108,14 @@ local int gz_comp(gz_statep state, int flush) { if (strm->avail_out == 0 || (flush != Z_NO_FLUSH && (flush != Z_FINISH || ret == Z_STREAM_END))) { while (strm->next_out > state->x.next) { + errno = 0; + state->again = 0; put = strm->next_out - state->x.next > (int)max ? max : (unsigned)(strm->next_out - state->x.next); - writ = write(state->fd, state->x.next, put); + writ = (int)write(state->fd, state->x.next, put); if (writ < 0) { + if (errno == EAGAIN || errno == EWOULDBLOCK) + state->again = 1; gz_error(state, Z_ERRNO, zstrerror()); return -1; } @@ -138,10 +147,12 @@ local int gz_comp(gz_statep state, int flush) { return 0; } -/* Compress len zeros to output. Return -1 on a write error or memory - allocation failure by gz_comp(), or 0 on success. */ -local int gz_zero(gz_statep state, z_off64_t len) { - int first; +/* Compress state->skip (> 0) zeros to output. Return -1 on a write error or + memory allocation failure by gz_comp(), or 0 on success. state->skip is + updated with the number of successfully written zeros, in case there is a + stall on a non-blocking write destination. */ +local int gz_zero(gz_statep state) { + int first, ret; unsigned n; z_streamp strm = &(state->strm); @@ -149,29 +160,34 @@ local int gz_zero(gz_statep state, z_off64_t len) { if (strm->avail_in && gz_comp(state, Z_NO_FLUSH) == -1) return -1; - /* compress len zeros (len guaranteed > 0) */ + /* compress state->skip zeros */ first = 1; - while (len) { - n = GT_OFF(state->size) || (z_off64_t)state->size > len ? - (unsigned)len : state->size; + do { + n = GT_OFF(state->size) || (z_off64_t)state->size > state->skip ? + (unsigned)state->skip : state->size; if (first) { memset(state->in, 0, n); first = 0; } strm->avail_in = n; strm->next_in = state->in; + ret = gz_comp(state, Z_NO_FLUSH); + n -= strm->avail_in; state->x.pos += n; - if (gz_comp(state, Z_NO_FLUSH) == -1) + state->skip -= n; + if (ret == -1) return -1; - len -= n; - } + } while (state->skip); return 0; } /* Write len bytes from buf to file. Return the number of bytes written. If - the returned value is less than len, then there was an error. */ + the returned value is less than len, then there was an error. If the error + was a non-blocking stall, then the number of bytes consumed is returned. + For any other error, 0 is returned. */ local z_size_t gz_write(gz_statep state, voidpc buf, z_size_t len) { z_size_t put = len; + int ret; /* if len is zero, avoid unnecessary operations */ if (len == 0) @@ -182,16 +198,13 @@ local z_size_t gz_write(gz_statep state, voidpc buf, z_size_t len) { return 0; /* check for seek request */ - if (state->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - return 0; - } + if (state->skip && gz_zero(state) == -1) + return 0; /* for small len, copy to input buffer, otherwise compress directly */ if (len < state->size) { /* copy to input buffer, compress when full */ - do { + for (;;) { unsigned have, copy; if (state->strm.avail_in == 0) @@ -206,9 +219,11 @@ local z_size_t gz_write(gz_statep state, voidpc buf, z_size_t len) { state->x.pos += copy; buf = (const char *)buf + copy; len -= copy; - if (len && gz_comp(state, Z_NO_FLUSH) == -1) - return 0; - } while (len); + if (len == 0) + break; + if (gz_comp(state, Z_NO_FLUSH) == -1) + return state->again ? put - len : 0; + } } else { /* consume whatever's left in the input buffer */ @@ -219,13 +234,16 @@ local z_size_t gz_write(gz_statep state, voidpc buf, z_size_t len) { state->strm.next_in = (z_const Bytef *)buf; do { unsigned n = (unsigned)-1; + if (n > len) n = (unsigned)len; state->strm.avail_in = n; + ret = gz_comp(state, Z_NO_FLUSH); + n -= state->strm.avail_in; state->x.pos += n; - if (gz_comp(state, Z_NO_FLUSH) == -1) - return 0; len -= n; + if (ret == -1) + return state->again ? put - len : 0; } while (len); } @@ -242,9 +260,10 @@ int ZEXPORT gzwrite(gzFile file, voidpc buf, unsigned len) { return 0; state = (gz_statep)file; - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) + /* check that we're writing and that there's no (serious) error */ + if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) return 0; + gz_error(state, Z_OK, NULL); /* since an int is returned, make sure len fits in one, otherwise return with an error (this avoids a flaw in the interface) */ @@ -268,9 +287,10 @@ z_size_t ZEXPORT gzfwrite(voidpc buf, z_size_t size, z_size_t nitems, return 0; state = (gz_statep)file; - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) + /* check that we're writing and that there's no (serious) error */ + if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) return 0; + gz_error(state, Z_OK, NULL); /* compute bytes to read -- error on overflow */ len = nitems * size; @@ -296,16 +316,14 @@ int ZEXPORT gzputc(gzFile file, int c) { state = (gz_statep)file; strm = &(state->strm); - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) + /* check that we're writing and that there's no (serious) error */ + if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) return -1; + gz_error(state, Z_OK, NULL); /* check for seek request */ - if (state->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - return -1; - } + if (state->skip && gz_zero(state) == -1) + return -1; /* try writing to input buffer for speed (state->size == 0 if buffer not initialized) */ @@ -338,9 +356,10 @@ int ZEXPORT gzputs(gzFile file, const char *s) { return -1; state = (gz_statep)file; - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) + /* check that we're writing and that there's no (serious) error */ + if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) return -1; + gz_error(state, Z_OK, NULL); /* write string */ len = strlen(s); @@ -349,16 +368,47 @@ int ZEXPORT gzputs(gzFile file, const char *s) { return -1; } put = gz_write(state, s, len); - return put < len ? -1 : (int)len; + return len && put == 0 ? -1 : (int)put; } +#if (((!defined(STDC) && !defined(Z_HAVE_STDARG_H)) || !defined(NO_vsnprintf)) && \ + (defined(STDC) || defined(Z_HAVE_STDARG_H) || !defined(NO_snprintf))) || \ + defined(ZLIB_INSECURE) +/* If the second half of the input buffer is occupied, write out the contents. + If there is any input remaining due to a non-blocking stall on write, move + it to the start of the buffer. Return true if this did not open up the + second half of the buffer. state->err should be checked after this to + handle a gz_comp() error. */ +local int gz_vacate(gz_statep state) { + z_streamp strm; + + strm = &(state->strm); + if (strm->next_in + strm->avail_in <= state->in + state->size) + return 0; + (void)gz_comp(state, Z_NO_FLUSH); + if (strm->avail_in == 0) { + strm->next_in = state->in; + return 0; + } + memmove(state->in, strm->next_in, strm->avail_in); + strm->next_in = state->in; + return strm->avail_in > state->size; +} +#endif + #if defined(STDC) || defined(Z_HAVE_STDARG_H) #include /* -- see zlib.h -- */ int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va) { - int len; - unsigned left; +#if defined(NO_vsnprintf) && !defined(ZLIB_INSECURE) +#warning "vsnprintf() not available -- gzprintf() stub returns Z_STREAM_ERROR" +#warning "you can recompile with ZLIB_INSECURE defined to use vsprintf()" + /* prevent use of insecure vsprintf(), unless purposefully requested */ + (void)file, (void)format, (void)va; + return Z_STREAM_ERROR; +#else + int len, ret; char *next; gz_statep state; z_streamp strm; @@ -369,24 +419,34 @@ int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va) { state = (gz_statep)file; strm = &(state->strm); - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) + /* check that we're writing and that there's no (serious) error */ + if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) return Z_STREAM_ERROR; + gz_error(state, Z_OK, NULL); /* make sure we have some buffer space */ if (state->size == 0 && gz_init(state) == -1) return state->err; /* check for seek request */ - if (state->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - return state->err; - } + if (state->skip && gz_zero(state) == -1) + return state->err; /* do the printf() into the input buffer, put length in len -- the input - buffer is double-sized just for this function, so there is guaranteed to - be state->size bytes available after the current contents */ + buffer is double-sized just for this function, so there should be + state->size bytes available after the current contents */ + ret = gz_vacate(state); + if (state->err) { + if (ret && state->again) { + /* There was a non-blocking stall on write, resulting in the part + of the second half of the output buffer being occupied. Return + a Z_BUF_ERROR to let the application know that this gzprintf() + needs to be retried. */ + gz_error(state, Z_BUF_ERROR, "stalled write on gzprintf"); + } + if (!state->again) + return state->err; + } if (strm->avail_in == 0) strm->next_in = state->in; next = (char *)(state->in + (strm->next_in - state->in) + strm->avail_in); @@ -412,19 +472,16 @@ int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va) { if (len == 0 || (unsigned)len >= state->size || next[state->size - 1] != 0) return 0; - /* update buffer and position, compress first half if past that */ + /* update buffer and position */ strm->avail_in += (unsigned)len; state->x.pos += len; - if (strm->avail_in >= state->size) { - left = strm->avail_in - state->size; - strm->avail_in = state->size; - if (gz_comp(state, Z_NO_FLUSH) == -1) - return state->err; - memmove(state->in, state->in + state->size, left); - strm->next_in = state->in; - strm->avail_in = left; - } + + /* write out buffer if more than half is occupied */ + ret = gz_vacate(state); + if (state->err && !state->again) + return state->err; return len; +#endif } int ZEXPORTVA gzprintf(gzFile file, const char *format, ...) { @@ -444,6 +501,17 @@ int ZEXPORTVA gzprintf(gzFile file, const char *format, int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12, int a13, int a14, int a15, int a16, int a17, int a18, int a19, int a20) { +#if defined(NO_snprintf) && !defined(ZLIB_INSECURE) +#warning "snprintf() not available -- gzprintf() stub returns Z_STREAM_ERROR" +#warning "you can recompile with ZLIB_INSECURE defined to use sprintf()" + /* prevent use of insecure sprintf(), unless purposefully requested */ + (void)file, (void)format, (void)a1, (void)a2, (void)a3, (void)a4, (void)a5, + (void)a6, (void)a7, (void)a8, (void)a9, (void)a10, (void)a11, (void)a12, + (void)a13, (void)a14, (void)a15, (void)a16, (void)a17, (void)a18, + (void)a19, (void)a20; + return Z_STREAM_ERROR; +#else + int ret; unsigned len, left; char *next; gz_statep state; @@ -459,24 +527,34 @@ int ZEXPORTVA gzprintf(gzFile file, const char *format, int a1, int a2, int a3, if (sizeof(int) != sizeof(void *)) return Z_STREAM_ERROR; - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) + /* check that we're writing and that there's no (serious) error */ + if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) return Z_STREAM_ERROR; + gz_error(state, Z_OK, NULL); /* make sure we have some buffer space */ if (state->size == 0 && gz_init(state) == -1) - return state->error; + return state->err; /* check for seek request */ - if (state->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - return state->error; - } + if (state->skip && gz_zero(state) == -1) + return state->err; /* do the printf() into the input buffer, put length in len -- the input buffer is double-sized just for this function, so there is guaranteed to be state->size bytes available after the current contents */ + ret = gz_vacate(state); + if (state->err) { + if (ret && state->again) { + /* There was a non-blocking stall on write, resulting in the part + of the second half of the output buffer being occupied. Return + a Z_BUF_ERROR to let the application know that this gzprintf() + needs to be retried. */ + gz_error(state, Z_BUF_ERROR, "stalled write on gzprintf"); + } + if (!state->again) + return state->err; + } if (strm->avail_in == 0) strm->next_in = state->in; next = (char *)(strm->next_in + strm->avail_in); @@ -510,16 +588,13 @@ int ZEXPORTVA gzprintf(gzFile file, const char *format, int a1, int a2, int a3, /* update buffer and position, compress first half if past that */ strm->avail_in += len; state->x.pos += len; - if (strm->avail_in >= state->size) { - left = strm->avail_in - state->size; - strm->avail_in = state->size; - if (gz_comp(state, Z_NO_FLUSH) == -1) - return state->err; - memmove(state->in, state->in + state->size, left); - strm->next_in = state->in; - strm->avail_in = left; - } + + /* write out buffer if more than half is occupied */ + ret = gz_vacate(state); + if (state->err && !state->again) + return state->err; return (int)len; +#endif } #endif @@ -533,20 +608,18 @@ int ZEXPORT gzflush(gzFile file, int flush) { return Z_STREAM_ERROR; state = (gz_statep)file; - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) + /* check that we're writing and that there's no (serious) error */ + if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) return Z_STREAM_ERROR; + gz_error(state, Z_OK, NULL); /* check flush parameter */ if (flush < 0 || flush > Z_FINISH) return Z_STREAM_ERROR; /* check for seek request */ - if (state->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - return state->err; - } + if (state->skip && gz_zero(state) == -1) + return state->err; /* compress remaining data with requested flush */ (void)gz_comp(state, flush); @@ -564,20 +637,19 @@ int ZEXPORT gzsetparams(gzFile file, int level, int strategy) { state = (gz_statep)file; strm = &(state->strm); - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK || state->direct) + /* check that we're compressing and that there's no (serious) error */ + if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again) || + state->direct) return Z_STREAM_ERROR; + gz_error(state, Z_OK, NULL); /* if no change is requested, then do nothing */ if (level == state->level && strategy == state->strategy) return Z_OK; /* check for seek request */ - if (state->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - return state->err; - } + if (state->skip && gz_zero(state) == -1) + return state->err; /* change compression parameters for subsequent input */ if (state->size) { @@ -606,11 +678,8 @@ int ZEXPORT gzclose_w(gzFile file) { return Z_STREAM_ERROR; /* check for seek request */ - if (state->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - ret = state->err; - } + if (state->skip && gz_zero(state) == -1) + ret = state->err; /* flush, free memory, and close file */ if (gz_comp(state, Z_FINISH) == -1) diff --git a/packages/runtime/vendor/zlib/infback.c b/packages/runtime/vendor/zlib/infback.c index e7b25b307..7ffb7b044 100644 --- a/packages/runtime/vendor/zlib/infback.c +++ b/packages/runtime/vendor/zlib/infback.c @@ -1,5 +1,5 @@ /* infback.c -- inflate using a call-back interface - * Copyright (C) 1995-2022 Mark Adler + * Copyright (C) 1995-2026 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -46,7 +46,7 @@ int ZEXPORT inflateBackInit_(z_streamp strm, int windowBits, #ifdef Z_SOLO return Z_STREAM_ERROR; #else - strm->zfree = zcfree; + strm->zfree = zcfree; #endif state = (struct inflate_state FAR *)ZALLOC(strm, 1, sizeof(struct inflate_state)); @@ -63,57 +63,6 @@ int ZEXPORT inflateBackInit_(z_streamp strm, int windowBits, return Z_OK; } -/* - Return state with length and distance decoding tables and index sizes set to - fixed code decoding. Normally this returns fixed tables from inffixed.h. - If BUILDFIXED is defined, then instead this routine builds the tables the - first time it's called, and returns those tables the first time and - thereafter. This reduces the size of the code by about 2K bytes, in - exchange for a little execution time. However, BUILDFIXED should not be - used for threaded applications, since the rewriting of the tables and virgin - may not be thread-safe. - */ -local void fixedtables(struct inflate_state FAR *state) { -#ifdef BUILDFIXED - static int virgin = 1; - static code *lenfix, *distfix; - static code fixed[544]; - - /* build fixed huffman tables if first call (may not be thread safe) */ - if (virgin) { - unsigned sym, bits; - static code *next; - - /* literal/length table */ - sym = 0; - while (sym < 144) state->lens[sym++] = 8; - while (sym < 256) state->lens[sym++] = 9; - while (sym < 280) state->lens[sym++] = 7; - while (sym < 288) state->lens[sym++] = 8; - next = fixed; - lenfix = next; - bits = 9; - inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work); - - /* distance table */ - sym = 0; - while (sym < 32) state->lens[sym++] = 5; - distfix = next; - bits = 5; - inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work); - - /* do this just once */ - virgin = 0; - } -#else /* !BUILDFIXED */ -# include "inffixed.h" -#endif /* BUILDFIXED */ - state->lencode = lenfix; - state->lenbits = 9; - state->distcode = distfix; - state->distbits = 5; -} - /* Macros for inflateBack(): */ /* Load returned state from inflate_fast() */ @@ -293,7 +242,7 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, state->mode = STORED; break; case 1: /* fixed block */ - fixedtables(state); + inflate_fixed(state); Tracev((stderr, "inflate: fixed codes block%s\n", state->last ? " (last)" : "")); state->mode = LEN; /* decode codes */ @@ -303,8 +252,8 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, state->last ? " (last)" : "")); state->mode = TABLE; break; - case 3: - strm->msg = (char *)"invalid block type"; + default: + strm->msg = (z_const char *)"invalid block type"; state->mode = BAD; } DROPBITS(2); @@ -315,7 +264,7 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, BYTEBITS(); /* go to byte boundary */ NEEDBITS(32); if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) { - strm->msg = (char *)"invalid stored block lengths"; + strm->msg = (z_const char *)"invalid stored block lengths"; state->mode = BAD; break; } @@ -353,7 +302,8 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, DROPBITS(4); #ifndef PKZIP_BUG_WORKAROUND if (state->nlen > 286 || state->ndist > 30) { - strm->msg = (char *)"too many length or distance symbols"; + strm->msg = (z_const char *) + "too many length or distance symbols"; state->mode = BAD; break; } @@ -375,7 +325,7 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, ret = inflate_table(CODES, state->lens, 19, &(state->next), &(state->lenbits), state->work); if (ret) { - strm->msg = (char *)"invalid code lengths set"; + strm->msg = (z_const char *)"invalid code lengths set"; state->mode = BAD; break; } @@ -398,7 +348,8 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, NEEDBITS(here.bits + 2); DROPBITS(here.bits); if (state->have == 0) { - strm->msg = (char *)"invalid bit length repeat"; + strm->msg = (z_const char *) + "invalid bit length repeat"; state->mode = BAD; break; } @@ -421,7 +372,8 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, DROPBITS(7); } if (state->have + copy > state->nlen + state->ndist) { - strm->msg = (char *)"invalid bit length repeat"; + strm->msg = (z_const char *) + "invalid bit length repeat"; state->mode = BAD; break; } @@ -435,30 +387,31 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, /* check for end-of-block code (better have one) */ if (state->lens[256] == 0) { - strm->msg = (char *)"invalid code -- missing end-of-block"; + strm->msg = (z_const char *) + "invalid code -- missing end-of-block"; state->mode = BAD; break; } /* build code tables -- note: do not change the lenbits or distbits - values here (9 and 6) without reading the comments in inftrees.h + values here (10 and 9) without reading the comments in inftrees.h concerning the ENOUGH constants, which depend on those values */ state->next = state->codes; state->lencode = (code const FAR *)(state->next); - state->lenbits = 9; + state->lenbits = 10; ret = inflate_table(LENS, state->lens, state->nlen, &(state->next), &(state->lenbits), state->work); if (ret) { - strm->msg = (char *)"invalid literal/lengths set"; + strm->msg = (z_const char *)"invalid literal/lengths set"; state->mode = BAD; break; } state->distcode = (code const FAR *)(state->next); - state->distbits = 6; + state->distbits = 9; ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist, &(state->next), &(state->distbits), state->work); if (ret) { - strm->msg = (char *)"invalid distances set"; + strm->msg = (z_const char *)"invalid distances set"; state->mode = BAD; break; } @@ -468,10 +421,9 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, case LEN: /* use inflate_fast() if we have enough input and output */ - if (have >= 6 && left >= 258) { + if (have >= INFLATE_FAST_MIN_INPUT && + left >= INFLATE_FAST_MIN_OUTPUT) { RESTORE(); - if (state->whave < state->wsize) - state->whave = state->wsize - left; inflate_fast(strm, state->wsize); LOAD(); break; @@ -517,7 +469,7 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, /* invalid code */ if (here.op & 64) { - strm->msg = (char *)"invalid literal/length code"; + strm->msg = (z_const char *)"invalid literal/length code"; state->mode = BAD; break; } @@ -549,7 +501,7 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, } DROPBITS(here.bits); if (here.op & 64) { - strm->msg = (char *)"invalid distance code"; + strm->msg = (z_const char *)"invalid distance code"; state->mode = BAD; break; } @@ -564,7 +516,7 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, } if (state->offset > state->wsize - (state->whave < state->wsize ? left : 0)) { - strm->msg = (char *)"invalid distance too far back"; + strm->msg = (z_const char *)"invalid distance too far back"; state->mode = BAD; break; } diff --git a/packages/runtime/vendor/zlib/inffast.c b/packages/runtime/vendor/zlib/inffast.c index 9354676e7..58fc5afc0 100644 --- a/packages/runtime/vendor/zlib/inffast.c +++ b/packages/runtime/vendor/zlib/inffast.c @@ -1,5 +1,5 @@ /* inffast.c -- fast decoding - * Copyright (C) 1995-2017 Mark Adler + * Copyright (C) 1995-2026 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -18,13 +18,13 @@ available, an end-of-block is encountered, or a data error is encountered. When large enough input and output buffers are supplied to inflate(), for example, a 16K input buffer and a 64K output buffer, more than 95% of the - inflate execution time is spent in this routine. + inflate() execution time is spent in this routine. Entry assumptions: state->mode == LEN - strm->avail_in >= 6 - strm->avail_out >= 258 + strm->avail_in >= INFLATE_FAST_MIN_INPUT (6 bytes) + strm->avail_out >= INFLATE_FAST_MIN_OUTPUT (258 bytes) start >= strm->avail_out state->bits < 8 @@ -36,16 +36,20 @@ Notes: + INFLATE_FAST_MIN_INPUT: 6 bytes + - The maximum input bits used by a length/distance pair is 15 bits for the length code, 5 bits for the length extra, 15 bits for the distance code, and 13 bits for the distance extra. This totals 48 bits, or six bytes. Therefore if strm->avail_in >= 6, then there is enough input to avoid checking for available input while decoding. + INFLATE_FAST_MIN_OUTPUT: 258 bytes + - The maximum bytes that a single length/distance pair can output is 258 bytes, which is the maximum length that can be coded. inflate_fast() requires strm->avail_out >= 258 for each loop to avoid checking for - output space. + available output space while decoding. */ void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start) { struct inflate_state FAR *state; @@ -77,10 +81,10 @@ void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start) { /* copy state to local variables */ state = (struct inflate_state FAR *)strm->state; in = strm->next_in; - last = in + (strm->avail_in - 5); + last = in + (strm->avail_in - (INFLATE_FAST_MIN_INPUT - 1)); out = strm->next_out; beg = out - (start - strm->avail_out); - end = out + (strm->avail_out - 257); + end = out + (strm->avail_out - (INFLATE_FAST_MIN_OUTPUT - 1)); #ifdef INFLATE_STRICT dmax = state->dmax; #endif @@ -155,7 +159,8 @@ void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start) { dist += (unsigned)hold & ((1U << op) - 1); #ifdef INFLATE_STRICT if (dist > dmax) { - strm->msg = (char *)"invalid distance too far back"; + strm->msg = (z_const char *) + "invalid distance too far back"; state->mode = BAD; break; } @@ -168,8 +173,8 @@ void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start) { op = dist - op; /* distance back in window */ if (op > whave) { if (state->sane) { - strm->msg = - (char *)"invalid distance too far back"; + strm->msg = (z_const char *) + "invalid distance too far back"; state->mode = BAD; break; } @@ -265,7 +270,7 @@ void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start) { goto dodist; } else { - strm->msg = (char *)"invalid distance code"; + strm->msg = (z_const char *)"invalid distance code"; state->mode = BAD; break; } @@ -280,7 +285,7 @@ void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start) { break; } else { - strm->msg = (char *)"invalid literal/length code"; + strm->msg = (z_const char *)"invalid literal/length code"; state->mode = BAD; break; } @@ -295,9 +300,12 @@ void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start) { /* update state and return */ strm->next_in = in; strm->next_out = out; - strm->avail_in = (unsigned)(in < last ? 5 + (last - in) : 5 - (in - last)); + strm->avail_in = (unsigned)(in < last ? + (INFLATE_FAST_MIN_INPUT - 1) + (last - in) : + (INFLATE_FAST_MIN_INPUT - 1) - (in - last)); strm->avail_out = (unsigned)(out < end ? - 257 + (end - out) : 257 - (out - end)); + (INFLATE_FAST_MIN_OUTPUT - 1) + (end - out) : + (INFLATE_FAST_MIN_OUTPUT - 1) - (out - end)); state->hold = hold; state->bits = bits; return; diff --git a/packages/runtime/vendor/zlib/inffast.h b/packages/runtime/vendor/zlib/inffast.h index 49c6d156c..9ff6ce3b6 100644 --- a/packages/runtime/vendor/zlib/inffast.h +++ b/packages/runtime/vendor/zlib/inffast.h @@ -8,4 +8,19 @@ subject to change. Applications should only use zlib.h. */ +/* INFLATE_FAST_MIN_INPUT: the minimum number of input bytes needed so that + we can safely call inflate_fast() with only one up-front bounds check. One + length/distance code pair (15 bits for the length code, 5 bits for length + extra, 15 bits for the distance code, 13 bits for distance extra) requires + reading up to 48 input bits (6 bytes). +*/ +#define INFLATE_FAST_MIN_INPUT 6 + +/* INFLATE_FAST_MIN_OUTPUT: the minimum number of output bytes needed so that + we can safely call inflate_fast() with only one up-front bounds check. One + length/distance code pair can output up to 258 bytes, which is the maximum + length that can be coded. + */ +#define INFLATE_FAST_MIN_OUTPUT 258 + void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start); diff --git a/packages/runtime/vendor/zlib/inffixed.h b/packages/runtime/vendor/zlib/inffixed.h index d62832776..05ce88e4f 100644 --- a/packages/runtime/vendor/zlib/inffixed.h +++ b/packages/runtime/vendor/zlib/inffixed.h @@ -1,94 +1,94 @@ - /* inffixed.h -- table for decoding fixed codes - * Generated automatically by makefixed(). - */ +/* inffixed.h -- table for decoding fixed codes + * Generated automatically by makefixed(). + */ - /* WARNING: this file should *not* be used by applications. - It is part of the implementation of this library and is - subject to change. Applications should only use zlib.h. - */ +/* WARNING: this file should *not* be used by applications. + It is part of the implementation of this library and is + subject to change. Applications should only use zlib.h. + */ - static const code lenfix[512] = { - {96,7,0},{0,8,80},{0,8,16},{20,8,115},{18,7,31},{0,8,112},{0,8,48}, - {0,9,192},{16,7,10},{0,8,96},{0,8,32},{0,9,160},{0,8,0},{0,8,128}, - {0,8,64},{0,9,224},{16,7,6},{0,8,88},{0,8,24},{0,9,144},{19,7,59}, - {0,8,120},{0,8,56},{0,9,208},{17,7,17},{0,8,104},{0,8,40},{0,9,176}, - {0,8,8},{0,8,136},{0,8,72},{0,9,240},{16,7,4},{0,8,84},{0,8,20}, - {21,8,227},{19,7,43},{0,8,116},{0,8,52},{0,9,200},{17,7,13},{0,8,100}, - {0,8,36},{0,9,168},{0,8,4},{0,8,132},{0,8,68},{0,9,232},{16,7,8}, - {0,8,92},{0,8,28},{0,9,152},{20,7,83},{0,8,124},{0,8,60},{0,9,216}, - {18,7,23},{0,8,108},{0,8,44},{0,9,184},{0,8,12},{0,8,140},{0,8,76}, - {0,9,248},{16,7,3},{0,8,82},{0,8,18},{21,8,163},{19,7,35},{0,8,114}, - {0,8,50},{0,9,196},{17,7,11},{0,8,98},{0,8,34},{0,9,164},{0,8,2}, - {0,8,130},{0,8,66},{0,9,228},{16,7,7},{0,8,90},{0,8,26},{0,9,148}, - {20,7,67},{0,8,122},{0,8,58},{0,9,212},{18,7,19},{0,8,106},{0,8,42}, - {0,9,180},{0,8,10},{0,8,138},{0,8,74},{0,9,244},{16,7,5},{0,8,86}, - {0,8,22},{64,8,0},{19,7,51},{0,8,118},{0,8,54},{0,9,204},{17,7,15}, - {0,8,102},{0,8,38},{0,9,172},{0,8,6},{0,8,134},{0,8,70},{0,9,236}, - {16,7,9},{0,8,94},{0,8,30},{0,9,156},{20,7,99},{0,8,126},{0,8,62}, - {0,9,220},{18,7,27},{0,8,110},{0,8,46},{0,9,188},{0,8,14},{0,8,142}, - {0,8,78},{0,9,252},{96,7,0},{0,8,81},{0,8,17},{21,8,131},{18,7,31}, - {0,8,113},{0,8,49},{0,9,194},{16,7,10},{0,8,97},{0,8,33},{0,9,162}, - {0,8,1},{0,8,129},{0,8,65},{0,9,226},{16,7,6},{0,8,89},{0,8,25}, - {0,9,146},{19,7,59},{0,8,121},{0,8,57},{0,9,210},{17,7,17},{0,8,105}, - {0,8,41},{0,9,178},{0,8,9},{0,8,137},{0,8,73},{0,9,242},{16,7,4}, - {0,8,85},{0,8,21},{16,8,258},{19,7,43},{0,8,117},{0,8,53},{0,9,202}, - {17,7,13},{0,8,101},{0,8,37},{0,9,170},{0,8,5},{0,8,133},{0,8,69}, - {0,9,234},{16,7,8},{0,8,93},{0,8,29},{0,9,154},{20,7,83},{0,8,125}, - {0,8,61},{0,9,218},{18,7,23},{0,8,109},{0,8,45},{0,9,186},{0,8,13}, - {0,8,141},{0,8,77},{0,9,250},{16,7,3},{0,8,83},{0,8,19},{21,8,195}, - {19,7,35},{0,8,115},{0,8,51},{0,9,198},{17,7,11},{0,8,99},{0,8,35}, - {0,9,166},{0,8,3},{0,8,131},{0,8,67},{0,9,230},{16,7,7},{0,8,91}, - {0,8,27},{0,9,150},{20,7,67},{0,8,123},{0,8,59},{0,9,214},{18,7,19}, - {0,8,107},{0,8,43},{0,9,182},{0,8,11},{0,8,139},{0,8,75},{0,9,246}, - {16,7,5},{0,8,87},{0,8,23},{64,8,0},{19,7,51},{0,8,119},{0,8,55}, - {0,9,206},{17,7,15},{0,8,103},{0,8,39},{0,9,174},{0,8,7},{0,8,135}, - {0,8,71},{0,9,238},{16,7,9},{0,8,95},{0,8,31},{0,9,158},{20,7,99}, - {0,8,127},{0,8,63},{0,9,222},{18,7,27},{0,8,111},{0,8,47},{0,9,190}, - {0,8,15},{0,8,143},{0,8,79},{0,9,254},{96,7,0},{0,8,80},{0,8,16}, - {20,8,115},{18,7,31},{0,8,112},{0,8,48},{0,9,193},{16,7,10},{0,8,96}, - {0,8,32},{0,9,161},{0,8,0},{0,8,128},{0,8,64},{0,9,225},{16,7,6}, - {0,8,88},{0,8,24},{0,9,145},{19,7,59},{0,8,120},{0,8,56},{0,9,209}, - {17,7,17},{0,8,104},{0,8,40},{0,9,177},{0,8,8},{0,8,136},{0,8,72}, - {0,9,241},{16,7,4},{0,8,84},{0,8,20},{21,8,227},{19,7,43},{0,8,116}, - {0,8,52},{0,9,201},{17,7,13},{0,8,100},{0,8,36},{0,9,169},{0,8,4}, - {0,8,132},{0,8,68},{0,9,233},{16,7,8},{0,8,92},{0,8,28},{0,9,153}, - {20,7,83},{0,8,124},{0,8,60},{0,9,217},{18,7,23},{0,8,108},{0,8,44}, - {0,9,185},{0,8,12},{0,8,140},{0,8,76},{0,9,249},{16,7,3},{0,8,82}, - {0,8,18},{21,8,163},{19,7,35},{0,8,114},{0,8,50},{0,9,197},{17,7,11}, - {0,8,98},{0,8,34},{0,9,165},{0,8,2},{0,8,130},{0,8,66},{0,9,229}, - {16,7,7},{0,8,90},{0,8,26},{0,9,149},{20,7,67},{0,8,122},{0,8,58}, - {0,9,213},{18,7,19},{0,8,106},{0,8,42},{0,9,181},{0,8,10},{0,8,138}, - {0,8,74},{0,9,245},{16,7,5},{0,8,86},{0,8,22},{64,8,0},{19,7,51}, - {0,8,118},{0,8,54},{0,9,205},{17,7,15},{0,8,102},{0,8,38},{0,9,173}, - {0,8,6},{0,8,134},{0,8,70},{0,9,237},{16,7,9},{0,8,94},{0,8,30}, - {0,9,157},{20,7,99},{0,8,126},{0,8,62},{0,9,221},{18,7,27},{0,8,110}, - {0,8,46},{0,9,189},{0,8,14},{0,8,142},{0,8,78},{0,9,253},{96,7,0}, - {0,8,81},{0,8,17},{21,8,131},{18,7,31},{0,8,113},{0,8,49},{0,9,195}, - {16,7,10},{0,8,97},{0,8,33},{0,9,163},{0,8,1},{0,8,129},{0,8,65}, - {0,9,227},{16,7,6},{0,8,89},{0,8,25},{0,9,147},{19,7,59},{0,8,121}, - {0,8,57},{0,9,211},{17,7,17},{0,8,105},{0,8,41},{0,9,179},{0,8,9}, - {0,8,137},{0,8,73},{0,9,243},{16,7,4},{0,8,85},{0,8,21},{16,8,258}, - {19,7,43},{0,8,117},{0,8,53},{0,9,203},{17,7,13},{0,8,101},{0,8,37}, - {0,9,171},{0,8,5},{0,8,133},{0,8,69},{0,9,235},{16,7,8},{0,8,93}, - {0,8,29},{0,9,155},{20,7,83},{0,8,125},{0,8,61},{0,9,219},{18,7,23}, - {0,8,109},{0,8,45},{0,9,187},{0,8,13},{0,8,141},{0,8,77},{0,9,251}, - {16,7,3},{0,8,83},{0,8,19},{21,8,195},{19,7,35},{0,8,115},{0,8,51}, - {0,9,199},{17,7,11},{0,8,99},{0,8,35},{0,9,167},{0,8,3},{0,8,131}, - {0,8,67},{0,9,231},{16,7,7},{0,8,91},{0,8,27},{0,9,151},{20,7,67}, - {0,8,123},{0,8,59},{0,9,215},{18,7,19},{0,8,107},{0,8,43},{0,9,183}, - {0,8,11},{0,8,139},{0,8,75},{0,9,247},{16,7,5},{0,8,87},{0,8,23}, - {64,8,0},{19,7,51},{0,8,119},{0,8,55},{0,9,207},{17,7,15},{0,8,103}, - {0,8,39},{0,9,175},{0,8,7},{0,8,135},{0,8,71},{0,9,239},{16,7,9}, - {0,8,95},{0,8,31},{0,9,159},{20,7,99},{0,8,127},{0,8,63},{0,9,223}, - {18,7,27},{0,8,111},{0,8,47},{0,9,191},{0,8,15},{0,8,143},{0,8,79}, - {0,9,255} - }; +static const code lenfix[512] = { + {96,7,0},{0,8,80},{0,8,16},{20,8,115},{18,7,31},{0,8,112},{0,8,48}, + {0,9,192},{16,7,10},{0,8,96},{0,8,32},{0,9,160},{0,8,0},{0,8,128}, + {0,8,64},{0,9,224},{16,7,6},{0,8,88},{0,8,24},{0,9,144},{19,7,59}, + {0,8,120},{0,8,56},{0,9,208},{17,7,17},{0,8,104},{0,8,40},{0,9,176}, + {0,8,8},{0,8,136},{0,8,72},{0,9,240},{16,7,4},{0,8,84},{0,8,20}, + {21,8,227},{19,7,43},{0,8,116},{0,8,52},{0,9,200},{17,7,13},{0,8,100}, + {0,8,36},{0,9,168},{0,8,4},{0,8,132},{0,8,68},{0,9,232},{16,7,8}, + {0,8,92},{0,8,28},{0,9,152},{20,7,83},{0,8,124},{0,8,60},{0,9,216}, + {18,7,23},{0,8,108},{0,8,44},{0,9,184},{0,8,12},{0,8,140},{0,8,76}, + {0,9,248},{16,7,3},{0,8,82},{0,8,18},{21,8,163},{19,7,35},{0,8,114}, + {0,8,50},{0,9,196},{17,7,11},{0,8,98},{0,8,34},{0,9,164},{0,8,2}, + {0,8,130},{0,8,66},{0,9,228},{16,7,7},{0,8,90},{0,8,26},{0,9,148}, + {20,7,67},{0,8,122},{0,8,58},{0,9,212},{18,7,19},{0,8,106},{0,8,42}, + {0,9,180},{0,8,10},{0,8,138},{0,8,74},{0,9,244},{16,7,5},{0,8,86}, + {0,8,22},{64,8,0},{19,7,51},{0,8,118},{0,8,54},{0,9,204},{17,7,15}, + {0,8,102},{0,8,38},{0,9,172},{0,8,6},{0,8,134},{0,8,70},{0,9,236}, + {16,7,9},{0,8,94},{0,8,30},{0,9,156},{20,7,99},{0,8,126},{0,8,62}, + {0,9,220},{18,7,27},{0,8,110},{0,8,46},{0,9,188},{0,8,14},{0,8,142}, + {0,8,78},{0,9,252},{96,7,0},{0,8,81},{0,8,17},{21,8,131},{18,7,31}, + {0,8,113},{0,8,49},{0,9,194},{16,7,10},{0,8,97},{0,8,33},{0,9,162}, + {0,8,1},{0,8,129},{0,8,65},{0,9,226},{16,7,6},{0,8,89},{0,8,25}, + {0,9,146},{19,7,59},{0,8,121},{0,8,57},{0,9,210},{17,7,17},{0,8,105}, + {0,8,41},{0,9,178},{0,8,9},{0,8,137},{0,8,73},{0,9,242},{16,7,4}, + {0,8,85},{0,8,21},{16,8,258},{19,7,43},{0,8,117},{0,8,53},{0,9,202}, + {17,7,13},{0,8,101},{0,8,37},{0,9,170},{0,8,5},{0,8,133},{0,8,69}, + {0,9,234},{16,7,8},{0,8,93},{0,8,29},{0,9,154},{20,7,83},{0,8,125}, + {0,8,61},{0,9,218},{18,7,23},{0,8,109},{0,8,45},{0,9,186},{0,8,13}, + {0,8,141},{0,8,77},{0,9,250},{16,7,3},{0,8,83},{0,8,19},{21,8,195}, + {19,7,35},{0,8,115},{0,8,51},{0,9,198},{17,7,11},{0,8,99},{0,8,35}, + {0,9,166},{0,8,3},{0,8,131},{0,8,67},{0,9,230},{16,7,7},{0,8,91}, + {0,8,27},{0,9,150},{20,7,67},{0,8,123},{0,8,59},{0,9,214},{18,7,19}, + {0,8,107},{0,8,43},{0,9,182},{0,8,11},{0,8,139},{0,8,75},{0,9,246}, + {16,7,5},{0,8,87},{0,8,23},{64,8,0},{19,7,51},{0,8,119},{0,8,55}, + {0,9,206},{17,7,15},{0,8,103},{0,8,39},{0,9,174},{0,8,7},{0,8,135}, + {0,8,71},{0,9,238},{16,7,9},{0,8,95},{0,8,31},{0,9,158},{20,7,99}, + {0,8,127},{0,8,63},{0,9,222},{18,7,27},{0,8,111},{0,8,47},{0,9,190}, + {0,8,15},{0,8,143},{0,8,79},{0,9,254},{96,7,0},{0,8,80},{0,8,16}, + {20,8,115},{18,7,31},{0,8,112},{0,8,48},{0,9,193},{16,7,10},{0,8,96}, + {0,8,32},{0,9,161},{0,8,0},{0,8,128},{0,8,64},{0,9,225},{16,7,6}, + {0,8,88},{0,8,24},{0,9,145},{19,7,59},{0,8,120},{0,8,56},{0,9,209}, + {17,7,17},{0,8,104},{0,8,40},{0,9,177},{0,8,8},{0,8,136},{0,8,72}, + {0,9,241},{16,7,4},{0,8,84},{0,8,20},{21,8,227},{19,7,43},{0,8,116}, + {0,8,52},{0,9,201},{17,7,13},{0,8,100},{0,8,36},{0,9,169},{0,8,4}, + {0,8,132},{0,8,68},{0,9,233},{16,7,8},{0,8,92},{0,8,28},{0,9,153}, + {20,7,83},{0,8,124},{0,8,60},{0,9,217},{18,7,23},{0,8,108},{0,8,44}, + {0,9,185},{0,8,12},{0,8,140},{0,8,76},{0,9,249},{16,7,3},{0,8,82}, + {0,8,18},{21,8,163},{19,7,35},{0,8,114},{0,8,50},{0,9,197},{17,7,11}, + {0,8,98},{0,8,34},{0,9,165},{0,8,2},{0,8,130},{0,8,66},{0,9,229}, + {16,7,7},{0,8,90},{0,8,26},{0,9,149},{20,7,67},{0,8,122},{0,8,58}, + {0,9,213},{18,7,19},{0,8,106},{0,8,42},{0,9,181},{0,8,10},{0,8,138}, + {0,8,74},{0,9,245},{16,7,5},{0,8,86},{0,8,22},{64,8,0},{19,7,51}, + {0,8,118},{0,8,54},{0,9,205},{17,7,15},{0,8,102},{0,8,38},{0,9,173}, + {0,8,6},{0,8,134},{0,8,70},{0,9,237},{16,7,9},{0,8,94},{0,8,30}, + {0,9,157},{20,7,99},{0,8,126},{0,8,62},{0,9,221},{18,7,27},{0,8,110}, + {0,8,46},{0,9,189},{0,8,14},{0,8,142},{0,8,78},{0,9,253},{96,7,0}, + {0,8,81},{0,8,17},{21,8,131},{18,7,31},{0,8,113},{0,8,49},{0,9,195}, + {16,7,10},{0,8,97},{0,8,33},{0,9,163},{0,8,1},{0,8,129},{0,8,65}, + {0,9,227},{16,7,6},{0,8,89},{0,8,25},{0,9,147},{19,7,59},{0,8,121}, + {0,8,57},{0,9,211},{17,7,17},{0,8,105},{0,8,41},{0,9,179},{0,8,9}, + {0,8,137},{0,8,73},{0,9,243},{16,7,4},{0,8,85},{0,8,21},{16,8,258}, + {19,7,43},{0,8,117},{0,8,53},{0,9,203},{17,7,13},{0,8,101},{0,8,37}, + {0,9,171},{0,8,5},{0,8,133},{0,8,69},{0,9,235},{16,7,8},{0,8,93}, + {0,8,29},{0,9,155},{20,7,83},{0,8,125},{0,8,61},{0,9,219},{18,7,23}, + {0,8,109},{0,8,45},{0,9,187},{0,8,13},{0,8,141},{0,8,77},{0,9,251}, + {16,7,3},{0,8,83},{0,8,19},{21,8,195},{19,7,35},{0,8,115},{0,8,51}, + {0,9,199},{17,7,11},{0,8,99},{0,8,35},{0,9,167},{0,8,3},{0,8,131}, + {0,8,67},{0,9,231},{16,7,7},{0,8,91},{0,8,27},{0,9,151},{20,7,67}, + {0,8,123},{0,8,59},{0,9,215},{18,7,19},{0,8,107},{0,8,43},{0,9,183}, + {0,8,11},{0,8,139},{0,8,75},{0,9,247},{16,7,5},{0,8,87},{0,8,23}, + {64,8,0},{19,7,51},{0,8,119},{0,8,55},{0,9,207},{17,7,15},{0,8,103}, + {0,8,39},{0,9,175},{0,8,7},{0,8,135},{0,8,71},{0,9,239},{16,7,9}, + {0,8,95},{0,8,31},{0,9,159},{20,7,99},{0,8,127},{0,8,63},{0,9,223}, + {18,7,27},{0,8,111},{0,8,47},{0,9,191},{0,8,15},{0,8,143},{0,8,79}, + {0,9,255} +}; - static const code distfix[32] = { - {16,5,1},{23,5,257},{19,5,17},{27,5,4097},{17,5,5},{25,5,1025}, - {21,5,65},{29,5,16385},{16,5,3},{24,5,513},{20,5,33},{28,5,8193}, - {18,5,9},{26,5,2049},{22,5,129},{64,5,0},{16,5,2},{23,5,385}, - {19,5,25},{27,5,6145},{17,5,7},{25,5,1537},{21,5,97},{29,5,24577}, - {16,5,4},{24,5,769},{20,5,49},{28,5,12289},{18,5,13},{26,5,3073}, - {22,5,193},{64,5,0} - }; +static const code distfix[32] = { + {16,5,1},{23,5,257},{19,5,17},{27,5,4097},{17,5,5},{25,5,1025}, + {21,5,65},{29,5,16385},{16,5,3},{24,5,513},{20,5,33},{28,5,8193}, + {18,5,9},{26,5,2049},{22,5,129},{64,5,0},{16,5,2},{23,5,385}, + {19,5,25},{27,5,6145},{17,5,7},{25,5,1537},{21,5,97},{29,5,24577}, + {16,5,4},{24,5,769},{20,5,49},{28,5,12289},{18,5,13},{26,5,3073}, + {22,5,193},{64,5,0} +}; diff --git a/packages/runtime/vendor/zlib/inflate.c b/packages/runtime/vendor/zlib/inflate.c index 94ecff015..0742ce10e 100644 --- a/packages/runtime/vendor/zlib/inflate.c +++ b/packages/runtime/vendor/zlib/inflate.c @@ -1,5 +1,5 @@ /* inflate.c -- zlib decompression - * Copyright (C) 1995-2022 Mark Adler + * Copyright (C) 1995-2026 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -85,12 +85,6 @@ #include "inflate.h" #include "inffast.h" -#ifdef MAKEFIXED -# ifndef BUILDFIXED -# define BUILDFIXED -# endif -#endif - local int inflateStateCheck(z_streamp strm) { struct inflate_state FAR *state; if (strm == Z_NULL || @@ -110,6 +104,7 @@ int ZEXPORT inflateResetKeep(z_streamp strm) { state = (struct inflate_state FAR *)strm->state; strm->total_in = strm->total_out = state->total = 0; strm->msg = Z_NULL; + strm->data_type = 0; if (state->wrap) /* to support ill-conceived Java test suite */ strm->adler = state->wrap & 1; state->mode = HEAD; @@ -202,11 +197,13 @@ int ZEXPORT inflateInit2_(z_streamp strm, int windowBits, state = (struct inflate_state FAR *) ZALLOC(strm, 1, sizeof(struct inflate_state)); if (state == Z_NULL) return Z_MEM_ERROR; + zmemzero(state, sizeof(struct inflate_state)); Tracev((stderr, "inflate: allocated\n")); strm->state = (struct internal_state FAR *)state; state->strm = strm; state->window = Z_NULL; state->mode = HEAD; /* to pass state test in inflateReset2() */ + state->check = 1L; /* 1L is the result of adler32() zero length data */ ret = inflateReset2(strm, windowBits); if (ret != Z_OK) { ZFREE(strm, state); @@ -234,123 +231,11 @@ int ZEXPORT inflatePrime(z_streamp strm, int bits, int value) { } if (bits > 16 || state->bits + (uInt)bits > 32) return Z_STREAM_ERROR; value &= (1L << bits) - 1; - state->hold += (unsigned)value << state->bits; + state->hold += (unsigned long)value << state->bits; state->bits += (uInt)bits; return Z_OK; } -/* - Return state with length and distance decoding tables and index sizes set to - fixed code decoding. Normally this returns fixed tables from inffixed.h. - If BUILDFIXED is defined, then instead this routine builds the tables the - first time it's called, and returns those tables the first time and - thereafter. This reduces the size of the code by about 2K bytes, in - exchange for a little execution time. However, BUILDFIXED should not be - used for threaded applications, since the rewriting of the tables and virgin - may not be thread-safe. - */ -local void fixedtables(struct inflate_state FAR *state) { -#ifdef BUILDFIXED - static int virgin = 1; - static code *lenfix, *distfix; - static code fixed[544]; - - /* build fixed huffman tables if first call (may not be thread safe) */ - if (virgin) { - unsigned sym, bits; - static code *next; - - /* literal/length table */ - sym = 0; - while (sym < 144) state->lens[sym++] = 8; - while (sym < 256) state->lens[sym++] = 9; - while (sym < 280) state->lens[sym++] = 7; - while (sym < 288) state->lens[sym++] = 8; - next = fixed; - lenfix = next; - bits = 9; - inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work); - - /* distance table */ - sym = 0; - while (sym < 32) state->lens[sym++] = 5; - distfix = next; - bits = 5; - inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work); - - /* do this just once */ - virgin = 0; - } -#else /* !BUILDFIXED */ -# include "inffixed.h" -#endif /* BUILDFIXED */ - state->lencode = lenfix; - state->lenbits = 9; - state->distcode = distfix; - state->distbits = 5; -} - -#ifdef MAKEFIXED -#include - -/* - Write out the inffixed.h that is #include'd above. Defining MAKEFIXED also - defines BUILDFIXED, so the tables are built on the fly. makefixed() writes - those tables to stdout, which would be piped to inffixed.h. A small program - can simply call makefixed to do this: - - void makefixed(void); - - int main(void) - { - makefixed(); - return 0; - } - - Then that can be linked with zlib built with MAKEFIXED defined and run: - - a.out > inffixed.h - */ -void makefixed(void) -{ - unsigned low, size; - struct inflate_state state; - - fixedtables(&state); - puts(" /* inffixed.h -- table for decoding fixed codes"); - puts(" * Generated automatically by makefixed()."); - puts(" */"); - puts(""); - puts(" /* WARNING: this file should *not* be used by applications."); - puts(" It is part of the implementation of this library and is"); - puts(" subject to change. Applications should only use zlib.h."); - puts(" */"); - puts(""); - size = 1U << 9; - printf(" static const code lenfix[%u] = {", size); - low = 0; - for (;;) { - if ((low % 7) == 0) printf("\n "); - printf("{%u,%u,%d}", (low & 127) == 99 ? 64 : state.lencode[low].op, - state.lencode[low].bits, state.lencode[low].val); - if (++low == size) break; - putchar(','); - } - puts("\n };"); - size = 1U << 5; - printf("\n static const code distfix[%u] = {", size); - low = 0; - for (;;) { - if ((low % 6) == 0) printf("\n "); - printf("{%u,%u,%d}", state.distcode[low].op, state.distcode[low].bits, - state.distcode[low].val); - if (++low == size) break; - putchar(','); - } - puts("\n };"); -} -#endif /* MAKEFIXED */ - /* Update the window with the last wsize (normally 32K) bytes written before returning. If window does not exist yet, create it. This is only called @@ -642,12 +527,12 @@ int ZEXPORT inflate(z_streamp strm, int flush) { if ( #endif ((BITS(8) << 8) + (hold >> 8)) % 31) { - strm->msg = (char *)"incorrect header check"; + strm->msg = (z_const char *)"incorrect header check"; state->mode = BAD; break; } if (BITS(4) != Z_DEFLATED) { - strm->msg = (char *)"unknown compression method"; + strm->msg = (z_const char *)"unknown compression method"; state->mode = BAD; break; } @@ -656,7 +541,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { if (state->wbits == 0) state->wbits = len; if (len > 15 || len > state->wbits) { - strm->msg = (char *)"invalid window size"; + strm->msg = (z_const char *)"invalid window size"; state->mode = BAD; break; } @@ -672,12 +557,12 @@ int ZEXPORT inflate(z_streamp strm, int flush) { NEEDBITS(16); state->flags = (int)(hold); if ((state->flags & 0xff) != Z_DEFLATED) { - strm->msg = (char *)"unknown compression method"; + strm->msg = (z_const char *)"unknown compression method"; state->mode = BAD; break; } if (state->flags & 0xe000) { - strm->msg = (char *)"unknown header flags set"; + strm->msg = (z_const char *)"unknown header flags set"; state->mode = BAD; break; } @@ -793,7 +678,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { if (state->flags & 0x0200) { NEEDBITS(16); if ((state->wrap & 4) && hold != (state->check & 0xffff)) { - strm->msg = (char *)"header crc mismatch"; + strm->msg = (z_const char *)"header crc mismatch"; state->mode = BAD; break; } @@ -840,7 +725,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { state->mode = STORED; break; case 1: /* fixed block */ - fixedtables(state); + inflate_fixed(state); Tracev((stderr, "inflate: fixed codes block%s\n", state->last ? " (last)" : "")); state->mode = LEN_; /* decode codes */ @@ -854,8 +739,8 @@ int ZEXPORT inflate(z_streamp strm, int flush) { state->last ? " (last)" : "")); state->mode = TABLE; break; - case 3: - strm->msg = (char *)"invalid block type"; + default: + strm->msg = (z_const char *)"invalid block type"; state->mode = BAD; } DROPBITS(2); @@ -864,7 +749,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { BYTEBITS(); /* go to byte boundary */ NEEDBITS(32); if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) { - strm->msg = (char *)"invalid stored block lengths"; + strm->msg = (z_const char *)"invalid stored block lengths"; state->mode = BAD; break; } @@ -905,7 +790,8 @@ int ZEXPORT inflate(z_streamp strm, int flush) { DROPBITS(4); #ifndef PKZIP_BUG_WORKAROUND if (state->nlen > 286 || state->ndist > 30) { - strm->msg = (char *)"too many length or distance symbols"; + strm->msg = (z_const char *) + "too many length or distance symbols"; state->mode = BAD; break; } @@ -923,12 +809,12 @@ int ZEXPORT inflate(z_streamp strm, int flush) { while (state->have < 19) state->lens[order[state->have++]] = 0; state->next = state->codes; - state->lencode = (const code FAR *)(state->next); + state->lencode = state->distcode = (const code FAR *)(state->next); state->lenbits = 7; ret = inflate_table(CODES, state->lens, 19, &(state->next), &(state->lenbits), state->work); if (ret) { - strm->msg = (char *)"invalid code lengths set"; + strm->msg = (z_const char *)"invalid code lengths set"; state->mode = BAD; break; } @@ -952,7 +838,8 @@ int ZEXPORT inflate(z_streamp strm, int flush) { NEEDBITS(here.bits + 2); DROPBITS(here.bits); if (state->have == 0) { - strm->msg = (char *)"invalid bit length repeat"; + strm->msg = (z_const char *) + "invalid bit length repeat"; state->mode = BAD; break; } @@ -975,7 +862,8 @@ int ZEXPORT inflate(z_streamp strm, int flush) { DROPBITS(7); } if (state->have + copy > state->nlen + state->ndist) { - strm->msg = (char *)"invalid bit length repeat"; + strm->msg = (z_const char *) + "invalid bit length repeat"; state->mode = BAD; break; } @@ -989,30 +877,31 @@ int ZEXPORT inflate(z_streamp strm, int flush) { /* check for end-of-block code (better have one) */ if (state->lens[256] == 0) { - strm->msg = (char *)"invalid code -- missing end-of-block"; + strm->msg = (z_const char *) + "invalid code -- missing end-of-block"; state->mode = BAD; break; } /* build code tables -- note: do not change the lenbits or distbits - values here (9 and 6) without reading the comments in inftrees.h + values here (10 and 9) without reading the comments in inftrees.h concerning the ENOUGH constants, which depend on those values */ state->next = state->codes; state->lencode = (const code FAR *)(state->next); - state->lenbits = 9; + state->lenbits = 10; ret = inflate_table(LENS, state->lens, state->nlen, &(state->next), &(state->lenbits), state->work); if (ret) { - strm->msg = (char *)"invalid literal/lengths set"; + strm->msg = (z_const char *)"invalid literal/lengths set"; state->mode = BAD; break; } state->distcode = (const code FAR *)(state->next); - state->distbits = 6; + state->distbits = 9; ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist, &(state->next), &(state->distbits), state->work); if (ret) { - strm->msg = (char *)"invalid distances set"; + strm->msg = (z_const char *)"invalid distances set"; state->mode = BAD; break; } @@ -1024,7 +913,8 @@ int ZEXPORT inflate(z_streamp strm, int flush) { state->mode = LEN; /* fallthrough */ case LEN: - if (have >= 6 && left >= 258) { + if (have >= INFLATE_FAST_MIN_INPUT && + left >= INFLATE_FAST_MIN_OUTPUT) { RESTORE(); inflate_fast(strm, out); LOAD(); @@ -1066,7 +956,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { break; } if (here.op & 64) { - strm->msg = (char *)"invalid literal/length code"; + strm->msg = (z_const char *)"invalid literal/length code"; state->mode = BAD; break; } @@ -1104,7 +994,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { DROPBITS(here.bits); state->back += here.bits; if (here.op & 64) { - strm->msg = (char *)"invalid distance code"; + strm->msg = (z_const char *)"invalid distance code"; state->mode = BAD; break; } @@ -1121,7 +1011,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { } #ifdef INFLATE_STRICT if (state->offset > state->dmax) { - strm->msg = (char *)"invalid distance too far back"; + strm->msg = (z_const char *)"invalid distance too far back"; state->mode = BAD; break; } @@ -1136,7 +1026,8 @@ int ZEXPORT inflate(z_streamp strm, int flush) { copy = state->offset - copy; if (copy > state->whave) { if (state->sane) { - strm->msg = (char *)"invalid distance too far back"; + strm->msg = (z_const char *) + "invalid distance too far back"; state->mode = BAD; break; } @@ -1195,7 +1086,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { state->flags ? hold : #endif ZSWAP32(hold)) != state->check) { - strm->msg = (char *)"incorrect data check"; + strm->msg = (z_const char *)"incorrect data check"; state->mode = BAD; break; } @@ -1209,7 +1100,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { if (state->wrap && state->flags) { NEEDBITS(32); if ((state->wrap & 4) && hold != (state->total & 0xffffffff)) { - strm->msg = (char *)"incorrect length check"; + strm->msg = (z_const char *)"incorrect length check"; state->mode = BAD; break; } @@ -1440,7 +1331,6 @@ int ZEXPORT inflateCopy(z_streamp dest, z_streamp source) { struct inflate_state FAR *state; struct inflate_state FAR *copy; unsigned char FAR *window; - unsigned wsize; /* check input */ if (inflateStateCheck(source) || dest == Z_NULL) @@ -1451,6 +1341,7 @@ int ZEXPORT inflateCopy(z_streamp dest, z_streamp source) { copy = (struct inflate_state FAR *) ZALLOC(source, 1, sizeof(struct inflate_state)); if (copy == Z_NULL) return Z_MEM_ERROR; + zmemzero(copy, sizeof(struct inflate_state)); window = Z_NULL; if (state->window != Z_NULL) { window = (unsigned char FAR *) @@ -1462,8 +1353,8 @@ int ZEXPORT inflateCopy(z_streamp dest, z_streamp source) { } /* copy state */ - zmemcpy((voidpf)dest, (voidpf)source, sizeof(z_stream)); - zmemcpy((voidpf)copy, (voidpf)state, sizeof(struct inflate_state)); + zmemcpy(dest, source, sizeof(z_stream)); + zmemcpy(copy, state, sizeof(struct inflate_state)); copy->strm = dest; if (state->lencode >= state->codes && state->lencode <= state->codes + ENOUGH - 1) { @@ -1471,10 +1362,8 @@ int ZEXPORT inflateCopy(z_streamp dest, z_streamp source) { copy->distcode = copy->codes + (state->distcode - state->codes); } copy->next = copy->codes + (state->next - state->codes); - if (window != Z_NULL) { - wsize = 1U << state->wbits; - zmemcpy(window, state->window, wsize); - } + if (window != Z_NULL) + zmemcpy(window, state->window, state->whave); copy->window = window; dest->state = (struct internal_state FAR *)copy; return Z_OK; diff --git a/packages/runtime/vendor/zlib/inflate.h b/packages/runtime/vendor/zlib/inflate.h index f127b6b1f..f758e0dcc 100644 --- a/packages/runtime/vendor/zlib/inflate.h +++ b/packages/runtime/vendor/zlib/inflate.h @@ -100,7 +100,7 @@ struct inflate_state { unsigned char FAR *window; /* allocated sliding window, if needed */ /* bit accumulator */ unsigned long hold; /* input bit accumulator */ - unsigned bits; /* number of bits in "in" */ + unsigned bits; /* number of bits in hold */ /* for string and stored block copying */ unsigned length; /* literal or length of data to copy */ unsigned offset; /* distance back to copy string from */ diff --git a/packages/runtime/vendor/zlib/inftrees.c b/packages/runtime/vendor/zlib/inftrees.c index 98cfe1644..99d8d7730 100644 --- a/packages/runtime/vendor/zlib/inftrees.c +++ b/packages/runtime/vendor/zlib/inftrees.c @@ -1,15 +1,29 @@ /* inftrees.c -- generate Huffman trees for efficient decoding - * Copyright (C) 1995-2024 Mark Adler + * Copyright (C) 1995-2026 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ +#ifdef MAKEFIXED +# ifndef BUILDFIXED +# define BUILDFIXED +# endif +#endif +#ifdef BUILDFIXED +# define Z_ONCE +#endif + #include "zutil.h" #include "inftrees.h" +#include "inflate.h" + +#ifndef NULL +# define NULL 0 +#endif #define MAXBITS 15 const char inflate_copyright[] = - " inflate 1.3.1 Copyright 1995-2024 Mark Adler "; + " inflate 1.3.2.1 Copyright 1995-2026 Mark Adler "; /* If you use the zlib library in a product, an acknowledgment is welcome in the documentation of your product. If for some reason you cannot @@ -47,9 +61,9 @@ int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens, unsigned mask; /* mask for low root bits */ code here; /* table entry for duplication */ code FAR *next; /* next available space in table */ - const unsigned short FAR *base; /* base value table to use */ - const unsigned short FAR *extra; /* extra bits table to use */ - unsigned match; /* use base and extra for symbol >= match */ + const unsigned short FAR *base = NULL; /* base value table to use */ + const unsigned short FAR *extra = NULL; /* extra bits table to use */ + unsigned match = 0; /* use base and extra for symbol >= match */ unsigned short count[MAXBITS+1]; /* number of codes of each length */ unsigned short offs[MAXBITS+1]; /* offsets in table for each length */ static const unsigned short lbase[31] = { /* Length codes 257..285 base */ @@ -57,7 +71,7 @@ int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0}; static const unsigned short lext[31] = { /* Length codes 257..285 extra */ 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, - 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 203, 77}; + 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 68, 193}; static const unsigned short dbase[32] = { /* Distance codes 0..29 base */ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, @@ -175,7 +189,6 @@ int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens, /* set up for code type */ switch (type) { case CODES: - base = extra = work; /* dummy value--not used */ match = 20; break; case LENS: @@ -183,10 +196,9 @@ int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens, extra = lext; match = 257; break; - default: /* DISTS */ + case DISTS: base = dbase; extra = dext; - match = 0; } /* initialize state for loop */ @@ -297,3 +309,116 @@ int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens, *bits = root; return 0; } + +#ifdef BUILDFIXED +/* + If this is compiled with BUILDFIXED defined, and if inflate will be used in + multiple threads, and if atomics are not available, then inflate() must be + called with a fixed block (e.g. 0x03 0x00) to initialize the tables and must + return before any other threads are allowed to call inflate. + */ + +static code *lenfix, *distfix; +static code fixed[544]; + +/* State for z_once(). */ +local z_once_t built = Z_ONCE_INIT; + +local void buildtables(void) { + unsigned sym, bits; + static code *next; + unsigned short lens[288], work[288]; + + /* literal/length table */ + sym = 0; + while (sym < 144) lens[sym++] = 8; + while (sym < 256) lens[sym++] = 9; + while (sym < 280) lens[sym++] = 7; + while (sym < 288) lens[sym++] = 8; + next = fixed; + lenfix = next; + bits = 9; + inflate_table(LENS, lens, 288, &(next), &(bits), work); + + /* distance table */ + sym = 0; + while (sym < 32) lens[sym++] = 5; + distfix = next; + bits = 5; + inflate_table(DISTS, lens, 32, &(next), &(bits), work); +} +#else /* !BUILDFIXED */ +# include "inffixed.h" +#endif /* BUILDFIXED */ + +/* + Return state with length and distance decoding tables and index sizes set to + fixed code decoding. Normally this returns fixed tables from inffixed.h. + If BUILDFIXED is defined, then instead this routine builds the tables the + first time it's called, and returns those tables the first time and + thereafter. This reduces the size of the code by about 2K bytes, in + exchange for a little execution time. However, BUILDFIXED should not be + used for threaded applications if atomics are not available, as it will + not be thread-safe. + */ +void inflate_fixed(struct inflate_state FAR *state) { +#ifdef BUILDFIXED + z_once(&built, buildtables); +#endif /* BUILDFIXED */ + state->lencode = lenfix; + state->lenbits = 9; + state->distcode = distfix; + state->distbits = 5; +} + +#ifdef MAKEFIXED +#include + +/* + Write out the inffixed.h that will be #include'd above. Defining MAKEFIXED + also defines BUILDFIXED, so the tables are built on the fly. main() writes + those tables to stdout, which would directed to inffixed.h. Compile this + along with zutil.c: + + cc -DMAKEFIXED -o fix inftrees.c zutil.c + ./fix > inffixed.h + */ +int main(void) { + unsigned low, size; + struct inflate_state state; + + inflate_fixed(&state); + puts("/* inffixed.h -- table for decoding fixed codes"); + puts(" * Generated automatically by makefixed()."); + puts(" */"); + puts(""); + puts("/* WARNING: this file should *not* be used by applications."); + puts(" It is part of the implementation of this library and is"); + puts(" subject to change. Applications should only use zlib.h."); + puts(" */"); + puts(""); + size = 1U << 9; + printf("static const code lenfix[%u] = {", size); + low = 0; + for (;;) { + if ((low % 7) == 0) printf("\n "); + printf("{%u,%u,%d}", (low & 127) == 99 ? 64 : state.lencode[low].op, + state.lencode[low].bits, state.lencode[low].val); + if (++low == size) break; + putchar(','); + } + puts("\n};"); + size = 1U << 5; + printf("\nstatic const code distfix[%u] = {", size); + low = 0; + for (;;) { + if ((low % 6) == 0) printf("\n "); + printf("{%u,%u,%d}", state.distcode[low].op, state.distcode[low].bits, + state.distcode[low].val); + if (++low == size) break; + putchar(','); + } + puts("\n};"); + return 0; +} +#endif /* MAKEFIXED */ diff --git a/packages/runtime/vendor/zlib/inftrees.h b/packages/runtime/vendor/zlib/inftrees.h index 396f74b5d..c572f49d5 100644 --- a/packages/runtime/vendor/zlib/inftrees.h +++ b/packages/runtime/vendor/zlib/inftrees.h @@ -1,5 +1,5 @@ /* inftrees.h -- header to use inftrees.c - * Copyright (C) 1995-2005, 2010 Mark Adler + * Copyright (C) 1995-2026 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -36,17 +36,17 @@ typedef struct { */ /* Maximum size of the dynamic table. The maximum number of code structures is - 1444, which is the sum of 852 for literal/length codes and 592 for distance + 1924, which is the sum of 1332 for literal/length codes and 592 for distance codes. These values were found by exhaustive searches using the program examples/enough.c found in the zlib distribution. The arguments to that program are the number of symbols, the initial root table size, and the - maximum bit length of a code. "enough 286 9 15" for literal/length codes - returns 852, and "enough 30 6 15" for distance codes returns 592. The - initial root table size (9 or 6) is found in the fifth argument of the + maximum bit length of a code. "enough 286 10 15" for literal/length codes + returns 1332, and "enough 30 9 15" for distance codes returns 592. + The initial root table size (10 or 9) is found in the fifth argument of the inflate_table() calls in inflate.c and infback.c. If the root table size is changed, then these maximum sizes would be need to be recalculated and updated. */ -#define ENOUGH_LENS 852 +#define ENOUGH_LENS 1332 #define ENOUGH_DISTS 592 #define ENOUGH (ENOUGH_LENS+ENOUGH_DISTS) @@ -60,3 +60,5 @@ typedef enum { int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens, unsigned codes, code FAR * FAR *table, unsigned FAR *bits, unsigned short FAR *work); +struct inflate_state; +void ZLIB_INTERNAL inflate_fixed(struct inflate_state FAR *state); diff --git a/packages/runtime/vendor/zlib/slide_hash_simd.h b/packages/runtime/vendor/zlib/slide_hash_simd.h new file mode 100644 index 000000000..1000b774c --- /dev/null +++ b/packages/runtime/vendor/zlib/slide_hash_simd.h @@ -0,0 +1,116 @@ +/* slide_hash_simd.h + * + * Copyright 2022 The Chromium Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the Chromium source repository LICENSE file. + */ + +#ifndef SLIDE_HASH_SIMD_H +#define SLIDE_HASH_SIMD_H + +#include "deflate.h" + +#ifndef INLINE +#if defined(_MSC_VER) && !defined(__clang__) +#define INLINE __inline +#else +#define INLINE inline +#endif +#endif + +#if defined(CPU_NO_SIMD) + +#error SIMD has been disabled for your build target + +#elif defined(DEFLATE_SLIDE_HASH_SSE2) + +#include /* SSE2 */ + +#define Z_SLIDE_INIT_SIMD(wsize) _mm_set1_epi16((ush)(wsize)) + +#define Z_SLIDE_HASH_SIMD(table, size, vector_wsize) \ + for (const Posf* const end = table + size; table != end;) { \ + __m128i vO = _mm_loadu_si128((__m128i *)(table + 0)); \ + vO = _mm_subs_epu16(vO, vector_wsize); \ + _mm_storeu_si128((__m128i *)(table + 0), vO); \ + table += 8; \ + } + +typedef __m128i z_vec128i_u16x8_t; + +#elif defined(DEFLATE_SLIDE_HASH_NEON) + +#include /* NEON */ + +#define Z_SLIDE_INIT_SIMD(wsize) vdupq_n_u16((ush)(wsize)) + +#define Z_SLIDE_HASH_SIMD(table, size, vector_wsize) \ + for (const Posf* const end = table + size; table != end;) { \ + uint16x8_t vO = vld1q_u16(table + 0); \ + uint16x8_t v8 = vld1q_u16(table + 8); \ + vO = vqsubq_u16(vO, vector_wsize); \ + v8 = vqsubq_u16(v8, vector_wsize); \ + vst1q_u16(table + 0, vO); \ + vst1q_u16(table + 8, v8); \ + table += 8 + 8; \ + } + +typedef uint16x8_t z_vec128i_u16x8_t; + +#else + +#error slide_hash_simd is not defined for your build target + +#endif + +/* =========================================================================== + * Slide the hash table when sliding the window down (could be avoided with 32 + * bit values at the expense of memory usage). We slide even when level == 0 to + * keep the hash table consistent if we switch back to level > 0 later. + */ +local INLINE void slide_hash_simd( + Posf *head, Posf *prev, const uInt w_size, const uInt hash_size) { + /* + * The SIMD implementation of the hash table slider assumes: + * + * 1. hash chain offset is 2 bytes. Should be true as Pos is "ush" type. + */ + Assert(sizeof(Pos) == 2, "Pos type size error: should be 2 bytes"); + Assert(sizeof(ush) == 2, "ush type size error: should be 2 bytes"); + + Assert(hash_size <= (1 << 16), "Hash table maximum size error"); + Assert(hash_size >= (1 << 8), "Hash table minimum size error"); + Assert(w_size == (ush)w_size, "Prev table size error"); + + /* + * 2. The hash & prev table sizes are a multiple of 32 bytes (256 bits), + * since the NEON table slider moves two 128-bit items per loop (loop is + * unrolled on NEON for performance, see http://crbug.com/863257). + */ + Assert(!((hash_size * sizeof(head[0])) & (32 - 1)), + "Hash table size error: should be a multiple of 32 bytes"); + Assert(!((w_size * sizeof(prev[0])) & (32 - 1)), + "Prev table size error: should be a multiple of 32 bytes"); + + /* + * Duplicate (ush)w_size in each uint16_t component of a 128-bit vector. + */ + const z_vec128i_u16x8_t vec_wsize = Z_SLIDE_INIT_SIMD(w_size); + + /* + * Slide {head,prev} hash chain values: subtracts (ush)w_size from every + * value with a saturating SIMD subtract, to clamp the result to 0(NIL), + * to implement slide_hash() `(m >= wsize ? m - wsize : NIL);` code. + */ + Z_SLIDE_HASH_SIMD(head, hash_size, vec_wsize); +#ifndef FASTEST + Z_SLIDE_HASH_SIMD(prev, w_size, vec_wsize); +#endif + +} + +#undef z_vec128i_u16x8_t +#undef Z_SLIDE_HASH_SIMD +#undef Z_SLIDE_INIT_SIMD + +#endif /* SLIDE_HASH_SIMD_H */ diff --git a/packages/runtime/vendor/zlib/trees.c b/packages/runtime/vendor/zlib/trees.c index 6a523ef34..1aa155102 100644 --- a/packages/runtime/vendor/zlib/trees.c +++ b/packages/runtime/vendor/zlib/trees.c @@ -1,5 +1,5 @@ /* trees.c -- output deflated data using Huffman coding - * Copyright (C) 1995-2024 Jean-loup Gailly + * Copyright (C) 1995-2026 Jean-loup Gailly * detect_data_type() function provided freely by Cosmin Truta, 2006 * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -112,7 +112,7 @@ local int base_dist[D_CODES]; #else # include "trees.h" -#endif /* GEN_TREES_H */ +#endif /* defined(GEN_TREES_H) || !defined(STDC) */ struct static_tree_desc_s { const ct_data *static_tree; /* static tree or NULL */ @@ -141,18 +141,25 @@ local TCONST static_tree_desc static_bl_desc = * Output a short LSB first on the stream. * IN assertion: there is enough room in pendingBuf. */ +#if defined(DEFLATE_CHUNK_WRITE_64LE) +#define put_short(s, w) { \ + uint16_t data = (uint16_t)(w); \ + zmemcpy(&s->pending_buf[s->pending], &data, sizeof(data)); \ + s->pending += 2; \ + } +#else #define put_short(s, w) { \ put_byte(s, (uch)((w) & 0xff)); \ put_byte(s, (uch)((ush)(w) >> 8)); \ } - +#endif /* DEFLATE_CHUNK_WRITE_64LE */ /* =========================================================================== * Reverse the first len bits of a code, using straightforward code (a faster * method would use a table) * IN assertion: 1 <= len <= 15 */ local unsigned bi_reverse(unsigned code, int len) { - register unsigned res = 0; + unsigned res = 0; do { res |= code & 1; code >>= 1, res <<= 1; @@ -164,6 +171,13 @@ local unsigned bi_reverse(unsigned code, int len) { * Flush the bit buffer, keeping at most 7 bits in it. */ local void bi_flush(deflate_state *s) { +#if defined(DEFLATE_CHUNK_WRITE_64LE) + while (s->bi_valid >= 16) { + put_short(s, s->bi_buf); + s->bi_buf >>= 16; + s->bi_valid -= 16; + } +#endif /* DEFLATE_CHUNK_WRITE_64LE */ if (s->bi_valid == 16) { put_short(s, s->bi_buf); s->bi_buf = 0; @@ -173,21 +187,31 @@ local void bi_flush(deflate_state *s) { s->bi_buf >>= 8; s->bi_valid -= 8; } + + Assert(s->bi_valid >= 0 && s->bi_valid <= 7, "bad bi_flush"); } /* =========================================================================== * Flush the bit buffer and align the output on a byte boundary */ local void bi_windup(deflate_state *s) { +#if defined(DEFLATE_CHUNK_WRITE_64LE) + while (s->bi_valid >= 16) { + put_short(s, s->bi_buf); + s->bi_buf >>= 16; + s->bi_valid -= 16; + } +#endif /* DEFLATE_CHUNK_WRITE_64LE */ if (s->bi_valid > 8) { put_short(s, s->bi_buf); } else if (s->bi_valid > 0) { put_byte(s, (Byte)s->bi_buf); } + s->bi_used = ((s->bi_valid - 1) & 7) + 1; s->bi_buf = 0; s->bi_valid = 0; #ifdef ZLIB_DEBUG - s->bits_sent = (s->bits_sent + 7) & ~7; + s->bits_sent = (s->bits_sent + 7) & ~(ulg)7; #endif } @@ -248,7 +272,28 @@ local void gen_trees_header(void); * Send a value on a given number of bits. * IN assertion: length <= 16 and value fits in length bits. */ +#if defined(DEFLATE_CHUNK_WRITE_64LE) +local void send_bits(deflate_state *s, uint64_t value, int length) +{ + Tracevv((stderr," l %2d v %4llx ", length, (unsigned long long)value)); + Assert(s->bi_valid >= 0 && s->bi_valid <= 63, "invalid bi_valid"); + Assert(length > 0 && length <= 15, "invalid length"); #ifdef ZLIB_DEBUG + s->bits_sent += (ulg)length; +#endif + + s->bi_buf |= (value << s->bi_valid); + s->bi_valid += length; + + if (s->bi_valid >= Buf_size) { + zmemcpy(&s->pending_buf[s->pending], &s->bi_buf, sizeof(s->bi_buf)); + s->pending += 8; + s->bi_valid -= Buf_size; + s->bi_buf = value >> (length - s->bi_valid); + } + Assert(s->bi_valid >= 0 && s->bi_valid <= 63, "invalid bi_valid"); +} +#elif defined(ZLIB_DEBUG) local void send_bits(deflate_state *s, int value, int length) { Tracevv((stderr," l %2d v %4x ", length, value)); Assert(length > 0 && length <= 15, "invalid length"); @@ -268,8 +313,7 @@ local void send_bits(deflate_state *s, int value, int length) { s->bi_valid += length; } } -#else /* !ZLIB_DEBUG */ - +#else /* !ZLIB_DEBUG && !DEFLATE_CHUNK_WRITE_64LE */ #define send_bits(s, value, length) \ { int len = length;\ if (s->bi_valid > (int)Buf_size - len) {\ @@ -283,7 +327,7 @@ local void send_bits(deflate_state *s, int value, int length) { s->bi_valid += len;\ }\ } -#endif /* ZLIB_DEBUG */ +#endif /* DEFLATE_CHUNK_WRITE_64LE */ /* the arguments must not have side effects */ @@ -466,6 +510,7 @@ void ZLIB_INTERNAL _tr_init(deflate_state *s) { s->bi_buf = 0; s->bi_valid = 0; + s->bi_used = 0; #ifdef ZLIB_DEBUG s->compressed_len = 0L; s->bits_sent = 0L; @@ -724,7 +769,7 @@ local void scan_tree(deflate_state *s, ct_data *tree, int max_code) { if (++count < max_count && curlen == nextlen) { continue; } else if (count < min_count) { - s->bl_tree[curlen].Freq += count; + s->bl_tree[curlen].Freq += (ush)count; } else if (curlen != 0) { if (curlen != prevlen) s->bl_tree[curlen].Freq++; s->bl_tree[REP_3_6].Freq++; @@ -817,7 +862,7 @@ local int build_bl_tree(deflate_state *s) { } /* Update opt_len to include the bit length tree and counts */ s->opt_len += 3*((ulg)max_blindex + 1) + 5 + 5 + 4; - Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld", + Tracev((stderr, "\ndyn trees: dyn %lu, stat %lu", s->opt_len, s->static_len)); return max_blindex; @@ -843,13 +888,13 @@ local void send_all_trees(deflate_state *s, int lcodes, int dcodes, Tracev((stderr, "\nbl code %2d ", bl_order[rank])); send_bits(s, s->bl_tree[bl_order[rank]].Len, 3); } - Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent)); + Tracev((stderr, "\nbl tree: sent %lu", s->bits_sent)); send_tree(s, (ct_data *)s->dyn_ltree, lcodes - 1); /* literal tree */ - Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent)); + Tracev((stderr, "\nlit tree: sent %lu", s->bits_sent)); send_tree(s, (ct_data *)s->dyn_dtree, dcodes - 1); /* distance tree */ - Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent)); + Tracev((stderr, "\ndist tree: sent %lu", s->bits_sent)); } /* =========================================================================== @@ -932,13 +977,14 @@ local void compress_block(deflate_state *s, const ct_data *ltree, extra = extra_dbits[code]; if (extra != 0) { dist -= (unsigned)base_dist[code]; - send_bits(s, dist, extra); /* send the extra distance bits */ + send_bits(s, (int)dist, extra); /* send the extra bits */ } } /* literal or match pair ? */ /* Check for no overlay of pending_buf on needed symbols */ #ifdef LIT_MEM - Assert(s->pending < 2 * (s->lit_bufsize + sx), "pendingBuf overflow"); + Assert(s->pending < (s->lit_bufsize << 1) + (sx << 1), + "pendingBuf overflow"); #else Assert(s->pending < s->lit_bufsize + sx, "pendingBuf overflow"); #endif @@ -1006,11 +1052,11 @@ void ZLIB_INTERNAL _tr_flush_block(deflate_state *s, charf *buf, /* Construct the literal and distance trees */ build_tree(s, (tree_desc *)(&(s->l_desc))); - Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len, + Tracev((stderr, "\nlit data: dyn %lu, stat %lu", s->opt_len, s->static_len)); build_tree(s, (tree_desc *)(&(s->d_desc))); - Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len, + Tracev((stderr, "\ndist data: dyn %lu, stat %lu", s->opt_len, s->static_len)); /* At this point, opt_len and static_len are the total bit lengths of * the compressed block data, excluding the tree representations. @@ -1083,7 +1129,7 @@ void ZLIB_INTERNAL _tr_flush_block(deflate_state *s, charf *buf, #endif } Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len >> 3, - s->compressed_len - 7*last)); + s->compressed_len - 7*(ulg)last)); } /* =========================================================================== diff --git a/packages/runtime/vendor/zlib/uncompr.c b/packages/runtime/vendor/zlib/uncompr.c index 5e256663b..2195e7855 100644 --- a/packages/runtime/vendor/zlib/uncompr.c +++ b/packages/runtime/vendor/zlib/uncompr.c @@ -1,5 +1,5 @@ /* uncompr.c -- decompress a memory buffer - * Copyright (C) 1995-2003, 2010, 2014, 2016 Jean-loup Gailly, Mark Adler + * Copyright (C) 1995-2026 Jean-loup Gailly, Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -23,24 +23,24 @@ memory, Z_BUF_ERROR if there was not enough room in the output buffer, or Z_DATA_ERROR if the input data was corrupted, including if the input data is an incomplete zlib stream. + + The _z versions of the functions take size_t length arguments. */ -int ZEXPORT uncompress2(Bytef *dest, uLongf *destLen, const Bytef *source, - uLong *sourceLen) { +int ZEXPORT uncompress2_z(Bytef *dest, z_size_t *destLen, const Bytef *source, + z_size_t *sourceLen) { z_stream stream; int err; const uInt max = (uInt)-1; - uLong len, left; - Byte buf[1]; /* for detection of incomplete stream when *destLen == 0 */ + z_size_t len, left; + + if (sourceLen == NULL || (*sourceLen > 0 && source == NULL) || + destLen == NULL || (*destLen > 0 && dest == NULL)) + return Z_STREAM_ERROR; len = *sourceLen; - if (*destLen) { - left = *destLen; - *destLen = 0; - } - else { - left = 1; - dest = buf; - } + left = *destLen; + if (left == 0 && dest == Z_NULL) + dest = (Bytef *)&stream.reserved; /* next_out cannot be NULL */ stream.next_in = (z_const Bytef *)source; stream.avail_in = 0; @@ -56,30 +56,46 @@ int ZEXPORT uncompress2(Bytef *dest, uLongf *destLen, const Bytef *source, do { if (stream.avail_out == 0) { - stream.avail_out = left > (uLong)max ? max : (uInt)left; + stream.avail_out = left > (z_size_t)max ? max : (uInt)left; left -= stream.avail_out; } if (stream.avail_in == 0) { - stream.avail_in = len > (uLong)max ? max : (uInt)len; + stream.avail_in = len > (z_size_t)max ? max : (uInt)len; len -= stream.avail_in; } err = inflate(&stream, Z_NO_FLUSH); } while (err == Z_OK); - *sourceLen -= len + stream.avail_in; - if (dest != buf) - *destLen = stream.total_out; - else if (stream.total_out && err == Z_BUF_ERROR) - left = 1; + /* Set len and left to the unused input data and unused output space. Set + *sourceLen to the amount of input consumed. Set *destLen to the amount + of data produced. */ + len += stream.avail_in; + left += stream.avail_out; + *sourceLen -= len; + *destLen -= left; inflateEnd(&stream); return err == Z_STREAM_END ? Z_OK : err == Z_NEED_DICT ? Z_DATA_ERROR : - err == Z_BUF_ERROR && left + stream.avail_out ? Z_DATA_ERROR : + err == Z_BUF_ERROR && len == 0 ? Z_DATA_ERROR : err; } - +int ZEXPORT uncompress2(Bytef *dest, uLongf *destLen, const Bytef *source, + uLong *sourceLen) { + int ret; + z_size_t got = *destLen, used = *sourceLen; + ret = uncompress2_z(dest, &got, source, &used); + *sourceLen = (uLong)used; + *destLen = (uLong)got; + return ret; +} +int ZEXPORT uncompress_z(Bytef *dest, z_size_t *destLen, const Bytef *source, + z_size_t sourceLen) { + z_size_t used = sourceLen; + return uncompress2_z(dest, destLen, source, &used); +} int ZEXPORT uncompress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen) { - return uncompress2(dest, destLen, source, &sourceLen); + uLong used = sourceLen; + return uncompress2(dest, destLen, source, &used); } diff --git a/packages/runtime/vendor/zlib/zconf.h b/packages/runtime/vendor/zlib/zconf.h index 62adc8d84..4d64a6530 100644 --- a/packages/runtime/vendor/zlib/zconf.h +++ b/packages/runtime/vendor/zlib/zconf.h @@ -1,5 +1,5 @@ /* zconf.h -- configuration of the zlib compression library - * Copyright (C) 1995-2024 Jean-loup Gailly, Mark Adler + * Copyright (C) 1995-2026 Jean-loup Gailly, Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -8,6 +8,18 @@ #ifndef ZCONF_H #define ZCONF_H +/* + * This library is also built as a part of AOSP, which does not need to include + * chromeconf.h. This config does not want chromeconf.h, so it can set this + * macro to opt out. While this works today, there's no guarantee that building + * zlib outside of Chromium keeps working in the future. + */ +#if !defined(CHROMIUM_ZLIB_NO_CHROMECONF) +/* This include does prefixing as below, but with an updated set of names. Also + * sets up export macros in component builds. */ +//#include "chromeconf.h" +#endif + /* * If you *really* need a unique prefix for all types and library functions, * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. @@ -33,7 +45,10 @@ # ifndef Z_SOLO # define compress z_compress # define compress2 z_compress2 +# define compress_z z_compress_z +# define compress2_z z_compress2_z # define compressBound z_compressBound +# define compressBound_z z_compressBound_z # endif # define crc32 z_crc32 # define crc32_combine z_crc32_combine @@ -44,6 +59,7 @@ # define crc32_z z_crc32_z # define deflate z_deflate # define deflateBound z_deflateBound +# define deflateBound_z z_deflateBound_z # define deflateCopy z_deflateCopy # define deflateEnd z_deflateEnd # define deflateGetDictionary z_deflateGetDictionary @@ -59,6 +75,7 @@ # define deflateSetDictionary z_deflateSetDictionary # define deflateSetHeader z_deflateSetHeader # define deflateTune z_deflateTune +# define deflateUsed z_deflateUsed # define deflate_copyright z_deflate_copyright # define get_crc_table z_get_crc_table # ifndef Z_SOLO @@ -128,9 +145,12 @@ # define inflate_copyright z_inflate_copyright # define inflate_fast z_inflate_fast # define inflate_table z_inflate_table +# define inflate_fixed z_inflate_fixed # ifndef Z_SOLO # define uncompress z_uncompress # define uncompress2 z_uncompress2 +# define uncompress_z z_uncompress_z +# define uncompress2_z z_uncompress2_z # endif # define zError z_zError # ifndef Z_SOLO @@ -234,10 +254,12 @@ # endif #endif -#if defined(ZLIB_CONST) && !defined(z_const) -# define z_const const -#else -# define z_const +#ifndef z_const +# ifdef ZLIB_CONST +# define z_const const +# else +# define z_const +# endif #endif #ifdef Z_SOLO @@ -388,6 +410,9 @@ #ifndef FAR # define FAR #endif +#ifndef far +# define far +#endif #if !defined(__MACTYPES__) typedef unsigned char Byte; /* 8 bits */ @@ -433,11 +458,11 @@ typedef uLong FAR uLongf; typedef unsigned long z_crc_t; #endif -#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ +#if !defined(_WIN32) # define Z_HAVE_UNISTD_H #endif -#ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */ +#if defined(HAVE_STDARG_H) && HAVE_STDARG_H-0 # define Z_HAVE_STDARG_H #endif @@ -470,12 +495,8 @@ typedef uLong FAR uLongf; #endif #ifndef Z_HAVE_UNISTD_H -# ifdef __WATCOMC__ -# define Z_HAVE_UNISTD_H -# endif -#endif -#ifndef Z_HAVE_UNISTD_H -# if defined(_LARGEFILE64_SOURCE) && !defined(_WIN32) +# if defined(__WATCOMC__) || defined(__GO32__) || \ + (defined(_LARGEFILE64_SOURCE) && !defined(_WIN32)) # define Z_HAVE_UNISTD_H # endif #endif @@ -510,17 +531,19 @@ typedef uLong FAR uLongf; #endif #ifndef z_off_t -# define z_off_t long +# define z_off_t long long #endif #if !defined(_WIN32) && defined(Z_LARGE64) # define z_off64_t off64_t +#elif defined(__MINGW32__) +# define z_off64_t long long +#elif defined(_WIN32) && !defined(__GNUC__) +# define z_off64_t __int64 +#elif defined(__GO32__) +# define z_off64_t offset_t #else -# if defined(_WIN32) && !defined(__GNUC__) -# define z_off64_t __int64 -# else -# define z_off64_t z_off_t -# endif +# define z_off64_t z_off_t #endif /* MVS linker does not support external names larger than 8 bytes */ diff --git a/packages/runtime/vendor/zlib/zlib.h b/packages/runtime/vendor/zlib/zlib.h index 8d4b932ea..13909f2f8 100644 --- a/packages/runtime/vendor/zlib/zlib.h +++ b/packages/runtime/vendor/zlib/zlib.h @@ -1,7 +1,7 @@ /* zlib.h -- interface of the 'zlib' general purpose compression library - version 1.3.1, January 22nd, 2024 + version 1.3.2.1, February xxth, 2026 - Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler + Copyright (C) 1995-2026 Jean-loup Gailly and Mark Adler This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -24,25 +24,29 @@ The data format used by the zlib library is described by RFCs (Request for - Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950 + Comments) 1950 to 1952 at https://datatracker.ietf.org/doc/html/rfc1950 (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format). */ #ifndef ZLIB_H #define ZLIB_H -#include "zconf.h" +#ifdef ZLIB_BUILD +# include +#else +# include "zconf.h" +#endif #ifdef __cplusplus extern "C" { #endif -#define ZLIB_VERSION "1.3.1" -#define ZLIB_VERNUM 0x1310 +#define ZLIB_VERSION "1.3.2.1-motley" +#define ZLIB_VERNUM 0x1321 #define ZLIB_VER_MAJOR 1 #define ZLIB_VER_MINOR 3 -#define ZLIB_VER_REVISION 1 -#define ZLIB_VER_SUBREVISION 0 +#define ZLIB_VER_REVISION 2 +#define ZLIB_VER_SUBREVISION 1 /* The 'zlib' compression library provides in-memory compression and @@ -359,7 +363,6 @@ ZEXTERN int ZEXPORT deflate(z_streamp strm, int flush); continue compressing. */ - ZEXTERN int ZEXPORT deflateEnd(z_streamp strm); /* All dynamically allocated data structures for this stream are freed. @@ -441,7 +444,7 @@ ZEXTERN int ZEXPORT inflate(z_streamp strm, int flush); The Z_BLOCK option assists in appending to or combining deflate streams. To assist in this, on return inflate() always sets strm->data_type to the - number of unused bits in the last byte taken from strm->next_in, plus 64 if + number of unused bits in the input taken from strm->next_in, plus 64 if inflate() is currently decoding the last block in the deflate stream, plus 128 if inflate() returned immediately after decoding an end-of-block code or decoding the complete header up to just before the first byte of the deflate @@ -587,18 +590,21 @@ ZEXTERN int ZEXPORT deflateInit2(z_streamp strm, The strategy parameter is used to tune the compression algorithm. Use the value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a - filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no - string match), or Z_RLE to limit match distances to one (run-length - encoding). Filtered data consists mostly of small values with a somewhat - random distribution. In this case, the compression algorithm is tuned to - compress them better. The effect of Z_FILTERED is to force more Huffman - coding and less string matching; it is somewhat intermediate between - Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as - fast as Z_HUFFMAN_ONLY, but give better compression for PNG image data. The - strategy parameter only affects the compression ratio but not the - correctness of the compressed output even if it is not set appropriately. - Z_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler - decoder for special applications. + filter (or predictor), Z_RLE to limit match distances to one (run-length + encoding), or Z_HUFFMAN_ONLY to force Huffman encoding only (no string + matching). Filtered data consists mostly of small values with a somewhat + random distribution, as produced by the PNG filters. In this case, the + compression algorithm is tuned to compress them better. The effect of + Z_FILTERED is to force more Huffman coding and less string matching than the + default; it is intermediate between Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY. + Z_RLE is almost as fast as Z_HUFFMAN_ONLY, but should give better + compression for PNG image data than Huffman only. The degree of string + matching from most to none is: Z_DEFAULT_STRATEGY, Z_FILTERED, Z_RLE, then + Z_HUFFMAN_ONLY. The strategy parameter affects the compression ratio but + never the correctness of the compressed output, even if it is not set + optimally for the given data. Z_FIXED uses the default string matching, but + prevents the use of dynamic Huffman codes, allowing for a simpler decoder + for special applications. deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_STREAM_ERROR if any parameter is invalid (such as an invalid @@ -758,8 +764,8 @@ ZEXTERN int ZEXPORT deflateTune(z_streamp strm, returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream. */ -ZEXTERN uLong ZEXPORT deflateBound(z_streamp strm, - uLong sourceLen); +ZEXTERN uLong ZEXPORT deflateBound(z_streamp strm, uLong sourceLen); +ZEXTERN z_size_t ZEXPORT deflateBound_z(z_streamp strm, z_size_t sourceLen); /* deflateBound() returns an upper bound on the compressed size after deflation of sourceLen bytes. It must be called after deflateInit() or @@ -771,6 +777,9 @@ ZEXTERN uLong ZEXPORT deflateBound(z_streamp strm, to return Z_STREAM_END. Note that it is possible for the compressed size to be larger than the value returned by deflateBound() if flush options other than Z_FINISH or Z_NO_FLUSH are used. + + delfateBound_z() is the same, but takes and returns a size_t length. Note + that a long is 32 bits on Windows. */ ZEXTERN int ZEXPORT deflatePending(z_streamp strm, @@ -785,6 +794,21 @@ ZEXTERN int ZEXPORT deflatePending(z_streamp strm, or bits are Z_NULL, then those values are not set. deflatePending returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. If an int is 16 bits and memLevel is 9, then + it is possible for the number of pending bytes to not fit in an unsigned. In + that case Z_BUF_ERROR is returned and *pending is set to the maximum value + of an unsigned. + */ + +ZEXTERN int ZEXPORT deflateUsed(z_streamp strm, + int *bits); +/* + deflateUsed() returns in *bits the most recent number of deflate bits used + in the last byte when flushing to a byte boundary. The result is in 1..8, or + 0 if there has not yet been a flush. This helps determine the location of + the last bit of a deflate stream. + + deflateUsed returns Z_OK if success, or Z_STREAM_ERROR if the source stream state was inconsistent. */ @@ -987,13 +1011,15 @@ ZEXTERN int ZEXPORT inflatePrime(z_streamp strm, int bits, int value); /* - This function inserts bits in the inflate input stream. The intent is - that this function is used to start inflating at a bit position in the - middle of a byte. The provided bits will be used before any bytes are used - from next_in. This function should only be used with raw inflate, and - should be used before the first inflate() call after inflateInit2() or - inflateReset(). bits must be less than or equal to 16, and that many of the - least significant bits of value will be inserted in the input. + This function inserts bits in the inflate input stream. The intent is to + use inflatePrime() to start inflating at a bit position in the middle of a + byte. The provided bits will be used before any bytes are used from + next_in. This function should be used with raw inflate, before the first + inflate() call, after inflateInit2() or inflateReset(). It can also be used + after an inflate() return indicates the end of a deflate block or header + when using Z_BLOCK. bits must be less than or equal to 16, and that many of + the least significant bits of value will be inserted in the input. The + other bits in value can be non-zero, and will be ignored. If bits is negative, then the input stream bit buffer is emptied. Then inflatePrime() can be called again to put bits in the buffer. This is used @@ -1001,7 +1027,15 @@ ZEXTERN int ZEXPORT inflatePrime(z_streamp strm, to feeding inflate codes. inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. + stream state was inconsistent, or if bits is out of range. If inflate was + in the middle of processing a header, trailer, or stored block lengths, then + it is possible for there to be only eight bits available in the bit buffer. + In that case, bits > 8 is considered out of range. However, when used as + outlined above, there will always be 16 bits available in the buffer for + insertion. As noted in its documentation above, inflate records the number + of bits in the bit buffer on return in data_type. 32 minus that is the + number of bits available for insertion. inflatePrime does not update + data_type with the new number of bits in buffer. */ ZEXTERN long ZEXPORT inflateMark(z_streamp strm); @@ -1047,20 +1081,22 @@ ZEXTERN int ZEXPORT inflateGetHeader(z_streamp strm, The text, time, xflags, and os fields are filled in with the gzip header contents. hcrc is set to true if there is a header CRC. (The header CRC - was valid if done is set to one.) If extra is not Z_NULL, then extra_max - contains the maximum number of bytes to write to extra. Once done is true, - extra_len contains the actual extra field length, and extra contains the - extra field, or that field truncated if extra_max is less than extra_len. - If name is not Z_NULL, then up to name_max characters are written there, - terminated with a zero unless the length is greater than name_max. If - comment is not Z_NULL, then up to comm_max characters are written there, - terminated with a zero unless the length is greater than comm_max. When any - of extra, name, or comment are not Z_NULL and the respective field is not - present in the header, then that field is set to Z_NULL to signal its - absence. This allows the use of deflateSetHeader() with the returned - structure to duplicate the header. However if those fields are set to - allocated memory, then the application will need to save those pointers - elsewhere so that they can be eventually freed. + was valid if done is set to one.) The extra, name, and comment pointers + much each be either Z_NULL or point to space to store that information from + the header. If extra is not Z_NULL, then extra_max contains the maximum + number of bytes that can be written to extra. Once done is true, extra_len + contains the actual extra field length, and extra contains the extra field, + or that field truncated if extra_max is less than extra_len. If name is not + Z_NULL, then up to name_max characters, including the terminating zero, are + written there. If comment is not Z_NULL, then up to comm_max characters, + including the terminating zero, are written there. The application can tell + that the name or comment did not fit in the provided space by the absence of + a terminating zero. If any of extra, name, or comment are not present in + the header, then that field's pointer is set to Z_NULL. This allows the use + of deflateSetHeader() with the returned structure to duplicate the header. + Note that if those fields initially pointed to allocated memory, then the + application will need to save them elsewhere so that they can be eventually + freed. If inflateGetHeader is not used, then the header information is simply discarded. The header is always checked for validity, including the header @@ -1208,13 +1244,14 @@ ZEXTERN uLong ZEXPORT zlibCompileFlags(void); 21: FASTEST -- deflate algorithm with only one, lowest compression level 22,23: 0 (reserved) - The sprintf variant used by gzprintf (zero is best): + The sprintf variant used by gzprintf (all zeros is best): 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format - 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure! + 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() is not secure! 26: 0 = returns value, 1 = void -- 1 means inferred string length returned + 27: 0 = gzprintf() present, 1 = not -- 1 means gzprintf() returns an error Remainder: - 27-31: 0 (reserved) + 28-31: 0 (reserved) */ #ifndef Z_SOLO @@ -1226,11 +1263,14 @@ ZEXTERN uLong ZEXPORT zlibCompileFlags(void); stream-oriented functions. To simplify the interface, some default options are assumed (compression level and memory usage, standard memory allocation functions). The source code of these utility functions can be modified if - you need special options. + you need special options. The _z versions of the functions use the size_t + type for lengths. Note that a long is 32 bits on Windows. */ -ZEXTERN int ZEXPORT compress(Bytef *dest, uLongf *destLen, +ZEXTERN int ZEXPORT compress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen); +ZEXTERN int ZEXPORT compress_z(Bytef *dest, z_size_t *destLen, + const Bytef *source, z_size_t sourceLen); /* Compresses the source buffer into the destination buffer. sourceLen is the byte length of the source buffer. Upon entry, destLen is the total size @@ -1244,9 +1284,12 @@ ZEXTERN int ZEXPORT compress(Bytef *dest, uLongf *destLen, buffer. */ -ZEXTERN int ZEXPORT compress2(Bytef *dest, uLongf *destLen, +ZEXTERN int ZEXPORT compress2(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen, int level); +ZEXTERN int ZEXPORT compress2_z(Bytef *dest, z_size_t *destLen, + const Bytef *source, z_size_t sourceLen, + int level); /* Compresses the source buffer into the destination buffer. The level parameter has the same meaning as in deflateInit. sourceLen is the byte @@ -1261,21 +1304,24 @@ ZEXTERN int ZEXPORT compress2(Bytef *dest, uLongf *destLen, */ ZEXTERN uLong ZEXPORT compressBound(uLong sourceLen); +ZEXTERN z_size_t ZEXPORT compressBound_z(z_size_t sourceLen); /* compressBound() returns an upper bound on the compressed size after compress() or compress2() on sourceLen bytes. It would be used before a compress() or compress2() call to allocate the destination buffer. */ -ZEXTERN int ZEXPORT uncompress(Bytef *dest, uLongf *destLen, +ZEXTERN int ZEXPORT uncompress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen); +ZEXTERN int ZEXPORT uncompress_z(Bytef *dest, z_size_t *destLen, + const Bytef *source, z_size_t sourceLen); /* Decompresses the source buffer into the destination buffer. sourceLen is - the byte length of the source buffer. Upon entry, destLen is the total size + the byte length of the source buffer. On entry, *destLen is the total size of the destination buffer, which must be large enough to hold the entire uncompressed data. (The size of the uncompressed data must have been saved previously by the compressor and transmitted to the decompressor by some - mechanism outside the scope of this compression library.) Upon exit, destLen + mechanism outside the scope of this compression library.) On exit, *destLen is the actual size of the uncompressed data. uncompress returns Z_OK if success, Z_MEM_ERROR if there was not @@ -1285,8 +1331,10 @@ ZEXTERN int ZEXPORT uncompress(Bytef *dest, uLongf *destLen, buffer with the uncompressed data up to that point. */ -ZEXTERN int ZEXPORT uncompress2(Bytef *dest, uLongf *destLen, +ZEXTERN int ZEXPORT uncompress2(Bytef *dest, uLongf *destLen, const Bytef *source, uLong *sourceLen); +ZEXTERN int ZEXPORT uncompress2_z(Bytef *dest, z_size_t *destLen, + const Bytef *source, z_size_t *sourceLen); /* Same as uncompress, except that sourceLen is a pointer, where the length of the source is *sourceLen. On return, *sourceLen is the number of @@ -1314,13 +1362,17 @@ ZEXTERN gzFile ZEXPORT gzopen(const char *path, const char *mode); 'R' for run-length encoding as in "wb1R", or 'F' for fixed code compression as in "wb9F". (See the description of deflateInit2 for more information about the strategy parameter.) 'T' will request transparent writing or - appending with no compression and not using the gzip format. + appending with no compression and not using the gzip format. 'T' cannot be + used to force transparent reading. Transparent reading is automatically + performed if there is no gzip header at the start. Transparent reading can + be disabled with the 'G' option, which will instead return an error if there + is no gzip header. 'N' will open the file in non-blocking mode. - "a" can be used instead of "w" to request that the gzip stream that will - be written be appended to the file. "+" will result in an error, since + 'a' can be used instead of 'w' to request that the gzip stream that will + be written be appended to the file. '+' will result in an error, since reading and writing to the same gzip file is not supported. The addition of - "x" when writing will create the file exclusively, which fails if the file - already exists. On systems that support it, the addition of "e" when + 'x' when writing will create the file exclusively, which fails if the file + already exists. On systems that support it, the addition of 'e' when reading or writing will set the flag to close the file on an execve() call. These functions, as well as gzip, will read and decode a sequence of gzip @@ -1339,14 +1391,22 @@ ZEXTERN gzFile ZEXPORT gzopen(const char *path, const char *mode); insufficient memory to allocate the gzFile state, or if an invalid mode was specified (an 'r', 'w', or 'a' was not provided, or '+' was provided). errno can be checked to determine if the reason gzopen failed was that the - file could not be opened. + file could not be opened. Note that if 'N' is in mode for non-blocking, the + open() itself can fail in order to not block. In that case gzopen() will + return NULL and errno will be EAGAIN or ENONBLOCK. The call to gzopen() can + then be re-tried. If the application would like to block on opening the + file, then it can use open() without O_NONBLOCK, and then gzdopen() with the + resulting file descriptor and 'N' in the mode, which will set it to non- + blocking. */ ZEXTERN gzFile ZEXPORT gzdopen(int fd, const char *mode); /* Associate a gzFile with the file descriptor fd. File descriptors are obtained from calls like open, dup, creat, pipe or fileno (if the file has - been previously opened with fopen). The mode parameter is as in gzopen. + been previously opened with fopen). The mode parameter is as in gzopen. An + 'e' in mode will set fd's flag to close the file on an execve() call. An 'N' + in mode will set fd's non-blocking flag. The next call of gzclose on the returned gzFile will also close the file descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor @@ -1416,10 +1476,16 @@ ZEXTERN int ZEXPORT gzread(gzFile file, voidp buf, unsigned len); stream. Alternatively, gzerror can be used before gzclose to detect this case. + gzread can be used to read a gzip file on a non-blocking device. If the + input stalls and there is no uncompressed data to return, then gzread() will + return -1, and errno will be EAGAIN or EWOULDBLOCK. gzread() can then be + called again. + gzread returns the number of uncompressed bytes actually read, less than len for end of file, or -1 for error. If len is too large to fit in an int, then nothing is read, -1 is returned, and the error state is set to - Z_STREAM_ERROR. + Z_STREAM_ERROR. If some data was read before an error, then that data is + returned until exhausted, after which the next call will signal the error. */ ZEXTERN z_size_t ZEXPORT gzfread(voidp buf, z_size_t size, z_size_t nitems, @@ -1443,15 +1509,20 @@ ZEXTERN z_size_t ZEXPORT gzfread(voidp buf, z_size_t size, z_size_t nitems, multiple of size, then the final partial item is nevertheless read into buf and the end-of-file flag is set. The length of the partial item read is not provided, but could be inferred from the result of gztell(). This behavior - is the same as the behavior of fread() implementations in common libraries, - but it prevents the direct use of gzfread() to read a concurrently written - file, resetting and retrying on end-of-file, when size is not 1. + is the same as that of fread() implementations in common libraries. This + could result in data loss if used with size != 1 when reading a concurrently + written file or a non-blocking file. In that case, use size == 1 or gzread() + instead. */ ZEXTERN int ZEXPORT gzwrite(gzFile file, voidpc buf, unsigned len); /* Compress and write the len uncompressed bytes at buf to file. gzwrite - returns the number of uncompressed bytes written or 0 in case of error. + returns the number of uncompressed bytes written, or 0 in case of error or + if len is 0. If the write destination is non-blocking, then gzwrite() may + return a number of bytes written that is not 0 and less than len. + + If len does not fit in an int, then 0 is returned and nothing is written. */ ZEXTERN z_size_t ZEXPORT gzfwrite(voidpc buf, z_size_t size, @@ -1466,9 +1537,18 @@ ZEXTERN z_size_t ZEXPORT gzfwrite(voidpc buf, z_size_t size, if there was an error. If the multiplication of size and nitems overflows, i.e. the product does not fit in a z_size_t, then nothing is written, zero is returned, and the error state is set to Z_STREAM_ERROR. + + If writing a concurrently read file or a non-blocking file with size != 1, + a partial item could be written, with no way of knowing how much of it was + not written, resulting in data loss. In that case, use size == 1 or + gzwrite() instead. */ +#if defined(STDC) || defined(Z_HAVE_STDARG_H) ZEXTERN int ZEXPORTVA gzprintf(gzFile file, const char *format, ...); +#else +ZEXTERN int ZEXPORTVA gzprintf(); +#endif /* Convert, format, compress, and write the arguments (...) to file under control of the string format, as in fprintf. gzprintf returns the number of @@ -1476,11 +1556,19 @@ ZEXTERN int ZEXPORTVA gzprintf(gzFile file, const char *format, ...); of error. The number of uncompressed bytes written is limited to 8191, or one less than the buffer size given to gzbuffer(). The caller should assure that this limit is not exceeded. If it is exceeded, then gzprintf() will - return an error (0) with nothing written. In this case, there may also be a - buffer overflow with unpredictable consequences, which is possible only if - zlib was compiled with the insecure functions sprintf() or vsprintf(), - because the secure snprintf() or vsnprintf() functions were not available. - This can be determined using zlibCompileFlags(). + return an error (0) with nothing written. + + In that last case, there may also be a buffer overflow with unpredictable + consequences, which is possible only if zlib was compiled with the insecure + functions sprintf() or vsprintf(), because the secure snprintf() and + vsnprintf() functions were not available. That would only be the case for + a non-ANSI C compiler. zlib may have been built without gzprintf() because + secure functions were not available and having gzprintf() be insecure was + not an option, in which case, gzprintf() returns Z_STREAM_ERROR. All of + these possibilities can be determined using zlibCompileFlags(). + + If a Z_BUF_ERROR is returned, then nothing was written due to a stall on + the non-blocking write destination. */ ZEXTERN int ZEXPORT gzputs(gzFile file, const char *s); @@ -1489,6 +1577,11 @@ ZEXTERN int ZEXPORT gzputs(gzFile file, const char *s); the terminating null character. gzputs returns the number of characters written, or -1 in case of error. + The number of characters written may be less than the length of the string + if the write destination is non-blocking. + + If the length of the string does not fit in an int, then -1 is returned + and nothing is written. */ ZEXTERN char * ZEXPORT gzgets(gzFile file, char *buf, int len); @@ -1501,8 +1594,13 @@ ZEXTERN char * ZEXPORT gzgets(gzFile file, char *buf, int len); left untouched. gzgets returns buf which is a null-terminated string, or it returns NULL - for end-of-file or in case of error. If there was an error, the contents at - buf are indeterminate. + for end-of-file or in case of error. If some data was read before an error, + then that data is returned until exhausted, after which the next call will + return NULL to signal the error. + + gzgets can be used on a file being concurrently written, and on a non- + blocking device, both as for gzread(). However lines may be broken in the + middle, leaving it up to the application to reassemble them as needed. */ ZEXTERN int ZEXPORT gzputc(gzFile file, int c); @@ -1513,11 +1611,19 @@ ZEXTERN int ZEXPORT gzputc(gzFile file, int c); ZEXTERN int ZEXPORT gzgetc(gzFile file); /* - Read and decompress one byte from file. gzgetc returns this byte or -1 - in case of end of file or error. This is implemented as a macro for speed. - As such, it does not do all of the checking the other functions do. I.e. - it does not check to see if file is NULL, nor whether the structure file - points to has been clobbered or not. + Read and decompress one byte from file. gzgetc returns this byte or -1 in + case of end of file or error. If some data was read before an error, then + that data is returned until exhausted, after which the next call will return + -1 to signal the error. + + This is implemented as a macro for speed. As such, it does not do all of + the checking the other functions do. I.e. it does not check to see if file + is NULL, nor whether the structure file points to has been clobbered or not. + + gzgetc can be used to read a gzip file on a non-blocking device. If the + input stalls and there is no uncompressed data to return, then gzgetc() will + return -1, and errno will be EAGAIN or EWOULDBLOCK. gzread() can then be + called again. */ ZEXTERN int ZEXPORT gzungetc(int c, gzFile file); @@ -1530,6 +1636,11 @@ ZEXTERN int ZEXPORT gzungetc(int c, gzFile file); output buffer size of pushed characters is allowed. (See gzbuffer above.) The pushed character will be discarded if the stream is repositioned with gzseek() or gzrewind(). + + gzungetc(-1, file) will force any pending seek to execute. Then gztell() + will report the position, even if the requested seek reached end of file. + This can be used to determine the number of uncompressed bytes in a gzip + file without having to read it into a buffer. */ ZEXTERN int ZEXPORT gzflush(gzFile file, int flush); @@ -1559,7 +1670,8 @@ ZEXTERN z_off_t ZEXPORT gzseek(gzFile file, If the file is opened for reading, this function is emulated but can be extremely slow. If the file is opened for writing, only forward seeks are supported; gzseek then compresses a sequence of zeroes up to the new - starting position. + starting position. For reading or writing, any actual seeking is deferred + until the next read or write operation, or close operation when writing. gzseek returns the resulting offset location as measured in bytes from the beginning of the uncompressed stream, or -1 in case of error, in @@ -1567,7 +1679,7 @@ ZEXTERN z_off_t ZEXPORT gzseek(gzFile file, would be before the current position. */ -ZEXTERN int ZEXPORT gzrewind(gzFile file); +ZEXTERN int ZEXPORT gzrewind(gzFile file); /* Rewind file. This function is supported only for reading. @@ -1575,7 +1687,7 @@ ZEXTERN int ZEXPORT gzrewind(gzFile file); */ /* -ZEXTERN z_off_t ZEXPORT gztell(gzFile file); +ZEXTERN z_off_t ZEXPORT gztell(gzFile file); Return the starting position for the next gzread or gzwrite on file. This position represents a number of bytes in the uncompressed data stream, @@ -1620,8 +1732,11 @@ ZEXTERN int ZEXPORT gzdirect(gzFile file); If gzdirect() is used immediately after gzopen() or gzdopen() it will cause buffers to be allocated to allow reading the file to determine if it - is a gzip file. Therefore if gzbuffer() is used, it should be called before - gzdirect(). + is a gzip file. Therefore if gzbuffer() is used, it should be called before + gzdirect(). If the input is being written concurrently or the device is non- + blocking, then gzdirect() may give a different answer once four bytes of + input have been accumulated, which is what is needed to confirm or deny a + gzip header. Before this, gzdirect() will return true (1). When writing, gzdirect() returns true (1) if transparent writing was requested ("wT" for the gzopen() mode), or false (0) otherwise. (Note: @@ -1631,7 +1746,7 @@ ZEXTERN int ZEXPORT gzdirect(gzFile file); gzip file reading and decompression, which may not be desired.) */ -ZEXTERN int ZEXPORT gzclose(gzFile file); +ZEXTERN int ZEXPORT gzclose(gzFile file); /* Flush all pending output for file, if necessary, close file and deallocate the (de)compression state. Note that once file is closed, you @@ -1659,9 +1774,10 @@ ZEXTERN int ZEXPORT gzclose_w(gzFile file); ZEXTERN const char * ZEXPORT gzerror(gzFile file, int *errnum); /* Return the error message for the last error which occurred on file. - errnum is set to zlib error number. If an error occurred in the file system - and not in the compression library, errnum is set to Z_ERRNO and the - application may consult errno to get the exact error code. + If errnum is not NULL, *errnum is set to zlib error number. If an error + occurred in the file system and not in the compression library, *errnum is + set to Z_ERRNO and the application may consult errno to get the exact error + code. The application must not modify the returned string. Future calls to this function may invalidate the previously returned string. If file is @@ -1712,7 +1828,8 @@ ZEXTERN uLong ZEXPORT adler32(uLong adler, const Bytef *buf, uInt len); ZEXTERN uLong ZEXPORT adler32_z(uLong adler, const Bytef *buf, z_size_t len); /* - Same as adler32(), but with a size_t length. + Same as adler32(), but with a size_t length. Note that a long is 32 bits + on Windows. */ /* @@ -1748,7 +1865,8 @@ ZEXTERN uLong ZEXPORT crc32(uLong crc, const Bytef *buf, uInt len); ZEXTERN uLong ZEXPORT crc32_z(uLong crc, const Bytef *buf, z_size_t len); /* - Same as crc32(), but with a size_t length. + Same as crc32(), but with a size_t length. Note that a long is 32 bits on + Windows. */ /* @@ -1758,14 +1876,14 @@ ZEXTERN uLong ZEXPORT crc32_combine(uLong crc1, uLong crc2, z_off_t len2); seq1 and seq2 with lengths len1 and len2, CRC-32 check values were calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32 check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and - len2. len2 must be non-negative. + len2. len2 must be non-negative, otherwise zero is returned. */ /* ZEXTERN uLong ZEXPORT crc32_combine_gen(z_off_t len2); Return the operator corresponding to length len2, to be used with - crc32_combine_op(). len2 must be non-negative. + crc32_combine_op(). len2 must be non-negative, otherwise zero is returned. */ ZEXTERN uLong ZEXPORT crc32_combine_op(uLong crc1, uLong crc2, uLong op); @@ -1844,6 +1962,11 @@ ZEXTERN int ZEXPORT gzgetc_(gzFile file); /* backward compatibility */ # undef z_gzgetc # define z_gzgetc(g) \ ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : (gzgetc)(g)) +#elif defined(Z_CR_PREFIX_SET) +# undef gzgetc +# define gzgetc(g) \ + ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) \ + : (Cr_z_gzgetc)(g)) #else # define gzgetc(g) \ ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : (gzgetc)(g)) @@ -1875,22 +1998,47 @@ ZEXTERN int ZEXPORT gzgetc_(gzFile file); /* backward compatibility */ # define z_crc32_combine z_crc32_combine64 # define z_crc32_combine_gen z_crc32_combine_gen64 # else +# ifdef gzopen +# undef gzopen +# endif # define gzopen gzopen64 +# ifdef gzseek +# undef gzseek +# endif # define gzseek gzseek64 +# ifdef gztell +# undef gztell +# endif # define gztell gztell64 +# ifdef gzoffset +# undef gzoffset +# endif # define gzoffset gzoffset64 +# ifdef adler32_combine +# undef adler32_combine +# endif # define adler32_combine adler32_combine64 -# define crc32_combine crc32_combine64 -# define crc32_combine_gen crc32_combine_gen64 +# ifdef crc32_combine +# undef crc32_combine +# endif +# ifdef crc32_combine64 +# undef crc32_combine64 +# endif +# ifdef crc32_combine_gen +# undef crc32_combine_gen +# endif +# ifdef crc32_combine_op +# undef crc32_combine_op +# endif # endif # ifndef Z_LARGE64 ZEXTERN gzFile ZEXPORT gzopen64(const char *, const char *); ZEXTERN z_off_t ZEXPORT gzseek64(gzFile, z_off_t, int); ZEXTERN z_off_t ZEXPORT gztell64(gzFile); ZEXTERN z_off_t ZEXPORT gzoffset64(gzFile); - ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off_t); - ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off_t); - ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off_t); + ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off64_t); + ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off64_t); + ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off64_t); # endif #else ZEXTERN gzFile ZEXPORT gzopen(const char *, const char *); diff --git a/packages/runtime/vendor/zlib/zutil.c b/packages/runtime/vendor/zlib/zutil.c index b1c5d2d3c..0e30c5664 100644 --- a/packages/runtime/vendor/zlib/zutil.c +++ b/packages/runtime/vendor/zlib/zutil.c @@ -1,5 +1,5 @@ /* zutil.c -- target dependent utility functions for the compression library - * Copyright (C) 1995-2017 Jean-loup Gailly + * Copyright (C) 1995-2026 Jean-loup Gailly * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -86,28 +86,36 @@ uLong ZEXPORT zlibCompileFlags(void) { flags += 1L << 21; #endif #if defined(STDC) || defined(Z_HAVE_STDARG_H) -# ifdef NO_vsnprintf - flags += 1L << 25; -# ifdef HAS_vsprintf_void - flags += 1L << 26; -# endif -# else -# ifdef HAS_vsnprintf_void - flags += 1L << 26; -# endif -# endif +# ifdef NO_vsnprintf +# ifdef ZLIB_INSECURE + flags += 1L << 25; +# else + flags += 1L << 27; +# endif +# ifdef HAS_vsprintf_void + flags += 1L << 26; +# endif +# else +# ifdef HAS_vsnprintf_void + flags += 1L << 26; +# endif +# endif #else flags += 1L << 24; -# ifdef NO_snprintf - flags += 1L << 25; -# ifdef HAS_sprintf_void - flags += 1L << 26; -# endif -# else -# ifdef HAS_snprintf_void - flags += 1L << 26; -# endif -# endif +# ifdef NO_snprintf +# ifdef ZLIB_INSECURE + flags += 1L << 25; +# else + flags += 1L << 27; +# endif +# ifdef HAS_sprintf_void + flags += 1L << 26; +# endif +# else +# ifdef HAS_snprintf_void + flags += 1L << 26; +# endif +# endif #endif return flags; } @@ -142,28 +150,33 @@ const char * ZEXPORT zError(int err) { #ifndef HAVE_MEMCPY -void ZLIB_INTERNAL zmemcpy(Bytef* dest, const Bytef* source, uInt len) { - if (len == 0) return; - do { - *dest++ = *source++; /* ??? to be unrolled */ - } while (--len != 0); +void ZLIB_INTERNAL zmemcpy(void FAR *dst, const void FAR *src, z_size_t n) { + uchf *p = dst; + const uchf *q = src; + while (n) { + *p++ = *q++; + n--; + } } -int ZLIB_INTERNAL zmemcmp(const Bytef* s1, const Bytef* s2, uInt len) { - uInt j; - - for (j = 0; j < len; j++) { - if (s1[j] != s2[j]) return 2*(s1[j] > s2[j])-1; +int ZLIB_INTERNAL zmemcmp(const void FAR *s1, const void FAR *s2, z_size_t n) { + const uchf *p = s1, *q = s2; + while (n) { + if (*p++ != *q++) + return (int)p[-1] - (int)q[-1]; + n--; } return 0; } -void ZLIB_INTERNAL zmemzero(Bytef* dest, uInt len) { - if (len == 0) return; - do { - *dest++ = 0; /* ??? to be unrolled */ - } while (--len != 0); +void ZLIB_INTERNAL zmemzero(void FAR *b, z_size_t len) { + uchf *p = b; + while (len) { + *p++ = 0; + len--; + } } + #endif #ifndef Z_SOLO diff --git a/packages/runtime/vendor/zlib/zutil.h b/packages/runtime/vendor/zlib/zutil.h index 48dd7feba..64cd7a41e 100644 --- a/packages/runtime/vendor/zlib/zutil.h +++ b/packages/runtime/vendor/zlib/zutil.h @@ -1,5 +1,5 @@ /* zutil.h -- internal interface and configuration of the compression library - * Copyright (C) 1995-2024 Jean-loup Gailly, Mark Adler + * Copyright (C) 1995-2026 Jean-loup Gailly, Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -28,6 +28,21 @@ # include # include #endif +#ifdef NO_ERRNO_H +# ifdef _WIN32_WCE + /* The Microsoft C Run-Time Library for Windows CE doesn't have + * errno. We define it as a global variable to simplify porting. + * Its value is always 0 and should not be used. We rename it to + * avoid conflict with other libraries that use the same workaround. + */ +# define errno z_errno +# endif + extern int errno; +#else +# ifndef _WIN32_WCE +# include +# endif +#endif #ifndef local # define local static @@ -36,6 +51,10 @@ define "local" for the non-static meaning of "static", for readability (compile with -Dlocal if your debugger can't find static symbols) */ +extern const char deflate_copyright[]; +extern const char inflate_copyright[]; +extern const char inflate9_copyright[]; + typedef unsigned char uch; typedef uch FAR uchf; typedef unsigned short ush; @@ -48,6 +67,8 @@ typedef unsigned long ulg; # define Z_U8 unsigned long # elif (ULLONG_MAX == 0xffffffffffffffff) # define Z_U8 unsigned long long +# elif (ULONG_LONG_MAX == 0xffffffffffffffff) +# define Z_U8 unsigned long long # elif (UINT_MAX == 0xffffffffffffffff) # define Z_U8 unsigned # endif @@ -63,7 +84,9 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ /* To be used only when the state is known to be valid */ /* common constants */ - +#if MAX_WBITS < 9 || MAX_WBITS > 15 +# error MAX_WBITS must be in 9..15 +#endif #ifndef DEF_WBITS # define DEF_WBITS MAX_WBITS #endif @@ -141,7 +164,7 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ # define OS_CODE 7 #endif -#ifdef __acorn +#if defined(__acorn) || defined(__riscos) # define OS_CODE 13 #endif @@ -168,11 +191,10 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ #endif /* provide prototypes for these when building zlib without LFS */ -#if !defined(_WIN32) && \ - (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0) - ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off_t); - ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off_t); - ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off_t); +#ifndef Z_LARGE64 + ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off64_t); + ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off64_t); + ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off64_t); #endif /* common defaults */ @@ -211,9 +233,9 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ # define zmemzero(dest, len) memset(dest, 0, len) # endif #else - void ZLIB_INTERNAL zmemcpy(Bytef* dest, const Bytef* source, uInt len); - int ZLIB_INTERNAL zmemcmp(const Bytef* s1, const Bytef* s2, uInt len); - void ZLIB_INTERNAL zmemzero(Bytef* dest, uInt len); + void ZLIB_INTERNAL zmemcpy(void FAR *, const void FAR *, z_size_t); + int ZLIB_INTERNAL zmemcmp(const void FAR *, const void FAR *, z_size_t); + void ZLIB_INTERNAL zmemzero(void FAR *, z_size_t); #endif /* Diagnostic functions */ @@ -251,4 +273,80 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ #define ZSWAP32(q) ((((q) >> 24) & 0xff) + (((q) >> 8) & 0xff00) + \ (((q) & 0xff00) << 8) + (((q) & 0xff) << 24)) +#ifdef _MSC_VER +#define zalign(x) __declspec(align(x)) +#else +#define zalign(x) __attribute__((aligned((x)))) +#endif + +#ifdef Z_ONCE +/* + Create a local z_once() function depending on the availability of atomics. + */ + +/* Check for the availability of atomics. */ +#if defined(__STDC__) && __STDC_VERSION__ >= 201112L && \ + !defined(__STDC_NO_ATOMICS__) + +#include +typedef struct { + atomic_flag begun; + atomic_int done; +} z_once_t; +#define Z_ONCE_INIT {ATOMIC_FLAG_INIT, 0} + +/* + Run the provided init() function exactly once, even if multiple threads + invoke once() at the same time. The state must be a once_t initialized with + Z_ONCE_INIT. + */ +local void z_once(z_once_t *state, void (*init)(void)) { + if (!atomic_load(&state->done)) { + if (atomic_flag_test_and_set(&state->begun)) + while (!atomic_load(&state->done)) + ; + else { + init(); + atomic_store(&state->done, 1); + } + } +} + +#else /* no atomics */ + +#warning zlib not thread-safe + +typedef struct z_once_s { + volatile int begun; + volatile int done; +} z_once_t; +#define Z_ONCE_INIT {0, 0} + +/* Test and set. Alas, not atomic, but tries to limit the period of + vulnerability. */ +local int test_and_set(int volatile *flag) { + int was; + + was = *flag; + *flag = 1; + return was; +} + +/* Run the provided init() function once. This is not thread-safe. */ +local void z_once(z_once_t *state, void (*init)(void)) { + if (!state->done) { + if (test_and_set(&state->begun)) + while (!state->done) + ; + else { + init(); + state->done = 1; + } + } +} + +#endif /* ?atomics */ + +#endif /* Z_ONCE */ + #endif /* ZUTIL_H */ diff --git a/tests/corpus/8405-zlib-compressed-bytes.ts b/tests/corpus/8405-zlib-compressed-bytes.ts new file mode 100644 index 000000000..bfada812d --- /dev/null +++ b/tests/corpus/8405-zlib-compressed-bytes.ts @@ -0,0 +1,96 @@ +// Compressed zlib bytes over the vendored zlib, the copy Node bundles: deflate, +// raw deflate and gzip output match Node's for every level, strategy, memLevel, +// windowBits and dictionary, for text, binary and a 1 MiB input that slides the +// window, and for streams that flush and change parameters between writes. +import { createHash } from "node:crypto"; +import { + constants, + createDeflate, + createGzip, + deflateRawSync, + deflateSync, + gunzipSync, + gzipSync, + inflateRawSync, + inflateSync, + type Deflate, + type Gzip, + type ZlibOptions, +} from "node:zlib"; + +const digest = (bytes: Buffer): string => + `${bytes.length} ${createHash("sha256").update(bytes).digest("hex").slice(0, 16)}`; + +const words = ["stream", "pipeline", "émetteur", "π", "buffer", "deflate", "\u0000", "window"]; +const parts: string[] = []; +for (let i = 0; i < 3000; i++) parts.push(`${words[i % words.length]}-${(i * 7919) % 1000}`); +const text = Buffer.from(parts.join(" "), "utf8"); + +let seed = 0x2545f491; +const binary = Buffer.alloc(20000); +for (let i = 0; i < binary.length; i++) { + seed = (seed * 1103515245 + 12345) >>> 0; + binary[i] = i % 3 === 0 ? seed >>> 24 : (i >> 4) & 0xff; +} + +const large = Buffer.alloc(1 << 20); +for (let i = 0; i < large.length; i++) large[i] = text[(i * 31) % text.length]! ^ ((i >> 12) & 7); + +for (const level of [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) { + const deflated = deflateSync(text, { level }); + console.log("deflate", level, digest(deflated), inflateSync(deflated).equals(text)); + console.log("raw", level, digest(deflateRawSync(binary, { level }))); + console.log("gzip", level, digest(gzipSync(text, { level }))); +} + +const variants: [string, ZlibOptions][] = [ + ["filtered", { strategy: constants.Z_FILTERED }], + ["huffman only", { strategy: constants.Z_HUFFMAN_ONLY }], + ["rle", { strategy: constants.Z_RLE }], + ["fixed", { strategy: constants.Z_FIXED }], + ["memLevel 1", { memLevel: 1 }], + ["memLevel 9", { memLevel: 9 }], + ["windowBits 9", { windowBits: 9 }], + ["windowBits 12", { windowBits: 12 }], + ["level 9 memLevel 9", { level: 9, memLevel: 9 }], + ["dictionary", { dictionary: Buffer.from("stream pipeline buffer deflate window") }], +]; +for (const [label, options] of variants) { + const deflated = deflateSync(text, options); + console.log(label, digest(deflated), digest(deflateRawSync(binary, options))); + console.log(label, "inflates", inflateSync(deflated, options).equals(text)); +} + +for (const level of [1, 6, 9]) { + const gz = gzipSync(large, { level }); + console.log("1 MiB gzip", level, digest(gz), gunzipSync(gz).equals(large)); + const raw = deflateRawSync(large, { level, windowBits: 10 }); + console.log("1 MiB raw windowBits 10", level, digest(raw), inflateRawSync(raw, { windowBits: 10 }).equals(large)); +} + +function collect(stream: Deflate | Gzip, label: string, done: () => void): void { + const chunks: Buffer[] = []; + stream.on("data", (chunk: Buffer) => chunks.push(chunk)); + stream.on("end", () => { + console.log(label, digest(Buffer.concat(chunks))); + done(); + }); +} + +const flushed = createDeflate({ level: 6 }); +collect(flushed, "stream sync flush", () => { + const changed = createGzip({ level: 1 }); + collect(changed, "stream params", () => console.log("done")); + changed.write(text.subarray(0, 8000)); + changed.flush(constants.Z_FULL_FLUSH, () => { + changed.params(9, constants.Z_DEFAULT_STRATEGY, () => { + changed.write(text.subarray(8000)); + changed.end(binary); + }); + }); +}); +flushed.write(text.subarray(0, 5000)); +flushed.flush(constants.Z_SYNC_FLUSH, () => { + flushed.write(binary); + flushed.end(text.subarray(5000)); +}); diff --git a/tests/corpus/8406-zlib-inflate-chunks.cjs b/tests/corpus/8406-zlib-inflate-chunks.cjs new file mode 100644 index 000000000..f8fade68f --- /dev/null +++ b/tests/corpus/8406-zlib-inflate-chunks.cjs @@ -0,0 +1,69 @@ +// Inflation over the vendored zlib's chunked inflate: inputs fed in pieces of +// 1 to 4096 bytes, output chunks of 64 bytes to 64 KiB, raw windowBits 9 to 15, +// concatenated gzip members, back-references across a 1 MiB window, and a +// truncated input. The output and the error match Node's. +const zlib = require("node:zlib"); +const { createHash } = require("node:crypto"); + +const digest = (bytes) => `${bytes.length} ${createHash("sha256").update(bytes).digest("hex").slice(0, 16)}`; + +const parts = []; +for (let i = 0; i < 20000; i++) parts.push(`row ${i % 977} ${"abcdefgh".slice(i % 8)} ${(i * 2654435761) % 4093}`); +const text = Buffer.from(parts.join("\n")); +const large = Buffer.alloc(1 << 20); +for (let i = 0; i < large.length; i++) large[i] = text[(i * 13) % text.length] ^ ((i >> 15) & 3); + +const gz = zlib.gzipSync(large, { level: 6 }); +for (const chunkSize of [64, 1024, 16384, 65536]) { + console.log("gunzip chunkSize", chunkSize, digest(zlib.gunzipSync(gz, { chunkSize }))); +} +for (const windowBits of [9, 10, 12, 15]) { + const raw = zlib.deflateRawSync(text, { windowBits, level: 9 }); + console.log("raw windowBits", windowBits, digest(zlib.inflateRawSync(raw, { windowBits }))); +} +const members = Buffer.concat([zlib.gzipSync(text.subarray(0, 1000)), zlib.gzipSync(text.subarray(1000, 5000))]); +console.log("members", digest(zlib.gunzipSync(members))); +try { + zlib.inflateSync(zlib.deflateSync(text).subarray(0, 2000)); +} catch (e) { + console.log("truncated", e.code, e.errno, e.message); +} + +function feed(input, pieceSize, outSize, next) { + const inflate = zlib.createGunzip({ chunkSize: outSize }); + const hash = createHash("sha256"); + let length = 0; + inflate.on("data", (chunk) => { + hash.update(chunk); + length += chunk.length; + }); + inflate.on("end", () => { + console.log("stream piece", pieceSize, "chunk", outSize, length, hash.digest("hex").slice(0, 16)); + next(); + }); + let offset = 0; + const pump = () => { + while (offset < input.length) { + const piece = input.subarray(offset, offset + pieceSize); + offset += pieceSize; + if (!inflate.write(piece)) { + inflate.once("drain", pump); + return; + } + } + inflate.end(); + }; + pump(); +} + +const head = zlib.gzipSync(large.subarray(0, 1 << 16), { level: 6 }); +const runs = [ + [head, 1, 64], + [gz, 7, 1024], + [gz, 333, 4096], + [gz, 4096, 65536], +]; +const step = (i) => { + if (i < runs.length) feed(runs[i][0], runs[i][1], runs[i][2], () => step(i + 1)); +}; +step(0); diff --git a/tests/harness/corpus-costs/8405-zlib-compressed-bytes.ts.json b/tests/harness/corpus-costs/8405-zlib-compressed-bytes.ts.json new file mode 100644 index 000000000..9c291a72c --- /dev/null +++ b/tests/harness/corpus-costs/8405-zlib-compressed-bytes.ts.json @@ -0,0 +1 @@ +{ "plain": 5000, "san": 3200 } diff --git a/tests/harness/corpus-costs/8406-zlib-inflate-chunks.cjs.json b/tests/harness/corpus-costs/8406-zlib-inflate-chunks.cjs.json new file mode 100644 index 000000000..2202e2f02 --- /dev/null +++ b/tests/harness/corpus-costs/8406-zlib-inflate-chunks.cjs.json @@ -0,0 +1 @@ +{ "plain": 9000, "san": 13300 } diff --git a/tests/harness/wasi-differential.test.ts b/tests/harness/wasi-differential.test.ts index 66c2934f2..68d4b1807 100644 --- a/tests/harness/wasi-differential.test.ts +++ b/tests/harness/wasi-differential.test.ts @@ -316,6 +316,8 @@ describe.skipIf(!zigOnPath())("wasm32-wasi differential", () => { // Weak-collection hashes mix 32-bit pointers in 64 bits. "4591-weak-keys-union-records.ts", "7742-weak-collections-many-keys.ts", + // zlib's portable build (CPU_NO_SIMD) compresses to Node's bytes. + "8405-zlib-compressed-bytes.ts", ])("the LLVM target runs %s byte-identically to Node", async (fixture) => { const entry = join(repoRoot, "tests/corpus", fixture); const outDir = await mkdtemp("/tmp/scriptc-wasi-"); From 3417a5adc4ccac67fa8e4824ab9266156a7b4fd5 Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 15:25:52 -0500 Subject: [PATCH 18/52] Lower a discarded logical over a void conditional as a branch `skip || (flag ? warnA() : warnB())`, with void calls in both arms, as React's development warnings write it, failed with SC9001 "ternary must not be void": the statement lowered the logical as a value, and a conditional of void calls has none. A logical whose result is discarded now lowers as `if (!skip) ...` (or `if (skip) ...` for `&&`) when its right operand needs no value: its type maps to void, or it is a logical or comma expression whose last operand needs none. This holds in statements and in a for loop's initializer and update, and for a generic callback's conditional whose type parameter maps to void. Closes #2322 Co-authored-by: MathurAditya724 <57684218+MathurAditya724@users.noreply.github.com> --- .../src/frontend/lowering/lower-stmts.ts | 36 +++++++++- ...scarded-logical-void-conditionals.mjs.json | 6 ++ ...iscarded-logical-void-conditionals.ts.json | 6 ++ .../discarded-logical-void-conditionals.mjs | 22 ++++++ .../discarded-logical-void-conditionals.ts | 69 +++++++++++++++++++ ...scarded-logical-void-conditionals.mjs.json | 1 + ...iscarded-logical-void-conditionals.ts.json | 1 + 7 files changed, 138 insertions(+), 3 deletions(-) create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/discarded-logical-void-conditionals.mjs.json create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/discarded-logical-void-conditionals.ts.json create mode 100644 tests/corpus/discarded-logical-void-conditionals.mjs create mode 100644 tests/corpus/discarded-logical-void-conditionals.ts create mode 100644 tests/harness/corpus-costs/discarded-logical-void-conditionals.mjs.json create mode 100644 tests/harness/corpus-costs/discarded-logical-void-conditionals.ts.json diff --git a/packages/compiler/src/frontend/lowering/lower-stmts.ts b/packages/compiler/src/frontend/lowering/lower-stmts.ts index 8c49ae4d9..ad191f58a 100644 --- a/packages/compiler/src/frontend/lowering/lower-stmts.ts +++ b/packages/compiler/src/frontend/lowering/lower-stmts.ts @@ -8951,13 +8951,17 @@ export function lowerExprStatement(lowerer: Lowerer, expr: ts.Expression): IrStm return { kind: "block", body: [], loc: locOf(expr) }; } if ( - stmtNode !== undefined && - ts.isExpressionStatement(stmtNode) && ts.isBinaryExpression(expr) && (expr.operatorToken.kind === ts.SyntaxKind.AmpersandAmpersandToken || expr.operatorToken.kind === ts.SyntaxKind.BarBarToken) ) { - return lowerDiscardedLogical(lowerer, expr); + // A right operand without a value (`skip || (flag ? warnA() : warnB())`, + // where both arms are void calls) leaves the logical nothing to join: + // it is the branch `if (!skip) ...` wherever its result is discarded, + // a for loop's initializer and update included. + if (needsNoValue(lowerer, expr.right)) return lowerLogicalBranch(lowerer, expr); + if (stmtNode !== undefined && ts.isExpressionStatement(stmtNode)) + return lowerDiscardedLogical(lowerer, expr); } const value = lowerer.lowerExpr(expr); // A bare unit-literal statement (`undefined;`): a pure no-op in JS, @@ -9000,6 +9004,32 @@ function lowerDiscardedLogical(lowerer: Lowerer, expr: ts.BinaryExpression): IrS if (!local) throw e; lowerer.diags.length = diagsBefore; } + return lowerLogicalBranch(lowerer, expr); +} + +/** True when the discarded `expr` needs no value: its type maps to void, + * or it is a logical or comma expression whose last operand needs none. A + * discarded logical whose right operand needs no value lowers as a branch + * that runs the operand as a statement. */ +function needsNoValue(lowerer: Lowerer, expr: ts.Expression): boolean { + while (ts.isParenthesizedExpression(expr)) expr = expr.expression; + if ( + ts.isBinaryExpression(expr) && + (expr.operatorToken.kind === ts.SyntaxKind.AmpersandAmpersandToken || + expr.operatorToken.kind === ts.SyntaxKind.BarBarToken || + expr.operatorToken.kind === ts.SyntaxKind.CommaToken) + ) + return needsNoValue(lowerer, expr.right); + const type = lowerer.typeOf(expr); + return ( + (type.flags & (ts.TypeFlags.Void | ts.TypeFlags.TypeParameter)) !== 0 && + lowerer.mapTypeOf(type)?.kind === "void" + ); +} + +/** `a && b` as `if (a) b;` and `a || b` as `if (!a) b;`, with `b` lowered + * as a statement under the narrowing `a` gives it. */ +function lowerLogicalBranch(lowerer: Lowerer, expr: ts.BinaryExpression): IrStmt { const and = expr.operatorToken.kind === ts.SyntaxKind.AmpersandAmpersandToken; const cond = lowerer.lowerCondition(expr.left); if (cond.kind === "boolLit") { diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/discarded-logical-void-conditionals.mjs.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/discarded-logical-void-conditionals.mjs.json new file mode 100644 index 000000000..837cbad85 --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/discarded-logical-void-conditionals.mjs.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/discarded-logical-void-conditionals.mjs" + ], + "diags": [] +} diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/discarded-logical-void-conditionals.ts.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/discarded-logical-void-conditionals.ts.json new file mode 100644 index 000000000..79c4868ee --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/discarded-logical-void-conditionals.ts.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/discarded-logical-void-conditionals.ts" + ], + "diags": [] +} diff --git a/tests/corpus/discarded-logical-void-conditionals.mjs b/tests/corpus/discarded-logical-void-conditionals.mjs new file mode 100644 index 000000000..e804a28e3 --- /dev/null +++ b/tests/corpus/discarded-logical-void-conditionals.mjs @@ -0,0 +1,22 @@ +// React's development warnings discard a logical whose right operand is a +// conditional of console.error calls. +function warnIfMissingRender(instance, Component) { + instance.render || + (Component.prototype && typeof Component.prototype.render === "function" + ? console.error("%s(...): No `render` method found on the returned component.", "App") + : console.error("%s(...): No `render` method found, and its prototype has none.", "App")); +} +warnIfMissingRender({ render: null }, { prototype: { render() {} } }); +warnIfMissingRender({ render: null }, { prototype: {} }); +warnIfMissingRender({ render() {} }, { prototype: {} }); + +let warned = 0; +function warn(message) { + warned++; + console.log("warn:", message); +} +for (const props of [{ key: 1 }, {}, { key: "a", ref: null }]) { + "key" in props && (typeof props.key === "string" ? warn("string key") : warn("number key")); + props.ref === undefined || (props.ref === null ? warn("null ref") : warn("ref")); +} +console.log("warned", warned); diff --git a/tests/corpus/discarded-logical-void-conditionals.ts b/tests/corpus/discarded-logical-void-conditionals.ts new file mode 100644 index 000000000..1437957da --- /dev/null +++ b/tests/corpus/discarded-logical-void-conditionals.ts @@ -0,0 +1,69 @@ +// A logical expression whose result is discarded and whose right operand is +// a conditional of void calls (`skip || (flag ? warnA() : warnB())`) runs as +// a branch: the left operand decides whether the conditional runs, and the +// conditional runs one arm. +const order: string[] = []; +function check(label: string, value: boolean): boolean { + order.push(label); + return value; +} +function emit(label: string): void { + order.push(label); +} + +for (const left of [false, true]) { + for (const flag of [false, true]) { + check("and", left) && (check("flag", flag) ? emit("and:yes") : emit("and:no")); + check("or", left) || (check("flag", flag) ? emit("or:yes") : emit("or:no")); + left || (flag && (check("inner", !flag) ? emit("nested:yes") : emit("nested:no"))); + left || (order.push("comma"), flag ? emit("comma:yes") : emit("comma:no")); + !left && (flag ? (left ? emit("deep:a") : emit("deep:b")) : emit("deep:c")); + } +} +console.log(order.join(" ")); +order.length = 0; + +// A for loop's initializer and update discard their results too. +let steps = 0; +for ( + check("init", false) || (check("init flag", true) ? emit("init:yes") : emit("init:no")); + steps < 2; + check("update", true) && (steps > 1 ? emit("update:last") : emit("update:next")) +) { + steps++; +} +console.log(steps, order.join(" ")); +order.length = 0; + +// The left operand narrows the conditional. +function describe(value: string | number): void { + typeof value === "string" && (value.length > 2 ? emit(value.toUpperCase()) : emit(value)); + typeof value === "number" || (value === "" ? emit("empty") : emit(`text:${value}`)); +} +describe("abc"); +describe("ab"); +describe(""); +describe(7); +console.log(order.join(" ")); +order.length = 0; + +// A generic callback: the conditional's type is T, void for the first two +// calls and number for the last. +function choose(skip: boolean, flag: boolean, a: () => T, b: () => T): void { + skip || (flag ? a() : b()); +} +choose(false, true, () => emit("generic:a"), () => emit("generic:b")); +choose(false, false, () => emit("generic:a"), () => emit("generic:b")); +choose(true, true, () => emit("generic:skipped"), () => emit("generic:skipped")); +choose(false, true, () => order.push("number:a"), () => order.push("number:b")); +console.log(order.join(" ")); +order.length = 0; + +// A throw from the chosen arm propagates. +try { + choose(false, false, () => emit("unused"), () => { + throw new Error("from b"); + }); +} catch (error) { + console.log((error as Error).message); +} diff --git a/tests/harness/corpus-costs/discarded-logical-void-conditionals.mjs.json b/tests/harness/corpus-costs/discarded-logical-void-conditionals.mjs.json new file mode 100644 index 000000000..3b70bc600 --- /dev/null +++ b/tests/harness/corpus-costs/discarded-logical-void-conditionals.mjs.json @@ -0,0 +1 @@ +{ "plain": 4136, "san": 4906 } diff --git a/tests/harness/corpus-costs/discarded-logical-void-conditionals.ts.json b/tests/harness/corpus-costs/discarded-logical-void-conditionals.ts.json new file mode 100644 index 000000000..85c20d025 --- /dev/null +++ b/tests/harness/corpus-costs/discarded-logical-void-conditionals.ts.json @@ -0,0 +1 @@ +{ "plain": 3559, "san": 5110 } From 5ab76a4d54f7a2f5b73d18ff2c2ad89da7de49b3 Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 15:31:14 -0500 Subject: [PATCH 19/52] Keep the native compiler's profile matching its functions --- .github/workflows/release.yml | 20 ++++++--- RELEASING.md | 4 +- native/llvm-codegen/src/emit.cpp | 4 +- packages/compiler/native/cli.layout.gz | Bin 238832 -> 249604 bytes packages/compiler/native/cli.profdata.gz | Bin 1806722 -> 3442115 bytes .../compiler/src/frontend/lowering/lowerer.ts | 30 +++++++++---- .../frontend/lowering/stable-names.test.ts | 10 +++++ .../src/frontend/lowering/stable-names.ts | 12 +++++ packages/compiler/test/stable-names.test.ts | 41 ++++++++++++++++++ scripts/build-native-cli.mts | 16 ++++--- scripts/refresh-cli-profile.mjs | 14 ++++-- 11 files changed, 123 insertions(+), 28 deletions(-) create mode 100644 packages/compiler/src/frontend/lowering/stable-names.test.ts diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0b6748edf..ee3cd73d0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -101,8 +101,8 @@ jobs: if (receiptRun) appendFileSync(process.env.GITHUB_OUTPUT, `receipt_run=${receiptRun}\n`); NODE - # Collects the native compiler's profile and function layout on this commit - # (scripts/refresh-cli-profile.mjs, scripts/refresh-cli-layout.mjs), so every + # Collects the native compiler's function layout and profile on this commit + # (scripts/refresh-cli-layout.mjs, scripts/refresh-cli-profile.mjs), so every # platform's CLI build optimizes and lays out the code it compiles. The # committed ones fall behind main within a day or two. If this job fails, # the CLI builds use the committed profile and layout. @@ -111,7 +111,7 @@ jobs: needs: check-release if: needs.check-release.outputs.should_release == 'true' && needs.check-release.outputs.reuse_artifacts != 'true' runs-on: ubuntu-24.04 - timeout-minutes: 45 + timeout-minutes: 75 continue-on-error: true permissions: contents: read @@ -136,14 +136,20 @@ jobs: git clone --quiet --depth 1 https://github.com/vercel-labs/tsc-ts "$RUNNER_TEMP/tsc-ts" echo "tsc-ts $(git -C "$RUNNER_TEMP/tsc-ts" rev-parse HEAD)" npm ci --prefix "$RUNNER_TEMP/tsc-ts" + # The layout comes first: the profile matches the functions of builds + # with the layout its instrumented compiler was built with, so the + # profile is collected with a second instrumented compiler built with + # this layout. + - name: Collect the function layout + run: >- + node scripts/refresh-cli-layout.mjs --jobs 4 + --output "$RUNNER_TEMP/cli-profile/cli.layout.gz" --work "$RUNNER_TEMP/cli-layout-work" - name: Collect the profile + env: + SCRIPTC_NATIVE_LAYOUT: ${{ runner.temp }}/cli-profile/cli.layout.gz run: >- node scripts/refresh-cli-profile.mjs --tsc-ts "$RUNNER_TEMP/tsc-ts" --jobs 4 --output "$RUNNER_TEMP/cli-profile/cli.profdata.gz" --work "$RUNNER_TEMP/cli-profile-work" - - name: Collect the function layout - run: >- - node scripts/refresh-cli-layout.mjs --jobs 4 --instrumented "$RUNNER_TEMP/cli-profile-work/cli" - --output "$RUNNER_TEMP/cli-profile/cli.layout.gz" - uses: actions/upload-artifact@v4 with: name: cli-profile diff --git a/RELEASING.md b/RELEASING.md index 8eac23a8e..28c3e3ef7 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -16,9 +16,9 @@ CI (`.github/workflows/release.yml`) compares the version in `packages/cli/packa The release job builds each pinned LLVM helper, precompiled runtime pack, and native CLI on its matching host. The native CLI bundles its TypeScript checker, LLVM helper, runtime pack, declarations, and comptime evaluator. npm postinstall installs the matching native executable; Node is needed for npm installation but not native compilation or execution. The user's toolchain performs the final platform link. Sanitized builds also use it to instrument program LLVM and compile the C runtime. Platform packages publish ahead of `@scriptc/compiler` and `scriptc`. The GitHub release attaches standalone compiler archives, their SHA-256 checksums, and the surface manifest after npm publication succeeds. -Release builds of the native CLI optimize the compiler with a profile collected on the release commit. The `cli-profile` job runs `node scripts/refresh-cli-profile.mjs` on Linux x64, which builds an instrumented compiler, runs it on tsc-ts, a slice of the corpus, and the runtime benchmark workloads, and writes the merged sparse profile. Every platform's CLI build uses that profile (`SCRIPTC_NATIVE_PROFILE_USE`), and the GitHub release attaches it as `scriptc--cli.profdata.gz`. Code the profile does not describe, or describes from older compiler sources, is optimized as without a profile. When the profile job fails, the CLI builds use the committed profile `packages/compiler/native/cli.profdata.gz`, which local and CI builds of the native compiler also use. Refresh the committed profile when compiler code has changed substantially since the last refresh: run `node scripts/refresh-cli-profile.mjs --tsc-ts ` on a quiet Linux x64 host and commit the new profile on its own. +Release builds of the native CLI optimize the compiler with a profile collected on the release commit. The `cli-profile` job runs `node scripts/refresh-cli-profile.mjs` on Linux x64, which builds an instrumented compiler, runs it on tsc-ts, a slice of the corpus, and the runtime benchmark workloads, and writes the merged profile. The profile keeps the functions that training never ran, with zero counts, so the CLI builds optimize them as cold code and place them after the code that ran. Every platform's CLI build uses that profile (`SCRIPTC_NATIVE_PROFILE_USE`), and the GitHub release attaches it as `scriptc--cli.profdata.gz`. Code the profile does not describe, or describes from older compiler sources, is optimized as without a profile. When the profile job fails, the CLI builds use the committed profile `packages/compiler/native/cli.profdata.gz`, which local and CI builds of the native compiler also use. Refresh the committed profile when compiler code has changed substantially since the last refresh: run `node scripts/refresh-cli-profile.mjs --tsc-ts ` on a quiet Linux x64 host and commit the new profile on its own. -Builds of the native compiler also order its functions by the committed layout `packages/compiler/native/cli.layout.gz`: the functions that `--version` and rebuilds of unchanged programs run come first, then the ones other builds run, ordered by the share of the layout's training builds that run each, so a run maps fewer pages of the executable. Functions the layout does not list keep their usual order. Function names of closures and generated helpers change with nearby edits, so the `cli-profile` job also collects a layout on the release commit (`scripts/refresh-cli-layout.mjs`, reusing the job's instrumented compiler), and the CLI builds use it (`SCRIPTC_NATIVE_LAYOUT`). Refresh the committed layout the same way as the profile, with `node scripts/refresh-cli-layout.mjs`, and commit it on its own. +Builds of the native compiler also order its functions by the committed layout `packages/compiler/native/cli.layout.gz`: the functions that `--version` and rebuilds of unchanged programs run come first, then the ones other builds run, ordered by the share of the layout's training builds that run each, so a run maps fewer pages of the executable. Functions the layout does not list keep their usual order. Function names of closures and generated helpers change with nearby edits, so the `cli-profile` job also collects a layout on the release commit (`scripts/refresh-cli-layout.mjs`), and the CLI builds use it (`SCRIPTC_NATIVE_LAYOUT`). Instrumented builds use the same layout as optimized builds, because a function laid out in a different partition than in the instrumented build no longer matches its profile record. The job therefore collects the layout first and then builds the instrumented compiler for the profile with that layout. Refresh the committed layout the same way, with `node scripts/refresh-cli-layout.mjs`, before the profile, and commit each on its own. Publishing uses npm trusted publishing (OIDC) — there is no npm token secret. Each published package must have a GitHub Actions trusted publisher for diff --git a/native/llvm-codegen/src/emit.cpp b/native/llvm-codegen/src/emit.cpp index c7efef13f..a263ee601 100644 --- a/native/llvm-codegen/src/emit.cpp +++ b/native/llvm-codegen/src/emit.cpp @@ -212,8 +212,8 @@ struct UnnameStructTypes : PassInfoMixin { // How the --profile-use profile matched the functions it annotated, summed // over partitions: functions that received its counts, functions whose // control flow changed since it was collected (hash mismatch), and functions -// it has no record of (new, or never run in training: the merged profile is -// sparse). A partition reused from the cache without its counts is counted +// it has no record of (new since it was collected, or never run in training +// when the profile was merged with --sparse). A partition reused from the cache without its counts is counted // in Unknown. struct ProfileMatch { std::atomic Annotated{0}; diff --git a/packages/compiler/native/cli.layout.gz b/packages/compiler/native/cli.layout.gz index 4ede69568ab49732d47d475bfa501408a25989ec..84a2558b5534a91fc264eadfb6d4455dc9176016 100644 GIT binary patch literal 249604 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 literal 238832 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%0D6d-{@BwR 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 diff --git a/packages/compiler/native/cli.profdata.gz b/packages/compiler/native/cli.profdata.gz index aa9398b5febacdfdc156d2c385c07312e12909f3..4480e4ecb6f9bf2dc9da6a192e240c18d8684a0f 100644 GIT binary patch literal 3442115 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

8zJWJ2YA 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 (ureyZm@F;FBME63BTeF$?>llW_vM8S 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

Tjw&(sz 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

tH(pRYxjuh3=Q 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

D6Tgy7IrBZ9_0q3j@Fa|ao<%If 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 koh)EQGRncK5(n`ke03H*U7xe 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 rOy9U* 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�*S!H10PDwiDyv@FpS9xws>7; z1PbsT7`@?hb+`ud6HudI!iWiHMlF8-$gh={oxRF3SIFD=hcCJP01i0iZLPPo$5Y%7ndfpM!TDA2eogyon|EVg*~=DV1KV_;I7pQOmh0whvBy=b zdcbd8yW7jUhGSo~ZRW*FWmdw@S$P)!I3hd1`kKftTSbO28sESEKf$8=x^VM)ja&z4 zDx^OKq17zxTUVqB-7=Lf0dCQY--wJ_PC;fVo=e^0@vu|E`TB!Q_*W{|CUW}`txCGK zn3aGq4p>Ag1`E&ClL+>A+^41t3{GNue84a4<~1fBTVJOAiT3S)N7XSlSYnZCYMgdq z=19=xc-}WZUSV?2-g-*W_)IwWO%pj%8k;HwKB0V^cB45IgNqF|D$cf9xXFTdu-lpg z5ZjY?1gE7yTD(vi%fZ#uEFwQ(ff*Y?}1lZRz_ZAHlLevM3+;_ zyu#cDX!63syLwUF+iX{X;Z{NvF+A3kVoT%vnF*D7g(oDCB#QyNY}m4FPmh(`X}rs- zfSxaU`nP=jIA#!smdAIc(d3VXP^%jxm8pw-)xy|s0R=LpaCxeHyUAW5A-B$QU$3br z0$ATHmi}~mFN{8E2xM$mIcB1;%96yATfeU#5){Fb-gau`fNTs^m;P?-Hci<*-46f0 z_U1L@`mIh1Gsv%=syZz_e6!~nx|IFhJy3g_iq!5!Z+%?AN_Wst7b30#P~_FG_5Vs4 zCRB77UzNQ7HedEW;@X=3OiL-`gk2~~3q_-_SHCbjD!^QOS>9AqV0#lu?G$Q)E(b;` z-Te2kf$w>cF8QzJlB$t{ihXF7*U%jI@AG~;fDWloB4+cNo6VTYQ@4wwq=wyGwxWWq z!AU|hXvtmc{U~^&vK`{7I9-NQ*Hys z;NKFxv>)y~4{pBBN7W-#`DiKR*Kp*~dv)VO0@@_6Am!1i<*fXQDvO|6bgB4XV6jFQ zEJeWd!c$r4{uN3oWhwWLg@rzNk}R zh%$}}?*9PEKsLX0VpV@%2!?|^1rd!I zj3F{^Qn*i1y{D{^SN)a#t-AvYXFaG}y_Qsuu;!UUF$z)0uC4WaXJLA);Y5(VH`N@q z@X7n0ORHVU%<$6_+82IJwL|xT+JVACI6op z&YkgkZK(XxTJ~C}nkMfv-q(-W-Ao$P!& zPIk*VT15X8GSiJx{&g$we_OpmxBHqRY)}v)mZE5yvJZClE^yg>o_w#5$UQu{gB&i| zJNN75jX=}aijg&1q*l&sv|1Sd=KeDmkNTf}r&I>kiBs$>%kV!RZ?xjKYPwQn>%_8U zMalRc<8?_(S^tFGj)Q)m8$q#K6zqjCD~JMCWD$exoCl`gmzkSUeyt|we`E3Rtg9O6 zriJ&z)EJQ*U;ul2jbDFTIPaI5jV=;~Wwr4BskXi2T-QVeMIt<+IEtq@QN(7TNN?6M ztKvHU$X6e^YSiXdhTS%j9f#)?LKGS@9HtsRn)$dJxu>{@JVtO%ieFjR+rPDW z<1F7(x-;QtHKHo(rZ{{#AywUAp}?K*vr8g;HDm0|FFI|tPENuICn-ruN>Y-Nl%ymj zDM=Tkf+V$!;;6rWk>{$qlkdghhZTcQ1;tSm2RV$2y>CVfPKR9Re3S3;732{)euvya z{)g_bGtN1)IKyUmwZ#sykX0CkR}if*#E2{!>ohjV-{sVGmri-8t@-DbMo8q5Bua`T zBbEvSFuX1!auunTEI+vGP>0ke*H_ws&r6&{@{RBb(j+JGdV6RQ4e@qvmj86;UDZeR z(A~k7MC@7&IRRk8OFRp5ZOs?Af4+Lg`GOCc<=@?&y#7I6Jif#t<{82$3a3zFEMMY_ zVfB_C{Ve~wI;XyVb8(08c^5GO#DLs9x5qakk4O&1K|JxR5=QuYJN9(gHnnbLDLP6u0yM>NJR&Tw7~6iS>AMC0@Ed>lPyQc`&03Ec%u*~3 zFio>e7{K;zmdImPGDebrdgC_ZuCnXtETi~;QjkRyhK#+3*QbF*+NB(aQ`Y{v>F2p) z=KaCe(alsX#;vn|G}nPw!Bds&hnWpf|`&Q5M+3s;wdcsekS1Vnv$M6HYsEz z=^~;M2B7%4g6huJuf=dL$Bc{+i$#U-M)&f`G3rRMIQ+F|{5Nd|C|`c!ND>sub@+O@ zT|ST7*=K5A+zPeGc;Mt(Pod}M?dDb_GlO` zofTQpBpK3(WfcTv+~H3&`kUP&{TJM0STa%PBZq+CmTu-`_q4XoUWMX8&K+R8{pF-`m9Cv0S23xWm6?^b3m@oH7Y&fo#;E7IR^K zzQ27PdMRTuJv%@|3ACUv^ZzdeE-_f|H*8jfA71~rtkf@eR%Jd za2AdNn1wus_H2(kKhK-xaZeW-c}kJg{O#B$j`T)4Jb?(;A0*5{iSt}+2)z=(-=KHleV{t=qi=l7@+9ccbR3JtW3 zWAU?wrT*6@udmT*h3 zQIG+E=fkoxEWWp>9AC|>iU<5VKH72Yvpzb5n;*VhOFYUZkpiz>pdly82#BoAuKMuO zW~ZGWr`7tKr;OFI!aw|qKks~MyS_8+v_{&QC{9rrS&$)*nR|B+$?Qk(v(cgdXk~b} zS*8c$%&^6IZHw`q9)@c!#{cJs$~K15=v>&?@P2))rWw9F#c;otNk7<3_-=i}@3joy z8Sfm?|6lhpzr=LRSNd=K=D?&YkUr*XBTLS_#8a4+8Kg)j+Ev@}*iSobdRyX+aW#{V z(qoLNkvbYJPS(ivSS^qGZ4bKChn7WUTo@@Vl0=qA0v$i&TIH`@Z}X4GZjI_WsXz$> z$RkM-ftlx|xq9?*fAejVzk7DTpmJ)MBd9L&JnqTF)tk7yq!8sOeu-p_|B%;J*ZaZv1uY&wrGqR)#ND6-Sz%d@LqO&WK^7VuX^To{ zp1gK#+0sa6zw7N-??15klD;kPj($22X&|vkrX(PXiJxRQ_`5Xw@~ul(#IS-D`s4~c z;YA(`GLqpt^6i__xYZfKS{uZGG0)sOS}Vtqr5_S7()6VLiT-nd}{>Jv5L z2_-T-5k&}izP#{{&-%B%HTg{QJM^C2WTFXWWhBX>qF`zNwte3D{~J~9!oghrkN>CZ zXFT}$+j?kA_XyE3h^H{dG={te4Xik_^F5kH%#%%gSx&*HxIMY;23k)n*t9gYT~d=? z&VktCZ@%%H>=A5KG#P{#L|B26X@Vo7$-J2ny$r8+tDklx zfDU=VFYonlYSbqJ=($tQw=-G z-}6TXlAnuy+9E73LPf$NX5#OqSN$h52Mv6EU{XeT_j_PXAZILnoj7Km)SA7Osh79(@6&6J&~+dF(Po5azvHs9;)RiJ zX%YF*a>^3@|6=`qt|%6=#!1sdtm^MRxZTqay{DfZWEk+q$?_2({=~9n71)brZvPRmLM1Xmja14i(xix0Dy^I^1!6g~YMawPA+MWLA zKYZ)Y?|*X#V}2+zbtK9rzQUuqSMoUWd|J$J;mENGdFz6~5Av~AUnG^6q**QpxE#JBo3Py1DP$WL;LFxn3vi!*@R(PJrlgn}5g^vq zA7UZkSp=9c=bhO-(qdHcv7cEy!Nw%Mvop6{!)Duiwq>9M{r3wSw(^O4&p8O z)Lh8ZEDsn8vGyLhqJy}6!-+&3lZi(|1WO1~^?-lNxNF@tc9>!g2#iEyh5@X?a23ZK zIOy*ld~C+r8qq<0MUfyZ2%}(i~gVc-&mU^O=_&`nm#kp_zMzEL5iYiamv_M z{e>A{UBr%8hyC4a+%tdAL(xHKB_IJop(TZg3FLwE9~`=CW#4afc=6?>Mm{v~p~=l* z22%iH-abNd=aC*R!CBySc=efJmuLU^=kkFMEh@GYnrRtRV*FnD$H^mp?u$RfFEVtr z29sPK8127P=&Y&Bbz7=_9H@9Ik1zf24_mWw<9FtEUY3FsVtI@JMl2hq-Kcv_QHfI` zSMjBPZS|*Xojx4hnj{mMAp$RBii>}aeC4-&nzt69!E`}?a0Fb~-gr*TOiaz6F)N#VUwAH-sAJgs3Ybc6xa|s@g zdx~AbkR}o>A(~SXk2d+vKQLV!UMG6W50>RICqaRtPy(JN-}`gOO`WFC9~!>ji%PjN zgoZrS3K8vz*VohG5;A){`e)pEs{^pLs;~#xEp5Q->d6AW9s8F)-PYeFDS^n^E?%3vRLwacVIxMg2ffhBP z>5k=Ig45YUi@uHjMDmCKt!XXKw93`33Y*NW3Ic?zBvYbH$#U)1oqsyf=k;`uJf&YC z^X`n_Cd~9-In2}#o2Dd=Qxs9=0WtbvC(01c_>c9P?L|{BH)pgZnUn+$iI_nUD@tJ| zr5kGe*;#5lEKNVve;31R={sw@y2ii!&!n7&yB>?ar!zp}kpyHQ%9L?W$0@Nm;aPu| zyEbIj@mvyae<&@kBc67r-?I1CW7~@z$zmn&seG<&35;#@?4`%EBjxIn?2rz#e=bck z6PK)kOKjdxAO0(P*J1{-K%^9`U^-z{ZQ$S+XGX%>jlw5zQR?$D0SX5i9cc7hjYAbk zdu|I{egBvH_b)bGFj^WrEr?bmJX6sHW3{9NoI4-Qd}&?NXeJshOA99`EC#gl{?bSJ ziKP;|FMXtFl#aX_Qj3K~Rlg3eGA+8Bz(Z5_WR2gV&!$z8MZiMOH!LB5u&gK|QWo}Txl2Q%Jb&|D*9mkVn3X$-K|-DAUl9JD<%TvU^lNp{3g%)kF^zGvds8C9L9!%S>XwX_XP z*xi@rSM-W-T#UnXg)oD7NMopZb@z9BeRi)q-y@NcWNO?=Dcc4P56oz@%cl=d-AK^u zJYqN+@eFHsY9rKVGI99^yWM%Cd=95$nxFws{dKhGRhRA?SF^=Ge3_T@>sH@2CvWP~ zDt!8dZJ4wKSSS&|1D^h>ez3#FQjSVZ45g8bVGuP;Od6IL&y}?MWRrP2uihIYW=#^c z5G*7nqDj0wz~pzBo$H9<#!5IqCnA@8eP$0#%w5-LL3BurHZ`r z`Z$S}!c|kg5wBg4WzF{6-|ZycKbNc;-KWX^>bm4ID#UuOiV+u)D8+iuRZ+6ork6PY zcMAB1Zrb^-jv!Iim)B#*sLUD4F1d4a9lpeaAUX$X7Hr#m+rFs7sK^8g6rl*O;P{8} ziU6qBb6(T#%?v*oj_{C?7+y0Lar6t~7{@PT`lXynu-9X?rJg~eH}i%oZ$yW2SrU`? zTmGTnl~KX(H6vS`?D1l2XI;Z~k(uCot$*|T&o?r*_d-u?ajvLNs7y1tHui7*IPb?A zCt{eNFB#@-U4xjFW*ArAQ0jWa#wP2)I4{iRM?*tdKf&)a;}_-KM{IGf$G>~MmdFfU z0wAxTZ|`2_8KGGk(7dKw)dJ+g0&Mr@7Wu8$`e2|*4Iq#+;?)iBMi0M&GDq<;%}b(^ zfJh7j?`~;Fb>9*7)f~&PyeKLn3lk8DQQ(~`7Hr*dBHBq`QZPjU2qZ~{<##ga7MR*` zck?U9>oUXCh}Hp0k|e-zP>}`E{i=J^iepS_jdMI(x&?Ztby#1$KyPVe%N61A-8V8G{X7;4OCVB23SgstzM|Rx{;rj5JxA{~ zHyHjauugoh>+JX2n(MSn15pbiBZ(3Q93_J3^}d+;#EMmx%2sQqR? zt}nYW9h*fy3q!z{ISXeKU!oREo27SPbai~H>-IM08cw%3(VioChfdLSCcL8X96$;J zY4eA4F1-geh*4MXz}4;RetOpj`e`GtlrB@UBaXq%4*l}=_6Aj+a=3(j^$XDd&gyVO zt#|@fu_OuzV2TEGtbo{<`h z$)t5pw4E)&8G#120uam4Mf%--rGexeZdYK$iS68wmooQ;WCK?Pl>!&~785VIEEhM? zjV40xNfYYIG0hW{E(%xj$l^7S|TIB!ud};^Ocr7O&86Mre0eIH9L9@+%-ztk0&l$Z!D^`(8z84-ZhAv= zvui%junMACfFRBPHf`nCV+VX@)xCjq7cbqHI@54%JZ9;~-Bc6yS2A};1va7%4W4{2 zdcp&aLRv(*C@@S!Wa-40>*&Dl=eG8lzp6O5Qd-!W(fl+8LE;z!Wko`lRR3*DMyMKU5lApSjcI4S}xPFFgiC9d-ETNR6Z+kOd9tMB*tk)Zsmi%9a*OAu#J$zdyuNrs$$HO))&hv4~??9x{C5Xq@(d za(2$Y3qI2w!y|z|LXP1XhG%JPmpnv^KJP8~$c-BYtX8^BE(R)|7!rKyhCIG0SLAZT z#G&f^o(bi+)%(cwDRTA+KuS8x^2GvQ%(+RBy|Lp$f#qL&j5*9{D# zlxTbO`}59o%~Hvn$PR36-TBt`x0(Y;N}Pfekp`luR2&a4Cot>u^t(U1B?=Q}ScF*) z(~v?O3X9qtHNL28r_?j6!WHP>^Ah`z>gJgzc$Q*$8gYQ8Aq7n)nl}V8g(PL@z^6r zj#RrQse}8+DH=;3l=1@~53SMelOC5hzFyEA@bN*Pohtcb$uobCf;w zO%8}xo_rzmRsCd|7g21-6whIV7%i@|XTG8kPY+M-)Pm3ZtUf*>3`(wo;&|BqmoSGZ zf!-TG?RU7F-q`Ba2z!qp00B@k;CKd`AEQ?pN{h+0+5PQ?9yN9XHe9zhTpLuhVb~YO zoQ+0zEi>$pSl3emHx55ofAbi)6`1?k`^$Y2&RG=LnBfl(G)ky`dZ z5xyR74a{+-zSDF@RIpvd@}j^|h*Bi6qUWev13M><9yD=Lya_%eBFH==a}q6xiJo6m zEHeW~Yd<#OKh1}Qiy2eOpI4xd$K&>R3*j8SgB_xlVIW@dWM<%zH>C9)Qgq>XNffgt zuV5Af2w1FK2VVT1Tm4{07sG46YI%O`62|tJUB`N^m`8ddTwbA6j8-#!yLcOk`uEhCQ&{9Bkt#Gk&amxm(|O0b>VFrgtJN|)(BkZseHt~=;d{H+GoA>F zas*K9nYTvbyPkf*(k|2q@V27T2;-Y9lV!3@mdWzMDwC9?^O=(CG+8FgWSK0J@|6^2iX(#|%#z0_Ys=VmZR?A(1*$bzAG;d;513MB0SyW^!034P*zPjnF7X|iL z+g)q-?Zp7VHWL+o5dbj5D-z;p1|z_KytEJd@eMm`WF=Q)mC&MO7gUflEDo%x6UgoI zUwz#yFIhJwVMRoe36CVgVOkutZ2vQ}x}CP_VMCOm{QExT?f^G!^?@bp>2PLa;Jy?G zXbsWYKG>lUpCgwHC)p0S%WHQ}ag7n2lZYpM*Z4V2)<0ZFXGH07w!&sv5@^t;>vx0q zwm07cZ{PW{?S=uLS*ussaNHYMSz~VCrRVB}4~J&%a}-(^T|Q62uoDlpEY0-qSytp~ zI_*H&>+rt*cVNztbp!fbW$MJmBMu@30Eri*in=5IJ20>AzMAQ+8i(&N9?9u;X@+Bw zqhus8v_!=CEm+F}*SBn6ci6Fk;V+KEXiHNR;#eAUtbGK@6G%HX9vJ%h4-%aZRIqu9~=5LQ4b;2S_^AYAKQH=l9 z>jSEL{q@T~Y#ly*^bzn7$v(v)`*Q381!x%|TEc?qv5___q{iedHOy5`jn@RPc(PZ#cFd@>`o+v?sNV z0kxX{ry?07P2h7=Z&| zY(<#^~%3iablpSi*eRNwT&n58E8rcXP8J zej3!;TsF*Q0S7sT<2bv^JIW;!WjGP!;Z5E=xnqDUO&1HBmYeziH_-gbLB~6v(GRm7 zO}rW1o<4$FJ0Sg7`Fzv!4JGTo6~1fRwRWEQ3%J1h^1s= z8hKjr^|CDhmTvpCZhkZKW0#iKi{cRxAw`QEF&?f?w2F83z7S})e09&ROZ9(HqimcU z;dm%yqeMo*`BsE6EH`sQAUXR|9JgzMa>4e2ZukSYibRi!>txr3f>m!I8E|J09!D z@hg8WTN+8f-}z^=cDx<{oyUKE)gto{GYSD7A;e-%%YjvnIA1l;{EGws{%JQ8Q!f#o z;=V9iXNZtDr0@i&>4$fXYr3vQjbSOpi)Vbi?RYn^sp&iNCs*nVwR*&WPMJs?E6GGe zA`2cHeNb+{IrXxCyqauppiNtQi#Hk5WhWsxYfi02s$SU_XM(tu^P*k37U?TaHPEqDahs(s#c+NXhWE&lR+`bBXZur1Pr z6BHhENFW3tVc@3meb@iluEy1&e-NETWrxsz&I$#6j5a7$rs)hTbmK&*)YV_>t5?nY zmW2ee)4CiyEBbxCzAo1mO^L@YDSLe+w5s*{b3@PnuY2UaekV}&T7N$O)uM8GNX#2` zYf-r(^nN;Iv3WBsvF9GFB$KmQT&B%(D6nNS-EqjE#^H)fkIy4WTBxibD=f=#2*`YP z&I32rtNCMbI=Jh!y?5-Sm|etjqa9ht6LT+|(qLXZ_jjsZNMfIjStK)1GM zzj=OAv+yr1EjP&&Vg*JL8Cmq%*~PWCKa^T^I@{xc{iB-tXTAqY4^*VBih>Za6h+gN zeXz54flJeA57D?#f8xv|p4Y!ky>h+yM)e_~etazSx(T7OuE{Ac-skku)$tWtSfk&s z>iRvQvXRN}O|4~rHqn_&%M)pl%a7B_w$rTto;Iw5EL+*@%Tl8Ed#6zOlHvaR(0l(hsFBQ4558=RybeD$ z*xh=CzWc?{^OvTSy>F(6(bsQtLwjB^@P`Q|>)eMNzTb@W?`>#MAFK}j|2@|D z`oFTQ!UCh3_eg*4oW>{Cv4E>|T_`XIl-ajXcW_ zVtmKnMe)wt%1SMAzEb)H)?QmV=g)--Jzw3Dq$DLNNtMGlCm7@aGr4$HS_#j*wor{_ zvotBgORZ*H)mG+*6iXRjn>+*K-edUZ+A*$c#<;E#<2n{_RIKZ230|isc%2qQUQ6^k zCB{BzyzXEaAEU*kR)YPTQNjNHyT>Ee_*C|I8ReQ@F|N~NjCb_}$KQCJT(5u6dbL`< z4$PU`Y4ePRy2fa1s4Np#0I(tfNCcMSSDOL_tVOjrBei$AX-3-BrtV{_Zaune|BY# ztfC!rVig}5bez!h70KOfg;exCwBfre+chGDCR|)@wU({l5$FF`^@+}A`6;ku>vLT` zNQ-V7#XK(pnc;W=#cLYfGz6&<{&e%kE;|ggSjqwX*NMIrRMe^vcl&mGF_D1FnZhE0az%3-8lXe1sNdMPNjp zk$F0Pd-E@WwI`HMZ#ptO{M}Q;*l{Kl$FP9qG0)nw@gkpX;&0RMfdfP8+CTg(DjcK45k&-oAc_pEIIR7jf#sc^pS1TC9gwkAWCvKU+vBri z%yB&82}d)?E{W7*8@HTVfZwXo>H;}7{d$hoJXXuuz>Txg-hDP*cU+3#>z2#&45A=U z1H0_VCSKq7FQ435+M_N0+AQkC18TwChoiC}f;pPyumU(Gfp8O>`t@z=#=P}xlW_T^ zI1>ayG>>HtDW0;Fh^mQ#*7vN<}D-=yLpnm(4_8-C=iNeBx!Ez)qmYK^!-|uZA~y=iH+6OuaA86 zp#|N{x3SP#p*a>~03mH3p6}8^$%p1?3q^1ac1wcOYZpnj!!<&3=Mnd;!Lv$7J)|uw z+nV~OY^jOb3`#b+GlIue4fvVP6wW@ddPD{k|iQ;g{b_yv1t+^c|B)>Q8P|iCKy_0f@iHfhX zP5k9`Eihxct<=$<&7L;kRz4=nHHnfb%Ca%SC-@vvq(GUo)8iEbTdVUnd}q1ls6GVm zM;?O0C^HJv630>+=mVa5`S=Ab@2*o*_kwyohI@kXceCqQ&xLWV&?m>r#loeOEyH`F zje6$sB?D*QO_yU(ygu3K5c@gZqTuZ78mbt_qyDUT$D^%!kZri^)|_VHa&c*iLF74> z29U-qUi$HH?z(ju#bE(Ar^J%`+N*1?Y&NWI=VwErA_z3kccbjR^9pN3R;gFf zUhUd->#2IL>%Vu8qIcjJmKQK4fTsB)bM`H~yzZ$w?UE8?IZt&R)NW5qdFHv|WD>_B zA2d0NMKqwaQ4k6Wby-75u1GvXr?`mcnQMD*Znke+O?`SS>04AzLDn*5j-j-es2ugO z#fivspayK2CHjcT}8c8)8u}v=pjpjzgJfK^bv{IO|^D{_ha=-Wl`<8m19?` zQ(tNH#}%1Tfem>UF@lyxm*?b&z=nygk}K8guW2#ohPR`ttsz4w03{IuIZSP>GjpS` zc8Te-yh{Dn)!V&#lqsYDg#e2nOEDVoAV7)dz6EM(qceeJFI5khXnnGs3ybZ(*5pk< z9q1kZ$|qAgn%giOF0W5;NyM#$kQ0GIb0QJ|gfI-O>gYtPNuN+^n->=eL%QlZ&AKJ$ zVlDYF1!%kImJ3FwFT6C@{YUDAB_lfv{%Om@x#&-6-w zdth~5mwxv=#z)7@QFs9&MFEnOKzdU~efQ7VPi2~WZ%`b^G7QhK070H(!@yL24;>qN zSR+@#sI$L$^t(G>Zf$70+ysz&fMVC1O5Ydufk2km9wSnJqoKJ zq9_#2hzq_sT1P`2$UH}rH^suM%DR2sMqHyCX>N{uI(NuZhkERokp#>m3~3H^bs*?} zVB~dUs}S~*SJ(ZSqb{4)I{GP(OeUTJJC<1@0Gg2@Bc?w`j<%TEHfcpj;1E%oJMpTl zEXo?TJ`UhGq%csX31*2XCV}IsewfOh^{!Lz+v@rD`AyL+keFsDj%WBHQPJrna+V-X z60*s$-L)liyxr!T=ztZFmS_M42t~xqUwZo|cW(G0HNA>v zQ+IVji=FR}eKo4s!E%7eG|w^&3*z@q=%v2452yAhPTm`7nhJSEu2NpRBx|U$yn<;O zTbDe%KiG6|@eI8@yKHHs>7lLL2+mc~mVW9xUA}v}&)#O{`e?1=F+e;Id5Wj$Z9^a4 z^vmQHsf{jhHc}!o4NzZ5|JYjZ(kM>6nBgGJXr3?>0~w#}AgfD3;AC`DV3@`MzS@B1|uUpLsRJ*i--)rX2ZZ-M+?^hRQsok4?xMKWet;3gK zi7G^t5R?^#{?zDc9hHski;*QnO!YL${>3XcRX8@D9558Spdtk%! z$5JEY6qY4B1Yt1N-`?T_ ztk9&i)hT;ztTJ0o_sko;rA3^e%aEpdQNzmRAa4e`Y!-KNS)9*RHPx!3_n3h$+blV1 z*7S|P?Rv%>qEqHX#4;2m0L2K=IWs|I+#GfAQ15G_4o8?mPT6DUDGig8cpQS$F|9Bc z$Eg-mUUHP0LgPLOt&FFO%17O?_P2@ZKG#*i(pu*({UdW1hS$_eG^7yq!hl_ewpB|0 zut}=i=;8sQhf&FGJXxAW0$VM&s6Ffa_otUn=n0XwhtFGM zLL^=hc?wXHM6=&yjqX)r=BUj27sw7+GGsm#u2{N>e=VwMTGYl1LkTb#L^Ms$h*5^u zJ6T;_uimf|Eu)^u1eQgdz!FKK_(V@+R?AHF;H0%32WCf)yOEIqSe}t2nTvmKo~>R# z^Y?vA|9geGHZB)&Y$31VXzdv8^?C9oAJJl7az|^zLwEnHS2UQsq!_%(8sl(nso>$d z_TN0!W~+~+c>=4CHVxkxN+sP9Wk#ehFYy$$`eeVmDkHC?&2opjO(ik)9+h%ZMfyFtW6L>L~#)FENAbPL!?Q> z(^rrLxlqa&QIIRTojrV7@PQVF@CxwUqwSGq*15yq9}Sb$HEP+ud_$CKxl=uyKH{%O z-isdHAwrIpC4p5Gfj!sJ9e1ifx!*d}@Cn_{yS%MQM@Kny2n8dEQ|aY)NrJCCb;q8^ z@46+^T|pl{<1B4!nC3beErf&0S)V>9^pUDl&2nDTxoY0ZP^q8Ep9l?1Mx6g|rgP7z zr1oW0@%N`#E-uQ5b9+xa$Kzr(k(}eD^0wD%Nz#QpkCW|6j%Tvpl9Z&X+1FB&U3pF@ z+0V)Gtx|rFphBUle5EoHd~S{{IiBa!{-1H4waW~XAf=MqkzyG4v^bwHFQvz5f2{g# z6_g7y4DCo%e-LkfW>nJr$%wHoFLXUlS_RidQocx1l9H5^zc0*oo0Z9NNY0n@@q1H~ z{hOpDB`HaNE9q*#JJo|DtvCG9E(Ub9#7PoOQIy2S>n?Vux_|Js%IfE$N1aL(&m*D$ z5hZ}pzd$`R<;Q!UelCJ5Unw_V!m~gY7>bdZ`A<+I6(n)fO%Qx8J_1!m3V1+-PFP_5pXB2g+dw#7 zFf@?_UNPc#>EUfNO+%j7s;RGbYq?F*yFV`yClCc*K?=b#MnsPqvCG#LOn=$;T{G*s zgXe!*eQQj|)Yb2|j>filMNwo?peY`5X3E)J5HgWawc-)?fMq*hl&#J>e{PFF>n{*DG6Nv*$fMXRXE0O?N zodX;5WQ|KHTN=rDzoUT@8@s7?@o)cCv+i+zod5nc;hTg$lO!QOJI7ZVj<#5G%7qk1 zQ5@tjvX2qGxrP09Yx=G+THsvefsbubN53RpIka|EC;}oA9wy3B6+jZK}ZI^|Ai53wL5h@cB@22fJg15~}H>|D*5VO_t zoVw}zhMVi}yfXZI$^wBzgwjkHi)gz_AA0EVcPI6VAc>bB#-b3JB;H1BSBH;zd*gQ> znn#;6h}ZHoVwPb5L$QfNK|ilzCX6w0@(Sb(4)i_jv^rkyhW&JJt-@Y{~yuNZ{ndLfs8kU*2!0RKqgB_xl zU8mxJX0NCdPqcc+x<5Kv62q|=5{zYrWnwt7zUaPr7Iz&6LLI8P;d1&`af>ZE}B)NHRkKl0-uQ9XEB{4;u z*VTvSJ>7Bt$><1yM8*mQXqiU|BLu##X0AvZx}b?J0_eH9%c`Gg7O^}8xG-0zLvr}C z1Z{S^dOBRP!0Vc*GR1kaCB;LC-NVTupb!)UfPvAxnkbn&y1b*#?(|j9qy3}8*-8M33dRIsiH!(n zds~ds*aNASch&B3~^5;@s7s3>apiM&f|~ieh{VH z6umwnyK6q8I9ZTcQD$Ule|60G_Rm+(IM-f?@2aO>8CkdO718lGiAZa0rFce!M*Pj| z4W*@$r_#IXwB7q&S=`Rdl@`#I?@Ifgy7u|27hPA3=~!wKX<3{!$99SdO(4-dHGX^W z9(BUr=MR4QT~y^ZB@>pRuqcayVy4`#Wm3f+^<;-;HL70|foo~@BO0=0ETuVuH-6^w zfx7&?_n*IKxBkvjnJ+y=%WhPxJVy)y6riDfggf6OkwSP`x99L*BX7rH^AI7om)qs@xSdYo z(QHzgn;aXrKYP07@(Rw}b8Q0nr<)vlZj0}^-?~PZ3WA~c?4D9o{u*)`tR1?}2$e=G zdHwz`lZ(nmrT9stak80=Tdey@N>WAkcB|!M^#$JIc3gLL=uS@f?q0+^F=8O*Sisvy zkX*s#b4VeqaLt!yWI-MosuW>`pB?seD{p^KP2GR?=Ehak_D|FUe>Ps4yS|xu+chzn z0GfqR=6Olp@%(^4Gh6>TSoU0P()e4k|Oggj9)PLOg*{ssbw|RnR@(E zP{csu7zWCe(c^bisB9eP%t*C-t~&RRy5Z)v`hSFZwDE|+5U>UHMqH;~$ z$Q699Uca*c_Y;eq&ALaNc#1+O4k!rGvbg>gT)!f2IG?M3jZAB|2IxNLn<5{k6^Bc< z6GX|9AS(#UurNcl^kVS+Yo?{tHL2sCaxTOU6})e@cs^IRsGT3F+n}@QG|c6-yo?Ys zoZXd|TO`J5{zSb=wnvbOH~zJBSUvXDD0jQpdWY^DGh=@=MInx*F~=73zbub?B9VM{ z54k0uczs2KATnBD1}8%b;WgmJar>s#x!9eH4y)Y2E$>(T>xIgIeqwV;}6C zoZFj-`Pl%ycLJknwH#4%@^fF`(=l3nBcy0dX)a(ii$UVivPabe*Ea7k z;TKaz1^|ae9rSvYSOYW&%Fcv-z$BPMTKBw`#j@pMFp% zF#Qx+i;ENqM*}PvKPBah-JTVGHjKxQ&|Lm-ct^P=x!hA+Me;}buJLo4 ztbe#p;%CTT)rp;?*~7f;!l#ek!hDy*?XtTBkH+)S zL)VYCik1?Tr)d@;j$jrs|9*CLm)0P?g-Hz=hSKc!cqyZT|5sU*5x4AhMxD*Re8;Bc zQB^34B2kEvIe{oR@qAT(s;3|Iw)pk3hUV*%LmH@oJ)tG}m%8SP+fTfHAR~N@Xt8I2 zzg%i?s6~xoDf;A=LVs*YkM(LxaQ7}e7j}*=EK4llNMVvn3eWxW@lLlM+g{x9i_*%L z7E9#o#92dX@JQEJx}CM^p`!C64Va7x#|l`Xg_7t1yL|A#pRU~#zb@8_)`?LjN_FC# zbv8?S@bt8Mzy10NQ+5h@NsAw4v8;rNxVI;mEiyd_n}0Qjy-iQD2W+JjZFY(UEQ2VB z7@DIni;H45J9X{(d%d|I*6Nu&|0XG}by+>w{M)9l{d>R_;kKfZ)Oipg4sjd;_8hmv z>+9=q3C_L_;*>STs<+Gbf6W+vymKx6#QnB4a;YzbfHmI6Wd`M|hClexlTorj=2Dnt zX$H`&wsXrwakz-w!;{_D?Rh0-$B4W~UdkwM7RY&N;XEMH?{}tE_Mp@V_Wt=$#L9j4qDn~IaN;q?Bs-`u)(;N#hrg3<3)+HgfIl&|ZxMuK~ zV7)c}>k!rS$BU8zfymK{!bLRwCE9m2gXyETEn|+F3%o#~BuEHh7|zI{cZJH7xGNhw zY~iTmZ|i&7X)|F`GmK>0DIkeZhMF!&oSXaf)%V|n()D=!HKAVI6`E{%rp^YT>mHV} zYp97qD7in>=6kyql}%%q5cTIen$&NsM{ke*UcJ5^hIYoD+YN)KoAw;nuesi75n&hv ziIQcGC!z>TVMZ8%7%Hy9YZP2|w#Uk>@t1_Jf?^CAhtCcXHbO4kQ7!VWUh<($gI%l1 zzgg~WW_}pb0FOX$zhJ32PUHnF3P`5Pf2?U1-2S1uAss|j>&cjxXhs$UgmC=wYV%;L zC9mCDWARXPMOb-a!?HY%T!$87UTL9WErX}}k633NKOnph%4_p?xO@l>a=7He?2YmF zS?ge{3AtCCWLuk`GCf4HPjSe;96PPZ3@svxS9m3D{*caz9WmPkhqrs>riX8f8ktoZ zN+cAz6bfWAPV3kewhOM?b@Is@m+O}Joh21&mUzU#|J>c^gQXqE*SO?77lO>$!sWpk z%R1yN?WCXEJElYsih!0Co?$53?kmV6BXWd1GOFO4GeNFlx{#DGla!<=O8NG|srPLR z3>l{z0LF%E#&RL%XpX^<26i#u;gp96c>{dJ)7v9BTzy@ZHA0_l1BTSPJoJXE4P~1c zZMoW{EHCL8BAFM+STu={1xBOx!OsfjPu{a#*N}FMG%^VCkfkBd*rkcyK2!7D9^dss zE?IWPkl+hTNoMQhRF5(LI|RGuHGgoLrA4@^u0#rEWtIVmg9@OS!qd^t!G}72+j4rX zYE>`?O7DOjf}2I}U!Q%{uUzJyFyufkfyJCGo2hwcnTY9~gZsBO`{JtMx&pKma+ECDF-^ZS`Qv>}-dS1ee1VAS9Gum@ zN!AOqtB3c9tcdmmV*0xTvo0k+et1i}C@h#_G?AFXfGNW89j%S`aH3?qy!*JVds_7l zFzdkg{%b2tY)m|s$liK zZ+><3y*}kUCz%*?vz=~HaK=0Rt_oIf@#eqp_{jV-0R({O5uka5`7kT)iy@_69h=!_ zQo-56%QxLxM+bN~ZHsg;f*j9cn$xTen&vRePulDPf@2ajD{zwOkgbdh9Mc-IuVY2|x~Y?mRUFbWH3iiVGDbl(2S zBVX38X?S%?jB7JWiSvF*)45>k@$JJ7*KK7k+82jwi43DKT8I$O;_n}}elqEe;~A|h z*y31UT+#O?O4f2dZyqkj2c7@>$i16s60Y<0grXxnfL9P=1z8knXbgs+FH4PB8f)T% zM`wPsc*bpY!}oBaVNTj7JIE9}Ma3@-UL6EYl~Il*-6Kc^v4sM}QIJIxhK#+3*QdF3 z*`*wZQ|{r5zXjI>yOFssHNF??EePMRLlOvw8B76)dHV>-okx1O1ZRQQ;kA2-&*vlq zTr!y&=$|zx=--gm!%$sULup1e4d=41CfWldwTbb2gBaR~nlajwr1DW$(`k2Y@SXLI zQ}_K90aRMfwIe2hWFftS>hJfxG<;@si;v83h=Z~MpahK;pW1P6Lw$n2$;z99YDWi1 zLx{#mM!bSd9iUd;ZdOI#;O{@&xVY8EX5pJ@sn0=#6FCI|kz*ty&RdV%Sf9}^*zxQZ z;nE{4=_$u#`vg#3_oMqR>5We|Yfv4y`gSe$c`pL3-KT;PT~- z!Y4o>s4E9bhbqRu7Ka9xz4pP@^`At~2?RNbkr__Lm@~fmuT--MH7t1J@BN>+ZlkG> zfx-$56p;Xkj4SF?J1lsnQT4WtE>XXO1H4FRLLkLT@jJ$k4bFQj_uk8g>EdAZDB>Wa zKv`mBnE?zrw70>U?)d(im;J*JNn?YHwvHNnjT$4R7t0YIVUZORh~U2=IB-vg)9TTT zaP@E@hk$>yZS5}|fmL-2^v2-mC4GYvH%AYI!4gX}qkyc4{O-nMx(XGT@;1v&!F65k zZTPPR5u8OMIo1fG%o0{m6o}bh9$eg1>zG=9^W?ZGXqnv|FP`2s{FqqkBq}isE7A-`+sH{!%>Pcmc75@XXu4VfyI~8*5!!$;0(p$Vp*hoEqwL1h{)FH! zi?-d`a!6FLe+4O+V2l}p6eHMwUqfjzxh|Il)nCqK@Pf*b=Gi#lWLW%PbWQ))C~0g=NKGhqv5)u5_qCICgZ00nn4Nn ztu?xi%qWyqi_xCOF_dfz4fAbOh9yZ!N>ZG3lVSZBq2lK*jJ`gvHpqjsVki{viqRgM zp@K*uccrN_j(79BC3yAlb&j1^M@S-3PCwy%m$vKsh)Z)2E_A`w;!P@=%*bl-1UEJA z?0^1vGjlmqaoHgtP?9+g5SktAzx%|T+eg+i?gsS@rIG3y1no@2DA!KV!cbLY?h5M- zzH#)SNfU02Dho=58M`2(uq5n|`>p9P@Fdf$h|bP zOuX{?A99#=6ec)=`W9b z&(o|9$C;F4+w`5d_zA0pz|NJy4=PT@F~BAs4kPBq&% zu4d8=H#tru{lNa2Npdx(;2R?3*?EqIw1OF$Vw6R2_hW~u4N7MWFK_-g zeN=Ok>*jH`@4Xlef3J!@EZ+C}Drj!d|KC`j*#?|qnID`n7PMM%(-jdkZ-y+9JYuy7 zD_EHIvsb>y>-JPiIP3gi&u#nu_e2MM?MHyT)YiVh%aEY}g=jG018K}FIjn7Ya+xP7 zNlCiM_U!q=!H0jiV)Omckr4%%f-KF;93#hXn^+M1YtxcrZ#|$31Eo-~OS#l=P$nWL z0+tocBhyJ{+0tT(e9aj)AEU5qbo)v#es)o??qT1`$5s~`qe~hq=h|uf^=HL{705e-!-wSF5=#8c;N5IflUugAg4S2eT$*R~lwo#iPN$ZhQHUg&(#xS3i|D z)-j@jcuD2}%fMP+zy0jyu9K=6m8GACJpLXE8K?S%R-Yaxl^*)=ej%gFp-_2kMp3gr zUTi%tn5@mRD!8d>`aJTiZl_hlJ13U{JOe3C)7cir=N4*c`+D5DMSr-mSKsxF+|TCP$5ZkWlgnoIM9h0J7mFYao&g>1r$i+7%*Wd&qz(YnfJ#0ecjn@`rbWizIPd!$Ou4==K$4if4|9p_id4cCgDBKF)qP7-c5#P57B=X(DX6V&1>_zR6f=4!9`8O5DrDIH5|{% zJkLvj(eJQE3SyrH>w z{Q>JFyoo`hlI^}pkTM*Y5hM|F0!0|~I=+2NpNgx>H@?bXb814_)MG9id_S*8`>Z9k z_FJwWk$IV+C;^I6hy_A*Q)u0kS9RHnTR$Fa?gaqw6vqKbvH2|a*gbG>&a?gV=|2}9 zNDpm6>wJL?v(x4A3NA@?0N~A53CqI0o23Q?;2~l#mCxQE>K0s{Ou^2 zk2(BDQlk%a!BJ`$#{`TT`+(yh&lW~M7)-q5-7X^El$GPn&A(!)m+P0duX^(OQ(e%8aA zJ~C$b8B4oi3P=he3ScROV~zjtbzWcF{l9N}Lw6r^OT|!>$Fqpz)aX(UPY#g^Mx?5$ zih?vw%{_IV>ilEd`kz*qVQ9_3Nw^5Gx+P{~?R_)%TEA#WTH}{CigqrE_ z>qz1{t%7sf_tmuBrgL&f8NU10pdshBhp*R6P1eY^G@~u-Cde#AUDm`(Dz+@fEYZWgr{J%)+sBWav&VbD92JVgS6{3dLpG8{vBW(e7 z%@qAQI#sJcckOkHrt5OU`rz`vC6!e?@JpTa^@;TVu{FWvNZ;wHW(ns-Z`UlH)&PB` z;rU!`AKb5%jkZ_AW4uJ17-5Zf^wdj3D7-CrAJ!}8ZC~&IXW9n;O3SB2_^xN0;P12Y)}WXL!7Nlc9gL4f8+W z9{ir3&yN70vNn;gnw)PpX!&1_!nbFZUP}so&*(!~AE%z@mJfbk&u`W8?k4T%{YpYn z;s=xG8?{^ybN`B#&(_)>YzHz)$BlPQ9lX2M$^o*WvvRl`q=Ody-P<>3` zG*wt>cuzH&xZYVrd+RpsWS-V2I5!{ezPyv& z{mWl+M7WA`NRS!CiJ}tyRs3LH-|U-L&cEAA+k>SUQN*IeiHMYyw#UIdZsTOnfSo!} zZ7K|Vp@t@8s4vIwuG_oOh$OG}!aqsDc|65aJe53^bU*!L>bvYv-n>`&1J{qUP@zDW zW@wJ0A;1icV`YXO%KJ_1|Mn+)bjDmx=&4Y|JuXkv5Q>US5%}eoftl;x`5>{Z<7X6! z^PCr$Ug`EusXBjsc|y1Y3@98@D9Fo%-~z|TPB)RfefOXFy4Qi9%MH59L2YY%x0T6! zUha7<1oI<#E$=(CEc4OY;b|p6!=l8}x3#~m{bz;!<%;jT?RefJ{G10H&op(9hy)pM zfM5nOsHE-@kLR6Ef9>%LTXhYPH$u@(Q6+9D2^>!;h-V~8-1Khd7u%*KRX1UhMaxXP zbSwFD-Xj$Tx5F>%*Xnn|@aUiDIC{$eb+8^6aH6kNmQtR)ypeHhn6uOSO9YUwPu%P?Ee*;>{t3<{7~8 zj!ePh9p+KBk>wBXo8~GS4fkxnf_zx>;Ji^vtjqsP-Yq*ms`EB(6MA-=hWZoSYAg#k z@pzosA;JD8PhVp%nuj)dI&VvxrN7(GSl{tzk!BF$89+gL(0iTx&Aat{qP_s2VR51T zx4bFJ?;GB`-XgN0?m7lC2tvq1$KXi=1-FN|9a4soa9OPJis@Qrz;-5Y%9}5=uQ?`y zzhi|Ej-x077|!VLIMSfbQrB z@j#&^#Lz?mc=lV)wJ)yxF~P_rZzYFs)cD-&y-S^z_b8q3%vIvf=CwS#Ij48yCZXJy z5JW6fED|9Q03*sBKHk749y?$8qH|yE?5S$#$smKuT(1b_!sS1gcYHtt(3$c(5 zVbm(CPz{*p6hW3*2oYlp)e!w5X7f$^<&QOg)-qQ>fdH`_R>L_l2=Fm0pxAs%zP#qA z8!AB^JW|atCB!VlVhSTi-|UIRO;i}2NZbXgg+shq-i;GCyf^-@tfXX<^=&gcPU06Q z%{D2&rp@Q-(ee3>r+A8|c#5a1_gpKadJ=u3#vc6k{^{mE9B7WGFar>eAOci~4~MN0 z+(ab$-k;PWeZ@sDXOz`t3II;^*db65$g#(KOY+U`(E3!Rt@_PyVAz|XAk&1CLa(?0Ndfnwj~@ zJLOuQ?)G@ORwk2_V#sx^KO;ZWjK5jEl-ED`3P;NN;#Bt4bXPrdM?Y(Z7RvyH7)2r+ z8xp`vwnu7VLG`ch5r@<>XK1N@LuEz*fEERwh(=CURnr5cs;~9=ThG-!YF)R$D>A2G z%yXf2w|7Wx*0IYOOg@@MIPELK^5M zigQw|wwejHy1umy_kFhGah;vE)q>GSF``TZ2?9dE+3qW6&)v7QVy&xmb@dsj>$_G- z8lTSL(DTj6gAaAzE@r#k*%OIez+LJ?ay_4Jdh}L$_g1@p8h(*zoi{MS+)(@fSmof{ z>^-vt6H9lx5^RlpJx^u~{B5spHe~8E6jF%C07K3(#3kf-GP1n`1#gBYtk=+)3D&u> z8;yKtPd8nTKeLV*M<6c;>XD467>FEB zPgjrX(jkkuywR%xHuu$mgJ<>r)PhgUB8ma3MLbW3ac?4MBK{Wk@J%%LH9!1U-FYo^ zQtec7DEed>Kw(OirK#)EP20j3gD>1ZH~Hl{Cq5~^?h+%URZ-Gh##t_{a9zf5a%M-! z;42J~-xp_5Tv5qrIoUKNIA5C-e*N^YPdeEt8FGDpR5ZLV*n+<+E4WCGFYUi76`o41 zea8={b~`x0Tw|2xC=OB#4E+ zTN~f(jvFqdPqtR*M-0ab6o)Ybqd&>p`g;1f&rd9_8CtdKJ50`XIe5o7lIsw&Cq-Lp zTVKcdkIgz!BO1xRz#tjPqQtVIyykrQR#uXIJ;ll)ELY6$O4?qe3uuC^olkt@18(f& z%`IqD$WW?NA&O-jIc{f`)9ai-2Dmb#b`Q|bH*NUpX*GYj&irDO1vr-GRjwB*;Ckf~ zQQgKX3ULp2l8Lv!GM245Vctb!&@P5tPw9p-Ysk|LB#CiSk`3h~6OyTXDWeX%t%L8y zX`W%99J0^^?#@aY z1I%vg( zm4iVD(-0#FIgaKj)kr|fnA}b2riNFqSi(-E6}!_teP^8qe_L`u$MTyju)Ktc!f}XD zqJ+`hk8V(1km)p8?un{eXp{nV~(|sR)@zM6`4NbizB8+IjL7Jvj zJJb*dyB|>nd-xmE2nD@;AKu*Jf*nRVL(#|321w-k+zlh{#B{QRksED`8wVB z({sC$brNNE(K!{ybQmuP5F%L?At$jbSH1SM3jCEKphjDS=Ow?C4fTzBf9#l-(#^vo zAco>-hJqM#s$W$jEIg|nA9YMvg+qNq9~kq{$)%Q;G6~ayiXJGIh^2HX8}6%mpwUe! zGc6511dJ74WTC`jrL+t_5^W=VsZUO-)M}k>Ua=_*SppEp(f|XX@_74@Tq5^$l1#a) zBoU8iw{7%)$DMxA&Xf_h+vw*QZsu#L#88Ieh2Zb^Eh@lC^-5W<{BBSYo6YSZ8uxc#5ZZil=`I+eYv`{l`P&@Bi`QE!}Q@GC<6- zye#vwjFeAa9dO6|rH@sCw%9n4#@ifK$|KTK#|Z!H_o_}Y)@$bU^Gfq7*VuH$WnZWA zGh42^cr(cfdov-j!1D+*0?){|^%_3xP@R1hFP%4?F}|@KdRClq$}*rP&xnXejKuO3 zHU`xE&5+wn%7wIIhHuneA9n9GUAF)+(c>i(h&$JTB#L2>#1bImz=yUTR!Y1lv@7xb z)vf=JHtFxj`klXA>8_TsJ~J6=hVO-?zqE69()~0p4~4fZhGFxgY(dq^hBzk>cP8<8 zRQ)|d1}JZJn*D)Fg=<2Q5RaBGcd!TT!Al(rvJh^azTUMaK8r*h76yicTb2=dj$ni( z0`fUsH4im|s+$YlB;iCta2^5y+Vc!ksn|GQ?G9f)zUhW0=6n1iR_6f4QLM~xED&al zd;8uu>ZDcCce>H%YNWD>3+0gKg+0yk*=CGw@zQx+Y;da3ZE>84juWxdLj{YsP^@I71a5$C5oXp9R zjDf7^(K&jZJNnJi^W`qaQ9rB68OJ3BmyKzX;UF{mR(jj;ozYy*s2pWHcN0y@cH2ZB z=y>GU*N&TbS7RBjG`*|YZFl)xT^pag{%32COhA$)hK3xXdB*5-|I`5{P`7V$k=`mPylYM<1&bc&?HzEj4c4ln8n0 z4P=_HNyVFMlVjHEQmlw*P6UXSqqc`hw9WP{Y_;#Y&(B$i3@DC85c3=W81W%->L1qB z_fDjQZ(_FZu=H2`j7oZZKhACfL^O|Ro<#saM}I-J+HktY4Dkx0Gt=qKbvRwb?d|Fw zGhQ`G@wDHzV`|3<)9m_2?x|IpZWwS=!?@dO|F^b>M~C|J?I!cqB7#KxScE0jKd*b4 zu*Ga&oqE-oJKn1o9@#TYu;1|v!E^2UkuR1^BL0x?`*;7S+-%eJ`d_ue>_UddG^P{y;6I@P(c)Y{6Pd%~Y|CWy-4+y7To+>;i0U*E9pF5>F`i?AOF^Q$gOr|;nm`v z7grj-zts5Xa^clT<&xHWrQwBG$91Kj-zC(@oP5ZQ=9_}lgnJUd-z_VBl zpW?|OQUM>gTeh6LWA6Rmoh>4`Ya8Ws7V>fD`gT^&{ch08R_4tYwP;`@R^ns<$T9~y zI3f6Y)ypG`n#Vt3kF^5}eay-E?nm#ol!CAT$O5Av4oPzK^4`aMcMQjUyIx~8wUDP+ zRX{;84mY`TJn?vY2`)L4xQ!;gNik3DGroE~7Ho1I(b@9zLYr43ks_$b3dQj<7H0IR zl*sK&Pt|2ok7{{V8DlSV=zP}ada>&>O%#1~1}24B9YQD>LQFH9Bo5p*@9p01Ipt=? z&xCl2r+6x6Dnz4;eB7Dze#iGWF-N0?{!fKmprOOJMXc3k<&SIkJB^SwB{ z&DnjGb#IL?m;}LcW~vS-6&3;v6cGuGFtpl=n^S7GO*MKKdCKHeda9HoA3s&bk(4(^ zc)l^p_bW#r!(zRC8S685FZ{f3Pqmqo*4$|BiL=0Wv)kK;=(^)x#TB@MjIWYiRm*jkU$w ztSK}7_*D2Ff2FxA^lM=fn%-29cTNreonAJ3{!awusU=!FI}Cb&V@%%vNqhg!!DchP z+?R1|-m$UY>$b?08TIeV*WGadOlXD^F`z;NV?A%TNPYG+@X8T1tHy#M;d&)0u@-vVnV6(Ue5KqHQ#sOX&ttn~%@+RqOg zsNX4T6B31!u;v0ihQ-bNo-UjFBY z{$uW>i$@Hrh6`gU3=t0ToZJwdFCdUQHZVbSn|%{DcMFXCRbQ+ZYJ@Ugc@}XT!?3{N z%J!1MM0C1jr)$hg`)lbtH)N#b7%+4V4d#*zH1c_!@vMy>i3NET4R5#8{(q)_LH=Hs zf?4^`mV*3etv;9LF!Oco{STi>2s%)8mTbV#{!(p{r)gu=3ARd_*>opun!OKblk;l< zfbQI>wWocruZAA|=Y=H&xxTBnY7F`e&2C|(_Q!pOd7=$#UR^VXtYYxIzQ_PSx|O>g zLBVJl`;FmvgAZ%-q?I>o`E6QGMizW-q0kPo0}^r#7)8jb0oz1K>Zp72+i| zoqN8ZzH%E1%7--*tp1wOhdvMc4gJ*7Tmuc;?5cfb^&<}7aeNhD&wmfTy4-lGwA-J5 zq99Mv-p~1O>A-m$zOM}UPSMtWCI{E6*QdWfqh)Zt$Gas3<@*1#TNLCwG!{}*tsecmy_zTAf4Udsr#}r} zcKmD$s$Z`+S7WU;hr#vk(Du3hzy7_ke!afIJ#0b!u^I4iwg!*)Xl35uPvGMpY(ev@ zC$o0-e(CLI8{l29M{m#AFTMTS4DB1oYn;c@9;a~}C9U_3gy4P~=g+J?y?*_Bz5aV_ z;rpYvr>E`Zq8mrF{m(9AO^UMSU~l%VNAH|#cg|8gLa_qRQwqh%LJZ=OExw*LkDnHD zEUV@P$O{rp5R0RZ(7eT$>Z|hXryZ+@a^1Cxoi3->0WdXVaLV$cy!6zX;ZOTe#`Xuk zuRH^OeCN8}rk%I)dPD;NF-S6_Qn zUxTU%A23$hRXuUN!p8>In@@I^Z_sX8)Honbkv=QvGz)6M3fb?msufDxqhxEIDY3 z2M#e?&h^jQkT5d+fW52^;zZkLzQZTmKS5xt(9Ksg1}kD|3b4Gxt$NcVE{S-$<@Oh{ z$dp?LKjy33*Pdcva3vPAL!bFFZ(f9dS(z5*kjiq@vO#4AYSRA<_vAdT}lNTzd)Q_LjM zlR01ej!#Wq-0safp+k17l#Np*Z~$U4Q3Oc_-1irT-dFTO7Cmfy310U5Cf$GgswY1)jb_bJtRMpdX@+5p(X3-{?t9;%UiZEF+$~K*Pq!j| z=~)bbh$)4FQ1_u+Z{p@>z-ucKV{O{pp~mVK*w|dT%Y;D6#c}9WIe+nWi>Iq8U2nI>n|1?Smy5%H zJpEr2^v8X!?vG`?2&1Gi6&dpc5v&GXGLmSrX(K=RX6`BXYt=t3sZ5#@6%1s7$0&wS z%)j}*+C2VjZdP4Wri^M8E6aqD5GycHj8*t(x1I5InfB=~cl~6=MZlsUV2Ei-BB1zO zgg<<#x6YV0v%@u^^W^rr1&KJ^1Y((|I1vaagb_lenN|FkFSYtB=^33Zq?#(4VYzkO31|J9v3Y&EMCO)DyAMwDR*crzD#pOfU14_p+S z?F{DC(ma3e&L!_udgN@y+W(quZTHu!`ThAfpAIK1RL4x?=(kvkfAXk1q-E_bFX0TM zD7=JtD9~crUBb)xPY&*Utj$78L_#=O;0dkB3eQEa50d7;J@2j-oz6G1y5EbmC@B)d zvmC|dhrl~Fa?YNjp)J0zVx1e?P4gcfp1vlrnm)Hv!?h~N0%8#683KUW+}1MWHj{EM z!`vFTlQA}tdC;fw{w3)j-qdZIwcZEdAVdH|3?(jh)LX&-)_WIr{W?`|V|Lg!cz|gE z3z)(Z`TQ4Qhtg?6vL0|J=`wA>1Y0Hln_niTUbwEc`TS%-$N+#KW;ut`<#EdSF@p+% z-FuQ}_iI~}O_30x#Y+C1yg8}-O5Kx0olu#+!Cwo@$`mIuG?6eFcYK#pJ0R$j`jFCr(4j1GuQ}g!P{$5l258>BY9!(sBF(VR* z1)?1N(Ny0*X~g?$=Cm{y4l)ejIiN;n!+?cctQ^kz{^O5icklD06)lEXEYXapAW@Kv zw3yu_51pk3{{AgTAGbel)soCov`mSRAcTuc^(ELE`CIP#zWrN^n}wdNh3J=MSsrj0 zP>vjTb`EiS^M&HiT=(6t+0U*|t9Y6ATqFOr$%|h9d_c3%NeXu-d^ynZJ|mn;Tku*}~!orCE+ z&K6`3b;}5)S6XI;0rA5-o~|egs{`6a*Jxyq79rO*_X5CIrM61#$YTmPIv!>6C$ zqhI&#D2lp-F&)OsQod^)L54tiIbr$E_tRa;Wu=wY*8e0u{^yhFy0|nW%+{tkm1tpk z3>>o4Be|VfPM6^F4w&d7ZqEz#vky+cFuKwWWwbQO3DG^j-sF4TQD@}{^&}@m*N;f; zMq8hrm{L-ZnRJQff0EICkU`FU!0^2uTJ`(0bGuDmpKufy{;wLLoP2R>BEPTU!)JGa zR$)%Ng2PUC+zvRJgEWU7-7~XY`XAc(#fbjhtR25mEDxZ} z1DOh8_Es{*1vmK1XLp|s8kp+nAR=K7Bbwtx&Zwi)IL5txga4MtoAq969ab1poXE?H z#L5B}eOTen{ud`r`u)$h%`a^%1Q4+-qEv-378%L0S=ykgnKaSa-*$xKhn7$2baqBK z<{JhKQsWOG1yefn%^}ZuqV=ZojZdeQ7GK-AW=VvBACVq0a9f!vT78$8=> zJ^YiteXL5&3l_JpEE*t415B~NG12MGaJq&$U0w)|e$j79QFP$c6c>kGSCFr5VYX*` z`7;l#-*sCzb67_hW58jK#SG$Mh#qD+&GpOkCgbYmpR)Y6)AKji3cU^&5C{^cC4?2g z@eEF{dZ1l$oq-o4L(DA~oEw?Jx<<57Jt@I}RE*5UNhxNF(8q7vxcj>ordi!Wc!8oN zC=!vzsQ7$>zJA+Rk8ZhdV+8gSBn;wtnvn#?NS*zCi**}){SCff+@x7gYZQq%ib#ye zBP2#In(6OfH+1`H9kOB43c4DydoK8+V#^y1JftS|%+MUp655D_tQ8d_^^3eIbX zV|jy6qr52;4EEf;QispLIJgYJX)vGx}(>O$laGKVKwkAys_D{*m9JjiSZqU6c zn2QPl3W}O8WoKnMy{}XlUA^Y5Ym;kUwO5}Z{*(1LtUG_va5p3D?h<9dAc+77L|HoW ze2WT~;AFMihWV>Ep8C(0$wNaSd7>DNodNfojjxoeL#5u+# zc*nbmXMmzIqoUsgBm9S3A6$0e_hwd`fQ1~xsh1}TF@;3Q?w1<9KJV7^iTZY!mlT{w zzihYo_ni6g#y3}5DmzO&1`_5u9&@Zw*?F4=vTZf9fTd}{<Q04IJKFDRQFqp{3Hpt7VCYp}n_o<^9D{hy(Kl1OJUK{~ z(>u&H(dm*qcKN!(H09>Qx!s9`pt7FdjBR1x*Hc5S;-%LW?2U0XlY+{{ zO+Cv8=lyOi0IflPXyT%!1$pkC;P3SJ_GkpqYAruFB>24siP4oG8y5V$iDsQ$Yn(l( z{_&b-(VR0{KMVv|?UdkLH_jfY`$N(kFU>4}c>qtJx0V_~ZCv+4z`V`>Y};?TEP2pc za{vmAEb*LxMHcN|*ji3+ve;JP5{<>oXL6$LcK<1|`t5`*=JGyBBZlKR3}{}J_!)^2 zwqHShmp%OS-0t7`K;k_c|7jn3-wKxXFf4xEg z)wF)nI!21|f3x=^y%(umI1aMEeoJUznmX#a0y=%+C?GL%yc@7FZ>zkZbO z*(1z@-DKWuCiSIU;_Z}S?4yBjHagBoGub0%SEIy>l+ajz(*D_Z-qj<5FPHpaR16Op zMT9{0jL_k^KmXa%vO!|Ke>q~)XL78+@`6S^6X&OevR33Q2cY?3OGYobCH;Ust&BU8 zV9WN;Yq7b>@CPgiRwm!21Itnr!hkXotY_*Mz}6#4;hV_zPdfO?n7(&e>wOc%6H1{W z&&Lq^Y`p*OBWa_PHxCHI1&YGaNF-$_hjWZ8+f6*tcW9!&*NX?cftl9EGDw69%?JvV zqW1QXWSiu_w!{4cyY#ozSe|@pcx7=6yWk* z6^;-x$Ej1Q@(l(PDch|vXhyhIpM~vHoLiMqj*7ZH{g;NmxD9tLGnYjD+I_TKvueB&wT&|t@rQja_$=|xXn^7q(6gA4qI0w(3n>p{c z(lut9>hGEE`K;;t*O>#FrhI|{#{s}Y*3sAL8b{o{vqg_XWl%e+{qTm;wJD&rku2my_Y z??G{{zxLN(IbR%OZeYO!ie)*d>RMvVhX^(v(d1+A+s&Go?|=1yYrY=#leJrS3P?bp zWP)J~V&sMX)77eg+bfq3J+BLFs!>_H`?T90_cyV9bW@A}>Z>&`>}t`nOc6$bk|6Q3 z7vA^Htk+H_=?tSPQMPG(FOuPK^bDS-{kz6D9NOi>v?4VZ@?TlReY9}&iJ5=lD#<0B zuBZKnAFkTw_{-+t#sP-HEYDI5r>aRA!R>lYarht8^?25=e0+4z?7M4)?w$g*I-XF1 zNFf%=GBEo4Kf0xBa=1K{!LrDIbn^b)ceb=NPG?!j^Q=foj2zxLJ=XbK&2Qv>)Ayy%ApU*OqVn;r;t{E}=}j2nQi1 zm_5Be*;_QSZ#+eReF={2yVy_Br*GW1!Sv3k>SYT&VgQy)!4>2Z|DJWjf6e;HTtgPK zG|Ms^R#lWa9AX5kd!I4i%uD?Z=&z5~X<@CXDbkX_Lk?0@41QK$^1tx<`&Fdvtqk0W zqSq(}KptX@I7an{h?ri2OU@*!yj{+^t?RN`Q=GO2WxU!It}y5;#DL5Eo2GyFLG7j> zbZvrF7R=T1G#)~lq@+I#8%86mwvXw{&FQfrtG%m{ypHAvzvd_ zx6*9mDI&?Ns^QNm5)@XhdhKaXFLy=V0OU-S;M~YYs;p^ouQ43#k%*K}BADkU+E)6% zpLv^jUr%e7sIo*6RuBb|5sX@b_qR$4%58?{#wJ(#JIvkD{H$cHt1SQ|N&-(ojAOQ> zTj?M8xJ#b&vwl1r2yLOLB?2X|9EDjVVZyIoxb~GdJB%x5j3uBe*_axWMd+ITfA`CN z1$oQw8eTKG+AEDi=>ctSJYKg$<;6P~f(Z~giUS;~`OTCqMZ-Omyd&@Wj~>ol+V=N0 z2G+a5E*x@*fh^;gsLBV1l1biyg4^pElIxPTY&^DV(NUD7lk$Cyp(sjy?$-MsS=9LC z`-gOvCubFTL6ih6Afhk|WS4#O{g~{pSK9RtCz;@_i6wL`JIQ`&!D@6VeP>RfZ1FGn zGPTaZ85SNOg4`%jvZ637%TomJ`ab)QgLU>*)D2)<+Cu&U3-SpDS`k#!hZ)d-WZyn<6^Z&se z{=om`z5kIH*0A?%^qQAI)=x0*Ljalor@SMd^41$p3Fo!sriru^ZR{zY_ zYa3Mi{u;9;Fa;={hnVJ6Eh1wBzn(3~(`%bGkmvvYC-8vyWOMUtLjfV+65Q_Wi4F!5 zMJ9k{AeN1-4Ni+RoNfLdBf7kHUD8dai(#oy6vj?Q%64b>RgYQ{gVV6>{+Zhm^}{%Q z&@Y6ekqaX<%1)2h>5{x^j7CqL$M13e{pm1!<;x7;X0+XQ|G9roxgN7w!aIO8qG^dH zA{B$Fz-RtlduzR4tyU9r2Kz6;uGvSJnfmY6R zB%k|7gL8jmJfPo4iz-=+krX!}4!0~)6aq5g1W747-HI>#T}0q$S=*csPxA~^nO{7^ zu!zC2OjroTfX*Ki|@|U`=f>76&iDQb*X-#corS|{pV(UUc1d#)+|Sk zXMhMORm2qHV7_zxNNpVSA75Or`OZl#LiuV1Uf(s+0AiM5F@=$1V7Akf?aIG%xBTw@ zcYdwLRZcR2ShMGK!WbPCoU@1gsW;B5c;ZN((9<;tD z25>x&0EaQl#Z2%X@dx_c+wbKwO~Xhs3OPHxtg3fY3@D6g7VV@R@qgaMH>Dn@vuTfp zXEkOCIS#~PRuHiO8HC&I?>G7HzAcgrCbhP`5oU1jCB9`w+n)YjS@nPSWxib-+c%cY zi01^`QNM4@LytUoyE%x{h++W61BRzCheEs|&y|C7BLp7x53JJe#{XnkGcRS4V;Kx& zSqRU(tQ#Q@MWo04OU5kedZLf6x;`)|lnPW$rx}E43>;bcj@I)zmRo=OJ$wGX^J(|T zNwav0r+A8xniN50*yYo~1?U)w2*E{^*~#bN8H&Z!uNTA(&P;1!E%6(5Rxr$4DzD*naY#?XbYn@W0oD z4p|RhgaH%?5-CZb1QyOdw(spN7uDhBnB zJDi@bvg{@vPr6IVE-)keHWA9p&@dC2YqWGJf$d`3J20*ec#Q z1`s01QwXS9zp+xe3ASJT)&Dzg|A8%Op}?oAd2;a7?lHZK((18};#dEd!?@~GyI5b% zBo@(>KsZ`v730+`IpRG1;ZOR0%hwy^FoRIdf;csLcT)9=zeZFrG3So`>0dejh5@fU zXGtt^0>daU-}MynJHF`I-nCSR=A&T_ zfx=J`Dlij|cd*opWabcerhSv|`L}yl*3ZdidBKb#W7(K)Z<`plY<&L8kDB{3E%rCx zsdT2HbrGbJ6vp)RgNxIY8W=U~NQ-T0R(@3>ClEo9WB}QaScXp~h0jA5BrWjU@#7Ol zf2;3IjQ~}v-{Hj@+eAn5QZ(Rs8meYu z937(TpWd;cky&-kny3>vUS&{EU#2eSea9A-Nt!R`C4{FTVnv?f>E$)au2YL9Cf2x0 zE~1kqz2JpTGvBc0s>mD=Fp?OK6T@;<>O{yxaZbxXkMhoA^i~VDZ-K6%DiU`H z0#+arWD!zwlh1O0DjjpOR)LJ(z5mG_i$d=b2B+MG8U+RVg>Hw(D`z^zn=`XTA+sOJ z5{cUwP-cD8rcs_TtplI`{NeU4doA6KLCgs>QUs2HLRq;RYaQ77iubL$H|v%lv&|Mo zv+7a=TErL-AkbUC_;Iaj31VdOe{GlqUGZj%N!RR#bCxzd7bC7}n*j6ql*wnYwSQzJ zA&v(Wme?4qQ`-gpuCcx^X{iJ4JK;436lbP-$)yk`EF)rtNc8K&KY!@X3oX)&?jK`~ zSW)x;6oFMKn*=Gtfn`cmBwnJSAZ+`* z>9h48?VVKXUvS0+FCh-BU*9X^$vyfVwzb{-4l4*8VkJqGDMHwkfq$QAdG4SE3 z?t?l%Xs$<%Da6wN^N3+EVwu?Ws5=LG560I#T8UG#P*)C-^TXu(XeH|s=@W@_38EK?dbi~ zzc(Uf<2cOf(f>C--*K6O5*6Z}8w00O7vC}M%|4-5HnEtNQxmh@LEVZcHhfY-;r_R5W`>~UlmKXvM4AB za=eTvS&5ac+&A#t@Nc>LJzuUzyqo-LRq`P?;AKfVby1+ziVNR zzEmgmNE8VrQ!-17`Ojphn@FmR_2^IMX4rMa)Gubl)GshEIsNQ|J*>S$OEjvBk{ zXE{fXCX;f|G=6^Ob8BkO>YUQ>|6HzPw~YwQ!@|)Af7bb)MT|cRHz2P-EMiW?l7jR3 zo}2paZ~ar_yDRCayhmDexy=^7{G>gY5og5Y*l_r*GXP=0@c!$D@-jo&VJP=9lzSS= ze1sdJQNG#1P;PH1w=|TEQD%(3^o<D8eYpOm0tLmr3S$kMqOkqY*SWW<}DB*wbs58q_cw0RE+a*Q8`nRJ4OUCxOyXORJ zJr+rpWWw+qBr$-Y9C&D4{S%WPw9sQ=7{F32gqUJ@o{ybjlNG4>beAbd2f;8hmLR`~ zkb@jxIG*AiJ)E8#RZDY-(@Q*s;e(A*m#GOQo!Xp0dw8prMW;X3qgz_4-n;Wy1ZlzaSs+;V~A?BI&dh{wQ(5Z z;lwb4$KZA+1*%p((qidqO9zRpAhJBh1j+~+9VDLDe%xbNihE2ikGX+2DqQ>Bx0NiL z#E=(60b*HDL}Qc2+-6cPZ1V1a>urCtr(dvkn<~gqH8f#a5k|j(?hTywmYeDP%`#Ak zz_OSq6eDp!G7A*4_qx(T7xx9Ym(SMuzPYKdPM+n7>K;u3ifHuJdHLwVX@R3#&b`&> zHEU3$IfapU8qow8;Ud;16KvB1=T1$&_K`Otn9fU3#tJ117~oh{5T^%z;y-D8*LU5D z$1!4f9wLl+=ur7Zy|c%=T|%aVxV-M%k}`^tY%>F=Mjh+=*7esLNYWyGbGp3QI(Am2 zwlrn{m47k_S>3(a?yl}Jo(ebrz-&x+CF_8!Q|L9K6d>vyni-frqj{a%p6(X9N%ig& zT&qO4;F2;lg+C|p6i!+eq%qF|4)B~qRgM}exW^E0)RE0*1|}qqt?0?Nc2dPEP*M;_ zr08R~%?zw8_iCqp?^p}QDMdz@;V`DS=q)fF2xP$VZ76p=b81=bG?o;aoq~9l$ z8OoazsG6DC<(?lc)lURKkV1(vp;%M(lSYQzW>PjkG#(6i2c1s;sI4W4GDzkKR3J@@ zAyFxe&U1^z?+8rFc(X^<71n$on&SwC1(^jgkgtyfzWhDa`)hk$)bLJNb9%@FhGA$> zpg*Y+O#Ou{Qh7#&+iLvLByoQH>Jd-z6i-($KOors(Y(N@x=V7J5gqI0gtLofks4-} z!?1v|96~aQZQ~PsN$xfC0@aV-Kb5nY1jS-lSiGQE3j(&67q+@_ zeeKYzi&`(uqoVbW$#`OA_aa=IKk7xID<2J9K)2nPvQYPwu&D@_Uh|Z|GrT0RYK$rc zj>&jpbhRQz=9=;J#XMTJdrE|Iav7JC{!hz~270X;`qtsS7BSYc0L$<^1zF5HGRUMB zQqBFvb6EFSAn8np5sW#c@IYjFL`oj< z=gGjroo6O)J8bPyP@yP9M1_;F$Yf9LdkX&LN-enx{ZoNJ-gC>}dco51oXiLmC5l*J zSaxKE^XE$9%))MaI`GKrk1zYP%SFjuxa$fJL>VKVM?_GC)`hPIThmZKK@nTg!Yqaq^*mS8u1iQ@f1)0>U&gz zZE@h85!;%c+1o7i#uLs&4u~9~Xa!Rul8x7&NI`}c2d38@x#qKOy3SA$heERCzzogS z+kfWxJ2h>W&U?^{fzJa|9=mQxQ*#2nP%DP0(T@nP0EQBhXZM>^@7&+XvD4|x0uN1T zes{wj(F8EXghisn(1L)mF@Whvla?ZdiyIl?`?5~gUZQ%<-Qd0)kiV@m{e=V8?zJFK zNfO7?SQ5i(Cq$BCBt(FOmjkzNJ&}q#S{f)jc3i`;E&pMI^!@=MUDyYkwt9rc#m%dT2A|5 zIDf%{S)_(|rvxBCR)GYFDWBdtz0Qhfs>FH-CEETQNZq_>Zi}|2935Ja1VNNVEK5ww z9mA&-)rsh8a%DGb?!SSt&us2~W})@KI9if;Oi{E#hYYMs)GgI~;rrfIXIXM@1YV?R z2Ju9ZpfPMfQu$c1*n5F`r*mPf15`-Dk<^%>b5*m7o6J;&FUd>WA<6vGIZrD9PN-4bZ``e#2> zyw@r|5?~Pmh*dR&5Q-f?eh@g9OucjLo#`ZicJ;0o&&JDScX6nidh72NcI60uXCvTD0C7z6pQejdNq) z`>3f^z%0VjEQe?oaiq)wX88lpj=N##ffi+r{|2G-n_wXa?4uDOdHTA=b+A z7y~uZw<3_Jy&HcPu;tx&@PQRgO)JiVkOnjYJkL9vp5C5p*N_}Rih+>&B2e+WqoelT zt~YTU1Pt@-Y+CFz7CvuqCvayiPq+#w19XKP$DZy zv6_p19dNCC@6!)i%ADqOjaR)~IkI!S&TN;EInYgHrzCiZgA)i+trBEWVvO?Gt~tTE z`4IO6y3B30an8K!Lr;|=j;UEymxN^*N0#6om+taH(ADi0a=QyI*(nQN;(5Hz%J7%r>eXHe#Qjuwal@-KGQivVJ z$J$EiEo@8(E*qOX5OAj){a|aJrKy7~Gg#nhUPKHqGj+I~56+Fr_}q*PNw9qv_z87)Qg-cmH0~ zoZH0a^O|DdG#v^|T~NL8M^YG<|7!R_iZxa=>>9H(>&L*>Z-47uf3B%h1_U4tFwLkz z=r9g(%J5a~;G-tAg%bfZ>pSn~Z&nX&;i6fB)9auSF!J>usBO*Hx7$tzKA!OCQ@g8J zU4n^BDV(B+BB#*By#y!Pehyqn{J49{HTrIu9hPgV@GL`UUZF8G+bu&4xiJ}^_cH93 zL=zUFo{Zry^lyI-oT~ojFAF}=ao3Y!EmRT3(u7tRNutQBgC6+kjoVfy>9)u3->pru zwjBS}R#Y*Z1aD}$?$D=$)@7Z=F;M%_Q#(>F*n;cb|9JSB$rB2?{GPUz0&9Z5t8EYN z$CR4EW&J(9zatJ7BQrLT#2xY=50u&g?&vbuzE~)=xiDl*V!~D?v zEpU5>AFpfrv)PM{>DaFFBPoqv4n(BHC?%UaxNcFX-Ou(rYTT^p?p6XPgT z9`9h`sYVmmJ4a`(RX{JK@I9%?99tCHs#1XOa# z>GI?d$$QhJ9Cx>DIrreJPrUYWLS6eIofa|FUfqP35$$`MwOlv2OR-x&H%o1_|Mlo^ zdcN7vj#-+e%XzhWblH}!`PR{-{b(aeSB#P8Q{GU2aw$W(*W~%QQf}vRN1|#S<$Lw7 zl5y6*%IdvZl8))?8p_c!3QFpsxO|l5;y#b{yLc*DDm>KB1X6E+j_o&^3Xh?p5SB+2 zk1467<^X2`hu^x*`}^~{+SAU2ki)*Hej21Wz=|?r6$*7-I_f~VgoSCt4Xm?vnyS!a z^@2}iohdt1JJOQ1K6f-&b?NoJZaDh1dzo#pW~0AOJK`$034U*}RpWM+qf1Q`}bm#L6j%vL1&*0l)%5AcTs3iW0Y-o4+&j*w0pg z%~6CRG!O(JN=CqbwMY0ow58N-JtQ|*?m#!wL0Gv_VmTf|2q?UryR#>H z)YzfXkGA|aZdA_p3)y;@;dwKt(DBBQE&k?4(3n&c43g#(JfJT+kn>D8j{k8J4%8@3t#(Mt6>l%5^Zb^V31CZ`DH5%x_TsYRuQr9UOP!LglKCoaCQRxT4nOhn{=3H;Px18s zloI3p`&aibp5m!AQ$0go+@#-=nwp&V#Z@AxXp)z--YYe=jIvzP=a(v_#YiWbrDT)5 z+!dC`)1^6=BbCikLX2fwjQ^XZawYseo-R!)?eip#7vd?N;whfu=~5=6d0A1*XDeBd z-FD5k|-*qUscwrugE4<5D-`zr#> z@rtBK0HXKbO+R10@#!=(5-HXIJ!Td^O|~U%UD@^1?{(2fokCr_u@e;spde$Pj7Km0 zv2x=$-Y@`8i)}MIOqd~9hs8k(WMqg5MdOe_*gm@%z_i@fAn-r-o;%Ko;`=05xI2!c z_aYqx#NF8rh*A#eT~SfORxXfBjwF;*L{LFNeu|2U2#AV^D2j>{5ep(VlAMZ&y&*P4 z)US#t`1^$0;VzSGc2lmh@1MEZ+w9D|dGp?zH*emXy2tr;>|j$2z-dwuSWcv6G}zR_ zG-Jc)>hJvP?Oni!a3PhuoHl)qonYy$H_f@bX!VO{V@;zmJd7Tibwol4TM{*zmOUh&>Q z?c3)Z2{4i*DGmb|pd#)Sj#B-j4{0{h!$17GZ=ZhhYe*!^v!W3RE3mvI@B**k>`$Yv zoSfCkpO=Rq=_RBN)Dm7keM$}g@OPu|jo|sJ3-1;4OUsWwC@rsngHWAQpkeZhR#rry zmO?{B5Iof|+#pb-QYWXncy%3IO5KNr()xCd>8Nev`Vd)clIo)mY598{!w-ykhZ>3- zX}pi-aqmNxmc!IK^cBCjhW4|%Lem6)hsJH%6sJc6sj3w=b-pfsNmZC9m6ne@7=8Xw zSdddW-+!-~S`6Pwkw*s<%1n|M!Rx7bTG1eS{TlT>pW5#OgJVCB*H8#{lrr3V)Om&_ z3UEF@Q0MpHr`E9NuwDnjGn9$LH1Gt;q*3GW5{?g+Li6zQyTRe5mf;euZ-#e&(u_Sf zYG|!32k>P&UQd6IL$`BJ9<@j6cykQ+ZWA=1SO(+l6XZhP<#ULoKHMI=*D=k-`(}CM ziS7yT&%v_jSP?k|;v8Vr-FmJ-Z!CERP#wHdex3_=UqMj$Z438P&mBV-rkPtE?N-RthfWTQmaSW@v$$N(IA}`4yFZqxw@mVCt5qT5$OBXD8 zef3|1qRhRJfStkT9$f4yH82>zZUOu|Hox8fpR>`Nr-m64SPoy`Z$+2!KlG@VRY7Y2 z_^bJ(#`Ru;wcL|YQJW5%rJw(QH$CQ?bQ%WXD3`{p?0lKz6&WKj z0^^yp0ekII|KfSOeZRD_W>pdb`}vC=zwp@1H=}H0%I%Oyg=Hj`$8d#<_q4`l>F-}G zcJ0*j2uvqcE~9m6LTfcD34^f=M*xbm4|2;M(cyMY@bNww&2aro4#wVS;~r?xxRL9fDlFoEzixIiVC9jt6r;3+1kZM_!wd z@O=4(X?BW#>dC)7s}IEvT`ll}B#9W!0TTS*^0!;Q-|s?OE+Tr;Drucf@vl4b%ZjlZ zp$`6KWRJ^7g;ZpPp&3qASdyN4+aiC-=Qq`FQ9)fyuOgByqnxS!kMFqW)^6v;6fZ0* z@i>VQ1c*Pmj@82ZPoG}(`0{}ou3#iar^FRZ@K3e!>C@kdxx7e%5`jeXg2KiTEKK%q zB)1NKbUUQ^22t}cC_E`JxJ0uwE4RC2-SMAut@U7_sw3OOO9;Kx5Q`tw39m!Atx2g} z#M!m9{8&Axc}mr(VVy&S!IAXnC2D1P$Cg^_i&p*v*?+M4`HRI3u_H9$9IuFiB5`aS zM_7vgy+;>~ZN8h))?URaj-g8v*Bs} z1M~mA_F0=oW+95g5>J;{;Q#uA$4(9Bo*4}h!xXrp4OM9`{$G6dOdvfSHQ_Dmy5S8N(iqLH z_;@_qe^d5ZLsFLR%5eKT7QJ|}@2u%!L0M#JuPP>c&*A_>v6vzY7>4tmpJ?4}>}?q^ zO-r|r!b=lOs94Re$nW}PQG=I$>l(?-&-(p@a-M|ZWnzroE6)sNJ(<8O@&sR@&$x0l z)9lDhZPFP1R7^UF^i3hSFgYOwez=r zlG9C_WrXrAVkC_b0Jl55`GrNk;xk6*kdlBZr_Wo%%g6@j_?2%5OnYt*9791gn;xJ@ ziXd44><;fFSs38;%7ucnIOK0rGWn4`-?aEV7w(;If4j78u~Vs(m^&p^WK--vy=DC^ zS3L|9HNP2E*X1R?$Y)n*g(o?Vp?My&I|_@OD?T1yKwq7i0Yw-2*7&ey(7K+beia{X zdtWiIUReDXGQ9rlx8Xwbx9`Hg*L!1lecpq}$pDfVrs0V2dZVG?b#Q5TeJrw%K90D; zA7#Vq1cRt2NPQKu9hiXBon(0Z2Q0jPY47lQF_N7i4XOWiKAekd{h!nC54vJpY=gSM zO1MHXyu!-TyH~Z`R9@}e)xWg-8`mSb>-@7HdvE`v-D2AxMUtXe31Ff`v&L8YJpZa; z((%LHn`^0K98GW}#$Y%}5@dvH-a*xF?$cb^H~3FaY}qBNul5Zj3a1DT!x;htG(!+* z6T5Tt#&DDWs)p0@pWxw>OUjm{B-&}_srY31=OZ4~fcUr$swqNM#Ur@>SRM7U&x>hbdt7Wm@(|1XmwYwn4 z8yZ!}$}%e`G{pfL2+#kXfBhvT(=DA$6*q1}RJfbSE&dZjF1l*E2u0tVxQ~{`Q8h>IHT0<{jb?q&bfqotDb5zNcf;6!(f@NQAeL!tJwjL(eYJu`-!rd zG-T~sHOf@+uT;Mu?{`u~KegrH(5h4Fxqw;?;?-Kq@Mc2In%`8dbK5z}CrmJ*BG(^V z?wxLNefL)XzI!iT_~SLu#8A#zLsDkgL%xvroNDv_^dGY;Gp~5KKEA}?zyHZM@4qK{ zj441w%a~>>enbqDTg3Si84~pW_L^h3RY1DXer(eiw zFyf}B(1D{tbX$TvTlN&&B|-uUM>8UhQ=eYB@9C>&HnO$RXrPBJywv)CvY_=HB1Qf| z=y$X!@h<~(sQ+USNA#`M6yp`4d#m~>{@Z&~}>;EK+C3gLPjelFq)uXZf?IPD|xyu)X zLUSCU5DWp%q+)DxxD&B_@~JeqKwXo=OBCSqn_6h~<3azb-N)Bl+B0^BM3N*3PQ-x1 ziN=Sx&Oh}tTibvbGutFj(Ikf9p=B>d%{FBM)`N@s|1{e8zZ6Kv@+f-D&lcVO`JxwMB0`>PxueN+4ZrDTgHyEiHRhsNQBJeJQ`)w zryh4YUn?!MRChUegCeVrR?|=VZ4Te3UEQ&rLntAXpAu6zoF`G|5dGn8_HTTx&7%*W z&|C~GK~fw;Q5+6JmjU8m3{Uy9{+c|jXkqN6vIsf#2h5Np%|Gc)Y#sWZ4fTbCR#wjY|XzpS)KjHnFP3-g^ zUeaLCXZJ#z`H9H6FYov(Gcv^yGRX-twy5y&K6l?iWWpSXpY1Ol(HOq89Hq{{67_(U z^p=**RSwZijiFXY)z^u!rQP23Z|Q;Je>zhS--EwL+eh1h{ej1~wMUhsc< z-K~3$J_-|Fu4@sg1mS=o7@VarqBOw5R6#&fM`!KqHLiB}R`Kux!|I*t{yZ;_{{uDwo{v6LQPnYCe$vlnf)}u1e2~!{F+dW;dqVvWAPS&(jQKRF`9nEnQTFDAHOg8LyfkHCC``l2 z^Lxqi4_giAKSo1HnqYznse>}R_ACAqogO6nUItI>u29R+dD=8l@yH>^01Ou~h2sc; z5F2$E_rrnBUFsz2v99fN@~S`g*u8&Q*T6HXEoB$Wqn=SIyo|FPCIMRL_}l}7*0r9Q zJ>HyI6Kce=d(A&^Pm|FN7RC(JN3$e}@vOqj44ZtQzPhoW0Ck>LrIGhe0(8m$h@*V$|W2do?SzxG-D50y) zhWb!&g2ZGNU^vaM8MxQ6?TdZZWaCz)$El&D>uA`?rn)b~%zpn@b-(*%MusFOng8q}U z7s+d08lw5>Sh-{XgHbF=bF6)&Gr!Q`^T{5&dydOH!NnJO3*0{A{dmv+-XEjcdp?2- z<9PIip*UQUol!`flsTXfnE2yh+u~7&+NQUtWjt1!7~c1PD*dhPQ`~Yg84}s?mNKeGb0| z1KqglR_=ImstAucmU9bo>xa`fbn|IkL&vjTH|lKj9;b*pxMpkDuBn#F`_Bp+)F z-!PiUsh7@v$;9`$1y-}aH3CmnEx)RIzDLzEIz3m_fTkuM;(~M&1yS|GRi<1v^#K#A zExle+#r6Udsu#F(OdM2a$k3=~=)7k_ba*Gp9Jtdp6u(WXAu)i&30R`GH(E!JgykL> zS045^t77r7vYIIt5Kl0Ll3w_RwbtnMwN_*AqdD+0b)IYW7cEgIwjYpdBSzi+lf52* zqTxQ|xfPM?X%#%LTKyW8;&CP$em5;eco~3{6{Y8EjWt=wgcoa^^PTE2`g(SV>awpMkmB!+GFUhIJWZ#anr7cM zp?cA)2_~3ef(a&=V1fxIm|%hlCY;Nlc5cz+1G-(84z-oN<_uu-bbh>ZB zo+B|Ygv%r^$pptyiV{Z}iSPVdzWub#|8;=(@XLjCD0dHE5@nWSD4LNtv2oX9_TQdp zS~u~S4nO$ceDNOZN0-JNjv&(*F4I7wK^&<;j{27_oA%7s6R`rrNUW@|0?P@wELBus zn4|u+TMzKBOoM2h8WpV+&U2CkD2fs3TURXnu3y>p_h+MS?Zd0tG8}HOKHT6qy2SZBUg)Az*P6&<{sR}Z z%_4ThTs;I3F&c<8D>89}D>?38Z@*;>(^osE2Z2#Ez(|Z^NE!z$8f;~ay6%40Y~ok{ z|1O+4{-Fgqk-e7`!A>%`@$UZNKfdhUH=Fc{omEBPWQ-PZL8hpvSykfaUw`_qnDoZu zQ%=Ge8ya_5+V>JnUU>|!XjtpyOR$LIklutT9WJ8YB}LQ4)Siuyz0V8 zURRdsgAT>(z$uKjJ6r{_$Kmr1oaJ!(9Ikwi$L$&9b9*-S9Jcne$vw_yMQEUw)73vV z*utMrt{>jP2AX*K$8ULH=A9QVqSPl*QWR;&74iCbamMIbPA4xo<$>QIV!w@s^w|NKqrx;}mK>K-ws0?-7F(-cKu z_UYbBoo<15ULFdvGO&0wUnu_)cqHTPmLsioQp8=#M4~M))%Vk~sTZ_}oCQxPD4D}$ z_Xq;c;WAAtn52Atdg4MV=e4{v{SQf#) zrUedWa~ZocV)AN*B5{S`SxV*zrND}cqkb2JeQcRLa z8809_&vM9G#*IUQq$P6tdVlxucIG0@N=ThR>K%}Jd!$|usUJi7_XAS@9;qKj$Ai?- zR6}nd^?gWvH&Wk;)OR5Dtw{Yjr2ZsQ-=tH&Q!O7q@BC#W1`cLX>CjqdKGV+9dUoLU zXC57YR|EJ3jgW1j$W+5zl04TgVVEKTo|Q?7Z84?Jo%wS=%xYG{x3tQn+vY^~RyWJg{tyt75l9QgvF-p+obBx-j$#DcDYY@2c ziW_d3a$`&`U0$3R|8&DZ*GGpQnDY&!rdRZ+i6=!xk_3em6*@TXi-P^D_NO&MKCc(0 zFHuO;kx`pkngo`%S}wdPw2f4~LbFEUT-dCM?!rQcZ(6~9PY#MJy<*!y`=XwYz3+>e zNtaQ0p2azqCKV~(Ou9BpyFlK-D|apVKW!zFBxshPX_8<71(=8=k)LiUZRCIkiMI=U ze`u&OX{L4q1VK<3#}E|90t%1NQs2zcLsQ4V$B(_SyZi3gMhO-pNgShC8W%v&f9SKj zcaF&_JkJkgw$1(e!`0A~QV_v0q+*v{bn;%Wy~yJ(l0Cj+JK#25^lP7chW?wCT|sQS ztb#fTaZf(Id6jplC%0Y|Nt?26yCY~Hx&S<2tgJkQsJ>y8!njHq21JUz1d7p zxe)FX*!%mkwzss0N$ig|jk5E{08U_l<=E0_j1%R#zCmtD7DJ&Je13(WOruD_ZD)+(OIAMZ5jr#j3(EPKXDC-C|E zch>Ipkmx$e(a;Oyy~36gCmri$+{#MuJ6aYVo6dSm*Lj|-1t=#;evn>G_(XaI_s?iv zj6^fG>1}8AzLTZ%zD?5(RyFfjTSL-XtNHh8T0c!N>8v*E^(L4Q3tFHq#b@cXZy;w6 zd;Z>^p?O<%wn5C>G*8LA060~px8yI)}SAj=)yK8AgMB_mp& z6^!5nL7)LmiG}qYH!XRoo8?)gjYriFKNn};o-;|x*^oD*jRv1Zr zNHaJgQk)DJ2|L$P9}Wr(&+4`Mr-GPXSq#GgKqx#f@sx4*jlqG=_hM^XZG?(N`^;#H z1ss$wn8*r%6=ekg?gD3>CEv98yc&4jT^iVSd-nG)+@+mk9bgQDu^3KbIG{)zbv^C& zRB5?8U8{+qfdjjyb$RcFn2voSMlgg(lC*#msAJ!G$HK+BUcId8;elgy*EO0q4qlUs zl4-ouV~)ibmZ2z?u@825MfYskQ*8H&ylar#r8uV9pXl-D=x*(^Th>xaFGJXfK!3h( z=ln^~uW@-9!a^>&48DK%#|K;NUt2G)+H`qjV9SF;n{E6Py4jbzmEiO6q6~c^agJs< zjKL`TaPQpl@*I!DCwrz9+;?@u+}~|_hi=-NmT`gaKP3(e>3F273W>Y40|ZO3fMhw0 z3(;5+?-L6qIDE2K%OAbH=7=W-(x)#O@aJYoj_aan$1Evu6eCeACkhMxn(~pO?}7BH zo-}PNULIIBVQ==dXJab-q(Ec12)NL;$hg9PMIdL#ftzPP2T6KM*{7$^QS2;UJZc;_ z>yF*FMm1)Y3W3Aasm|SBY958=M5o&&+dTqJ5ggzYS>a?9S3g>{J}d`(y%wE#aA_y? z$)QMoIm_j6yX>J$ozv{BB#06za3leQ4QrMY`{oZzYhLSkq7s;%xxd&mH|Dh`9v2l} z6h(o;m8jRAj#^`vk?l?k9Q<&~k0aW*ijcB&kM2?Wnz97{{fF1-@p@x%ITC^*L; zrSUNr1m0{k_uk7pMNtdNMIDiGnvy9Xa0-uJ+{w~u!e*Hsm_PoFW4Hd>IX2%W7{Ias zgl?0Kbhu{7p5bo6n=IR&9$+(C{&cWU6m}E3n?#UdSCa~OFS>+IYic{bK>szTd)~CQ zW#q8RF=w3SC`FQisIcEZHQq3O?G`dLfdP_Z8T%}kcUDo6+vAg^!47`f z2a~S6_Ve$X)j>V7v^-AqJW;F~@4@cQ4P<&3{K(!lT2uHG%Dw`(WSDEhU^)_i@YS;i#)O-hopRQq2P9Ujo&vb4xG6Bwr3j(t+bJ+xa=a! ziX27}97{=;U4N_He(cuVtV$Bt#ew;6JoUuT&hQe-0xi875P$;=2{_t5z{NX@uMI_a zaJXi?xM)PdfBPF`=T;e4zc#S%x$LEn4R0EStGnbmb`Qfav_Q}dU`Y0lj^l5e`p?cJ z;vQWez=Bk7_6w-h8M-xwGg#$a8=D`vYg(g*d5tx%jqxlikR(kAKoF|SwK1FJroh9e zGXCh;9&YjGW@(Wk$#DeDkrZwp?j0tU>fSTtVp*EVJDj85TXXEjV@K-NHIF+@r~!~( z#lNraV5?^MuIY4?Uc>QIRsByl*RKgN6quU=SznLpvHf4T*BM*R;Hu29lQ?^F@$zfH z<|oqPopEhr+s%Q_2R2Mv-&-r53Z6tfmBoQ&#VdZ^_INjFIEV~1SqMPr=mk65t#!utdp< z2f68!y=UzWFkDoBwJb#H=p5e`Sk`dcCtb$HG}W>kr4W+#Yzl?ZZbMAa;;Z7Q+cqAt@Hb5j*A1z}Q!w z?%46Q7=~*_l4OqIc^1fVL@&KRaB^Lv$;2uROuqu$%!DFBMHl$Q|_8d;B1dCHFO%Q;>$+oulm)-sA z%h@ecr1YB1w_@N8F82Tb`n+P=HRrQpzANEIC>`kh372leNdT9j@GFVD4x$&2=g{3y^kUB2?F@ZW36A1yfqe=l5T z3HuHlmmWXU8bAD=QMyFGQ(gE=W%a}4r{@N=FJ}phb|ZaNVEA9HUfA56Q0tK{S26r| z&g4R|``iSo=gT zGr>K}Bg%t#u|TGXTYva``<}8CBCVpA5L%>#Tee%Yh;6($52?39>TN5z-lmqSHyvyeh$9mk;WzlCB-7c@s zGfVWjJ*cF(O(SW+qk+*cjO@Wb5%ZXc0~{_f6iov}5$L{k^_+YD(mc_jS(>6ThQctKqv(heosH@by8zEXFu!VMFnKbt zdV}wK;nnQO7JQPOV!(=z$Fu!6W!sGBy?81x{^x(P2X%rJwleCf1dKp1B!+VgEw&aH z;BSptk^|F>4MrM+^}!mQK%Wn_h96WmM&3vB2o)mr5lFoQQb%u+G(qZUd-Zhcb&+~@ zob{|Y>u5Gl$cbAG`}VtI&HZi5aQAfJrSAo6$0N-mmr^JrXNb$=I1%FUcELT@_&VAW zIG8iI-HTVoyv0G|3SbCI5CGufPrvd^pyM~YkN?O% zj{efEc`KhJ2%I8lie@M>l)n^JNgiQ}OHGl@voy5E7Xq7RFt>JS0(}xTYH5uWjj;?x z0Mn`U~ge!B7cSDZE5sfh~54zLzTH{Dr`dxuXk;`*eiU z9K}PC!C1i3EX&$m-m$!|V5~=09CKa!rmSE1dTT3GRG@{V6{2v!@_(N2QV&pt1rEGU z4G}J7^!s99{qnb8wk?a6=~)cvGL-S#aJvI7=8Qc$I}LuT-0jAYhb+!;{jYYlyZe_F z85Na2eRqIfguPmF!KKxk#;(hI=4POAw(wHm$Q^TLO?GMTi#UenaDrq7R!;uT z+Md9~`9GwM%8$uwF&-yLj3h~%k0UqY-oP=>&po$-SW=o`2_Yms1%a0mmC{zrzQE9d zZ{_#zaP}5;ZnS+8$0!nu3%tnTbh~~fbB^zCkav@L6|6=8Tn!`D@;Z(8PH6DaSq9sQ z*DD3G@0AAMuju#_dI=;JD7{z)R4O8F^~va5;Q-0-&d5|EJFLLYo#EKMowjGuw{wwL?T_nC+1Q6o&(rwR>b< z@(ywM-kBBLvbe+U>^x+{kgKzSNcGaxx`h03puy;`#K!$%&IQfz3NEsWC>i$zuvtC{ zGz+d;-ry*--b4vVsJQGn&nqIS@B~4K&%gG6jZa>*yMD592<=Gc(vT88jm|`Vm#CE0 zO279>;LR5E3K#UtL)7Wg706MnU2sdqzfbDC=7t-bS?8|j&F6u^X*V~0X=hAglo-GY zGQcr`C5+e=356gD zN|vL>uZ*|dF9S|ow+j)uv5={%33|J-E6W^}`1A|&zvV+C2lSi_Niz6so=?EEV`CyJ-7Q<`N5 zOuU}9Hp}6_;*Re>*zJ_2GY+6Ijtluv(i{c=L7>h!pYgouz0eWWg|srWp)p070=hhf>?jj-{Qx zv5r;~#{%!Q{Ocd@%`q1r&I%$UixeSotnn?A8pUUI#e zYANXae`b>Oc}a?Xr%lIy1SXDqbHrnn6KjElQ z#J`XiA@6hwyf`CYQDo8QMZ?j-I}-5zxbvgTdOJO1p*K>EpZ|y zNXdJ4*@6eab1UlH46h6oM6p8>6wS~K$>5w_E_C?D2qBlX0Zyk|w7br@5RaZ!D9E1P z4g%!#+dgnoi(BfR^^nnv*slkg*%i`)?LK`&dGZx_C+>>qqS7Nvvqag>DKrf@jv_=! z3H9@u!K<(E-P*5i7gNPdsR7t#$p{Xf*l0_^t3X>ao^?bgD2l{!?##Vm+3O9ZlPTv$ zj2hLo+=3xZWCY)qN8RANHoDTvlEgKCESeM&G|4NiS;2NY+Po!NTdPmnM~iKWvpCKI zmLlx4dl1T1yf@<{4bzIMzO=z~Ph!x@Wm0 z<9s|jcyGJ^u3pbTK7K_x?mA6WJo1?ksWe3pm?+XD->Ad59}aBpa(17S6+sHoThf=j zIl*2dpKEvZ`}HE%i7HS8_gr)dOj=VK9(YB)m35*Iux{}9H~atn(Gews$s9r7MHw&{ z#ga6~+DAI`3mrb6>^Z~p2Y5Vu@dVka405|f-e+7ZXc9cIalz^(V_QXvv+_>25=H@m zP*_Z1=m95fd=fIPNl;0%c-vhRyG4@W7=;CbjI(00p&qQ37Qt)ZJoUv(TU$jcyXD$c zaD^3cLF56&p6=Z<|Lv9|tx)NOiUR7no@THQX_i*OrR|QisQX^b@V~qy5Hd*uMp0N) z-}+c}|GDSN(sIsK;dQjhR>6G(XI=Dle|QOEYP1G%OlBmOph7wq%x~9f&Z`fUk7J#I zlopM8cVsbHHQsL(WIMm~;bZ4RR(mMA`hVuIos}p~lsFb6alXOEpVpptd;MH^VE7Kw zK+%=)(FgiItZO}o0B@75H|TZ_`}vM$0MmV*OW>3u9+#lVx6{agregA?hjD`_|ZH zWV`Ky+rEA?7aIysT<4bO=yrg!EQN6l;8=_z2qF}gMJzb6tI?^97GtyOR*p zy{yd<>q1BpD>Gw~1WnNtF3SqQMarAsV5Y6!!rY)nBU`Pp*YPEBUZ>~@H(ki@`fI!o zdFC=i8vm_|(Iy(dlT<&CJJou!lcFH^4;mQc>G#%&-F{CEJi`9>H#je>#ysfh#}JQc zapD8T`!by*Wp^fs_hf^C86{8XdPl|CAJGUw|8HwjZP>1gj1y9CMM zbA``4YFY$2K#LqD0h|{i!X~_+o~;a5*JiX*v_uD|qu;k1m+ge?*k+s)5}q$#4K;IY8M5czu%`9(jnvDcim9 zaxL$XU2$Zr=^flRebk8yuY#Vd3&IRYI8M+XF6i_6f_^8gRp;t_VQ||=ch7tMnwVx1 zUgC>bMNb4BlO)0!e`RaS!P+bt?y7T1X`-YRNRZ5A^4_V_yn zOgt8I>n@0bNMiy=QUs4~-7PJ{KYg-A>?XFyQfQwlh-#k#0B1O!5?K->AMQ3{YRGA|;%!CrU%v?cSz08Ne-GuR4?1BSpU zK!-%YXm@Ftl}QfCS74movB8d)<4fz8(|Sp#NbwqN?UO9VV3foO6hVJ7)3T&|^ev8Ilyr);yqAeiMZ!Z1mgE^+ zDbx5-Gjy_=y3KM)@Z`R(dmDF#Z1&cuY?dYoOyC$%q$TmWx2}Kut(GILRed+$lHkZD z8@uILV@D|kIM34Gh3PuoslX)EV z1i8Ux%$8Nw+>qemUl+eP{_)sRTyaUlaDia}g&98t93E^|_mW3)Zs@A5eiRaT=tzzN zEMr#`M`;-GvAl;b^tSaraG)|&k>SDa!sG8B{2+GDNgm??Az&QFipCKzGT84Y>)-c` z(RAe_Fop&k1qhsAX+Th@il^82k-?7XvkUV72iagjMr><7jS;LsVmu`a+c&QIYRT>y zIge{t_g-m{T6CjMmylxj=Ei=%4H93xhf-Ri!3|))TXid)muJ#avz^OSk4F{QAA`S} zFDBP+dO5KZ4fd-4Al15_8rll|y`!}3V+|)MXtgGmr0I%7OBB}!6hED9;dq3g80@zm z!1;!BWYZaUR+8;O`s-tjPJej@*UxBV9*hD?_vsqzL~A|8OP6pRL3)GZBz5RQOT9W* zf*qAffeFEa+?F5Q(^6BQV+!C28IVAvk`CH8Avk30_?ORL0dHM4h~}b3aU4klngn*m z?J4AamxW}+P}x~j>do13;ZZ-6Mu zUa#9TSQeeUhxa+$F5?EwDZv)XwPRjmIz?`<%2`2pzzGU3i#%EG+;i!D-CxN$@3-ta z6^wPOMF_UAZhq_UpHTOea?8iz^0`a@^2nlnPRNQI3Ms?TB;W)YKJXI~(aJ*C1k$udHQ&F8SOjihE@~T2K(JUt}D}1``#*nb2v+rI70!F zq$Au$>Z~m-Umv8^#C5?HbGD8=xCPSS+-Rd<7)~K^Q2;bAo-rZ6GV+V=N6(vA4~n|9 zEMuj`61}eHk6w20J1^L=Q`@&5m;!AO8*S0d>pYNILKc853*yKx{`_d@m%r2*mtw}z z$YRVcoGORp9(q=_DrTg~Mt0Y`0F)}QA^3!s+n`ZAC(eGRN&w9Z{?GsQ4}UFy8{!r* zHpCK#VS>yN62Z`?UmmpOT!i@a=!E z#`e{aWK5Wxu z!{zalX1OuA?2})f85q<|%*U}b&N2YwNEWbU#D?uoRl5I#MMwLML1nOYlZ9y>MT=4g zhKqzuikO0lawy*8)eUoh*A3>Ng~=O(EgpJww{|wZaV7&62;U_&@@iaEJm=QmE{ZN+O~@V)^W)3EwAsDGU3$}2U1!z>WP9QMc-SA zMw&+S4m3BjUc?=^Et|dgj>m?6)UtD~j{2ab>fRjOwDa|zJI^{@gx|r(F(PG=qpX(2 z!J%)>=sa~=du@ACX_Oa_&n_z*L(wuuaWsAS=7YC&X>k0k5y^yjF@I}t>%Iej?E3@y zbCg7w0K$A{d~VV0w2QpcDa&>o>vLrC`X_Jrr(UyKf)ATzNzn60_FL;_#BgE{QKI7Z zUCMh(6fjPw6mD%z6Zv6nUsE!*@*kNhkV zqJjaOV+6w{i!{s9VD79|)?eO@=`Ti098C!dM-w6z)n9D!-0%_w`26O%(fhG9*a-M0 z|Fs@+n*|o_jSedj903@dmL=-D#&30dYX2KKMniRXMe40|>RQjs`rYHUt@~d7sZ}}2 z5xJefNlKt8oRA0%o6xAwsz%O<*80_s@7x|dcBD?GyI`F5u}Xq@IrHZhxjjDb7-f`O zn&phco_0rYF!=3c-Cx^6bt&9TM^d1?oz5=03kw~-_x@_#V8&Iy*KJf|IR5hBk1KDv zL};qH|6)moVQ40F8;j-e2$SAR>c)!JY~ik;t$5h~ZU0}3$hke6`I=3in#oz9Zf9NCE>z~VCM#&7ykIDpSG2{ zOxB9L*H=dMg+xf*VL8@b>P)pNzi5%QiOUsQNtrfz%ZI(xZCAXcJ zx%8yA-#0~)91(JS$4C~Bl$&}@JQ95GzU%MW^JOn>A}J(D2GBHy1KO@Qobn`(!zX(O zI$V;&H7#TV`S7dhkJsC=D!t+yr`8AQs~-FM@5{7fS1TgR5;V`@GJ)P;kH5JM!JML^ z3zUDflOxk4O)??}IE6y}ESniTFez(pV{qe&o2E?=;3SueDOcvHrpOooyaX^t5w2?W z?l;?iSbx@DZ%guwrmQQE2UpzvvQj)S<}Qq(iTpcm0>2_igdW zC>%P$z;Yg0bbF*B4%sOUb2%NZIMnVZf+hX~bMG3}Q+rnf+a*YvAPA1IkDoi1_jqNG z-E}5h>6q^p6}{i@LR)EuJeZV3)u zn_aN;!!FvpDjZ;dqbLs8-E&;BG*K=ra(j4>L-rb1!=DW{v#+@Hvj<~3bP||IVVp!` zii9n+embtaLudM^($cN6{ofme*CD*Enqm5@+pB45(Yy3)@VCEzc}DmoRxC&oQxrzT zXn-jq8VfRYTGzJVi;{Clo6Dypr2Rztr;K!j_5mTKo1zq4pa3J%ti6EuPW12&r^7XE zkh`#uH@@0-1-pNB{F0mM>BQ4k94^T&(*y=E5(5$`{W#dRc+{b`=~_1+8f&y@(Rsgd zl9H)zlJ9HJXS#uybzzLirF&1Mvn!w{V3s^1h1n*7z zES=oZvYeqOVkaoc3M+@S4?-pne$=OFBJmuomi@t->96zd-5fh`03%^EO9M$1;z%On z57M6>p8NU(F+WZ4EG|(zkVHO?m;`|!`_bBW8ZC!9?NBZ6fkN4?C_ID95{dDw^xGF1 zJ~IMV@~b%zoOpQWrSH9*9eJ=JDKqRGesb~hYf>4W#cBx#OFr-NOpjeK<6b|R($envIxb&^=b6$HPb`n}rpgEcpDGpkTP@yMlA!>TG8Z~rP9@7=X*yj9iix(e!Vs@tn{$*BD|5E)u6V46DFi{W&)h&Wb-#Gc}xwa2AA+dR})$n;V z`Bv3}sW(K2*Y7rQP!Z5HEw%hAS^iO3{HL<{oXJ;>K~93d>zShV+pC2CM-9POP0?db zh!0TutB;ha;xq95hLx(L-k#7fSm$Z1d#$?B=UV@- zhx7+_>wctvE#n;Ldm8wL@DQ?}8K2;IjPlKR-+Ra)9X_t&X__UxOivNL+Yo+-%E^`* z^P?B?yHKZ&J})%*T&_*)Z^8&n`*2(qj)ORn7=+yuBv4Z zq~2Pm9lbD*iH5V#l9$O|L#t!(dAxdMror#_Ptrb8S@z;g4SLHnNQWpiFgV|72K!yv zdVjL*Wz^FBwRx^oIZ)LZg;9QB)u3;y!F7=6|7)7OfsmuIzpt+2$w<*W+jQR7lUw}_ z+Fwkl9#C8D$klC~<|X<6RQD%6$@Vjn?6)Pwejh@ ztUAE5ETA!lBJDm;@sL?wd6-L*=Z2#7+C>3xFtgRgV>&z2icRZtjeyQo{QGlNDXi)A zk?MK3Rug)zDta*2QOyK17?Cl^t>X1%(u*nAOsGEdYs$Ntq31QJA@ioES9MMi|Lu&l zmn=T46@*`-^0q$Gk0v#gesklbi|Q)BsyqJEYWes~hz;6lPCg5+TQTFy{wraarYMXYTsvkDdRMRr!9If^G0 zN#>dU*sfpM_4jA@LK@1eW&_VNSU2hcpA+Zvcp*opu04@o1#?~P)(!p&W~nKco~SHK zjY0xJrU)6wN##tInkI)k5z8l^N=r7fY}rY`H^Jq19(>j|2`=VxiFnE_W*Xo$3wS{$ zg*ei>9uB^6{tKghEn+3WWpM>lWRc);K%oh6>mVfxbqr$LW;q%Z9+>#>tQR%&q~jzF zI0C~lK;bkXC^R8jOLbK3H3oY$_{xhryIq*~L(bdixBy*lQ-ND1u;f=cQkc&P`^ zeHLCCeP8SMTHi7HeZ#6-TAA!gKO>XElas%JjNgxt)k>s(FH*l7so#avZ%694A@!w5 zeF;*(6{+8%Q@;tR->6ex7-xL}QlE#^XCrkVQuiWt6aQ6%|G$I7pV>06cmhSf&aWYBp<$!$M&>!?0?Gx`=x zaX5Xl$4+6G%#s8z(;O%o*6{wV_TO^}Q=_VJ+wky2(f&m(SV}ulI-<)+{H!@4*v_DXmRA#(TKj9TZbDC^)?s5P$b1*3~e9jo+Eo?kKJ3u&vA{Hy+d3B zB)-Ted&W9>*SlA>+|;h_xHQ<6KMf-yt0XXb-p>bCLVDN|*_A?;<1iA#XnT>zEzJ^T z?;y9!>+{SKeQwXl?=wHz_QgJHqZ+ajtd{yEUoKJ<+7( z_&amw1%^V*4~@oyXutthRwSAiq+1_(^1EN3Xj&H@ur60)*WQ0+Y1vA3S8Gb^%}nzW z->=Jm?N!nxvgz_iVWAae7Zr|@Fp^~{MX@^yi<~Py9$!FTotcrAGzMCijJ|2&+aF{% zi=;iLfu_Bjs8S6~nMgz%CqVj`nF z_RF9Hi~nKjXC%F>I+tvkzv9%cd-FAyRiW%Fa7*^tymOXppG)xN86An^1j~>V%h)H# zg}lq>5GNED3T~&}#|zFlFmZm#sx__gx|89F#qsD%(CaRg?V^Yg6hX-tD}%Lr_BJNE z|B>6GmT3Um-Zec+9=_xKodXUwkE9u|&%=vy?^z1K2%ZKaBT#g<^4LF9|JhkLSxV_q z@^ISz8y?xOGeKvLlz3L6F_|MMfoFQJ{rkT?UE8E-rI}3Bxhhkmo~iR*vYxhDVMoeH zxmQW=y#@WB9p4JkC&GCa!z-dJ3Iw2Kd0N4JPYx<)WaVw)Wn>!{mTbJbWs~RaxON+b zArAzS#t4Ah9o{j*bXoL`bogWs@630~g|f>x(lH~V=~hUIHl1c6O9EGI-Pg50jL*Eh zJpJ+0de2fwNdcm)U?j(NJ4Ian(~c%*T?Y3fr6mf9hhV{3a*q!N=}<9Qa%}aW+vZ&o z%Sn!B0fqsZk^vA=C%IHDW3pso^AB#i-jC_%u>epQO8@{!`!JVJ_PBWGAa`Mr!zp|6 zJs!6Q)n$$IeY#{>)4p_z>td=?5`i%Qkb=ws8s+8LnxE!M_U8XP;?d3*Ms6ukH5qV# zApu9*2e^1=@wKwYUg(x)Ipu+FsrY8=(upUWA7@nlE~9VBy-)jlzqAhGCc1Bv$jbyq z6ErUpB`Y4}rcd_PNl&=Ri%aebe$e{oc`>Jh1&T-zk|+~c9HMn_$@EP(_00ZiMC51; zNO(Xp9Kcu(Q1$^{-z0}e9^!Dyp#yh$ysXF`*(J)}#$Auue|w^7-NeVAUt+nV<-3D> z#vDJ#VFacKoXq2x(ebBQhL(8ldvaKpPk6(KjN{dh`!evSIxK%IU#)%UJe>tixvw-3c*-%0U} zzpn-!SI3DL$a0&gFZ9s){RB((Xg5uReo-Z`K!aY>k$z+%@3pJq_8?u}sMfDn8$J~0 zdd*YUe*>hy4b_rER2Ed}MTaxaQZe64)iJ$al?KnK^^IyNs3jBUd*#);MAX#u2>BO# zyhh(k^mj(z+n*r*8zXd{?0bybL5Dg4zqF72yrzLwgWr9LtS7DKM&bNQ9#?vt>nv5{ zj(1&GHaw*wW`kOP6zQLy533E?Hn%aTA42~7dRA=xB^@zLpg9iGHTHyB?V*re#p5`H zB%6AtX}DZRPf0okucxCl1WWjt@ zH+&z0>Zxy$ys)qGQ{h-eCs)A(s``!fkyA~Mb z8&xF_{094{Mc0)DkgWz)gkM-MF}|Ft_i8FV*0g;|s_cgq)h@*M>^SEa!V6ik+lTXe zz*;%;yWQaUD~ms+dOg+@uvKw;TDhazBlFzL;5?5*=J~WGdi_$BuokzEy-v~f0_~Xl z)N&B=!q3P6jlP#^J#~AE?FFcv^I5f|)&BNUkJ*2TGcE(A{(g;WFgx7d*gT*>B6>qt z^*i*W*uU56zt;0q&(rf36V4?)rkT!uH<%Hfo?h3XCwE$Wa;&oDs}|Hl*JFYc(lSAL zo-F^WE^<0mbo^wB^;^`B;;95f$DtAEs)}z~HRK{ZuPLbJ=QZbg)|EuV%xBcl^_VQ6 zW=}KJT-EYDqjrQ;>#6ATfg0@!IvpDtryZoSVJoEbDz-zS_%XVV)EbXbJ63v<|F7wM zKGWd-Fj?r2%=1ec3*yT3@b!tpMl=40A=swzJkfPkQ{+%h19To5rD&d$g=Z^x+;Bew z?N!@!#$z@4NK$r}s`AgNY&!^p%xg)U_L0iA6QT4D_tVgB-vRj^dOzU28qOEZv{@Ac z>kv8_sPnv{=%=dHitPs9t17*yw%Hp}y>G5;K{aY<5wIph(AwE_1b&H0cXF}!bp%DLi_fi|i$p=$)esZ#g;y1mP z(Tm=AP<=p3@&3rF!%tq$OKcn$CMj2|i+|6#a$Z@{_^Rx4zS=5RjLMPC8t+Zl`Of4N z+X*UbU;nVicdZ8TcdqIAsm8Jz!oQcoonZd`zn~WK89m>* z+&te&XueJV((1)mnpDyLS`UU-(08w|Q!#X{1$`6TPuxz>4Sep+litg)UO>$0}0kEz0E^E%aYUS6!`e7#96rK_LK zeRE3n#Z=L4Lv@|DPm-a1p;6YhdF)d`?YUIBI=-5Y`*B-%X+q7?8>-6RPE`5J-&Hj3 zc=h!c6Kn^~uKp!bnsi+`aCCBXd1g!SJ0?`^KE#@$@1%;Z;(Z@2KdEB+f_&=JhNK5ovz{K3^o4eMvdRqx5ln7GDzUNlKj6O-$@n!swmLPOAYaF zL+}~2#@0s$BISpyF}{CQtMD>eP{X{Q%~PxeP=7=9OQZ0TikA~@qwnK}sfx=Xo#zYU zG+6143j&^7G5RuGr+VP&5*=R<^x|M=A`Wj2CmGX^apXd5CQ_nsOWpX!zbj7s*b>}F zy`tjJi7ZrEt-ljz0_Fz8qtoemN%Eh!Gr~)BUGLJ->tVSKq0@25focZQKfQgyHp-ZO z{6?Sn)(7ktEa5nJTH;%m&5#Y{jP}O%KU(8Phud7^y_>DE8fwfJY4AH2>hMRs`FtAT zbAP00gSSIN&w!tQ3*oa{b-p)Br{2ht*gElPZ1g@hXsFUc*9#RyH@hcC$DdWBU$E?^ zvjEWkqIylAM#k3X3rK0z!Sh-BhQaZJ+;F}K;VV@EsACJ~pRgZ_ng}8z)7X5b8C-9v z0+>hnkV<#?8ufM>{k0j?@7_xAf-9*(XHZ^2zOx(AKTv*hrG}ni)Q{L`+OcHW7^Iul zD&NXf5&UYLf}~E0`fJnK@9IHAgZgHw@Yg264;!U}MB~1p+jAJ6k$mV|0P;lT*Dup}*q+OL+Tw0P&V)aQ%A` zJfU%B;QUbu#-E9oZ=!k^Tz})TVt=<`1@Y}4XHX3)_YEX^_lf-{z#WAv0^6#tbJYQze9#Gw&qWQ2^yi8PoYn$MH zq`LMK(&-%Jc}s(I`jQ5ndJ#IcBXn9%<9kpXXsJa7h`gZUq?76vZ)szSzVm5{_FHKN z>8r6dHlL|#{%3R_n5Of8qk1-kJRSbUR`P{&qk0&G?$u0hWfT0J7Jtb`=qJ_3F~fD} zuBeh7p{mUZ>NOEd|4QB%8_jo-?Ec+m5DzsqjzzNZ-fP=6 z<|YZs_eAHvX@YX2gU0j5)ntBBoqwaItRE9ni_a{B>uZe0b2Pr(2#xPom;G6)l8?-^#+TsYjVmo%w?veYUM(%0DwxgpZ1{Kc`m^zqVEJ?`xX=QPKOUdZq|4p$6;K)tw(ySNUr~#Q;@7 z`}AbxvAORup(aAA-RkO^C^hG^5}=tmk8we^xim~L!2}abFu?>9OfbO&6HG9{gc=5D zKEFi$>pnGj5vvnYFHuWOEx*@@cickbZp+Y;J}d8P|NYOlHTPgHw6{B5Aah&M8E@0QWQiKybu%x!2?0?`=#A&n@KiD4=9-TN2jydoj3Dl=FOWo@4aCF zCAh3^G*rFuf87Qz9)C8Wyv7%)CCF#J+N9;Xcj`gtvV)PUb^(y21b_%2!zr6L4LF;A z<%u+-W3ykH$5s;~vY1VSJnIv-&HQF;2aLdF2?J=FpcsOLK(M-oIP636Y_{vB=Q@$g zWp&uIvLAV&&rRQ?>qj!TqAdX_P7SkZh-c!q4?AqwrqiQmYAAZhvcf1bMXMYw)p9=a z%2x}8R15A#hMfcHVFQL~B~Adv>D8KljBci~@T%f;{FBA$j&F+7dRkWx(!SHffz-XR z7_mMQ^m0DI=D}Oq@YbWhZ`J(Qw)ZVgZHdJnG_n@w_h|3oVWls%cIjbcb@QI@G=HBt z+5jJm^=or%tj^I=JS>nNZW3v!e(ZP{d(YmlIGu!z@*M2Fi>03B9VgXwd|=+%CbNd{ zsAgB*%Uhg2uT`w~Q-S?~hxgL?rn|=ZDgR;_H&smspp84SN$C6?+WT9yaeHob_~+4n ze=<3+{`&FD!S&|qFI*1o%}z9k^lLH}NVex>HGrKj4oGS$)KjoZhB zf3AO5!xH#he^39e8&=OgmcaJwK$i1;6ZTynjKApL#dv$id4o)Y(AZ|vP|pjGj^6Nu zJu_I&ak-snssIU+1Qg5B904hswq$f1*|&^Tlk%9>@>-!~Jd0_VheA)hF|d^$%BW{4 z2B#C*kmy2!Q>K9gNQF`fl@(kzNB)s<^Y=AgyDTGCfm+8q%+qgf(sf6A=ngpTLSZE& zibsGGc}W6-f?RH=qu}3v|2`p?dn14Dr!%c*gGEHq=@e`ZN3KAM zl0uLyNfVUX@QL&je|LL3!${bSL(J-!-Csa zEC)lDpgD@+Ibo3Px*V(9jhuoz+lfSFgw5f0^|m?WDf1rfJ#X^>dr7=`ql-+NI;&Zc_>V?qI}m-yDg}DDYH@eqdXHvm~InRHVrPnj5JQr zG(ZHSaFirQJ9NyZ(Vm}<{O6kL$RE+~E72Um=O*ea54*hOPeYLZWD$!to00>DI0Ez;_AY0!8yWm8*HnE^T zvgIP@oEO+1q%Ey$-G$-#U2E%Z%@e?=Ky7ivV|S2h9cJH0%!K{-0? zF$aE!gD#V_!0`X0UlEob`a7epy#m9F1C9q_?K2tB%cy;L{q%ZU4C-Yvh5kL-8EsVF zo(Lb}bjF{XVr*X=E>0+2kQLAC!&g#CPc$)-WhjbZD8SJ?2RM?VAui0^s;z`y)een9 z@u;WK5Vz7WgeYT2`GOOYtOyx`r3ga(qvh}glg@0ap-V8gTVibw@+^7dY5RD2K=3M& zuW?r7&UPrmG|`ragz2OhX;oIO$fop?T*&SoiCpezR~6)`xpqSj@h^QT%ru8oOeqw{ zs07W3yvXKXvuxW#%@ePTk56pToa}jQ$9H$!woGSR^Mb_+Cz6GHtK!ZUBtk_{_R9bg zOTTx+_xEnxXVC@i0T_z55%QJS1e<5<=2xcvI6JKLLem@|WR6f}f{tE#$@NTldk@ne z8BSpU8Ne|#$1sp%Ns7m(@ZFk*rNB_Go9g*+!MF$4tqHpyAqYv~0hB0Sl`3UFVllZq zvsSNsyuE7JG|2NL0Dz!L4nU4%@TT>+tT=UALZfhbp07Qv#hA`vyG3CbT7tfYgQ2%Ns@1Lxuq$Y~K(ew(aEPHP24zl6x&ON9ds2;TWh=`E(Wq-G z%a_9Vupr;_?f%c*1%K&Nu79xNJ_j-!4Im34BTPXBNa^Qi#bcaSH)?!fz@WRyUlNnz zK@8#$hd9I`4snP>%!2vto*`{+;oi1|l>lW1QYsC0&XY`rQ_r5Yi-+%5jhZIWYVIk?~P=QGoHe)*MgkZ=XBR>W{FyJc{5EjR?pgQmK?(p4oJ#r}ak@ zvaZk7r(pk3QxHH|@!K>Js=_b4ejM0%WOZ7_)$#K^ckaF_v)wyQgPUANOT)1|WJx4( zkd<$`>d{-us;C-cX=I!WJjCnkyf^7U#JHnCYlu;j1&PMzHowWAW!yC_=x31ot#h$n7-!j;p9exzb6vL88 zM2gHtKMEi6Y#+5E<7z|)(@AF|#Wdk5jwLyQg2Hg5A}6xT=sHzJvfHJfEDOqk0}Xy^ zzxnypwDZ6Y12q&6dtTkYeCiMNn;LhwpEr=Q%+V5{A)x8^I`4mLWXD>1T@Ps|w?527 z!e{WjysX<|TI$KXyk(-ivU#wm5j623O97EpC5e*cIu8$RQ+Vw)mJ20yEcHyPe`x81 z`r-9&G?GX_ND@M1w4*S=w9M0}bBopYnGFvfB#B`ek>+@n4?1{wK}%~y*^XtNneXS1 zZqqw#J4lHDEG4NdjQ((XnWx`dcT%4;(m691RIt@&dZT)C&wk0q% zp0AI4_C0a=>9zB8L+N&*1wYl{yiSy}1wd1@Byxa2jQA2eaqGaE>(cQvi>U@k@#j-7 zQ1F#sELBrZ*%_J`z)ha;3|c*cBH!5uX&{}1o~0tKEIJx7myk-E9$$ojY?6b)6G20T!a0vY*} z`8}S@yzWiQSOZ*_#aOonQNDM5l+rT9@~bO}?c*EIod)mKv_v<4b?AZ5{YvU{Qk%2W zG`f9m3H`gCexv>VUW9UW`E_ZOJMr?K)+JY)IkL_}WF7>tURWK8!f}+$LXxK>rjm3d zuXuK=3ftlh-2$zQ-R-Fh5P5@MiAY>6qGGDL7jYoFB*rvo{ar=S56bJlyJB$K& z&$&x}+u%v>GHXoN3A%BH#~gwp5D|!$6^0=QUfV&*|B_zIf0Y)<&IVA&*#*R~1%_ z)kb}j=bt%K3r^Pi-uFCx$I3guJxK&JgtC6+JjaqWO$l-~lBbB04GplnN!ZI~bI79G>ae>u zC7qeMWz*bR$(Vx1D2>$Q_dP?HfA^eh9^Tsp(UM3LA`Mw0hLfBfp2QwGSNAO;XK0H{ z3L#O198eU_v*ZbW@_1KD`9;i~p4Hzx`g89yslltaP017Bl6}Lu?$4)LEK!&EiDz}o zpC5p0(t`=4sFDDw7_3|iJzMYp__@c=md~)80)XULiso2h1j-TZZmT@9AQuT)$lY6X zA^-o;S7o=S^PfG)Z&&MmGd7`A%+dO$a~>oCLo0|?845g1y>;#T_tvhRrG4=7kAZ0% z;t+@ONV1=K(ra$I`VZCckcSf?V0cxc6dAVtbo9)MoB)63xnbd5(rn2Nc1R+>m*G
    UW1A4YfsBs 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

    pyyOr?_F%!?vf-B1S|D&-k&$ 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�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

    bT4_%ig|fR1zI!OfcN5Z# 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

    ckANJkoWaxq4ZNxI2!eA)x=x_ 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®oOxH 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 D-+QAd=QF&2(?PMF?ndxNBGlNL0N(*)kw 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

    -SY-)%XXS+X5|+xZmcO&g%RI;8}VU;K>CLn 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

    smI5%bq) zbt?4T=I=Mw@#`^`_xzJ3>9_h+dfH!-)~eqi?EA)yTdcqLe~rS=4};AAkCjsx2WU#sCD;uy#MfwTZzk%V?GmJ{HrONK(WMNB8j=uIIl9?9ms8aXlEyW z$Ds_vHfTWg@Tr-M=R1C>S}r}4XG3zivtfW^%Rpw0+%dfDp5gJClid$;v~DtC&=)hq zS49Xsb5#v?6wbVQPUf4ftYy$Xs)*y=Y9KeLTtQe;fTHmzb=rV?8vpTEYW&)QA&z@h zw6*P5%|cg05V4lULOH}*#hah+4#aQXH`K9&-?*ZtJEGuTl8M5rRK*A~v5PB4I=l@B z_R3jnFkCxBJFToyoB#z4LmBW8z*av7HVyBzFS$XK??{PpH#caq{e17T*E(uH`hF`< zmcfQ>OR>695l#Rc<^{3)82?b}_vVeGJ~2=n9%z*F$u}}?&rf|Q!KEfBK?(ZTizcsg z4B6hX*QBWtz#e%{U^xJSEGQ7-hGI;yiH@{xO~;L_6A_{wVxnT8B32^j7NTBs{CTR+ zXIqhh_qizy_g(Cd#V|ZUVxgZ7(tvOM{x3U!o>A{#KK!C%#oo*nOyE^zY>C5bR6om_QARnjPQbACt2_g2=Wl}h-a}lz^fMK(H>Os zs?;YcLD#aL6AFAEAJBf9{{d4Pwj)6a`fr^mvg4a$|8)6zRfEurjnAJqPQ*OVFqjum zP@Dj8>{f89Bdyl{qTgy;oB2Z?5(HR+5dxSAiQBVWzr|0qz*$xuQ`<;8az5>7ec3!6 z&m9p437pu~Bjpv{M17)%jvwe%X~o0RjB#`=xM=O7Dt+}QaT?NuGx4DL?!Zv0czr=N zw6F4}GM~@l(I{|qU)`a*y{5~0$wiv<5Ftz;WEd#+&+Ad-5y!ec z>L9J+rlNkw>rMIq4TK6ES$PNE_;YUp$Cw_sZBA{}bn_INmu0Uq)^;TR6+AOl`s*YT1&(5=v&7jS!C)$Zwj^4sgG zf=Z6PxnD9Z_xJLt)h<=V_P?S z>R9J+rM~*M;hr%f%o;`rZ~$V&if;cvDR?3bDhRmq-8U7xY5Z_W<631y)~z+o1;fA0 zNY_S@I-YLZZI0@-p82Bc%E(6f3Kb~OBrI!u?Ci)y$DHG}r#v3Pi>tLnfW0{89!!Q)AZ%WVf zvPiN`cKp-%k6SvuXc=3A=P&_?Ay^Oyhfur%jmeIgJMz+hUKZJ&n2{7hBuU@|IevTM zyBq@=xoocGO|3^hAM-2+1s(w?j-|3Br`&kMv@^M`lWbER@82x%Z~L3U$d@r>HNxKs znA4!9DTt9}bNIWQD&TnpALHeU-(!Mqh(6D-pe0*hPr&E)_}xmZD{8ur9Y!a_9OihIquv#B7qp3t2f*@-sz?H5RZfU~^PlY)l=a%ROJ9t91>s~FYBH7- zK~mzsg3NK88lU#cj^`SN5y|H$nvYV^2Lu%$#H&P;xH_$de7}A9C8Y}eK}qFPGnt>a zGwu22UZ_+0zlR*Z-Tgt8Z{IY&ep=0NU$1cxV1!gCU}?uMoo?!S?+clS5;$lHN>G9l zl%ND9C_xEIP=XSapah*UveuD5?0CQKfU6Fyj!CfzNf2#AVPy#ku`693aZDNfP_-VL ztX)+gLM#LMpp^;Bb0JWVn=;F%<|-a>9J{D#&9}A~n$s|P{(J^A$`+z=kY^^ zV?r5h=rXDkN#G_=+`dp4ffrh@0nApa1~bRnO~0o=lI9JVC2J@ zhW}Qa#y2eHIS3(-#q5Bjj177h%aStIFVZ}Bj$6*76*t3q*0H70KU=Qt+dp*e#UkmC z1d7nr=aY(p$Oy47*AS6%h^XX_#x5lBD{3guOa*J3}%6o3n^f2*DOi(T?k2wY+28q3V zUQd8})NJY-=T@j+RL1xXco!Xl=!*Sa7r$J_IHdA@u*NaB>z}7yVm&9FC-Z=pSVmBpnET{S$6L1M{-QozEenpz zHq$GQ3Bq9YcL!o0l(!rWR!_|4ehH5yjQI+fU%u_A{>rTHKb>#Md%)F`#R>nP%0Nqusf zVZuHkY;-A1SjZw4hoNx?=jmhqZwV=z@;_E@f)aEl=50zPe|Nsp z1jW}MvG!j|CF?y?n2X7Y7LVR!9EY%g5)8 zH?Gzo%+(sPJi~J=Vu0wUfv&3BHF&2VO8td-for^OwM|;5JJP3au5xi=1Y^7sf9OcA z@z%?|Z$ySbBUF51Soaf_VF@6d*gtqLrasYM9Nr)p1Zkj@Pp^EyoiWMryWQ|e`@|$N z`XuRWeZw}#(`{#tzIARyIjJB+j0lCCz{1MQNk4NaFSkqYGs-}A2?GIFitM6NSrV{{ z0VYDNXAV8qVn)qshR+u^b;^o3^{?jljl9)!gEs4n%N=7qMmuqmRgdg+ytM7hi|)T) zh_HMiW(Xz%0<1XR9mwtL@dqT2LbDZb0WE$*)+9#dc%D@R`9Qnw-8(6Z(pn~#tL4^Q zUZeh{??ycGrnR4wv|N-!3?IF=UqMZg0BISeqvadyx6m&yWyR&+fk+4eZt zpPcr+GYvC@X`$^Xi;u`7Nu#_V@IY06edNAI{yx5H)z9WAA(qXvfsq(F#KC5R-6 zGSo2dYCL|!JhXgSa>^MyYJPGo8hd=4T)naN79Ye;018o&0D-JBFT8i_lJ^?*w;MbA zi+alHsiFBZBjcKb_X53Rja_4kJ|T9Qo?FkrBaZQ7W!uKxkyfqDNI{TV$Uun9t9D_v z@Ts|`BaQ>x-srcjTI9PDtEp5W1OgbxUFjFcj?JxWH2f`cFebookf)5MQZ>YtyGxVs zWhdK?IY!<4+WVjVJs`B~3PwUJ3G`SDe$!JoU5fQnk2!jOd*3hjt+Dpy<~RQaFk^qR6rm`yd^6hy#x_edCyM9T^=uNQzXLlN&Hp)1_Tm zHi*!0$)9fo5TZSOKCiEOijAFhR>PZ}aEu>&e6aYXr3znTC{Psz$+F6sL-E9ajQ;9a zaO0|FpS>E{5|lDjMT!g=8b^%HQ;r+o*#DI8=g12MBA)OXKvZJ+*vqy#Kibyn$Q@5+ zgqE%5i)=hT>B-JX{8!0MszmGoAaE=PWle${iM{AdC%ep_H1D&Bmt%l{#xW|Z$vm$7 z<+!>tt<~>8Ol)o(@n1(c;)A%fszzB}k%a}_-gd9v^RC?rPo$#EZ=D#+v3efwLaSog zGc}w!9Rtf?M#9?c#y=u8ozDCjnG1(mSkoc4qSkatwpz~ixBfy- z)iCDQ!)118{gXNs5=nxPK@x_N*6*R6&))9%-EP={?XOclJztDlE$90WzHnLBJ(q-z z&1p~|ju#Ll4AL>(vI9OU<#+Yvn6V$L#aVf>t+sQXB+aRs7ZGiYRTUO%R2BfkofWjP z+Rps9PrdwnhghNm2km7gjw-UmGKuKG=SLo2+gWrgTk}>W;=#ca9#X^q0UhX9uMG0;-ChVo17yg~7-=mtVBV zyWsh|Yr@2+Uf|-5y3VwnUmsuAys`C;7-Y;;L=;XyEW)gL8*CAGofkPf*IF>=(PftC zavWg+C-5+M&wwx_R1&Wv)i$#fRM&UHKi(RVl5I#Q-$;rmo#ddRXtKg^3M9{LowD(z z#(PtSmG0UJiiKXb*liv?OZD|S!vizwKeD8gYz>@SGM?-|f9}PWm-~|A-52Obi$smn zG>ni&2p=;zZUg7~j_=fbVWPpu6olV2fQ&Uw5F|#1q9TJQeScIJf0|a!to~Y9$zaV^ zcibdf6X(mz0|N%$VtL06UIt|>06|uXm5*SpcCmGQ6X!oCQ}~BETo!@1gn(lp3jkom z@jj_Q7oPNY`vcTNeeVzHQnl>P>WzEon>xLC)>iS#DA3E4#Yko#l^Mot`=4%)Tt`!9 z)}KGDsP2df%#>o8g{q=JjMaxb40Zm~cVLyO=XgEXZOxqPC;zbNo7Ii2Wi&ycIZPN? zV*v$--ZZXBhs}-pmpaOtQ=3IT_BJ(lUcJpTe9<^yJy7|OWdXwhj9?H2Uh+{-AeZ{x zHx&m&_ffy!?e&;rrtO_jU@x17*4)yW&Yb^K8)x!s8+;F6*(=OuRSBfa{%*Mk)%>w@!k0Mf{;~Y>W1Azd z9F<^9S%p_*UNEm56m@lWaNgHr^Rw%2x8!?R24EhtL5yd@upzM*`mZSYYwk&rKzO!v2T8V$&M#jRl3KU6+<9dQ(%{WfQvfpWyoLJosu|-f z>geo#*V@(Y*BVGp8k65Y-T$-D(^<)di`@a;TBaC4nrBUlEO97Ht))ucy*>R zRNDupluHeA{bw$Tj1${tKC~@h?O}~j@Sx%Z!f}uY#JqELOe;BVdc2ZqQ3Y`xYqEf8 z(=;aB6CfcDX@rwF5Jx}Dm2C zZQY(~b9PdLTBe@fM1uwu>7`WuJ#zpQbG}BDd^9GeN|bz}{zUzW`V;k^>-z0Bmvi{W zgMWU|&Nv$eCxyAX2!MsbSeuOKDa^|Y8ZQr}8ud|+LZ6tww0DgfG^s}g55&|M|DSr6 z%1_Ywp|aPUvMiq6*2Vdoqt|GBkSK2A$7=h0UdJ^f@)>rj>q z0|ZbkZ51F6MFNR_@9F34+NamRULP1$j0n5Dp^At=fh0(D-mGf|4*mYJ(tyiX=%Svh zZROKgeV0x*Wq?y?-r@V4eB<&`#-!G`yhs{@RjkQ07y=qk`+oP!Z^l1YYaxyl?tN58N0r z%9KVZQU!sN6sTB5nY!6-RmCXhq}nT+RUKU~w2I))6m-Sln4lkqD0?Tw+VW)E_0HC} zZ+fo5DC7>Lim7oMAC_xEIP=XSapadl-K?zDwf)bRV1SKdzk?6E&wr5vq z*2nE43&drX6(l-{95SJ3T0-#e~E#U3d1d17zKXlLE8zUZ0U zGU7K%h^i1ufC4QJ*aXFyk>Z_f@7X3|(W+Ds5E)iud5!@DvqW^~7lcHgS1oIy&Z+f3 z{pGjCrD%kwYmv*25~3>42Ene>iU)GhoGqT8ws_+%L&s1Chs+<4ayk`Khy|7BRbFCc z?aRXpmpaE(Yw#ai6-hR?b7WKa!nZ$#am5d)BI0633~)QMa`*MvH2ZQrKO&sdBO;hU zo&~sA;UeV+qur=Osb+v%Jlmwn=hN@{wc4e6A$xSs=IeAL4#PEOo~aQ==#X3W)^u>j z_j|*T+Wh;9{?2&r$tg)!^(&t*^$hJXq@e~G0ty>pP2Ef-I(sv%+npH zDuW2iYMP)vyJGpHWwFFQC*@N!U8P%d9;#q7f#vkfcXqgOOuMyz8#}_|VRr!B)s65Xwgk|K^X#*~cPtjiB zJaF>I5s&SScpeA>$0N)!0z>0a0^jJ|_j+oJ&Hb#=Wms0ggaHgMKn4I1znOr~Id=P2 z-#gAoU_%PfIE^w$V>zMX5Mcr5zJVVvp10BXn9*T*1A?GJkVXZ--5@O5bMwJ9w)C^K zE!%B{&JHKOJ~DN+fdN;>7f{v4iVP-8PpqsT&hPJR&D$i~IA_s-_mijRq=!8!V)t_# z=X}3$wWnOWEFE?bL>z}Xj$s)Hi4gzP8SlJt$9lEb9T6u!BM>4hD#ygd2u*O_`cIE8 z-js+%s{*eORYM$5;)u9b+9w71`$6B^Qk9b zzx|mlR5OLmGfZYzGIBhWM|*m@4emQcfrJ~lru(wEP(<*3@;W) zK0h^r5?;KEwnAH(^kMrdjo3na6V%Q+_0IMe9jD&-GV+B(u<(%co3eZOx>YMLH3v zMhL=`Wr<++9gn^%PIqPv_TD^sU=(hJ#VjWwR_0>HJ)Q1sa@EpN9mm$T_c^=N zsy<=q&?pY)iX`*0#z}~g%?{^DQFr4R&OtvFP5i%KBaatU0ir}Eay%RT1I`_9b?dXF zp<$k1U~Qg{SRV5%5-1SB9@3`K4ZRC8+a>s)bF$IfZL^&3O<&w&ostorxK8pJNLTU)sB@;*yg6xpb@6Vo0+w0QS!+a z`Pt5YR?4?sw$0+x8NkK<=?^*g4F7yW|NI!{JEu{M5LJ;R^U>yeG-tcBMOO7zwmsqI zU`5CtC2uv~A9B{5`%}&fOJY0@Szcg~s_+DGe7whDvh88#fTNz|p6`cacI65L_jUV+ zQl-%6caNjlxl-)W)gN|t?zD2}HTJ$|l<6+Ua;9p~)Iauyw6>pW<-N@sQ&?aaNs~2& zQfNl~SllMIsdIWw&U5CRyyfdX%Z(#+Q*yW?R6&dcprmmuuRcFS=ofiOFDeQ~ zbgo6VbBKrp5Svqe_l<-6;L@zYZ=~)wHJ5V%+BEIbY&mx%u*L5gA*S zrwAwt!}Bl>zuN`QCi`C*J?WLmXknTRpvJQd!(gt*j9howJIR?AkS%cTz^~_Kjwr=9 z4;%T8!JHyPjS;9M?<@Ekc|U*FZZInk>l^ZY^};h?#`AwWS$&7K6X`-{w!cl=zxPLm zr6-&uDF6b5l-MWI)6Pqov}T7}8Zbath7Ow!SpbQ^A|466SPE4z+~*EZzo_I=Wh_;P zy92r2!a#SgN^|Oc_;lmXuB~R6HyDhLaf)7VV%&@!CQYyX7Cqm~UY?hZx15VjJEKv~ za=n1D`VZdI``Z|q`)uWZPfX>R(|TukF+J^^S@UnlmGvSEc7cF_fDlyWIPis*IpO#9 zc5eCIkT`A&yG~0?Pc(o~FsKC)WWLz+iVpG8i5>j}9(F9qWGPKGw6;V$==j@Pl_;8ObV~BqadvXc@Q>gHWLn=S(k0*`{ zytHLTOoKUCLknguIza-6= zR@azP^K`x@PSJ|lOr}8;@wG80RydngtG|BBgxaAuy|MyZj^DYQzr10YxE6+>Hk!cp z^tSqfv+K=6@444y6{e2^6$#UqY+LP|xafoH7B;i6Clg{84y|^c{OX>*3+{+4$rTtL z@ruMMf&$|;kXh|q-|N&DxRr6T>m^`w89IVgf)%G2$cd4i>j;W zmi2)njqT^kILvN)%lQ#@%(!%$wb2n_2+uM+0w_3vIJ42w_!cDv9<)S-dDppj;ib2~ zxS)P$6~QA5@_gAN%Pe?)_0niu#3m=?+jg3<*f_HKgag7OkmGsCb4WL#@c3z0pHC_p z>@9d$n)=Uxr`M+$1K+QbsjZU#w|c*#R4=hhp0&kPmV?~nY_)8^y7)-A=y-}KfH+i( zo1L>a96CAkxTWd<^OB$mkmXg#S%qqdb=TbN%vf~E?9M~NwOf-#7RG+*-|FmVllo6N z&?>aup+?d?f}AE1h2x;a+|%~yp3C}It9Zb-_nm`2e*PQjMC7oRND>5@V+AI5@WEu; zht6H~z|ZqOh=_^JKt`5TnPX)MnK7}ue9*XDYS5Kw|L&DwbkT>-mz&kT|AEhqVQ(1D ztW*#Lf(a6cSgaf$ECq7?-u73F{Cs8iG($AoY?Z|prX`h2y-Q1K=slzSdyfq&`9C|d zfoum}o_!b=K+qQ#Sp zmEfzz_y5 zt>y)`aFT4>oqMN$a?MSnjV})4C}S-Fb9?gK9y(MRCb{#bd@z0Dyv`>xYgr6QhbT>& zlyr7Kb-T0c{<|Og>H5f`W<}Ffq$;vNLIS?}E$74zXHHU$hC}YIA4ZJi6A^+O0x0N~ z00mY6^G`9?9ogroS^Ye-5B3mVe5Z3x#^>!9Tx&>CZ!dcgj}DEZoXAhrLS1;0l&%a#;YRj@)d60^g` z*UoJ>c)&0AxAc^&Q6ox|1!DydEOlCwgb*qA6@@{9pAn2!h_DS zQ{-{?yb@W3EfJa5G?r6=96L{X*lFL{rrtBjXD+&X@CG@+JC3T^G*9d9^(ayx_WnNZ zoU_(dd!y1e!T|;e7J}DR4h1n&rF^$C%uRhg+)~bii&y-Zx}Zi{%_xeQXwT!Nsul_# z*XF!%KRwe_-UA8APFj#P#oj;tMlqw%YMDFhQSN9v|IB+DhVQsLxKT7)n0A+ z^nGvVRBxHMv0C)(N#};i_g%N(@Af8HZaKjT1PtPNhQ%eYw}T1-Zm&nmEA|qp^~Ib& zXO;=Nl&7b!RE@VOe>&lYcdnmT$Jm8(!|g&exDI)RN`lH1??P|%-_!2L7PpiFOjpm0 zEw$Og=dFDx|8hR?@rp-}ua9I04_Sd{k;L$<%2d>;^)F}9Gp$bC*&wptG)GlcQ3Z}C ztk#QscI~eGKIyeC*lG5+^UF~!(>n1TL)n_rX~qI108BVWEbzJW-ND$&-Mt=vz*ndQ zyuLxc`ZwS3$AW`gN;OmI(bA+iQ|qtz$GJkRJ?QFrEkf_O`bPxet(82+;%5-3~4i1-Z809^4i=)k< zbjvTT;#$-_dHt(L!f442AbO(rbsR|ac3YaO-U#oVPd^b(RGKd$hKs$ZYOamHv9@u%fHd&9AaY%O4s1SkV|35REE&z3aDZmaFeSU0X_Pg{3ueNDv6F(U|= z6BrhXSNZ!Y*~M16IW!QIN19Ow;vb)Su4a4Y^~(FpU=YIU(K(4_6@(QGF|i8ZTg~D! zY|itheoBgRE~S*d+tAf_ZS6&B?a0a}peYJa0EK)UcC<}gPd+&0gCk1hP`DE16a@kd z1X+6S@Ux4~OeoyuuIg`mq#aH6Zogq;B*6gIg0}?@2m~k< z6$~WXI=RSYpZ}b$MhdQk;tj6U$;CFg@3|w-8HVhALg%mB6Y!Qo0|^WU0>PZ96?&AQ zBxsN}P|Bw(e`|Z~EwxA4E=f$4N^QBFTwS!mi(dc9xD?zU;fAL1G7DH43#_6IVV^wc zm_POcir|i1Pu?@&-C9!(>#dz(O#*lh3kU=!nSWSeK_0y($Ylhu=dup z@Tp;hF)^w9^Y}$myzBLxny04DX&%ZJpXNMOLM2%sKww~rPVD=U_k7WyjB$Uw_42MJ z+R^N*IvR_AbVj%(g9!^+#DWrWe9-M>xHdHRuGKG8H9R3R^tk%H&hq=yr#eRfeC)c2nKF9Nf-oOTrpXH-}qTT zPrK^l@VvfGTkG2D+x6#)wx1lJ??WKX|ivcZ{ci*PMt zpulL5A%rkm&*wgD)?!A@YX2Sosw-UkhVO81k8H)MsIsI;5{4x9Fa&m6mh03l1JZlW zwuYAmtiW*`hj^Z22r&y7H|pn4nx!L>!*yco%Z+cmwUhoNjB!Oi1}wue497sx?^VXq zKu?e2Ro$MPp;S_GgV8-ce16E?hbMkn!!Wq8GL5oXNQ43LB*fDx1+?YL*aO@H;jB*iRS=^N$C`<~-nr*E9^ovHSl@9&My z^X}UyO5R#H-OKg;3gHW-Wzt|_NQz2$F76Zgd8p~Byp4QJbW%1|T z+-tH7Nn@3e@i2sHEDv{#;Yycj69vl2a0&>C@IVZKa#e?7a`GeVKl zHvh-<5mo*p-|=5V6nxmU3teeSqdlKwdOpdNMxz~3%6D7*&XCAWD05_mBdhO7H_glR zILEzVnB(z$Qp0~)xmGm6mY_31lPr(0Rm_XGCatUN*zcaG@|}ls~PaoJF#2nCrf8v)3Jctz#&!r(1oLuoetp zIF5&qMPlD#XWgrV7w=wfny32BrXWi$$_$&DYaizN#@lu0cln06xFGD!6LJ`G5Qsji z75eE=T979xRPFBdjHA9_oE*O&OvwxKg=gEB^mMZ`UVSyU>c=gur4pq=Gy)VxmLwix zg?Z%2%7>=j<}QUXDTonGy`MdN-s<@p)9=l;Eav|^E%IwD=jk=B6Sx1!{aIKubeVbd zSras?F?-6+>`>Cg>cg+JhrfA@biH?U)$8qlj~sthlU1T(l}DULDjI)vr0YK0fu-Mf z8g99YBVDr?2r*9>mM5YSu`0VLU-sq&jYfNTmEs6vQqZiZyEi}hckGw1YhBrSnH!GP zE8W7v!i{QB!ZKk20;<5DeBag~WooGp*ce@pINqYJ@wUkSx1vp^>$zF}XI492WXji# zB1X@MB8p3mk~eRHR>20YbuE1J%}Hc%9?Z>!&oEl4*MDDN>xH~|D@m!dMpKeWUZs2Ee_`Dgd%ru_Y` z{m}$lm7oMA=s!wjg50|X-L~`Z_rFgIWq-yLh|IxH2Ru;`lj|g#+qHOJ`l5l$>zS^* zr-N^E05OsTp-hOlVfd(E;Df5?`1{?izSF;)pVi9n&g>Jyk`;pwvsh?##qpQ!`jgZ& zIDlBuheLaOtZVW3s#yVjzP=PYUge0=DY45*5cJK_81J$GpCyy z#KvSXEQ^g9WRve+edET0`LAZwzQC7dip}GiQ}_N42jxe!qQ#8NV~u4LisUn5MeA|R z>)y8cEnN+trQ5?8o)^2V5h7sGM?F$LEsm(#SM@tTK05o4t~Oi8#O``t=8VU+YG{M^ zoR7x@E(JNF0IU%}N!$?P9+$ftGjB$I-GtHSpQAS=Cx6 zCT83tP+tG;a}^f8|5vY3y+Ws13`%K?Fys*{5MJzF9QnrAOHw42ijt=&=pz&RoD8@& zteb3mVP9m~s|pnYS&Sf5VlTST^}@)bV_&V>IJD?8H+D)P1rh=pU?p?eKPFq1UF2%E zWNG^+n?&-h6EGxzNE}BYH49XSZnTF@LuckP&#p~rBDY!YIg@-kE@VAXmH zGk-bhTwn7-KaB0RJ6!gOHR^Ah-8O>ISU`XmILrXCKvKp^IW&kkHawU5==7IlwcSAg zen5f0Z}Pd46{pzlbWPd)!S*D%rS&mhIwCycfGlwkLx3lbe(=t=bDk?b!q2n@*j(O~ z6@+Sc$LO3i(xQB`Non^O+tDM+IrDRj?Pn|kIp66TQmfXR>BtzjT1nR9h6scRGn~X> zy6Uif+9SzgvMX_(Bv`@Xd9-(d7!ZV(*8A0ItRhuFf`D0~N^H+T9}RwG&0D2A)l8Gg zggI}JCyJGy`TwWexz^UvHvVK3YylcHzEpV<5Awql*Xy&VBnw zFYVSYXR6!p9q$=N^9%a?d3pY2yQ^0<8v|Z-QFs-X`FXFy^O;58L%630-UMLD^1 zZ<&>upHWf6fLX4dc>ql6YG|s$VCxmfn86a{2vQZK{`qwMqE^jErx>!tR8wk2@v3s8 zS+}H?cGzr}xby`PtTGhjVI6uohLdCgLscb;6(nv&_SCY?n(bP*ws*%zW<@sCl{Hny zkVBHd5woH0ml@I4=Yy`SCJ$cs^!L{I%!0tN498%|1+`W%ey`y zHndpNNdcie4dN52WK-&?K`R?()I8Vr#!0rvTx93o2QJOBj80963KW%LDPWY!MyGzv zHU4$~Yl9m`RIpM=07jBRp%O<3md9OnGxp2vGGg&avdU zKB*{h(&_g1@l`X*YI4Ru`~O@+t|Gfm3^Ga%hus7P%wq|p-0kP19mn`vGVbM#55)kM`@Aq z{v(xCN89a{d*3?f-f~yxF82-G_kU3$KNerm2_y`o0;C9t<>st-s$(lqrMX25?$8IZ zb!z1Q$4bWg@&4|g)HA!T&E;A3>~hy5*G*rrh_7JO7tBLMFk}%YcJ&7adQ~bax$ZnQ z_*dnlzC7m=+uX7Ip^*^`f4uUTV4MTLs9*`OGRF~FR(FlK;;~?az|3>DdA{hX_dM6^ z(Muzlo@fH2VpUTmg4v3Oez4nKaV_3cwb!hp9U|>l93VWx5OP5qd9P0$MkfTidsV7* z56al&BkNy&V%eMN#uS;ar`L=LU-?AK#;kJ<&-qiG^tXXJw=EXIp1@D4`rFBS@A~yW zgoXL4>sU&wFLr-n!4qN-jVH7&dcCXBr9U6u*)Wzk5QN28Q3z163NE}j5U;z2-@9}N zi6uY|WMx&x8j=Jan*-!5jPa0JSjoezqQ5tOXZ8EawyT*b-}W32Xxk`xYafU=T(`2d z*#Xn~gszhDax6{|1V9cV#E9MUyvo>ah3-5xh|WiS`EHLChy$N*gNq#5sl2||Ql7{l zz(NRk0vLiA7=l80nSQEWY*EDq*O!}Le(~*#tp%1W;CX=o0B{g=r=a1QchReG$F+cvN>Cb~17sTS+?0TTq-dU4> z>1BDM#TZ|FDAlNsdK5a`R~*bW&IsclyM)CP#KP*4y+Hv`C<6q5)p(?}+g-Fy;qI0P zBdeUDfB-A;M3H1BUaxSw?Q_?W*WS7OzMBkf$~Jr1E4>kuo={CeRAn%xR@#&ro64s) zTljp?8>y^_#w^^cX<`d5HVF^zFnwF0DZkRxuggsN?xy?|raWiLn?uQ5X3DoP<(rs= zeWrXZQ@*MxU&WM9vO@mQ>2K4&kC^g@O!)(*{Jzp+zi_R%%PT&y)l$i!Ndgk6EXkZK zR94B6Wc$i>;MD97PaSJ*Et4zf>=hIWE0hQdMH2&?rOKdLe&sr_``bQuHBS#+Sb1up zSOFNfJ+6KAHe8##yLG4xuT0o$A`?a>EFhs84Q&;{P(_g?VJAE(8amd)=ex>C5b4!s>){Tresr^6n?&!@tFR`HM05d zvnM}h8SsLEkZ?T5VHPq1!0}qkeB)a8%-z#}Vk{Q~3kc6jEL8+muIz&N#zo0bdq-a$ zaab4(DI`QuHKfHlEZ?{eJBH1A<#@z`IihM%5U2pvIL7;1*NXKc*g+dwoAxG)B@8uL z;RRKbc_P%h_`4%u$0mEz|Iy2Z-L}s~m+gN3#p@zNm@=#Y83A#C;RLgd?kjC$t!uw) z_@l$_oU|?S8~_4R09Iu{QS36N1FoA-96q?~fp8`Vibxm|Yf%SWN1sn0&}?=8O1(Ve{j99JY!H-!|yj73}!K6EC8%PfXo8)GXF*4%?H=mGS2c;NV5It zdgu2Z8#{d&;V3N8aERl5Qh~@x91X^U!VJT$ZCU?#xNYY;Q)*TDkFI_99(J$uGz+ad zDAGr`yq$*^2gUjqzdG`%${h^hmwX$zO6(P^vHz;U%JCWy;Vh&s0Q> zbl7DVuRoHu#E@Qw1I9v-F%bM73``NW*)m7sc zf5@5c2_bG1!T3Os$B-vt_dKtM8mWy0UNlX35okTU%ey%kn6kMr4^+Sj?diJpN?MN{+h@6%G7V zm|<*ZeL}V~jgxtSr;N-C4X$WAFt}x>R{GmcxVEHq^B+ADnP-HWEJz$H1H{CBtpDnI zYvhY>?_Ff*Wy+vRs@hl)vXGl|s_7?Ve#ki6<_A_w=vUWUAAgba#9vV$z7VUaOps3x z5xitte*8(-uIh(o)vs>J_)CatiUOb{bF}S;*W6at0AyZzc?RRLq{w}J()Ib6i7#I^ zKNj2<$^oKaR*)gmUTa!q$i;mY*F1OTAE#W(S94!~mABOPLBK+WN0`SfAsh+0aBUw@ zlA7ZJpYHj;T^~KwIB(=A>$qtQ%ORF;~u zg%venNwTGOnR0i}`swW~ClRFr0jk77PUXy#$Phgk-0IvY)und1^+3xh`!^VqXk~;+ zqyddnHI|iSiVI)a-n8Gu!i+lqnrl;)F2kqJfWp@X+UeJ!`o?mWL4}@xJD(0!vI8`~ zRr;sZm;OE|!$7D!;x5?>?$-Idx%wedMYkrYr*n=I^}xP&>6Io)Npb!D-oBB`G5(+S zdr3ZDH=VBkX32cG=uk;LHw`KOo>VbW0y`T4F;qk5Ycq|zvHJA(Z$l-2++b0kF(00av3)fxS4UcxRymIyN2i)p}LBY$N%t9)opzffP8>4sU4s(qNJnparLQW$4J~lyn5!NQ2#6NtnWpE%{M@mhCzY2z#CrD>U=>~-)W!*JwDeC?{?1H0MI zl>)|YYt!Y%53m3w88^{3@5-Ebb*8Zjy0o{KOAWd-<=;J1j4o>1<-^>4i!QpaMksr(=8G&x z!bTd5f0w?j%aN0BKWe`t;>N`?EGJRS1E|Dd-r1qc(}UVAZ|v+BT6AoNrWR=1ZvQ|! zj{4$3-0sjNduPjr`~ERz&zkUiC{QJh(BQNq%I%wY`|3$4wf_Y>N=muadwCZ!>Z0mD z^)+BI+l3P=1AqZWJi?;4AQ;}w-;HWsUrD^GBg?B^|NrbgcYGAZ_ji|`&=o=v=?EgY zJF~NecDJE7DWQqrxn(vST<*f%g%FB>NV6a!N)tg58)64RzWzWIQ4qm`VnqZMI~FV; z@cV3Xo8{J6}8Z|!r*AH8+G@U=85p7+uX8h>p zi5kCtAQZpOu@F%d%K*FL_7n&n8GEwxuyoDMv%DvtJZBmiKNE4dBoLa_x?Tv8VroPsjt{C#rxEUenh%%SFYI#m`A}et~ACWjx z6Me0A_OJc}{s~J(D3r{JEXhzT7lR0)zjf4-$Gcs%lhR1*5Em!_h(eHJf%-0vQ@P?x(z5CkcavMQNv)T{mNEt!qA z-Em|chd5L#p-Gst|CSeL#%IaJPuy^w2QH{!q6K^4)zsE z7gd!skIy^EEjttk_N1naUhAkpml90FtlM5{{eHcM;T85EK~Ru`f+$y+!rn0JI$l`0 z`E88~BP>Su4@pooKr9RGHwZ4(9f>>)3$j;z7R>j!vYl?<)OMYc$1Hp%S-U4R5j3ak z%kO?|y>HS2Qw{XrHBoA`BGp*S#|nMTfw%b;y8o}#jYqGXm}WqY8Re5=%qK?3C&ZYy zlr#UzpL(kEi$wiL+sXU>*`rG>hIeb-UxwZ zC(f)N_2<_H zPm78M8AMZvWHlwDBDX^$)u)!hifh||k-b)TO4PfCp5#rqpf_CUa*VR}a)EQp-Uu74 zT9IYUF@nGX96DI_OiTDw-|i@D(*<7)l3!{WjL<`ggT3P&xr3D+EYK3m(k#W%a`aUTR&L1uz3A>2cC|5$0LzFn0VTOoLX%relJ(U(_=DTuN)H~A zPj!OiaOuY|+hFHN)_sdkZ*TEKcr^`*5uk!d1X(!-*Nw9En{($Hby%gT&yNn{vx$-< znScN>6w~efj$7Wz{5-u)oN}&I^lLU@YX_(Are1t+V`4PcvsvVyZ4mYegO!T$CjsTN<1-)>9@~$kHSt5kZg?17g*^Qml9W3KoCcMceH=Lhg2nRuopX%9dHwdE$E? zG+)&{quxck=nm_z(|0a^lGmOJr?d(o=|mhy(W+jX-Qn`)VaeAQJM*w-<P8|ED zMjDMX90lymsgrcr(`Z~NwQemB}jO%1+B8mB||{R)HnOcDCgw2F37VjO#( zS4c4jrXTCRS67&)OO3#-6VOccryd47l7J8=jPm5n#ey7jH9G`)iR>2hDE%M~tG6|ZrXoZeJL^^P;RhxBx0Q-gCG zYx&C!j11i`wtcLp_oH3!j^&)MNdHfZ@Vmq+T1Wl8S=Ii; z`HVvx;`l5Mafm}4;t;=wN+Fc>lgaOTP5a;6YSe$TX@d3pcegHY(ckZjEyDDA2oX1(32y9FhNTcEdfT*dvc5xN(JqC*7e@!=8wKb(<=O` zv^jmaBjidKXtX+0ZA5*V^b|;m8krHDO7aV5AcY>=2OM+GSsRs@tozwO0X6XH}n8 z6!i7XHtce~_4&WX^~yP-&C2mIvr=Nb&&Y(p(pcaS%icU>%kwj?FQ}#c;Ds82>BSDE zQ#0B6T8HOZIAW}t~weIOeDi1L=Xgl?EPFm z2vp-BuU(Mk-VW@HTDiNxdM=^G^yZDjIq9QCAj>2YIY}g|&Pm@C>!zjmty@+SV?6Hga4yVuI>fv^IeS*v9?Wx`)`I0Z+gL`7hsSg|U+Vn`B znPVL)pLtE5WbEIFB>?~|N3kRWNSch@h2!nkNpE_ZqfYgMx2USlu12nA7&W-KU35>0 zUSoc)_3whtQ+{`a^P?T{9)D^#)5}5{eKL668W!Z+If4`gRjccUgb?efhA)L&CV@=2#B03_(Da zB{(+L{dt#l-wOKk^l2sjF+(gapaI2Es#&Go>6Qj7s>Nx)hrKs$`To(giu%yM%PQP| zsXp3SdnE#79M|w-~CU<;Sy`v z$5tl9G?u%qk3ZGm(9@Ia88+x}Ied0N!9yF_j%B?X&Pj=mY$@H4_gep$)H8kFObx3n zD7!J#fCmIiAVkn2$3pJuXE(0&_Vv`b@IHK(Sn=U6emPh_jN{E*$Pg?9kflhw(=Euw z0b%sZzSV5h#QoNT*K|AZ+~Q9DFKdnN7m`B^2Pujo>^+1$^$zLnbQjoVhX+f(es?U{ z)+P7N8hZ0Vt>fAn*EUFN8l)LI_A=aU1g0c{gKYHSG?rQ0 zOns)|+WYzk@8t4Y|ER%z1`1x^2rnMwo{TGM0c18Uw~olFyCwhe7RGc$sY?J-kX5r* z1UQC?Jx1qB>%^t`N1rYX%iszk%Q8?ADN?{j46bn#tE_XLd%2bHe&b+{r_5?{G$Lsz za55({xt6Q$Zo4%#t)hxi=@k^vmyY2<>yiESj{Zky2Hz!`AOaVeWC0|R42|G|@4tL` zXVj4$jD6Frv9|i@u5ou28p;Pa2t*7Z$skUysC>X;df1xKac}mm`?Wi>xh150peWV@ z&Bzcdn4+*mb)5a}>xcPY%v$&A>d2cq6C--LnHJuM8KxAP0EC2TA$nS9opr@+tv9q9Xc(yzau6Vv zAOJ-X9L>c_My|6Sy|<0m+n{wBX{jlcZ+@5H@wf}@ER7`+lQc(DMBUH3_Bpukw#3@i zPH^$4_3dYO-q|%z3(G+STP3UPTajU_%E5WM*73_rT>zD!9bY!gf(sbBabw_wS=-WhoS`-sBlHWs0fky z?|6g8@3;LiK_gIh*A2w5zxZotYQR``_ouye-+TMJ)UwPKtilqV)tTFmn)OPvxg7$_ zZPsL*{sQTKQbCK#kmbi8eYE!cGZbr(+9bn$vB7$B$>0M?y)_>w2a*jCl|N!G%OVmg zGR-ltXR|qP)I8NL{UcrF+A8j7Sh?pyPuOV$OXCRTZ`Uo(dkLYjxFte+rU>oD3i|eL z$D!NR<}uM=JQ^%X2wiW?<|BdxO; z1?CBZL#DwEx_s*jE>yz^?ZqJumoik=yI|>M_?&gk(K|o#&ggF_unhZn1`!Q8Kp|is z?q!B}+&La0SM@}g?auc|xVOWJy%iVpJa2uQoGQQI2rGG)IGGg%j0IVeD#dS-+4Q1y z*MK_ikLqho{vnewlMh*e!xSeljED!bmT|(Z-z8>Va@6@t)``}?pKh@HdgB?%B{`bp z5Dfsdi`Z9yv8(7iU=d&_j-nNTz5nHBUio*?>{M-nmKw~|FUH>ehj((Q5DWuonUO>xdS+~^HGjh1agCnPyn8J+_U=V+5f{lWBr2vS-HJGj@k<&MAIumiY(+*1{GnzD!G$Jjre2!ibwu&O*|Fh$%2l`|r6gLI?#QbC6(YS&ktX-cIZ5e-R8GVEl~D z(kw|sj;1+?7$QhyGBm5Wkr(TRZepj^?3wrcLpcKs`yR8my73OD+*9xg!&Tpxz1^PZ zCvul{|KdKI)+*tBx>6KP%QQ`42?qIejebAuvHpCh_xryJAr?*3E&;56)cLL$G)yd} zz1FSUZo&4SwP73xISfezgc?3eUS13L=!|J324>(>A@vg$_`m=jH2^^Sd6R zb)Hx+LTUslRXi^#1}pxqb(d}8th?T770kwjk~_*Y2Y^Ho6k>%FR~P)RtP^*=xA6KA zk;Hzhqt-#Tn@fw`!G;K!NJ5H%3GpFe?!n5)r+nkZ zBQw%l>Dt)k*R*@spML8tPLC&>E^8=Vg9Fx2*xbeROW_rrI1x)U;1n+Ui`!y)-@kuT89jO$kr3POjp`X~s+@W{S5iIAtEiqc z{sN=?^QK8_#u&($yBf5ky#cp0xGwbHTU7gV|B=;v#`EvyW37To-;h!3B|=~rf<+W9 z#;$Apu{F(i^pVDsBLqC9NQDz1Ly9!jtoLnO%c6r;em|9cZjQFiL)I^DQf#drYNgxq zUdirPelNaYSb||0gjmMj)8Uoeld-3;subZZrcbRorwfL|tf2W8n^V9y4 z&RWH_&%RilpBX@P9ZyC370IfoqWv(c|5Do@afri(xz)e0-hb`OwcouZ>@@%tglSR| z7$P`m`ExT8466Rhdhb)OZCLTWc8B*3d51HAAOH!mOcKn0e9ezHWTYl0Rd`rOt?zx? zc+)^RoFyBQX@!9lg#-pwoh92h){JCZ+wW7tPB0}A6fMa>kjWtZt>3uWd_NFC?SIGTtkU*x7p>c5$j-`wLJ};EMVTT_wj6fnEvL7Zo1Oi^ zI!9{LdRP6DnA-`VM0~2+$P~KfuGGMR;rcIHp?#C7-PB_bUtt^HCtSdMk?)JruuY z!$P|<==F*)<;?^x}!@B9a$>TFI|A%;@0@F|^_p zkwpdrSrJK=p>oDAo4zDHH?90CJSVN!oM`EKWPey1LLjh0D_EciE(VQ;zpUdPU`G9( z5Z=(9fFw()uQn0}#Mi42ozDo0X4AjcF8$%>&9?K}YzIffHZ-)yQ+(Lt5}d;e^Kf<^ zmWrau4py=Yb49mv=sU;84;|DoNseQqIK-hGnCX;ttGu_}R(soE%v8qeo@Qtou{3GN z9*^5I(t!(#+>&_pXsVrIJLjxN*ymO+%NP{gPC;a~2#O>j%TTJwHXG*(E}ugh;&D&F zlF#nJlk&0Gr=kaM^bb`gTY<8<1M!jJ)dm=bB{>EXG>IyDwV7;t=Wn-l{qnjHY@T0l z)c^8{NSanrHSO19^|>XtvzI#OU!NU*Z_e2Fk`pS7jLo+B&8aP~kReQ)s7|iUVy6EgcuG% ziY2L-oxNC08MfWef3|IHPmL~U9@2CR(NJPJL1b7~cwyRiyGC{TCZTx+kxOOi8)ruO zJ+qSAHJZ~5TkYxfmiK+4byy-!7V>;{lEg^HSSBS1?T*|$XY?DthOO@VX?qus3Gs+k z>X(876iw0`WtaT^hl)Z?Pam=4>!IIYTQjB7Z;6_=p=}aJ_1e-Pc<4^qV<#EXo-6pU z$00Z!Q?Y)q#x`(uZGHayxyGPw;amriq9m$f78+qi?>Z>@5!AD-elKgv>yJmEz)4zw ztf;<9M!RAOrY5!-pG@2O!kg{Ftr%ojnxzq-ioFtL=X>&;`Q9Fa)9LMftllP~(at1o z*}nbE9FUfG*_zlMKYQbUzy2@0TMn84NF)>_VJ=9G@|a=GAAGpCk#Z$4wq~v6bd7j0+^Gy zA9`Bm4LZ~`(a5$?k1Qe`^(2Ge#R`@RmNzE2n%kIBH$B%eN1LhVLeEr@f~8ETCJh`% zkx=dzGs1oh@EtEZ4|o zAVLfWXk?cJr&AQ9iADF|Ff7QawcRf)?fYM<)|CQ{R`ai06H8?e{uHVKBof42yBp4$9iww$^6b|Mg~b zW6@g)WuwrFKye&H3j&cde%aGK$`GZmHw#RI2hhQ`a7Nu*77WM^!39R)BojdzAeJGx z5-zal4#6I~!`s8{^5H4IZ0zzne2&RD+QE0QCA9DJ&hBPygPF6^+Zz#xgcLkWY^c|SQ)Eg z+$;AmzrA&Rr?kpu5_TD+M({sfTJdRRZTShc8o$Ie4M*832q0M`6$wgMHI#^+y6s|H zxc<{YhyFA4*F#be5fBg*MN=?#w~t+H6Nl0t4P6?-H)5$(t*k%>NE9t73^=fK4L6~T z5_+sN*2T6=9y|2-9&H=m60i+vlHNQ2Rm+Y2z6z3$&+`vyfu(#DL+O%rwYB+n+Qvo? zhL@XAwCcZ8B4jK^FWBmCdy#&j(G6p@H^V6=1JazL8G@l$injOj6uHqX@*j?;u|fg|1fW?{oDCzlJ;u**U->uO%#6EnyS~Zl<20XyX}MV`)`~#v~Ms^SYD5RD$CKs z?Q!!3g2Pu{C2)($X4|*$>Q9J2!?+u#)w>ar6h}jf1NyVD%r99o8@P=9WR{7h&8BgxXxM%uwT(0ESTg!qEi5kQ_xadIXf$q_`1>A+damO)6~v$@J4v zYgS0=Q=25SfC8}_ekisLBN`R_nq?#^rnzvU;yHDV=+GS7&x5Y+cCd?fH`WPlrixW- z4m+)o5=8=$Knni+#y6iGJE@+<$aCBG{))aehyQ;?!Kj|!D(NKt7NtNc$ClCXgQN|A z+R8^?g$`7a=WvymuFA3PO6hRd_P@fLHp@uB94kV|$k7wS<87k`J?LohiLw4BEzts` z5JdsDqWYWTZ5vnraNXil;T5q3l9VI>I7Nx!G1O_hap6l{*S|6_cpOoz7zB`H0pb|e z?iZKz79>H&s)M8~M@~Oi(c^i={Udp8ncH{&ot-(Le8L?_GMtLBIo3W5E7*fw5+3Do z_^{VL!RvPQb77A!`YH3-4nMGE6rM52a5Z9OA|^XLzI?%{?)NOWiYRdmJF&nv=cTKh zFV!%nGZ~IzIg$nxp*n)6Vnw_KHt)8(6Xq{$VJyZf^+7JnEGZBqlx0Ny_UbQr`)~T9 zM1Fo%MtRqNifu*nY1YU7HfE0i%TOFaAQk~NB7lC3&-)c`cNzx2D72lsX3$c5T5sb~ zMv@ffU|-4h@(yyhP@_J@1Ax$C#NK7BArIp1*RGd(4}d$15@oGX^^g?UHs{RF~w8= zp??Lm?(X$JIb5hn_oWj#)7GrXssLE;-%ad=Ks?W0%k2E9^BXUvTRE^*4>!|2eiRmZzlsSx>Vve!}pjltK((X^Noi z!-|+dH3CEr)jt>Z+9kKsi6!5lB8=tz%DQszJ3rr%q<0E_OG03Jw*e~G{{N;wou%32 zm2g z4l*nS0Ye8}c&Jx#g|{XdE$_XyJ2!|&_w+ZuQxOdbsPdg8MHR9qORvZXj7(xqA{AV3!`Lr2AAZx^&~#}*nXo;! zZg2fI;GfCO!^?PzW(E*4ElZRlBSfC;FsaTP_cu?xIxejCOUqW<4*ou-euE8}AudV3 zrU;T5MN*X=1t{)XI`#{B$>V92aYvTLj;n2xroWx?(VVa@lNp(zI9d@I3J4)xCd-?` zr~2WqwvBSuUHk(VUQ#c~0-^+f2rMv11foMlB=r{4L$=+ox2-q#ls3{Kp+?FIY8Va* z5u%KWMtbG3R#2tCk}GN9AF};B&q37D_C%#Ne6Q=s*>jLdO$viE7nGtV4!JPANR5+M;F z66K6vHnwh!KT4v>{_an82H8bUaLYERw@TIDvHJff#+XmIMDy!yyFYEw+xd0RN)sOX zU5o|w#to|6fsotV<@rCFBs$KB1%b9;P6ViRxs0bi!?d+48}o>4wZ zTB0mh(eH7%SSZ7%Yzr5*X+QNvQj?>FV4ceN4V6@3uitCv5WyqlVjuS0Amn22qm%yE za6`8VHH_3HCr8<}u2s%XJ#CxcdEm=4-e?hyqL5?-$v~nw0A)>h)VScaRbbRWqQHk=bhhUHj*Xh}ME?%d#oPYp?m{?T}&ZT>g^wA_4K7)LlH zM^Km}2uzbi!?Vf$7Z3G9|GK3-^0EGm({60jVw{84uu=T@xBJh1)cP_RQ z45_~PE0CsOtDoN*x9HFe^TqDV+E|eGf^F`pJ8ybsOn7}rQiiM|6Rb$apbxppmg#H# z#uL1;eg%O@nt^}>EJpw~NPqRM^zcn=vd!!~;{6lruhS6`0Z%=MrHYKdh~m3(kdW8U zhdn(#g2ScCbgqTJEEqZZKl9isUV$1he%FIWz<=mZAJL`Db>#_N8mV8=_OC`c`(Go* z-`9weeyCAN>rh$cFSh&LV%luu|DLgQ&*AVGfF=RWN}S9vQQNj`ww-*Y-GPl`!)nJ% zGAAeuE2@FB?UEQ|h>&mKBF|!a**1T3>)`_!O}ENsHo)l~pB*7alxPSzM&j&}NFKZW zqdVKwIZ?ZHoX{)Ru6fy((`VP~rtn(yiUes&#AZGnzqI{|LOtVv~^uyCk1#8+3Zm z3}%7aC76_~9P^JH-z%J|=7RMhkmJ8z1>_&?PbS@8>53 zemAP8gN|!#73G7&d;@N?RXL4u##Zq6(V|L=X}|4dd&jMRJkdM~0tqkz$b@y)fd^?{vI7NVi6$_G$nE@OEYxB;4j*Ye*Co>y($R>nW|Ym+Md%twzoFO zw>E_*5>lh=ceMGGN*;H0k?($L8)W)@?}WAK!I)O{`#>PFhI?Yae=-iIR2;K@X0r<~ z4_vp*kR@U%l0d4NHpx&dpkrl;KC{g|{X(rio3-ocM5ybCLJY$)1j#}f{eJKJH|?GG zQElxQ&aD+VL6PWI^F^}wrB}mY+r&*jOUpZl)6eB35po>Kks?&8N`Ga7 zcZdDjvu7DiCRL--Pb5$fQ8YoT*Mqr1pNYUEi-m>pMn< z^VcaLKr^fWXu!$k_19@J{cM}fA7oN%^$*5;QCTSi0M#dSinI@O_AGSSi!oxpM{xE~ z!)bf4tD*+4Kij^$(lW+m?`O=!mB&xbK({-uhda-Kz2(<5_}%vQHMJgm;R#zXqZf@O zE=dtIMF6&F@)3W{YMRCyw>21IBVB3)H4S(6 z-?q7#5F$VT2w6Y?8tRFLu7iuyTm!E*f7_aM8r9bFMz}*N$(#ZunTCjE z^oO*8K^i>Ur)=AIu4!lXgi)@b8Iph$02Ixz1RMJc#A)05Urc@G-xVRqFQr-)6BNse zV)>8F8C%CSOPcPh(b0JGVB|?^j zFPc@V0I+l;owE&iHf3#-dD{9cFT2imNK+)qF$_y^3^;pz677WubyDmZ+9&uNQc-w?elCa4t5?~DQSXmbzQxhJ zmv_w8X7)rvsF_t55g`^UguqI>&Ni#Fd)c1aQ%hK=V$h5;Bbg}}ZEX#oH`YmDn6$v( zePLiqm>y+&6AdIhnv1^=b^Rd?F0!^diHzbemu-OcHP-bf9UH2(^OFCA#`x^fwX12f zzNHCtb>rLVUkDAS+@%Y`T|?I%5#_pc)*Yc1Nr8JvoA;jo2G*~o`bYsUn?qlMTKk{) zKWLA`^(}$zXaO7U^w0B8_XYmHhQDLpRsQmRE#9`b1orb*zo>7qzx+#&7pHHuDDL3Q zT7l!O@1NMY&jx?PL!IbO8_!H#L_N)4`c?joy3$~Mv~|_gGT!h{ z{Pup8bBCnzZ5oaFpyPAe{0=GmATZGmDE8F6#pBBA5?53xV>YGp2X7oa<5>3){-JV( zydq_E+ zUY|qq>RE)jF-uKq^V^B~cN|$B_W2645@ZOGLj+4jKj6Cj%uM+^VpI5wlZBE(0FhE? znsm<^IIHZ%nI82p>haGvIy>=>ueAfeBQ#lE^MMh>BN|Yt)QdLn%tK#}g zm$oT?^yZtHQCtbb70Nj(qq?@>IAm8;mrbgx;z4dX--!q1tCX_aRdDnJVN7;wQ+w@% z`l*Y3{`J4FSzum+x&H5+;{wH~ma8ehZ_rM$clcmmG!{5W0VFAO3^6R5@vo(MUjjdb zbELvS$Q7xs0ulv&mcFxQesW{^8$@i5oz^I}-)r*8ivB*@^7?jS{k>LR-%q3RM&E=PH3`3dll*tob^dbCn?sj#`^z==ms_tZXVUE_m%segO#;iU zk0AXcOrh)5?=QVjpmvkMe4#;mgeiQzTD$uC^}pL_fRXgSuc_;owhz{sL+^`7^%v^u zzol{La$3EAm2(^us;Hd_x^*?GmoR82Qu~!%UruJl>eJ4bRv)fleQsTSa%SlBXH@Sb z1De#;AoMyK)#HxRFrF}I=W=1-ET-=KJ*%5fA+Ku{EblGjkCY)LmXb+tviqJZn(K{L0V|hGmR==@@(TLE$nvX%r4PHtdt;wAixM93Pg%nd9i}=O!54T zU*0 zmfMd-*pHA<5XEpJCRzPURrLGu27cd8^4@EPhi{8v5eGR^^&ct`4|-Rq@dS;W!6g{B zHH3HAJHMMb$yjX30tiWx0+1|*<0u3>PB*rj2ozZwl@|(sDO}&$?0~fj!!8HvLr1~m=1dPZI>9j;?aDYW8ELmsHyGmDIxba zsR)!za!8>N_BuPvF zSwP^98$M58|9y5^jSF-{1U_lTqO;zinrEKHfwv80=>P*<$(@_)@IA>&YhLPGFRfNJ zIp=1R$nTze#JZu4rqi^=V3RwXs)n}&k<79T4M;|QX5@!=O*-2qjf~SK)t*1H1P}%? z|L>uPY~7yk7~)p;--DW%pCr}GpC(jYqhWbc52pjWd{yH6S>`*O`g-5tp4#PU3*@LN z7FlX{NUT@Jjc}|OUFLtB{lY%$Bdx=-g+)$yC`JIvKsCQs5Ger)OSs4hkN$ppWSYg` zK#k}5b$jyrtPJZ(TlI=hG9m}CB!-;L8+EB3wC`6MUf>QM33jFH9U5YN%N(K~fF(o) z$dF`cMWc3l?s%j{?=uTa2+A9Vm;+KhEZ2E$*2@{vbob_vXX(;+Z_XS=}s5FLj9 zOh?harptSD`8vA1MVJ3vx1ToZ@~d?DMY{Z5y8Ikn{u*7rjV^z+F5gI(e_uE4yL9=T zy1XW*ckunD7T(o9t7Y&82!Yu-N)!l@VkJO{dHw3Hc**`p4H!qF7d56gn_T?h`&w_Y}VVz@M78Zlg`-@nE7k7qEy0EC4LDd-I$QUr}Vffo)8S-)sA0 zLZeIcBxqAKg%_?W>@{$FKLE2iwy89mrt>p2x&>gjHq9o1u5KE-W0TUnwn}mD#NjnNpzC>$c!$ZN-QP#hlEE9-gp`a)vvOMr{?whyvOUS&$ zwq=6pK7MPz=NBIt73R^9CROtX)gFW4h?pM@@8cnN?8CG7GyeQn{ex!RuX0QxhNKXK zioMPBEOZIE4oPz~qdwY7*y~Ns={fhIEACDil6Gk$js~VUgo0-(xxW1|mVZhJOy~R2 zGt<2|{lwsDQTwhbhiK)sG!E4ZyshHrsyy)SB@z>BQIzGLHCGK@s;qU?@-L1IB#>y` zeXmzyBqRJ@gBj+~^6v6dBqoFY7(t|V-}CqH4}ZGWZ>*`A;hgh-->MtlO;IwgY0ZiY z4oHn|TpCsZBux_nz*eq&e8-GOwecHLxr_r{rhtq!gWJZkrpf3{pvRvow|1I8T@hiP)>V++no!B- z;EM?TX^;?IxvGNl@&S#@*`CJ6-4SJZBRS;N7dbuV((Ui^LPfp2+*L*Rrn2@?q;<}Z zvAyQibU$=HPv`GKL$vEP*%XHhG4FARLmc7|hd9I`4wo76= zS?h73p?#F)?lfOqS3R`6>b}>Wr~XAtpI7ueiMss7#ujMjqQ1fZtJ`&>Si-O4 zwdJfgGs=CGX;41We$&do;(w=I=+AGBvVU7mai~mKR89JEMPlXb|H^K^j=vq^5?lB4 zHJ&<_s_F08O77>_DxQbbDlQ)h&ewfh=Q6>YW20QRw(%?Gyy7t;%KcuWlH0vl?%4~~ zpTsJzH}3)qRLk3bdNt*nESEUmNWMVrrW>q#to!70g*(mhIS4l|<(;21mE51{@pXzr z9O4j%IK&|imCSc&@61)q{(oWp zpUH%bpvVbWWSHpvpWV;*X!XgD{jbwJD~5D{4WNi4IqgkIz2 zeAA!1bm`VfbJ<=t=yGw)W&hqrETkzCP{7{X<97M5OU}lg$qos7^>LVQZxEO!T^YJ* zi)jUa-}v{som<P~({^tvxrY&UiI<&ux5xX|xD= z1@DDs@#cftIl3kEIg&+2QYcBF8F1pZ)vr!FzNL&a#6U=>;1yvpt>X8~Pqdo&L-X(_ z&+E>`c9tROB1gIcWPd-L9_3H=uG`_mnTDQ(X-be7NhA>`N_tPi zv7e3g{EKIAU!MB0VRMAS$_R<77h$oY&8_DPvijVfeKX%&Ui33!|zvE%qi^oOB0dX{7enj<+iY9q%5d86Ox_qegz;7WL$e|u7$?cGn7 zNP6v|!zi-i9Sk5(G1BPNqgjkMc0V05Y4c@<@ zIOQxxtNawdZu^-0saes5aUukWNfALxL1=VAyLaMYoGw0U?EfAEzuo8h^J@eTQ-TK$oG}3y#7FhRNZ30vM_o^O~ z#q=V7SR9wK`v`JI~HwQAQX_lnAMz zXx;Iy4^B+4K9OO!@U{28vSMnxv|!HJC)*K0o%lGXzq)@D%iY8)d^6a6-M2F|>ySLN z!M+6$aDbrzN85Rq;4GYqJ$9Fni@kY*gl}-mczf2hEA>tMkMA|Q_K{JMU7AhG2$pzAIV4yzODKG zuBpoh@5k-@IPvdA$J=!Ce;I9rM~RQA$JC;mA^Hj2$JZ7%%{pYd zD)?Ge>!yi-swH=BuEQ7WBa+4RF8|%*%;W_Pv=J<@gjyyn$cU1#OajPGzQ5q;)nC6~ zdyoMFj-&`4Yk4C`DChqx+P)>qc8$u_i%@TS-9>>6B%OLk3C(onnnh^G9ATcKEte4D zT$KI2rHZiEyZq26Z@=#8`k`b5lAVO4{-~w&vKSn-5BW*k%o$xCHhh(V6bT_k&?H3x z1_X%+-b#;jm=E#0|M%zan@QuCwlX8pkfu0}A}jj%Xf}PquM##q|6NH$;=TcMgJ@>l z$+@G-DnXS03i*`Z*W{XOn*XJVKNe8I*EdBWf&rzsx8QURAMbJJ=ZqhzQZ~aHT>aMY z?(LKBuAt3Jbrl-ETFD*L^A9yEsowPD*ycCYbaBI$r0PB27izp0y4|D;v>xZXy~;jM z+J36+dM~wef3ZN)Mc)4ljbAHkezkIS;^*U%ggVvieAcPte#W74A^kFIHx8FJJad5v zjjFo$)dOOQ>M~E;Rptxzat+o(Cg5bY&%<$Lccvx^aH>l7#Z&sibPQ532h)ibK`X z$(I`)9H(#N5QjL#Ar7IS)Ee@0-u$2>t!f_LH!{sAA|e>b0EO23Mox~<#^-#}ie1cK zvo*`C1*I*>xpqj<{Le>5-{1GY)S4G~GR&sK{KjbsE5BHwS>zK#f+iyu&?L=LG>JHS zfkXC<@8QNC2`@Gu?R0ka?I{+&MDEd&Is;QZL|g7wUA||GzfU#zeY6m5JC^g*js}wr z+OKFoQe*6gsfzk>zM#DQik2XYB)7U;1qPZMf>{yv%Y&Ec{8ZJxsZq}JT-~9f_$BoM z?f*DbFMMsf$o5fX&qIw%eE(SDN2mzq#iyW3?&UZH!WHo;i0S^RYPv4|KpDT^;t+>8 zTp0Wwr!zyttjlCRs(UE%p7AXkKbMy=#OdRUlYhI=bZ_z{HlI}mb0Yjd?x-UUaXvVH zk5)GSRim2pBMuk#eyM7xY{SI(eHe%8yg#c8evd=dfH~fuIK-jCka(WjiB=Ag7GIKT zNk7IR4sp12>DV~LAx`ha;X=XAD9a7>r@eLGr|7<~^QT7kXj-|R26X2NgLd@vY+Zx; zjr0{#b-&l_EsO%P_KYBBFp|U7Hu$c8f0!46PQSunoQtAdugZGwFdDzU|Fa^@qaGT^ z*pDRLyy(Z7Z18_0dcLw8>DG=gPew2~!uQEB{?3RFiglcgBh*`2a<>a5x4GEwp+wz& zPpcrmT3-8wS_btb88Tmn$)c=0QK;`;B8y?Ugf|4SLii(a1xPqHJLq6o;)fFx;-pe(gJ4DUJSNV+A; z7QW&?SbF7F>shUSwzPha2m1tv%kB|L0n!YC6hV-`K0ACiN`JkUCh2_rP~(uPzMTZq z5x(|6EwTshYUTfu7toRu3tnvZ00|;QlC&(+tX;-lpT}Kjm%A5Ef7SPEV{>Jz_ckdycx=7kuKN8uI$RE)onqj;V~6sHMmv)RB%Kjd#oT$$~Q<+owRG_-paMD3XLMLm`&2XX9MK<#R~G3-ho&2m6K#o*eAE zqU|sC-#66HNGxaf%%-FK=~FKpc;<=b{x3rkN;;_d#uPjryVLE?vr{sFlt>eZVB~jS zeUMx_sHW2$ugf=9{a7QAH`frD;Ty9AYRy$ab&OUGV*lcYK<; zVO8z&V}NgXH=e*hxT96@jiq6Le3!%Rva8oij-6mx%t1~d1f=MF27CPJD>+7u{lNFK z&9^5^Y8c{D$&nNf#&(a$Ff=1EGC~sl+V}rWOx(^Uov)k3Z2Fa-H22vf(uwro>2S*V zb`o*=QAe8M1k)e%UdY3Pl|eXH#2&9*63LUtp1J16EB;RF7C(`fC6ql6Wgj#D z;8RA>$)+x?BOwQu;PJQ%>=>}D1Vxb+IZnTcH`jo*cJAD{ zUq476lx~iQWdG(fU)epP{UaKg^_9t(%o30QC4!<@AQP*z-f(O_{HD3#C424t%b(7t z5@zmctIbSeFzO;n77`SRNY3u?W(x`)?(XUEN`gmT+49+pW8D0VqIF7{t{nF>YB}W^6StI?t_3;cpM@}4SZCFdyJz`@uZ+CCTX*day2TXg4&qoA zF^~jy-*^ue?$?`#xqA5bhNk%UN@ z0K|c%Yq$wFc~i>G2WPFP(+1{kZxpe;{;J0sg*XhQn~+8fp-?m>LrK5?`<7`UTpBzrsabD7vugZjnVCj= zhT>?FrAbJ0Bw&N&1%p!p(_loKkyUux8}AKs7`{`G2vHnMBfyXlu(ZB~jm?VZs*6Dj z8Cf4}bHDrVmii$MunQO1Ju->ZvnwGHa3@<1yYrUQTgxrR&d9o_QO{E|{|tM0DTO2< zWHA&_(Bb`NK%&7y)Xo|)_0XL9b6Nzmq-FPjh-Hc6M1kV8SCD!whJOFy#x^P1UYKMK zO!c7uZoDn)Wo1vvcxY0Ac4QWZJTf9+I0hk(5h0Unx$5q=TT|02s+OD><9Fj@e?=CP zzx}^@uW3Dct_;N>*#SWoar)C6wq5eg;kuT37Y()6Ad4TS*bkjD#`QGKK$b=fN3t9N z*jRDB*_4?z_-7w~_p(O8#ERFyBRl2Glq@hZW+@=Bk0n1gb;s6uHMJ^wrUh;_qkJ2a zhV+Z`M^cTt)Hti|M{oaB$X%x)adQazNe!>Yk%*w}g4gTFabbD*c!#&Q13P7viW>S~ zy3JpN#0fuS%B z5afu;!XLF_{BAskrdh&`FMdTV)y6O+ z%fsiVhv0e?(T*UBmPSl4wa8li*Wb%Fwj2;#SAkfrhvFd~_XI5Y>~2?2hd0md#nE=A zMHc^0-|wzX*ADZ6n!$$|uq+E`fp+ry>Nev|r#u{c>V-53y+#Z&tIn~@nUNOyrhRNG2*q^G2#ug z!Tpq6!TphF(9X;%-Vf$#y8q%3hd5k1P|6dg?cv`$A!t(2S;6dfE}|&}0f{J8Bgi*M z@JZvb_wKP>tnH7x6KY(bj$2G^vidx>??}CC4Y+g)f@m4zHd!A}f4lj0y~0bG0VhI| zlO#c6^%bws`O_)wWZSIT*-5K^PY?U-DU%E#E0oMhk`nUSla7$;+ijc0<=O6dvjYeo zkhZFR)j^h_I7m|rVeg&ql6(%gYq&>nd7XmK?Xe589Q|V$k#%ls=6yH(7Jj56t4gi` zW=S#RNL`)6r}}n@toi-6y*2jv@K2~Lf)XY;f@C@2#MK2)XO`;;mCO?Qym{@52h)N@ zQ?fGA&T*&aEglCpZb*og*f4$(fLR^8cv2>KHL1t)5XX~bImD8HBsn|Ib@*<`S9L!J z33=Jrmn{iS!DE+1V(xW29_yYrC$XlEPKq@xFO(gkC18kD7MZ{3x%){;ltPw*DW+$4`9*WnU;SkBJR%X52t zIEG_FXEkZ~#;ETTG^Okl!7Ex;DO&~z(HtoPNXkM|!?*tX=)+XK@1yif^lqZFn*AS` z{m;HphC3tN>OlZW79fsc?LEe0X(IOY79>H&_B;<(uumGFU6?Dnoj15;?Cmv0kbKdv zVdt#Zf0Wns8n3NkLvz?QgsjK`iexB)L2nnl)5JAzN@_FzPivXj?Z!I# zEDc!>5d=jr1Oa2V-0Pl|@W5Ry$+KZqT3C`(0L99LBrAHAmiML>kD{%=YcJ)S0`kFQ zvSp21`Ps4THQHr6K2(z;hXgEQf+NLZvSP=;!|i@*Hoc~{g#9^7*tER&mMtsk{<}Wj zu&QzJjF)}K#-d1wtf-Jo%$65sQ_rks543FOxvjDB8C2hiSVTiw0wN(OY18VCeeR=# zjAm7gzBJJYX%5Wm(-G#-q7;+v_stEySJu%pn|fzGKktcKdwqXx@CH^jI{YtD6d(ab zv$Q?i=gF6R`5wVJ#O-ycG^4le{*kwqHCHSVmsq0hL!Yb`&(9JLrD&slE_lzB=+OfX z0}4u_EX(5S(_UTK^YHd0O_Lzf>NYdTH;YhCFNiWCACq)x@Y(H~wRiNfZLdwzMtUgB zNFgf=97AGGV8|OkUy$ecvSX_D#G}`ph@?wVFT(F)tuI>6uZBT+ZASWLy|!rCOTV@@ z;NwV&jh^D`m*xF*{*~WsV}t4CKrKfA0Y@T^rb&Ch+}wPhAUbgmx69`dB%im`-ubpO zXO{P0c~?@+2xM@qGY(JYfaQHmG z^O@ej{4q~p{ykm(xDc2>J5rY)5}2<&I502iw5Bro!2E-@z&zIF=X4LuztlM}KT4-X zwIBXJd)FPgwgaM$Wnj-5Mrmz?UTpZ3S4f5_^0%0(0=}?)2ZjrclQR{ z`XvMJ8Q3$rGENpHk*7IH;($>ZH$Bvs|Ay*MSj*OpO{Q8z+iTnYSpE2&(eYhWia|i- zRaK=UTE4Pll*V>N8yj%kwuRE2`7^9hO+y|r-{B4V3;T2WrXL*&7mf2D# z&T+meRO;ODRoRLC-t0Ns4Fd708fD8DLoe4Ur)>R&IBg#fm=2;dW6MXsb!-`~M~$S( zXLwAB6ptkW$*y{*hiI5Oj&9psRS_$Vi*<4y4J)fE)LB!+pEOZZOz<__Mdbu$ALn#3{Po#d*@IR z@VUp6UZTrg;3wz%L`k){Y(4wlaOe1^^#M3iInqW06k=HxFwQ_wal52q1fE{RE0bHl zSCakZux)@3MU`d(OJtCc38ex^V6(Wa|PP0376Kbk50dgy?oDMLvFR zpDem(ga}PhgaL{qGx1xFJhsI{hbzzNxh`WfNfB%l*K=k zU^0eFRhms%;Y3NK6a;8xK>c@nJ^bRS^jDKBB}qw2Qj(Gs;ciK>6xilI@ZI;%9W;f& z;wYX648)klG{r-s!|#B5i)}f5`N%C4*rpHoGxwSH&SsXVM8}cBfRpD{f}ldtKv7O@Z&lARyH1r6$<>ggf5BFsU>oi26s_S;aZXpDuR^>*m+B&Z4Y|gcASZryxX||FlR5jguG4)Bx0E!i zVVKcW5r!EvdVNl(PAhV1|6|X|$+mt$`S`>toeZif6Ndm-K(pEgU0%&uF_16Hq_0N{ ze|qxfdwMOVyH#oYKe|dM+g9H}yME4&9zLp2GEpIxWiA07#}u3Ojdoc4PQMPWv&Om( z5Ts<0mjF*g*lW&)m322btF}p=DCb#Vo^E^Y=P6tFt<|O1iIzyxtE6x=r?MP@GGhcc zZBnyrnJBe2Xkqog@8-WcVDDdla{4)?!mYOM8^-xg&DWucW=7V_sxEhs_??u5i+sij z%c6zfZtPa?`#I_DlT&|D$Sg?qR$J=ssck-6fWxmrgQgd;G^SaKWt{ze6NsPqofG_G zem+sI@hU`hd5QAD^$i|tT4hM8ek-178sD0~)%IHRZ*Ne#Lpe@AOP_2wOmN7*G_?Ak1=MP@C3}{_3WxW-a{3 z_Q}Kbm%sLL)FWF365teBq*R)X|H!`Gc1^X;OCIZO4ipLi4{1Pgkl_)9*@Qu%EqB;X zr;ix0_CDRx5+R1TBvCdE{0!U8@3EK9Z4-4(F&HWsLWxiq z#=oX!+g@wyx$}vQx-X7Nk{L3d_zRtY7ooy)Doe4T3U+-k_tTrLX2BEfKvYGDMGhd{sMK)6t4q!=48%fPm7d!^sMbi|@N1)Ncm?tbhXIjjny#}v z>*T3!FIB5y(&8MpeAASYaejVRGT8Unx~G3UbJ$B!H;<%Y>C>XbF-#Z_-PCmR+-nnW zvj4YQ$L8jzfa-OMikKgC@**v>l)^y<0ON|ew^rFQ{9L}@mh;4<<~P>V!?5zLCik?K zaf0P|0I@TK=IZl1{Y3WpmA>8}$tC_`6ptbR)}DS(FD)wZ#G29HTy|hgX1gS#bWync z`)%#N+Sf2=fbN~x!;I@f9DpnWG-RAT13?W?LQ5f5%~7JnN-7KDzh;)&=FS@2`_z59MLj}B8V^7`Lvfe` zn!;sJzV>FKTgVe#-eQ->Pj{UZe>?i0ETdzt-rv>1;_`-I+4@8N@{Y(d+xorv1C{%_ z>)cS9$vm-uW&x&I+9_!Avc1qNdR(#=fT=-RIknU;gZ;jI;tv+u#M~!Wq~5i9GL!kh zKWzD?C3o=OI__yE^N?tYh2%UY>Efz`*V?|GxTe{!&+FpS%t*&SM3i=hGL**c%6^wb zMrbkRAHJg;fAXETvU2|Bw^(a)WUu+q-%oeb`rS#3{w!`out1uAK5>J_B+o_07t*lV>q-|B}!0LP6uM@7(3IxU6 zD+?qZ0Z~XouEXt}R5{Y3{(M*g?HIx>Uy7?PFW1IEz zP3`+V8XYWAWgzBw08}nK-`u?!@xJzRHmASFOK&xe2jxbTXqjSJ3`L2lzV_II&F-p} zUGHCayl%8TxyL!Fr(soMmOKAo zl`q)#G`hi&F?3+KXc7ZUzuVz)1vP7g255P$&p(d%`}=(PML2%(i!(3U4(wPn z@|NqOf}}wnV+?4B6$wTJNjslP{j%frifwti^@n-2^^<`L$HMSnfH3AT2CP%gbGa4A z#C(5XL*8@2J93()tVnV%NlH?Zk`#8-rj|Ksx7hxiH|6tInYtx=MPzP7_4_>iiPuR~ zjwS#j1**U)OYlk;f?a;EHMQQ3uGv*Dp_eRspS)`8x7)ky&`%~ndXP%M;CFcim77yt?+Zp3`e*5%ertD+;Xcr9t;< zN^-v{%B1?-zaCEAx4g2hl5Z-P?ZD07lx1&>19w#*CF1`tG&lH~ZO;SrAL%Laim5=9 zfr=2Nu*fK;>ZZK~2FWV5)Ov~31ta-FBh@p;EBFiyqp^KsJ9>Y5Mp(y|IHF!k*5vCp zQ2Ud#=XbOX=jWtwcR<-!;0^ZIqT2>&UV%PuVAT_MRQqA|kc@Pb#ZZx*SQgX#4cnUZ z@5cSw&Xm>1yr@b@hkNh*@nF%R^ceeFP-CF3HUdnuL=ZSA+UoPF?XbAV@x;aI>@JYqSH z;%Vbyb@_zia#(8QVffItUr#}AiQA-l_CP|m( zlK#y0Mx_SLy?^P^#S!2~J&@JBv>`(SXP__;B%Yx}bmxn~yph-C{P1#LZzVlYp=w&i zx|3r0+_v%T$X|Zi6D3a>LWrdh!|@zoFrTQ-{d3z*)y93Ta81MCw^W8sio&W&Bwkec zB71o4uUewgfU0`H#B`Hp%|0&~_kFgiPhDA}{`~x{JEq+x6(!KXQku;^N%KDzSqj~D6Xqw2FJM{3TN>^=PXU)FI%hJpUn`-&SHtVy_J4X-E-{D9~q<0V{$PuCf zB10M;8@>D1_g={!ncVFW>ArH>bZ3OhrsaHIHS789kC9yeV}j;4w$OuDCnDqS_Ye8K`}@?#2f7I3Iqe195{7+({>vMzLRF; zBe!#9OUrrh{1F@d>9FdRzSa{34^A=O2PMc%`Ju2SYF@_ zwdHpE^6t9R%$Y3Av6!c6067FO!zLcRb<8$qGBd5q2K^A}5%CZaRaTZ+2pEZBb`I%Y zr6L)Jt(Na?l@>ho*voYWgtw`dKbWMK>Jmh^TN34QcA^Gqwf^2&v2OlsJJ#*`Dpk+r z8(SMmFHTd46=_-XLQ{Tx?Ae8|)x7K>p&xubuWFexNlCgi4wheRdnVoxcyGV%;af^y ztU-QZSO)UzEI)C2X@$5o!7{x4-)uMM1#$ZI`rZD137m=|J6QkYD4e2uhk8oTkSYOT-oC!&WTO6ScSLm7~b^2 zI-S#BYbsx1nuQ#LDeN3tgtgSm?VC^p1w#UwsVg{0)dGD^Uv|3vi^JRJ=*Ny(B2Kf< zV^JT&_!w1Dm1C&i&Y>I%2X1`#syo@}Ug;3aoT9KiW@XtprmM3|_MvdP;iNY`1uf0> zQKh3(Fv9{(@dW^*x_|A{en7XcGOAuOM@pJ7W96-5?yX{ORs|RV76G27S%yX+arQV} zNN@YfsE^iWhR=i|J9&hR1K+)$*<#KR*3W&uT@S__JrY5VVOWTHNOL@(676kL*sjbqq4RB+5L?@Un`G$6zg!hHAy=NUb=(ccCczB0bma7|amRo+0~sctUKw0R{kZET%cuIgEHjZ_p(VFU&6j^y}+Y$V9CYKhN1fc=FB9?tHUL6f9r{ zLyDmhL-QD6l;~;RKh$sjfq zp2@xYg-`eDiq=h$4=azD?}Qx1(5#4fQIu9u-F8e}Z%YNCpIs==lu8x+U8VE$>AFHLY(D&-PQo~)kmt*rv zkzSgDltM8K;zbD;8!udbA_qrr%ADE9>&jeljzKM^4%Wz%t7j7Nh5nBWztd@EXjVIg z2Ff1#d{Bss(rr(jTSQhCnK5xXm_RVp;1{9N9^zVC86+B=?oKWH9$obJG<;8QzmDPa zfJuLJI6P#S79+aVJ=G((V}Qv2*N(q&JIoE0&xeHJA44y;GBi%!&;(2leeWidCr#ee=k$Te|!;|NH+As=jv+N&-MC$LP+FGLldz* zR6dqow$wjwoKp7t#xwpyeLY(v&x>)qKQ!(GYvk|8f4nvohP+yP{OpaUD1wMcm_fWI zJ~8D-5o|8(5f`+*vmm-+loKJZhz#TZL&IQ|y&!m*Q=ue79*Eoz zDfgZouq-FL;s1~(v-Fg;6g~^gUfTD!CgFTUkzoX|Wpbg&K99#0G{VWpp7U11C$%ze z-7qKWoGYqIK^ic$h{N=IznVV!3gLLuSDtnkMn{6=X;zh43eyatjQ%I_FWnBp(K!Jp z)xAL}{b!gUNGX6<38NATlbNfYIQ-+|b*hw?11@R0qcGt2#$A5u+RgkmL#km&QyhX2 zVrLPykcMgQ^W?kS#P9I?eSW9x^9F+c0u89Y{4Ru@g!fMFy1{)o!bp^|q7#W#MWXPk zf@t5#*;?#{J`&rl*|CzU3^Tbw8E+);3bwJ^*Xm6s3Fqm&DK3o zw$vA*@L}|3f$-MIj^Fe-5p@BJG{Z=etcsK<#_uvo3su;HMXk-Xx{$>z;sM|QW+4y4 zB0n7qlp#J zN#V7cqx9LGX`Efa^CA{`1`&xovHr;i0)711e>YS!D>Ug*kN)|SzTulQ9tRK1@{r{kn{p64O;g8Z*f#ygEXezW3B;Uk%&&e)=%W`bqs~cK`KUZIAej+<3xRhX? zQvsaJNkCQPL;%9B5;EmS8+=Y;xW%i8rg=(cMLzyV_Y_)Kly1ig8${C}1E@$8kcmV? z@%?+2^J6QJT_we07wWWbe>Yd#+?S4H8Kk9d0~7*)4ucZw7SfcAG-<*vOm~m%n=j~= zm%&jjFPMWI5ouoJF@pV$bst{0UKo^Ee_zFxcSV11Ms-cc{oY=~^UOZK@N0gIF!!W`eQEGH19|u``J}PM%Ov2WL_{>36Q#=B zx?61bf={+tbyoaX@4p9{F;=@~|1TMX8-(|ub+-36QxH>`a|nyHq)Jr3s_CyBIDE+3I>~`w5cb__$rYYEI%Yug!!6CVLmmkDBJC|? zoCN_A7)oT~8c!;q1IiQlI$N`ZpQ7^16b)Gx@-$RsC4PR{CGew;Z2bJY%y32S*a@nW zL2p*SdclHwe@k!tKehx)hG?wd`q}r8V{UVEU3W=V8j4jAQ2-%~gxwC$9iJ?y{J%SL zK{|7U|Q|?-vV)5w|M% zys{XKe;av(34G-??^e~d$Y{iYV2^Q?(=Hkjpcik08V z665MI{@*;nB47CJ$)zto{ze23;vzc+OBr*z$3KceVZ)>K-d@})0{2j?lBA(#TA+AI z!CY?M{ZkfZc{0oI^)+6Q$JwvgpKdOsFdT&_mO_~283@CI;BR{ezNDQ$TcF#u2yIR{Bve&Sv}zefxf*+MQ{Mz))U%~Lzt@2NU8 z{O#j#-9r!o4$?f!IYV+;FHsg1;>`CGRm&PtESzcic@tR2w+OdA`}W)Q*r*a3<_RZJ zv`mW>G)ic#Vc9_H)t%B~G&xmhl6QIQr#?2-=1TzZ9K~P=WN@iy^R1R?!e>XD|In|8 zK2j4S-4L<_ctzwSLSwow`n|i>^(rQh9=fHt{AyM7|0mkjRLiXbNjY1mi(sz#VOWNx zIY`qKqAPu7EiC~^lM4FqGE@q4eCoX>h+b4`A~+Zy@z?og@g7$${E-9GZEp{y07Ebnxs zSnd)!wYcf)9w}FvkEut~J2O0>DW-Ts^$ilg81(rE6kUQ^82g)5zv#I4DIvXiawkL_ z=evY{)0XCowze_Y9h&1=gdjzQI0t2*==b|31dOcCR0Ag$D`&kqtFu686sW(ITb2>Q zc<6D4OHa$KX1nul;ib=?p1o}C4NA6IQ&V|;a7BV=vQO-%GZ0w0G?(bM9$*raCviw z1x3l_b_ENaE^i+3yMlpXLD5al{oez(-0beTv9fL?YuvqTH+Z(V6rU(=wZnf52gGe< zzjrtkJ{{Ai1&YO-toN0_*T{^OOoIeived=ZGe%vQ~GW1tTITPLaP2zY?r9@3z zX52BrLM|&;n&gXGBz$nauz)X!!d~($ z&vIHovSv9;IG^?+fwyLFgIM3|eNs&JkQU3tBSw?tdlh(PEe+amzvvCPwR@!4sZFz= zwI1F5$CnD$S{%u%BS{rFJ{AcDJ-J&SX&c=cgqMi|RYsOb0uFx<2&1lBd(D4`m`YTX z!ch!`REna)vS%lL3@#ILzWQ|V@Qu1{puUNphR^R1^hLJ()Tn)aepj05Nh`zjJSa>aJihw;+oLGrLy(#zC0v+@aT~PJB~-cN+D!;jFAe%{m9K< zbCvK`!DfEsyHOtvWd%d5LY0<4{EuEOTs~)I*GKo8-_k6NIF4sIo}xL1q7wJcStG3f z_4wJW$`N#XWda`0pTE47Qlt(W*;h?)(f2%*GI0iV%xTjiOn~*ZQJ;BPSvUU>c3r8`)1#)THQ}~Gx|K&Vg|`nn7!TX+jD_=74EC4E>(ZbY;{xD3?sM}Y1D4V!50bE>_KAaT$OZJ00dL{Zl zRiPX@`V_)FuE(!W4jME&$(^@yR7tADj;1M4GHYc)|B2Qd(`SmD8^-G3Ujsto1^s!j zme~#$)w{3nxk4OWjY^dZl=}w>q^U5YEvVuIYMxi#+O9_%CUClZ+ig>T4Fd)#!q;`S z0dP*(>?TV7T{yQBB;%o#ls}Ep z;>>pVn^phfdK{UNRW)MDRZ@8~cG2MdYbQF&Fe}KZ=8ZM)3#Hyi4bAe3okILK^-zo-{06ai!F^ zRcbxt>8Ou|6_Qn@$=GfDCvWHc8WX?UaoO}~Yu%HH_DwrI2;w7-@$hr zyzh`i`_P!bpxwecytKNXb~a$f!i@grXSej_Rf4En+-h~Ie#cuBLyeUWQ2V59ZKU8= zuiywRa7r8g-8-lIq>Gx19}({9QX~20c$dA+pJMhc0E$Wy@-*Hblw!fU zU^k85UF2MC8*WqXxpGwm6fD)Xq$hp!=QV*1Cto)0ry4X)Wn21zD3|wdZ~+6OhG~ml zYcNw`tpZzWeDMu`2SupxDme6EyE~qD+q`Rr?OkFSqX1IB(4>eOG8vCInz%gWMUNO& z2SCO0+|>~8@>Az|fcrBcL8A<`IL$BSXE3*(bQgd#t z-~7D_%+B5QW)X;zh)mWw4_{ou6{)36J!nn06KHfvqVpVpJbf@Y3&KapGF?agc(XCQ z-xKoW*)+KYbd2o0KCK30JUuFS%Ou@C95EzJxvb6G{Q`e~ehUYJFV^qzmTT?bEaguTpzcd+Z1X1%iSHolSnj@uEWEG(^k_{d+@uQ^)w>2P>che zD6I@2m1GmP@z}ntFB<&WNHA= z=(lHn%gRB&EV?(WDmG@{9qF@t!9c@6w1AGiWe@sx=K2rMi;-jGI7=2(VXlXP*N-Dp z+$H!|Sk+!gucB$0!m)qT{h?}m%0#gcFb*6H>9M82_@CT&OJ>Fk^ljI1T5eazk!_pa ziE=ZFEcCTxR8bXFsMMr?ODEQj#6$kNu)0cEF8ZvJsMPfbmJ&^Y zEO>9cSy|M@#202lPx?pK43`HSHzgHu|5&^T<=AnhgS1w@vagoA zkrqf@CDB3Mx72$vf5`Ns!6l_sUv_m~;EU~IcG=Uaimae2sDv%l;lX6+-!6@o{8z{V zjehRy5?^xj8mpPkTYRCV+S@&@X(ykRnF_1yfW3q$twHS=?#D z{j{>?PG4ZYlpM%ju%UdDx)v8e=ygwV@Mks!uYq~C!3tvoaZZY1y;;SI-IpfXr4=T^ zd{{x_wj>4u$j!O+AKEUt|0VoC;Y1I=v#e}f_!* z;qx&(g|PjPnBW~{D)(cY*?U8^mVx+o$WtOYO<|gYwT5d6L*Q*^XYfEe&rwOjhpn%?iJ6LyiNE_^1>fZ&D_X7l-6~^J zRum+cYC;xed>XCLBnejI ziCUyPr9g#!I&{0heK40S5zPFKkg?*6BDRS{zQobl%UQ_9Kj&A36^+>5vsyHW(~ser z$iiJUTJ5Cyx1RW>DYOWLF3c|l`?hzw0wan5ff}K6z7ysD8kF|}qGY_6CXd`@$y0Fc zw>uupB;ydnb$CcbiwN`l-E#+o^oNH(i%PawH0CSoHhcQFp0bNHKWGRHXUDoeU!tq# zHQQ9(Yc-c@lLrFxn2IyOf2`ZmjqT&eDj}Kgu!vB7zWJ-YHR~+7b*o|yrl`Q#ngT*I<>^S z$QFws{@c9}@+{3{?5^@~Ui#8eKFe$>dAaYeta6kqw(tKgOxz79#1@+;n=o#tITj)s zT-cc?Yn%GRq7u_`ttB9E2o4Ud!2{w#pV+`;(E| zD7a^?VGn=8_Hi@`dVj+ss!OCLErcd4J|K>|9FC!$P{%b>cV&MQZ{s_#ALK4-b7}GI zQLI9qro^S|?Vpj5iM^T1(QTYZ1leNC7d;_#TaW$tb2LuYyF(uX%vf8hc#X^^3fl@% zU(v2ycmL8aFOwq>o>)Tz8@F)PP5r0X8uC%}(Ro>Q8hr^tE2I}dJ#+g^7Ap?q|Cmk^ zo`XJy>aihz_ksb27HEX+m8VWFnhtXblA3YLEK z*W*GA2VPP$(P{huZ3O5~SPTIDXKgpiV+NvW9i8Wi15ey;GUL7mhIz&8$;4A29tLzc z0kZ@;#@5_%hBuqiy^XJO?zz%Ooykgl=Z;g>rnP2smsj1}51}umgIx=7=XBOU$Ere&`@z3}3=T=j# z^$M2u?#;xO^fOvNIP;c|-l4b4kGz2wSu(VS;n3M0SDAR5z z4jMCTH1X@bYFK--Yzxt5ctp|8wc?Uz&`JK4e4Bm1tn+JsFCFPcd}q% z3`r0uMIKsol0|rd$>3?$_4*6QynG$RIR}I0*ZyVuy*k~&2O&&V8_f^Km^=xrag=Ba zmMXgpo=@Y7tQu=D&~^rs&$oF*IdFmg#M&FHkQpXST? z*Q~G5cotN9ERtv=s_@<48q4k2r>2sqEh{H86kG2`9h)ig(g>mF5PpXO769I>nhip; z`L`6ExuViKJ}=qlddd8a^k(%OuEnFiNes z+!55z$GoJaIR?9FkRw>qCFsO)DJumP_$QcAQPmp~i8pV?Q4jd|jtnJ6@3%v@}0;69F@iK;F0Dl&||si%QSa_diiRxKe`g zs@Qj|;xlCSQtIe(04n$V9WIWlzYAl@+QKGkRC?S$@mYIZ>Fbkqsm1V5=z=}`^Z17p zx)&7)4NGxnhPj0C2TI*o=XtPB)dxy(8)6%o=A%v&wMjKN+DbUW6z!}_Q%K!2>@acM zbl#t}_WiC zq%^puYLOgCuBozqNu$#YVbwhWg4HlAXQlkQLpy z*@V3D5k$(*aVO$16P399+E9u2?8%trr}y_l6FITOBpCB(C~EOLWTQQ)$fIkjjWF@^ zNv=0}L;;=b(oW)*@&DmIWNqsrOqY%olGt6AORFhcgM7AI)!o-FrhK5GrpQQ42u(0m zy*@b@9HpY>Nm6MRZegu@`b5X^;7=~TB)OnCg*k4;mx^yYQQ%jr@e9*l=i#%eb7-Xb zg(GNR!gH|l^E582dJjV4f3xQ*tA@|tmwud!>vDsq5lXg>)cJvSh@cEG9>N=gCop5M zg=+t}`PV7Ew1CvirzGG-{n1)~N-=O!;y-XL5>GUE$EFR>^?H+#lESl54v^1oyaH^S z0NyK55|s!0NDqk?0~$;eMOpz*@|vj!qqM#{Til+LYY)klLo)@JSWrfxbs~ij#$zSt z6plU!ydO#v_TEOvGxRky$HqhgSKe>*vb`lS#hPMI%QbhA-bQOY`g$k$hGViK5rqRF z=CD{6(JqK21T(nKqu*TwVc)u)MsCr}yoCEIt;a>hNB z^|X?#A*iAC&o$mtZVd!ARxv)R4XL6KQjsz{5QZP@D*|<20JCi4YFJ@-Sz(C=w87uO zRL~vQKOVD#D7ISd)FSMGlFu+y^~K2j5TP)(9oF}mAu))+c{*xnyUt~;V$6%B_xByU zgnyf_=`o>45m<=zsrgx`I=vlv-`5~e80x^P#qXGa5~C!M1|uCtjJE$<(5z3_+8cht zVAE$id~^PgS#Y8m)K*J`O64_kPdbQ(B@=APm^ag&ISi}G#%)&AyXKpMRLwetXHfqfz_^bv1j}RaCizOX9 zQt@#}q=*gv;gsogsL@lEMq`R=>On)3Y`k9Pyv~mEn5Xe_$o!l-h*VRNER2!WWoLO| z>Y_rcrTXQ*@lY{_T@mH(uUvYO#kfTLfRopMd3jg|Nd48RY|3Zn`JU2DYDkljFws`R z)Mr5Y$D??P8`sBBhDSUwY=>dT-!Gst*)YYW{5#46N{=){Dw$F_dZONj?B%oK9rJ#; zsV(US-D-3+xXX>WjKmw@E|ttWKr+VyO+jCX38oqvRMj;+i^G@KA!dhiGfr_wDoKcfwgC8wZUCNWsn!5eQZZ zt;a=>-f!tQj`gENGFJC>XhLH<4{&y2o~WN5cDz7Bd`qK&_P#T~s^ zfs0SyU>00&m?%>VswKjy&c|&9Grr^`r6hWXrZRB7a%**okazAmZIW)>#f40XQPv@p z7#W#3Pl^S4-1d1`Kk0rrPVUAwc<+%tBSoM&UwGmg*wHuyg_edornA*jB)+(uC}m;R z&E9^QTEd=whCrEqfLwG?l}nWjXB5LyO-oQxg>5RES^Lz^^)?tMe+K=u8rlJqZ!WnL zCqpXsVsbe7?Jape7ke6ym@-$Ve8J@6r>l_GI zwwbjNaH1N^XxU!$Y?WVDt?9;crKC4+Z`V^vq8_1UOi)(Lo@yGr%c z0mBf2N0wED&v(#3OwADbhx$+%m+?Hec{73E@b*5vn924Cl3vUx{0pXWUoP7#M}U(y zXM}!1^nFNuRi#BQjk%+9jk#^yjqAa+xJcBTfmXGB;y|@A@Zfh&4yCC2>P%wA>iRN96i*aIB!ZS~ZU81Ez0mg*jMM6C8|b3GdYDnJ z1W5neVY)huhtywlxV*WDF^tZKOZ!^s({Hb8Nu?L3&gu>Oz36y+iVf`QvJJ}YC#AR~ zlqIw3IW?bc7w#t65=Y_#K?6-K05v#%UNEJK*0+3kGZe-Knd-Q|xoGRQ8DQi| zQg;^>LpDI<1h?G^EFdwvTHv*FW+T_-@xb1+O*Wb~vf(DkE;>6@*C5s_u+3rE3X6jy z4HPAIx=)0fEyL!ik>t=)*23Bs^9-=1;25YCYGHlf(n*WGFlXF}Q3s-t|MWRY>wOGR`cyZqwl~cgcG}Sfnjc#6 z$Q?X>J9}#CP9`ZYT`IaiZ`vh^rdbq@lOCp9{ZOI>k~!i&o15_2u+Y1;aC(B=RmXhvZR!`f)U;Z8c+ zj)Y4>7hDp#eN}?#Ot93u*q5c5pP`RTjkZ%bcx95170hbx19y>HyGiD(`5C{BjfY!L z&v?9CO7Ne{D=e_eNl8Mn`-p=JA`MEzJQyq*|iWK%1J+Mb1 z({iH2YqEsb-SgB_U(aygjlCJrKZfw5P)Kw~H|oe6ZZ<8_br{EqT!>5j4=!3dChAe$ z`o282bL|zU>tZlZBGV@bfk#5qp|mLxg9bc^ZV_P2o`^ zkhoZK)2=W_qJOMFu7fj{Q$Y{2mrJ48!WXcc9-0yHvD!zeQ+;;OIB%=b7StSI2D!<+ zJMH;zj1%?ii-kACr@U8H)_FK1twV|S0#B&BW+Av_!bSu{s0Spuz=D9uT0;X^pH zIxMIl%V_G5r8j4bW9pO)_!B4?2ve-p&9R#to@ri|jEJZXq{9tNc$Ks_Dg*|nkP$Gm z#!{uT-7S?{Q__(?GzV7ApiM#FM6EuVb;HiNw*wiF;z6ipVTHs!jVe>#QbRU4h* zOZ_vVT9K0n+4<=`QSZ{ptJC1+`4ze|VF*ydKGP&mC{*@{^eDo5(3m7&NK%}gvXY9|X?3vpvIgAr=a0gn~+3yy3sBPu-*n=@1o z$AZx3ziI1e?R+<^#!yU%^Vxt?hkRzKfaDA;8qQYynE9n9lBDL}S7G^HEu;3swX*vT z^YW>ojWZMT@%ZO+f>$>~&hy_OIl;Z*wvXkPO@3b!ozmsAcwnFt9*}GHy2YyCh&Mqq z?NCKh#lDYgiZg_Q$NtR;pFW~mLtWQ4s`D>%3@M03P`;qg7EVNt%V%QM*}mLRd+8ngqWp#9?^g&P(aKC*-CeTnv(kmT`B_A4U_g~zfwz4JEuQ7k0Qk2^C8G(P z@k@#oap)jb)%QH_HFZ-3E~+0u_51J0$0{=V=+|U;SI;#nwBHzV9e=F<$=~lBi(9=v zsL=MoPeO@hq%e$AfctIv9w~?<-kA=4+1b!E`7s$;ik!rWA(a{K4mDe?1w?w-y7y|E zbdlrW)fUI_f3-2AoXT;mF4?=TWytXvsL2?*n~>e>=##1!nG+P6|DPe+B)j@GNs|UG zwv0bqJnwy06h!$x9X$s|Nj(O#d-L)GH7Zx8juUUVjZr@5m=OQbj{=S1mKBXG2=qZ2 zv1=o@`@zfLoC}Xd%xmG#-tj=HO>mdSc=N(6(BbOec?}dlJ}kbRD>HATe&_PqOzF)M z1CmzpkF>clUO0u&S7WUsj$)UO54--?^NZvAG3NQViV=p0WeDdoZ+xz*>Qv1sn{d}5 zATcC*bUb=8Q=ghl>KeJBg>`Yw-Va-yBHZ)^HjZFW2-d{00c(T5cz4MRpVn^Ir`Jbv zvAZzHA+)C0I7VY!wLKS$MA$Vm&fB0R<(fe@hJFKEDZSD11e(|9O6)9N5s_KB+?v;B zKny#m*XIU?j%}{_--z&<3wi0;LypRYlrS=&(Z6{o(1Yln9u85uX(SSN-#t4G)Wh@YMJWYs=AhxVa3SU> zVa_6$RZ>h+dxII44&06$=sHj9tkq!L?h6O#8<#>EYZNgo)Z5U7iF8JFU~8uW9pJk>~a{G$$V?!rgD2-HZ^dHrwv&6qeMJQ@<=NZ@Yk6QN*aE%pcO zAmnDCvF%Eone*A&taY&*CNUa%Pzp?(Mboa2?ZC~k_Y#9H3rSmh1@TPaG#Wz#{N9IM z6lz0qUuI2te!&TV^IOuV}JABes@^;Vj^LI|c;Jsl_a`Z`*uT3l7@a5NP{Q=WPNH1Ez9Nwy( zhCdoiTL5JGRP7^56RW-DFyS8U5w17OAoHSwN~;OeTNPjvg-9_l*+lD5QIw-kBjo+W zgoBMb67fNjahDW^Q?t12Rv70MFH0xFb+U`Md<#tWE`EfXx++{J-{%KavY(Oh6xZ*g zp<^7I{7}Er?`}8JCQtA27H#&eIH%3}ALf5K}Qzph`a}><{WE*6`%SK z&fHK%Bx|chG3}g>`g9mfj;YTrofPfTV}d7XhK9A~MHI)?kP=@;XOl0=#A?=Nejn zTNztw5gQITgeAo)V+G^%QT;F;j=X7M7`4TEnDHA){fUiDsRRb=Zs(wJ0&cUlUR{#B zVQLB)8vB!Wo8}r=m;#iADjWP<0vAPs-H%`{W52Dki8fI$K6!mb_=R7Yt?*hhZHbG6 zBZtrKBXf*y7DycEDCE!MEwpvU)AXDa9CZ3fHCV)P|CXaPwn$Un+N@Q~)pfiXrum^W z@9rMpCqhL#VKj<`v{mBNA8O(*-NF^jo9k8kN{=dxR9Je8?P1F8$VY$> zct(vDpXs(3-ZcUD@2;w5&TiuQy?g&|ABip(!GY!zD+GwLy?r)o*QaNV&mWz2 zLIaa2gv&;{7-661x=WNRMdZ&A+%|BbhCCzkx>ghjO-gf^XiK}{A2{G2WP@Lwf?wf< zvzX_7*(>kl5gy$BdwzuQ02}kYpn;y%-q292Fi}|YpbR1rP z(04*oV@9|;0s$I?QYQb#Dqy@WNDiJ|?sF7x=mp2{%x007nsnkFo{R1EE9OLA6gC*^RGK9ks2}gJ5N-agZp zj}N-ydbuq|KCdM&7rNC~)IoF87ZA5N{%wZlahqZGPE3O%$AIR$mj?Z_9Bb$Dc-QT@JR4RPSY_J&MgOAUroH+C}h1o z3R>1TAz@hLigv+HKYjL*cveZmOjgjI$S+CRIyyOdiU{Iki)G!d;S}8Q7{29pI=WQN zuLpyefiI8~NS=v9r_@Sv zPcksc1gY=4i^gz^S$Cj7N57Ua;UbU%nPY{f$JkC=xD6<1*Sg-(d<};=a=&4!hF-k} z`2}S^&Gk>vu^kLBI6?rr*ZZj^LI1&wMpK|?z)sD;jTp1~X(@cEv#mZbnuI30D;jR9 zqIdGY;3maKfL(W0G-?c@EH1AAH3Ur}W!N>bw7Fj-a%I@jvCqcM>0cVt_gT4aU#OCy z8VUtnJ$0fQ4SBO4rX~d2vvUhS22f?%1)tNDm5G-gZds)FU(LurGSZdmKChx?y6*tc zB6B<1vSX%4Cr^^$yxn9xce2Ct1uOdWt+Z`H{_!GG5V3+_4!hI|E%*XmsujcdPomIU zD4rS(he`3pT zU~gEYuedF}c#7>8E1mqS;^qbZC($>Hd>D-%tA~DS|kw z8y_i~X(B6jsW|W!PvG#7JEu+kv4Hl6X&WR4C91zcP7e4kKO^{YRP{(c_nf!aB-h+8 zJ8Two*C8r|-mlNLx^{nw`lM3s)tmez9*x?)w5DWdhzHxCk^Jp_PREagjs|MZP#yfV z+R~A30?s(@bR-Kak}m&Q8C9@uw$ss<-BEN{-rk5_V%L>c>ITBK0L*Je{meq#M$^2e z#>y;+S_9}MsndXb(XCc`?*CTKP*`0ZdJTeT&Y<4Bjl%Gpq2T!9r|`S!jBAWC-RE#S z?dJ02i1(>)|MX19?jg(b+=Lo8(|h~V zb6FYshN|GluaC<*cw4l0ff-E4e-{8S)Fxo!h18h%uJLMRL|?oUykwY8aLav`(d}@CPiu#g^BUbgSGb8kDcSCX>$<~TD&b=c z)+~KMP@eNHeDEyuVl9?=Egv{o>q|bbEhS1){{3WumGKvvvNQY9s~o4+z8)WSK^MJX z

    -P%QvfR4@V&ciy~PhdYGceaFNaY%e$5hfKUE^lK3Y|3bOCpoU66+M_X#ma4A2> zm|OH_uAXG=!P1Jc;E=P62M=A&d=yuMct6#AU3t@x1Wwz9TjXTn?NlS`dJ{#ARS!u^ zs}VlcE{Yc1R9Y2?HV(PF_3`G8CYA+m>Nu5t|4BYF*1JO@^{P}sHZq)NKuc@V-u&dn zDA1ev5=`5`Cd6e~p(t#PAS&I$ED^I=xg+Orrw51QHqA~6m9%(Ueu=SnNeCXzllFdH+f@9|KljlL~ zm{hx^T>uxA2DqS?Ij+=s)T{0lWp^$M~ggH?JZbX9Ac>72v#fQVWl$*V^BR;V(!d}1l zUaRwA&4LT*`1KS~DEOTHF4uh;2TVp`yi5~f53>BCC`@wBpRrvPZ+)k;@ z@2%{x!b>*um!@e6*E6QY+)0At6+YTIMOwoUE2tm&TUeSYc~qyHc~>k^p2F-hv#eQg z!ED}$ezB*oB2A6~qXl=zF^4HG2TF(YDTY7}5>dTE=(P z#K29iD>l?uPwN|#-v#Dg0!E~niBeOp^Jgfs7Yr9FvPzN)B6M5S+z(9dEf;MEF-wZs zS$(M%&IVWw0g^(gkkl?0iJ9WucEFc*yw7p2mrA`w%&%08%Bm~kYRhLF|J1oyjbA~H z5^h{mavh*bXra?vN5Ct$6@4?@rk@RZeDc95W)1NrI`Q9s>o_sqtA>>9L|?vN==yr- z-ml+MFZEGNH8y4@X)$AO-{}5oaMu%YA@u!)gKcbBpKQ$Rr2p1N>}9fy$|3l(EZ7GY zJB-gaD9_h-3E$QG%t5v90ElsXen0l>l zs2m{Vjwxut^B6mvJ&CO=;eh<wtehqIr42vr|U(FH;9(RVSoLtUtpd*8}3WX@B?DMpY2mjswc}X7_3RfB$u7oxa zfCdT*s%X6|IvAj#px7G#2UA)~30FGu)V`lg>e-?mKYg$FnL56CInQCY*#R&K&#p1k zZm6(~_i`~fW@|2^+1s%F;LT#l9n%k|#5vx@AX_ivQ?3ORi$2b!`yOwqN?hngJgNxJjA~vJwWQlJyV4!*p4C-T zbAud(WC~R}XCK{gM{7Q6dfbl1$4+Cu@V@ksH=UYClD^zo#ZF({=ws3p)Y{Q;8Zk%Y zdWEV#yE1LPc=dBF61PIIF_JfM*4%0!=f>ji9>eQ5%SPSAu9D7nb&gDLqddruWcN1a zy@Mb1lzQ(<>OLm1fK0Rflfgd41De$ix>&N?r|FR~n>j(fjnS|I$)=o3g@c^>LpL}o zlU|}Z8CgG|248epC1U!PPTz+%94^g{er#y#_g=ND-}28e_A+Fq2X4kV%`-*EU+rpm{HYqNBze>WK}rM)TWU?IcxP$gX?WH*0Uo^qkLPW@8kCBPjPQJi zu1n(Ob;a94BOssjPCG|(@G^ApYP3XWZ2=T~dh-2rb*kz03r|H3tnDEoKrM(Up!yAY zuvy%EV`F{g;jzhPX|aEOQ$7GLsqo9dAuz_y%qpbDy3W}Ta3(4eVfX@zObjRa&L6{2 z|B=lW?J75Cq!|*1XM}Snb;CS572FW^V#|QbN6(S*kdc{k_F#t5szI24(dK#nF3r*{ ze`;9TxmGkme2A)`39S8#U}NYZm*9P0tLg zAR^Tw*RA=N#a%HJuCs$^*@(j44;|#(DtR-txUCP~mviWVU2AQeFXqE|Ufn)T>O*NN zVdSLm28>XJfPYA0AF6NnLw-9pG|&&Li?q^&U7iV2NQ6DlbyYyZuhT;}rC`!zTd+y0 zS3sD}Zo%A=iH;pXS}G=(KY}~rtqKGq>9Jr!xk&_kRep$#brKSkNp>Ypo1y9;@5+%pd#&8FuJx>dTp5s{zD#21B8b&doIHC!YV7QWV4IHCXw7h%a6 zhnddQ$#1i{;EDID!&GEoL%3I@C!hFM1kKPa`*oSQO@4HT6JSlSY6P__*TuZ&2{1p7R-{M~K6R)_Nzhg+tR7%Rz8Sq!yQ|hks|~TP{kB ztTK0n9lOmhIvU0}^RZ&E!`esu*P1<)<+GXDn#?wy)h~Xi;=0IfKGNfT5dMF{sN;!X z3rA?rllhuaG`6DNF-rbTi+&%BX%BLA)+ju&;9Bzk@r`nArhNF>;7$Czyqdk?mH`4j8 z&(ZwAk3(2xlSIjtfDE!<56;^{YJb>>Q~m6Ox=>${b8g*!MtZnsO2c)Pfr#D%NHHOE zPM_D6ltAHqE%2JX+BeypTcw~C@}ivZh8e?>1c5VC2<`#uZ=*%(tJ-+)$k{03^C%d? znUm1ViDa2@Jet`gh2JWd3x7pve`e#F)+OFf5dDxT3@uF`QL@9Ir|RldYU;e3oFJi3 zT_ShZ=;sPCjt2t}lp+(CU1azi(M)ar6spQlx35-RL)xoWvXe)!+m?d)wE57Jw>T`k zP34|gJZ??V(qrD3zXShith$dLXU1&i?5e{fyY*pMA=hw0u>Kj=<-MBPfLatn;85NN zE2zY(n#N)G8a=D(1a(W`&DCmil0v6jyz($c_~R;A2blc+w~#j__}4bNpu3)GSJpA6 zxbCMelo_R$Bbn^*J{E8dXAkmmaSko2vg1Imy6}c+(eCo^uc^hm`c7$%{S3P{7!Y_- zLB?ICeZ`Ip+w6v|FDN6Ofgs;ubPGJwv8Unj)f*`pU9mz#o!J_l!};N zzLJR@Or#*}`>mXJVt;R<6>l-IZ^cAK_C6PfV(swBwur|*XP?ocpRI+}=)P4}8mBO> zDe$4&+@H`gV}aw9H|yh1C; zW(+!{iLwuGQ%ZeQ;LYND?e^ot#CK-Y*q8k7dEMuUG`ZP(d?IRzUx7w%3sW+Al$|i$ z`FT%Fcfw?!i_zYC&mGPmIQ$O2aeH7(1xz@*Ye(0Qi%Gb+`us2=ArsXMwHXUJK;X#{PATYyYiPK(U?Q`C_wM`xxXHF-;xL%hb!9ovI^cD;K?HcP`mzsYI)6 z(}1IMn$y;kc%b}C+?_O3Br!33s3p}hLwvI|P8*Bd+Agj`gLU$mcP=3LZ)3Y!<-%}x zqI!|i(_&_ zPUx&!lm#<%Dy@V$glh!5}{g}HNG$|K9bvi)!NcwyIsx6 zvhq0P?K`i#to@dYk=oX2r!f)oi;&!VXvNs6m|R5R#10nY1+~4cmW)unxnA99Fc0hM zW0STHyL=B+oWkJYy<<*E-fn_oz3^@g*0=**l29SK@c6ckNVoqQ-Fe@)~VQa zThFx|#j`LH6miMqxB(R`nBVxrs~!E1+UldGU%6$i5dSE>AWCjiOX1>n72aFtnm zMi~dPT_+kTT?g%lFh{zRnA>f^ELFQHcuqFJtlMX^YI9pE&shZPrEzqa$Y^&7lwlNq zxLQuNq3o3GtjFuZmI~IE_m*4;yUS)1yso{N7VdOrE;zI}%5s?^W_?BSBU|lZBbRhK zuHwB9wz9lu5~6G&Ib_k4wLLSDz+joKfS_B;}tb`!g zBokvbaDbccioC7I^*XKX3y%wpX`G6}oLDe`mI*X9h>LB@;j+%gOx(u{7*mzp zd{uv>CE8)L2SVD>12KZd4u^Xxj{h9gOy`+oo0fmVF9Rv6mRc?uDzwL6dFI|}9OaUI z)xfrrz~5+RqZ=`X@)E@zaS-B1DoqUsewG_jG+8Y#lLJ zP(L&Dna=y}lQMl`#o47h29E7tOl(U++ka791iVCB=C#Ax-|zd+UR_h)>6qUehbDHv zPa(sOQ+i*sVPCx$COmw9@cU9P^XpEmAM@zDovnDdYo0EY*{(De>;M?$icP*3Tt7tv z{wm_>;8N6lkN%xF|DEv;oRLkKiEK4VyfqKdN%F5^BDiD6+N{{%zI|iw_c%v2;zQz~ z&Tzx>;b`LuJuLa~5#AhO#YvKgZVZ!Y#8{h^{Ptg*Bk??igqe3xFd6N`bnP409}mYO zx<))?#czgb4O-65*VlPdhK$3^Co!H=K#0Jcw?Uwb3n+Ae8YmWTojn?xn6{(4 z8ti#=<+bCNaqEZ3&dx#BopLO&;RjCr$Zn&!TKyp`+WYHS#8?LMHzalJ0+e+5heyXz zMAM`!)(StU%w*`){3p&J{zRapKoP9OhGGWp8;P+htNQ}Fb=mW8v&17##5n0T=Y3-H>=d`f?D_={`-+DHrZ(H@ z&e1%lU@8nsBtV_JH-;!QcKmQhytr;>Ezpm!!AE{n_Sy_qqKB(-&$j-e^l477$V9|b zSOyS13|35E!jUVzeP3!_KeJgI6s9rNacO45^LT`0y?RRQbejw=`g>oLR%tSc1fAQl zVIhtn$-)*%`DtQp*7dnpuH=4UkVy8m)j|~dfD89u%T2(3!C?lpJQs+l1OQ$nIwGZ> zLOZ(!-zzW9b@cFl8t1+IhvT2m>Ycu#m_mv{t^K=ZzIQh5VGb*_wz5-pM~TQSkxRf@ zIUC_dt5sIDum=&Z%ned97`K1Fv`EiZbpqelIk3evJvUSli6LE2 zuko9@iFy1;3oZ-$w|@kIb@ZF@dSUU;W!Y4Y?c?sEhptOJ$Nq(<-p0-S>Xfwm6{a=a z5m%S1OsF|Um@JHxpcd4MMC%xmBF&d@4`gXP|APd_y3QobBwMlY`b-=rm=0?X>7BxoyN9p+l?Em zF?MV;w#^;xI5~OWGrlvv^LLH)bFJ~*&z#qsH{@IU*6w6R!6mZ^Rs_4u=CZ|6Z|(*_ zwJg7^BHlf_p@1}%{9!)@J~PN{uCPI+hn@o!hM(Y&uay+Qy%LlWf)MW@=<9tfg*{-1 zY3kL1)1$#FWA{LF=h5ung;ZOTkWaUsz)MA~PPmrEVBQ4EZnjjY@6SHGm}#G>uy1hd zDpTyVdJYkl(G+1Ym}Du10E6nt&9`lhh(nCTjAnT78#-Pr`ZT5Xa9DR|O7?bP{!XLm zf`YiQftrM^CsKuwQzA|0!kWOmJ>g9cjzk90GjtOD;hMpj|VAOBAUx~+yz|@LED61b#Nt1*b9@Q zOmsm(sn9!|EK*Fkub&WW65n6WCm`nZ>lDH(CsD-7;5c6o^V--yUxScUT_4Un`gUew`ovXu!Dg`GKcrf4 zr*rc48vmG{L<#}dbgGo5r6HOQ6v)z4eG@EB3-Hdp2*N$iv3*_vP20R}ow`lg zS-|gjj=B)^gWb{CM_rG!Jjn4eoH+ke!;Tz~PlA@tl%=aqd2P6CJqQTz5}=Lk@kwIE zWKL%-8#i%kJKZo|Z{H_c#@{}vUb0jdOQJjFits(S& z!Wqmr*{>MI2P`Mo~h^1(eP6OF=icY?LDnXOa>?v;9*Z;@)fP^j*GimfwTu+bHqNfuei;1^-b^4nXE+ zgRR{<cN_2S$Qi6j&w$i6S^ZN)QHcQ!m*(p=NmyH^J}K6~NL@*6vG{8J(J^ ze{oN`RD0FXyzz0~Osy-CUa72DMmDdeNC!|eFR*)|pZ6}Gy>89HnDdl!EU=qgHst!a z;CtWjjaz)%s2)S9k~V{5ce?-1buM%v%;?uO9|FyRq~U8>pF0J^^h>LL1{)gaGz=qf z3xp>MGZW*Z&RXG$NA4iH#q)i;FdC|uP5bAqm1{t7@zg*A`@x(OHj^UIkZuGvan zbm@iRI$E70T3GzMjUdDx#P_R61VIA4QaZJ@RdA5mrhx>K(tY6$Vv@lmnE}@B3aNlA zb6p>BL!c903FW{~8lF4OF<6nS<+`sO;DC>zyjabE+ze|MaSnV;u&<)G&DN4^keSpy zNv`>G0q?Fv01b}L+U9@$)MX!>EL}Qd+^v|)j=eKFX530Uj0WFl<*9*FfI_E#K zj5mhTSJ>#2XAE^H(cuWF5@BnD?Bk#(e}y+Oc+`$~`8j+%Vjxv~ zi^vR;DnvPHEy{DpzDk2}smnKux~sn(%07dbP`|5En25}I_8Tj-7TN36KZCdV+co;r zwtBd%E||a<0FC~AuyNhA7Z5MMJKF8ITcKapggV&n}Fs1+~4_R^q-dh!gAVcHPR%Sts%V#`VC2Q?{>dfc%v4?4u^zyGdz2z}Ee>XeZ$@36* ze1h_fr_OYSI7E@S(e?T?K39K8E-3RaF)SR!z)vb-$Hcoq&Z*m9idwIfph7_tB@5%n zDB&p*C2EcnI9Ri97i;|%JI`KoiU|O)Bs@!YzVC<261AFqYwN9j68J1=5fywbJj^58 zMn@k-C%b{8i?;4Mw9O#+j``8zm*TB|e8e4k!&kVxYaU(ITk|r~4wi(WVnL=_PjH_3 zX}9it8>Lx(ECF&KV9zoki$)V`P&$%X&tXS4+^LzPaAlK=qzi=j2Nmm?l_Hc05GN2C z)|4nn-WU1YZw_u5MQ1d>D^%CHM9=u{4>U;Vfs)<)RmICB9Y&k6_r4i=ct4_gnA$)r zH60TYk=OP3x(BDut1u&>zzauYF5bC9lSlVUc^UH5;*AP-93B2@7@9!{n5jYWGXGl7 z$m7ErWq0DgL%FYSJTdUU!tj4S_r$<}2a!eV3hS9MNln47zbbzs%e7XhQ4C1nRAW(z z0W+f%a&E5*=Z3a##nmw{>De}N>`^GP&`FvSoR`lbhRD3PzTvFN=Vb^W-=CCe=rwP@ z9)@%R9NvF9cp7Lc`dp~oS}YwdUT&9M=DVM~j|NQzR*S@Dkp(64rGCw?k;#0icpzLt zcTlF$Y-zj;BPmX?mtG|VNB_5IQ8P~Jis!r_qdzZ%V(&Z|K}eDTJKnr`dkl5q@8a*9 zop|=~V>S)4o@F<9#r%ARzC;W4*h}sEH5nQ_Avr?7mej_dlO@OvO3M3ZN-)MVax{S@2z#cuD z@dO)kggn&3P>4{BlAU_d*d%IP(t8PXc9b;RPrPES!y|T0ekwp z@n;t53$2>K4GzC@p=46xnF-O}IaOsSRRb}>s?wl$LFbD{AA%Rc5zJi}l_Yh=6f;q% zuw{qqIDfr8Xcy%0@0U^zZ&rID}OUW^X3)Fh3u?Gv39HdXOl1{{h?vkd9*R;D7 z;y?P+@GF3#gW8zJIS^iX>F@1)Hwff?zeJU%G{jCT@#xz(?KUBWplk*&roB^Im2JO$ zH`#}I+A%y?^t%ojhI=pPI9e-w@LGY=xYzw-@k7icK@&F_)?4@qmZyW$*A; zL+v|<_k@{s0Olk=7nL^8>k(H#i_VYHR8W+%h8JCQs!aB5=~g1ntVFqA?)!V+>jEb| zx#z!QkvF3I8Z4u2me_a!r)7!4^(ES5I)p$pxQd4y3gmNbQnyU$Y=1Dx%1O02}#mMgzOsgXa%J`3X@^2xC z0S3*B&J})-9)1~dxhyOgE+(@~NXM>Y6RCQ2KcvT-%;mIu3jH01%$vF|E4a5d-Uq46 zd~(NCL{ZdH(V_N<%GXKd6P%Pz?CKuZgqGJ6@(_x(I1xQ&P~}<5a4?!4v)ad@jsRW% z*#BMLu_NF4`#vWX94pxr=n3^j=3z<8Ac~mip*wC(1&mw0FqJ0f7hK&)%j`%MZ5~4d zS4Vp8&H?^9?Uf2AH%$lfq@y@ubZ`W7%44|pV@u)8F9G(}HQsn(B<3?3T(6Md9bOKi z2VVS6|Dxp;_WIFc$Yj2%a@^0Gb8~O~tdcWXn?Z}`y_jJ*4=%ModhA7Ug1{o}r6BnM z$Gfu-s}nY#|N4GEoH4cB{_Lm{Kr*5t4Tk(&^!r4NinVUJrm?4;*DF~wxoMS;S&8Az z_~&~Q%Aw^Szq5wzj)&hbbiNFnCC?HK1^Pjqc?{UUGg%auFvdd?0{q-f>&D_L?d6U1 zAo_)GcLs4Ne(!y`t2iO!Bp{h|V~}x}(3b`DMC)^w+%3CkhK*r@1&`cBd}(aRW^EJl zFB#$urN4BwaHX^{3-sQcUAvEWGK5h2curP|Nk$uKWFXPS^Ix^n3M;mLW-Z`2gZ!-{ zeaEuU2Sm##GHMoR7AX;jZd3PR>@>03Y<<%D6M)ZACEfgFG5pl?HT~2MKxz-2cHx}Q zuCJQsu13cG-ucGC+}ACTYtdX@1>>bYhO*lbbfQk%U_T?;bqSAn3LrI~ zAICwiylti>uDRCs^?}?U_igJ^VM<9Rdt`__%M{!PKP-Znf;scp#nVQd5AC!eY*}-y z?O?^jVQl2FZq_5hr^Z-=cL!Ao91U92V8@!ph`oNS9p)vSuthJ|hOB&m=utY9>@ zKA(ac4QHK7t1zyt*O;`d+*I2J-P$0ZyRb^fK=}^_q_TwU)cMJO(})9uFCkV^10I~ksWzgUWS1FO7)XIfoX+u9kY})iClQ4A|j`_43%w!vNv^EsJi+I4ttffsAh)ST(&U+8=FDf7z z*0LHdE5~o{3_N!m@h*P%Y@w1BI?pdW6ddX?8jkpmrxaB!6VDr-_(wSS?}~)y{3SD> zWBKHtIfJj37*Kwr$*I_i zeM~VS|C;RKYyj+0chKFp-d&?YGe{NBr@@F>tPK$DH2!>9Fo2iX{$FGJC&fwEf&6PW z-yJ(bdPI9SW5=JPUs*BM#CO}m){is=J(D${<=dY88v$u#%!5DCawvhohuzv<^UJK{ zbuGrG3nRA_f8Z5M^Gb>YrYs^#k*L|gMZ{K%s< zL;pxy?KjKJ0of!IUK+kQ?a6H{f0j>#aJnV8kTzCAEzwY0VX$PW6oYw~P5yDO>ps6IDCj9P6xX#G2FElOhekN8 zZ&|tl-59*ym*6hzoJ*wx$FwLDBN`=5m*M0ZHyjFfUa!b%9F=kSlP4@836zV0m-P2E z-QOrYRQ|na<+uR+rnAp}nI7=aK$NQ@$s~sd;<0WA z1Vd>(dCwP>40{vTdvtw*>X^}r;oAJ#c_&L%6?fnZi>hT}4E?%^&aQpphE@KRyEwM- zX_J3$wFl3|;L4=k#l7w{NixtM)vAau?rbe=`3D z{}G-FlFj^LTr>`5<14d!;jqk~U3tm%OtuAov9&P7$+zL`f+Z#m-_S++@noz92z3|< zwd)%S%=g!QEiWdOr+w`-WYe!uhhSj9orUb+wp%7gO=e@JRmnmN#g1P1ugXnIIg4gL zx~RG$e5djVcZQ%84mc1odrd#uWvY*pB^T${a~4>uy$_BDDhu-3U)U*cUG{+%KnHHp z&6wf^hqvimC2a>O>K+xO9!vl0MX0Qw(8DNcaj@GqmKfNeUplsb>bH7KkEc`9y0f#1 zyCHJu)jjE=@Y2<%*mug&OL1d8-=WhUy#sw-hOX{@v zWLQ%iU;KETiR6ByVaJ%itKU4IhTam@S_yUzxv6#vJTfJf(JzjEPm0mke`ZbN`OTjX z3z__+5ePsW- zkuN@f0~r{`ovxk+pz4Fsi<3i`AtY!=e%r~*fT2|C^Q1x7O`nR;crNM&-qC(#BcpA1 z#aN0_APx3PRz@xb-8 z_huq%U6SXAkWsMsXWv%7KYDrid8v;?R(isHgJYv}g6J!sfqk$6QNhCc@7XO-ss-zg z7qk54N2A@*%U(bK=82!;yfL20f0Xuir8m>uT*kn__{Aj*og!PA|0LIY1l$r)8nk*4 zZa;3N_Pl^x99GmRz=F-x`?KK=Y%TK)AzH%1QE=0fEMz=|%hyF}wiS>;hsm;`3(^{6CequOHz0 z2tNyd7hS%pD5eX+Z0GQ7*bZ(r)%{qz$Uw&9Mi5(lGmtT6sv9QNPN7gKNlxdq-(7UG zeoIePyOOvKdRNpap823H+d}bDM1js92!!E?`1OWi9N{OryV5)$WNpd>&xkeR^$w|3 z_(htgM-AT;kqt80zYl)geXHAWdM{udV#Zd(ar7e-iw}pBJj+(QiSpaJ>IBv@O7tM^ zMoE$ug`)4X5Pgh)43Ilm0Pf40^fZxZcJ_!6lri+m$sS`t9q*IJa~ll0guMu+4&(N( zu}2vfPnXl94RSpBArK=nk-M@<1G-ID& zy|X^YoLgtwd*NJT+>lWa1V)D1dnp8)3pl6_wSwph2z46;co9u<*=UFRDqj_wm7SNpJs6ZDhY&@55e6t03&X3cBESwA7(pRFQX;AFq z_n|V@Gfp4bXe~KXzRa@kJXG}lMgjNz00U=lRX3PV$AV~u%Nfu^!F6q#3`HjLu~c#D zyLJA76Ma_laI`-v+@5)yQ>L^8(kZps{G%Yjr(cJPvuDRW`DFPMw$E^SE#LuI1XRuC zgxD{QYDAD=_=X2vu-Sb55ks|Uv3OWRo0dz3f16GN)HU(lzUZD0$o^pqyfhBeW|pEr z65f?iPr@krohgAbmTq|Y-2a7+9G*!Wg}Ho^faNR82ks=_ZLa#amOHc@+)Datk4P^rt0 z67*|M#4YV{%Lq-b4`Ds3-ia>KRqqIJIjasmd?wyKH=v98!k7vhjX7DUNup7t#FycS zxA|sjVk%6w9Y6m*UIe_q(r-okCIn)HdM2T(!;ep!_s~N=&SNfbzD(rb&Bb!P16s3W zH^{9UzPK+aNaclR`J+4Nl9|coo;`f9WA@7EGHo1x4h$zpKbwHbc z#?ziQmoBcm+Kitoo!nI(GtRU{7uv%R$|IcZ$wGhq|iy^4YS^kx^)+HbH~1Na*jZg5WlL*xpaZt z7Wc`QB$9vsRKP@~1~Whny&XBO+Qa$jxNq6+a27|19UoJiSxzvR>T)QZUu~=LS7{A1 zC!?V%|A!zS3b`)uUTn<#C*hS$Els|L+x^AsYTRa2)KBJ6Oz>qDDeH4pw@0xx4-DM^b(P~fa#EMblaar(Vl0}X`_ zMgHjL5`tOAsN{+%tQsauZI!#8Jr6-|KpRP>On3qnXa+FUksbzXUZif`_q-&EqE;um zs?47a!WdcfH(dT!yKa^X>z>J_wfoJx)PT+ic0djq+;4&*DA9Zqq(S&-=%4`_ah8C+mOWQvohLdx9wxkH%VF8O>wJU=&k`ef^T60$0jYPbuRTgN4RL;u z5&ecY^j*d6JwRQ#8-1o&-hOmpRAetj3`eJfihVwZ_LH#@(o*wiNgOj&fWwR2jnHb}TbjtYHaAaEha7*Y*D8=3irJ+S_r-THZpffw6c7NXOuP_D}Lc|sTSwWYhD>bZP>a% z77MG0)-!*m&Bx2U*uh(k){tjMR6x+0Q0g6AMmCNw$V%SrZH7AN`98{|wZy*+Aa{hae zL1-_;L*_yg)$k<+69=thO;? zC}bmpv|)GSbc-c-ce?KpVkqAaB(9r)x3j#LJXxIeJOV_NVTj>CkLT{>k#bg`QF^o8 zq8~T^>(4bS4^d11q=nTRq+i~bU6$nRZh^)IqI4p{afFziKjsQ_@8<6{?|D{W`w_p1 zs-duchx2WsEC2w2w|eHGsf$x_M%}GI0tPG!bB^Z>2Y3xR?vc9~`;Nc8#q-Bws3+{n zaO%8@p}|z2u9}_YTh6YvwT4nX_@dSCET3-OxGVs#$Yb zu~6`AXkVM}261?}$*)v`<2S5EmNy%y8|iSQ#N$TT`VoiYD@JEugBHmvAL42BB=OQ3 zC}_0yGF94al^GDnA~a+O#Xj1rBp6vJ{&F|q(3yfI_L`DimqR2XKO9+jmF5O+`dird zXc~h{-83YC13jILMyws|qI|D=aZnXS`1_$Iw>kCN?vw6Iw2+C$u=*MtL}T6Qe~o??)30EGG}sj-XAi?vY`YX@d57gKI=N|gGaBLV*)%=}*fP27c_<HB=_<8hwk0TBHmwi7d7}7&*)osM%$hGwhYdSrG#kvEPByuJ zY+aXlFQZv2F(|koF1}%J7E?TI7W2*i{;Q)eY16?kJVW}N=6OzzrUKD&WB%soy!s}Y zFzLZxJS|$8ybIxQ#i7}o*I(%N&zx7{X^}CTS+p#!iSVD3qSM1CzmLZZ-yUYRZE^5j zaC5wVr%Yx2qZ5yry#gk?O^*8~eI2a|IJ^k)U{49(i*90sTdeLxd$Ugh5y4+#|CsIA zl@g)9%Z6erF)IRcwQ>as4z%ySr@u~|4R!P|d-&cB3wnms*`E+VqvRWP{tba;r%)^4- zp}!6`>o=Qe;djDQ=2Zt6hulUy^ntuW+MusO2UP-Kb?eOW^lfZnm-Zy^{>cU38NV~Z zYH@0+rRjaz+xa!H%C99u7Z@ksEYwrdzK?iW1(;aY=lq2vYVsL@mGa~E+SPCs$Ln2 zI4P>9BL5+4DUhd3-pC+heR=&n4FR@;x*j#mtGY`NGMNFA@U%Hp z_AV~7wfr8B%-YN3WX@&*<*DCzX9v$aJI`>z0lczXj6Wy zWnJFrgqg({ufii0MqxV47hSSyN zv4rR@gfqUXhoZcV4ipsRaM0SQfjCmiS^QFL_&mpux#t>(<9fYdNE2(=+fWxk!q9%<*0SHK>gZ$I*Om zJT}F*xDvVNASfn5)8>tNUqV)6nqs8!E81dh8%Y2q^(}OEPVWOvOfKFVs*MW$r$i)s-(|64@X-+f!l z_FrQ?hLIZ1+!uh2XC;&thmPb07nVmU6P5NnBl=4J$zXExbo|gT^H0H;{m#wIUZ(n| z645CQqu8`^;76zF)rW!iLbPUo6I}Ls@ecvIoQpXWYUgB8j{f<_h)bf@%MZJ;VWW#} z=wncXEEmfgPlYcq>*v^M{7As_cv5#i#Vupt@7vxDw}I9a8Sx{q^!~Qvv|^dI zKPcSXa7DPS=aOzxc`VI58=JXHi^Cbmqn(YrPZ*5pp4>k{9+&pC6HVnER=)IYfUoCr z&g40!HxbxqICR}6*`Xeb6y^4tsSikhiy{O?Sj~F;xP7;}^FGKLAvnN@<-}x#mzJDK z6qRH}Q21^#R|@)t!?}JliD7W&A3(7Y)!%A5(+89R+8>~M6UxV4L+n+zkY0T zx}rZXez2Ds`F6g+UKUTZ`P!t+YQoY&7a9o*X1ary>E~5A!nu`kKBhL@KtRhb#LT>W zZh1z%uBrcUeamNk+tn$rwo=(lu(M^ zb9j^vEya9*BTLR;m&Bu}Sa-XZ!V#A5dq1^QWx)??t%)+pf984}uLt4b_j*El+Kk9N zAK7g+S1t5p_Rh*_ydoxS7Bon_OJq_h`pZmjC)E1!>g(1_BSrkMo{FK_P$%1(zA?4= zTHF<1yJUzcP+|zbC0qbr4uRxE>^LxFQcx-?70R?Du|x4!hJSU~E=FP|XEsYiw8lbZ zD`Nxu$pukX%$GltyLG?9#Txz;Yv%F9RIz%Rk2R4z6X*=0m{z&5Lo1~>^aNl6?M8mh z8c9xE!W;+1KVF9LtLo_j^2!!{ zI;I&VX~&YA{=S#xl{vfNpdG$TT4wzi`2n!>S*|pcImFS%=}BH+-4f>b@JJuIl-DLT zz}V;VXxRytr7QPNeK1%}v}P-~**ZLlh$t0lIju8Vn$%wH0Y`QH5=YK3quXHE^&BI3aTonE>Y;-5j+^~8~+n_{psV=bnB8i z0%W&tbYxxb8fK-e(%0950L^PA!B$bVB6;x02y*m@Y}7~%gw@%-z$cw%OYZ30MCHx7;vjN!9m)1s5Z z1ci!+;QR?D6Yax+YK(>luQBodzUm0tu&?76I()zEKnY4kdCR;@A=M1Z5T!zVR*l4zMY{d z*F^PQawJoN@Q8m)+A?=ItVXYdpbiB-Qn~-pzu~xSDL$=Pu~ju{@iuh-S3UOjwKrTKe;PcePGeWGn$eK9rOw2su9` zBzDZ>M#)54iQdk#G)*<&S?ZqDN2;L>1q8Sl_sqkEIZ2eM=*Uv(581w8><-hhKw~Lt zq4fnv6lS@fP*G&!f5cG+8lp=KJ@}uT-Rqn*&!nDx)fUZ6SrL_ac9kZEImU0K{n1Xo4ZXQSNm(1qDev74PXCVEOisBm%-DS(v8n}4e-@o zQ%_PqGM5onqaur!QhBx;sjkEGy_+igMow^3%Ab+Ix=2Y%1jk0!^}B+PyV{!z<&NDS zzt=7v7U`nxrLqu}PYg2%Rk0|#e`XbD*R~DH=u6jamv%@6ZpO zv24-dfT>73YJ@VfS@H3pOw30i*ZYkt zx%_UHTg zZ?;_h^j^NJ$wJHLCaVnP+Xws(+j?o77e5?_>|%^0hqbpQka$`EFSGYz8uMY1s1Ybw zv@@nekaWW{e~DZyHbb@&li`++tr7czqN$J zz?7SxzjK%2wd`E;PdAX~FPxzdVN6bEl(vu=ak6ZuNk zcK%>9eFS?@D#8T7ad#z?fh?}^DFoZwflqnf`qR{{;7<2dJPnwDHtNW4+?tHQ+vn9A zt9kX5kyo;HXp!&6{ovy_%1lpNK7Zbu)aTt)?D{4f&502VM3={6TNwd7`R&C^k2U!Y z_#LTotUQ&e#~!p@bddx}s3eUOc_|qJ0n68wUIE-OvanNj=tz7_l`o4^tuw60K|I3X zy#!=I4Z?bFC6AgT>u&ikW;?J`VpWO0BB48^6w)Pd?Oo6LJ*!s>y0C6^`V;phznTf0 zFm%$J4IT^*$RU^^WYSP}od_&s0DSSwUwo==i`2#ibP^3eaVDWk)sw|%Ylth~^;{A7 zqNqeE0JwPrQ9w!_h0x?I;V94S$_8U8>2lmz?{O&(TB5m#Buw*zp?z=ETdO zj1|CU?`dDVjm<6u+*m$O5IY;@Ds(M3OHTxYhtQJDE$UD^y7O`Qrhj(%jjv0!=CJNG z&8@+%XJamR1ixfH>XO{0S1pys0u3y4NN`F$cjBYnbyG>`oWssaE1SxNZH_}FwH|Tp zP4I4RnwFj2l|uIg(1-^Pv||z^X0l7vpo+tW3K5nvoZ!Q^zr)hos`*^+d&|Dk)TQR= zFp9ZTE2#WIEaa{a+A38bmrX8|q#*fK6o~Rxn)dhIkv1mdDNNvWT3}n=>V1at2t#ED zJ`~4z&@@QQNltk_?<9{(bDGcm@PwwRg?5tA8kzekQIwE^t=Vn{d)i5QgN|bH}~{(Fg-?wO$&2r@D$O!2}yY+JB`*vXS587khf+^^Bw_F>`o@L*|yEuhqoZl!e6h@V?tc)X+68guZuT)F5 z(^3?F!G!b4G2!8I)dnp9Y>plg#JUC< zP92Y#-qW1Ol+Bl~x>f(;GycYp7mafu2FfS)e8+?BwWi~)0@^NGN&$Q@wb#CO?k3gz+^au0cKt zGiE?1Rq~Xjf%;e4;pdfXh|4YhGbhO#xV=Gs*vMnqB7wmGw3c@JWBjDp%D?=4B~)}$ z@nL(b$6Ovn%ITvN;mO*qn7VC)JLiHKyKf(_6PFk9Rf6HSs1VX$KjTb!Jrm-heiTDE zpTjfq_B=Z0Kf{F}_9OK|Pf6IDMEQ?VER;d?z(rAo%l1bBUiW&Doj9)lEUM-XC8kU; z895Oqp;KJ5{E4-OoJ+Z@L>)f1c#mdKBIzJ~WF<$ui=v$6N7drvhPGG+mmLE6JPoD$ zVplsa_?@dmf=uTHcS-pY-%Ms|x+1Z*Q=i>*cp*7%JxGd-!462wNA%ad<%jD$;fGL8 zxczG>Pz5^FOi>~;%J%=o@_KGs-30GWi&baFnnl;AySDV|Y?5;@+kRcdUG3z~n$1nP z_;W1(*?}U0WDw4e=EwT=hQOYeTg9~Rvl0+Z)3#3%0Y=J35g3ZOk;hUZ`LDo7er#9Za5=_o&}`8{ZO- zbX1;2&@YlC#y`ZQInZRpYX_9|-3vV!b(3SRz#7EiQ%RQYb3xoZ0w|DE|xC3a{})WW+gP!ld<|#^2VV%k?DV zH%)k5cTw0xZMIu`Tt|AwR`eba6p9wX6xIYxzK(Z89y20V57T_2%sjAuJYI(@>PfH~ z$z~J?*(6SC97q>k3%}eVr@!CkI;0cE=)o2W7e`YF_s%|11JRB%TfOIbbKJlWHsBzn z8N>_@F+>J&9`!+!X#&^^f84Kla?W;L?Z;k9Ke1dAl+lc$DWcerld@vowK#jK)8+DT zvobC}%!}I_VW?4Jp>h6|fI(%5c`i?6Z5=dgZ*;OC3K5t^gedwz68^Pv;!9@@yz)dNzp6S$w-EiGZy!P#4*v}+RBT(%*Ip_!KpHB{LDR$?* zE6nc_VCSD@%nO!TE^DTq-Mhc{;0FMD-;U^{C=ylSpflEsJ+*s{)bKid6iyeju*e}* zRO<$!yeka#xnw;8yEzu@IcRE063OB2q#fg~*_Noc^J>`Y=yPP&p0+REU7SBKjI^%R{Q0`yeL6WoSLy2E?jpN8xzHiKF$xZ84%FzP`9(MMKZ<1}vbbMTRh!k8@HT6mi^qfM)9p64O-p)|>KdFyO!SKW20Qvp5kFK6o z`=gt6e!mT(#mg}~w7C(}Fbg;HH*c9s0e07jru2V=Y_JGW2;iK^wKPAZEQo&IHc zKzhE`K(E&$Z{PM+TNZkp6wt?5g5{F*`?=8c@4U+^YW~>&6hBG#wu8qZ!s^IjG$i2i z*~u4o2Xs6}z^jlUp1$c+j`d`smFins6E_X>_|vKkHx<45dp)nais?KM9Lk}+>Hk;R ze&hT7mw>bs(U0KjVxww*JA-)64QT);J%eWo8=e^r!4r)0dSR1wu74$;{ z-@3DD_8aDyy?kDMuNY=frZ$bMv^<8(aW~QFkA%R>_ayk%{YniQUGn`eXiKkDbWoF= zPhNwpp3(tNIxj&q8UYd(oVtvrc~jP{e>%>Ne_j=kiD&l_z?!GA1kp)n-Jj%BwN5G8 znfITmr#|rMR+~Cg`dKplaOXv~+v3RSR9j|wW=K6a58~mGCq;!iz+>=&AhKE5l~?r( z!l(XBgonhRxCbf;)>aZ{E9nfBTlJk);ixuE;E|t18_*Z?w`$B;*Xx*l6?AEQyi|B= zpLqY1l4iVbOSK(4cA@*)e zfsb30ECVZJs_xOskG3APa)`HBd{zOQhkAFJUJhN4!&+jpzmh24PB1DZ;3UmOjP?1C z&`DvC>I&)&m@^#8Xh$bZaJOHy)Ppi$0$sGQFeM)aQyR*dZGyVi`l`7VX{qC~W!=Qu zlqQ+PC7IzCQM%u8&XPLAzToEH=}A>-k!C&@7HK8TSRzSOW9+Qf!B)p^1#0ZfvCaT@ zCu)KQ`{cAj_~Y<5uYG8LVzDhuYM?wDkmcag>2~twFb^UMw@1+i|%rNE=MKh@+iYdMRe?{ zVRTeyGV0MrGBywI+RVEN_5H>f?uSMV%jfo04~q(1vw}mXQ7!=%skO&X--n-!2qv$q z#uX$8Y{}wbzq`ri6=O}L5>NVA=6bHvX6`(g7MHa`aBSoywI~v$gDKbmhRp#&e6Jnz z{-3I_H9a;`s{whm+t2@aZ2bkTCDFf_q_JGD$?x)Pf}O6hE%T#{#6bnJUhWtF#r+FWit8iL~0J9uIJa z925mZ;Y{+6arT%{4tMvIf3Pg4Z0C)86&WIW`)-N2syW_8_D{M!GF4k6{%rMr6mmOr zXaW+?`rDU!C=fKFaKSq`wXPpBF}AkQ|C{2F&0>44z`qGJ)fzN0Fv5j!ipmP-_}B-C zevG+U?}d4o5_55`Q#|IO`tr&Bn{KSLHGVD-qLtzPG>LoZzIo0v*tRO*cbdK2?n0lR zgBgv4WfLPAnb-!NbpK)CYS5VA@VQ$TycK{(tB*Q_8jTE0Q&&uyvNid6J%jy!_&Up= zxT1DT*cL**WXrOU-9lm>Orlw|U=GWQ(PwlW_l>`u#}xTx>YsXz5Y?KizTRny4>>y_z|9$_K)4wSa>xK@Eh4XB(`mQS_VonVOsu$^6Z2Z`>IDgI&iFS_ zklS+xo4>?7BaU-$ajcT8nN9zGbdbgRw4SC=47YD061rK!jwcnXuHHYBBQm>+m#h)VNg$0PV6EW;dxCmde zt?PMt?Wb5U7pl9F{Q%b|L)#X=_WFDiCDW}=4rMy#LY6w*^Je`r!6eK4W^VnRSy?AM zQeq6XB!mfJve#TR^X&;87#r=68OotX82-73Fie_yxGZZu&R>Adx?Y%XX8stY5zBk~P3qC}W9)NDZrq{cV;O4c?&kv@f2#XJ1WZlb&? z3H-xoan@V0{qkY1};RFOsbO zlJLLD{~oUXdCLc~~~unn3%esz?w$uZU;D7zauZ=vQTy5}2e6ya#w z%(C%vSBbqSv3@+0o{dbf;*O}$(9J-(WqB9U!U zWKv3|G~)Y^VG|Y;)L4zo6GFDR0b8sBV4&-tN^d!96pmTQa16>z0@^d%-}e|+o2RD%xnTTo0*nD@wOzcjm!B7X1^LlW z-PS!)Z~Uf)dE9Ts*W1DOnltGe{r`C%408QXuvG^oBmY^7BdI0+*IW8OmNW45HCrmr zHnTR~lL4zY(}_yix4x?eS=XTyoC4;Al-NpINkWfn@wq*i=hYppIri%!)uzw)FiNML zB3YF-h3PHPfF4sO{mv=Y7b3zNy{G7Y3(GS;j`q55EGHk_hcBZU?T+MO{nf3}pva?s;~Awll$PpARvutaEYCc9vacdJ-)?lOV=M%D%3t)lT{c(Z>Y^ z!Z&r$Q+{|j_=z%bV_Qvt=gv4OK9-WFUOwmiIaEnteHsyq>euZiLK$ssbj#Lu$5C`j z9a+p#CISMpDFn2|1d%W{%{qS7zWR&raX-z9){3v{M1<2E+k{WO4GP3A|97t$;lzWO z?E+a+J^`ca{jK%$HrA@z9DT*MQNJd|?((Cm6+j05)+Zct^5>|`>27VMW~X<>M4O?J z>#vPIg1oA63(9?NE{Z_T)wVM49*|wfY??FCfvCFSCapSZ$+5-H#L-@O{q7~81K9gh z6_BD)iV7p`?PbJ(BQCV}^m}F)eoIzsxk}IDWmDM0bDE~iroN;9ManhQ6M#!WrP?Q< zWX;$9ki-V~Tjybol%30!$GmwnZumk1U@0?P!&X<+z;Kcq&YQ#@I=RfK0$k)eculz8D{-9=C8jbyu`c-$DwGW)aik1>F-Z;{{j}?Zn9u3)r1X)Sr|A+O$X#O zAVfXd6py;AoSy?}Sk<%k>0SUU-khHWVF0H6^kwBO9bcQWm(|M>BsY)@}l zv`re*c+<>sF|AbDuib`pNqxcbPdnC)7udfxDmA7qruGR&&$v2QwsoxbX-X%l$m&r> zC1D^=?qPf?^N90#|?Da!^0Rsapi`u%(r}>{m@a{KZB`jV?zpEq_J%3Tw^) z?bT$}PbQ=(YQzBlXY%;l8V$|V98}(+gdj-*5Bm?shZRO2^{Pj4$)^!M8cWZUj@MT$ z=#{PEdW`e4FYkg|QIFHK`?P}Z;FCW@zvI4=ds+u9<`L*5*WxHFDAN0hOr5`zHN0_w z@9g3Ry%eik4HWK>gO7Yf>*UWnWm{eceSGVfpZXh42(%}K5%Lhx=Vj(h{{z*H&B)7n{rMP86V&8@Lb^AfIrSAD3$6^?h zka#!5qli$01mjT*dV7By?JYHRNPNRN(1p0=&^bKqxhYYglr$q@2sKr2Fctxm za1ft({37O6>Fw;hn0$ae3X*V~OHqEo3zLYA^d26iMO6!Q1rBgraJ%U;vHmj!m>t^A zJ~;^BZdh^elN*z(B}JMS%^uFODmT|M#=CnL`54^!*a_sTV470XLr^>O>MyB+E;rme z6?-InIp^J`IA$>i#3HxC#XX+PIoSS{8d?;bG8MF(Y&ZCRGi;F;D7DMS6Bh1XCXLM- z38h@LSD$pY*}Q*6g*QXPAFaT`!=Ub(pb`1eLL!*%ZvR1RGHtcx7KQghKuElRKTo+E zx9#IUIGU|-mS376xAK6UCcEr<`tHqRbj0L;$CA+T>@_CGnS>MK{rf-|fBBD3eIyjOnP$l(# zFn@_je}ExN>LRL|Hq>CY;c^>4k1wf)3DQ2+PQ{vrTqap67#4=3FoXA^%ppBMwZ>*E zu=;0rkJ;;|1L};Fbi;ygGBS)ZHnGrnSCCT}XI)Fw=Qy?fJUpJ+^X@8cSw>ZnAzDMR zKP+8GbH89Jc&PoDHh$LO+3cwR*;l553X{wjDuH0EUI^4P0z$`&_TKWNfIpzHBe+da zY9>)6cC>r!nYowVntmD}h(kaxSsN`=c~JRss+*CHAKj3~=U}_z6gcLyM`u=XBsPJN z!|VisAiuWcrYGPMU{7!FxFDnka1O7<VBP=)ArI9%R`KF6H8yg7(Qjq zIa~8Rf6>w`tyH$rt$3wY?e;H9?8P)fZ)-dqyy*46sLfRq#EMF&AqEsWS5xmL_jQ3< z2kpndIn&eAQT=LQ2qv-02{|bhf=+h_Cm?z-Bd+vui#zwbTCMNK)G8?gVI+)98ckB) zkmqJe{M8*@Og~)_jsdY+c34fr4-Uli5E9~^7^BW}oVrfYY$ATYr_Y8iJS66Xt-QXz zf@E+~hc6Utj~KnyQ(xk}=1JR&)*EH7wq@MSsd1w&tLv0aYmF>!{&p|OI_YgNrw>9L zgZse&`Y=)=A^#xKh4m~+_NIdOahr~}^{wZPhi9bpTvKr6z0XmDVwtJTT{0{H zL=k}t%P>-IIIhIu>?i!OvaC%St@~RJVi@KZtAx4PFHz5?UvF~`^z<%|I-^UgZKQd2 zmNTjO@x{y#-*BWG~%umlptYk0`*0Z(e0DZEn%?gMN_( z5d0{x%OqoWPocuX-fn9%+2Ka)A5!~zVBtX~KBSZ0BOkFy78`X_N))V76cUoU zp4Y>3CQDv+Yy#*Y_R*$9CzvLS_JH#}zApQPRa9A9>E!~RZO|ReRwP&Wdv^5|dWxOp zOIy?6jb?!)Xk3wU{EBNMN|gqavy1sMgKZhU{6$d#2MbOEhh=+hzQpNWaAi80L`Ydf zQwu{H4hzpxQ#G|tp{4?!LU5(T%MF+Gi{P4_gO|4wV_BQI`^Fpo3Ls(`VAljGz& zd1OS#3&ue0{;iF@?#B4Urzw}2utma5q+$nvFM zS+lwC#tO$?OWV26;nM2Dg$lDQC5KAC>28Eqpe%?{uvkR+jy-^=D2!ev3|0=q3+*Tv zC9MOJ})1Rr%Yf*)aXO{4Iep^F?rEkxCK0P9d~ipwdP9oy*1p-nd(pTgZ}s3U_%grPrngKZg!Tm zyikh+V^OyQzcLDp1aIeXx`jhzA1D{ih@*3bEc43FGlyux*K+d^V$>7W>!{wk-0Yhv zg_Z?l45b;0`|Bgya=EoR4=?|+l8v()C3cE}s%GY(%7G3g1XX&WD@{kwH+xBu#tD65 zVba(4xA_yjOrTY+p;-nJ)NYc5c@WzTxtEvRR&~scPqxkPV!9`xysn-up!B_=M>Rpu zdtP(lDl_XSG^rexF|~-ZjiP%s|7wxh*-}lRiY?7hR_QLh1m+(|^a5X%AfmnT2d@ag z8!OFhZ~*c9W?ao(4L1kgVic@+A0?amKtlG-xWBTvH)PH5lh0I)qBwd+lR+h3TuSf2}Vk+Svm7#=oFF8n{le6{r!h2T8pqE z=l<7#{H4F(R&6)RVx1)d)3M2nejJJSvAo!Sqv{u;{t@{hL!+WX;g52o8@{FRUv^h* zl!X$^0qTV0R5RuGsfW)*M;V)3DxFRNX=6)e<%3&cu(^)6Uo+hggJYXo)~f;YXhzy6 zCtK&ssq8F8@bZ!x3

    lyHt~ZyLU02;4JUwlM0%m@OG~%f#dDM*Z8n)bq-cgKt#s4mZvq}YeP9&6W zy@Pqd1|`V`1q^!lk^MhBlSX5Vc{#+oO-0 z0fzWE_t7$W(a|~>ZtBuFsfh%kvU6wSY-7Iv79rbDOMEqPSRbA`v6rv zv&vqeW_OU;IPl5ztR0kEwDXT0aS+fpY`9 z4cHu&rT1Jv0>|{X!CvK)fDMCDGkrry$jL-(J}H>1 z(1`f2w%dCEH-l@gx#F2%=k089Hc9=sa>y^&GJz*)${+UuvXkv*q1*F!lwiR0({dJPVYGoj2lhB!R&8Pxz{U5QY z*m~PLzT3@7t5;!~2g^G$3c@=Uvk!r;23csfLBMKqwwo=I;S`r#!TVcqNHr(!UeAfi zXk>Rk%jhz9{He}ZA*wUqRI%dyKG-)z#(wV+)b{u4b`Ky-iyG%GAcu007y=_Mf!L}4 z<5;I9aOcl^)fbt@$YIORNETgxJ(dLiKho-sqD!m?I8hi*NC1sY3ie~1Totpjq&rsE zVitv$>kfE>^_1x(nCc4TP)cR?w$XAZQB)Wq5l3Ls--`!&Zk1QzL`*7-35q@i{`W7) zjBx^5Er8&m=Am(-xZ!C(s&xF_Z|BE3hSrlL`tN$8PpbuJNyyLK4Si7I5V2k(XJs}f zLH7jG`=mwYdZ%Pmqh)jOA|!pD0Ya02Lnx#3KXbg_bVYQ)1V}R)m17Rn?8WnWzyQDB zwIvh$13Frh@}sEg`Rm#s!CVDL>`(>S=n#nsb>f}X+1ihzBr4C^R-Ocja60H^K28BH zN3>Q>fTQBIx9*FxWmvw`-^>o-xod9URwhQXZ}e0MSjalzX*YEz3(ft2_%(sf7EpO!m3F)pG98q$K|Fxf+6wi7o3uCF*JyX8%g#f9Tp-Mqk)7 zLNU0QF<@Z4X>}=0(#&|Ds<)uuPGl!2-e`8zUNto6W!YyZDAH-w10PM#N{=ltg~LxI zt3A4$+a7m#Bn2`jRhpTQ(a1?TQQ$WX-U6JPEn9`z>EWyk2-a?|_veEaPnfPr^LfX4 zOP-#Yi%b&!^7$BYViKSKp>MxPxp;StuS)>8cGhS!H{~q|^vdkdtSO zJvHkp<3zRPPh?@kVp6ICH1Z;1b2wTaZe@Buob{$Qsdqw6Yl<9I&scd{kKlhr`8YRp z+Q@q|t057lX^S5A(miZ_bZ2Y52+{3M(}c3|oi0WMUX4t}P|;+mg=xJw2?+cH;K<-G zXmY6RVbeXP*^DL;t_5QEH0T+6oNjh~-1MZeex*Z+J3}WVk3=dE1JpfFT%B*J2TayJ zpj*vU1McE+@w+d)Pma;TxdbVA-BQum?j!Ei0-Qd?*PFxRzaLCw@i?FCIVjCE5IVneFh zFOhZ--LEgEjMt{t>Us>dbzrICeOp~lPC6^0xN;OlE^DOpeGfOIc>b3n&^zJ*7^H$F zpHS88n=(wYrpx=Gz2p^Yz`rveu*lKTKaMSWHn+cMpCxn65J{0?JY}j<_>+g8EfI9% zQ$ak1d2{{#aC)0nM!W_P{>EC&tnmL(l_#Ketty1{2`5*2>-_TW9{iFd*VGj5jT)5S z&(7rkcP*MPRf~?krpctG>!SQ>uS$`5(yeCbrI295>^lLPX~#R`J-zbtH`0~RmicD>u=uXIKch90aabP zR-y6?gD|+flZc`h#K(Mw?#la(M7egJn@;~4f@1(y(yfN$o>XC2j%TCsIo{KA#Wc>Q znfSJBSl=w9!jU2?4@b{i8M-}rlz3w-9Nc8q*p zg_vOKhIzqA$w*-B+bcwnWL)aHbFnohaDqQ+bzKqXSpTDLu}S-et$l3qU1@oosUma# zkHB5>&n&dH%n>w|K~>$fq-dRT>hqyDb=f!DfRpw6FRmM0kY*vUkeHA+#Cs{4Odo%f zmX{mdKf?pOHe{)^WyT4=@o5?B3?ZNAm;^&||C=QG7W1Ih;J(xbjI&V;XIQGtmvs|+ z#CsgzD4ed9CG&2SrM5}IirkRHKt`P92=OJK#_twS$VpMy-}!ri7SCF+AD3^{;f~*muS(BHG5!m9$_YgbxRS%I{~CluM)%In zu>tw|;s|5%E~+A`+SxiPT*s)e=&0l^bi*kB339QK9HdW8+BlXU`rRO9EQn&y4h#yABjr>pf`0pq+yo47q?~y^ig+LW zJJ>K|g%5*C+xbn2z#etk&?`{66u|emd%L`zf?hKZkc@Jb6BpCLA|GTATgjEQ#Cvt# zu~vHfL**j`+F!oRBP>y^i$g*G`()jH8D7WDM+p48%R^e{iOT8LIffyA`qt5KBT5*XD9Sa&;y;)eIG$)^H>S+7*GX{A|HZXA zlizPC`Crtet;I3@DevgIFf{zBjRj+Mu$XZYgf3v8gH|F8^zVe5m+gr*=}&+wieI%s zfn)YT60Ve9Bol!`7=BQBec$0?vBzeK|5VZkIC*jh^^VFj?%Y77Z+IIPx%=BAezRV@ z;E3`I=;3?1bu}wMo)WH_nS+vJt*a4s%=k|;^6Hw&4<=$`#aFkT;P4Mkuu{@N9l^>11)ErBtnO z(S1Q&_{cZ?y#!s)0q2N#)=5YfVfLtj5&qGyzsKgXaI_7lc0+yNuEOCcPUvVANU6}u z|3#K{)6`Ly8T-It0)DgIw4fS!)rNmx%%HTpyHfg0F4*|!vM(q!U%2UGYhhs2EiNp} zT%nn@>ZVB>t)~5cx;81hTP~W7=oiHk7n3p6W_*wV=^^6N3xOW}bK20nM7XO$ks~um zYec9-Q?-DYy0H)G+t?fvzrP~ePj<#C?>z>C2~Yfz!YQaJlkrrQbxTxb7Qo?CdpP!n z*X(T%1v-j1C@y+FJ!;-o(jcYw#JE_PX?Wb~b^7VHDYb5IYK_Zcm^)pmPs(}SZT&N7 zs4-QVnd+)g#r5f3Hfvj-N?#N??l&v|m_jVW5l{!7&Lc9B2-(ci{Tas9S=;FPD*fie zJ$|U!8kayoS>M&y3IB}r#)HSQ>KCLc#-x3~yGAt|% zDy>3>SCB_h%}mi6V58(zf01mPA4xcj9V119G~1{mHbS3A2v;VZxz-@4J?*^`{%fo0 zVy^9~oIW_iRBcC@b2Kmzkr2j`ta#9{B91|5 zg+(C|D`cCi#Wo+@{-dOYQCJZzIi2ZB0v^L2u0Wd%3ONh{LkI*hgye3Ry8Y^_f$2bD zex4+`8R9`#B-kJc<}XzIRphjPPI*x33#~m^>OZNgbZ`;W zD9nQhS#BFxgj#e8!63xA+tRO2q`qE^p8hGz2QRE-#(j`z^-$OX@j~*VqMAaD1jUXb z-N$uxM1IabG49reYNzN_MO@@$Kl`0UbgWnw@tSnM@JHly99>sROtHZ6Rbu36Yep&S zR8=Io2CQ%_X0_TF&v-(MHG}w&Kn6>0Cx&}DDi6Qoc)(vHQw^RYCMxsQ+VUldBg`ZD zwFayv^Lv*ThBDpVqS!vtJPu4z5_k_|oV?2*R4FME)LvYy3Bh28c%DBB)4eo8ra}Thlh_%z1SX_mA__zyJCvG6RQI2h^zZFzYFe zlOJE9z@E7#ARbuMsTndf@(>-kYawxjh7k~$*6Q2(vZYLlDVRo^++bV?Du8!_uYtYpJ*VT!-UhUSIIumdrn-4%L6+-DR z(_d7(j)vKz#F6a6yFx@ILNb?_?k1zm@Vl*7(kP6KZfcm0O&2jwVnJ3qt81<#J}K)N zJZucyj4<+Bbx&OxD6w$e4b!<&h!%6olEVkubNs8-mwy`0uAVk2`4Y8z$dq#)53Sto z$JbgclY}u$;8Hn}txDHahx}h>g;#RcOn7IE8Qj~5E$V2^Mm>Ki;Ydpi#Ye>N9;3L2 z?eJI6@K`*IxRU>ra%$S7}yS7Toy7 z;43gdJAZ5|E2!0y`(TO*55~n`oc9h6>8-hn_%^oK0@c%@#myyt>+S3p3)@fofP<3` zut%MQY&&ec1!f`yoQj>3>wc!N%-Pf{FUiLawIMzjK5m_)!#!w5^)3dNPN{%$4-rpu zsH@v|U0IvNKEuD^lTM^U8FOA(anx^aQ??u4T_85%9yX=wv>JKO<*(`xBobXXIJCeY z7I2`+OovG04_iVA&I_<1P&ZTD%0;gBWb?LnodN;O2!a^IP!hy;-SW5i|CBF97|4ux zpeoR#V^)cwVgIl`L9Kb#$Tel?B>gkEb_pgs@2WQ8x{0ahqL{P@pCBfWl%of&If^j& zBYU{{e|v8FV+wQZQliK;XxOY{sAk7J**u6H?)lZbkt8ANN zsFvmMrc&eV5Cc40`#kdO-nkXX%D4j6XChTOtPP=(f^ffSN|jb~JCf057=PS2%g}9l zNK)#K;{_hP1$>V=4 zGMYC4dqS(pc8(q67mS&=gIfJ3Lv}sb{-kxAv3#@GxJOp04f*5o+A{nPlWWH-PZF0U zX$^VNw2`1RD+QN8fICo|JJhKMM>dr0*kmhEwGU_2%?tE>NFWr@)Rrd` zQ;q0^U44>qOwo-X9iwN{wQ+cKZMuorx{pT{Z+cAD;N5K~sMnxQrd+XUyVyFjA9=U^ zRn9Bud4K+Baw1`X^F=yz3u6bF0xwF(1Q)hJ%W*#I#o>{wrfdCFD`w;AuIY}oI?tij zfAA)eDz=XuMHxa);I(0iQs6}%HSi=GSK)gwWTH-aWmvSI?l6v4%<1dia}QlO(0-c` z50QB!(gcPSqZTDsHHQdk4bm6Cg)9BvzNDDf6lBjTC{>$K%p%`t{K{L>pyVAQ@Ons} zB8|geJ3xrqLvMM!MOOoCYxEdUvq9M!iOt!_D96d9{)?u&T2}k zcOLk|&Fs5N3p`T*A7Zxuc=X-{Y6eX7LIeJ`rp4#N*&N+{yXF{a&%+;0m?DEq={<0s zcv(;UyqDCnsS)qLwC)}HV}QFGL|fDzX&DGC<5=Li^3tv}`c-ofyEh6*XofLY3A?}e zTNNN(7~;M>2%~y~&iu5JPr#akK||{I>$%2$7hGf9K>n@;*ENHH+34b%kZ2;8v7eYk zy!IdO;Wn8OZ!5Af0&Xx-f^P$6Wl{r@Qa~zoM}(16|1V$wTasDFn-_ zF;jf*kGa^jRzQbC1xlOGp66fX)etoM?P!ytXqjd2H$`yx0w;>z*L_t+BgJ2E(k`Wb zNhOM7u~NzipvTSRuT<-PcML_LbJp2G7^KLmZWGTg8Cxq!>q0S#Y^GD~QrV;G6Nk{j zV|U;nD1L(NPhPVyS1pa5f}ZHKKs2nL326Drp6<{U$ik+pwbyld^=!n`-q`)5HUl5V zo?#*3$(JXlty>x#H2Yt~aPMmDR5_@-*V*gKI7Y1V0ke=u6@aC+3SOQAhde=-$3z?5 zEaz;yiRF;{j|Vjysb%bBqGY!%4@!gVbC9LYNM?%Nc+EV=%#y)!Yc~F=^?F*yvt!~Q zu>!m0ra#inwG=}F+C85B0j$d~)E7BF{secAj5V|S0#tv-_)#Q-)w|m{Aq(1$`%!-7?~a~)pm?1^C~-I_XhQLkRDh-i`;7OgY^fI6$*}4%Lj^5mwU=l<-M^dr z%NPFuvzj65IN}S$8MCHEMP9t#13X=uFhGsl3pN*A|Hu&U(hbYhrySaJj9x=Jb^yU5om0t` zRO@Zyi-AY`aGZ!Nn@M2C zX$C073!*1lTn`D&(8M8aWE>@^VMzuaa^*@2pU!gQ<@OGZ}yV7gNcikFOVWF7XS+3Q+hmKI0;XT1O(}3@KUf$@o6<6CECSIaLm$?l> zWjo!v!gwiH9aBywt7GP*3#j`iPD$Sa(u9J7u?D6%GI8pai()ZJ|HB`o2otH4Q{K;ayz}5 zGdl|@(Izr*HPN!3KB15)`imu{byFwtUbq&jUw=$I12AY$VkazhPhRh8FhfV{JK_&F z=?8Fdpdg`fI!Mp74#$ywC@46)WMF5dLT@j**9d={Og--crnUv| z^vkU%+3Hak;gFzVet{8XC@cM+o;%uZ1A7_2+eZZs1+?fb^XnTvb$PN!j^{C=z#*y7 zkT>`>o?2(^OIzi_uCV27ENa}qQPDdwo5BnsGl!3Fmv$Y#?q$Ur2qBw2rVl|eAtYV~ z(S*e~UEb;6Br9#|tyM!k{DZ!j9pmZk1?ix`;x#fKK!&#OU4$BX`1G7|8~;n^(1m5J zj}Bumz{1)p#M+VEu!*k!%6D=4@zm|wCQuaVI8hXzs84Lx?wFMRjBS8Ul;bk;DC%Js zg%wJ(7eQi-br9iCkJ`HFP@}(ImQlFHh*F6qoLlCM7}K;{GZi;8KpTMv)*#hpVl%>?J+bYon=c zPSV!lW>e1y`bkwAckiA`w}Uu&kP8wzBr3nxblDTuUEn(SDZx(kRo8&+7+K%T$McMK ze~2qP$9KbsqihiCZR`|3u0Td;)U2oCM1FQgxX(aauK)7xH4t$8GO?xp zChu5$;HhtOZx)jD%N3_c&j0qdd z51oNitu-h(L!=eZ8s*)ho@!=rl5w7jk2wVuR4+&;wYdM-Mf2c7 zn%~w*r$P?5|D%bjx8}$JxJ%q?Z&(8<`9)g3Sm8J26c@PFTipjQw?LY0>ot1&< zI_oyxD@Plf?bcPp7O{n&JblimXVwWF$qCw;oEqK<{-~U~86@J?V?_k;owZ_5_C|Uz zjQ4`zhe0skGJx*S%M&`*`UICCG%NCbEWZ5d`RVa2h-$DLt!DZ>*RJ;DB`xFmX2(#D zGv8Q`u*ZmrE2S~ec&ctBxxu>vUfZ4zc+TpNG3J53E7bq}ms5yW{w(hL!fntK8RW*Y zRs3V}=!ibpSnu)S2#(>0L5jzhnuDT&!|yJ~vjDnm zv~WLfwimh~Z^s-U)2^RmGk_g#<2X56KutXn3WS-&{9f>F`9?#pknTwfoF9{loiH;W zIu&zuY*6LQkqguj053_inNTrb?V3gWoH zK#CENiphDsj~(ZG;xBcIOn;X;{)!m-c-w#J=ALr-7ojSfdWFr5IF@^IbjB?G{QVrN zjv;$i4JmknN+vBRXj2K@MZH*hk6T@yE2I|F5|i8GPwrBDFtpkim+ifSzpcR? zCKcGLia=h&Hr*Cx{&!=DJrFJ2HL>HfXms9IradAGBzR`Bilc#E4XIR>pusmP$FS>C zAq=c(-j%CR85i3i@on}^oa8ot)$I0izi|D!E$lG$Cw3_JhlwUE3>2ahQY9aqHc()+ zcl@KP$no@09EGhS$e3`ms zg3gW%SZB8&8=@oU6_2R|KQ%U9a_w}CKJB>@0yVGP-JcjGy-Omx_v3ynnYZ*b1~elk zBez>VK{-aid->pe!nbR;=H1!#-VvU30!ATC#?d;E3W6bbR>v2;GB~0KrZorBZkU!O zX?}d>!alp5mJ4*pHzqzZW?|*?b?Q7ubGvAw^8Y^qMjSn0QlD`+5c}w0p`$ zc%#1-%uaBbm_cB&#w+l+dE|PF&a%mKEkNpme~MLR>{VsVoRQ5;3`VdX`>TIXrJdl! zAg_b!qs6R#QMS^XFHlO?jDXE0A&c6t#}`f3epy!aMI2JFynVe5K9Y6!UMtIQ z>D+5rG5YI>3$#zapQ4K(qw7eoJrzkg(R@0|8WylQ^-w$uSO1vsR(M$8`FLxyb-?}D zEPAo1EBt=)bY8QYqq^=p=RVu^Fm<@@Tf)j)=SrQx^vdJ<+2L#EI(@kMR29qHnHF^i zgF%S~5gYtztnzPOA-Q!YJ3G^?7EgX$S9IOC>iP2*Q;@HALQNb7Cj#XKn@wPgr|vAi zDxtR;bWv4UPA`VnM4W(#V11YN=uf=+0Aqde?c82g+rB1wK~YY8ZRUESc7^n_w>u@p z?3fZG(mbySVJxc&sfbnL8r}_XGPfamxAojwaf&4mfr<9&WhKryhKFZC`YD(;x{saM))S9jw8v1BG464q1f(2}E^kV+GXyG}73 z?2~LiHu`tDHOrUsv@0-Eaf^&{&GEG$Ou{aI$cZkhspp2ch^b3{K}Y9d1-%Obm#q&( z{k9qNtc7J>2>DB<&Ya7~+&=sHNG|JK~yn`|M`kFG>?FjwC4gMXo{{%8!xW$h@ zLy1KeVj!v}*GtiFsR8d)QYy}adTsx%~v+0>MA*!|)ARgMjGq2}!K9~;-J{=fWac&4&aR@jOgf&Uo2fDmbF zl8IUQO-?g9>gwr*lK;2c%ObqvBhlj+4{2ORRi4eNyR}J3X$j?MEnFV=hmsGmNKf@^ zw?m10574TFu05U+sd0AxSy_DTfEPr3F^ZFlKJ^NxEue7sA7dF`;J=H3!6WbypT={< z1E?1YSNOc*hT;EbGh-#lZTiX{_5SICxAT2?&h$JM5#_Z(!rl=Pr6G+Z-h)X>QUzsq zl70N{FImoRHljW*kf;-1>1*d32WF?4xmEisCReaRDsz42tC*D&hFaWmq~h0+SY9wq z_$!t1eLiZw&jgy&EphJgmgcX0Q{Sbmjmwj@$gn5i^u*L zS3*@0*qmL2f-;P7G0SJev{cz0k44=>h8pz% zV5PHbdSUf$WDmGd`#LQY0NICuEM@EsL%vH;WYqT7t#I(u{_Ieb+r$4d{(9_pOKXh-G?^9Hgu!J%sK+7wLQ1{~`-D zmH(S8eEnhjm~4*$pHO-Yrgd!McCFd)`}qcI?^fKv0k?oK3@*rFhOA6}BJ)dnSS2;C zc|n)Vd#3$)@VrOA#`_}N4eT!Tr9^+cuF%(n#DSnf7Q;_f zLP1n^KkFAqvtCvw;MwCxn_Ha{SE`Fu#h621qs&8EK@wrI!~S}plaz@`?R!60>rW_1 zD2mS#^GoJFmh)~uu+gDq5#|L7xfs3l6|B@t4vAk$;;Ojf-$X|q?Nb3lSC;A3L zJ_m$yxD_Xj$ob`2nGSnZm08WDl?+>66;+N^7gnP0VHJYLkuc%tu-#bf3OX6pg8vi@ zeDg#bU98?Rb|m<4*+b~n)3A%ncO;&hBXec$tGZ8W2z}9eTK>r6RM*Hm1UVIQt#0#l zt{$*VgoVB9S&?G`PdWT5|?~XnOU6_>ioow z(4JSGF-q!g|K{QP;z3y{s51BLuv!b*xyDB1Wh+aeHr_7Zqyic0vnPZ64?OIjU~Y`d z$F8^6&pJyEAPas%!op&TY^U$gZ$l&U!=%m_@vCtGeq`wG*R|(we!j3o=efGVIVY=+ zo*qBgw^FkQGMo?^yCBF1FPYgLVtiYmeT#T}aC545NWsaP7l&Z!-b1fOYF5NaMhJy2 zB*G}d|7jl)z^b(~&3P^W)J`ENQ{m%YWVIIb-{-pjSWls+P%~w5LgAlkfH51Xfwv+( zy?g9}^mK3@tL~9DJm!@NQp|xpJ#~w6UhMYLa%{mO^1exTHh;6i1zqE0;v49n=mso=739sF^R^-Y)NkPT@3~ECR{zRfG^&sBGCyEzUAbg z^2&NAjmuJkCD6WNQC85exdwqBt{y_-^c(D{rW*`l-I~FopnPmS^1qwYU#rUO!*J6T)%<Oj1+eWvHY`VT{3PY5P+fReyP&Z{mcQrhwAd(Au zxR))?7QNQhvb`H$)v|vSJf1+@Y{)Sr6f%x?yYhPEdxAmgcS}CM-&YhOxOBp6h+iy7 zwEx$-X1ocS?awidrzojNpeoNYoDvaF@d{gFZ2FnOzRop`6Fj~5#1!Q#l87Y*3kXtV zCd$`ixSx*YZi$|cC(5S=!ueAJZF-?0pKF-m%MAIS4CQ}h$Q$?gSVO+ZkRNWy-)zWV zA16Q1kRK2y-#<>iUz~hjL*8!4_dGopH@e7uOxCt}S&&(HX=qxo427!Cq}Aqxp2Bw{0ft*z*`rt#QC*N(ULuD-TiOLNYxG}d4kiBcdS zz^F`v*BfgyQ<=+j{4^w>Te*SMIZ<^_<+9&==DKE7sWUQTjrnyhC$JbX zKoBq?go_YBtZGp*P4lg0Rd`(MKOeGX6{i!8b7K&ViYOsMks?u*Yg+U7MxOjyHENhp z$`z$+XHD?=nH~*u9r~@yGZ%oEv;xCnA^^$K_a#bdvJAz=x1d1+;<#pfD(Gw9u}o9WttkN^QP90CL|C=v+{ zdaGn^y_2mb)QsO%=dR_#Gj}(RHPV3cq98*R$};1YrGzOnziZ2buUFr@%Z%nFY*}bt ztEJGjYTVFWlW)~yM;62g>I_AeK$TY!z*AeMpS@#{yw|@=)sV!n?CMHmU5A86zPNs9Obsa&Q%T`uks+d7UJa?SF7C3Lp7-9? zH~(hy&Ce4~#0o*G#DXyyqmO^wduX;fP+%?V)$F((rwa;nHr=Ro>}3aQiz|PVVbbraKylIRP@f0ExS6AUMS1r=go~x7Vl8AwGW+ zJjz|Ju5EHYS~N&kKF^H4j#ZCWv3nId$_)r35KI&V5ZnLxozrdqn^FBjlg$?oGXAE; zmsZB_%&%7Ob7g%s5CkWjJ}9D+L#)Jz9HpWNk=S7SpAEm=Q_I#c$rV(|(6&A%2y2Lz zwlf?I)l3eI%7${w%ekCcVl!Q9zryPAy?Re`qe|l?3@Bw}%<=Lo>+FA4X?i59a-1P3 zFRrm!?stjrf8KX&Tfv-)&4+++Kwu!|-36jQKnK!%(Hr#0j)2cw`~@RGS!ET-@(QSP z@j-Wah}`>KyJs_E<0$-0V+^dWKO{VA;!o7CeMw`bG^EB#xD=fyC_l==BIAJ2>>z0Y7{IF zI3{#v$+>TD?LGqb8c?Igd3IMi&ow)@S>?M?H&c!?*?Xoy(C4QEsG9gm^swvc&G^0( zYjhNv8-+^M!jCR&ASNVa~F2aK5YYpuVlzcT9xZ#VleJPQeUd zu$=zVox_TDRM&sEO2bBP>4%h7&LxIJXpcr2ys1$Z!!@NKMH7e$kA$x$V_t`y_iN>8 z;>?=EO49obg4NbT!}E%X;8lNae6Pe2)Edh_GqR7ms=lz}mWH3ll=Y~hOjtoBf+$1? zXqqc&CPgoFZMfsAHg(rVQ5QUehb1aABBKJzaiZBhPg;V!lsQem$aT|4!ymYIhq-Db zL;_}bf&~UM94{oR&SJGJcD?s|r*XAb>av>q%w;t!OE8N=nvqoO%)E4%UotPNeVjX} zzZkri_txQgStpLMOETJ&kQb*s4! ziNNy^qL9WWg9wT^;MP=$H;pg4?rAr2&fv>+hCfM_dmsoQr8+2Z?mlABGm`cgMdiX^ zNCPZKlyj+D_Kl?eKv|XUZI<<}Ws9$44t0yk_CXoTNM;E`WLzO^-+GsG(ebO_iLL4f zkt|~%K}i-s;ta`~uGRJht!5sJZo>&t#I@VgrfL)KxMuw};Htuj4I<~xA5!`8c-?*; zt3(ArL6D(e{WWM3sq$L&t@hDb1#{y}4`Of;KHTWlM#CM`< z=X#x6T^lwoao@4LMdWc7re_;2u?UGPji=cUEyHWLp+#9wvu&;q*8OSOHBK+EK_tp6 zt#2hOSmrrSJ#tO`B=^6(#8kjigwqZP>{g_t{3P;tp-jj%X|T zx0)s6i85m&9lhLMb<@Iruh(lVUvHOQzTS?NRic->qI!AHk?pQD_krEpTI55r}5)Tu8^&|W8^F6_# zxpSV#Ns3k6=jq$?@gol^AAST`2mMvYXC*>e_pC*LAhjMh3>saFL-RMWB==yrSN@s=$5d zqInrZlDx>MY>?*v&xBKa#U#De@SQH`u9M^>Ei;stX!>_U`rq_>U0ZkfzZ4xYr8Fi^ zpP5m(JflO;YH{*L&4?;-@|h<4CDD95O^akTBlIzuy6Li&)lc5r=Kt(HcYGAZ_ji{@ zLg*c(i6Dx|&g{!SiUMK2#5_8 z!GfUJuwkXx6_wxTlH25N@Ag_Q5MbXwlilpioBHOxH?LH4UZ3Q>nY+~e#IC43xJ0p- z10pT4G#ft;{%PL!uQz#~d-3dORf~#P>T`-TCM=e)N@&sPDlRRGAIs-?{r<}t+~M2q z;aH?9uGv>o`Im>t0T*k4R9WUFnPTOzdk%Mr5wb7xws%Ftd^U}ZT4XV1qi94aSfwR~ z7U6&gpBvlj-pM)Inq+kSVq#?a;&uPm(=j8R(rklaOS62HH+j^8_J!}Z370j3&QX=) zMMmZQCIfSquQ_leNaR@BE3vJqq5djw|Gm$+=l>Q})WnEYDUsnMR;5!SYJQb>&cTb$ z;pZdcGh8$E=MaN9iesI5CDVw9_-At(@%Sa~f^xS!KrAYHXIz_A!R{&hFKfF`8p?-9?R9coXk^q7rObPOCrcu?u=G|`TcHr47jCEubWC6u9 zG*9y^MTNPiY+qYh_Gn;);zAlgEAmKX zpvW?^l7Lt2(Yzg?`+;d!MUOGVPz<3UPcfK2&M{_=<@M{i`PiDXG)sX9{&&R?ay*1A z3!S3R=W$78J~E(4^m-j)F;TkyF=Ec5%l}Qw)OEd{0kamHzS`^!Hj`oRkJNaMiJc=f z2_wK`MAK~L0n)$RN4)k5InjTH%wDr}j${Al4P1c}?b3jHaccleS6gVQ!CYNqHds@8 z_h*6$CYWGC-B!5XRUSBc0$~I)u1W0oE2qZy{V)T+c&%I+99V@8TruSFMrj*W*vM^=u=PBqRiVW4!Mh=kM!! zYI?1Gtxl5m#!KJyrO|gCPEb2XC)uxf`<>|T&og+hk8`p_R~G0>ON@FJr)d0aIsreH zf+3zvBC4=IKS86M9JM<6QqOjJ||0Otu=fft6r><4 zBg7c>hcQsf-A;cptV)lOGPhJRJ${R=2KHmDWt8j6NY0JLPC&!>V~RGh@3S{cKex;{ z>@*D^!?1{BDHb|KU<!e=?21QIcQhCQSr&QH8+rI~%$;le+ME{`0(TK9*Q!f;d~+%i7gf`V5L{@5y3XQdk-ROeGLCu$BE*Y<+cDE6oOdZt#}(+n_5v zR7HSfiWd1b>(<`m&%mcy?Rw7-Ej17W<%GaKzdO*5fCH>$t*$xRc(6M4*32}cX1BKQ z81w#=3m?(^it~+v9Txc=>=b}GqDqP+N&Jk~-5x1u*(%`_vZp&3hu&*rpH|Z1_Gj*C z8%_&?!+j|bi##WCqDYc;YHVXKc%s=nGiSrZMnjSVL*fDueoe(N2a0`<1KfkA|mbjNffFprxB* zJmc_~RgYD;_j;s?I%+Ht!v z^A32H1~h_zLx{y;PC17H&iX42f}gavPkZ?1rRRUF(fLIY={(_7j1?eKkm8GNXWra( zL%r;VDW3aS?~SLhgZ;{5xBtEWu-1o_jUx2{a4N_0h+-gzTVqfAf)Nij{K>RAFu?>9 zOfbO&6HGASB!Fa1zZ#oEXMzbPoM7k{q;JlMVEW&i}!$+{{dR8P@Q6-)zjEepoux9S9pDxeU zE|HeTdBLUsPJ1?bZv-s^i{g$L_*Pj%%kU96$A0^;)^7U)25~ECz@;Q^<@xq&`Yvtu z!579kdRf3RG>>RV1Ajt=#Iq>$u$Nd?FPN~TW7OSH8E}o^cvdB>Br^!>JF~A{Xc>;_ z0{hoj@E_EB$1u#lNYS*)aw-B?scE(ztEH#ix#gNh?S^O>!V)8+Qja3t}T75S2n zw+Zb-{?~fmcT}73b_M5pg3ehx_d67ZHx@hU%?QQa`+K&C#8(QjNeE_8`!>A?L z{>q*sP4_*ZUBk7m7v2&EG8of{rz!tjl0xFi7kv{4i$z7=Q4>8SWrY*}*>#V1*WLol zu|O?70{LU61W3W+K!dfbZLR$+Q}jJo%k`h=@2?D$Y1UA&L&!Nb{_hA7EbS^o|E!f= z0+BSF(<>|LTT)qmT3A_LTNrxwXye*8aBszLieBDuF!c9V1`tnfmRzY_doBpHU) z<#mliOD!hwz(67fI`G3^1NXs$0&!K>1ww%BWCG(6_-=LJ_fJ_u`)l;O+WKDmzxF%r zJMH&I^-Edt;nCi&Ho&9Rt9`G>uW#pzFGZ%C`t_>Sr>$FU-|FjYpljFjS)uL7)U{vR z-}{D#u2&(aZnTGsvpw2=)!L=CNBfN(No6JSUJeB35fjC2s$fx2>e#8oJb%eix^9sG_3LG=lh$Pdx94CAUpbF)$fgFM78FXi7Hcw;S?#6 z%&UX#WhH%P-gwB^28g0Dhk2IbDVk-OFa!Q~hEC4JA!_!1&Ik2q% z%dTfXd)3wqAiOj zqAUxQXE{YyMV6EBp`Rz+xp`)8gQh`uS-}virAFV!`##=!tH*qdz5C?9@4oK^94;=z z%#z{tdCFv8nTIF?ib~vMBoP(w?Vr54K)rZshMqJ2UH5#hu57IhDD{}Gu&*nqH~5{qqh@*FIE9iG2Ki+?qbv^=Lj-9H z;nB}}ML(1RIIw=TV5Z_Dr< zTji)tLI1UvGa)DK$@b2(8jNZ5Q8bD}`SVt={_M7jqNg}7?5@P|ysiw#RAfKadWZ9w z7dnQYl-28wWf(~D41i8|i9!a5WnR);X|`|7u+Ob}y+m1HD7IxJyGBav;;W+<6|{?X zcKdUEu`JE9DlOOE*Yg4{Dk&(q@@rU(oHLTZJ5B}(i}(9~blWUeJ7WFcTaa9P_3cQsT^in0 z;n(9!b^o+_%5-c_vh!_Jf3oZFA6>s|yI!rnSoP?~&8WUu|JV0ND<2Hp>5LEfBX$qa z7|#!t<$wSs__R-Dxd#T$p0v>aYi09sq2FuY>AycbHuCo^0={%R1C|>71N}-5oFKDx z_3^s;;{Cn$to>hmum8Qi9~z#+nW5k7>oNNMidLb&(|@nkqv7eT zPTvT8H~XE?QV$wFt-Tv|#Mw?=d)izS8NVKn(L8B*^z~xh`&jkO*3Fl`{rd0ppx;m0 ze$l?y@7D)(&lg)m_i&4`h%j_?789%ROlbmqrLs2Csjp_I$j_LLeFW;Ge z=2M-F$ErGkqUw+6B*~Oa1NF$JgQYt!|D;MWbVbs<@3r}&)Tcq+)oJaVs)sX3QI+W^;-%uG|eh#_L%DyQf*$!NOdgO>M59M zf0}x;eBA>Y?;m7C=?#b*7nG?C&9f?lX(Y4f%o=vioTFSLjZn59Q7@#l=-wMWS2tm{ zy~)5kAL>p=j~qk;R#Y$pX(fTkK{wbp?|k*{y!SOh^V=wjP?>|G%1Q__s(krHU%&TK z*E7@Fobvkc8|~+=e6L@2d8Y`1Znx?Gl2-(Dl#ZrGboeIwjA0F*`Zd3Wu~G|zM0Hv>*}rb^>xH*9ZW~VAf>qCu0X&B! zEK9I|qp!~0x?xU(%#>}gdG?G?8qB%K);qjo(~|Q9@CR{J# z`Wyok@rE`@bmlS=#G~oEJH)`RF}iwPrDkK5o@9TLb*ze&-ln#}R?B!>#M%E?>%?e$ zdzt4$tK^lY!gf{p_U=z1mnNloPrwhPjv-ubvA3CYu^ihNXC`hrFor`Eo*COMw5 zEbHpk@VyDCff=^il@k-?%T1^m-*mFVnK1~>FKMCWsV0{?t)XSA_#vm6BPk{0*eSv9 zQw1*^XMFM2UsJxh?@7XcpC~ZL#e}-Rho!}k`|hxXmhs97R?98+DeBnG(;G#zS3^J) zF%~(5!~O5$#bmSGX8&PA|4TnOOS54e6FD=n-|$+ZpiHw83lzxqdbh{=w_1H1W?x?w zmgxk69>4Z%^xg=xc$n8E$z$q&r++qbdAQB~Tj?3~oBR;L_T3-QAK~D5{_#7%{GWaQ zk@+KX{)-yVfl+y&h^&f4knDO&v)pd)yn9TOiHnV6z4HLmv_IzrPhp7IM7^kPxBqtJ z=dAKW0qL)73cJc5A6j3ObFKy;ub z_Q~~ge_6a#^Oz3`oukN31|#92%@h3LKx;2L&Qkj;cYQo$^c3UBm=t0#jWNayf-DSA zV(6$WW*B7iv{~-6pK;dLU$p$nI9x1E(>!1(mInyYC@i){>rR2X(;}m|&wfVztv$Nr z4-7m91%QYv7bU~X&S4tD7h=LDCK)fR96w%>*_oGnx4}d>T`}? zXR8|X9|5 zn*Ml^y>{btrQS1I9G3|3g8g|d5aKzRV3FsUx#zt&(H}S~E9E3%rQLPT$_3*e((V%G zM!q|#2r0z_#1nv3f*E$iRqH!G_AAQnZk`>-1&kx~t+Hnwcz43f;soxwgOv zZ?f&t;tFZ0ZI0BieMe$E8}E-N>`y-O!Hds(GzvE~@!Fv&(+TJU;arg)p0)RRV9UA7->3?>mKKphDbRnL z%7}~%H*NdB-)FqtG;2bPHjLBpp}QN`tWW2r$o&0ijJbZ^ASkNa;QRi8vHmzt{1?YL z=UWY|*^~8}%Z-zKnox5tATwl-J!c=Zmo9Bx6eIJUOz{+tMT()MX8^xt!qWEj8r5+Q z$7We??^4kIx{=Qti>-j65d#3tQanpxI#GL!_4fLUw{4QTMv;qImZmtGp%BM#kWUnW z)w03fZ|OZR-<+XI|D_?)Kjt~q_Osu=U*9||391IE%J5m;q>Xm;$=In+ycAW}p-7yn z0*WRSi{saIY_iwyI3En%-#(n53to*Pr$`uz41+1BEK#!_%PHP)Ftc9H30r9|+Sm5( z`6Ku&>W~0Y;eZ4QEmLy5L-L~i?u{=rR$q@GU;1sL_z;_@k6V7+@~`@z#Y};6ui^M_ zwzt{RXG5RgI)&?+s>9%_s*C`qiU={-D3$NqS)rxH68X8CZb3JfigOKjdx+f*5no!7jI0G}uLo6t7e9l$6HXgdO%Qxy`59Wtuc|IITe%sJ91@p&`x8EDX4naa zVIkxZg?NlPNGFV9w|&OW!I}87PR4AMf74bbl)#h-X^Lhf2&tUDEB;yg)@wO6jeasP z!T(o}{s;D-roB1#)kWFi1kazkk`22!Q*B07?X@Gzi@&6O7?mmWXYvCqR(ZrFa3}YP zy-9uV$k%UfA3^P3#U}*^)pdG{N~V1`cK%1LRxfRo{58?1_D$Wt95rM@$MBUC#2<@_ zSn6}CDgcbc5>7>I;l#yj1|+b6KDD=awqVcb7Ey;z#54=A3>8{TAn*O>_V=cY8om4R zj>c-|s*3|ol31CQFwe;H7b}nKyZGM8Idw<*{H6WYgU`)S~Ug? zEny54g+=jK{hj^Tr=_oLf4ryhb}42c<~YEykaK!Sq2EQqb6JUJvbR)}Nxmpg77Izn zT>E*!Vf!9J4Sb+| z+i(%iFEIih1&fT%LgJhGUjyh*_E66fdZ@oRVcyE9Jc}fiXK9(zr_MQ?9$M-_|K5M)9L$Hd z(krud&+Q`cvC*FO^)=T$>#4Y2A=)s;bAuRiL9FNcF`o5G^Q;)p`aPCmpo{ysryNf%FjB=U@BQum5=9 zy%CyM=<5;A8i+81Sp*r%DV4d36uVejK!`Hf{mxx8=3d|R;;Lw7nMsx>o>BPEPI_nd zd~Z{P<0oh-AjPk|6)A~U@!A=$o_+hFJ2Em;I5pOgWomV-ojvwg+6rxSaWIV+3oj@m z5Q_u>!19p2ab)JoVE4~{=R_{Uy6!mVs~g*1{h;} zvU|!j;Uq!|WORiLcjZhjVO-Dmnp^IER+$D7g2#zN4$O zN;s5fX1EZR*-L!aqQ(~|7jvMVtP9xD92tMSO`5@Aw)xrf5E1Q4>ir#+JjF`=I0 z$}^saa;Hw=40(9QQAj}rA;j^D#4YJQve&U;j?DVU{b0#;%x;nM-{|GqlKV5_k|R7# zVF>`562TT~VY}76Cgq-SoVWdm^w1KgAMdeh9vK#6CNC{J`sib4?)0z^xYzhp`N7YE0M@#ClC#Zo8_ z+03zEFUlD4t0w)<4JK`qoq*-DcYr&4z45rU{t0Mn=#_U%N3$mDo_X|>2r7x4R%br+?$mw&U8y_$7}0tom+Sck~`&TNCONJ&td0)iA0`EJcC79 zREV?GLsa6ECl-_!OC?2)5`}oCbwGUQmF&ZLU;8hsB_fuiyQ~ISIyo-g`)tnvMcOsu=haw3bj2>WGR&=z z=}yRsK!FUWsxoLjKI^tY)A!VCd6G}8vDI`pN5&1mfB*KH=#Kc1!x%`ihzXI3ZD-!x zbwj=Ex?&4yvz+Vb1)i93_L}I|{<5f2G%cw>mFbpEhwt@!;%jxR2;8M@3@GZp)#2Kh zU?A~x9o@^nTHNi7cF~r$-jgi;i`erVS%;)wX16ocLQ51Pl%%K>R&h-&tIl)W_Rag( zFZ(PWvtO216rLbf#tKf1-{3$QD z3-3gQVIm4OOq5HCi(S6Ndw?9?ZOdCcd$F-WAEamiFv2{`F*Fqxg!`XHm3`TiZiIq! zv?}@SxgN7WDC|-mTj~-sX>x!>hf10aZ>}2W6zw3oQ*L*|rj&~MrM_*l` zEt!>(X>Ns?wTxwn@vl=LGcE4V`T4J2n;JE#9BK)c1`)8M-XkFe|}E)y;fb{ zEXzp+!_p%6LxV9o|3v-a^1SXvnXZCt!$s4_QUBco2S-IW_UB}ZrZ}F16iC2vrmtgr zyAO|DH&!!$S&|;M9(Cp~Gz}>ZaFF6?Y0k1+K3?_P6Ir*Ka)Jpam{4crpMH+Z)_-%) z4U05(WJzQWouVj~S0si*^x1ij2}??Qq&27m@@VkM(9c2dyKMINt*Q*W!s9HIxm_i0 zr=J5VbSfN%48(|M73SuD-k-iTKf~H5@KZI$N&ZrtC$bu+=ohQH7U|JXRQw}HpWH6y@YaxI4RmbX`$xZDA2T)*<#`Sw%whyNo}$BC>ECNs$wKyOlNJ%hK*yyM zS`}@)u5GyZ6hsqMAOeP!DT$F`$*jCttyeE?l$P)U8|>)3`Lz|-_ttQAv_`_k(kzE4 z%rYVd`$wa1?nb@pYXb630i;}7=(AQbfwDmNy#@ukwlOjOAM5>zULa|f;g0g|_y4eI zr*W79z;F}|D8F$y!*gMV_r+<^Q4Dvqc;`W`^>}RxW<}9aND6=|ps|Q#eD&gAe|hiX zo;J-P?y?wkS^s}moOIk}HEMUyxnS^{hqZRU9;MxcP(UIQL@doc_U>=qJFmU3%FFBI zrRRdysIMF4A`Nw-Kp_ z#HbX*VO8QO>aJa-ca`0`$=2qSKTbzFUf8>%!+|TJkZy|SX^!H!im2>d;w~`-j-MXx z*P^Gjt?}OUGqgwqDy=Ar1n8b)FYEHuuludXGYXq6gqs`XSUYO|&1c`GIquF485U6{ z7nD(elPe6vfl9Y~ufsdup`P3ZCwM+bIeN|M^Td$;QPnM~#HcidB#tFq{OXoV9XlqU zJ9PQK(bEzTije>o82}Op+c4HahCTb}Lp`(wl3y?40)ada8HuJOR$4#cH}%c7j3q4qHXTav#s zAwIx5hR&+v4>Aqr!)h7lK!wfh2U-{>4dO8dJZ5-AGXP?oI3Iku)hX4a0%OR)|K3;zB3I|y|^8SM_N3B>=WLcIJiDi@oVm><^4a%(V+~DjHK8e~0 zR}M1(6owdJ0G*?}+$dMEKdfqnKO<4}6Z?JVSZGB@ue2`N(5>|-KT?la0uciN;aSKX zXuN9p8*TEenJJqs)iDDvx%_#mQ+N}Cd@5Cdc}9gCV2Dw)z?I?E)X zaW1$?4&izSokv9tTS++DuT9}qB#9BjR%WL~FZFmQId(63w?o%vX{h@WsCTqai!|S_q9> z+5T!}xw&g7{sA*8%h%2heV>+eKS~^T_xN+bPkGUUe6lJbT!q?1iGMSD9R03uwtCa= z+Cqz94q6NW1^`2hDjewLiNrhOd^}+DFn31nB{K9mzAWDTR{zOWmU|J2j7+H<;zbn@ zg&q9T`R7d)e#y`VXZ7~9xR}}vt>a^QPggLGu0GWti9Ir#BKldstjEd~t@0i*@AT)Z>if36E(O6NQkJL}9jCu5p}EI&bHhpIjIuz(hO%{HbLy z#~{o(3rMl(_PJz#(2b#@TPgBeIJ><*Pnqm1@npVp`3=DrpSg5)oNbxqcy!+-S3P`5 zR5lhtnZ+U{OGM)TUcCL`EgR-E(Ae1KZEMO^%yulj^`XTVUfn(#8_V-Dgfc>a0#wB` zH2^M94JOSvb)C#5>Bv_eB362eIwI`s3TJ2%hFZ4j_hwKVM> zx&Zahdbl^s7V+8WeI^sRo}oImvi`g3@xH;4v0_Vy>^q{04VVIq$jM0J5m#Gc!wrtK zR(~~UwO1Q*93?}ZOesXd1oDXGH*eTY*3R2w>tr5-37w5L%N$3i&(E`7`EFE-hg6y; zvLs@FrHB-7YK&69d=;x)kp z6HXJ*UoFLZe$>`EQ(N_>#aUX8Q@@O!lYMW}aT821!GzkAgoA0Y)iU2PWAm-^e}BmM z>K}0|f)veT$Wasp6IU-TbU0sLu)Wv3sA4Yz7+I!R22o-HiK!Mjw!YZq++RPB(0YF? z1eOU2g)mX{CZ1&Q4o9ncwyUoC=B)76PYc$~czh#Bxl`svhF57$QKh)E5!~U}|JBk5 z(UZ~dj{vLEgrY@?;o~2ldmOFq8q~vbqp|A&O+my{fPsLgART7d(XVSIlD`d6EOopy zWK{82Of=_yieov%i!7&VAB;CKWvaa|RIn-nOcHRKU*#zI`-!OspN+oJ7=kIn z$P`Z}V0^RMF=Nl|-WF>#6>bDCiz*eaM9ZowaXf=LxgTu2`tbBy8nrqF51P(0{#f37vc;HwacL_sPiak6{dh?`m+T#(g0@PlE2a)-fe^bNefT~}7g8oFl? zc$8uXWhR{jXma_j!inYd`-=AJq;xP>g&+2oD8eOxU7jrc|?YMp3g|E<6;Q{*^UGRB) zP8Crir*Z&73Hd{*eRabJ3%WEu+~{m`mJ@>N(f^<0m~YpG&FXg!Ctv!}kHy0GHAM2P zqswjIzYA}O%3H7;L86E_3B@1q&1QMtQGdagb6Y;9wf|ddFozwutP~}RLs*e8CGpxl zwNshDxZ9ST4nJpWW-fDVp{2zV`Pu0G5?!j$)=BCIlYLG%pCdj$@3?W~jc5PUIqK?@ zSx9k+ArQ(5*b~3t*wcGtpQgV>Gb57#MTuDD5JYrsnUSSgUUW2RHR|vCN;FECAAvQ1 z5HW~mFoaIx6{fjIkaEGJ5RYqd<3(eJeI90XJ~Jmds`8@amw^vG^kkkU2d#`~04X9~ zge*g;h){DMv!8eCS1+XZG)Z%vW*J^|a4$dg$3|y#S6>Fn3d5@iatUawHamWLd+*#$ zl+^^0`C`&4YVwPN6V7D zIiRF^U#q`;D4x%Baz%H&NT?f`7xc$l;CQ{bQRMnQi_<)Hf49i*pAM7{1jcP(;JG{o zalTgf{EIF6v0PK=8ff2HF)ZqO8L%mK-LsLWn;v3$Qhyq!v&6>@O?n!Bfu0k;UnhQ%HP+rk9p@d|pAd zmndaLq`1|8Vokz!TP@oiubh?kZ`*-!#Mf6?#1oZ942=?v;=jZ3D8JA(=QiWJFb41( zz$`=29H8j13x@iGDv`9PXN2NyM~C5q_Y`Jz(jDO;vYd=)1<*8PX<0S0Id0Iw8d6$x z?=3+i70l-7N8v52_P?EuDN9D4`On7lqwx$B#XHn~$)&?u;5cT0{~}Aw*-9Oa6LkuVdRQE|VRx%HPObEY99NhVQifyt%F+GpeZwz&QS+ag8);?I9AXeh zajdgcbi3pNQ6&}s;Z#{=5nvRG@~bTAmd)!oes9wE+4_JI*VIzv2V?E;*A9|-Zr(Y6 zwKdlMR*30K34W@#vF4=#@^{G2|ER`G8}= ztWiUL9A}s;MTIo4aEMSm1#6ltCC&1!L*&+oGqyw{KZK}Q0a#R3#3Xz6e(U(`659UP zn5d3eP!UxHKn1caUt5k?-#R{=K2y1AZkKRfrxczoN}(Bs!+@eI^Eja$q)0g6ZkP(i zXXyRwK?nVF+c%$)qX&S6H1Wq~5qS=B`T(%$aZ|0o9bXTB{rcIfHLA7C5`_s+Fd`TO zh6dvFE|<^ma7&}ymIh1Q5@QP(J;(aa5@YMc`YzL8B+@PaIOe%qURboNOVB3QABi-> zLzdxrmUD_;FY)+@QczOnk;#S6U3@fm{XOa0&JHA9w>%V>**gQ}{~46=Zk>M|!=`uq zXv+s}jhS|TKpCE9Bq-CAs4AC%X5T*d-HL3j~8#nHV>Z-~DT0{U-2=a79SJgg`MKASuGlk{tTeM1BpwX|Ov{y>8lLq+V`9HV2 zsQA^~x}M+4YN;ozyYS$(gVtn+%k_#XIuS_ROf*|?zQRoTWo(S_U?Q(55Ft)x<0nFm zh5DaSHx!I%ZKQ=jG|xihH$TN3g=l@_e`;BY8s`r-{mm zKshk2dz;{kAvxDtqd93QY{Y98g6_7*XcC?i_t>u93y zEe#oTj4;3yOECcZb(M)q7qlQ=4;wYymK}a&QKXbP89z^VCVkXhuckK?HVY$cZTwC9 z9qzdE$pca5DM&%0NaCrUPo5F3yWr7w7jKC$4~pz$C@!~T@~}Vaf0kAAdEkV3Up~|P zl~0UQZ6m~E%76U^8OT!!hu`Leuiv$uUz#y8{6a(uC!*B`_ z<4@&cv-A?u4$rRt^BqwG_#voJs!BwLL8Mj!`1KO(hiAXMuxE$xgX`wq_ms=e722jrk*g3^@X28Zk0OA?4w_?!3is`JR>HozzdbvSY(rY|lma z1eST4#|%+q%%em-fvuK7f_0$vG271Q$_I>Cnw6nMiE8|Nb*Qlanl{|Zs$B6yBUR1t zG~y{9D-5I_x_?{iV8ej+fwjes=G@ z*Ly+Wd2b{l#z2-~7>p>VPb?fXrA#bx`O58Lx!vXU_A7FU-p5AZi+-B9uVJ#@)o-6gV z1;<|1B$Y)`%*G^@2O{7p#8bq2UCBn_*B2V-ePutXV}8{7_82|K`mXAbO7MN6psz>& zY%ED#BFyWZ{h_CO^!TKh;jqjTo=0JUNJgX^Es_GE&E%F1oo{xwgkm;Wu__`eW@VPA zMRoCn?{_tux~R%n+!I);iq76pd;jw(5=$W{`=GG-xBKpFxuZ=43Ac)FD*z!G0U1e< z-*w0R{G=eYf8r=d3u!&FKOV3?DoRNNgcez%$`sV2B$=V5#S;0s`b54=IK%qN?`wXG zijrq!4ig4pEW?`i@-m@W>$~1v(nn*I=SK1IM~Fe9B(e<0+%qM;^9{c}n%>=1zn@^u z&v;=FzW&HCuQn4A;${~E1ToJc26N6L*HlvJnNVR;J=o>(`fl;6hx$CRBdxPJ&IwY8 z34+zKf6Tq>wcWGcc=u44LWmV5nw3~v=bO@IuIrx$%(1NVyDiiTQ5N>U-{h~`CumzG zqU#D)6rdoEKuqLn=|OL&srgFjeWvu!v7A?`wYZ9~{n;Kj)hnnn^v;eXjY<;3NEA>o z#n3D9{Y@4fe#_d$YEF7hpzs8Z-;k4h+#a{aR~DY&^*JQLbuc8(-wmmyc^-0_?Y|*) zq@L4l+)XgSlmsjmMR;e>^zFkv(RK7RR#YruUQ`k=5G2AguAc_FZ!x@ThdgF!hC&>G zeiBCJ}v`U9swS*00Ei{L(wf@@$a-oMxhGjw=Mp5%5@inGtJe0 zm7G7sG7AB8s%383pXx5JL>7w*%A^V_cjE0cyn{QVb$&g)_Fdo6CNchRJk*84QgmBx z=J+Pz0}&Gc02fYNykFpc?VtabHPIU1bkr6M9-ZX>b?*n5RL=wx zOfbO&6HG9{gcAV49D8~Q$6hSVbGR4XKQUUw3XC!2Fh&dml;opDxrJjN%x$3lpaTF9y>5$b!fB}Hz^l5_h zI*Kim&N9#-lnPwlRYS+U7S(Ejl|&>d63YX~)zoUCRB(Mr$W;U5xOW8-qw-2c_+et+ zyPiC&H`M=XiqP-z8_H~VYF6bFBdst16%}(l2cXJTSe0+d`>flK9jp78NWpl*F<6*fjAje4E81^qgPn{3jCz-bAo$4_JmGOtTDt40I0m zl(>DwtrQT?RF_P=PPwSWOBziW;0^ZOm}Lts<86~ixOqpLzPBwk2t|TuCb>`~Ug5Qp zVcu~*L!Ty@VF^VegfWe3>T_qc_=LY4P2bPo8zD?uMMM<_gb>I=;=5*y^qAj|s^($R zrVCrQUE9%N85BN*)1)}kTS1NjEP#-4_Ae@tC-*ON6)Ap?loGenKY_e6R|{Wn?Xckj zAu8tp{eeYUj$MXI|PG{KSfVRW1`g`cj! z@}JkI7&|P|6pJ~AMwmyChGAL$t~;v|**{hz6gLX{b3S^l&9vx7ijoR>!U2j=!i*H# ze^^<*6)*@E?hJhnM>$tG=Y{{BThK}K<_OX(E9zt?K)tVUx4*qsRmAgzA^kEYubv*Y z*Fg0L0g-7{;=+#qt%35^KnZov;Z$&ea83P|>$z}Dl~iQgO^^~5_Q!f855qxs)7NlUv-)zpk5X^*AV4x!mvI2KmEGCX60|- zD_UXYuMkl}B0&sGi_7}I?0WXISFNX-KXOn4Orh0g)!pYT&3UbHWQLqfC7yC8hY`<1 zN`@58eLVKnbyrMjYBP#Le;_bh-=s(Xe@(%tp2t&EzrG$LYHG9GD+u4N*jcpAknI7y z1UODnRS8piSMI{VIWa6y=VLk1XYO9%hf7=i-t&mVkPt=VJEAzlPID>5O_Y4mBNlt( zrCw>4Wdgn9?=`n>iO%O^Ow)jqSW1M)mCs)$l#Cz0QZCZ0KmUxp|J4%DAW@#^M5@TM zv_gv_67OEMdqk&;_B3jvLuHHcoGip!PqKz});LACWy0lOjor?;nd=~0$Su&)p0k01*%0hp%# z`mXWP$If}Y!5Icf{*K{)*gnoq{?Vsyogy~N1Hw&OWj!hF`BJ6Ncs~US(9hUvEat74neq^pDH!PsrKfo%J*BEc5rAMOUV>Q#Q+T zVfBI~*Y4 z&wmH(TWK6Ff`dHow~Asg;xOV8?aB(_we*z_Y*GyLr4X~R^rgmA|EO?(R?d<8CY)ug z!zqRcAjEKh!%laF*-wSNPv%dfhNmVn`(wiH%$ax0?iopLl$|V~g@-mz@cYcytEKI3 zwX72QUH+=vwSgh0!*U`|LyqV9a0Sl_Yh==Fykyo0*Bo8nQh2s)IByXgl0l^ve~e(D z(A*jFEU;aem!t6&w%TYJnQMgErT?A%P;oci=^eZtSeD~i%yE>nq||R6Cl(d> zJT7-(MZl*OmJ1s_G(O|v8ct2KlT7|N+1gus^4D77g)U<+x@YC^@U2v%$a>XzjGA>l z=&VV=YO7_Pa4UOc{Rgg=k@W(AgTWLvQH6lb@|^JRTTL2nJ$8OHs#=}9hZMVf!c^k% zxD?XQCwTfvB~yv-H>FW<02oaT)HY}b2R|FN<~d={3TFBCRtBdBVz6GB9KVe8yztoG zKkvBYR!s{rD~c9E1q_fBj1{b)1I@Od^Y~k@<>Uswzff1|;c4CT=ep-|gWr8_(DLVn zBboQVF|;tM(hDdop=nj+0f;-0$@9Wv=iD`5!6Vt>gxwzjmZh64Sg`V}p$|98uJwJm zQTXf3W=n^B-B2gMRECTO09A-PCrjMuG|MKTONSfAzh@KaP zVT&$!x@ceY3_FBFyei8KM5;9Far{9l_&A$ov(V=k*YFmPX);rUU`QS!`}HxtiB2Fx zq$%(JQjMVVICHnO61 zpNnZ4)qPJlJa1^qy1@JItfACcyVu{TZ`$O_4+l54oRUzz61NDu#RUbo%#IS26YvxT zcnV_{V2(*V?)xi3lcNLI9{XIIq`qCkk6A=Po}xLHsmzc!*hPwzkwjGR7o)SrulvZl zBE5D7f&}R9T|Fwxj}4BFD^HL=>6NCRb&Wu;A3V<-5))2?^>(tX`=;jpObKYm79FTsB_ph(HuFU?V z0Bp6iF8kE-x~{AIz1FS)26BlBb&C$h`}?|@XGL3I7sogUQ)O{=qR!P+>(6si+`pU} z{yzOApP$nOa?J5I!Q6Kym|%hlCYWG?2_~GR&@_g8Q*C|qs?hW8*8dH;C8`mviV2cb zPNfJz@q4AbE(|&NQ{VKSY~alU=~Y$hB8y;-;c1rPDCgintlm)`(d{h~eI*{JyR4Xa zTyoQ6AHCj^|F6*^b9PNI!Gt;j)%5O7;mZc^mS+}4NJ3ieZAuXlt4O72g<|I}UvuC{ zP`sbZmR6SMEvYPf1a9-sw1qy0qkcni#(0)8$=oh9IJPOX&fN<#-YaF5e^JF z^wIx1M)8cKFiTT_VKEH>3QNwe`7YQDM$Tq=S9tWdUl#AXTQdQU5M!hmVuT@v5Yx_5 z(c>k4KebV0y3amo&nsIt%xRFSOwaEM55Ar|^5MpjQEAz{^y^vK;nn*+G8s1BqkNAr zWbr$n0bBHJ1d_zFtc)pM0rB$)9}3&ncJZ!Xf zFB;_bS>dG4hPW9j9o~4@PYIKE;oL9G5tq(34Ufvn2SP{{MPYw1d6OIWr-3F#Vs%@3nJLgVI2$&l6?zUVl#4^?iS; zaaSI_ab98Y%sH2ykKNK4Uv(fIsC#j}1b68rwi z1mlRAp7N=IZ3gt{`$nPfe{UGQo(t0xTaU?tH%0p`-u*Z+#rwRbcw>!YPKwvZ@xqs^ zyqYZ3H+WyF!*9azU2i7+Pi!ByNbvi#TB@(6{73T?%jqY}`p~ztjk#}5D8H?Tyc5*^ zp(hDFt}T3n5?rWf$NAm44Nt5bTXi3jB;D^C=kH2Q)}#WQxpk{Or;0wKrt)1{jPohg z^=ad!iK$8q!eyk6*k?_SzcJy&!b`_V&vCNyIVYOmsBQV*JP#v7)(OUMOYwK9hFBpD zYWv)a)$c^*ye7f?L$BR$b1Dm3H;)Ql`eiyHuO$N{(wn#KdGi;-vk8LWc9M%TB3s<1Npr{oN|6m>E4M3J>8v}WIZ+QUrv(e z>B+{gAzc|Sy?(up>3KDNt$C94qNen?u0q>drl&QX&s5XTOSJuxqW!OxcN*|Dr75CA zQ)<}Wn%c?6l7}>?YknEY(#8I|_0?Wi9&b7*CD@OXjZVd)Ctr6yv2??(+wZC3C$xQ8 z*X@~1KbX*Ugkp?Ky*kp~zjNZ7*Ukp?%@TvYEw-g*zZ>yuiT+NbbE)DZ+oq_VMCH%T zy5|f7`ZY1hdn9ez>@n6ws_C5xCl@#k_}*COf{`7*k-bW@K&jb{8PU(0+R52!`2SN4 zKFx{F_v-zm5b=zwpIb!-bo!8!h0jftt{*RbaH4#&2Fn8FpS8Tto-xmlI>m?Po#cLF z@zR;P!tWXJXPSO;VT$+rr=87xcRKPPBXW-~-(du?_T%w7huhY2KjYnpCo6n+ocNbi z>r-mWPD{J*Zyn>izKv3=7dTPtJ5l&hM=(F`d~)&ksfJXazs>~l*Y^39==p|@lYAZT z{;%tLW^0`5{CM@FuEe`BqOUD`A0PZ}R&ATFPpBPiS}z+jD4!jbFBWv>Q^&^^{nq-vi*o9$Li-V-g!z@ziQe)PmFdsW3(?j z!FC$;JK6b&6d_|64$g60 zx^tCsQ@$o%d?|Ek>k*23YxW@B0;N}Ws!r#0h@7h1sVa;lvse*%0FE6ycIdqvdyY{H z>Q%MyJ3;t^eRKQ5q2X0etE{@1_$HPp&Z%Ni8F5ah#mcvp|AHKaFvIfLnO8KZ*yZyP zkJCfs5|1+2MT(SspC{gy*epK?w>|a6#6Ql6+DTDnIhvJ4mBCWHRsSG(8#n!G%-33! zeyY0SBE{nb2sn#HAMv=vBG*-R#tm@wck0@>iNcX^ZjwsV+}eZ~mWzrF$>v z_{4ubw9Rh|+e5`PjW7c^Kv7PYcYue8J~EO_DRX(qu;S7ZkB@t>(UY#57Jr}HFHlJ% zgVJU&ycxREYVaIu`B`JspKkEpV(|Z1cuYuax&0)Jl`k3w4s{A*1N4iHhZN>nnxUMY zGWTFliQ7lq%J2c{bI#v3G)-GbvuvT|@rKqBaU8V;`2@~5!#gKl3ORoaH1w?Vjx%y2AE0ajAjJ3bnTd#}p2 z+2Y1=R9Jey<9}0LZWE5f>+_H)PMU`hG8BU$%|nhywnp7Y4GcQgW23O-cVCqGU;BHb z@*@N&lnf~vG9uFRBi)BLGN?K;U%Ye6kMwW-A~0Q2Y_5ypd79-oo_6|quHhwR9=BNJ z^tyZ`er~Hle*K4Tf4pxq;{gN!K?buN29TmzPCtOZpHYd#Ws8iWLH^9EZx-L*9d-B= zij{bZ0e}V7DEd1`nKOZtg?L2YJ{Ru{yd9i*!7); z8@4{$1ObL(846+sIP;1w6N@GjkJm|xUA{}*t`hfU9+!`J;_q&g{5!MWfA)i|hTR1e z;usE690Y*lFwl2*AUI z*VF3QY7H$l*7iPoXnC(Kw3H2|pm~1JgHW7yZPeu>At0)Z3VD$g;~&o!`P+WnwW0ua z4X?V2`~!pm;uyp_y%WV!QZa9%Jfch#J)S2G@wCbRaICY%>sPi3r@-;nB2P0A$to*S503s+>H1W9 zyVIOEuv*T{|LgATi#pw}*%EXMA3M?GajGSrL83g-DI<|bJcVe)g2%b>FOA4um(#)I zwZiz5^br1}L;jn)R%}01(lnf=1;*IrcKMtLBfUHxdjdPgCdAK*zJ{ol_$+q{&aA$YfeR8h8RKPIHSAn6s?Ie$>rDZ;E{N%7({*B*l>+;hXT1@1Avk!4IPV(H8VPg*-Z zRKN8pymzf3dl%-vw@>=x`TILXIY0dz7-Ash6pM=bm-~pfpQku%O*S^13?_erqv_WR zU(xo|m}(S-vg#oufQAEz0}SGjb3l>k^$sj|i^VQ^pvzk-`s9gCJ6-bK`)j*oY3FIj z1m$ewAwc=Byi<6uXO(uo&Wgw{K~a?`h35f7z|lurmUn7DAwA~=O`FZa=0CalwL@b& zYKPO_$md$ISn5<62@r+BiilwD{Hu1h&0B58G&u$Kaqt<+=J#<9*~qccAe+>Qi!4A4>GYmr!8l_PRqcIF;aCmJtMvH}gtU~B2 zGOd$ys=VE6ZP;OADUwoTg=EQC)& zn!q=`kYYLG*p^TwMvZE^!snx(&U;u7_j>S;FD^U4@QrI7coyyYs$E#3FB54)(>ZVc4x!NJxaJPr5Tb$5CkFlUQREL zWjS144==l2c~-$Kf>i|^S1?t^=;#fE{?;k;9s7o~t{ZH}6`LkV0#{^G zqGg3-GHTWOtznui4zQ}zZjN%kzRTKa!bde9I|Q!Kw`v-^sKh7&V<-keXx`x}P~3x@ zc5kLDH&1ZeJuc_rIWKLSw)p2{p^So&M7oPp(mg=yrF9sjZVCTh)_b5S zS4ri1%GkG+-z<<`y`jG!fkb9)3F|RKGNwdekPT%_*GNf!;!DU^@Zt{DJ_LfJ|D_r9 zt)r~}TE{X5E_ot_Eq zfXpgtQ1ROj4woyB7i5-I36Vk&k=gyqvF#lfj7p7=fx*;sZY zil8_`kTUVzQ;XS=Lp@3GiI(^X7DEw_3D!QR$4HO2Z34JEK8VM1QQCL56QN0jceTa?bR5PF)v$DmMW34QYS9=Zwp4#;AAth)MS7lN~1y+_>+g$7JBlno#L*W-=Tz+4? z%FFd#rSzU&2#Fjk|IR0eTV?_aCHUHdkD?xz+uKJe{DQ+v1VQnrmh47&~V+xvUdvG&}vj z|5Ac!>6Lj3VUBLi?tLb0M^bzVMcr)5x6XOKM=xpJ<$I?guT~-~fe3=Ysu-(&)7f-1 zbCsAl($JU&lmqzRy=C)WNxxhAmSur;p8VSY_ue~8q}OqTWGRMa_$*hxTT=SEB*ANU zIX!%y%VYQbFM6F=Xua_3{wJqwNeOnud1anp(b$6@-EV#P-r=_$Zxq&9fRi+(A{b7w z3JW_6VkhSV)(_MBrW|_?sJyA6;~$eGgQ_YiGPv}qv|@3WiK8lji>J?5pBC`#e#fW# zy@nS5r_Owl5m3hLTZs$wt+dyW_a9y|a_d;cytiiH^F5$F_Mf3G`z;X8K{y8CE+|n= zBWR1i9)#PVJ>wstJ^bB?f%vBo{xO87LwEr+*li&E2y|8KD+nJ4;dThG1K}XDN7coh zKAhHnnhf7n{7vI;qTA}h|8JjA8qP-_1iWT3h zgA@WhN5&G{9jUq>;0>}^<%`>MP63>ZpVqYP;*oEx26S6FYv6kgE9bte;eUU1wA!1; zp4hkyxK`6&-@N&!Zuh^c;ftB&O^4K<7`I5n8TpKWWdk|^ ze9G1qqx07_>H%;r{o#f8bd%-+{0#NO>+<^xn*eq>uyp0x)GZ741K#iR!-cWZteJFj|{K{Z3UyoX2 zOtv;Xw5E3ah&I|UJClm^o-fFvRxwE-3{Bz~!)Lmj9rrd|cIoWfJHmb%6IFs@B!mz!Jo-;hx4!Yoq16NPfvfksV1p_k zs2b`sa7YwqRe4}rWyOe@?JL*1LHyok(__{_Ge14rX=L~SG88V-G>YJudMQ%-TXoO< zn-CXsT{EqHJYP=zc|q8PugJ=npr9lvWB8RXd>^+~pIB?}p5wrL4{@d>7xTqnLNScy zJr0*Q%PV9nafi2UzklCqQ>Ah;P8QP~EC2D`&pPyz0T2j@&urN=t`r^0_7Tiv|GutD4*!{pQL$l%& zON~LFu?ot;6<;$TFn)$P#0b(Pf>IbpGQME8K5viGL$zlL4u>d6qq@jKo>y^uX0CM) z{#2e}$+*shb&}<3DT8^|(TAU&Si_tWtaN3G$M6^ej4rfxVmmyzv{}vIy##;AYMjOh zg@X7$!*qLATg7 zdG(2^OeLUR#x6_@TLKshMSQbBSyARes&N{Gm-O#u(<1AP)YtD^{UVsU5Odh63!w;9 zK}AfJX{qDMPe%N$G^*T0M-RY53g1c5V?w=5O{OT{FRxRh#kAP^{@o)Uf8^1mU}^Bm zd{8c#b``sZ{Lo_Sl0BbX9JfMucTl2bQB@gLpa`MGw|6~od|A!3lFxWctmp6e_ef7$ z`29he6i^JsNQGgeH=JIwl3P+cP3zmWL{51OXE2f?Sc>oK7?ayg5%aTqIaL?0+8s*t zZFtqXb?C5Dn_B@Dl~YVbDP^uLms)9i>ghh0U43_iG@THZL2(sP z6oi&WJHL3T_}*{qbuPEA>u}e3QfU@!1_UYqr{H$G3V4d8aYaxtOu-n~B4}DUk_4=> zR{!Gs$)r_m@PG%VX+T*PCrJWDS$?30&Qd%cyUS^HyRzLvE-wMkperb&&UBs3M60ZS zY~lxfb-1OzF;ZO5DTJybsv@DPB;RVsv4KZ!sjzzgiz$g$sEdl|zQ&qAcICnz&ovEh zP?6~>(ISH3s({L>3Jy#2a@~S;^Rd^K#eqSu29+iqT<@54yy<;w!hjX?k!6p9V6im$C*%nuxG$KSV}tWo7)y$9;*o6o*|BT>Nx0w*z?qAK70-qsZv?c>4r zN=L2RFGiTkbIgHd%= zjaF}QgfBkJJfKl-q&eCuKeFP(lJ5K}u5EB{i*FBLIL4wROHnA_D>paa>pOm&>2mrW z@p?#n>i*x~T_1H!dHv(ppIR?We%DeZeC$?2#Tb-eRg_Se=;xa+tw~kUW1W%kVPPc# zkysX|F)4=W^gHY1^`EW#y&hoAsR2_NPLW*>@49C^?r|ai3xt6WYO#CFV+v^roH)2kK6QTYPrzKOTH~ZUJ^XsBC{|T z#ZZRtJ~$X1G~H3F88<|b=vq8W9j)2wp)`j((aj55eV_;p@dkXF_NK3nPxHN z^#xmpzj^DZBw(|T(D?FCEt|qJ?XHG z6vY{uAQ_s^QgQ{S*Dhr_g*;D=%gYP0Y<0UvDv~#PmAAt>ZTuN;tMrtRODc?vA@cQ3 zYlGYNakJvU5KV*~3^Il=IO$W(GTN)k&bGc(h!w7x2HkC4XL;|J?@^!;n9%2oJ+54Z zM{rDHNmRiIlKfrlT-)`_ax>7p9d&Ao_4lg{ZOiC8dPc!+Yi;@2_P2Be6N+AXD$Msb(b4M($SkG1xSJ$s(D={f@x67_kbNs3X_D|H6Mnf6(y%pA1f zmsbGS?F=&y`SPqFlFyEj7wZF6DGxLp>F%3{=pY^t%zt8{pREGW*&}F))flsRufJyMw++K>`=E?SlC&U_7>4-vVG8ySd32j^$r`U?tmzqVMfD!A z4t=V3ld+w;2Y0TZq#2yS_JSP!M0L=5__sTz)EpHq)fPc17{$n_EHX+-Q*D_|hpcTj z@cSFAi{jcbDG9QOv#g?`*b7LfO~tPrXO)rgWnJNWS*7${*w$@&jg?Z<2)O>b_lR}X zkh{11(gJX{l?+}rQ54Nm3{4}KvRmJ&I2E^D>T4H$yJI!8H#(-@b)RW*qRD_V0I(`Z zEM+6e00Rs#;CchM5s)e*w7E+4q#L9*pd9k00apgF8=>|!Zchuy?ri}5ey!Tqsg%Bx zVz8V61{h$#bp=Sfo4fzD<3g9fg`8YQ^_6zJuXcNmS^~@R4lT<`yHncT9Q2MAt`|4R z&5{>sf-yB3;0u0I#^3+s8VP<%J7a7Ox*Bvdz<_X&Tu%71I#gck`S4~TVB@-m zYQ}h9)%9w%8%*AQx<>7R>F^Hp_c4${e)S6Lt5eSTk7-pp-#K%Y$FpiVrDs)>0XG7i zG3KkQ0;k#{6 z8Jzmeco3f{IXKZmF2)ixi%=*|^R7H$biOhmPjL%Q`OMS9a;H>#D{i>U_GD{0K@TRu>?shbAy&i3_(tn|4K6guW@2xr%-LZ<#EP<4r(>}WIkARL_ z?uDxRSNraHC#WkPsK z!>1gz4qmdQwaI-sS&1n~hJ0a#MNE_#l$B^)+;dxv26et#RPkB|%84@_v%X+zb!;sc zJ~S7GVvL9?3W2Z!9GdIJDC;_A&A-3Tj;ifKgyaD=xfO{ou*=>YUSctk#6&?P5hU81 z%g3y%Ui!wou2S9L3LLVV#~6~&6}*buE;#J>DSVFLi9R~$3G1;e=id$Nbs=5}BoiqU zG>V~!Dv4~>V~cAz8dpiEdxKAndZ8muSbzM_Q;9wdbm4PFqajN?i83$ruYc-?uOEzu zgxQpKjXP9yJ^df+$(r{UoO%-6Gta3IH0WBGVHRUh21gm1&vdw)m*PBm75AkJ%w1hB z$D36C-+Mg>HZW23+4d)&K);Hn5bDTv(!fKRrhIOgH4)00RstWr(zF zC|a_dwJ!Yj&}|B-n{~w(kCr3|mZ1@X#W4bou^zdKbJnCrbN=V}qqc4pEQK*RO<^oW zGALZZS*>ZQx)uCu?Nw;8{+Js!f-x-l%R?sP7mo5YS9x2W#{P((1mZ?#G-((8S zm3n_SR@mhm>guY11Y6e7re?>?8o}Dd=OrYH`v{{~EGahEF?{@&OPU5tw=YVn<|d*^ zgklJsVfg-n*FHwc6r>zQFKB9{EJ{U{SF-K;C-rQVJwU4!3!_*py8y?}rY@Th+Fm86(c^nXWha(g=Z5B!wX~Ly!~;&%U{u*S@+gGu5!Q zfAoiS^R{VwF{V6I(2SvRGlOC@j*=L~cky`pyJUsWR{YV@Jzl}9xS$bJS?p7L!kmrs|<;gC=DAwAT)Qw2xV~9jcqTq?KbU68rOaa zkrPj2Dv~5wjG-}v@8^>99ZHrYIGu`{7xV27uiZI7O(I9_Pb5y6GYmDMV`(kBPn@Z#ZHb!pT7$`V z1UET~$j2y(Fun~K6!Rr>8fee8JF|JW;!&aw^xxFh;LfqfMm`66S}gdwTZ_K#Mpcp( z1c{_rku0lt>rHKOpFaJfWkUGfSczs4g~3Rim6^oNLmx^nwi}xmwK`~KTlLucr$^VX z7Ce<`RoR_(FOMNucFr@)GmA|kk&|pRx4BmGi@x~*XoQg2rwCj@6$TY(N)#?Fc53Wt zikEI4jTW|(gYSQ}-%nxNL5iXvNg^WS6jDa*xW$&et;@c;Rhk61oVn*Z|`b^4lPZA&xVwzRRO^@^`@=VSGQCwRBQqZGr?1dbvMLSPhfY0F&7 zc`2{;JHB)jsaI{XYG?c6mM$wE6@euD98wZ!8lx}_V+4s2N8#21RloW$p(garp;|dJ z$~J)g=m)N$(H9rstZr|6_+{@0^=f1UOKLG%2)?YbyhO2#D6uL|kuof|k*MC@R(Rmq zLBh_kX}Ls2kW__LahYZJz20TxnY103(;Zj2)g0qoh1(MHrr2v|hF5rkASkLzP_jfL zu)>SBF5LDbwWu|}p*PC+y-G1!+N)RE%U186SLm0q0Az znFNs|#>~AT2A#4^p6{J}+Z$m$dxAjHvO=ILBak6Idk@BiFN5o4Y(F-t`S`$F!(`ZI zaDrwTmcSW;Wsz8Yy>X^awyaa<-_HLJoS++9e6H~K4CGxRSd=1Zmf*9zf;6g+Qs^nl zD7j-tjRUuQv@{u5q?03L?l7(`Gv2Z4Et$}B?N(1FoI^# z=s(@pcER#dt9~>Xm7Fl6qM(8*prS;g3c7UiJk$6(H4_0BeYehE*Nf`{>--MF_w5Yb zBKY^B7WT8v|Lpf=J929WYZuR@Y>~I-Q#i#kI7U#SK##k780)halS+Ab&8Ggg^Kaxo z^4h~-(t0jLE_njQ34$RAl;%ge?9Q4apBmGD{{5C)jU{op@!`b>`0%W@+Gmf}8hke} z5{`yCa!=9}P5X2=?{F0;?jHG0$!m8xzrB4{^Cm}ErvXJ=L+5xY3Eiv$&%q^tZa{YG z1mf`X=h6d9@Ow8?==vfVAv<*5`>syt_w?Ey32M|eIMRS?2a)(s-{XImEv4nD_x`TZ zM|UC)o5P+)NQR(ThVSbDr;>ffp^)26@CsdgOGd>V{nUMrEf@J`w(x%2;E6FHNg;ue zB#Dy@g7f|J9S&a>Wlm9h*cFHDfqiFi`e<*7H%CU;vZfsT8M`M$u0k!tCW6S4N-H9Q zO4&KjjC&$AHwEbC)m{7x{|0yX%Sny=<$?@7Vu-d)n?K=p{0*v`1y`riw4kDdZ~dXR zynx?zaCHq+rE=pYw%cwS^wav>5n+}OB#IIY%~CkVl0?kQ2fHn)+L!W1TiA6GNw6%1 z3Jfb@q1Q!=6T+9l<1)$?m%Q!OIaShwCC2Au^JVu%QC5=|(KR-D_RqC-pYY0von)PG zJ)&uZA|;F=MM3=Tsm1Kbp`N6YCd4$G@@yyXm_7agQ8Ut&pPX%i+O|-Rn__KaF-vGTDa{r8G6_&v%Mv)aoPp@97 zCvT!HWx;=z!jQRMaKs;C@J#K5B zbW48scDkz;97iyep$G)Sahhasc-7(=&?uuJLI{Yz8WNrYo63dt0(Re|KW}0-TgnT=;>GCr?l~2sa3L6 zOWV5Pguh%{!THp6k+RC=G=H78<_zm#)4i{c37p?NEfUb-E8xOHeE9ZlzTJOLN(vJI|tCZ<4&mQoXw>kZr`qLAW1Im4x7Z#MM3Fd&Z zP@^X(yJ{<3P=2D(dC7TyIZ}J>sYSg4%1yg(2`IVS{o}Z4c~U@`p>5%Sa^Ag_0?KMN z;{wV9|7#vlzVNsIxki<>OP1Pry?{hFUcKT2%Z@wD0p(gEux$TpV7aN1zifWU|NiUR zcRFZ?P~WZ{Sbm_FMbW8~XmeG*$Y) z6qskcEwnPp(N;J+mQjz}TU_|OFXSZ|4XJ@_2)_%$+dz0f$k_b_vKMDT_(%x1K=^)$ zZc8D2F@!IG@Mj@>9)v#);j<&);~;!AgoB$9)qhze-#>lJEO0>U`-v~N?tu000dC5S zp4Y3=i7JvE91mULJT>pWsUxcZ^4&qSZTs-t+35g3e0DL{@TVVd0r(dSKFvFK$c+Jf z$E~|I60cY64)E6-NITNHwGl24hqcYD#Qz#D0Jz-c;G{RdzWsTCk9x&TSE%^IN`OyZ z_2`J*6Zkg(-c87Utih%c9|HW3Z|A!%E~v5<;A{S#ksCjM;BNr`a?D5RyT3cI6X1Kd z_gOmQ)W2r|zO2=;YR#V=vlm`Yq(J=YO$p>z8CszahVZS>Zb5Gd9}Mv)+<=`Bz8%8f zf$+N^9Eb2W5S|F(2@t*!qQ_bYe;2}6Mv#w}A^d+3UZ|ClyHO8&4R#U0)j{u8>HdIt z4Cd!MAbxHD^vnabo;vn?qocry{>QS@KRvc_oVy;x-{}y4rbGOh4)J3;#EMmuo}(SqqZC1W5i8AbCrGb0EK-hU8~Ggue^nZ$kJh z=0N^vU=HLDfCK)o1HE4Z!cTy9pZNLstM)lPxa|B@hnOM>Jl36h^A zNWUjR{FemDR}v&&Nf7@gLHr*N@q0WZkMWQ^#zXQI5AnYR;`hHGerpHewIRGa#E;t{ zdjy5>7a)Fm0K(xcT)ks-C1JZJ9IIoi<8*A>wrzK8+ji1PI#$Q&n0p5u+qUiOIA7i~ zbIvz2f1b6fR;^l9_1vXPx7x&4?XhphlDyHt<-_lA!T}-s^hCM0xk#8e$i|6}Nc;oP zXFw|_>JwiC?h@LM|HNSFY4xF zJm`rHa(5~sscSJ}zk-z_AB*(48t%puS~`zb_zi%|J3b<&bwn$AbWM*MfS3~LNwSWx zGe+XA195Uiy!`+c1`4{CB7IK~Zu^>)UephE3L}Itt$5?QZekOE7UXOuNwM2`XrB+< ze^X{8&&NNu=(gcIwdMTBz^A zZH@xD`4fk6xP~-+l4Lz+b(kIZmkrYhp8}M9FqSgT1)nKyi{;lo7}r4P*-x;~=M|H! z`TU0kTkPCt;zME*q3ai%`u-9hv#qt6=SM-Xz{Ba$uuQIm#%$7Ou%|4qNBLq{Vg^-| z>@KjknHM8u>Gz}Z%<&}tU!>lwVz(xXI#UoI-@$K`Dv|xcg{XwzeuLFm?UKF>itS;* z#w!tuCvyM!bXNY{E%+D^`C9eBr8p!6exD0H>xnJ>L7((?a+0b20ACP@@g+Cm6TNqU zo9QGK-*SrrEReith92u76*+SJUklc6Rl@f*U^A@{;#&x){&fGx0}gK5JRg)c67~ez zx&+LYp9BiRJDuO}=m(hh3%%e;F;d;RIe6fw>ve*XYU{f1vq$H}h=-#;`P3`k_9W)m9;nIt zyP}nOB^EI?$`E;Vq@~!?9;zTz-%dXgP65o7xQ_#1)@n%Ep4;u?EpQR(3PU?;R@M z5heE-`dZ3AD$rK=g;QaO2|bE?v|k3?gjMwP3n^N|6?)+_ zBU<(qy8Gcb=1=f0k&DKYhhIK{6ry*eenE4plJ`uuKA|@p$BxrL_LD%a{W?jK7fa#y zy03~d`12u)>aRxnQYQN7L@N$d9~M*yKWtTx0#u;BtCGHyer3zjiW4sjDg+PG;S~k4 znxjyO?Ik1D05M2kxmB$EVGhr{tN{s;Pk3=#px4NWZR85J`!|-q2~7NX#$8nedwR7) ztvu{`H`88&VlQmS_(rjc@5X);(@)v%Z*<084{tQaT@%w@XU|$aPrpe0@oEC04YxvX z*v0m2BA$j2Z+s~N6=Y6~R_|fbnIJh;e$uW)_%Go zcLdy94W|rm18MQ$&)43W_{zSv!h0IJk3B}+hwd5TZiX@!kjz9C(_Y6bD8_*E8WtqNl%XM9 zNLP)*ucdntDHchke-MyEHjlD5;HZfWI$&yO?rjkS1Xw?{)i=mD{)(aH{w}7!d}I$& zvcH*|!{{?uNi)|l71y^^#-}?;S7x*it-`(Cdku()dPiVvXY}X4Le~(v8*9%EJw4ViFgN z-MxNx33*k^K~x{~$@$=J9E+x@qBkxPX69Ee6D$5E%bl+qPJJWoJzdL=Jq6Xx?^agI zc^6Df@Xn_G3BxGSfIF$m9&d&yYjTaW-n-hYDk$iNC1C?2`M@Mhugn;sq|OSPd@=Z%AVp_a1r!};O{&?;R0dBzRMlIpclOb=!EVyFsCIx zrfFGM_cKY1nz!3a%r$ZHo!ujAZa|x2RyZ*umaC+ZC^$O>3F0L6nRi_6oun~M| z6S}mE{A=qs7Q-s;KOna=O=q^Gu&?PK7WYG_?y&umQasZCWcp=wZq`4%_Pn2+1iH@^ z{6!2QL5x6$>z@@@M*S7My6}CKup@%Yj>t9L@yrg6B{&2%1-Bwz7{C^Ro8q|q7zp^- z?2y^%hnhw#8itZnQy;lA=rZZ_x8!VgGSwy!rc@V6#{(}N!EN|c+rUtTz62UjG=cPO zph!q%uaf>F9)@_1clIYo;cDgbU+3>rvqZ+&1W~w@k`&yS0&$tfto z0%^DOY3!#`F!-(><2c%=qA2+NIx#^#7CSc%x%V9Thm**Q_vu6YcmEnqg8mYu5zkcv z#Z4tq|Kj%DZ;ehB(*uIP@MJuAQ_e&ERxW zpmo*NqvP`KTGoCTXy5v8wc^7Db_}!k!$pYDh^nIDgM;hs(CVIP53boiU~~D}58lxf z9!~k?_2#V(vgBr#X&2?vF_dlDf168k&0knRTAM1M2$iD_QGo-Gyhzjt{dB-cGq`*Z z3VpWBDSM<>W$v`gv1MOdra}HSf*}?kPG1!jH40bMa7@Ye z3_gaUpc~lKG_J;Qx@P8U*DdIKlu&{5dZP5Q^TU*|Uj>F-Cwqs@71Jhd_mWgPr25+1 zK|-TTHGxT^sl3D^WT0v5@gwN+q6$>;O@~Wa*j)roBiL9yrKhS^g3l4pd%Lnm?LoS8 zYw@T#@$;v6g!K5=0Y*R#&`Y{`pVixwdUy@<5l6s>%1%QC7s18UbH~6?IzI7peAy)J zUjw+bKy`{U6tk92`q<3i1I`(S%MWV4Ha})3gGa6NBX7`H7WqUoArn^^TLPX!``iq6 zi`fU5sYO|!2DinX5LZiAcO4TFTJL{dyw`3eC2GR)iBMM$8(01_##In^d?0Mqc=!D` zLW^>?>PRscTl9rf)mP|#HK=!a!K0I^s)p9N#+9&JhMA=-6LZZTmHz%W=ur*;JTATS1J6GM2>>)E!v)#S@jN1(+Z>fCdT-8_qrRG?`g7>}VvW}kSr>8yn zCLA$Nj;IW@8LA34-Y-P^$d{8Vo|yH46B_09E{Y;p(2^e4?(jUqh}Og)w^daubMa&cBVKQd%JhB_IxgcLAY<%y z^VF!x@4YI%0?Un4)HtZz&udG5id0)JbBl4ARq5?vsZ2{%OmUYwCV7T#FP8ITqP%hH zU*z!5ZCA-1YV7T}Q8fOUyMk!F-=LS0UR$>~B=kt3W{D%UAB=3BM|wh2$oYn%U-U_u zbV}06@vGxu!=$30=ap2q=&*zN45c!rm34@@wV>Px)^EekG>u<$9fW=@yUhp=11IqS z8tlvWXJ>*-p;=yiCJPC13C%wLF?YjTyw*^^1R2E}>_eIv6a@&7)vJP1bYifH5#DN* zBpqwQHX>#8ZIRTY|K=Vs1=>1^Lh$GvNdzNjN|W_|Sy?ug$AN zh@{!0eCgmbUoZIyqVs%WM+HjC96=0MKP><+DQ(vC!B=K`caR`kr~1f$!(fo0!cq-^ z%WI(U4!O4WLoj^m8?6c^F+>#Xq3^Og7U`{dG*7w+CN8k)$ z*a=OBpX%g+N(_#H%TDytBe&L7APc2xHmF)K_~62yESWa`)p;`Krt<@_ZcaHn2@0Od zT0Y9KTw@!VcpGKwZ>c@*-9+XnOu2u%omc0aS!OyPR{3s=90{A#r{WmsyS72`cq2Pz za|gPoRR^CdybjxP`XOk|B(7kZf*du5e(`d;2sSVxkdITR({ic{2bYY}JY9cOLwcBLDO0R_Q>PgDIMC!E+0^L1GvHiY zT}l3;+X1p&OQx1FBrw(qmGs}?VFXonHJWVsPte83(PbN*Ik$PgM2&*1!mjR1-MMKB z5y*GwD`S2(zrwU-DsdbAeR1zwkm%RXw`KG73$U=s7gLbT)uL~)3`aR$rcW*&m9P-w0brx1vL<*8AIx9913cn`MpLCKhpybK7x|&HgRvIb z5lrK&X{k}=$zj-{q;IXvr!K)e%QkOD{vwP4V#lWV?ab;n4rFcr4RGbb@XS^mr@xl- zP!G}p;LNco7NNf-egD%xbZ%oC!>rpN`+|Y#BXjYfiFoOix8s3>h)c`}&q+Y^W^a6; zI3!CUzP;=yK$aWGeD047UaStTfvRF++E%<6#wT>RiA3+$JsMwWD zh>1?GWpR(mUjI!1=rq{0N~jMu!-d9Tjwyv!QNM>6I@X$rS-YxKk;XYDj_t0?;Q(L-YXp++}+ z=enA@XPg35xsGIs?kG*fFTG+89w=ROR;ryj&67w&sW{0<;)c_D8{7W&<@(I`z6h8` zAr_sbk1eE6NTQBz@T#Vop7;^M*R>D$>zWZx$&)|>(KijJVDj@m)11a(0XSu;QL{n$ zG^et@G6+ZP$wn`EYrwzR>(RQqXTNCz68G22*`2+7sgCUY*>B84JF8BXfI-2yR~?g@ zc^SB{JcpUjaW6`UnlF(GA&1*@WqWpl7IGNj0n(kb3h#~_{1Ycn(jfXLOqEte*~a0b zJ)I3ijM&RBK`s}?+6M;_BijZww3n^QfquuVpWo6xNsJSs1gb`_{sR}*qY_d|eX80N zR~v3PFt>Ct+9~Jkd(L>2`y8TY*l_xVE$7$dp~BuUplUK>)UX9uiK?lEib7O^^-X&5z$47At^Fh01iV z!taojeuduwC*O`gx+Y(lwcQ4*l#ia1EiLj=)2@}O=UWk{RT zR@GLoz_p3??rxI0Kr}~wnzN4<`lSBb&Rh7!AEy|F?_=(xvx{3xKf8)9Ko5PM2i@IY zBDF6C4=(DrpzZI5!w!$47FgE)9Z=_zTL&DNiBC|d#UP*pn}I{Z#B1J;C;ETczc z572U;zjKtEcZbxI^mW@BE?DJUJSUe&=L4pLjC|C~xSFc5 z__Wt_Mni2g?S1wuw3ER^fwRb|@yhuyu2tbzHL`JEwZrd$Z#2~Q>mqq`D|`|yX9=T5 zSHI`CI*?p)@sO2)R2eV0SD{v;T`9I(-%b2bAkc1Ab%K@jDIv`3^Db9K^{;|;37o_? zDx511+5*r$c0;6>uhd{!HU-v843R9|Kfp-D2}O-58dnT`!am)|%l?5E7QvNKX4Xw% zCiA>$@i~)3k?XpU{I>KTHQE0vNMqrk8t$k&H^0)W7pv1#rg8tHIXGDn3Vl&?iS_rb z9)rnJV2+$m#E>cec>HAU;_Itkug%z$*kVOgwfHbQxg2XhA9U-Q2D9s9R^t$7cUE;P z$Ps==s57JB2o86A!n(^M(!#!Z+kO5(`{hfH(?H+llWh)9ANqw9x5a+$d-~eqNQXH^ zN({|~?BK@EKn<$;;goMvcPTmFdFVL%TvQr31KV!;E-5Fwu{!aJOogN0Q2X1$iw$Fm z`RV-z!Ls|DRg=Z>;BUpEI`R+OCj_#`Z{-oMw$e1z)1lLoQL}%)%$HoK8S)Y3YfGZr zb4KgmRSMaE^nddsA8?Ur`wG*i39(cTp>Trf$NP6go$SKvae0?}^~5nemj))oF?_n9 zW&42XUS?D(; zEw@PB&+wf4>B>!Dz#@CwsWSYOj!Y4?2&GC~lA^uWYaW{oUrH@MpADy{Deaa8sCuwB zPhh+j5shuvnZV5|-riv<=Iyb{=#l=U!k!>6( z@zEEcI2*y8n)_O+bY%IQS;w&-R*8;fo?eCrBV~@QZ~JF)x#cr*Dck6WTe%j*Sb#E9 z?^T&;gQ32>aXETnx(9O2gK;sbS&=kW4H>sW6s}|xLRBU$Z;A|hV0yZVU))r>#_L|) zO$jP7_|n>IlWRAT+NbTJlW={SWNIwV0JG7mP>Ap|Ai*JA5oma_JNe+oaBc~bcJQs; zpyBSOe0a%GAa4gL75F(+)q^6$VbD}WHPzEmA1;yNXBOs*+wk^2ypQ)2eROV_oAz~X z3D><}{!lI8p0a(m!wRh^7j_Zm(J>WR5pi?-B^P@? z`scda7yf$EcJ|o_H!vN(;>xytUh`LLB?6bfcNV1%jV6P_r&K{CRkjhPJX|4et&#B^ z!&U!M8utX9*}Y%vR08tVIj;{Ct-nhcXwsemB}rh<&&eakf?~ zCaULV>bW|LEKRxIGZw=zTxo15#UJFY&(~fDdj`ADur=xIIv>#ThwReI&Y%aAFW-EJ z-^?!)Q~|H1|K?_mIWkEXbseB1)~oSSo3~=miRI#I$-{>k2LU_IN*msQBMvR=T#Ht-gTtb2J`Q)ApFlukg=)jC9{ zjxT@;H=}22Cq$OGeViJ*NY6QP@fBD%HSwC568yVf*KH(5M`gozyoG$5Nk30^4T=wi z@J9lB0X=4JPs*j4kr&wQ;ynBW~KF zTcpMNHXU`8hSioAP5N>au*w{H|H?~tX#VGOW>GYdRG9;gKJk)Gaosk-ec5MqMAh*D z&ZmnJ>K_L9&VZRNuAU4X@uN&m$&WwrJZ%wscO``gpZ>%bUh9d7+Ey&EuKJE25zGC< zP_w-@_N@bhXX(*iKo=R&8KTU37&nFlOTGj*xG*pv-X=2udS`dMEV8{2D6bvBf}@T_ zc3$Ffh55fRlxEv;0VtX4Ex`#W&*;YU6~*41D^30*0U>}2Khc300VKywTkYQ#Hw4hg z<_nT0R*;t!U#Q-xt520j`T7_Qotd||goIA1jC#qyJ(^5oXW~Y-U-y>rTqdYu{X!4m zH~k_WwSkzZH4NY|DwUR3rjej@;^8~Wa#kuiECU1BK&Bf*7Nk#F|H~?KuCipZ*SCRM zeuRrr9YM#8PQi^;qn0G4CM=mP42PAD{$|k6?%;FC`kF6xnhoJg@CQH)=Yh(bktx+-r!;f3{UuUEV9f3`r&{N=fN6ogog*n$%GAIlUr{?a$jq zgG$N3g3!PVp6465E10xaIvT8db9o@cx05f`6CG<2yZ-X%dBK-U=u3!aB@a{K#}(kP zo}}~P4fZMkGZ5B`edE?R>fw1`ZzqucVakS6(-$SN#>b%Ve1qjTUR6CiQ0x7qgw5zp zoketbYTwi`vxMZ(J~!;-(^K7u>FZ?CC@@FsWf4W&b}cR~|Fm*h@$3c!Xe}J}GSDpQ ziD2J$bqNMjhYhup-Z@OwymGdUI6Ee3cDSX6iq1UZ z3|&0xAO^MhaPi1G7*6c!2D}SDhDQXE{z{@SMT;?kk|+=lW_<1)qH2$S=wKl9X0E28 ziiTp8LmZ_>Xt{b|B=DDN?M?IRP_Wa`m3M7BMET*xPl7LZL+gLT%Z%Ts?to!b(+3}0 z8m7+~sn^zgl50R*ho#?NdJQ8kj2UTU`>uOt_m^lu(Absd!>Rd{DY~NfE}=SxU$Sv# z%4EugiP%ANn;ZR6Scq)5L7W8Q3#0KX_$(|tM0elQak%ft$avV);cD9jlasWB#~PxR z@2PC%c5&9xb$LtA-!q$Q`ipM*DytOx$e(9Y2`DS-BO^q2yHAB}|-Wo(x|Y z_p-=3`+Bve9HIV)CEy=0=pH}=JOx)QXL-_OrugYwmItdTdLHMxxcGWUXi|z6$)sa1 z3!uEScYCK7r{`=KXH2%S0!o#|pDosT_wOtJPF!!x5Ok15vr>;5BSzl|+~%e*H7py1 z^fP`l%*^qGE85leX}i;Q2t11!v6$D6wc%-X7dx#xqYJiHXbd5s!{PNFA@%w)T$fJw z$2O5fb1Nh@#qfI+4YmjxJyfb2s@BjS-FoIIdiZ_&6O^ASS^*|srX!}+o^qavg&&&I6XGbXj0Sz#XxYB` za9fb$LZ8F_PgFxn2qX2NYj(Iu&p*Z=Va)+0ez?My_K;=niq8WZgGJ<8K3?5$?=lNB z`aWK&P+UH+aFJ%5i_y$P^>VG2aeEliAMh%>L7VU_2}ZJEM_1w3FK91D41Fz9rMM?( zHgCIyA48*chhKY$ozDA*dlnm}mB=g@ZJ{5yYthj)_!kAxW!+CVLwHxtj74e@ouQEy zocK(jta`N|>kx5zsK<}^d(3K_H-h;zc3&nLF7_@Owx5uP_Lb4hMb>zis{y_&J&NNamM zM`S9Hz5=fc0J@rik1METjoE|h=O3p8s5T(FT)8xAeLf3siR=_nr-n!;mq<&8i1v^Y z?2;oosVG$O6na0ndLD$gwGb$@aN(2Ug_z=f@m617A!i!vUHdm3#h@3ze++^%kFAbL z^}dD_lPT2XW(~A6Gl4z~pm!Rp=JzrDvnwLZ_DOT>8yc_>V^kWGpTNbxC3~@KHG7gZ z^|{MgWmlbj)Y&9oVm`m#EBZ`oscWU9WgoKj=gXYJ4A zi%OLzg%9tRBqbOM=p{_$q+3fk4m!@Z!Ht+%chG7#bjK5*d7V|}32fMX6P@`K5PYV8 z$w+0KhVkIX3Z~1TN1MJkzZ^Vb0?D5+^5J1b2%(#x1=UxWES1O!l}xe;Y+8N7v1QX2Qoeyb*|Ij|;gq>oClxTWg&5wgwu&U!qcj z7k7pgvdmR0#~XwF_b#bU^A)kZD6fm=%;qD6CD;HVMw)5*S}+C-f>V0i?E_hUbBC$O zO-N)eRN3&bJf*M~+hBD9ZtxE2At030;;h`!lRZ>NAl|{#c;t)5?A0$aKdMz=rYG3m zojtB?ZChNx=)~3MTk%;5sxJqiTRDUTvTxE0^9s^DJ%N(#Sn%jHuJ%zd^Gj1Zej^cZ z+ur*1H@bExv9x@w@SCX({@jNCpGP@&@8}7Q* zGK$gr^Kl!~@6omZ0Ew%u#XIC*YPmf`1yeZ1dTs*S#m9VZ*KWm=w{l@Z*N_g~rm?Ie zj{_P9N7BTUN_LRP)mJ&m#%yNuZk-HNy73CJT>?s{7tTDdG(?F>HQXO&pZ=@l>J7Liu3x`1|8Y5&L9*|^2pSC;j-mds6C>WwS784i^k!pyF&3CpS*D5Xu{?~PSVTP-%h>KT zmxjV1=JS=^lwM`Y)p}DEfkFwaa#acuA30{26KYEhd~-Uohwt#6hazL4j-5rQ$?!_# zootHa(>VeWm)RksHFrL_Q^NP!e7S;SeiU8w5i#=Zo!#ZMU4s~K)lH#NjBUhwjfA@V zWNe+d9N5g#G(1aih1CIMx{v3rRyKk znxYf7{6zKZnlziQfEkNHu8UC zJj&T%iWc9u8~8l=@7U&4`^Cc0M3x}h@w<|P2vByaM1@+ZRXaFo-T1a-5R4>G1J`&di_JnTSGF>+08sA> zwn~(0ZWoJ?%2W5Ug@LdKU>BWr)-1n(EU>czJU6R?u*Yt+eIrT&FZyAdu`Pze`9FE7 z@OnIZUbh9V4Xy>AuAJVl`3Ww#%a5C29bo?u-&1Ku-ETCsVAQsHzy6#WznAY8*XQj0%OR|F1g)}-Q!t}{ICsXg!(2N6A2w$ zapga2AXdXv?Cx9N6P+Ko=o~8dzprpTeX}m>{UA70gz}tmVe@VlaBu z;IrkZUS`%%>cVqkKQp;4<8YTYvA39rl4BN~PMMK}8G}wi|DrIYMp*fwM$HaR!->{i zeTqA2Od(N^xwXXdqcw-@&$airv%=)567?AcV(KNDpcJk6)(4!7*IDbu*A& z7pEO1lASeQw;)FgoyrN{3>AM!8J&^^ebQCiNKO@4<#4=dw12)X_dTymjmw?CcehPC z1#yss;x}(V5v8W8Uc;(6JHLQ2Mq3QX`Hu`C6&^&X3e?U8(bn&|jnuXNOJ(bvChENW z6#(n-`&+AI{7`dj07%sJn+69v@@SR@1V_UNCO(sZV(eJQvcpWvl?Ml894d~epG?Xi z%WqPf&Ge&Gyf-)~e}jx4`#k}VP)!A6LJN|fhy$1Zww$D>hq&jN9SLDV^ zOkX-I(z;fB`xC+>wk`=bk%ieAcXA(STLfNvBq#oU7U&y?TRs+f}N%iBby|q=W;Sb2fP#n@Gb1L z%Thp2>2&fWg{qKkgvcO9L&Fq-danTn8K8BN(L!L04}?hLh+sYg4 zA@&YJ7BB#zOK0ZQ6aF)E%9gZT_`~IyHuf5GP#|_V1VI2hZpi!9! zFZ5H>=B9Vs`Q_qM5zbU+7ML{R2Xc8TY@`(fbo_^AnI3H2EgYa|PtAi#PT0O>$Wzmu zS5tSmEoZyZ`&>nw3%T7guc0OI|4W9_fk6jTzFii$0AUm5n=A=vax4LkPv9r}JMgVc zaLX4umQ_Ifme*;EtQ>7!)(7jQCJU)78GNscPk_0#!oa%Lp=IPomxm*UCKSuKdf12Z zh%#`r2rMBZ1E#0vSmM=?yrua~wvW78G*6Uq21P5I`>WP$tAyaMG|}U&6X4m^*%jW{ z+}+ES<%9YnjQ!-r^YLWs}dnAV09C#C$M&hT6IpKgmu|40hJd#E+H{pAz+Gf9rT{HVQ$+PvdA zYyae;av|9D`b#;FNhvH;ta?sV=w@r^Ajm)=G5?f06C3ZJxT=D$-UFo+XM7itQlh(@ zUdThyB3|0#_dw}48=|SYCR^FlXtQHMS+Mog<_55I`Kw4nPN(cp`f9!8KuW7$jm#|CF1>D7)P1F>TVqf-UEsUIr_+Nd0VESY@L6h@z$*pNXap_8d=rq?fZK>Z?eR#XdO8$^iY_!fcp2_3=lfQalHm{?JTnV7?0wP_%{A83`|q z)-)=M$&if4C%E;b;P8pL@q=`x1ZAe@$p9(!h*w=RXlFK0=y5s0Lx>CB3`b*-g&PKp z0u@;ztBilhkxuR;{qr1R9pCB`Cm<6>6QB2vZtive@cA3h{$uAlHI>H<)_x_>$zpMw zCVAm+WnUDx4AlA7u`iGizHTc?x9^fDUKe(3W4a{W{z!YH|Ekj@?KgLcO-3)c1cD&& z*mLCf)|rdd#1mEbU~;69-2DLeu+k6@O)(R*Ac29*1%ZFwtMA`*v)+Nf4if`cOU@v9 z?K1ZF1_kN`d_PgxgjRZRQ%t#8sM=xL%B+-Z&?%Uw>Opd?L7SD6!^e7OPNZo!;Q*a7 zH{*Uxz`lDlPwk0xl0bVqBQV(^-cW(d;bgq-(O%xcCJ8QFjUa|zOt!Le6f+D%srl)m zc3oqku5H+|I}IHW-2b^Pq*H%UsT?m=QA1ebgsloTEt*gc=It9Bz%mz(5K$B|Ayib$ z_1@6_&xXn(MYE}p%PGFRS{raN@T1UNUFSQO$Y>=+Z1wmb$>eCE!;#BLo~!4!t1LFO z0aazmq9`@)2vd;!Vg184a+@Jx%{ta!YpiYdh$>+Sukp$%qV=>KTX$`5?uGiASj18& zu;H25{O^B@ZV;rJWer6<^pqU5d_iw@o6&ydA%nPC=*}6aBg;0~g6nzyR2`anE~V|~ zWKnov+~G6Aq|^vWLb<2zUDa6jZ{N?R-j`YbzMp3Gk4bE(1pS~MHm>d|)StQV92t=1 zb`++c8QXh&mS`1XyS6yrWBJv2RoLl}sffb51)ZD?1s5dt1q)JJ+n>;l7KK1%)>DHwB0=8ITvm8 zNp-eR9s1fW>nK6im>qf$R;1W&=$53PGjSoAkeck#5e+G(=J}CMwl7-;H6Nb1zxDkd zQ$#pkk^-^aC6;b+^;his+c=oYls+#Ohj0CaRbomYut*?&Kb6S@=rB5#KAz+%?AG{l zd;XNnXRylA$B5BuG+&5KV(c7p2E$7UksrxeqDYoJ3kr`Y%)O$nb4lC_v&kAcvy>#l zku8yik4y?nQ?J|DaV4lKr_fZN>UGX*1@W`kh>Q)dZ5)kAKqNU0vqFh&<8pu4rvT3# z5)Wnjun$1r+&R{r^F}!`&+qj68doL+pQ%!;qp@`&f)R~vu<#}16jb}l3(aFweQkF2 zvS@@PE8#29lPJW;$V}ro6u4yKIe6NA9R1o}Q_Xl;R;hpcfh)5c!>5ozq^bGT}ucao3;b3L{LiNR(V@5sYg!%zcCvZr#f1BFi5gUiVS83|P&Go8HI zCjvok$!MRes@+9?F&mtDuZ`|g4|Lf%tInvXs6o(}@OaX!>}K=iQgx;fp6K1rwz2a~ z$|}i4vJl35P84KLuIVpEyBls~-0KJSDaK&N%wX_^JqJ^VF8t8_5`irwa!)uy=zDpv zxj$_=<61z76%4W;-MB-on$SzxJVxZsfqkvK$ZwnxvAF1Ev%jQMq)DT!aacMeN3^hh zE$D4Nnv0JNeVZ9&TY{olx1F+xfBk^o_+cUQ6n#rZX(S0z!5k$)5l+Yb@w91{%Ey1I z*uB`-jwA1eOD`?DF1wqNu!nQjX{F1ZNku5j}%{NkH3 zh3X)D4A}`cqgcf{EEE4iXuiG69~EvQU!9fpvW@SGb{)KZcyTP;GTO2_we+A zHqMlh-*>8{>lF?+xsQMkQ*~tU6;6aR=n}@&w6c<<8kI6Xt8G|8D?LY-6*_+!|K{|^ z=-X&Ua5K=5nf?;OS$6^TtUOn|s4fWn8IM9Yuqi2oZ&XP0luV@0AMh^T(pIuj`b_(9 zV177@vi(+!iPumRl3I!0NyeV(Yk#z>#M@ngvJ0pWjY5^IL@YK&AT^cI+uD3SJ^qRG zAwk_%?ZBF8`*ahd_xZuFYm9+829X?rUN-pmd41hA*9!QkE!TZ~xf2tC7*t)kjexw2 z&6GcZI(Dq6X7`u0f0p)r-3sZ*-T%znKOixJqu#<=QnMt;7FFhlTKjtohTX+kwb~0S znylhM%RZf22d5m8g&U@hF_^R2#M{!y0Nup{(+VTD%bMf(zTu|4z6KB33CJq z4T%>5gciGcftQNILQPvT6Jje^J-S} zf1|JOf%qD>Rl`;7cj+B&%(ym{j?N;IbI85^XckJN$HkzrUs^XZn>?xsV7TR9bkns5 zcaJ>>T+z~Q!SRalzCsvivGN8oxAc#rFPh}^3mgQrjrGnaycCa+V&uu~vP%fVY0J7! zqB=?EGQHkG8hZMW^H@3Nzoh1MYqliT;dSMi8hEBZ7@}aj@NXW`I4k;EbbJ04!Km8& zRq*WXa0ILoZ1i8In>L68h!q5Q9gB`dPakvx7#G}abFCKJw2gOM|NEr>>&*XqU{soZc#Zp5R+!a3h;c{U+meuT@0Pajzsg*F`V}mw=wIBm1mbUQjh6Wtb{gSr>mdE$ z{qyH7zhQk&33BQUyKSJw$x7UNbJo7u_bcroU~pmHj|gXnpCMD(*>U+3`=D58LY39; z7oNUxcSQE^B*k{cUn_7M~v+`?MDQ40Mlv4J_##odfY0m)w8uB#&Vva#z3m%G9Bp z0h%~!GsQl?FM4Sk*O*o1E_O5>uKlO9{`&&c*B79RB*wBv`dT`3K5V|xHS?F1_KGwy z2dSVchx{gg@ndXuiaO4X>jDMvpc?{77j~llGIm~AUUnK739te@$S+2YXIHy)8crpo zuPZ4?8>D||Lyx%Y#dBXjr`lIhrZ;BB%R8vA+P6A&-mXw?tj9M~UC8Mbx$C)qOQB#% zBEh0IyIya1l@gRANU=;@9eMuk`ttWw>q-{syQ%~hbcpl(WeU9*8<{LLO^hhyg!2N>Q*dx8Q25SfJeYf~x3Hd2E{Vu{4|J~!pny#%XXE%EIJD}2U=&YZZ;b~~E4bWXuEO-*XfsfV zgPJ2`<;q9sa(6K+S!)wFNAXf9knnrn1NgNVEmn-s=zMGiEx8$ca79A_lqiZ1g4qzcTw6BKLO74TL`L27ItJrZ5*@CL82sUG*C64da1u0;4WcUw3F)E3K@EF%&y>e67t3Z2q=JcoxdGKVZuxwe77}k$v}F z7&Vz&u4L@vw3a6#0w_Ii_v@geKgHJ>DI%ERwX8GJqnBI9$n`S=-UVOHOetIxLzGRy z!I^t@H6$i^>}=c17Y&x)i}ML0XY~bvI0|TRFjm?@GhpcKNYb;?q4C7k@#Q1jwFfWP zT<=%NdTYuE^uKPM=pfe-vVVYqnMYWfLljp?a%t+VTCLWm!DMpJ84G@#ao<0TtVvRx zI522NA}5|=o0q7vCrQIJxQud2^_4K@Q=L*=R3G+M;2|z@_P{V~$;jENyW}rA8;#f_ zEPOVxTE%rqVtCi(UQi<#75|25W53|ZG9iQKk50bI=r0mg<-a#D5z8V ztZ4&acHtcmIBuh9YNMos$}G^O;D($rhq9jehmgGfthRDR7KVw!BFNCvn8IahWW{vH z{C@zsKt{ipIoIgr4OWfRBR!u^4|jUtfF@{?#EK(55A*dy{^4Gi$LsPJ_7Zb)5uw=7~A-|!4rB_*B$(?zqxkAYVWrP>l2K|I7jbD z3(D_!F!=X%!-MlvS_bDc44&?vXlTeAluWA)`IGg7^Ik*#wtB(&S%!RnL%yydKh9u~ zf*WoSZ@MBlf3G3G!7#i>YX#>A8uCYL2Imz+zDrGgE?(t?uk6)l{2WmS0tvuCie?Za z%CRdbwsCd39lvw&nV8i#@xiONXPorUf>Ie69kjR)IxrEa4Nul2XN z$DUeS_oZLcLR+G!lLdk$&n#Fnfp~IbLcC@R=C*Y2a0zd3f8giiZOnV0?{<0If*1M4 zECB$8fq;e*Kvbi*n)F_?@y!%{0HC4L#&Hk8d)zAZ=!7{XmIj}cHm1~Sh9xDMrAe7$ zF-AAcX;SdUin8PKyCJoiu)%;AlVMiA&Ix(wLJ_8_7Xuzr}VCIiZUQeZMt(6ex zHvgC_c=YdGSN*1AoXwFj4vi4OU=omMmi_&m`-Hp)UryDxRa5PJ8mL7e)6EQrY3JCJ zT7I%E_;;J(y&kFIe>awIEa%CXG23?T&uU*d@44q%?a4&bZNuOiqXxeL5+g)I_S@1$G@L&V|KRfz4n1_=7)i)2_eBk zfDsrCF+p4VJw0Bpr=SXq2zPJ=Nr%5)IZQWL31fPvx&;JqAVCpf7){n5Jg@QToG+8= zR536h~OiUc6u6J{s3wN1;`n9YNo9^QJ2!5!1yi6@(bUG6angs#L^M z8R_b_rYm?icXCv%iHV2Dh1OD_;SA)@_9((sF()6DViL_HhyXYwD3*ajuWTewM&7=n zEGkII^CA`bG>md9$|FeZ;_+4YQI;Mk>DjTq|i76X<8vEu;{?v zO>dSQvl~oO9Y#BXPxrcYBa@^?+q>#f@@W;!r$))AR4`vH&U~`X8lPCk$8Oupy&|uB zp|iu>)Dhq~i?K9A(HIHH5L3q&4-^w9@4oLa*&F+~RL9nLaipK@-NT;j7>VO7O(0xl z)q3p?3&%I6ml*O-jFB8It@C^Cf9}3*AIps>T0l5ZRhFa>DJe!QQ^)j(-OtrNm2_p^ zd#xgf7ATs;AcQm&{DpallSQ{1dEY9m@%F0&+({*}g-61tvG#I5H+%LU9|+4Mi%%#- zP!vXrvLqV&n5dXd+0WdFF{`^xyt7RimO27C4>3d#5MdO7*l()k4eGP9Q)2B(KB4t3 z^Gdm?uV1*8_uTW&kxorQ$@Lt?E8sK~az#J#y2KpUbR=XU|LlKi5^ro-P(qwvsg2wT zTX6cFmcFf}_l04^!Y`%++|t)Sn)Jb%zM;%n$zqCdpb`v5L6T;nFgT}AuFD^|WH(jx zjznrNPrloqykp$FMjKbuj+dJ|z%}jEZ|9-u5m%PXu!=;>DlOu1SPuWn4fu2HBTJ7) zx}iX0G-5=6AcvA+ySXq=5oTAL+QkxvXsm&HXKh4k- z;~}-y5gExF-#4x@S2{95*s^9;^&n+tj z$Zs4zHMaB+C#K(g*u^WBxwnF0x?}xbZ+C<992T50wDaCL+cEwEg)#4KvPUeqykT{jHBsC2*s|Gf zGc24ohWrDDFFQxUOGXAD(FFh4ZAZA3FOJ!i@T!hePge_vQ$?uY7y(&IX3*K*JFaff zxOMWMRVZISAMk$TfA`u;iSvCJ<9qEYseK<-P!V*6VQsgL^ZN^ps|Qx_UfTJ(xEya} z`tJ? z1u)v^X(j$D|K#$=c{1n$bwjJvhR)@7`30O}c0UO_HY($*<`#`2o9l?JE{E+bx9o*q zmMm%0#9V|JxcyB57E&z48B#g-^qJdV-?E@)W$7Z%at%Aqx+!HD43&i$RM%l7Oeojo zALR)+92@NM1atH|0dXn|CLhO40#Nvm{1924`@Z zWC^1r{kx{cyZI**j~C~-|26LMo=8M?8Bli7#3+?>*zEi_g|B1Nx3o1M+<*%o9Ai|# z$SPD&vE6{ni)8=3Uyl6cw=?tYCHuh<=iKu7k0<0LEr=|ur(}gB<$!OcI9wq(c&1DJ zv%8)Ip&Ly{BgM-DXK(-s3}bMihu13>_Q^rH$nEF+q96If`pKH(2u_WlKQAzK!IQ{; zyKgA>$E&&%h5lhyGywrk(=-7w!7qBVkiS=6K40|5NTlZb#GI)U9zGrLd8Ern=Q_%Z z08@D9az}&HU*n*_P5@A;L%iFpViqO%<`n#!?Qp-rCP_d_tkln!S;Uicinr*6^WsfLE;RC zlQbY$LH6Y2AlW|@`TR)96utd&Jd&8>d;Erh)7B2*?XxT@#e(wyyBb|uKVwWK`Rwv&rd8Wlq>^I`?t95k1 z)^?3Ur39s`Uy)>-W*L^oAU?U4dw9*w4Bi4X%#EKh1_Blms)R)Gqn^_Q05Sx`_tljLXK{Ll@yA0ig507SA7;uK4S zIH`X1Mzf-6K7CP-uJ6ujVlMYo-GT~aQdJ-+t2B6VLG_0Mve%>vpWu++xk5etL!;Et zZuu2~B;trF(uKG8KbzJ7=`Pyy%F31n5@&Eo0UA;)jRT4am=?>~yJ~Hmm(*x@N}8=| zp>+FnSjAjlrKujo!uDB15wGMnS>d^P;Uzyo{CZ%0rpMdJ*PK^CwC9ir3Ot2uMH&2)l# z@Z1$mzIyREG(Sg7?<5!bRSxJVd_#(knt)g39b+4B$f!OdK}Y0E7sochJ@^h(N{ugE zL(0W$g+I;|uO~0)Jd2%4?Zpp~t8cqvkv`&Ku4?C!B!w{qNdcX&Q-)1N-W-ppj6}Zt z96w)}hlq2>K0dm#Afb*4LscURqgB~Z!=%T(_%3&y+LZBCI4C=+9^ z@Y&Lz_xOJu)ICi{?qx!11SF*d&aU-icMjNhq}r7>3(7af1Ne=tU*31JooPH6fa66m zOH_u&+HKFARaU2OB%%_dRyUB}c3fGWczt67iy2G>Nfb@1gu-AXKIqTFZIPZH(iGrOu_EO^qyjLlh%3q>Lm1onzpo~+NRdnKbP9F`bt8X>Sz_Oo zs_!`6wl`SzLItkH<1``xskWUy>yh-r`AOp~v-(O^R#;$x1r}KN&Vql_yf`lLak18| z1!bA08~GoUWn<;MDA9UxilGTasx%$Djzi?v-q`ZKAJ#=yB+D4CP>e*%Ri;Q5`DfH= z?ccuV%22UOK&Gmz@JWVYNs6U~As!_^2L(*Mkk=?!%)w3G#3FfG{6Xwg^VD3a&tZIfxhD9z!kdv;-~s=V3?VW`qqo?F?795e>-o=z&e6r2dFJ9x zmZlhyg)~l+@LT4}#y9rMOKWe<<9RvB95xSsa5etkTS<|u6LE%8a7L75RfR_D#8{~d z4}aCyj)!)>sUI*{Ldb$B>&H@&X^CPD@7|)xG5`{|7_<7GH24GmOV8 zRn*T?>^p@Q{*#(L<@GQodIgehoktaUL7+)Y@OvgB_i&HT6>z`MXG*?ns+beFa$n>E zJa!t=%YTqE>+WHEtI%3Yb;b$?lz;(}1Qc0!;~9GuK7LR7xQ8+}MX~}6I1hkCz=sM= zm&2ym&!5{&uO4`%K6Yj97X>>iAaNW(hNK`Pa41)F`&}|um@9d5^lk}?zhBRHHr<+# zrklK-cqOH6~+CHfIva3xkha^ad49x&WR0uP!HZkT2E##N=-tgOwzap?UWltVNvJ^?n zq)O2EV}sxRcvPn!6Ds@uRKE)>NlCEH;3xbqcgc&%5$!t^94RWqD2h^*u=X9T9g$OG zy)*b;tylf0>sp=jD`Th~h``0bHDK&BqlWghRrZN&w$NwrYaSi3_xii84aFy=7bXBf zLdam0Am<>_J6x0}i&==vcIEaG0VgL}b zTwZqO4*r$@tQh=O_g3cTqZi3SflKjc3y8o7Sp-OA)tI;P9sJUvHCw;;USwBHlA>U0 z;0RXb*oED9@vZi>Z~Cij?j8%W3{8+Ef#EO^Ez3wmof}k~)-u5fck%YUd*5ddm>%#@ zk$^%;DkB5zWb2W)2iztZ5A+d^SkJPh{7Xk}mFdk9F6a|Pc`oQL5+dE%{Q9{aHHO5AyXojNP|RZDP)V z1@3NO62$NTg`rA$-z2tN(fQA`^738HV*K4KjrM-|`L2igQ*YJ3DRWtr8@CEe5E5hv ziIK-2PI#xwxJMK9HU6s>=Woo)@OABZD16-y^B+w)^k(|zR_4gDlwuKSNRlGPilod0 z_?wrJ${u41|k1Db9C9b4K%bBHj=pWSVAZ zhM*-B;tX}Q#%}AeCmSUO=XI)BztWFPg)5u+E|bqq>Q^#fCUzOcci1pUFf@UYEGC}Z zA#ZHhX`4+yK|30{dN|JcIc$}2-n8YzYY!;b`Utrjrxd#T z=DX!0KVMtsfL?Qw|y!WS7a(l(KH}Lg;CUASku3*T0F_F9{_w-Mo+TnuaQ3`uJ(QB6{|AwTYHVZ7c7^uHj_W1<@WrMx|63fb7_C&8TOiu$X#?D+* zBKj?UO^2q{v!87j%C?qr>@-W@6rgBa$am+7UgY*?BcE$JQVOWw9~(VjpWV1g)63o0 zxB16G>suF%F?WoI0R}<}XIYY!AlH-xS$roGMZPDvHVy zaRl;skMDQ)q*kkUL@ZjOfuzW^N=k$jd(j{8o0hiPKD%#Z167$-2%MxLM2IpPsCJ5Z z4nF1|-gk~ZEBqaNLdXzZKns)LV zzu4Jq>7d9iB1u|NAVI4PR(=t~E`G%Lo~!7?k##=`qf$6dQJ73g@oRf`^WEmmow4lc z#-=icfG>+h|hW8c==k$<8|OA_@ z1cM<3vVa1Lk|6wC|K@gGON5HGHLo@swfr}RC8u|Eh_<#K()1AhH7555O~x@u^F}*O z`v6=Q{Jt@LNkf(dtZPDNF>6LNjcL)!DTM z4em8jre;6i>-RZ}KWrHhk29F8N=U^;OeSN+<4Lxkc>7Ivum0@*5#=KcC_obwWH7eG zD7YvpAMyq?=m9sFy1(U^rO`j}t1`~Ko!!k`D*#9cC;)H_LXrw~U7n^%nw~eU;D(RX z|2cL>w9W!RA!(Wh5<=yrK7Qiac5^0szHehLE-h<_i?Iw)ApjI55 zpcI+KD;}uxSAOoUm)@%F*25KNHwl?gjk&@ZmLed*LSZCQkr%mTG|KA=1oU%z6z$Kq z$!Bg@(q>R%hGAXZYRKz)?@zSzBY1CmS&H&S#yi6 zxm2~iszt}EZ8*Lr8iWG+HD`S;YiO6X`>!cZ{dW|9P+KEmp0x)fl71R;(~E7ZHTVsE zaVG>NC01uTp6I3hag70S?9$6KMBcmI5nNv#%|M_~%P-T?nuhYa8s`1K+QgsXi_^Ea z6n`-6^Wr>>it{`5aEtcv$A3n{;PGy{!5%bjpK9-&(dOq`!#dFCS+8%RrYZcdrZf6) zjo|jTqJzgrpLczItkTxctr~-`_vZ;bc%2nC4lYl>o^`uM5wG4JyxwAkSY<4qTNFrK zu)Lh#-C0TXCq&7cf$=D4TF$e}SWep*>t7b*S>!N~=jGLpnVH8T!@=}dIm^< zuQP1Zvr*WoeR0-n*4|6SVeje0%31eS1>1g)&pa@iyf!M!-aBN^o8x> zn6CzRRLu%csObDv66kbK`t0KLhgQYuxvPuQ=KYEZhDRPN&fm34qdTbL9tfa#g{;#W zyiQv<@ZZ50hLpD`k~a`el33|pM8-x2;CX`vOg&=%ZI9p-8MX>FkM^zn)|o<@+O zOlYRo?k9}+U2A9kI`NH{&Nt|Edyb|%d#Fh;ooobsJop%$w%lZpCw)=f5!7xY9G#?{ z- v(%w5$CwSlMbibJn^Lj^ogC+Jos}J#S3gMJeBCxU|-IUK!R)i;UoY>GP(qzf41iwwesok0$NW%QLRW ztF_~5u-2Y~3E}B97^T1awC_4-AJ(Z;v30&YMg?=C3BA8J%DMSLlyd*p#$$P$1kE=l z^6~~I=Xq7zT+>kNlE$Zj)(^Fu-(M5u zoNi>Y4pL0yAJt5r>-eOZ;k{_k%aB*2%Byxox3-+z12AHUA`CJCjg>w`QuveWF3(oGGS6`aOclA>`)$Y%Zt zqJe(A9pu-%KYH7%tMxl`VLTz`0?1GpPT-K#%*Wiw=bLbJ)^jy`+?I4r6|KJ{lYG*@ zbiXA&df>k8`j)k3B!NI^|1MIJ0LOkoF2eBmIy`u+oM zlHf;C^15;#tK`m4GSr7fd0tiZp6~i>|I&U|6~sDzw(~T8RbB7DW&F-}J(pYmE|>OJ z6_lD_AL93rpZ@$tr%2XjNCr5@vJfc}D6h5IA^xhl^EZ527|}!!AOu-TCL}<|>_98Q zc9?&qQ@ws4Er}E@0;h3>re#Hy*(!?`ahTuQF0J{%W4i5hUZ`brAn>6|ArYr=N@S!x zgMM!I*$*ElPqJ2|1r}5}x;xB2d`+(w`#(qxMM8nQ-b6_3`1HPJ%*he{tF3z)CVBOu zrUeznKz#hYe{Gx7^|ZbEdG4d#c8sU)Jvx8hp%$S{D`jzU1~4=ZSSYx~T*RYk{`H$a z*tGH&I`Mor*kSvJZ!zxMqhI`@-;P`#rojYF5|D-%#t1H7v9HpRNJg%y$lG-3&ClJl z7$oZo9$nJV#!w-p&8lW-XzOG+S~}UQwxj>>ox30V;%$?fu8moA|c zP_WrF0T_y;7>uEX!2vH)$Xo19ip$SK-X3zmqm;*6WIVlNY~u|X)kh@6e<3i@x$XLt z!Qxjs4UwG`j)ovfnSlhsGK7dFPP}#g{FFS$<7I@90Z29s!$7?bt+Ky09(Zg0;#60= z+^r!+uV!HJo2IDC*IF`_Do%C1|8KqRK{KeQBMju#huZe+sf%Q^3cv27q1wNTM{8(S zasCH`oaj(po!%>kzFNEg(gdG{hOi938QSx`_J=VXfq4-3WV)9ZrUpKWNLUhY?wgqMwau4s0s8Rr=*TS*$If8#Q|^-9Dy^wr{6RpQkm$ z|0CKyn5=#Fp?2TG>DSh&_FYTEI0)MNZx{>=Zi+G<30gU$E;y@P!@2nM!ed{KGd-19 zM9Vm&SquTTqT&B)IPaS~;Cc(~fME{UL)Fugv6b2arBUO3q>DK*EbxbpA zbbEHWFeB(A!spGN8=-HMcK403U)xh6f8V!~#%F!C%K6^d9&_)DwVZY4+%k6H^vK~s zXiT9Ql>ty9;|O6;+xfqShx6(H-MYJfsZ_)3_lhzSyfPs&7|lo`L#Py3bYSnMH%sJ0 z)9vBYl1?QA-(qcKpmGZg4V!AnrTl#sm-l4}$ zIbD`#7dcd{3~%KQTOH@7pV!~~`yZy)pb3H^2n@1RfN#ejj5qXC9p{Kwy6ybwMbp!k zWC6|)l88t^8hOC6arVbaA*Ea8Rq>V8JYw%hEWVb5JWjbS*1Il={S7t?1p+3 zOTvgbAWo75OH-tf>zbB(o3MWNfLbM2UuROuL8;B~yy`_ujh&Bg-1Kahe$7HhDd1Oy zW@2!wa->0U8d^(pXSdf+{kZAXD?@7uR{Xm~uh&x`Ae>=wh9(spp!laH!&$RI^Ru`0 z)+w!tVWtHqAPy-8LRQENIMGB3mnXV?>wA9LA>b(|rOF1pm9ud73y;`+y46YhaONsS z{yiCzzydKZe16gGAC_0*JS=s^Z#Q+6AFkHI5(7t}qFOs!bSs$N&=%Qk1`=rkDxyN* zN=2{iJ8bQoPySBzbMG=|DP(|X1_v0DDI=1b=ZKAC)~jphJW`+8)xVp*(3jXvwpFn` zjRZxBA_)eQ73L#OYR{iIT*K(lYhIM9mul%#agNZJ287n^zKWTp_gRznuUNdLhyizU z2mW4nMu_b9O~DbXP%0@CaRelyoijh%^<0es`Z^hIi?~hzpb3T*ag0RxFAe5#Yc{@_ zqEDY>uUJ26=di9Vh7JG3EGPkq$Ii$w&JTWI_Amd*JV-oXX@+135`!ekgm`m*aaeI3 zzb2a1aGg^g(Y5}6H^vyX9g`RtsSL)bq8Ke|`&LKz{MJemm#uPC?0qw5L-}~8qPdsTz}`E^={jCZnCae zdOG~ND{_2}Fq{$zRzkQW<-hoOvq7`-Q*|ew$z+rkkm2)Y&!df@+4B_Bo(^$V!){)G zZ+e^1Q7;ouv5Xk5>Vp&6Z9|>k-n)3is{c~vAK6Z;zFn;hfuMj+~O#BC;PahL!;%u_6n_ zSg|+fOuek!k4XSa=aPH5k!??SdWgQ>@4hf27 zprHAx>nqBlf^?5{eZ8LCKpF_Z7W>kg;HfP@mp+J2?zzTw8+_R~6te{+DkLz5{hR$yP2!C*2u_Fg_ooJ> ziN7b7v)8ioe`mW~JN0RO_PRTw&Yr3u7AO=Y(bSJWt{=SX`faJbEfirvxz?ZR+;l~s zS<LE?xM0ZxHfF>ID|;R9pd zxnn`ZMq`RZD-g1>1c}&D_hctHHt^LMFGpteWmW|kBTJYJVrTWII6ne&C%kz&R!OT$ z$qFk1nWCT=FRq*7{On-L6~8CMR7GwrOFVre??3YcWA=!8(^EIM0f10!4Nb(n3x3{i@iHH zIh*!w`RQGcwlr6_lyJq6f-(kF6*02({rY2Hb$xJhTCIx&Atu^pISbxi{Nt3m<}QZ= zfp;*HpeTURfTiNynzNh>Q-5tar-QE6`K1h7jRZjB5Tj^ zjsNB6(JW`%*+1TC6Lk&D>Euui41rS+X8?)efh8pt_6m?jTpp5L$k*51`PCDyAy;>) zwWmZTWS&T~I6wRy4DsnuT#E=@^TS<}Z^&Smf;=kwc}805&o%oZl$ zlq{(@4Md`FyMOF*s$2C|)}TfqZf|j-9?v8^_LI4F6l5WRNJ$iBSW%xTcH2DX;&}=4 zC;nq@9R(;Xa7h@jRDe$-;-x?xwuR2zH$G~4`d!l=L5Y+wS;81Z(`G$#B*j+ULMLea z`fJZO)R*SbuuGGY0L2D^d*dYhc{vgHGOwXXz62vNz+4 zFUD)OVKl~K7z+s?@IGd^=+E{UFUi+T3ZI5ndaLs}*w^vfZ*_+?OyXx1ZJ_(B{L`BT=3y8uI zrl_ij7*cTM=H)D1I(J)HdCC62ViO15Zx5E27;k>Q!35JsRR%1u!*Ii4lOg||p_@Am`Bx126^8s|LtZrG+Zyt14EY}o`)h|G|BNAj zuOUC!kk?fycH3P}aQ*g=j}I!LX~N#m#6<=|9I7Iw%8xX&Po48MmhiAezF1&^1s0eb zwTqpveKzBRSGJjQ02qN2v?5CwqOgkcG!EMm=dMHjwsvxtc!IQrpmHygg#wr2&lV^c zFx4a>C5zaTV_WQMJm7W5`HIH9#5ro#?p|*`*CTXXVo{ut3>&zILr_8wpMR9gi~729 zkdWi@`73%0$ZlKeoWFbFBfwE|Ik3!>X_o^@5yKRq(6mGl#>;`9n55w(3&A!v_c%NF z-R&QVq7%hv5g>$#G!uuV%ze)9x_!CKF~@WnQUs78g8(jzmB3mrb1ptO=lY$CO{=4! ztf~|sF$&2QukJyoc+aCg>SvM|{q)f6R5<_E@=f9a` z(w#@02R>f+;CM+V&tDJS#6>38F1Iqkt)OWFfk_A=hzQ7H+edtx{ow;2Ce$_b#9l=L z&GHKV%^jtzb&jwdeQDk2k+%V)R0hd7O))VWT&{IK^K0(4wmTw6=0*xjQZlBJD31O0 zxO2X3))$>l>pUt9<){qiMVJU_N>Wr-!kFJi-*ocM9;~B{b#lhJ^EWtOs{1&W-6Qf^ zVOSi46u?M|F;1yyTJ%Qe)~Ciib)uoJYVRN3xU|T#5kV^=Ndra15p(?8B>xwS?yk`$ z42};H>qY6LBgXft3LNLDT=S66Pdi6Fb?5fPKKe-Rs}n|U1Sm-2431$!jz?66dp%iR zF_&3&d=q?pM5kmr&R)#ENIbQK!;G;&tbU@(TmJbTCu2QxDp+r<-|O{Ow4bvtb zj+0q`FV=Cm(DQqt#$}EpwtTerqTvza`v>i@)uX?6&>mYqVtvor=hi;Ioc6f|7M#z0 zWriPSo17c5o+IU@Q}45;$N~#0%r{wJ!G&0-W>Vs(oej}5*WHDMacfk@Q3b+ehM-AC z0_ff^NB;8LnfdneD;fUhv=3j|`q1~fl|&eq1Of4}$N&*TszgX)@{V!y8f{!rTNi!* zv?kWNUU2Rj-e%j=r*)qbWfU5^M~Gta7lTs_PErgd6kX5gUFa5bU2<=iugIfUkyDWR z``dseKAq8*<2!dp3l7VsGAl~eJ=Bfp+ zZ(T9Se5lKH**sVDP97q<#Vn*4=O*@b@S4;4%;`fneV~h)*N3rYV*o`lEI}7(TRmBB z*L0+C9ZQP#GD*SlqdJ_W(l%{cX9z@c(;%}!ZmUp~ z7;1NcBbK5dB4tsbk`@iQrYvf#9kr_Wop!a^jL-2KLeB=hDp}0W%JvJcBEN|;@~EX4 zGM8d#7NY@Vg^|eT$(f4!imse|FS;pt$EeK*9!*WIv@!Y6dE(v=#;qMrnq%?eCXqM} zAVX4+5jd19y8SLW;0r`>`TBUh9&h09S=1F>%M+n1!M5Gm>+3JJeurrDnKAVwzujr?y0_)iKX#5b1^{PRihu+Qg^@@_UgVZhQP_X0mBFa;Mb3LXWVn--lU37yBVRD zVB6sw*Kfq5$=P}n%bL@axVKU$LX~BP5^)(UTJyxu$2O){*UcmD+gltZ;>R(?PoAEa z95!$4{0?X5`rfC<(E34rIt=n42#TZt2?;{*B2n?UbBgb|2G-pD^Lx(uw&0FbEyjgS z&MThv7Y#I|nXfameDXz(c6T@nz>Ej0uhgBZ=7m4@a>YD>rc{wo6oQa}@-1^^;~V?s zrM0&Xuu27ULzz#Vi(6BNub-rIBv*tr<5w7&L6A~tTBLH`JpMy#B_TQEG9OcYsekJH zOZfDuQ$6)#yM3f%o1rP3Wod{J3KP3yj$O`&U#Zc4Qc4(KNM*Q2T2^odun?o^PwG6f zF{#n;l+q)ta{Ii?dHa~>i6^S{3q6uz;H@Y?6BJ}Hw&bYRSS&$t`SLtIRDQLDJ>%myIpcb$rxaO zOp>&OgRqQsi^KMy)CgwJOWX0S^WlBZPGi_eaZ7O|Vhjy%RTky)#w|^-?RO55p2Jox zkLVVf0IV!2G|MVdh228$cYgQxscqN&715z7Mj|AN1jH2uR*FN@{mxDI`Gy@B+0r0h z3L*glroccwHkDPQ+eZA>pUD0?T%5#~--QYGgTt$a** zyX}Z`+k&(-X;x&HNC;81i~va^Dt24dqs~Fz+HdvlrwgDOC5CPaoPhz)R2U8d0T1%> z{is)=oP&ns`$fr>vR14zyPdZ(zHcY|(Hg!u6 zD4Zrp48VX#VFHg=L2%M(A2V+M9odlxB~peeP$d$RB(=PR(n)8+D^H}RKC9CKVWJKP z(6C4`7>PuYmB?2|&AqK<#>7OU6uWL14z4n}LA&jgbHw}?^Ea;3X`Od%=F(~jhd6^6 zf+BEb`H`ppvv8KH#Q8w27;hoe$OxY|d%n;h$TzyRF#c{N*Y&*dz0!m2v~zjFp?#i0 zbI-Pbh9rqo1fVF00T{nSk3XIB#Zw!1Je(Rz#`+Zj0H)n{w?MH1mzn-_3O6@y)?seM zb6-?sR>2_&Fc1eP`nNOvy(hCDUe`ag=vZ7hhjUixSEh5am?L@zxLy8OTk^NFc`JI> zp!NDX%L~tKskDknLZ#?3{_d|YobihPNE3TX6=JgBU3J!(`qZkI+JAR#7)%r7FoR_Q zMUgnp1{`K^$mer;+}dpfBlbz|+$?Mwx}yJaazhWk^uftkG*A-2M4HA`6(Nv2Wt8*8 z!si?n)j%0HhCRyf#^+|gS5Z*%a@S`!C6>=QJFM@#_t;yFLN`r702;W|g_E?lV(MAl_V8_(+WnAu@_xE^O+sHQ?@S*;|?oa00~OPpu|8@QYHGUDYje729${%`_{<3 zbBX=&Z?B9f3YAC*Bq)(MfhtE7YPZ$Q-1_}PQy2am@xT!&gaAttI6`FQ9XPc!pIRcFVhm)cfc-;nmrwQ-g{$%AyRYZ#uK%IY-Wuo2Cx_iu zFEe-9KYd2~b#sO6F!K}$P>bU}AG z%P%8yW0vG)cXki6TcdAQl4dZ5gd{Bt@CM>U75hH%$)Y>f$OnB{7W)PV?RZ%%w(?W^Us-< z5eXcC<0@bX70NPJNd(T-nJqf*t@iTS$T~BTp&$Wp23M8Xkwk~gR^YBzcGCKMlr^N2 z1(LysJ@VSb(F69`tIEXGVIwl%n_S&BbXQ5F^-^87PaD-v`2-=8G9zI$j!SQK-I@K~ z(d{*dY9D;MG9f6nz=HDu`VuBG-?`>-VNyrNoY{(IW0ZybLj%zq1Lm2=h@SVyj3+?m z{6DADw?Eb_6i@iQ`VEeNV>gxtAV7%s%5fP{g}E^il{s##=Z<3^n}m0!Kpf$I*vzIQ zx377le`F_Pgai@6kgABsQS^102akU7%9#S)V-=PVh9$#DK;jrf2?5!kGQf|#y|P7@ zyRW;?@h6)+%08ANMG?H3LA5BqSJzVgFlZPhH69uXhH~l~`k!E;p3@=T$m|Iw<51nC zzRHq=IjUHoZb5wWZyx2jOXkd$pJ)3!H!)|e11yXT5rv7gEHfnbPTFe;ufe2hmDEOa zL*j0ksRw>({Bv%*P=c-4;iYaYPcjTkQY+hC% zb)D;|7q8caaC5?ui>g8bRuUB)h_F;2xQ6Lad&}YEl&Y4HnCl0x&%CFFi*NBmWS@di zga}gsVyHOeo;@?GT{~od_qmab91tXNl~E)K%2auc9PGAUnQdF8U)LU`a!A8a-cI*FTUJWj z?z>wypQrotb%R`ivpJNRcs$N)V)kGc-oY#-cxIo)EU^1ly?0tHAEoLy`G_ zlNiNPkYaEK!>G9JV@73ql<6D4Jk~1A$}PR>B`P?rK#|2!2_|n+@WzVDbk92~(>1u` zv=^F2-kl7MkR%a|M1$C;XIy6WS?dxud{T0bhrM(o5fm=UfKUMmzIkh6?)sKBYUrcV zsCuwqrEZKgp2LKOPB5fqeHfy}9v^NJgM47kV479Gin`n${Qa-hg6peju+093Ni-so zmWK9rFdd)qnXk?C)M^K-AV_`j_0Jyu!5&!*1g42~!Hmzmr*PBXsyi*5$T2@)J7T<2 z8vX2%GSi=0Jgm+45if592qubUSQ4YCieBDu*s?N3>5)mDhoy%e3dP}t36_x&PRkgE z)AL6ruP@Ju@PGD>1I&q{o8>bBXqEyB!(%+rpj+Fa zKJf=~Z_ieNDTM1=MZ&4We7Yq*X5VB;&pkpolE8V2#0d&#Y5(Q+p1w$|qk!O+#{2HM zKia#`0!Po~$?#ltgfVbCtc8;y#s~t`6~3Q@{dAb^4bmU`eO^@e|1e6VC_rNbMR3ut z7f$n@q~mQ{&Tg)Ks8ejhCvYUM&?HZZ7+df8^i$`$ugR=c#ZhQ9Of>I1`;>d8EwoK6 z#o{NL7Ob|HVfrx|CYj$qpCL4CL`PB`hB8tGxpwa;uX~`=>$W>Rb_rD+re{Vw3l^Af z`C?c7tk**v@%pTPv8XTM6qs9eYgqrGQz7WC)Cmc}VVo#(6erP8P>TMj_fB)}w9R|x zGzfoUDoPAc2%i(7s7d-x^U3d~WBUh0h*E+3?i^EsD8+CTJH9Qt+vS>IFVaLT9NGG|7Eku6R;a6^bg04r4Vh{oX?g300Q*1$zpvCq+hn-U zJnX#&N9Rq{Rv^(NOA{PJ5E#dC9D{CTceeCTMoUscS8<-(KHir(e*5##G-Z>vPY{m5 zF;Svuj^V_eEswG9-20gpD z=)T{S5nsJEHRj~wEu;H>c$EEqJK3Ov4neRlF~0Arm$BYmUHoZfljZ7+sy!Zw8p~v5 z)h8IsryLzFFTm?vntG#Mmr#vwhpS{<(CJDGT{lEo-b1MTpz)p!v_j8Na@E`II1%qIBDRX(ZeP}%ayrS6|D4^?gGe3ja#UMhL*YJsa&-mECOv%Eo< zV?)EGj_q70%K5m5@$$rLS?7`Rl1orNO+wm;Rp5HDv5MK8Vpk}=Vpj=YM!SC3)sP?RMvyB|xL%(M zbb&-BQQbv8cE_YXLsH>wuhsyvim3`8s zvbU%zkff8I4&_KUx*h(dfwq^p{>nOEE^m1lK2O(4s6s)X7j(FsV3T^00Qz@;ekY(G z2-M%i#h%Fb8G+xy_uJ~IE!X*5hf4#f9~MaO(fVPzQs7sep34LSu9AKxULkZ_S>?ui zepE9?JEmH33Z_?!-sEUfAfA3#pTm%1jf|n!0~D$udDOp8wD^Rd*)`5Bj#LmHveo*^ z>YuAol;I47&^-xy=LZ4r7kL`k=?p8pPG1Lf3FrqJ|hD&xEl$tM?< ztMQ&G0^K%l8MqHc0iK)ejIv#k&N)6%Ux4<|qc!LXy}!CI#&OWPHwMR}S(NLD7WAm# zc`PYPIqy+5t%3Zm#UGLGxkqb1+?lPMc{W!0w^^il*AO4S!&vV5YWhh8`2pI^qjvIJ zP4VFy!sasaUsEK7aD4T|cjhk-uw1=wR*3gdU?+Bh)cmU2sE$eO{z}MC}T0 z-J{SUvsUFi&gE?n-!RJes#Q_GtmyUl+skyl zj(5JfubdG&B}V?%-Tzc=sHpkBs>{7sYQ2{my`hj0A)ivt?MaFtPnEa*S6TTB-H%nY zokHRzDzB{abdz0)U`2v0RGQN0zVce~R31Vu}a%w@J;SlOv+ z&BxHbFR6;t_tgqbbQDAdGs^gV(@JhHly5p-W#e?I&oM4{KTf)znW`ao#0rm;b9vP- z5q=V{vU>G-REM%ao{juA;5KU`_+c(nEcvF>Ar=m)ED zLA9%_ULDE@jF-5)E>ZIP@(BC(c=z+DTZbAIgqN~HAC2cVBkZ5c+fQ>@?Zm2DdtzO` z>tE)2go?V}L2`tBguV_|4qlG8xia@hvC@5pL5IsxjyG!X zk-k5;Jm7{Z+AiJBF`%r4LEhQtm>d)d$VC#ShnKmqO>U){-jRz($b-#xNAY zQ8dXh3~9?1ywdnnjdzcmd&~KR@-hs7ZAmoDGqDMiMC($E z+aoG!tpvkz7|D`2=^KGOAmuv*uYD5eRpc5MPma*OXzA#7jd@Xrs}o9O zprp-z?Hj+fg_<8=43dEax7!9L0e7K|At^#31zJ%A?wuZ+nteO#(F`cPPSdDpYJ`SN zi|~C#gH%c7HY~;TrRR`&=2t$tZp*lD8>xBB5HtXa(}u|cP06H!aRN2}`;puYZ={)E zDG3pVIKeRA-1{27!QM%I;u5?Gk|St_;u+gu$E4goK+Mk>=u})bH^_4ch0zMz^Uddb zeBA27OekOtFSQkM0|yX1z~*KJMgkb12|)xlkHb|^_t#dWZ!?lyPUJq{eCKx~Zavny zVTcV;j-DEk+#vdTE=Kc$c$=8X}p|@T57R`;)_7ZU^zvBNRS3 zj22`9kT^wAMffYQV4{u1FoNa@4(C{& zVJK5(r_p_G{wW<&8?JWaABi!Uam1aGTYlBQXnU}&4-5WGW#yfIF@ z%Q@U3I1i70?z5$1j~Tw#=V%>t&_M?su0YV144yTglP%L1JOmZx!$XVYirwJ_ZX3a~ zGKnjUfJxk)4cosus(u4QYospcHRaRh@+t?yeq-po)^ijFC2Hd~9H8H6kHrgSsreI6 z+}XHAIH^_S1ezr!z;ZNilYz(Ub`>@%SigW+x;O#Wl!>GUjl6bKUNrCQ1r{D(mlZ6; zm+TV+iX}+EV3Hz;(Msk;*DRc}x>0a19C8t(_zpOL+b%flcL3XX z!4o}(UNt8?vbXoOZMfjFVXxFv3JN1Jn!;$xHV70BbIZUz)a5&)@b9oj0#ClfJ4}hb z<~PhqDH9jC`i0*g$|S}T1SJBVV9@*roa3n`@ z*h2Sk=5=y+=H=%6P)oVA%$(EgU0E$&70?Rvf|NJAoc=OBc;=Or2{w`- z`=@h1_U_g%E#neWaiHw8%6#tOCmKC=U+rK7sbph!+PyZCWp*v)u5DOKL1t2=is`0k z=kX8CXWO6V_-T!_mwLr%qgYB|F#;n9l8&DKSDW7%GA?_pR4;g;^>~GxF8LhGa*`y; zED*T+M<%~cr+-`{_QiFb`Ne5}zcZ&vS}?l2vW>>E6W`_B^mny=DT#5O!WEFYw5zO|*lj(Vw~Yxvxp z`(br&w>28u7MzHIGq;%WETZ-|hr@F{DM&cSQk23`SoCFYGoOBS^KkT_Ct+Pj8pg3nqJGAJ#9-+ZIvVCoq|v zwP?w~lZ)$BgNg>bYX5l{_|v;pfoEd0t!+5TQv}U(G()j0&d})M7P*Q&=8v}wsJn6|9P|?g4Lz_^wkbRiMV#bVmgRr% zW12B!SCd37EhxH$ibR&lF>bxIz*NTfwYCQ)!(Q_!7C$p<5!~Yat$`_*yRRUPw*grJ zj6z{D#mP^<@y(zX*L|0nbrl>llt$=Y^UAYN?)_pwRCYgr!bFY&7%nmbYWHJ`bF@uy zQbl=zv69Nw8UT~w2lM02Oj(1T)to{|g1|A3!We?WDTd%;okD&ve`i?O@v(2xf_Iy8 zu8m;$JA2f=5TE*XpZU6e?HbNc*ATr4f{0!`{>6Ofz^`lHVQr=a`unI2lqQbJ5WY<@RC6?zFinl93fo#z>ySe!ehzdORuwli{d& z3}}Ayscr+cHFdFWe;qDC9_aLvM3Dv&RqVyO1Rpj3^}hL^^*Ld&Op5|5N<0ZDC5FA= zG4uMD!Tw3l*9$G(ab!5*j?gF{eO`j<6XwGAp8jpjH*lR_7e-l4@-oTr7z;#BS$H9D z+>&YkR)@;!tjXyCHO!xs9dIhwk|aGri-HFRw8- z(pJ*@c#x1-fsrYNAjyAUt6$in>A1x7QgdtR)EH(Fj0MIck_LJ*Sv$g7XNs^U7>kwD zC(YAu?X+U{Ah--$L+xQ`91|FyIFAbiR8CivVd6>iD+BJI_vUdp8IKFW_XNjr1cR|O zS@ znrG#-3p;)wT0fF8;u1?^Ro#jGP5Kt^67MTdnX9esH0hs_A+*i~V&ruf$1%=lx{DLG z(H?fRJ=gBc@txhf+;a4K+jHiWzv}J!U}QKcgOh0iqe)hjNCA~Hnk9!$(VEVgr`J8z z{<##m@a+n-@ZkWkBqef`LjPE4Huw}mR38SFX+dI6|6~|Qvibrv>40rr^zz&oei(=cq+spORkV-lM8)@VT_95e5dG| z9DUgdmTkKT?<7;#;Ig40r4AL2vn0dPEM@bt&2YEf=^HIou8O|GL`%J?_pbh&iBf|i z3K&693WwpS21SSXR9GfMswJWBR|_}x4Qri=VLatq6B!ayw5&7BDmABC4z4-cqVo-5 zc}Br`iRF2ok$4;>vzts>WR_v6(|+iI|9wIR?+{9s1P;eY)~9B+<+<&-cAtZS;cl1L zW%hB>K+nJ&r^^lG1M@yM7;EZq=}i`ugjMgZ|e6(HRHq8d#da8Jyr48_2bL z`vd1FNl+A*L$*6}hW5Sx;-tlsOsgwd+jnh@&ry#dcOtm_Peap^SVo+;$?>OXlxs*0 z?lH9m`*9zWbh;-Z5C@EG3TdG=~#7&KF5K ze!pEqguMR1I}#{$6W-XgZsm;Xu!HDL1U}}on!1)D-<)6F>`zTQJB}c55~C=V;z)vH zVm(K!Yk94Y`00f~S%$zN4Lr~y0K+I82_%`grq|Yg-2>bi=xm-4V?J`%>shu>IdEd{ zM~$>ORdL!ljt4+ufr2Sgyu4S>vV7qS3A^eQU++i=RTC}B7{T&9j?s!&VsCxp>%+x! zqYgUgP#)XO`j&(_=|@xNg}+8Z6SSbngscz>R(9oE14}*U@elqLn+8vUCAtQj7YKr; zFEq7{^sn+VOeMO?7C4Wec^@;z%NxIa*U5UZ3#NskW13{2P z{MF=F@9?cdu!_6W0#gX<65~Ue$&h6!d~eQ%uREp%i*&MNBRFQnhuw$xyt|b3=4Y1W z>G_=&SlWeEzi@&`3Nj-DMv6gY*~s!_?Y~AWn51>7lqkcc(#DpV@~Kr%abcScXo;6G zfh8zhioWP3mZ^)f-V*Xcqn={e4A+E#z8fHAMSX&ynPqK$R=;goJwhBJMB&ww!wHte zX@ar!^mvE5WMIny-qB#PH`>lNv;0I~v-jq@P(ju_gzkx=XpAK&nzSjtqk-PO^Mu~6 zyuyJ_udAOMc*YMCZwHc>nbNuX=Ulzyb^2thgAO|AphLh?lQ#W-wZ?XX!ocK^awjDU zG9k+hsmNs8=Pn-n>+pT))hfBAMng+W(*4zD4x{>O3Ky}euzb1C&&D{4pasARlt4vabbCwT?6sZvyTV`E;}x0W1&-oLG04<5L$mCTmfTvW zAA7b5^kP@)+)Z^9sA7tzaop#mowfC|I|YaTdOT{L_XwhEIUGUXq%G%nvLyBYq4fh7 z!=jTRB!MA#(kJXkkIri?>mOLzuhDQkSZG9?oM^jZ_jq%?o|ljHe_+Mom(yVH+jWhX ziZRQ*H!j=KK0j=4Ss73iCKD7Z#bBmQScXk};Gc%odzKr6_+&{T7esGp#ar57jgCxj z4Nqsrg>pcTkrc@?3_}z#;1D5iu*)?eKW`8y?6wM@{qcmSQc}zLE(3aBKuZ-|yNr_* ztY=Mx_FrmW#bxzn4e!8EcwB6w?Ijec@0ay6LH5|~Q>~r72;?mBWv)(9up>SGCw1Qp_OV1Net^KZE zbM3l(CZZkyWShe9w9Ij|Krz(rw_aOmzr~XRYy1(hslqH5J}dC}?c&Uqr<)8Ne9{>9bRHuyUf^&{W)(c->3ms1TWe>vEafCS^{ckK z7>vU(g5!9G#xa5=W3|yT8E&!c>27|Y!7q>=^FnftD6kyMGJsS7H-7pn3w~+%V@7%< zQP3@x{JXYq>AtLmwz{^&%`nN59MAKBXK5z-Y0G9g*iSjz!3($MrK})i$;Q(}f%vUx z9k}0^T49QJ!BVi}&O>9L3A-#4Jb_a@#mN*yM&G*}%TL#>{PdLpwSrl&v>Qx{KwU?| z8}nLb-6d7nE#F=Hb*I%XO+uwej%FFccb5a>2@FRGb!jtyKd4l#DsHzd@0sEl8{TsR zP)H!tEWk-T23I1vmZX11HJjTT^1$5CJU~eT>+@*H1I28g)33H;w6R7NnPrUzr{%g; zOTHSj9t)nz0=4i2N$>cW%SI_B+DYt^ti;y9L`BN75_Z%wp4fC@s{HOZJ#+DOOO=BQzXmNEF0uga?t{{ zjrFvu@LIapTsB$G?xH?v9(=Dam&OPlBUy&>hs^bRbss9^0=d82m7nJsrmR?d;fpu- z3kguFfJ@9%5xP20O=m~YU0$y7`%3VfZyC~c^N{22o|;q>)^3PkG2d-6g0l5;xTFca z^6d`UcLtN27e94Pve-Xa-}Q-=>A|Al?FEXBAm~2NK0TE$Fjc==gg&F8(DL;5>5bd} zsA*jnwQmE6C z+3vEWIZo9cb2n_r>!G&=O1=lkHjI;SL1b`6qLgKS{qAYIoahTf0x(9Dx$jo({r1?=k7_JL zMt1NeI)pJ@CR0UawX=O%`L-|CaYb+UHb=g{ka%T{gXt2t|8k-K@@{Xr_d6-trGAbj z=k0b6zW0l!4#el-h`}fp=WvR{Ni25P<8v+dZls&u^e{YQdLdYj%_T^l@u@*Do5NKA z+!mL60&oun1?La!Y1ZWL`ZeIr4Ru*EsA1^mwUD$)oOsO8D7Q%&%h7tSRc;fF-J1&A&t(0_sip+#(Z9b`1K~~ad6J|hnxu&6 z4_-`$$1Nx8rTo%!S$eSE#wXI_EQ^ZtW!*+RZn=2wyPo9o;hLQZuRkPlj-Yv#v#IVw z`U#RC16!UOD8MU?_xXnNT}O=JKIapbJtu1Q*tAr8V&-_9CNZ30F@hoaAV&;ChxyaB zHMOdE+VaPgeLrmB>jihZ*n=MCBOqH$&hwtJq;$_5|MnN~NvSgjpQm_w%uBbvFmDhilF5hPDzIGr>8 z$tAsGl1g5*SpM0x_2&P=hbj|!j-@byqFFk6EWK*E|L)BT)&uBxbyEnkBUqf^cn)WH zpT(2llwC!4UWO?T(sSS@6%XZ-2zX8yDQabOEkd`HVm zvogMF`Q_lQX&nZJ$FJfuh?H5D2YmGSea#|0DDL#wG^vnfF^ne(nq+tu=kZuY*4Hd4 z#vi7i5ki<2l&HTb5@0e$C_E3S*!_LJZh8L6#`{jCYMXG-7|u}y#?d%UVJsKB*!_lO zbG0!W*d$1W`!&uS>`r;0QwEc5oFa(?PKgxGiVbf|nb&vncd7L?s!1%TjZ0!VZ-}A| z^J6r;XW6!W&wx+gN(&xjpFas2kDeYsu)II)_O+W@!9jc>BbeWDmLf@6%lJVeMVicFAy z!Jyj~$<%lw6J^9vJ?2oh51Y(i=wQgzY4Y(|}|ZT&6@^tCRO> zTmxKZ`QiSy@APbbqnZ!l_eni#a03b0Cjob<*hCcWi_1*W99!(Le7M`?b2qs6;<&{= z3;oJ=4rMZYYPoj(?ol~!7RRm$?of%+mXTRX=2>2%IOT&UfA2K3+6+TkPoh4xRKIgr zo#q|Gsv3C-!v&n+DH)H!ug_VD$gwy!{lfC>$G@i!n5b#j?F$~o z%M`;aiiFyAPcy~ZlkJwDwsh_GU(XK6Pl0~ZX&&PV3iG=<>g95~T?Iv}MStKO{VMT7 z-!W%0|GUgqW^^Qo7~j9#0Z#iFRakPm900pYCELLf_-1ef{^2#=tF7@~r1G`sg-6CI z+V3iBT(1^qN4is|D+@|Qh;J^maKV!Rz;s5`D9FTW&nE;)z?F-jp=VQm| z9!u6;BMH`ulUi@;iLBX^|rzN-rb?c0Pgo_p27t}RA?-{$IJgM-TGO2S*5pe395gr408v~c7YuGWuoxV$!i z5h6w@G*1yRc&7N-(qQ`wFAXg=@md#Z_Tm^IQ4%4slE9>WvG>-e9{)PCb`_tXOY3D4 z0tB%Gmg_q0|Mi}4(t|ms$R?EWja6dpjMFAl40QzRetxq&e)^S6}<0OOQHaAdw@py_N^b9Eyr~HBt zZ~)0`cR4*L7d^cH{wXgcZq_aCbkIQu9dyt^2OR?78(k5ugAO|A5Z6Z8WH@5!*>Ixh zvcfz2?L$T9Vlm&9P!cC?qR#_m(dDp_z$@e|`n1oWbsvsNxQLYh!c~gbwdGXKXpQIH zu28%|I|4_P@Ao(9JRA;>(Zca4-&>}mHh?cHiVs00_osD)-yLz5TTLgGD;gmE)5vqJ zW6~p*f~n$bCI_UqQs=@!<`II3b2!OLl7h2c>?Cp0Qa7!wV@UA<+2tl<84X7*2Mwba z3(u(@F$^n=A$#xhZ6omtMUo=R0#Puvnwc=|tzHSZPH$BbN)vl&dBkKmVX3orNGA4V z2p3MEg>n|rk$~hFwH$HDjIl$?Qh~V-Eo3RmV=dC>b_+8H#vaV3f zm$24JONu@7zr&-$hX=y}%>V`{0v3Zem$Q}!AHA*7yW63&;Zm1=N-o@R7{ReDDH8z4 zN}LTpyJuj*qZN1?=&U7k@5^oGyc4$9xG3ThAp(JkCAi4nmaG*MTMz$K^Wci)AlzS`0-uQRlNE9H_%&b8qLZxdZ|;a^); zymVk+EfW&X!qBKec>E1aC|ka~$|>pZdCR@8{?)Rv0Aq!Rx@3jpG)|HjLvXe{{~fA6 zUeCyUr`MhfM%hJ&-I?=RtsXBtdx%Mda@IT9eiV1K_|q+Fxwaqu>H9zU(+QuHRbOz? z;;KKR&ahPw^QA6TxxH>d0yZ}zvl4|$nRI6Z`D4A#&0bndi(i|s?B@@lQeRY5D@X;HoX_c_V1(>8+zq#>z#=hU9 zF?SUNnv{WWP(-=+i_5dSS0Qs(qane%{hE6DkM@Ss;&Qd%>;C>%TJ>71h zu%F%GU=Ggjd5nED3WfHZwPb*Mnd)ag`*I3P(!fet#o>TsDt z%_!F;qsIG{4e9!jT@iRn*4v|l4m#+dLkythgG>9?ajLa{yVn}M@~HNOagwERf}lx) zpfHYPQKj@pE&K&9)i|n1Fr-`Ctl!vHqMNEuN}mLk1Suv7g(YZ`CM4G8akvT&XV3n= z!Qus(@m}LkxAy&acOB|ys97!*of?e}U<0BAa86`!QYL@zW12B!SCd374>YD2RTU)l!k^@FFSqIwz@{X?D)$D9kqrEV@2Sx$FZtoeYo3; zt1WAw@5gb$tnc#?gaJVk0IT2H_1H`}gEO-rpH#G4FttzR{t|9YoXO|t=v!vHBU zjE@!2`_{L_SY2J~%313(wwWLTxR40IS%wz?4tz1R&^YZ$QBzcXYdefH$<ex3gK>3KC!v-azfVdC{9UU&JK|Ct;=$ayA8%y34hezvLx3)dBGn5aQvXn>9cMjS^}@8aK?falh!?ctRTvGetZPq6uifko zYrxBKG(+)}!bku_zdLAc-M8`SQ(`Jy7GDo7ng|LZk%S;%B)-Mw zysVHoE>Ytz-2G6}YxOhHdoZtS)YVo)qKE{oqx`*foaMB>N;tB0)SLH?)}5wZ7r^Ze zgZG$jH}DE}r_Ie^6yPLI#2Etn`NHVwbo$3N5@IIm&ekMhQ`eby!$p65sGS=nku(6L zjB@}K?cCN4-q-#}vnkb6DqyY(#6(x?jjcJNWuvTM4Vy=8UzdDQk`)0XIYpMFn;Y%? zW%=Qk(_qsuV_*v5hnP`CTPHlc;g>JBvlL~*4!H3?rJs? zPDT4m?{kHmF8Lggd74xxR^ss!c^&Ux(Dht8B&Ph4x#^`-2rtg?Z%wzZ^QWCZ^7ow_ za&u97{XG8#i^b{;HOS)syusk!Md@g#e~|3E{g!{9FY-@JuHF9kPbHrAZ#O-DGVRpQ zKj(k6{A^LVUKQ1+m-)Z{Y>Iqn{+bAR^!8bUGUm~3WZek)I%>M9}j2LSN_2}yEoKkREEb%illIyWoROH^;}=; z`%kwy{pCRzM{1Uq#+0OKnkP7xz-&WYa=rtMk_4v{xNUY%@1o<8kziuJ-3@vR4hI15 z)%?fr|{D;E+tzqR3Syp%gmuZURNmTAgic;Ah3F$+un_t>H=cb>T;D!Vebci5m zLtQc$AUI_Qu(^T9<(LHC7zjSavNj~4g4>&O69UrM>2j!bVqyCBzXuhEK{N&Ijz}_K zd*t)T|L`vd(i-+^n9x(-tLqS!wnkg)Jy)y$vCo?$GJU9Nha?q-BY9dPIHpzF%2wyW zp-iY!J%yZ89Bm%H1*gh*uCYBaw)eE&htH=+SO+_6JdgBU38t;q?R$QEbM?F03p9!2 z6h?6*j^P+h#lAq_Y<+RufeyDj!`~j46+xnTfdnKO{hj$+t)9%q4Li;Z5s9_<$eSe9 z*dh7O7>>Pfwca^z*E^o<@MpdRFNy@sDS*Z$^vpMUVi&FJTMoE(38j7G7b7T|!fAqG zd7dX|bPSGuxxT1B-(F|br~+6Qt^Bi_XLb}WK?F(xI7WG~sH$u)nhsC&sTT4*6}f>qivm>=~rw7?2&QsY0*rzIJPJRpEVDmHs=o+IhR z*3M`8pHG6caN&4pvpV#7dxTiv{}Eja+S0_p z)L;mmFIk2%M|6c3)gw-A2|6JQbk|QXBWC@-oFdQR-{0Tj9 zmtX03rhl5oXx(r9s#Ui&ryhgy#$5DpN&>9N^1O&)3f1mBY4*ux(E97%+JR|x4R!Sz z4K=zUf*L(PDH8k5u-5r+@Zozph2QH5B2Q8Ti!lOV;@#`bu&%whtU< z6j^})ij4F8v%NOjKiK!Fv7zD0f)Wy%X&w8(r?-DK4UR#cDbyISxJ(h4ATtEZ+3?x( z8uV(Ia8nuEFz^z8U)5mXRo36=m+1$rxZ65+bB(YYUSHTXiDCdI(}dQBSF4H#tS7lC zeY{VG)s$fr0c1`A0?Ws64maC6@mKb)Q`OpppLt5Qbb#Y2g2pM4q4$@T~|Zk&!trjG)C|k$ugA94FuWKE8p($ z+MWF!E>Um{0l6Y@duHA7_%{WQ7baX2WdoDT_uE7{hn`kcdHkV)L}9_Yz53cYd=U0p(igb;YbV#ctMn9EJ##O)F}I5>klui@$Q`3 zT6^n~?+f2ya|&*^tH4IFG{&<8LkJ`u`%%IiYvY+;z3}y|(cFVk6o%wDjt2z8p|+VH z{4X#K#@J)l1AV4!oH_|wP!0&a0dWI4UjjCoq(w}jfk=QNt-`_U*T3qSb$vCc`Dqv7 zT5g9JpI<6yS3w@vv~*~XS>GA(<>I8I=Ha)29#<}~VUi-r7=?=%!T)FdnGClJyi!4H zflD;Zw;ot@*N;D&2gj!+3U%Ai>Dzq|7u*x<&YYf}LTA*{$b75)m%cg2e;-kPZ2`G< z?@-_^aJeT8@OtwG+eM!hPxK9{wsJ!Mq3w^p0Gat!BcYzT6GG>Nr|Ic zp2TpB$1u+31{3pv$2-tz_ZGz#?mIcpz2Qi9#;*;3%z#*GqNYEpZlu4|NFi*j78{nH zuy+6a=P^G|g_m3J)>1zDoK;XXi?NJtu+PD+kANmiz~i~e)7$0rg2~=|!J#hBg?lo+ zkNbj3L-R~{rZlb6q>2UBCpY~{SbD(K`|Xf>W5##>!tlP+1oG9S=el-DNKPDS&_RdG zL2`c1I-wo2I4?Wu{VC5;493tnD-j^l{`7KRz7q^DSYPXV%b*)urv)znUfG7zI8Dyl z-L%?>gjn|mFIdwyEZg#!1dX421Zal^33SO<07ejkOkk`cmet+P3)WWS`j0=?2HK(I zY1^UTBtrs)B?L?)+xMnk1ZO)0nV4T`Fg_u+=VdKl`_y2OmHv21lk=lmX|Fl{eVy+h zH^)Zv6wXKlLr9oZ^SjShxbkmIs%ndm?k!q}(2LK@R?ioGUOxCMG;^D*EjV(7?~*KI z8|;{r+XsmGIRl-F%jR%Ng4gbH-b^ij?Tr;w0u)^PjH|3Jykgx}?fZZJRl=%{S)S(z zfyZSIkKru#RqOKUhnio!t2ii>_M9yelur!BXqIL=?;CQ*e}mg3vO1+*ak_;-JEzyJ zb&mYk;T>Mv){yjR{cy&oJm)cjL=}Hc)jd^P&E4o5)=u(oNyoBa6^BCa&_xCl84ANV z>bBu4-kI99phj_QB;3tfShk zy`kna;oXo?jKpCyjsXIQ=iD2&WvqB6F}1?l^p++E~fs(diP=L8r@v4$7-OQ#rp^Rq6OrZ!L}G%tuuP-&Y!6l@}yMSih?p zRMmN)s_;QZCDor%$$VK=<`rWVqw}i;qQ%GMg0H+7+uI>RJ~0A6q0hw_@u?N}Rz%XS z8t>K6Xom@Dzd@s4H6q9-h6wF6Ank+o)`@ezix%o=^d~U_zF~b?QMM~fqaLmCuM=fE zb*Nm(it#ywOnv;S)Obabvvs(<_Qg8ra5+KUDCMitXK{%E^1|EJdk@`qcIEToo$W{z zMk^Fe^K8`4cHXuotQ+mw^j2@pf@8JWEsj8O+b~%=B!`Zh# zU-Zt8_iafWroND?9<1E+d0^oO5kr_mL;dM+7?4DLzFvKAzWV$wwL*Bne_en758fsT z0SkJa*Zd;h8C5gWR=pbAppU|>;=iR-XX zB~)Yug#$NOE%>+T{xn-X0j`-GI8I~#@aG-shilzx{pz^1?&tpT zD|#0}(Ja9+6h_%b0?Fl;`#D?%y?wWafTzg*(Rab*3)kx1r{CF`4!N-Q8h=NUr~1=T zJwrb?An!v!f7b%7^5O-ReTviag0*+X*S?bR`oKD*=Qs1u&j}ljFu?b7d4wZ08kSqz zjNZ_*aSr6DzeBnmrg@y^37g$B*yYN*_u?y$e)-E6$uO=}-mU)hA7dbMjYOCndP@CJ zeej-|LVNwEQ{pR6^(t*RgOm^FIJA6mR{7R*sme#+htF4?^{4mO2+U7bx9>lwh*|V* z=-=VJh)+}_k6vDXIwT?RJ5IHK{yQmrIq-e0^3ZbN_h>!vefS<)9?Zkv(R$*A5@uOx zt-de!kI(7wj*B_K2`oYJ0H>oDHC9+l;+(Jao<6oKJ1#|Fn#&2Q%K#&d~U6?|%K_WJ{SCe97-*@EX8P9|lN zp=2g!{F51_FAP1e68jH{foX7Eo2&&d4sz!gXuD)57!s#Bf+R7LXIVaWk8_)?TSi=W z|5&%SD-#~WafV?qmgOi63v!gWDm{D^o2~C(I8<}i4ppiu?XfF3%BduHyrnMe;yh2% zG=<~5FY4wf;PKd9&MEz}I+YH1S5}hWY@In?{x+-F=k9=z1Bx?15oD1ifk3PpxO1P+ zOL0<}neB7ySG{{ArL`#zR}#8znx<(*00aQ!)8OxnzxMrRYH)>Y&q{Ey#X98vm*h_- zhn;vNT2?rU1T?3_F!AiLu56vq?Lu-}?IA`Y?P3zm(Ih2foG2Qd1@HR^uI$78r8VbB z>N|__iaoM~o&YgPAsAl7X`bGYf4H&j*sKiH-mb06b@$YWuT9!+8@{zJeRA8)H@AhM z213{b<`Ou~;VemExX%(&C@d1Chbcb4W}Wv~+l@Tju{s*4&Qwlx@~w6IoTThg4@L00 z#SnD7Ubjq!-PTdxCozY&_6w%O@Gb{RO4vRUABY2FW8I0ul*c}${ zwemZ*rGNQT@f4dBitb4Q;6AUM1S^ugUc_&kH07VnS9ArI4m#+dL!2_lKI?g5 zG$>ZRP@?=Ox#mHL3aju0MvFjR(jz5d@z;lo1$7;Cs7fSlGW=>?eE$!#Mx71ocUcCa zC^Ia>$~c4iU5>TNU#+b&`E?Ca!g`&SDMrR{ju3DjuQ;#MCc^>i<5@o?Zatb6EEkqE zMvypG7D$ez0X=Kcl7lBp$%(IZF~)_31J+NjJ#=dRp?V?E?gRxkw;;wI)9v@w50=790#RVT?V2ryAQVQ!@77HF()yn^)9i+XixeqQ zf}#)%+KmP=cjJV0!Rz15tp8~3;5}dI4GTpRGk)EbSK0$ka%T7qOWD_k(^g}zabHdO zJ*@XdnddlG1RRCYLag2wjfOw12c3f&bN98--bm+Zf2D%f?0eBVy;p93)3)$BDh?BAR*^+P!J}uCr0g5- z8a8dg=+ux@Oa>8gehsaXQnJ^aX*%J}g!JImN>(P=2$J|`#@w;x8ww#U`{>#GZ+!OW zu#1v}Q8G@jtjKXBx+ujziB-#9`BB>M4L=y6t&k6AMnQ5sPLd4H5w_v^qQmYP4`iPr z%VU#VPG3L;;O?I-Cc^iySr1MxE4FWL5e#RcMk4y`M&$RPm=f7p6q0j$}_0 z+|t`CGuB}Afx|^~_#SJDhJpx9I}bi5UlpU>_%H(fH?~1H@wC&in67wq zx_?z%k&6>sU)(e^k9N^Wf^soDF&IQ*7*nb&^T+($uRbq!q`}RHzsX%so}L$t_;;lx z8RYV)R`*nu90lf&dd~-r_Pec(eOGs}V|8JK&i9RmjRGM_H|0V?wSNf(f~S_tcJl|V zWs)XG)N%XHh8fUB&Kf>b@-*UFZFU=8-!PUVv>#r3U}?+7uBoOk#>Z;jpMpQt7=X~G zTAn`}3I%`F&MN*%`BgOx;%K%CF@A(tJz{G9;stUQ#_)X@h?JiDq2dVi|FkWSADL51 z#S0;qi5T%wBS(1;aFkFR+DVU4DlK+t>rHHbsp~Jj-;jUZheFB(2N+i=z1z?KK)1C^ zQC#+RkTa5p6E?e~5H{oDW|HTq21^FeZnNFhw|-ZWj&mvzgl-)p@lLEA?cEz>HbV%R z{Y|k$L5V?IXs9rEDi1v0d|rNZV2)(^VayswEdenENB%-r*ifcnK9}k zYRUHF5IBBXrT7rPiU?Y3D}VZ1Dnt_2f=H*gI1&VI^@`>eVsEXYR zn4cF5lqPT5K-rH71pT&6yPaP79n67&6N+2j@ifM zh9iQNS%}Seo?pBld@Q{#xS}`|Xcb(RcrrZmLIiyV+#&_>x@Ck{7U}@RMK7bM&u=Tw z79bbbjS${9t1Nba2Hcdti1XFOGg0Spg2Egh z3giPI6Wd07odhkPE5WQS2e?ne-@zGQ_~~@`r8Erq(mRYpJ%i@v@9OHw{1!k%q{&Co z3Cbh^f?za{$?%s!Dd>?fxZKu6U)aM)ivH3+moij|Fs)~3rbn6tKPaCM(QmB(Io!pN z)J!&zf(KQJ{9qpy@a1fgirZ85N4vHhI(k*&nT01V^lD^T_ja%PcO8ZOS(T+ynF64s z9P}=e#7k`A{ON_WvqoAixJbEQJ0hb@hkg@{{t_vN8(^DJ|4{~a8;@?ItXbPXA{e4< zN!h<0y8lY~Oqe8)xX(+K*d;2No^3$6uezPZl;qD&l{h+Qi(%5|fJMGdHt0_ny-gm( zf&X%)H@YzIRe_tR{%U`cd64>e$AsdD&b(A9LJJ|<@*Zv|YKlh`=W9Jdgtz79zZUKp7&4hR2NhSB>2;cheD2A?omfPzzrcz^w|EO=Xi3XNb8%{ravc z$gkpMox}TOj_txIZ$>ok#uHg%j!P412rFlMoWtZGxKw{T@hd(PAN_C4mu&Z7QG8*t zHIlA-NyrolyVKpxX8|&(R-4=>qexZ>2jBODbE2$`L4DpBA5$Zy(GqFuuML|TU2gu( ztJ}}Dqp<$zkz0-#w%}cC**MN&u3W*gb!|Q2+6L?o0<#igf395O=b`J$LO6a_EJ<+L zB;5>LQ#i;8t9HM(R&D@xo3+v|RydkZT*b+8y_B!H(JKI0NV5SIusMw|>U@{^MV^c)0#QAIswi(fzhKG8lIq+dDwF|Fim=ZX3u1bt1Z5b0WvHtw+VA6J0K0bPY=DLMeo&Y}jj`9c^in<3k z2A0!IJ!MWYo`K&C*zYxE_TBlC`6aN}%>0MZwft~c+*O|e^OE`jeOo{7tp30Yxs=ZX z9=UaHUcwExkC9aLbsBBE6{I{)u zq;cdD<_no<48+_RI3aer_;J>hPH8*fy6uodTt%jSd+dhw@@~Coef0O7ucg_M=QlXQ zr~W1y?SL-P5mgR3RdoA*9Na%vi2o3ccy{#P8+|$aI!CcQ>WqXib=Y!PoU&4FIw*?k zzk4JK%j7){YMSUy6(u?VhnwS9IT`_@$38!ODj_==VwF!FKTOaPK z6Okm}6@LmSVqaCA=1zx7YksH#{U+XQva~{87aeL&M-g9jenX}rzRD&yA&B^s@8ipF z`f2&Paj*a8%83JMrY-+@=TMihnC(6~V^g2+eYp*K0oz_}C7bzyEj(o_T*Z z0^PO;^{w@>xBm1b`nXwmaNr|-B7(377@dwUrnSG*Dds@DAfI5(VV5am8Tx3crRxACCD0nA-NvkMp|(UN+NwUB$dgWK@7QreU@a% zJ3u~lbV+^@&#@gTFknc!B+qC04ztT93u#o<#5;^S{CXD=4Sox`@5F;Dc$GmOT$l$Z zEGFbDEQV(@X5^9V1Cyagbgxd0i>E=`+d^k7#49|5Hjvnz#J`cWP4=Vh+fV`pH zR~`c-%`_&zojkmR>>-^XPPZ^6`>X~}Dkp94^ne{b2A+oAjtoTvKOZ)l6`v3u6h4o2 zl=!EGUEwQyqr8JSL779A6aF!)LQX8k7w(RDf?vK4^A33ew%f^!J67o&*sEj!+pPJg zwAHu$^wKuu47SU0z-6N<;n59J0sIV1KamkW#2rOl=7^Oz4M(PtR(Rk}nbV-^Vb39~ zLFFZsuFNj2Pn9o{u1r2lj4z@ZN2D+K>s^*uUzmHsv>j{sd%N8g?t~SqR2Re_$|@?e=9q0_`{uqVnRSy!(PUncB%4G8(Zf`yGbLZOG4!3{^lgMU&x*8Ng@xo zZ^a{Y%<~6pdfp?MzsC8^IOYL0fq}1&HGB_l9!bJ6at~3Rr;k0?VrvM&;}EILse?Qg_1_^3NN07|6X zMwRMQW;_C=a*kpKChpck-vqerzjuv25mNr^@0s|y?Ikkd6q#lfa~tsF2XPZ17S~^T zmr)(!^yG)U|N5IYD6y>%Y5#F)>~Wb4R4F+S^rh+ch?)F|N%@a`=}|ptTRjPsO7WXz z3$*jvn|y<}|EjV73WfX_?-|PvM%`u5=a`zrXt*j~wU0~oU?PZS6&gf&$X56@uCD6E zOX&~ZIO@S4PZYgTrg)4k5V^5lxm{0=-D^#LD;?tvfc1FKdXs(t=v-L+I$L-)mhjYW zcy8p^5_7aBS#zowI+$o_f?`Jd9p{q5C=~EHbs-gSqe5W|qr)#IG?H4<90I#>xj71@pdAb#0ZWCk4meGXli4DemMcxh8A-(Pv!m!O>HddQC zlRNnzU(ou8g9JogM^G+tp9M9uy_D6Fl8-eo>|Jp28-E;ugNaMd2whIOgXHzaD;8h4 ze)j_4avZZ~&RefQ_}p(th7A0b>fb}p{qfkL-L`GEf(-|FK|FqOeHxp448-|v?J4L> z{~*7FhHXX~j$IXXDK@PUnhA~KSu>ztQOX!0R#qc?1vdGSY`|AN>4*;B!VG2wWX+;! z`|93m-nj9;?D^(^=T__EidMb9iv`>xQe+QQmJSGp*l;9!CB70}^R_%!oY~miAKCZN zj^e9wNW(;tQ>DY+U}pLxxA2IudG_{m)|W2A28i+o5VsjiW1;c^E6 zial`Itra@G*So02qtD_(H=i)$b}i^G$_3nr`MRiHmGN!ke%Wxs7?J~M<|!y|sbtj! zrt>b^57+6S>4rS!iT+=!s0rg}FfZKdxStuZ+euYZZE<4x#di09kj}`4>5L+m=I_L% zvo9R#?o9Hm`{rIjT_&8<7G8<06L@9 zYSN`yJrLP5;AXKU@o9zx{~TRGQfY6JBi(67*fiSa8j;NK+*Aun-x z048C1bWBMV#h);>%g7PGEW4x6AGOc@1?h-uxXkyULYK~hhPQ*bC|QJWeCT)~W+7x? zk0M5JfBM1~~FlYFr<>8CtOnE@ZZklf_lZh(#jTvr|2%Ry8Z6590+qc5;auP z=rAEaV8(~5N`7Uh+*ChQqZ$NUT^GODGDS~#v7wDoFd)={Z6Y8?Kzvj)$+c~w zkQ$~|u=`&imyhiGj^h$4q{ zz#^2OQZ`s_?&jkVx8UMBM=+P{8isR&Q+wckPFuo4qNKeknTv>|0BTarTd&(R=q%S_ zaq-@gG}3A~>pRFSb?>*}G#mRze;t7RJeDQ9bjg6&O>d&4#<)fVoZf$zd#B}m%E`9` z^c$zE=*9JJKs?7c!Nek56PwILYHjhs&vkjVeF4R)vMC7)52C3>CbibYb-dFSf z^5@F`n2Pe3xJ$v5_|#R_@7SBlk#vE|oDeeNxc@+HFX&7rdmK+@CI)O7t0J*{KL&U|<53%|zspD3;v% z+iqGFEF*vlGU&<>8i#6P{dpVRLt?i3I*L*iGPMG9$<->We3B*e)Asz&GHw3^`x~y; z70Pyj*?Vt<1KOKxOPp#51-xi%e95{dAg^|Jt*pGOHy04$wd*4GJ!or-CdDufSy_~# z6agt6E8=ucvIJrhq1*2m*#^=mN)XR585&xJf;_$Y&G_bA|IeNK(a|) z!I8V`KKFh#wRjENZ0mP*tQS1rP=_C#>QXS}nvJay{X|Rh4wuof z`HR(N#D6=p)|Da_KQF$xuN!}xkK#+T!3S@Bz^J-=neOns=(&32-J;8|iSvcv@d|Cs2U>m_zDBrzl(HB(q0>!eP^xQ` z34E)CQcF)E&Ai(P+TjL-Cm;@5Y&$fqFQ9|o^yKBA-)iEEvt^lGa}U7%wnp7fH_}a% zP}snNN8reCFrs)Vd3$_}&u#n$`W(ggHU;?r8HK!>6)M<86ztKM!LS$ec8rn7LW1#w zp=;=8CImsNdx+1lFIapQah7OYHGfG7_B(7BH7D*pNZO>P)fxXrAAtR&C!gJ3W_|uJ zheZ)sT_UuqSxsXa_o>ZJNt-^tSNwAl&aL)z)?ch8djXm^3#{e);M{Tj8L}!hQD*TPEika6hUhrasSsV4Z61cioGO-#}**s7c ztPS_LndbL{eX4L~tnQ(&u63I&P|W$4xUwYn2<Q%1xX=48N5Up90FeR-EEN6Ov6T(LzB@O z^?YBkUhWw0Vg*N?y$Lk9NytI4pNeylzyxNA=-%5YUpFeI;|twuU%@V@k>7pu*o}=D z7(#LN1yqWy>Kb>s+HJx_Jv!FAIGc?53i<&(AjXXSKK8-xo$tB_?~M^^k*N0AyhSuH z{lHpe`&o{mTUSUQkVVz@G0H5@v|A~?5FxtdCRJg4*8|azn`hn;flEQWzNKxT^5okO zrkNG~@%Y^R2ku3c7BJC_J@3h1XyQ18oC{_{v~AsVuB(=x=c4-UAHTE4^t8~GH6=}0 zL(#|h-+;RJ3>YZNmhNI|OLv~HxVH=1%(vwmhrZx%)w6>|q!cdYvoVKi%g{A|H+JJa@ zN6gLU{9_^kHv6dq4TV!3A5e_Omvn!mM?7psY;Sv(<=g+ZBVp{VBC{zItk z3lFlgrHpfIC)`)ZE9r?j+~aw#l^gJ{a_JN&0oZj_EqHtWjBDRXj>8>`j}j9Kr=evW zw^27$#?fZp;%@?Se(jL%nqkY=%dV^$jw+$rq2K$%a!xE2zxt((nvZILqq$Fx@F&g6 zJWQhVprf7=Wb>eGkbg6XgKcMsJx#MM)W7?A50Va3Hb@luiUODFtJE)ZTb;9ZM>}hs z6?mI|jHM1dE2CIc1T1Fojhka#(%}+5rVTn+^eBIea(xAhhh2c$o}kvB#Cui>G*&nn za`_u69664Oe)Z}suu!BtE*tnFo)-J2xXh<-Tit7#$ztTB7+uwkX#W+9wvWMQX+veh zq8Y64mCD{OYcDOa*SsLHiTKm7Y1}=I&LP1>&PuHRKK?1wLe#W<;1QSCC6)PkDrseK zY)+6>vx-y`Ba;k9Zu@a6dGF+BCw*9*@Zj3~XEN*{>V4{w)JS4dxhI%z$W3AJ zQeOJ}IDGlFhr3s@Or?l!_$$QH4&T^Vzwn&=`P7V+J5u($927d*cu!Y?5~f`z4)NDT zRyjohqaO>EVgbV-{EhGOFF$hK>Xd1wU5k+rABKPXs%P?ti)${vuU1MKhmCoR9l&Q= z_NLP^?`V>$e9F9#z2+&e;9tw)P3C*JvfN8vKUsxM=Oo?t3JMKfS`E&y$ig^IZkRGn=Bl$)BQ$+uQ>GW>BLHAInS$vT{1)nCF{LV&D0-gz(k*(rB^Rl&Rs8 z&C^iaK4g_|t`^BXL}~`E!L+v4sMfC!A1q1Vc^D7diWzr*RaFt~ z&%)1fAM$L#3hVWnItLl(V)&T1{+n|x#zX27>@$|R8((P5sPD!#F$@m=mE@9$09|!_ zfjvel*cz3<4EH3@1v7_RyZOy(LGa?ro=JLsZKj{gyXw*(=fHOn5iFJrh=A990ER8j zk)`*KP9p;L?K?6|W1wV*3)1@N68(rD-eFtY-f?5U(Nt?f07C*THtk4rN}Q2<0HAM3 zxVmALFWM%9IDVLx9^gj54~2jAll0ter-F;!UU2VNG(|JjJh$p7PNg!Z!YePD@4`K# zrdfX}Xtn2T@5DK$aXs2_dBL}0iM_R;^7Ca4Bd_sJeFJ3PpX+$zAF|UMc;QvP^QleP z$Nt(+oe(3&!oK^~-*q&vHFf4%(H)U-of1!sza25a9E8QC*$oBgxklL-tKbrxsXMJm zs3;_|_I~2qED@IDh~L9`FBz665|_jwbD7>>qlShLi^~(D@`d}nV{WCt@BRscc@9zC z8I4h$Z5Ect@3>pb2Pq^}lMtz@DM6i%R)EWYZ}<{@*zaC4d78sJ`q6ruAK)~SFerha ztV)$k8LX(kW_{^>daxas4w}!r{)q=1gQU8mFp`Ry%`{@Q;M<&d+bo3<4j4F4+~Zi7vQxrI1T)T%=4Nkwm= z-5)A93btDWIv9AkSm7ly{?=l|H1NnRZ!KM(!=0uZXXjKo0Jp@aB`c67iq$FQa+AqQ z*>uDZ>}WMx>1u^0963y$C~_4&hLe!N2thEP#%r%v8q7M@2Mpj(e=v0qC!oWkg{IL; zn4q5(a++%$m=1fm>$mJBFfTj&)n=^`4wjQd@{!aaQ@IQF3MlCAR_yP`wWL`q%T`sF z2G~tKY`I&@#me*=cK)e}p%srWg5ufs1e@2UU;Q~q~s1|w>uk~j;67W#F+WC;1c!$8kk$I^W9}~)21c`KN0O7cX zOCx?;M@xhHt<|lk<=aB6#{4by)SPMRWASf#$C?@*&Gd45(ygWsN4xZ;(7;JtA$B%R z3KIiM80i-bu!`uB$Dt|TKU99*%%=MB1UB5?3J+E00v-W)u32O#S9t6SbJy>FJTzOM zz^rbQ}qgPgJC0#e|uoSqknzx^xcw_eZSC$>;3j(F`O%+yr!#hkfReU*NQw0;5y3Ms zt4Wk6Ipq0`l(v$Q1xsV>Lt?#U1%*D9$D*rm(SqbA4Fe>PLZ1O| z$3vPEp{?R2vh?T=8WDe!_=sdtb3^)2dw39Ioa)pTpm?48MYpbl^J74Cgun3mGF| zUSeXzMJe+qW#m0);#}f-&kOmN;uB475#X`N0OA8TP?VG;dRWY_xm;{ZZ2aCAjUYiz z4%cLi>nbiU>jzvLp-I!?h|8bRMnB@*_K7|`RcE!kxDI9R%t~NULKurmYGe?Sh7VAC z`8%d0LCc(m823#hfenmQKW1{|milR6C~C7D|Lpuy?)EuY5mklwNo&Y$YEp7rXz9W$ zfN0fc=2N7|=zu3(EyiYyC2294m7NnYXL>V9Sk>X8#;&*k&kSI-(+e~Tn#V(jNDmoQ zkJCxu9F6+x)0zjBSOQGu^4MGFKg?-P_xET?=K@+J)CwE;_{k#AgNvy`Q6%{wp_vgG zE2Z3>e3wq-tQE?+m9p1oB8$+ZO0a^?>DcKz9_#rW_yuSn#(*B8GEZeflPD6|5Fbgh z`hLM5J~2YBN?+DlqA#)ua9@djkaFLzBfKeguYIo19bm;{LrP@bhcE0wV&GrHLJH+K ziswx(p;gngXrf4^3N@ll(1Sr-)sEXOv5!IsrKExgW*jDRenflOYgKbwRrB5%fb{{Gb(c0ZR`Fa%tyJ)_ z0U_lv*U;?N+%}HS)FyRv{2Uu|Dm6W0UOs_VkXLGznwdmvdY@+u)j(r z?hR}e^s)kG-6D90AmkxM2d88$V*s#^Hn*HM3G;W!{e~$?ntKM|E`@e#Kg~i6;y)y6 z2Vwta4NeG@FJhx)8{7iNVA!Ok!M;(T|B}FR+0{RE2Yg6-H4;yq_DoeCoczj=%X38l z$bzZDrxeCa7kc@%Z@1*?ei#%f1Ka^iC~msS>ckgLTr(NpASTQV)66xc+T0qIayuKm z2!56Qb6@69{}wn;to*#zF#RmV6b5^ z#sG{{h;8^#@%?=^tYCoKLD_3sJ*0kuE#LB}Twb`=!m)n+Pc3k?i@3``pb$Nks5Q7H0DhbKDu!9Fy9~m^Aj3|N{TKt{}FOS4CUTgg=|;68#8N=K7N z_K=6B28UwRv(a^5;C_0iUQfZpT;mYlLPAVOA)fEMUKZB^-#693paQca%}Y`{qL`C~ zL?7rI2$mL&FiqrV%N9m=4*$1|#l(ES4P8pX(4zFt4&{Z=WEGhrDuk30jKB1Da|ct7 zSs5-CwzXe1)lc4@p1&^c>*;=oZGZ%TI9s{|qp6lGMaCZw6t9Oh>4wvCAi>#u$pnE0 z1ib_VPSwj$u_nVB<3%ba+-J!pyk&E(Jgd;Gn206kvQ@2Vzj8)m*`EZ>)jXy>(6V#Z<>;$dW9Zt}i7d1aKN=$4wd+n#C%wt~{Xv5Ad)gU;@kXA#4qa*pYvq#zDWV1~3O}Lf) ztF2)x&cX$(Pbeh4)L^L`&DcCyM1%}jD3`gmPGsZs==V5tW;!vJq^e_BOi!(Vfuq;Xe`xT0v_Ep|?k)&4 zO=!T6LC3;QR>iyV7}DkwxOtIZ_2o&EZKcnUT5*6|x=Ic)m!+Y|zwT}>*xvDWbN3uQ zmA)?!Mk_t~{!J#hISZT0d&r`2Uzoc^%R%r0Zn92i^ru!fwmk7<9?EWb&UJY%@kV+= zUAKI}#`@XZn1%8HBRWRJo-X6nC3$#2Z-I&odoBOrPRS}i17&rN-{fIWCIwEoHQ6jv z%iQc^L$8%`pR5%T0!5_(s(AeGs2)bL%fLQEp(f{34gzP~sML4Y1|6L&a)%HBn>Hj6Ze0@V=-1J4vuG-iEc+xwqlWEKEj7xkaBC zp1=Ip|I#2=u08L)&$*iB30W%E9aFWDZM5X?h`Ud%%r#4Tr;wmh249Pp5>i=gs=xG6 zZET0<(>EM4>YXqR7i`X6+!<1&v%B+M>7Vdip8QzbDsjI5^DEHqNxb~?Tf|hWsq9aL zuz!bFZtJy#8h>x&a!3UO@5}z4U@w2w#J3Mb>@rx!Ktxk-2A<+rChyNH=C$LVh8M>+ zbd!W!YF^VhY7D0Qe&9nCIILlAxVAoaFcH=wh;y?n{~m3v8Wp#0>VbqVtBC5OkpI`N z|7xR^{qF!!qlzNeNCvxk#^d|cOJlQ@b!Y=sO+=noH}cMrQz>Xc%S1C{aWnUxP|E@U z6223&W5&US#3j?SO5iA~&}6|9rB<|Uaqu%GA0r^e;tzZ;VU)FAu0RJyf(VmluaI=# zn$d-iy-&~?rhI@K>Db=|Bt+yDkEQ+*#!KvB#C@g{f^Y4a@XVT26H4np2swv|OPVhGiwRmql&>do>wMGKm_sY6uTKT4bJis9==PDpgrb)MSdI@G?1 zk`A_F0~mv$C%`SV@zzmK*4eaalX&PypbB3NK6j0Xr17IAvg|LnhU#>qf)V}PEWuhR z!3evl(k=;6E$}bI`zpFwHFUhif-D0y09h&TqN#so_$+=~lZ{27|+ux zxbl#+1(O3+hsPkoz7jZtd%Jfc?tg8(6>F!zl$`mb>K1JP+{sdDKjy%Zz#BKek?<>) zi>9R+h6M9yc58ck8yiVqNBrT;7$yHbj-gj2jMDwjw9OO+^+UCJ25$kyv{e_4Qq_ktMDPNC~mgUlA+oBMaQSpw(90T486S>V0*DAyZXRH5y2R>{mMYfLb z9)LJF;T59clmt5F9RZW+j~is0_6^tjK7)t?l*YqNM6oHzhF$Ay*FFF@e$qsnR#fU? zgsdYTr3_%*1IWL1T()g3Xt`;Vuhin<@1JCLJ=t4_&H?qRyZl}FcxKuM#q%RnDw1i( zL^HKLKh)mbZ5}miI%F$Y)(HAYNod*A3a;kgS`FC4#2hB9ttT}Ua3(4R<==q zO4&g*IM|KAmh>8De@~FAr*!J+{GLD|EvsF7^ZR(zZ60IUNcD`p9mwUcU!woK)5|}Z zNrUt+d2J4kG^L7=Q;}6IprQ28)=Wb`lW|HlEbBKu^~9;0>OH4oV<`YgQT#J1CX5y+ zR#MZ$b~i&N{blO==TOLFU+8_kg>!4x1q3_m4Hw6X!KsM$e*&hDHd0tlZIeq@9{jSy3zqH|4twKParlmRj8eV$xw|3^_LFx!E51One z!Vo`r1Db>Y4bt_`7fztyFY7%XKY*DJ^wDP*u`s7?*2c8@{#b4{{G`2Q=UXrP0gJ-E znDS}TUwVBA*qZ5=`L=zqOQ%Gux*1&5_NvF&f7)}IL6gBwI5GOxYIYbJ0$K2-SKQB` zT15fBc2Ps7!DW@bcvDY#^y5qU-TxiWQ0<#5i)a)$22=#>PAz&r%P~ut4&;2kEbc$8s&7 zx7chiV?i8-mHdf}(O5pf(EKYM40Fl!mE$sfUT~3@$8KkSUB`wj zwlZ2U@L(deYPoy5o5t)jE?u*av%5-cr&t{W;=C6AQ_742~%-GmfL=xE>& z#?X6AX4AoQG&I>9#;tFsW3L|{44-+p{NO0HF=^=75>ck-ubuUiH6NST62`q_iSum# zz~niQ#zZC2p=c+XB|c6yU*9=-Ip^7tHd>fuH|$#9c4XGG9+hJseAj^`ZA|n6sFK-# z!Vp&b_5D%Tbb)G*9K6&PW=%YmTV8wNjc@K+Pm0g_{tHZGV0aa*)IPP4#u z2AGolW1-^@Ff7vb!3c&P6>MI?z41PARxMcJM!SNwt<>uv4C>)6t+}i}%w*-v`hm%g-d+MgBHaS9a;jYVb}*!Tp*ue2qQR zPbFCSk;CEKR?P7lr1__=fM8K0C_W5bg#D-+5?AmyS-T=t_EP0{5eu(qX?X08;+Ws& ztO6`>a-*R=x2Ztujg4`SRSvJ|{fuNq8?SmW4WOnS;!%F&xia$;6<3Nhy+o9BNtDhW zdO(C_u0}w{EvS`rL&K@!a%zQ*-?X783KC9yvRUDTY0sHWO!D;0eKvqw z0eGA}2VVX^JMQbqdHYr@U}RWerQDLYclV`px(@=nyZp+#*B4105ft(Q!=we5gQuk5 zIQon$n6hwcOs%`v;GGU94)p8T3tP#i{l7bU#eH*%cLrSZFo3@F`TIR`K1>5Nx^5qE zfY_wyfVh{c4P%laIEyCpA_w}=LYLx0qoFI%DLWry;nxY%NkzKv-T5R{_LW4dT^Bk9 zYqju@iqR&|eW885VfMiMM5i4|uhT>QCNh0)6zvTJ5ObKF(LJ$@9$BSO;kAZ7U0n3h zTv_Dy3ZJA%lpsstr&+|086VFgP>0ePM(X!#!!{4YuAqNm435W^4Su)H!6sl~!7jMI zzggGA1HNI$h8O%@5Yo7R637u>fvpwl=jI_(skQ8Ev7yT(X6CQ2nfGZ>&v4t`cmy|V zu)l?vL}OYb7$~pSc~!WNzy6z|IwC3gAreLJs2e)S@!TxQV0@96+DAU^Mbcc>&&sth zsIOOa5TcPZzz|0(SK@ygN%ATsus;%S0*rs>x7Ev*m2h;b({XZ-9~uH|{*# zK+F*xvFuZZgM|&ulZ7I}7_c#&6sS1O+QxnOi$3Af3Bo8hU;RR%_3z4wD6bhzIo7gp zvG^Izmnp$I8fCKSF*J}W7H0<+4}4OsEpfb}XN#A43pR~P-i_UXE zZZ#KsKols?hCnl)&o<#x&+>x}rB;6}Mi==&i_^yT1Y5PE7s}QTriMx`M3*(E=haLu zl}ai|Qxy!uqTncv61>pQ3m{x?`@hjWa*1h;F(KLe9Nh`DBajo6ltKR@)em^{lqf9< zp3Vy8$qqq9qg0n)1?mSk>Vch3*ZU-oCA+ zl?%M$!uvY`<50KxxHD;%O``eXP-jK}B{n6De01Z34*ujBR{7X<#SUdPx;zvFVB*N+0saCUlmc5+C`9cX&lBocXcmw~?Hp$a?4Mm-;# z>Tb-*HU8ez4G!0d-#l~#eo)b)gq^VgDM50(mS(+qt(6Vc#OD>IU9_r+3Ef0dJt7ve zYP=b9pyt;&+N-5TJrIZFu9kd5%dPljUl0zU3%oeAf(aX2Db2*fNo0;OAip!$SBYeq zu}w?;5IYnfUbRH6RO_~lplSX1?EL%DA@Rm~bR7mYLZfMkN&@)i5|Q`5FDRe4@{Io8 zqpL8md%b35R4W)gnih^R0zrld6UnuY!`l5ZTO-l4m&|pd2MrS(F4)Y+EBMeal$-#M znCe|1+Rdf?|2e(J{vn~Gf5dxRY4D+( zTl~^sL~6DSIf(eZ5+Q7-Z1>x?4X?MQi`Gx5lQP}matTVdk#*$j29Ddj(u4-5<5x-2 zBjs5@wXc7S9vYS;4yy%qng2R~OBnRCWj;6ix86*dpnM+aOmqH4^TCgOM55sKZ^6L8 z^!Bh)k`gs7ZPK^z8kpaHis!#>udf}4E-6l)Fc`0xL2=RD@J;&6hxaS%`cWO;^Tg5( z_dsApSB{>!$j>cUhqb7$y9C__?3Y~S?lk?TYsN!Lzoib2iX^gxJ||J*SzV8m8+nEd zsQH`-oZ{EE%Be%22CNNCZLODt;mA|bnj>jb>c+YX<|x5ya{gX{vwFwhoVP6$9&~S{ zCR|dUb!>ywfVcW~qN&3(%n}MO@4abqhA9cV^4Omfl;a$+r+5`>HbPYz zzj6G<75kOBkMF0Dndw|6nb~sUz=Aq{LZXgjtgDG_&PawXvq%Bck=JhIeVIg29N$^+ zI}TZ;DGCa{xdvfBUcUcAfWxY`Blc85oaMrri;hNUPnWEQ!d#N1sAiXav2*8L zmQuKZlrTgrSTj7;JR$ZMOEa}h9gskPdxkF{OB44cQ(}*h9N-#tK<=&#M-pr4%_ur? z72JOu%B$RX{5L=Wxs>6dBb6~WGyeqQ2=tq^`@UwyW#QL=r~>>9oW2B6>+i7j8y@7v4i7q_-Ljy6uBC~_YZ`D# z)M~3jve&9N4cmtvyOHqv>iKYjbE>B7I_nf_V~b!SAqyxk8J-Cht%(hViHlsxYeYHp z;CQ6a*lvzO5u!<@iH_fLR`1rkSae zS#O;PN5;-h^%La+WJ1h`e{zLR-|=t}OicWPe$IUgn@~^%Zj!NyW$O{?wQ&uCOhWyA zo``}>`PrAJGm7f$TlG)uHT}J>YWAY6yzQZNlJV$|vBy{*)QpZBMB6GFxkybpC;VWo zEx6Ydjs^#km6SQ`ts4H&_lCoFw<8jji)dkI<5EEIuk5yQt#|Hh1_af!Ovkte?R&Uo zQB5Q0ANboWhb3G{<>rc2)kx9npzOh^M=4m@=$b3u9l9j6T>suq2W;EcGWecJ>2f4c z!ci1Z0_Fk_aiWAsnf&WLyYpa-Jd{6AsMvEpxs)~RY`4^sek?D%l>HNK`e;ktDBx^O zRNs^Ty2AgL^qh%iUL5g!2AZobT^hM-u6M{FN1eL0Ajm`MVq=rl_7l7JRF^l*P1$ZW zX(}t%WrR=5zxFJze@L9$5lCW?{VxE%KtaDt5m9BLR5rDa&9cZTY*;?C*Y?-@s=y28s;$5d+R%K#Sf1YiyWoP3zD>zu2_=^u9gDdr8Z3WBo}ZD{g7o}+$!llNIC7`L4+^KXQ3K=pHEfnu&aLNupiX_gi5d12SOx%==UGG;#)$gHhHY-< znmDVia`xP{XUx|PVw-{=$A9TB!8#1d9sA zsY69CO*YKF&2qo<<2{XTS$cNYNJXVS^y8rh1%?rLh}@%tL<>|ObSpF%3izkGl@pa- z;(q6keOgSPwywXqIx&_X2m(alAP)t;EYjrIfG0$QZt4rsK;=`2Kjah}bbR~e=`nYs z04M`k6%s7+#@(1xT1~un9KY=h=d^FMVXTcpRpisQHwwR%1C}R>z%Xf zzrNXb#t*reWm zO=(J%V~2MXom8xC%iJ+bn(iKOH2te^J=3kxm1L(H8XdM*$jgip;ov|HeK*|1J+*<=X>M-KS=PLeQ<_a(x>3RrHrvzwm1)d zx*Xl~Ta+L=0lCoc(?a(^s>(70L!Y3Dd(SST#XLzKAsaVstXcF8IFZeV0na?cLo%V zVcXc+r1o~qxlOY?*KI0r*Z%n5}ZFCf0E{2yPy9I!McFbzyIe{V7=Gzkc|9qR-0Qx?; z&+*OJ*y)lvPGYFSOB_x@-}bDt+n?t?+egqzC?7>;hM0vs<{5^RW=0$;`f~jWRrE|8 zYhJjbZO@#YIiIDrTnbW=kz$3{#b0X&T}HiDiYT#z$0>T*Iep@;I*SJD%I$I&qKZ1vjRgLW z`AaT?53fl}ufn#h7{KCH=fi`45n2|T+Rm_AtU}CjEP*^?Szw&Nnq5nEwDQ65;e;^4905TYmq0)`SKKR-A0-SW3~WH$c~aF`WI`CjKO%fG(t&LZ=)3>XUxM1aAB zK`fIzE40rke7TW&V@J14ZF|R<;S1WBU&!+ zI?Q2SB}gDp!1$3K(=#u8_JbO?rB*ftDM-P;Tnzrq`NIB7?)m-}9Z45dlp_G*jXINd z@U5H24gA!abzGpT$RgSdNZS^tG-m?8a^8Mq#dn|gF%{GR1{}j<$RI3WzzE6nncq1d zyWuu*>Op<@QF4T8<|;BP0mMjv%H)BKU7KFr;PJHTN(-8(J!!@X-Vpz`KxX>(tYIjv zCgp!u5B7ue@P}W1^5AbBBKb6fhe%X|w*{-$etl?7pN5DGZn${zeym{ zEWbFdC6C$#`zeqQ19UrMF&@$$E zlqtgkZh=S)riddVlDm2kd~xaMi#2|<<_Q}AFV4sI47f7;z;TP_iX1WmYy}RvKuqGg z=Qrm~W8N1&IGcpuMDdl=?^FOJ2yhU)dj&&7{mL;`{Men8$0rA<7Utg{sF^u#m8V>? zq(5s{EaQ{lKb(2ry}LntEv9BG1OlbmE?aqceTuXa{NQ4N^-(7029RUh~qefk{4e7adw_G;{80N z&-n-C887iwH#&3va zJ;6(gL@^IAWN2lrCyqMnUhwU{Kd#X6!8aMvL`KLmP{q7VsKEZV(C=A3gJf*1BIi+A z3VfnsR#!J?Wv%4<(}lAlp~)Op?7 z_Lo0b?|77jsJ?GV7Kp$LfDoAh3m%^kTF^Zw<@**Lnnlqom;P;a?S7@@(fm#^L%PTc z76dK7Igd!xkS^y~E0#vk-+y7ogSiGi(&>h#Y38X1p-31^B#}V%yf??pC?DqHJ6!tL zjPS_rx*#6IXLId&Z{_y4?r9$>ij<4<3`7nPASpy*+@h*_d~~Gf%a5=DvY9rM?wa@4 zuD@&b)H&8!k=LhQ0)fCGhG)WRxL`OBa|8T)edSkuNi@O>nhqoSM)k2MqDv7P{RtD+}~ z6z?@$!3pgkXq7u7KQeIvuO8R*~DPO_camE`X9pB2W@&KMo~?n3b^oG8F2 zxjo}L*Q#QDx1?9@oFxnCmK3Dm^irACsDO7GxH@nA>Z`WB&W==8X}T)iCkn9`AtWI8 z$SM7)&zJ*!W|E}UW@+SV-0rKVznL99dpjT~QR$`h%I-fsQ*SM-JY#(bezk>Pp7ON3MS3-;wr`)f%1bdn@-KHY8{ zjo+Q9{?|OkNX;6jKW6s?R?AtgbKhxu>&?YF_Ax{{fS~#V9kg<7d$<*6fB5W39l|k# zAs$sQ7?S;7uP2mz%EC6T!H@ju%URq#{ARNyV(W)dI^RV zRQyGuK2$Cg15_CnP-x)D{>-nsc3V|j&uj+6sm#=x70bQp(cjlG^j3-UfBkt;f+)I< z>1?!hwVJl0{h&W}>yPqb?!)?{0Feknl1wR)xDyr7-fB75^@59SbIm=mwQnj^p{i2I zi8OKTTRRs>lUtwL^7zF}n9?=*_PPmZRa}s)9d$Mens<0y=eJV4-_f{s0_tQ z*1bdT-gMxeEPb^ut|b1lTH3o-@BjXP-#@N1KU1PiVW~7M?_l zIWtrYc_!1+$Pe12?maqw%@yBlj+^_h`c)SlU7OZ?T>t5>VooMzRh3d1iJ~lQPaEHH zZBEVfjB;DKa!q%3-TSO~eZl21w>l*dNgOYU5~C)rI={fRwbhXtg}Zcx%(AEs;F2O^ ztOeZRAh7dWca2*m*Y>AmfE1j@@Qh*eFEcp|7dEL}{o@V4JJR&jjI-=4cX6eC**N#L zA7Y{j#Hv~X8XilMm^hl~>T198+Y9?P*BN=3Sjb(kTVwt6^098qeus*)$ z*3zjcF_e)lA=guRpC7&BZvCRPndz2iIRbgiGOT+fmHh#wU!lJwS4$E`gKoLdAEZj& z@1L$(n%6U{hhbbL11pw)St^$LdmVO!%Q1#^Z*3?ohI-LR zas7$3pDdi{%+LCIHH{&~q*st)1Xr)`d-pxMROi1wwM65;SOpL$Q7w*@*r@fvn`W=5 zpOGlp$}lNUCk1L+g*oZr`tgg=^_!%}q+>wkISx`vWrj_hj$Q2ft$WXRIv#EssWS*i zR1$cB#SB1*2MlMlI(RudUIV$VH=VPx_Q`P!H!xz8*F^MjGkXN%{0xUJlJ(b?O)ct-jI)E$l^){$4r`Y3p|BN-Z5Q}mIh~+ zqxnPUOCNXcxc@^_O z1{`34RQX%-QLd79`M+7;F!g?6C=msj2uMPz(U2hdkzML~W&XkmuMRN}2L*v%2GHO)Y0*-T) zJVZ7=nIAiPFcC!wLLLE$m6MMi>~i%j`r>Tw+^onp6jgL1oUAjt&Ej@#E4u3AL2IJ~ zB-Znvvs!ZUH<8 zvIjjaJ{~(Qw<<^ov5=@L!&DYotFG0K%NBQZ##CMKB8Oxw@;nEVP+b(bp1t>u*4>wm zFeNy#d~8?%5KmZ+CvH7(zNUzGdxE_^`2&5SAzFyBQssQ*36;l{`*8Xzy`1K$ClCM} z!VCvF!b3umkHs;;mHTbOTG?y#Cd$Q842GHfuEi`+L{4ETgB0QSX)C`iA4YMXx0H;I ze!8^LMt|3?@XUQz`rUisKGn>qsEX|Lve_x|xtwbkY4{-g0VpC?IT4siPi9R_a&7r# z5(wtRrume|RN`5ca8zjM{BE7*j-b>0-r;hjp@n)04>I7&d~rhW^(%BvYD)Qe)EvbC z7Knndhy_k{ZyW2>lFOcKQ-gqOPm>2<_+YEPW6Pxmm{8(|jPUBlQJK=tkJ3(k3V@&s z-P!-vw%c3B{c22_0UFGUOcj%8BK8lGt2%!{-0+M(D6Gt6$ zTu#sUh3BkqWlsCNNPs-x5#Wh?qQ|FbL?FLlX{{E2{FR{-fq8Lm56aHiTvy3J@vI3? z>D#wl>Jm)_$3w2gzF)sRiJ3^|x-uVr@dg&hoLoWX6pmvA6(-}RxzOco`Z<~0Dkjq8 z3BW**7>Y19Lz>M^npo(nJ8osuhBwCSyF!Sn@Vw^TDkR?bYg~(ae2<0=)LH&!u~~kV zQz-%}1CdDYzx&l!nD<|{>U*mG@k%R}`gM36Luoa6wwOE{!T39CobN12)^DxkPP@j{ z6I_$s@VG6(&rL{{Ksj&x217Y0k`!^;%c% zR|oNqkuiNVS%z06Mv)~2s1IN9V!NAuyt&GX5Oc%Y>s`UNciwXM7kZZ-utj090c8OX zD90g&J@nAyH^O#{Yw427hU|)E3Q}--Xi{!*?FQESe!NcKn7lE&Al|SWj_SF7XWF@` zX-jf$Z*|?fq3HQtgJOhqAXwm8%&-^=90th?|F^mBbnIO9(2K1jk!5)=q(Z;H$c+Uc zv6>x+Bne$#+{&dL_`6QcIDA90&t>(ka*euh%;Q6Tj?KVR1hhb|3YH@DJ`eXWtNL!& z%puPXJjXnrCtwf&4CaJm3IH4-`=1+@kC&VF{(e_;x?||~ADGE;{H)zSb&VAE$~kNbED;zC5OMeNN*?M9jSM?3Xd$?0AZU~VFAH~IW`fQd zkGQUAJ+sRTV`FY1MgSs(9Ir?;iG;%IT=PD^?T3f<>z9JdqRM~*&j=jE&@KCYnjxj8 zH4eFD3AWt4Xu__yUOJv~u(GKgDjVV4-0N(;>#?>Ampa~$>5~C@4nQhGK?a1sve(n) zGhZDIuhuMEvgmGut5wFTE$8L7j1+SN)XlOS4>$}6gOHY|xHKs6`*qgL&1g2f=E=*! z`KW8>+DE61zcJR~K^)?E0TDqUNoNpz)HVB=hsSsyiYWk7Nt6LWmXrJnq`J z8_qm>JPzO}{V%qNl=REHO|b&cu|Nh4A9^?o@zSETv_eMPyz&8R$)2$U2Nu)F^E zXyIX0r&hx=gxfS*kSARq&q#Z;>z6uXI3W6Y4f?&*O*xJLUY1xvk^Z+YBlO;a8*8Pw z{i;&pr(J!|KYHzoEyu5jqr@@=7_tQOm|@)1>(Q?q`%WneZ0}sZ-Rs+1*487KzH5z+ zyY=@Cwv}qgwqFvvzsCQc^=`%I`Qadchl)!_wIw{b@57qQcAXO|S6V8TdI*98VT9PXy&XG_I$Pg?Z%#!`=Q_=Aa=)W$GITx~L+--b)w zCX)|iOm;-Y?~Jh&^&63kQ%5KTCxNl)5-z=GRXoq;jPh33u*Y`3dQTi{Fv^Nhp%PXJ z07h%DFXM2PTV4JJ+wa3_8}k;*yf*|+qJqdXgcD%Kg1qyS(~~^w`tk1Gg$2J1HfNb* z*@{5Ia6F3z-aVwSuh$a_(ZDfjLGB5dUUDN-+;}k^{TbOoo>NSt;{=94Fp4B(hA*PqyM4}8q48$U&RlQSx z-nDp!ea{~^4vK873g%1sG&Ins&?(wO)wkq!*Zp|Qo=Y2>P6%ayf>?xk45g|Y8SHR9 zIP&WqHG4+UUX%&X2&p_$BuPP7F{XfgrFF&fxEvEV{_YE|J3o8s%Qo8+5O5_)lz6NV zLV0Q?;HDtTwhwI=iz!e`UX)wg&K8`MUe`GKm`L_G_d~i$K5~I z3dgoN9_Z8z8pU}&-Jnqwf7j>~&qJex_rR;J%n@?!@5e+jXDD|OEU*$Q5?NwY;ApYy z3oU$*ZqA^alr%G_II@%6t~SeSuB+cF`GJWY+Jaz3|J=KM^+nc9zgg|qpAVk0bfaHxfce*Zv>v#Og=xY7)u@Fi_ zA%s=?gl7;DAcNgQ#A#E*79BxjXoOA6qL-1>;|Dc?RlDT7=?@j?r0*vat(V8AxJ8+8q9iIjX5qJeZ1eLzI6J+W<=+Kn`oT2I zZr7jPp1=2=TXN0ygSv+%6aXh+4BWYXUnn5TpG9140An(OxkLxEyB zmqA|)}9FS?QC>Ky;2)^kC{4(8Ext(RT zyyMEf>YSCkNbI;|5{Fn8Dk9I}#BY7xb+z9!_`2OLJqySBC@TVZf#U%LKscsP%oB?S zhG;-@deQRLE(I-H*6Oh%N7o4~vBoaPg-a0r-Wh(@`TKLL7?f16XSC^SDOwP`$lOGXl`V9xOXFV#C2&L224j*J<6$206`j+Zj@IgL zrj@ryQ`gZAJdxo$-6f0O&hGl%f=NBKVmy=T<>^)nW~|yHbtB_9vwFQ+x?KC=kT%Qr zX#G7{KbZCkCgtni5He$QfTW9l7e(Rt25adbI=wK=ul{`(ZNU3z3+7#|9S=+mZr4gf zeVes;eoRX@CWT*@I_Oc1H^jJ}V#T~iXC8g{_8y}a>-HICj5!rqU^(VpTeDE&Ut+_~ z#&5*#u>CqS+E!T^nhC<`{wu+E$|;j8#{riVT8OJUQ9951dS z1*kL-8J3Bi<2^Amd+~$6b>9j@i`F?X-C~1a2ogYm3zPg_r#rhy0zSx-?^b;At5^Lo zbL-uYJ<+;JL_Zd+LWnd8aEb<0;^x7B&YY3be!^cn^gVIut)b+d4EPvk7=ndbz*CQR zoZ8{<&wK7?Z>l@wEGbGks`z^gswc#IW4ACVF&wPJHwhj&jn;&%wSpxBtI^t;(uBb1 zw$#iJyLA*qpmVSw#`#Gyi153gBUdHHZF08zm8b?ly-IFZMbVMU!dsPvuPpi!8@Ljj zr#~xbo+=s-Ruxp122i~kw*JnQ`7}cPYPK%UHK-~&Rn_<}UNG``wra|UJ1Q7ow5lY0 zQPq5-t%BA=tZ=TZo2tSC)eS!+)sXdF)%(1r?Sn+2L(EGsFR zKWJaU{XX0NfgP1xPF1bLn#wmhqR17D(5!~<^NP|3h?ftkF8svVrmqbvxt$f=pK*@Z z=%)o0OGm3aq@3gPR#V~x)IUe~O;dc99-N+S{w4D~;|I=FI$u-icuhI~pH7SKynU{m zlVgQ{(rgx35CRotQ)_f7u-LHiQVko;ZW#nt2|cWC`uFw(`&m)vKA)p}`zEuRjN>KN zR)`5|8rr$Ait$O^3N9}iq*t@?ukQ9PRn4E*GvNc8n(zS?4Mx7AQ4QfQ&Q-ZwMS*T7 z?WrRDJtH1!8f85-svy3iqV|8R>&uyz7`{7Od}Oq7yxL@b>sL~HEc?fr4NWT;uavtz zapIMJRovctwRFH)nkNg2!KD`WWzkO+BwT&arh+ z)$83ze=dk~{njcczh*O8e~IFoB$NIpDj(3vrS5vXb_K7ib7dX&Imh==3zK~VY6w2n z@9*mw_E${>eVl8GeOE>CPe~Qrp0f=`dyUGnZ>VW_wNDj|gAuQ#Mxo19eNF}ybS|xI zsB73~2MrC4h6gNvAH~o!wPMSwtaEIv>p01p(z6N&EyooxL3PFZHD&rT4EwvH!!a4h zAt^0@= zYad!*tw#$iu)qQfEU>@=3(g~$pgD%q^|UKWU%Rmhzp1CSP4bCCa}%2-yX~);Gjit> z-IjLIp4_daK3R}dL70z2K`C?#vP<;&ggL0tC&&!0D2hZ87%O$$eDW*LJ5J|i*7ga3X;>Uj1_ZH$6kLG z+_>&ws^xRng79nY)Xbfo-bD+Z)T1(ErF+Qd_oBH1P2qqh7>WT95G?7a*K_jV%Z}7` z#8`vFc6w%dw{1I?@=dfSmz37vb)y2oOGq@PLRNy1V7u&_y6E@KO)`=b?9l0%-1l4m z{W4uwZr)y6nYMGBZl_-W0RFH4Tm3J}eLYi0iw@21YpEkRJzEg1zS1c>Gjm$^3+_C9 zvFU&^q@*f1P0<8K{n=sS^|MaxC>hWZaj%eM?(>KCy61ea#|iINT3vyLhmb$VqX_dv zS3VNv6Jl8ug%danAWKm|$nv=TUQzaE<5ZH^boLV;89=Loo>Dj1HF3Y6h9cm2?FY{s&L19Fv)NILgcM#n7^Kh#5$GoejT z-2$#ifKUO%R7i0Rh+WM#uc@aqMVT?ymCjxC#q;-f-!(XN^QkdxJ{p4zNwJJD+BGEC z>GvbAkc+(8C@Ux5Jty|Pm&vss^U#zvh5C~f$tA5&as`5Y-8*%O{cDHqMvJmqV1Wfy z#LhZwb-8E%yM4lM|8>-!JONl}bQtBfLwf`WX0ucuH@`WG&I!T(E3 zyIxp7lQbIii$KT9qT0G#+x*G5y)mLq7&fk?sRRKT8A%vL08#L{JO#(5U-wCXkm&qe z-6&}&GH<{MzjVs)yRLTV5Gk?%07Jr-hyVIvd*e!v>{!~ShTP8l-&0c`7+GOt4&^%i zD zA!x=8{2%-5{Tq5~PrghF<+1{+fdn+bFhQQ}3mov35xIFDuYa`DJ*TLf{{AoaY`QH! zXU- z0oEw78Pm47U@FZF6}8}|cR3&p!dsdj_*Az*su&;$L@2l-HoCRhq>0CR)TveBl%XXz zcUaTkUU^XO?)Wm@)u?3ee3~F-Qj%GgC9$qcMs!_vimsPhVNJMzYdfXMOY`41A8~>P z6pd2^Lt=nsp>f2iamDHMWV0$-aqY#&CSTXSWhgIDX2gNYVz{W#5X!{e`+v(Bld-HM z%7;#?jonT)=~l9>4Yz6So)?FH-aM4fdA-OlI^BX7XGBT{B!NMZ`Rc#POJVI->c&gj z+HhIik`F%{-9B_RmGU_l$pV_7p-e+oXUQ72pK$EMt(|M77z#{_(zR%eR~zn{4EnvX zIi~V6Na2!5E3^n8Ym}ee5qIy!hWFlD*ln;mH<1WyGsxwU=cMkRadq=DLWS7b|83JYD*(W+?64g3A86%XB{J4?UR9!6$FkTgNFI2I7f`jOW? z47rilDUWdb{GwY%U*=r@@e|*X4xJG*Uewex%x%3W@5Or2Q!h$B8l0`bJN78;G+Y06 zTYK&o_wV=a?4fVT`r&1%Xddzw3N%1Sp$Hj~IGkH2=fR^(SJ!J5rD><^<@X7IsW#OJBBm~MT0)SnB6;{g(_4ih9+@LzGhxBH)ddQ7y(g3h)y#w={!<<@TwH*hqp<|A2(s=IP~|6L&cTc?HT z(O7j0BA_W%0R(}GOspr}uH3b27rADiZW>x}u9#PJa}EFu+?xxMXTGu23{!TgJGXhN z_t>|o9YZ-b9l7MYogTLkU^21=nua1R0#=j(+v3p?-#&Zn{&X|mtx4RY*Na;^=Y5p_ ztj<`?ZxmKiFR7v`O01{=`JN*$Uaa~qN||Gwz$~!90t+m#zyb>_u)qQfEU>@=3oNjp z+@Q)KpwOf! zvywzhvh;V>mK8UDu`#nr4M$)}Hi9dxf7@dlx9Edh#xkK)(?OCM2_Ts!NL5|2am#nV zZEljG?~BxW!Kuv_K5wj=;Bx!!yte))5pgG>KpZELj1Uv^9TC9|@ULa-_GuluY+Q<0 z03;N0ML+U7MVIq(B*>oJT&F)f=dLYTWtPt4hBS2PP+ZD~%f=n8rQb(~QIaS%>5x@` zpokL+z_FASW3FrY&%Y`0t6S3C4#MZc`VR~pvH~f(UIxJcoF)LoDPf?`Kh~olAshK8 z$7RvPaKkp9+`go-UiEvSz0L&`#$p)D;DmtOvPVJ6M32Wm8o9ImIenjgZDC4pJS33y zmS1b;26EU~uE7gWQ(ulT)y$zOz$&DSL{gTGnmIZ&>=j#eEVpVs?*HeB5vH3a;sP+g z&Ubla(KQMc#=a6R=A5IS?tlB-$m(CX8qhEU5Ce+z@4z~AdF&+ZwtigJHBZ%je^JZO z?gzFuNr9lPosHsH+5Ne@ejWVJ?e}&JEj!#5Fh;48tg-|^v}~+ouqn39;mcxVF@kwgNh?rR5H0}`S7P4)!??`@CtulnbHueN;|hsLk-%|+DDT>|+eUIn*PTr1 zR~QDJ#bTyQvMfQdBm}}p-w1h95h8Oc$nAIf3x^|D9`eT8dxvclH~saG#tj>j9@-SY zA`lc2Yf+=Pafi4ak3e&-mBa}^;s9d^3d0#JUNuF#Z8W#(p<|D{>oKi@peURHG^BAr zvKU1ft7u?IL#r6W-El*Ub`y3t3mpz!(S`!rw1m;LF>m_>&U54YU*CV!lw4wv!X%1C zs)C6|%lac)y4Vpbb)Lk{Y03S2daaJt4~A#(RgZUwDCY<`Kn!Fs3?o%^VZUr@yoA}! zc>KFl!sqW!shBMvuRh`a2>O3z$7>R|vGt60UtAviP8AtE3|z7l;FIv%ITcA?Tua!y{rqWevKfg z3LG3Df+Q{Dp!d3yXI}2oDoH;vz1B0h{C77eHWbG1^t{<~9j=_Fp|(1S)vLGvkYdJQ zT*iHO>F4tvSbW0W6q2b;Pf zB8$Bc5e$XnEQs3;(F|_E7yUQ-UeSAEvzyPkNMMYF6G)bTJmQ<5mM%MROKPk04Q-c< z+c)jiPW%3d%;3l}E@3JKa4hCqnHk)IGZ&7X*m+2($S)SNC^BF-#IQIFh~K6;y=bV@ zg#@=pLDM{5C2_+jp6lNI?p0%dOb_ zu)qQfEU>@=3oNj}0t?OqXcxxcWm$086fO(<_U7Y<%@tZ9#2^+>8e~aG<8kZED%=D2 z{O{$y&3kD1OWTxGP-?cq5;O!5hgk6q@VLByE~4lfo1ZHo?-Qx*w`Tlxp!Ob<`*|~c z7QKa2wSNx29{D{TjCb`$1CiXpu?_wz%~&X!TEPk}ovx+#Ca5#@hKZ8F2txy&&{o8S zhJhO##Ugc7HMJagH9>ElxfR?FU8!KSBmBBDTW^gksD8(JI__pb#rb}9pNBu}XLo*c z?Nz(4D=L;m{R%3liihK@%}-5>;gMED+Ig<7Lkp@G-mIwoajwPkvG!lhgrsx4zOxPX zYF=J6K=!JgS8VV3fln@8R-6vcI7<~?Sh43M{d}sQH+4D7lmriGbz=-yr8`(zpruP< zJTL3*yxboC9BVhJ$L#!ikzqX2V&qTseWIJFdkya!P1l>5l%tEIP8+@-80EX}T3TKs z4YPhGMd6DY#8`f6C2fO5`(07zpp+`=S6ZC?NUNarP+jS6TAXxC#~a4=dqp)NF!m_; zrl#{<#!yDc9vgnGtaDykl;;*$=Q?YgYu>zD>$GCe!#lkfI_{_KVSn{cd0of6W}-w~V|U}18+eV@Zk8!&g-p@osc$0`bx zBn)S1j1dzJA8WU{xfgD0`tcvjBbv-ZnUny56}eW8eRSt?*PPsR+kQcRGQYIw*#!cN zKXp~XZF%=RpPq4+SF*!az`e9~`S!u0uB)&lOgMO)fq-QoK~O@0)1NcA&^;($Rgrg~ zH#O|hrPM^Qn8xVvlkRVRW6k}u*avB#C(G}WU zcdHw%MGLu4$M1dO!>3I75{8x~0;g!2qCz}1{?oR&x@j8ervDfIcwJiEB948h&nr!u z>p_Y0Lg!K&1e^d24q2KJvT~3-2YH8zvZx@z>6@IN=R%VU^U#culh>RXF*a3S#5au% zmM7g{$oFYpoWHnlqVuXaW`UxYo8nPgkeJ)Y9);>P#ZEZgz<>$os(`b%8L zL4YKZ5NVbH#NSz4zW->^i%I&e&W|zPQW@XV^JdS@Akz`NdCZ`m_Fh9RZDu+Ww{a&k zKHUG~$xfjwGT6bGTl9K81p*5(9El>70fpk#GEcIt;!gic3_H3Z!uls^mZb@nfdFDO z6>k-*xT`+wzv%cAVO-EjG5DYZGy@@qVHgxfxcvk^$>s6;1gCGj)9pqHyP#XeIeYC{ z(5GL+&|a5p8K+;Mh!7`>(dp`H4kY2vJ~vX2gETyh1A71oiot0TgGFb`iTQ57GZ&TU z?-xxhQi@|HNs36zkW>&s3$jG~w(stC8@Zor>Hg=|#hI2DZZ~;;qL!^%f|*lkyX_wC zwaBun8y z@FG`H;HwdC1R9wO+RwgkT zu*T_b7#o780~fvLr51(yqJS%dQT`wCxWf78+{xqWuqL)^Cgrw{f&6vGJvLXwndM3NXwnVm3pSF@e8JI4I(82fQaoX_Kh zOQPh>PZ$q#{Vr~XuAUwtavKeC8izE2LC7#L{umgKax>oh5!*gn$08-+{(^Z9Na1VA zccye5e|^em?aga7=60#WLhcq+KHhcMwsGH$YqUD)mB;{Lq-`2&aBwlo(R z1mcj0lu9CuAyfhw=Qqi8={&>L>;KBy`!?!jr=^7}TV+^Mk`P4@7}I*hoXOKhZpl1Z zL$}Q;dvIz&)r`Ld7FclZ0iI;-_nM4{yBQ>K#@BQi%`;rbkA_IeTx5A1D~T)u0AUzF zw|_E`>HkQ&Lq8W~Mm>aW=U%$CT@txIkZ#v%;=Okzpku%Q&s##Hoe@ZK=)2>rAh0w6?gX+Jp0ni=1BN z=6+ACeR+dv3@3uZDF|4MWB^W*RQ!U9*SNWtKDE3zuI~{h+#X?&Br+7i;vyqE>h*jo zvH0M7xQmWX^4go2>L5@ujbk*x5sNG3)j_b^_Hx}<{(az*y|F~vlAxj@fH4>)hg<>; zH>9C8y~&*(aAe>`&6;o|;3|fR1SXTD z;B$Ejj!nPrlV+RO)JuHe-sO6B`EkMxUB;QB&4^LF&GcWg1A4S>pI>zQrv^TZeIWL6 zwFXQb+4ClSjjkvarunpi=$%heiik@rpco|4Qx9LW>%QaZW3&&xPYzBku;6US*6gqc2c4)m!qR8e=?bVlk(i80vO*yoLT}&pci}J1vkkR|(}Hq<`8CLXZs|I9 z?W3RR%*CZ;=u5V&dJz)55(`KigCe3yv0?iO$3EQJxmHSrx8!~9wUs+NE&M*b%>X1? zXJ`Gp_3b^iGtT<{{fOJ#t@gx?yPJm6!eSA2P?Y1?N!kJK+ChUZSqF96-pw9{w&M(o zM99blCNo8}ebI-v&YaV}eo9+wSw~q>2f6%?FRI_(8OfA}U=d_gOu-2fOWc&^GcMou z$*5W#s8BA=pz2D{kc2cwQ^M$g15e~FcH}t`$sVsV3KdR7qGGchTTqtmm7*MWL)-HO zm-Nj=@8rqmn!YMRvcv!kBZ%^I*@wBTALf4a{;T?_X=PY0o1%cE0+m9L1ie0bvHOs< zy_4%!@!~1%!A;qsJ_7!)a-J8_dM@ELO$5<5O!bNOH zxlaEy(dV3$@5@8(gtg=BwxisFt24e?bTVSJXiNsON+}9UNUSkhbm6+-ff#?6BZ~Os zYi@_@)emgj^~3z`^w8k|3`h)IB z@kp-V_bLifE4lo5(OOMc5=xG7J$kFjzVw=qv}o%h#b$v8=Pu~`qIMK+^K0(6&weI8 z8WfXz2a!gyN<$n63^X3C?@Tk}Ex+Xo{v0);^Jh9cTSn`wR9Z|+n5;^qBoY+Wb;*dX zWtGm#d!YE18~606);$MAymn+L0xA;2$`~GpbA|7@ zI8ht5RMFB?b>jQpSWbDr-t?V z5_>d()B^wbBM0y*wy(}ou?(faU~s0t zaZH;B4ba--vz!P%O4veFl(#aGow&RuFtaVGP( zBZkbd;k1@WQrzFZ4P9=(wS@ylsN~Z`t+FC3k{*d#sT4QNV>22Pd8in1)i5=FH z$PAimqG+Zh8lBXCAIGA#=<3w!!k`%=5m6*0s){0_GDA1;F3CVxTE}Vft$T^3Ba-G( zh)}P5dY+NIJk}knH(Q|f1x6P!hBNycNcuNIQkZ@Xz_uN?qStyUxaH5&C5zJyBa;wl z3J7MBhDiD<<}yQ}zDK(1+~pLxWpf!t&^F$6$1s^?K*ZpLF8anoq)np}W`Z6aNL{t~ zwJ$WE^tkM9NURJo748;EAr%S54`1wGlUYzm@(t)Pn(zFTbrU5ULsEc5t*;8lAkt0r z4*mEf`;O_YjgaU?3G8Pm`{g#`>lf&;`OmikIKHBoGpS`dt6Tw1+k`W3+Cn?mNK64-4>CRY_ ze1OttX2r3fd-y9N#A}i;ApznKy6QgP9X)AfAFQ%R;J==RsaIcPX_ioqLy0j)lO#Eq zYcA~%iGl9CXyP2lYa;}aF%JL*{sjnvK6oHaTSyB^{>M3qzKUVESLZ!f`D(~dQhEn3 zgX4YpPW_a#S)*8{pCA3PMwAm~c+yB5*;Hb}Qc_kwgWlAA2mEZVQaw zU6KE!^1N5?0L0P4HEC5rXoF?a%TbVBQE=7Uk*8(@Q zwBX+KEtX`cvfLvfRktv@kCE5<>lfT zZ!2+tOJ7)SE9wQq#^or@zG%gK7B)qqr-)$3JGY*OcjA^Z^dh>EmRi#MyHEWxf@VoS z><4-4DfyCn?!zoSV`(n9UOkIGrhb^74qBH=y!Q1;wBi26j97|9Jufwgqi7bli;sV(}%JqlCueL==BQ8#ZiV}dR^U3+*-h=(go_ewM8 z`D$|rtZKy}mu`yb=5+^QZk|{UJBz^5J}TJ$iNjb*+Qy(?)O>wQ@9fh%BdWVr?!M5o z7I8H(dEiaGpBM@E_(WHos-tV24x%{|$4}$8ou&ZCq=|(43+%;{Lc$c9XND3Y3fST( zX6qUu0S+2ePTg>IeF3c`hui)kks)JHEfL8~rW&-7w&`&?cE#7(A30f>*P3WsP{LHq zHwPPqDu4VuIx?8>ld$mEp7bG;_j71>{^3)eFb4sk142x4$Y#+JD;?C)!S$W-VejBG zc*69c$zH)CsEE%G2#$zOhAx@LJm1M=Q~c0pWTv86GT3WOWlaEGG7w)n(epCS>ijAi z9j8J0t+x;LS2$2Nt>3`9UD@F~du(l2>{6B{3ZSf#pmMKbZy0L{_1+ABAAt_AW@yZcs4?_+K{2rB z=7LNd!6vPYKYrjK1WY0ZNffT<_$d3-+05PHM-*=N>oALy-qS2;)|-ZtBLlYMqsFdG0Eo(yG z?D-z^g}pFZ#1vH9Av9Dvwz)cys81sGViJdPuq z?0=$Lum@Z>G0F9i*UM_Un9Z*I_+97nXee!xiJ(b*^d)yzQnf!@c^k*s)Yp zreYCfl?90ia@w}tD`8Pc-5PbOPBqKQRnJR&_5=cV>E$@d*x2GpNi?+X7 z&Lc7_s99JA-7Bffdoq>>HSFR1PqL8%9*_SlN?Q1CjZfzrw=SlD;)Yv9%^@Hgr;UV# z60+Y%`o^s^8b2ludOz>+eA*4nACdb04B#NRT)+l|6j6an^iBrigK?+EaISK#$*e73 z#v4T4`+9uYuT8x5ygB3?ifbET`!prU;oitWI++#{!bxTlnfDRD#k=7t0p*8*SF)pa z-DEVm-Wu=<|#eJ-{h-*p8lQ34&x>$XE6K+D$N+p8t~6)`}O+dXn|gn84! zuK!^@b`d=9Q_#Y`E$AZxDz%p^@XzM<5!g7k)6quaVN$eQnLcdyeLqDwdU1t>Yrc6Gmb9|cT-C{yAHLZ%ut9^r?p?tgHeJNL;Cs_LvEl!zpNNJSu<#t+>T z%0(}qeml@9*jV`x-1HO83+#9w=Ep16GE4TDBleVM;2CLdswTwGu`7Ht!VC(Jg(ji` z2S^DZp%sKO63{pT_$+rtT$uI5`W@Xt-v9?5{g#SHu=+u^V% zvj4Mj7iA#i)549Yuic)05m7BVWe_;Ks|~-aU&PN}k|dVplBbh3^phH&+Eh7RwO~?u z4loIdC=OZb(;77SE{1}wcZ91Ev}P(ZgsG|>+!nx3+==(9@87^iX)@77z@d3-fD}v} zrtVy2a%)SRzkr|M!hGdB`u@IwUc?RFNh-#f!3{D*puJD4J=LXf-6|(%jZK?;rx@QJ zqLMlAZqc6~JydY^to+@k1rgxOnw!m_sPICyw;l%%6`|;S6}jsG#nx*GJgYVtV?i+te za*{Ar1ts{kI3tz|{mhcy>@(p#0z^cC-kC=$`lg{z2!#xpYK>_WqqE0)+B zL~mHq`~WQNr!0dLL%EoT3>gazN@gk40Y!xuXx{q>Ty@dTOZkD~k zn29?V?e1mZZ7ArFGGvK2!5qZPA{=8&u-hO`>9};%>3AuorP-p0yr(15A~jJ9O|PiI zeXMxM7^vOI$}8M3BKlP>H@V=Ng()^t<2nlEW1^K33Z--L9z62hWHhRe?rQe>_ ztG%ut+lFCXV%l<)+-_r=9QS~P6_cf1mS~2)!~|UC z6YdPhudGer{;~Bm`1+d+JDem%j_j?kZT9}+n)E_`cOf6W|IxFu9?VXX!5~*1gXq80 z1YVkdxo7-cfX@E)c}S<60vbr5S;nA{0#P#2Qyw)g7ACoJ9>EIJG{6?p`%Sz8jj_~ zn1j0ZHTLzC40{uSu1?_TqdwNo#cbvWRIEr-j0uWjs6rw}X5v9}OwO>pUi;}$4LDIG zKZQ(iI02-P;ywg7V~!pV>r)iG+(p{X!$5P+5aN^&nlh=1VK*Jc%GQ#N+f_?%8pa~M zYq0#(zgI8zfwz&>S0&<2%+Gx}<&@2XgrF-)1T#%7*mPy87D~Gaz=JlGflw)F_j$AX z{q9b!R@&JwxD>^T2O>Z-2Pk6AR02RbqKDo^_!l&}?) z_w+i#p_T6Cph{| z7@z4l-j0lq>%;WuGZu^NlPcm#z!=fe7!*J29|AVgc)m1s`VO7VnfI8mGVC+nA;+tW z|J~-^-S4k}q%|j~dx&6Xn})h(<``OH%axmM=TJk5r961?0vsaJ+F0*mDZ|`k1o&3i zncR2k>fS8wzRxEH<J#z&r7k--74rrg6z#sT8o~HIwfOHOuteU3Y zpqY4JhD;CJBpEoKwrqHR#^9bGEjDLZ!3d<9LI@my6fwf=-i6gYJ{bO3xqdd38=0f- zp|}D5&6kp9GO1Bp?vO5mgAH@) zMSgY7PUhd8WWi?Eb_LLPCNw;My@d_;L-}+F3M3?sfRg>YcEKM^>f-|UuRc!ekWXNC z?P=!@#TBa2fP7X!oI;3jVFC28IV=iPi=)@D$tiRlIX{C^QvHwD*xF?eie|@z<~dPi z4^XrdE)w-wcXf7-o#XnFs^1q$3TpqcH@KBHb?FzHZ{u?H|Gt~ivZ=jeK$pAzQ`Mqr zDEQ2DE`51xFHNJ;yjui-vYPd3ef^IP90IHl=(|G(lvD!(e)eE`dhbB#yw8Qw?=W9BRu^8(xtAz1 zJsc3!NCPUfU9WwnD6;sow3EwjrgLhs8w2c@R6qix5W(Jx+A4Y5ovRkMi<{3Y{tSTr z&N3k;!onsF*MLdVRErs59Z30H9?=!x2iy`Cz##vu_=8{(O$MnAssK{{VWypvHx9wMME(9B=*0r1g;9;h#&)p3j{Z7e6SI z?B+>21yKKl3kjF&yP>@0>gyWK%a)W+P;RAjISm|#jd~R73I7xa395R#&OdKycsEa* z0ezlx2fwM-7C?2;Ae4$JUR~o~bzUP4Tpge`jgBwZY~QPkY>j#s`73PcY)5-s*T%iWvuD7qj0$wh1&F}$eb;&2b10r zE1bLBlCAC}^w3LpAtG7rL}V81Lsus3w}a*sxrVJFz2?)(PO&%^QG1d;0i;9@<1zrG z$d$n#I$w46_i1+BsKbO3nk`1pB9DSF-e3H3M)cc`cS1ho?m<$PBb{_Dr8gI-Z9ymIj`uZ0+zFPZvR0t-2k=o_;#){S^` zDhTf)vwObS#C%Bf0%(8O<<2TA@FeG`jB%|cQ=ZeEbL#*%M}`)Xy$4A&yZ{I@LQJJR zsQEhtTJQE}e!d3XRlIe#sYlGEM)DU(un+575M>d!Lbp1z^j!k}ga1{oN#dqz;*+G3 z+F7ymX~%DBb2k%pSrZ8ap%gAu5gx*!e`d_YTlqGiyy150<0n!DZx1<^EJc`MVCXjD z3=fa}{%qY=OVXfgUO2&Z`VS&p5(9w}tW=ka*+Kq={@ge{q-`lG+v>h^PI2r&%Zh$s z_Q&nHQCRh6Z>Qb+yZ+_R1r?}=Nm(q7!0P?29>296&i*CS%B-DN2;!SdSCy;#zE8Qw zsq;n87ywuZXBh+EiZR@VXOB}Oc&?>315MLm;2_UQ1ZcqmKjPcH&UgN`26jVkUOzlm z2CKH2cyIJ@>^O*^bTW-05;gmY)fSWScK}OclEDj<7Ty+h+vhc70b-a9@XlT1(3%}- z#`{s91%L)rSbPWvps+mYT; zD)Fo^Jb9_IuA=>5k_M)zz42SWo*(CfGcC!x1`*SZd%*8NGVWO8n0a;+IgJ2txd;*% zjy98UQgUW;->uImq>&zFSc@TCDE#9vZ}+2Wo#lN45^2F`s%a*WP$QHeNaY+|zn)X9 zL&(AR=b?+U6@!hzyv>gX;C6IzxZW7S%sykSzLfMM{;XGO%kJnc23h=;&WYS*&}`5P zvD=uJ=d&E$88zO&&UkoxttE2)(AKy7cf(%|75sVis^wt&K1%8+ zGd1Bj3!zCQDNghcZYx9XN(H5_?rXKB+e6~QQp%G2Rsv4bKV)K($20UPLvDfV9PV*ijRB1e(fHp^{Q`tOOf6Ml0+EyD zQz6}=hAKkA9Khz0#-Mo<%J$apE_o~)T_w44huw-wM%}e{Q*pScOObhta%gM{QZjG3lLL*^uk;9rz^(o9X)pH-s-V1sa+`ZSOXA(qZ`=)s1SA zR!B@JsA_~Wi|lKW+C6}W^88%q`H5bJQcPgPt7a3SP`b8Hbb51rEA0eimnXuLN`lZ5 zauIkjQoRj!8f+hNKX1sY4Dq7}MvD!QceBp+Y5W(JV0qT?3=TC=lbk6*rpH+R+ zc_REU4fn$z5 zl1$ag8(h+Yk$KL|9Wb|<&+8|wP7`^@xyJ0Y2_}X>F%3#r*}sd&!u&T|PW$~bzX@9W zo{ihJrUX?MSHB!OIWrrX>cpGEJ|FU^h1yz5y|*CQo|(nv>yyxK2i{*fn;-iC;cpDR zg^M9bVjxDqm-ovj8SZtc!Ltmem1TEMeP5vi$9h?rHmRYOMzr3~fl9tkh>5^{5 zTv=)*RWd}PcnIT2qSfBUma4Y5sF(~c$?L1AYSRNR&+SVO7LD`ptCwOp=Hq>%o`+-E zYG1Boyz$moR6sMsSd2%;-mAb5>q=&+WZf%5Va@0JfPB?d0Sv+T$dW|*6j;zA(?ub7Z;2CU z6B++2(HKSTc8XM4kG-;c+k59uUGQpI*#8h_y{6V(RAO z*T>gtMDl(V#x%OSUaw=M_+YD}ndDVL!C~CRXD+U6kjXUizA1QtA|5dA+r{9v4-ZXS zaSzqEybrNogq)7}e#yL0nlXm>00t4_-dxjOCd#GgTl{_aoNcvJ&O+vymk^U&(G=Lh zM`d%&`jwrGhND8a8krjW(%Zs@5aME=_v~KNvHjN0$=E8O7z8my76pQQEKSwnES#28 zk`46FxEQ~;^Bo%H1T5k43Myo(7>MH;ION(q7fbQ}k!bqYZcrn<-!2RGKXm{s!IZ@5 z0ur_W4pJDW5AZG>@w?9yrAy4N)}z!^@P>6x>8m}L zJ@C5|?#3l@s;g8kkXc7+?sl9B~EE*dZfDQ>@5@ z$`$g?pl2**0qxtPPS<>H^w;hY;vuI(P**=;8Fwr1>5KI`I~xl|f{9X!zyvT)QWU(_ z<56H$z=P9%AJ6_ZWKr4c`Xp6u^$$rhlt*nE7Hx_)V>^S``-IerucKmFW5FPIud?`2+5}h(RPVh4!8Aok94C~D;*5RMTeK1W2Odjhw9+L z>l!AHy##Gg8YuQYZst^O?R&wFxPNo^a34id8ADDfJ)Rm2B{hujMZcDO#y#!9WwP0K zgg=Xq$0EAhg(R4mx~gnGnnVhQcod0&?y&kHNhb0qcZWwP+oP3aOYzP382v*rN+eB$H5*Qn zK2y@$V{^P28mo4)*3Z&8#4{XZYWF?TRYshQ^XC#}JIWhxg@;AknVPPN?Q4RrXK#Db zISGuXgQ;A|b(vAO>jZexfgsulsJl;>1R7LsD32I{hE^Cekp*~hb?#~AQ>Va^xQ}3egYrK?WxeAZPpYd1hJdH~w7sho$Y@#nv3ghvjx4fV5 zA2_*hGgixU`n*t6!cD}?9-nF~HH0Y>IZ)nz^9lKMXAp;ng{b8Wld4Ao07$GpI@?c@ zOx^J%$H{OQxWLZIKZ8ns^&Mn)|DJ{)-Q}TTNHMc0Bziw7E_L@)U)bIIYNn3I$DqE9 z?x)$9s5GVMPaG;FU;t=P!g zQ$7wtt(KZmv-M1$_p#6rcQ-=prqqX-LSiCWvVVGrx&5~DjNZ#LNAl>b=bftZTO(y0 zID{c8rO8+#zLwNYOo~;|0Lk8xWl#MnSlVo10`sEqj|L%;WC$eoABrfdX2b+1?eWYM z-rZfylUCjdOpz=HTk+IYm@-!?;*&^Q5>OR{Na$aLN{J_~uaEOgG%FlW#RsbFR#`O5 zEuM{)$6SV%15vUc7=uMbhMF-hyv7DA$Tyv=pY%Hi8oG32EO3+%^T2{Lrzy~+fmE_8 zQakgMXSoo>K1o}~nY4pD=*We%le-}qkcD7qM_n7wgSpgWD@J`;3gFBX<4iE5c9*`3 z9NUkh=j3}TmUN>bX9K}b><{mE!b?6q7DO>gKK%`@wFtir2L z7p&x5-+VNTc&pJ**_X7FP=DVBn^BoVM&g!yKUZ&Xg^%(K$aO`-jm@Eq03FOXgcl~H zgs&Xbb=60IOsp@?*e@cb_BM?WL5w8?fMJjw6>EaKL}T5=@`XId68*T-p5jqu1;=q% z7m*wAPMk`*t*KJM{fh}PZOY(EhjR2x3v?9a-FHJi@U)ozoWQ6hR|`yD z=g12xAvtLEX(ntp*j$|do2!*WEtKi34zS;s84hq*kPSH?N&XwnoGt`7FT;T+%Us;l zG2A~*eSNiZa?%p&MGagH)z+tvnmA|?nFs;3v9rg~-SdR&0wJxdc3?~%OF*@#Eiv{} zc(8&DmPK4Bp@9^SA!^7W3}nzGy<$k&ubVVC#HeO1!EcI%##`pZePVAWv#4<%i z({Bu>D5kC;jeDoICUzSDh}-$bm8IOR{qKKl59zzpGoresJi3qXTccj@+uS!Cj5xJ6 zVn=0ABj{JbLp_51$=kwHcOKD9Ig+{Fwb4L^^^&42+&fX;;^6o{=Qq&<#b*7Qn&%mDNG7j9GoXRkm(I&E7U~18+DfEp>Rb)DAv>2(jy$cR zOoXVS!Gws6NCd@$vJ%{oVPN##C-um*LMvLDm3olM#%hU@PF{0VxB$(A=+8!*0&z$3XI-E$-N zt>zn;EWC!JN(9d840tL3l1Qks1M{eK#@mhm^>fa6uvZ!GpLS5 z5YT@w*mtO;Vv8O}%H7tTv^>tG(CR-p>3=b$sUoR#`*U%=lhOO|&(3I+#9>MiK&ZH{ zVRR^9rt4nN&Gor#KYD6jGsc8`&B#H>=!_??uuDJwZwA?3P_1xu{9OpyVte7%{l|Dy zVR~CyIdBVhM_3k@%#&v6{FYjj-kp=0eU;bzSNmHlsikS@GlMX+Vcxcuk!#t6DK1K+ z3WnWtb=^)gYvXNfHFtWY!^=die-2DjJxG_QoZwxRtlK+S}lf>|PB$%a4`lrUXgeuE3; zOL18=@y9UXMk48bnoxr(tYv(;PxrsQ4BbnVC$0~FNF|I|M2H4eI1kk<9I}}nzl9pR zw$7nTpSX)r%lFVol2uU$92D~%3M4MQ7AE*_Fq6rad?tvh{`b7Hix;FFXU|OhXP@rH zd%M#ja5TjF0Sx~NMJCD&*ZlBkye_tXW|`a+hooMqgJ3i^Z|Lte|H)Ia8;wT#6fmYJv41-&7XQ`Q;1HPw0TPG^NeIi} zXvGtgxT^Q&bc>#oxKj=UB_0E26k{wrf|@uMHJtm|Pbv^%cvYZCHMqP;23sC%O0jDx z23a8Mx$4zAY_`Ut1F9o~?k`0&01PTaQ`Ye#QQ>;O-w1PmNxn-g`gC2Mo%a#F4~JVA zt{e~mP8mwSX6on5#MX~?@`tDC0hZXj)CZ4XdTPgQpPF(%NE%FbjKz4_wr`!8<#vOz zGq280dut2)6ObuaVBSlMxK%$({!B9P6aG3rB5)aq^g+BnNCsnO zCK|5du*fcrKaD6L;lu&lpx(U|mZDICdXK}KZ=NzFhD&BhI*Z+!Nq?TE-K5o*4$4&^ zQU3r^ayVgv5`kom*V~eqNGm^cp#{3a`tn6K&YN3B_P6wQgZiY~@%asNu-T7eZEpvI z&@3$uI7yITwjl-tMj?=WW($ZKSmw3QYSYhd&|a^WF-Zar z=Q->q2nN(b((t+S;GC~vkVydL@tCp%0vT&2=jY4B^d`!^aAg6BQ0Z_34GGylolbk8 zz;J79=6a{pCOHOhYF1|#>vbenzqL^;3AHs*>$*-X_v7#TkM)v67Q$Cwe^~S2v6~z% zTj^>f;N`17>NpKnIXjykeQ0sZnU`WBlh#(y(K*zi7hjT|og!jlTa=t(TZ}Rtzl$^T zTk&GGR+@cw@Fv69me)IH>u4VRTUXYC+*I6bv>$zGvDLG;i;hIEzJx=W3t7KaxxbBI zy)F=GeN+Yp+M%Ns$eSE4cUarLY=u7_zr8GTa_+e;#Zdlmhs}I6-{3Q1l&16g$#{KF zmF+`adx~4#i1*DreWt7jpHi|7pe3Ip|Jt$b-%Mv5fO+xCEnaBZS6LIE2e;$$7%Kbs zE_c$ZvM~CNDG?4-;W)}6MLeD$!__cSK`=-#jor|BbP(HgQF|6#YLk#)LbR)LPpiAAB*s3b3$G&Xt3WaoAwhBukG~s7X>=Gv4Snj& z_NXyyoGs{X`0v-r60H)_XDYf?=p|xjWujiC-DGn3yxe=aC^U2m#zxfw5g;QCLDFm( z3ESb}OwUSLRR7Q~46T0jIyurRhJ`6CYCQr1UZ&|oYTl=opD`QMpv%Dd=AIWY!DrB{ z#%=;l+9dwGiDJFXC{}zsNes-xABXX+Il*7**~xd=b)>yne9y5Rz39D|iP=#PW#QF8 zN+)l!zkFZVu5vxCmry)`Ad&rSv?f(wZWbqU0mG*|f!dMP0?4Fa_Rp4F%lgAdtWa6YqWNrwuypa66^6&_RPaI?o@GT3gNYJMG-MPMwZ)_i zy3e8OUEn2RpE-DnQ(joUd8?YK1zvCodR072u-Yk+)dBai-+ujQNnRbF+siGw?Nyh% z4RHdOVm}hvdo8>+)zM;SM&@G#`D+mk${|@tgKXFJ64GCxnYAj0{<3&)(C>FL57?m}s@|C; z>B25HrjC}r^k@5-g{de)sF1?LY1}Ku{{H^!hD`C;7gqvEpJsR$goGff&;2EJ%eC6x zX+oJE-ltqd0a4AE3@AEPB|A|g)3rA3W&?hE!n-Y$xK5-UQ5^Qd>{t^|K1}i}qh&Oh zb;%S_7n&w?+_qCrgW;-w$i^>n@a-Ue2ry_40C~}$=|><<`7uV&R}t~cu-nU5SJmv} z+&JgKug2jQM&hIO>BqBLutm_#5Z~&!Y}9ZLP)Q+T5DkDCL@lI?2aS*dP=l(aS!KO3 z?hV(~R#8QzEJFxjE}e^tlBZVh9bFO1VI!mZ=Qov!K;R(GD53mtm1%zLJvL3kl^@JoBfkQC)B9HRNy=l_{> z84t?o>GIcO-0Ho8Xx+KEJIXHr2*^4v?q#)_cN&YLnQ;5hSRL2~$9GpC>&411kfP3m zJ7rhMI~`Pdfb)m_nc_gdw%|Frb?YuQ&)nlb^mj;jtxN}&`1*u9#Es3@cWynRqxde; z-i%Hyg+zoXgy?5x+i65x(c90>f+U!VRl;uG+04z%P0b>onAaKb#njDgkDwje4PA&P zIgf})0|6CP0YwA>K~%Aahzbp40=@Gdbuct=6#E2cf@RL-IFro_x4_2gaTh*B^aYg#DfSTc~G37cD7t6 zT_~DGtMR@S-G#DBbNeY(9)mhump`tbag111%-wb#=_J9mTxwSo@XXHhcJrq((juH6;L_#JR2xda>iJ!D%(Rj5EKtQZ0u+dmmQkyW@DQ6< zVUHi3E%M3hpbR}I^y|a6 zg7m(SYzQ-9p=t|<%EWDk$r?R6#BqR+(D-4!w?NCTq$4cH)8)U`wvlx2;ALXHeXg^y z^y>6IeVg&J;2(Us^*L*2ogS&7MSEi3n&*vPNuW#?pkQCcf{qt8IyD+E@BC?$o=6aGkZ#3no##)o-SN(;g}`!n@{N1W3o!_|6B!p8$! z1zr>d-WCTT%isBFooPoOKT1jZxVx=KmWy!f|Mzw0$G)l7Dx=LpGw;z8QEfpv&+_

    @GKY<=18j(%=w2h`ru^O;id@Ki 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 eBD%cr{BWfpo z`_S`!KQDW?W5gK^zdNbt`YjxNQ1#`y%~!K5Rk6EdX~+TEYX_BKby!ky$26)ju}q9mE-iXPbMx-;J4>|5pyRbzN$zUsUlLRchViUqtx06H;g z-tdZLe$Vy4{n{JG0%?BvK_Fjw8#Vd0xkUF3XX4l6Kig1JRo?#9*V0%CCm@Ryk`)hJ zBA!?#>1gt5y0mJ*8>$6}Q6nQ7RWiKq^~$;KeQ>Fm%4?!oG?}L2DR;Z({c27IJeIK<=UQ2 zs)9_uz!6fa8A5L5)Zgl~N!?eb;sf3hqv3zfr59%>)c7gh_dHR&sVde&6s?#FnKP_H z+PKh9k(iy*3!ww|r&63z2s$P*D|h;vOk zw0d6rVb!R|k3m5yU=$b101}KEh^3=qz1IngX*S+rNwY?gwU{HB-y0&P1@{*$bYu)7 z5P=B%v+$F8T*bLO3yuvQJX)1Jk2Cr?tSA~$itaQtTT;_gETYBH3Cny&ile*L?%=H= zPMG-h`5Emw)5DPoxu=wVoNMvymlmzu)Z166lRJ9>NHRahA_J{_x;-h)Vdf>tYdBK5 z@nv)V8_4k4k+QBc@$byM_;p~w!JD}>IFlz08!VC9;l(*j>_3Op2LPGAuk zhV4cL*VgfIt*)Ib?OU`Y3uY3b(EZ%SyC%Ke=#?is2Z-DbAyfi?aV!Y|2s`>+yep&P za@!+aklI+^eeB)L+2*SxO9OMSlqdL%cQ1tN4IC{K3Ya~ z%v(bzwFOBHA?EKl*V0on@+UWtqcNzg*3^CA}JMJh+EfXZq~rqGpnXATbxg3 z%8>*{n4%FWfX0L91*kHNM~vnVr+jDga5 zB968ko^kv+qn`g4ImD*OLBxlJEmyBR?f3e(#R;y_RnI0oxgl^^ED19tra3_IOz1eT zzH9w=+`BiQSM@G_%tIr27ZC^(3@3>+W);sfs$bNp^P281UGKMC=}bEGpX!13{d{A= z{%iF)_BAV*@2BZqFHQcs=KIez`6ZhCY)#&+BQ90p8BJc$gTzjo>{^yMXALjr9p5jT!KsoetvaxGYl~*C(vT8oO zY{>8FNhC3bEGJPiOSlGQfB^4NjwCar1;FuGfINaRlY2K0hb%K0TDmTEe(}l5!~H~I z%72dKR7KJhq&bq2cqH;)9vT~U;dVI{pY9BDlxpAa)Nuyd($zmXdf#oN?%v5pKf9M> zDMo@E!*Z-dk}R|CHIq?wZgjUrlGQbcUu%!72^QhwL`R#iqRDHoZ?xrWb@8?C5XfI4Uw4EQ$Bt4Z{}@!XbF9yw4mNJ?YjMA zVu?qZ26PJvAq{y<$*d^ITDOpcys7HLjM3zMmm74oA3FB<54QtEbRdutn-FjW1rf`J zA2fn-J<)f}?H{(s`j-KO?&{uX;9S$(j%OZc5&|} z0_zzA0C`I02!fSEzYc8gIzKwP)uuP}6|WE=M3DlV$nsjAeYDq2Z2b^>(%!ZAz>oDW zx2dTw&Q1DoUH%IK~*B+w!cXp)dQsI@PtT%sW7m1+uBT^CnR z{KMtGxodQ!Kg=(QG(#ei1w2N2K5n$BK_}l-gGr1!|2G=Cx>lXrwzSUH>b~rxO|cxY zSj{#OkrXeA2$G0A``4gJh2bcThHkFj^=+fRw8s0AW~#oU0EBF&m}V$p@5{r#kzQOC zTO1))qYKcEJzY0vpMs;KtLsXd2?QycLJUAks3Yx}XljsC?ty6kUG3?bNB29}bYl&T z7^I*Ei;Ovn<^>MRvU|o>F!*X(jFy3{t8=~=$N5r_H0kBq^VVPeTaDKD!!AlPASI51 zw4mJ&(K=MQ{!-}ex^wW+?~m@U=__8yhl2^lO*({>%s{4Hdq;Qq(J?WF6)r@F_&&Ob zL!8&gey$dAvphFD2R<)JiWV>_bFvTyoz&lz%pHwsoTxinjD$oQ(17P?q@AsBdtx#S zaLsL;wQIpieUUmxury86ye#@0&y~WgZh&j-m6w;T?^e@y*zzq6mH{G95I~}NpNL_Z z74^n#km~|ikn%wn)i?BHKk^=uV<7=($SD+6qQ&mOwrstl?pBMVOA4RZ@uN|P6yND( zb^6geNIxGcwgooWwfC4|5>YzV7tLgQjwO?pPyA_P_1FN9KybhE_semt$uPn-cxqbH z`CS5p@CFD$5)u?eA(AG;Wj{u^uGF(!YJ4#W$B^x34-piBSV9n387=Jaq2-;^`;7lo z3rM43q-#X`YiBc021GxSBuf&IkigJkL?n}34d0tGGI~edKzuA_M5G)S49kewQ6er3 zo%&V$+6Cnci-#oFL+<}xeyXWD)qY(3=Q4+^EC3`(f&eMvx6?6>FDJiPM!m0TprZ_5 zC5V!|`dxz(_h)LC#oU{6^@s$M0lN-2c70jnC4FH6O(ErGfTB4FD8y-ZGw{wmALW0F zv8&eQBwO-d>Qwdf-Oc$;nn^}tB!(14NHWzwtl4S#+V@MTlhd(c%_43f+4bsYJ-+;L zPlA496h-muU=jik1s>5f%K+9md%^LKYxFXzE!pS&;nrC zKXUU=sSH_}m1%(m1X}xI&A$|quWS%u@!iLzX|9IDN7Ng&v4Qu=e*dUPwxl?)%`EdW zLNW;$C=%)2E57=+`S&uEN*$~TEZx+;5BC3m3vdgJ_oQ5X4k_Jr=W{96eJ+5to+Pmd zlSrl{8r|W>8B34(DXyrCRWEFS(O`ES`uf%h*QbFPcTA8#ARqxn2^5xbHyJWq=4XdC z{?CiL{4&Q9h+-KQuoMXhCR`#e!*yozBc>?>s`-|$7-mq2%5RtvzSYba7d~S@Hj?p= z&H#f#msE~(Wqoqkyy<97-&K&0J3$P?kV*tMNuXUfE zJ#YR;|F}sxsyLCBNQtI+K_VVG-TRqay&j525!~{R06oMt&b542a)ZWObk;sWYS(_v zN_yMq85b)3>qm~?0+JyVW>{8&fRF{BsAl0GywAE~zx@8-)6WH#0E+-oG7@E44uddx z&Sm_wRiCFeH}Wldtf0yQNJvA9W=Ya4rdbt~Y9Fi+E1}mi$px=gC)|QcM2-u-0rKe?y5pT6-{c;$%iZM@@=u(^~K%=r_VM7zQ;z~MM6q(ta*@q z0Jf*4jKMauEiKJqSMI5$euL=t_3}l!4}I3BxoTy78UAVBx~=!q zG35(x(q5X&htghIU{CKdJ)t?LduSRx+$*D3!^dIocdDl4ZLb!Fy5U!NiMFennBf=W z{NI7i8yHy_cZZ3a<+{>b6q?^wXJ(tvS&|naGToMzj%|)iGa%^2uMF!MH(_w;%73#S zn+z|x(mHnG_x+|Tw+DpCvxp)^k_Saqg@4Ia@9b*#lgIQ-K^QLdQ}Y$q$Mbi7nHd}F zD>N82)(imJfArEj=c=D7qZJKkHko0RH(eiMXK>hKJm2+w%oFkR*X!SnFf7eu9tfm_ zv}1g}LU`59cfqwgzx-vQpC#-=O|VcFAuUT#mSNwmH;?u^-7Q94!dgX!U^Z!$bn<%7 z^`z>?04IU};a%vu5Z&nIXS?bSuLu#Ngbsl;MHF=jFLYTFmn=`&9oX{#WC4#LjX6>b zU1Yw*74_GIj=RRIeB(sFaZxc+JWMhSB9XuxJ<@wgt+_p;_6jftC$!) zxbfHi&(+ZSYE<)5I!=ZFOBQf4l*HS$((-a%CvL+_>D95ym3Fptr8cgBOOu5RWH^C> zED=V`w$-kq6}e+m=cyECQh-Z#K=QIA(TL|bIJDB~xN^6rmhtN18unH4zh3uN3cQZB z-|edueP1Vb24}o4_2|n+*10UPy9^^5=&RJQtl|L~P#k0_mV)7H^uOtf`@h#mnYQWT zCtfl7!w54XM-^4Q%xKu?8rDAM)t;*Y_vgla3K)!NR`{_}dzr|Sr48w45A={iarn_S;iT$_AjVNKuZ%*X1G0wePbf*gTJt@n(QVK1T0 zu7_*a8ewRz&griK7-KBZG|vgVfG}*i=*FG*8`qAiY4~SD-bih6P1^nYL$?Rj^d$%K z`zv6v03kx0Ebz64 z>W?U)cml8_18Gtav|a+M2JPUxu7;QPJpO%o)qdQMHBX)_GF!ojM+mZ*mN-PnM(fxu zvxnV|D!NI}4%gCA$HoyxRVVehUsD)f;?o^wh6DnZD2gX>j*p|4zZ#Il3@;I*qJaua zTNJ29n_sQ5Syk~SQ{B~kNbR%=CB5T!cIUFa`#)INNzFey;n1Tq>vw(kH}A)XkA8(- zZ{14%#hXvA>X_Mn>Os4juf?~i|Ln?U4mB^=_-WLzIe3zqpE5S#!$C(&Hu?Vf z*iQ{x&w2Chc23yTBb9yoYi~ZGTE9bkQ=Uk#@6De{eD7-P>ai_0sq|Xvino`iHQ%M` zR89TAFIt}5`1Sj0^pWR3+Ps17x-z}LH-GlfvDqcx7<5X_r%NlRjxW7FMO7SrcgC6- zr^h^%px!+EH#3Gz!hL>JFDlDTZoaw4=gckj9C~+&lW6($C8S;`oVfI#cPnn#(O4Cp zMv-xIJ8o^-Pu(lYi`t&B9_;_EnqQdoR(o@kSqY}xx%rQ)>dlXnRtSMru(2c}K#B}S ziel&l<}TMCwfhVb2FCiH4pOR_Cds0zi5d;NU58s=o%h@?0n`*(hGkfeph*%y)`voB zTrKCeA zpW+2V6d?r!jtJM}-(=Y9+8$NnNR`r^eX9t?c_~R!2mm_UYf`67tAfJ1JFu-!H=L4= zZJ{<}uj}-HEkj>e7Ld82C_$76h7vg;3~yB*xf(VvSLW>WI^HKE3-V?(Q;;`HBNQL7 z6aFeo?%D1xd$;s=q6{CqRu1X>;>r#IEwCUE0432fA)~@7a((Q&^jDuY)7CW9KXnT5 z-HKg`D6^2`ssEMw%AVi1uj+^;HtZ%C%XS|0>>>4{V5CVqx!JyvDT4aqSX;x?j7>(h zkuS9>SYnojNHl3qLzma+VN#e;Mb-ZYOZC1hZn)R=J*ZGz{msJ$pSq$(Z`ogQaVJ&O z;kzAlJw=SQIFdT1q}elUctBd3Bl~{>%RvE=5E7iUVcKWaPL=&7H=5MpX#c4m=$UVh z=hh7Ree(V)dFGp+xrQ1$K58)fIqdSCL76~hDC>qihd-v4TG@B!Ir`CsDk2yvpfB0P?+rY6DK@tp0n1@(w zjtoAfLz>N&HrB2fri2l4?Y}PS?RjSnU+F5sLW%$kP0Z~1KeC5gn6z!D^YoyIQ8%I}r0 z@Ob5@YyIU(wPTLy`sb2piANG&2P$_s{NbM&QV08_k(AS2PD zP}EC=Xu}EDOEa!|TGZ%NDB7@ikiZGoj^piy?!6d@P(n1INho5H6$)*te!?}O>$WoO zN~+SN;{l{eEXE{<36Y>Vro!q=i|WlRUq&?%*rz$OlEWN+?f=!h-g6b!d+Ti(Vm)d* zPnz_`qvuCmTQA?PZl)zBKbuK$#lkZLlmwb@J*CTyEx(T})h}|L7=Z^;4EmJ|kF4~Q z@Ma)X!qPydBt!v0;0y2d;-stWFTbWutf_xrLot9uG*BE)a12D@-`9NW8r=7-j1GY# zfC|bDip(kD(fH6Qo-?jjC(L{Q>$=r_i&mrL01A1Lepq30&bt1L5Ic^6!7JbHxrV|8<1T%PAr5pWFR2&BYku=lW!>pU*qhV6Ds znpNT73ya+^xE54@`pGqmbG=UlxJss=Ovw;KnIMF-eU427XV%2BMOw?%Zb-{Uq$DAsO=9I;&s=>!C?!}58tD+aR8u0-#C|Chssi)n~sI(6M^7m zUXT$00*|#m5sHq-es--j4!b2zP;d4U{CF=VX^vw^4pMAR5blmimJ}sUMz%pkM?NJb zWAlVntJRi8bJD>x{Wr(>k3TN1xJEY}^E~lu4PT6w9jT5fa8F^!j^|;8 zM+<|%q6}AE=Nt>DlP{=CRpUemu+*`Mt@loR^t$nWc@etmy0WXq(aIkMcI7WhBFm8? zM~ERuM!D)bvB$8mTyzg#2}tEmn2cfUf1 zXSdL9=46V)3;_ki3R*WL6`~5JT2Kw*u0`v$<+>}iS(kO^O8L3Ebx3B4CVxGa*h9G` zDtvcuxei^p=Gt^N)|Xk5WZq0u;WI~nxrX+6w!W*9F8@VQhyw(ND1;aaK_8**!uXtp z)Yha|MYOxs>UOuI$Uw{_pdpQTR-|N>Ej%+B>z=c@{)(xK1MUULurdU!%!z~?`Z-hD z-M#IN4i?S*X5t)a$f29>ex_^ zm+J1VpO1(+ygs0-FoGmxhL)f#uvD?Q3ajqk@#%KFuDMF4?DxkJ2FF-RCjM_g$JkQYV-JEj}(nR0+BM{FyuM8#NlDi z>T4I2SMk%=B|_cRwcI_MwSMu=AAv*0(vTNq%*z}I!{=okck-Xp9J=^&WDfaN!L>U^p zpKCZ~-;vk#L;q2LA`wec6b&JV2rZ3v+Z*X=dmaB(GD=M39= zoxh^4l_dq~G>Rxlr-^B)sTRkkk_)QZs#{7wsFr6Y!^7^meP8?e=&R~EpXB$PX9$v$ zfq*!~@i!Ct999;(O3it-Qw&}MG(+2BYTLu^dF5|T?lwP&b%t!QN@he66fFTl5NYvZ zCzHGP@jB7}G$*}!Yd*@*!o6q7z@baqH_|6^a_9_eHqCBk5e-OLge;5ca9QIP?v-+_ zNpnus^<6Le{!oZDk6md!x7)2!v3Gerw{UaSwtr}v6Zpo2<2jz9Y0P0dbT#Le?nymd zOTXLeC)`*bUKL1^p(%+4lpv^@)RpS@zi?#zLnUL1dEQ&P`;YqU=%F}uo#%5BW=j-h z8^&fEUjMCk}zjRwlS;JHt`8P5cq6^@i4L5V!1 zr7-TXkbB;xw$p7R>iUw{d9wlpKnj>5A;MBNu~X%{hLmCpQ+y(B*6msGWJycQz{U@Z zATp9j0h0CQVd8XGUK{tJm!CaW_Px@+CwjKWc0g`G%pFA{P*gRvHg3zErH)2t{78`V zUAG|#kgP0`1S@KJzR(BkF}Ly9q9yTcOFv|aciy}X;~17B0isF5JkVjod}@1Jq9P_8 zlw?aAd-ktEa}tLiE)iA4y<{{z?k;&TY8BT>T}Xt<&q6{B#~?<+EYHx{3u&$ErKY3W z9En!X_YM^brdrUxSJRcIg89oj=oo5JZMiB03-LNwv$+|~POGBHU)6knP?LXGli#Gt zzp2SD*W?##^7A$Mxk2*JY4W@#-&2$Cq{(ZY|7mqKS_H{!BIf#7!Pd#0i}vo`=XQTP zzO?E=^|(n_)J8G{0||~YcjPk?lN{MvxShNzxysq92%Vn1{mVnMpIH(8gtxdmW&Ecq zY#x#`v*W$_$21*M^KS3|j(Qi$Fr9^`f?gOcl?`4UT@V3;N)XSE&fBp@AK ze90jH3-wm=ZV^g3m0w-C{RF@D9A{VC?uhx`;G17jw?}b&BB#|!!NUt zWmu5_G)aa|r*v_5J+knH56c8*OhrQG1c_oR38*}kp~lWf5$QdjIyRG|((Rbx%ve7<_O zd=={0_j7Z%b{OWq+c4mo1%M(rnd3<)s?3yG@`-KNF|;cdJ<_kAyKK^TJFlDhq$*?+d9XxAmGkN6hk2vK~W6dt-Q(bg!}h5AF5LEdo?iCYJZm-1i_FDVhCWi zrl$^c@Lr7r3CkT)(!}H!Q{pq9p4qB=#RvRAc)~rcU8S+5mgK551P-P_i;$$C3rGxA)GSUi`RwhQph$?x`0y_Rj@ZOXP05VeX916}ra{(bahn zXc^NY&(bs$^*j$vG=;YAhq-&RFAnIG(n}Y81UjT3#gLFi1edFA)G-N*$=GIA0)r1q z8|YBtmWO_F40kUb{qDAdZ`AY^g5?u)2ndo4BV(4Q2-{Q9uMWr;6MdjgY6vl(*On3P zCO^Hha(air8eRhAL|F;QD}{krpLT;D=BzocfLCauKoAnm5?Vj+TAp?dy zrIJAT!ds3SE1LlVH5+`pI%C#O(}R8~ns-NMc5i*`T$!_js`@UNoGUb*WhqglIe|go zKUKu%6q>YTF*n2P?i#=T_ZOJzenhvbq!g1R;(-K7g2H!8VrzEqJmBdmI7<7T*Vz+H zaEoYp^v@GcmV3}oW1~TKZ|Xkkim(Mj@QU!vBlP3LVC4G=(p;Ry4946DPEiu>_ma%Y<@%~tqW zM;7<_y(>;c(N%rv*_>rg(+p40itZGoX1L0gyb*W0WN}HKE$%-CO{(E;SkV_-6>yIM zPj0;QY5ucF^@cIY6zU+4a<9!QQ@70XA^N+bNtsYQZDSVFT7OsneI;0B$?hp1XY9|I zq#}0KS5%gYCnYhx%Q)7}%pC zEn$YlGzTc2DXQYR$uPz}YgM-sH5#dPF7fLcj-?m`DM5f(WP5I2vA1rMYo*m8Hl5E& z_j$3Iy@~(ZMfEHn?)5@URxI1;5iPvtL}# zZQFGB!K@nd({6+o)f>{ROb|370G8KA^n_-ECM_MP7M+UFyq!Ykhs z;{Ubf>P1tCG0bw0=s3i_v1319-Yul7V+bIm5kRcD5AU#y!Gr9mUyeSH@_|L-9e4n5 zO~j$Hdb8X|tBV7k=5;*`QjnlI#kyW`T}=BJt1k0u3B9FT{x_da`6X*lKzTS6S_DL3%d}w(&MGDYK)Z?9*4iGHKL` znCks<)&FOC)3V;x_OrK5UuaS_7}jp@|3Odz)GO{2>FrjXX{T?uPa;S`nqV2g(G0Bq57hL$<=Ag(dD*UnXC*9|`f2 z12G~C1(K#ADQkPVHt2#~=C&Vv^T)U`f$kR)p=+1kcuy6yO!nsj z6ezqR#Zf3nU9h($6)T=Uj}PlW)92cmRCV)O-gJ7)oI*bI<~y(V%4fZ0|Gq9VBgH8$ zTjOrucDSR**uXaKBo7c25J!;&6}rS?t$W(zC+E5^>C0_60uTfR7(^&?1s@UiCtiP? z7NcGjZ@HUXdTdoWb3g|U5+ebM761bnO3#6Vph>kLgt#k=hPT~4lkh>1+Du>2mP#{- zKr~A;X3UF8ebOY{SMF)CN_Mj-5Kj>Uqw@P=Q3C+=_{>-!fBT@ZNKOonalTGq>_w^R>k zR!U=10+5Cb59p$rm2PvNe5hHwBW(hjDe$BceNhH9kHc_ox5Hi1DxD!Ns)(_jo^F;O zIc+MRu1ID2%8fP;*fWkKOVsujGXKwXng_UoA}#ehHQlhYc(GbH&83I-lJKL4 z3+8JZ{O3)EJ?^>B?D&oPNIzBw%@PD+5g=KH21M9CclNlqR3D$vKSAHgDk;e<;t(KZ zq!+X)bS3W(-E-FVYc=AyAMMwC+fkA2a)K z1_dA@NyKr0M6}OM+|^n+Lyt=8)o|Ed>os@Tq2tsi`P_ghp|RevuAUGfYoHM+aQ8#rwPJZb=OuhPWcU(W;k?upwiC7dc zqG?Qtq)O3u+P$oPm)lcH7S(Okm+k{I7I*)AR;(|gR_<&$5IQY)+#SDb=;qzg`V0_c zS(as#IH5E}0vIk4VKSU>FMl!JS-N3hgIOALlEersg`|)pEV_UG__MAJyZK=Zvt5`| zpn$nd67S=yV*HvCI^%N6-30vV9JeoU1RxOzN)!hU31N`WXWYM3{N}y3Z>d;rTa-SQ zgEB+&B!?xL;NHJ{v*waTtxDJtxl1-3>$GjxKL8;|15zOY7(mkm(BgFCnVb~qM1DT! z{$NJiDKiGC1opTno&G3sB59VU0Wx>7wzu*rna?P?T4VT>-n=8}Q+z$M0z0&PQe>?} zAOgh(3HiuHf4aQq-2B!(w_mN;SC_U4*8v$$wK%$1Qm{SK?!c+NEP}#6hY=Oh{rh9X zUzuG#Ah9LUEG2P36nFr`h~(&w8E{~CyEpZn^^*wF6af&!G8`8^eQPvaaJRjX(PBk( zkT4=FFR&bzc$N!YY;w{4M%^cmTy3cvot+mcM#j8Eu#neAXD_dlYOA^EUT~;)h52+- zeYsmIfGmJ0M`Jj>OA4Q8?<>o8>}YAB6mNumr>yB0qmCHXq`uv{Mn`^{hf z>Y09}Ruz+sC%TybcdtO5;+8?)M?_%}h(HANpk!nSvSGXCvTsFP!ROldL%cMG8uO&9 zraZmpDyS6JA1H9D!m_x6cwL+RjtZtKl&ev&zQV%kF#T_vbj~SLkpCMZ=T-zF5P=93 zD|8LQn?)I}xerzw^8GZEA677j!(};!mI;#P7(&ta82@7F)Y!r*23&KC@0R%08lzqq z`EejDTg{Znau`E^WmamisPF142i_|6pqdox-4I@LpX;}G{>Uv)`VOm5B>%nMfZ-j} ztagWuw^$v0<>IiiGa3GJKl@ST#~%Aq^+Mk*Pp0g!@uC`*ha{n5*2$8j+3W5;(PDSl zG9fkj!l|wA=L$c5sq8<^9k{51YFO1Zl!n&lMU61?)g$?U`S>9D$oSu%@&C(R-q#%!ee+|gd!#IkY>YoL3zjh(2-J8E`P4-Pn612^T`(}7ITP@cm^;Mqo)zw&r~q& zs-fTeY1*`3gDthXDJISLshaoNi>f9;23dP*Xo4d71RaSDl2@B|$36DYsgvWE=30*D zO_C&Y^0CI z%zoj(fdO&!Ka^i9?7Tf_(VOBUg12H6iaf{d@W z9QFTtH>Sb%Tl`&`-*D$m8_PW=vZW&M0MUO@o|1D1ZeEqDG8r5FG8u^Dc##K?;{@r+ z*ZZ5+J~paMB@N{qZhG%1+-Oh#(bi|HN-7S^7nab56(4Dcf(&8-K_G_Cc9Q47QCGJ%)!f4N|6QE4Zzd{Y*PRS%mhzz1cn$+saEP&Mm)@3x5@XYz(V#T9h<@!6CW%U5iH3vEX$g$_NTBd%^QWs zaJsfRf1t3U(*AjkD(e|G@P%Eqq`>CI1giv+!K^4?Q24OsBu68TU;u^8Y3cmv4BR&z+jwip7AO@w^}nt1S>p228Uc|vvKC2` zHyhU9m)}zUZlQ9cp_1po*Vn5xMrv$@e*Tx6z!N+mF^Ne!CpNCdhDArS=RVrKtGhL( zgoa{_DRgrxds^*FXcI;1_?4tk7)qQ~J*|>WjYoYO5Oau#78r?z1i)128kX@M%aN5g zP9^FaQL_w3&`^o!$xr}N+H-H-w?nhjl$mw>RuS*XXgA``Nin**j!*=oz$;-)7@??^ zug2W4k%0p~3xH-AjwT7p$5f20qgQlIk88|}H{@^NX)z}$?(|q)16P`3 zS(2g{f@^dss{p$0=_B%M%XzJ-7U2*CEWhUrz5ION1tdbdukYNOhAtai-*vaJXeY{R| z^$=w}#t^qqse3F-EEzJd)y#7+%QC4)>l(hqyxn^}s06me0B}HLpdfcS_+0}fn5SBW z`PZBRf0T3bRWw2X?de)VXNa14HeKB{?VH$u4Iw0%N0LaeoFr-+qTX(4Lx4BZ$Tv#` zlb0A;cn+O<{q&HJ>iQCQ`63|zo@ZGeK~|EoBOz4zt|6rawpBZ*27lHI0oR8Sds#OF^hak%0P<)55SHLn^ob0qaHeOv+<)tN~nU>sotp& zyy-|eXXX-&{@)kY0fV+2-;Qm0XjbiV_3G=>&dTN-YmppDW>FL+28aU5)6}zv=R3Z? zU@xtXaHk**Y5jh5fz8|Oe zi`zxTza8|@6!3i1aA?~vE2(GpHd8=i81n={F*HIFhbGS7HsqOFcghZojBW(}MpApD zf%MG%ee|SCF#*{VgfUMFqAbuT3>uj7+`M#j1~XiTZJ;1o3~YnZz%E4Sv06z=qYzYtP;mPafFjc}QO#m`XAHZoHUMONK)ik8bLACNo(V=H2OTc=k*{3 zBOnnZ&$9vweKkDh>HJQWltZz)LK7@tNfJ1MfV`kJ5Y@(3E)lf4_8wT-)%%zbuqO-& zIEj%Z3c)aX(!sN(&h%emrTY4lZo{INvS36Cvxw(-2GTK;drz(Tzgsa;AbTup?bO2h+{3J>4)+ zq!EH*0Vhd3mhWDq5u>4-=QP-1N%$gQWEWB`8 zO86$^QFW4N1_TSTrR6)GdGmhI3}kQ5&Tq4RI#DB#7)ul+LgobsSrKW) zSkt7EepBC?26`qOeD z$C_w{EE~G$Rr0jJFfogY_j8)%*f!V%mK8XPqzH-wiAnQ@S1j{;P=#u}wo9I+bvXXe znScwIg0v)K$V;*mhPOD2r^Ti_oqJ6Ve9b5`GJ;4zK;*cC{oBSBE&S3bk2vYErLALfW{{JCp3`IN-C2k6u%e?Q#E1f3_bsk|Q`m5?O&E#R{u0Evh%O ze3^J1aZ*twVVx~%tW311P{ZbAoM|`HKw?>jKm_EeKmNG%@E5Zx$5i>-9&2fy zJ>1@ebE^VkLqgyP5kkl^i13RI2Zop$bn^Px(B|1NdC;~p2N_k|;X6Ox!-Eerw#uonM9%RexsOW!%j=M5Er&IcW;QU_~eMDTChV-%sov>^#x;5Vz&*3T~ z=l(FauJ3xuThAQe00IajAVa_Fxk-qrK_{Q2S^1Q56oxd8T9@uk^<9n!bEZ{@5HeO;MakkTNG$J2VnJ+4B1+_0%1tUbc8s zXw1V!`D^<5|Jl3l_$Z3Ef4L+;LX+N`NKsLCW_EUV1w@D-NR=uo9$RL~L2?)FE(B0f zq+CIYq97I!5kXNAMS&kS5CH`gR6wvGAOfNyRuq)?v&n6e+q=Dz1V!I_{+Y~Wcc;%h z&oj^SeS&E)PO9abOUn1&3zpFI?x2M5NA1w}t~C7qhT*%$yPY@6xyMZKE_meV>|@`x zGH1n06b4u!JWBziNNNIMS|@t9)*8BM=pXtJ_@XgB2y1~YMS@iN+AMzhN1Z!btN+8t zrPVUYJF8ks`u#6NK`mw=3lR`7i&?-B&Oh3kb3z7w1SnL6 z45P`OIK@%$igxdoUhebeF0b>+4ZpYkIqJP1PbDg0j*3K;Bi{S9_k^ZKGW)%x!zX() zHqY`LU#IVIbJL?;Pd-4Lf`9Su&QovXyj!#h5kQ3*w%M+1#j@d*};wVm0<6R!HUcb&aGU7 zrf#UAe!5!jwaY>ek#)iH4;qGA4>PsLWU@TpGV&p%_s@VBlTDwb#-;FpA-^lwUYE&t zba30@>5;#4*dV_=he8jX6VHSmulo5l$r4{bnYBwV-(_-`zjj&V_l@&PA8&mg%?`DH zDxR-;`}b!=o^SfRH=Eb`yfgM!O~ZUO6EpSoWHchaB{j4^h8pIhk=`-Pqi!baL|+$s z4C_yym->3R%J6-CUWg!0KZ^rqn&(na(cpLNg7=B+Htl#Kh{_6i{I@HPD-ro;f z=iV4qJ%m+N5UGq*Lgn}sT~od9OzLyJ_ll@Nu4I`Yh6PmNNLY}oDb~c=GS%D0JMLJm z1JO15tV#q?RgkLiMvZ=z;2+bh(bMpgdAhgW$tN>&o9YN{k%G)tt3mDX$ktzUWH}Y8XpxBAHiziw>7ulo%kIg}r5?MinUsR}N3ZETb#ulI zF}ChR$!a3sT4NlE);Qmf_1z@>GsGJ%ZH>1hX5*G(neA<5^UN7O<{ESTlW7RRJQr1| zN6sGTa*lS1xq~O>O3s`xozp!D9tA0u`@MUPw)^&jhOMH>N)nZ26+@ZfFr&lDG%ncq zD13fps$TSDLuxU}o13uC^JWd+N{;t3wN8f^L6+eehycPQEd0{8%;=4s=k@>4{Abh*VKg1Xhq077m%*Y!yfwoZcb1s{XOF zE_4nq@Sa}3xW^B7MCFYz76{KnEHjE|X70ff!woL9=+6`2%Ls{!mQin&q z&s-}nZFxBAT9q)CSe6Acmeu&z>SFJkr`EiZ7S$L+P!uh!u(lH@Mq`MZQzEC~B`xtb zI{$Rz)i+!og>eEv;E15z$l2^}9XIes_k^r$dyW!+qn3G>c)zc)+Y?oYP*q9hRGt$B z0*pe$wBVuCFKA0hnuX@Wi+tMK^|tHIf6%jO_;#%sA959Ad-#m^dGuB1&C6Pbml9@| zMG%!GBw@m;oUx<~LmFPvv);92|5yu}0j=H9>0t7)}2*E@&uBjhW zLQ{(+a=uj9bMLC=`K!mSs}ep#Jc^A=AV&MkUhkYXo96m;JzbSb;gU8BS)NB&K-%qE zH+USHF`SArx(C{1qap zvMR6=QEB|=-~YTH9Y0vD`!)R|@ZPaaeSjbc1Q93@TYu4GA5VKspmM%PlyYd6C}&e! zUJ*=D{967uyxzUpYVRWvEEGzZ34#^KCqXf)}IL0D7?Vu*@Wqx2O&`?ks3 zIYFYGFoFCv$P=WKt||dq*r2x{b@zmySt*dpe%F zCfZm@VG*zJi075hMr>Ji+ql}+rY1#xQYSPu`+s@K>^pzfu9)u|zhmB&?|N6`{vF;p z)5uh{qglCgGS4eiWjIdmcuKw{8qinSrK|1UWusraW&gws16Nz*D!?(I2foc(cl=yS z)Bk4+q2$ci;eCD0)@$u!qY9ub;bcK(2;f*`6hIR#a)-Bo|*64GBs1ynuMlz$u&lBzSx_i3o zygjW=_?*yeZcFaM2(Mj;*#>(=d2E)Lr*((h=)kJ?#NF2Trp8|H#Cvw$T6N#0rtJ!G z-f|D3YL+wK;h{?W4czCwwR?MB>eo8j3fBW*X!-~KE5sUZeJ^1mD?-wIqr7mQX9jIf+EWj&+_Vz2h%-! zeGgP?on(>{o&up>#h-hx+P3NKoVNOAxGPc&5rI)SAjqmnL}<1dHk==tS}c+C52u9A zMk5|mYj0@&u;Kq78}bE)ywL>L9V0)^kRNNvk2d6u!j{qZr@tZJ*O2cMBX87f^fKg) znv&}b`L2fiwT65rlf2dPh4=Hz&Yf!V@!$yZu@r}Zj4+1;$YN+4;wC|(1kGMczrwoS zE{=9M-5$H_j(5NO!n^Rj%}*a%9rdJPi6o1Ja)c^E{D;_K@1skezh}u_bHGZ>L52}{ z4j~92WD*BBJmTHD<)I~3B|3&AClf}XR5KAwARN1Q&f+CQe!DsjbR$F=6)2S9RV2qk zH~Ow+^!$Y)vvSK@pYq;5TTGZLW8Pf6I__QB>)Wi{25loKH;Qx{VVAx)x+e^x1unaX zy2`HV_|E%sm4<_Jd+8_SClO;q2?%JgqP!&G5E1H!UO{_SN&tK;^1p{wMUa`M{0c(Xds zxWDq*zTtvZSsh))0@3ct5_58TRtbKb=R_moy;d_9Dy~94UILZ z#In!J-@LXOx4iJX)Y!03gx*ESETt4mR3sFoKJoVUmd!_{UFf(I=Euz$Z@u|Fsq|Nb z`xDIqNAsF3ZGw|6hOuJj*PG4lKfG-^Re9#j_0e@t5(`AYbFv~R<<&j?;mugHbb0$N z^}-vYBUZ4y<~5iYUd4IuPv6e}<-t*z5#?S0Fxc*W-8$le3ceQK;zvipre8<5v6Us6 zV%0FeSzJr6SwWxA1Iw(A&fwmK#l|>=89_fyz0es}O`IE63^1chP;0k=CwxQ`7#5FeasU<1}BrLj@xzHE(CG zCxS$PT0|NMG&8q6(M2_%gn>@G!{d&Brl$Mms2j(g`T#_jCBaFe%U*~>jHWBJ4R+?c zWZKs$iyo)z!p)jWK9u|6!*l0lgzwZI#fA`WBiB9Hyy{JPTT_|7>a}Zht=B?dQ7a;HGAd$a1t}_E zFud%VaW{Q%ym#8gVhUP%BdQd#5mom!xZ=U{d+#yT<3NVhpcfFsVL*76Ph5{v!pS%x-q2e$;{s_vO2x+U?V0n`lI531H(8+!Cnz#Yd5FzSR`Re}5%qjsot<*p zo-DSI58wSu2d}5&#hiX(ULIA3(A>Nn(L+xh?bZC69y6=jf*&xuEdDTE0T(wjo@#05 zE65wvuwiaAR0{+IB47?MngP&|Y`fbO)#BUwDG|$Q=gZ&rK^wkhR5dD)RgPgrKmZK` zcZnAbqNKpJw+%QB_UY=Xy!zp5kmUdaA!M;FM?)7F>dGmM;HfF!+#Tn8oA}ZzZ!4n| zkrsoGP14^()nfer-wq~{W|;O#if`O6_Ji$WnV)GFNk9C5rL<%hB*!61$@!C{{}-ft zu+@)|rp0)_ydHJ+6a3wbYE&>kXN|$>a&%HY zPg0VSl%yn8B%e^lgW%m=?2$ursl$`ybZB7-J#Ni+c|e{xEC;`S`dXE;R2UhKi5^8N`CP_^*<=tt#VNy{_#n_?2${7Qw4PyE9^Wl?RLqNY2l_>x>TCTIv$6G*YU-7||%LL8}Tg|9z{4_-^P>v*tKP$NqY&luK7I{3YQr zlsOe3iDF~;%hT`F3Q2W}<*xPZ+E9Csj|}ry}y0_Fux5t^q;fAmRdQuhuQm`_KY$B zIl}j2aGN2f0af2OmrQhv%8uHPyRr!#9WnFDAcX5gIrQm+;0tv8>cWUQ4XJ66wLO+| zaK8G)izuSKiRlNQPlvFlt@|1zaaZY31#3YnHCx zEzqWm-GgAb%?}Rv;FbNhJ0$cV!9u$0(i0aNco02t!y8) zuI|I)czj9&tOyho74Rv~f>{R*wpo5t>UusoK%P;-XjAGjRM-gW+u*nRuyQ{=Qm$5- zE;4#9S#_Qh(MpAE5(-SJk_ z)5i8&uI55x*-Y0XH^slqkqX#SxMzy{Ti1){y}sy<{2i8hOj@vpR19$K-*Ex>KIFYO zLPsE+CN#xCvTap=DcGT{Fdz^bDLZ3P%F=rBF0>WxSMDvz>EzT6;^gSl`XBSOsx&b1vH?KAY! zy2wjSjI2#iNdksg;X7?nRm&oIO?Y)6xgFP>GV4omUx&KuL!Zq8;5uwe6;>L>V99#K z7<3}#q~RQs!=BNtRrAuucGseYjQZ>#B#9&p*5F6g?I zEStq>QII7W;!2unXs-L5xS9NH2rVxt%zdnx8wmC!*f_-RAX@+8Z@4punUJm~#OQAV zf=Wl0G}9klVux$w**XNcBGuA~_S)+0f?HmYKaP37NFP68Yb-}a0QWbMDE{nK#&PnD_BDH>c~B+d_p|-`qV!@e z>Jg8D8Ds2E08*=Z<=kW+>h6*UkP06FAShzuJ#-dThOPcRZZuMzb+|qhykbV;D1Il0 zpw#2MqXAA9hS}(+nBnVbHgQ2ro}@zHo9wu4-Ji4ie)NtbKtCl|;hvqbE_1zKcpNrF z?QyV^i-L*AfyEtL5uV}utF%O~qWY`SJC5(rNT!a&DF@%Lzbq7;$@3>E%~bAc=obX9 zP=Qj56rR}7O881-6n8kd9ckU(C~CaAHq6VpSkLF{?!%KlgG&sLy8zWS4+#3MURTAX z*}{om)5D=r6`@A)4|xW6uP-`|K1i$A&LpUnAvJ!Nbq>g6_NkE2b?fk29F{hmjiJe~ zPc4x*c|H~Cvi3J+7{deb|D3NZRyDVJwUwLdI7Ek!wd_Qg(}7%5Jm%^K{y|AcK>&>B zsvJk#Dc921S_-e~?>+=iaSS0Dkltb8Bq4;sNVT^zZ`#BNFW)=)OUA^Kh!|5E#$n^^ zw(?}y@QCn#yFQ1Yx?C)}lEhg|i$E>ETEj}@^Q#faeN$>-Gv{~JrH-|)pxko1UYM{y z_f^4$hLN0}0vlk?9O@_0?iI(LCF4@>sJ|NJ^5mPP8_i+fas#b~SSESsa-oCg(Q06; z2?rVSz^sNuUanVqr>vdSACNyAE}FeXJak#9fre}B;JvT1kJmn#&?mC=55Y0xf?&rA z5I9X~rQaxNZVvI0gs6P^>APw22{UW%Rw0XVlv*#q~p*(r1 zfM$?&gKKxrcnz5_VrRS$HWM)p-VkDv-ggVwP!+2C)>=J9ZF*3#zX~?ILQ%q6_mvB3 z=UckeMk^`1`RbV7g`XqKuCKhM39RCtFj`tL2S7@-^#@%e*y}ExCQY znMD~zDu{&g(1&x_?L2)@Xme7hV5#?uw-5Nf|HrV&V4c7I0h>@ORofI53#%m>ra$0m z+-+o4=j3tb1jwOJ9ADjECf7m9zLBV!C|ER11($5$f;R`MDOrM+Gl`uKUoRHx-Fk5R zSl;LPaBBc%#CS1Ja4jF}8#yRG;e2jwUT3YA0?8y<_pp)~c zQ|eV^6J)tGef@6KH2&~##`&@m@3VaUVqZIo?H<%*AvV1zu$8wz-CNHV+iqJwxAWL~ zYZ}XTi7T{p^gaYyEM;Q>mYQdP6%_|FKxoN5qvB=H(XhqGNyxgwS&KZ} zr>w^iI6ixYW@6;mi^4aLb`h&i&*Rtb&~`zP)>;x^8DFj`9Y4mXlD+W%?kr8MiH-{m8z!o^*#S!TEMhU&DjHm?4)sy3;bm>J z!|&2n5MOPF`XgRxWypqB6Xo%Hy_2Uj0Zn8O_t#rS;UJX)^M$wn^8w}*4bc59IZ=2^=T5M+kC@9KUqd*-9ZUcp9yH;bB44J7D zr3%?M1Q^}QKr~d`fB7k*UG6@1z3UMBSZfn_Z9ZhGWO%7 z7|T95XL?Yv9=%W)A`UXBlu5wP;Ib#MYZlaXW0>-muKFWq-dp@gPOnk&Kn~UbO|)}d zniel4RonXhh2MBuVzD(H>%D7Vtea{4p)a;ZZElQNs@3wT4~9T3T-P&0qbXpRRks4K3t=}L z?P)R?^pS9e9^fP+PH1uGmsU#mHxL-5uc|-~I^HIJ581g9UR-JbEaJP>R*5S%idWrd z^iDtC@P<0YKSQJH{qef!;%p)eb^}VccLO$SZ^Ge9!J8#ml@aPFO?u_R+j>kG+#<07 zKt#idwYOVQC&=JRXu|Y2p-dM_mW4{542~vc9ID_ajO}&S@#D-Z_U4$MlL~b=n`LB8fKpM}#*_N6>%FbRcR<|+iCE^8)kC6<_8CH+?i*LTU7{vfdbwUd z*9EH=;&h9DB}b`_i_u~v8b>B|tIBeN7g0t87HtFcdp5K9F6UGTW*o?a&r# zU<%k)X7%G?;QrBrXs&XBY+5UIzkC2517ssk$96|lTcWZ_G4S+Z*0mWqbL(dK4Y*FjlS5pWjbeQ92 zkwL{-u=U~2NVaf7#OK;5@VR~{E=2u6U`qs6d-AQK?nN?RldU{6h%#ASB1E&hz`y|u z&b0Yg_P1husnUZ}yRBPDSH6XXEKLUe;*bZ&lQ+cRdh`QR$?wpurC;eI<3t>^KBD!0 zUk3n0K$T|nGQC7qFj+!)dWwHt8uqR07v=~ZZK#Cg3di|5<(<5MhMk3_^Z1znu;^{7 z>iq+&OCFM(2%fe=I)ENMOrz{62dRY3I%{z(K}?&}xOP}wvF**?hT#ia>*cSZc8Uay z%%ZsP+?9?Qmt2BZ6Sa9{hf|&o>6Ah{?P>Va1=)6I%e)kL@c~L^BA7mL-@@(tGt1Sz z8#wU1TL#J#lO(cD>%4ciJD%RO2>cwkk~ubhal|Xx`hoY05nY3=hP3`e^{U=r(TXHE zaG|+raQf!m{AtXj%_nyh(j1Hes7rzo<54rz2nU09@qX#&P&u@zE=0h{lG_iQWZ4ff zL?S<$@D;L}EsRAfaAv36Jh?8rN<-U?D%O|m+Ek>}L&t>zH$$%te_fZNQ}~qblGsuu zOYPYg4G}>M;1}oY(1twu9X+{3(mv($vPhie)B>QZ!5uG79Pu!=dh}jV2-ySXA>jk6 zodrFEjHzic%M%@FNfpiyX>+z5e-3RC?>q;gbdfK7`Ttpm+5>}n(`$##E{D!~o_^t}(4@&m7}sz{xVHNb3v zl>}_RL0CDoDLABNFM5y3n%l!tUe*FV$OSg!%IAt`?PI*kxxg(B%p~5wo*In6{+rJg ze(lLj6H_;iKz2Z-Q>tn02&*A+b&3@S?mV$KF0rmNO=b#OwU3gMEh>Bl9t~R)WK|_C zN5w&7jb_p&;j97&ve0tj?Bj_>9(*WnU%pp`TTYQg^CFXyYqvlFm&pO_uzF*A=A&!7 z$NJ11u~|qCZSal->aVxGS*FDaJ>{m&?riYS3Ad+HF0C3|10pAQ$Pf&YSnlM#paIC4 zVh!J?1-uo3x4)Y+Vi`2_vGJmSfl@<9!SXcubZ6io+gfM)Q8oT(^PNOEw+zNjApemU zm3j45vd>}4DdJcIff+Qok-z!abmVss9}mWF75#(jWKT@()Yl3tke8gG$wLXdk7tA{ zU|u&Mi5rR;98*^3UE8lc#~V2QFre+pp0~F{uDgB}<^TrQc_GIJCQ~QvY1tb0#;E3C zneo2pm#JTOjv1F{oyr|7{Hu`q$%jJ9VI8#$0O80 zkPrPYJlei{6mA}M>NuDsVv>M>#Ke`ek)IZ`tBCGnMTmY7H1^p>ZT>g@eo*ncE4-&9 z@%3Xo`C7TWI*QU{^Gzod0Gv%ju?>6VBI6aHowU-ozn6^Dt^N{f=Jg8wDlZne<`Axv zexiSU^2aSZ3)7YCwp`df9y|eJAq)eJJt{i{#ZDCjymySfnutN)PwV}|OmE`R#}>yy z1hK|yJdu;`+nCgLFoD&66Z_M|WFfoY=2{r*4+SeC-JOo!l@`L%vTu1ZV$A!Mid=BJ z&eH9eN{kKYU@F9H4$%ROl^zl{5X_`?Kr_1i6F*z$X3$unDW(T-qD?F14ub|2SCt#5 ze|klKUl^04Zm})&+Jl{Q<+q$^8bGj(8-@$vp@!OLlof;6UL>mG9ToD~k=$9Q>YiWJ zhNloodRYvpyQ!C^fQLgM>F`^)eR$N~NWxH`KUBKCypJdIUBs)lEeYwp zg|$i}ew7f0j5_z;ujRh(9&LXa0<)%@&yn;vZ8G!{F9j77ebH^!XL2)3WE&z^i^R_% zTXydG^yuzEbAbZ2v=*^|gUkH>Pb56gC8Z0Y&1$9$tRl9#2;ek*cj-_SlFY4oz=b0W z!t0_U)84wvw>is@Eosg}rx=BKiHM$|dz2Y*oa& zUc$(5gqW5(?-E1jQXM9j?9DEYTOyPo zu|_E-)@2joT3&NT)CXC zU(7B{$wkb5c>0_MX9uc3#lClbcEoJwrj)e!{k(QtG!dGHgKnZEE)*w{iZskVJ}Ua; zx8}ZjxS5|a{&=5a;o*uhskE>3+`#@7ZPpF6%KJc#^eh}!C*C0rX~n@>w_o#1#x2pR ztOD6~)EHl6A@!*;G4c$bSobPL+peL=b>w6 zWoDrZAayHPUNN~>|JJQ8d6}S(_3weFAA<*Tiu(zeS=t0K5(@0qsfxPyBTiR^8GOeG zacBmve!#h6rD@zhDyAGew!hB75h0B=$**167O}XYFY&W{_FnPtr7ISBJlo3u)Q?23 zsITl%4iGlf?_PK^c(d1D*X+85p6&`s?*s=a%#}A=3h+nFqO;;4K!EehhM^YkcC(ZQ zdCt!>1U-1w$a-9*S1Hw)Lu&>H{F0D%ST=35SnbFJjih;j-1Bh4IRk#93ky0vP~1%Y z+Hy2A_wsRm?M1&)>$?~);sn#o1tWte6N%)stqxoTDKji`tl82<&IZ!ugY*@~WRR@X z$Gyz%s22L(KD>Ojd^d1(QMa(r>_QGq;oZq1p!{Fir{C#%wI5Wws?ZLt*d-Zej$CIa zG9E5kEHgn0jr`V`h{c*7uXk*6z=A199D*?99|r^|-=~GR$=a2y33Y3yQMT3M&&`Fow z=uvSi9C~A5ZYzX54mSmgfoig08J?`f%D+lQY0D=FuH}0X3No@>$3pD;r@09C{TSk2 z5Yk20=rqcWV2YXhCvE?o9MTr9nY(Z5Kj)!aWSHSJsJE`)*Wio-^$GU}2JM2AFCe#g zAdv@%g;~7%Q8!dMMe(cBreJBnAav%g08r9WrM`_ZdS#niRI{#A9v&#E-?fb$JzdUM ztU}2Cw*>XkQO4e_qb1b)hHb)QZl3j}$g3xE#saWNWD^Zy0{ad{W;4xKyA-?fMQ@5T zYE?n(Nzan7zDF}^PXaE{Wznzz6J(hvGRJa@Mzl88k!HE3A@$5{sinoI!^hdCo1)x( ztd$|h@!3x~zYq7LF3S|1!Vk)4l^UYO>%d?%n^}%H)*ugZ2k-aYYmUz;wl&~ubpQ@Xvq|qsIKx^}Hz?ylkVyYL~{yLsg?Ii@7MHH;Np2GiFV$#BE5N^@QYPkrlt z2+A9$sxu=I@|J42VoIe4al53NQ7lB8q8!;Zh zH>N>^-K>j-<=hv~N-Q0Gc=Bts9*-*P7Pk#8C3UBz4dsR#+KTD*Rjm3wG1PHi@L^~z z9^5XRCv6hqgi6evvbJ-y(82bN!fk;0gEn?r{Q-OZ+oxXuu}0JH?q1TlY~ z+o?Meo4iN%Pr=2jJ4Q13j{C0m1=e}L#*NPkMoTQh0>ynS7>r=Bpuuk_h`TjkZ$iAQ zJf8U+(B!n?ifaL%9RdN22D*3Q4a_JnzC9Vbb-yS)<F;kl0QHkiacs$v|aaWrG+GEnJ#*MYkpfNq3>4HvjJuBR;2w zrG11xj!U{LtEOC4HQGW*+#S(W9$GrTm4Yk~jp}T3Oht5dJYZV% zVT++il2HpPM33eb1OUyxv>`PmLhVvYr-iiO-IvTLdKlya}DWJEYQ}iXr7foEzc^?1{7d#qCa_!^FuUPSQj83 zBqqL(o7Cnxb9KbkWShRae7jYgz=D6K|Jb+5Cl7-cs<1N~S6fN#R8Gr=PWNy4drO%X zZSqL4%H_c;!uOWd%?IEyszCmL7;R}3ZNx5>f-CR(m#XN}WycYTvZq*{>>$MR-jEGq ztdP@lsU;^vO{ONJGsXjQA&yyEICFOJjh!f-6Lrjy9$F+Leq_OOkeMnpgcR=-wZGqm zpk#i-=ZwlHG|mgD4P=qh$ZQ>*x=`4-vFv{M_G^Ju+LT6&0@_%Wwma}a98{8=QteZZ z!&r)WDf?5}FwA7M4vZO82EW?7V_y~7yQu`?m_D_ zAcKXyF$|Nk6oLL#H9sQp>y~NChV8IuXeM5>tQa*>911tv?=yxWMMBg}?jC)aAnifk zZwUFRet`=Bx8?lh#f{c}Z=3UTEBF!U$sS4cS0)+jmqf@2H~92W$GaQ9Q{k3>iI#+r z#fkfAx`hfXrZ@>Kx>S%lFrAy8$avkkR}M5jF$40uJiL`_x}d?j%YL!gyr^05+QSEF zW2*jw6gLx(8Ll50Il!8`d~9jIjnEzAluYpeXF`wZk1MU@Z%hOE9W<174{sf32zHnW zl;@bzx8{z^aXwmQmXfrOkHWEa->&MIyiK8`ck z7?o=J>*-2pVDsH6qZA=IqJ9)oA~8ukU}WODrF~~7v_kN^9NwSKag2Ccja@~}B7Z>S zlHYBc;Ub)N{?-j732H8h46J$PRT|v)lZP6iHQ>`-RSk2_RU7?29C%RRfSDUgK2QFz zU^en(LA`F1%F@Q!lP%+ggcuN3rla@%{Yc_u1 z-}0$yZZu@<{En&3u_t4!SR!;GkStbQ!UR)39F$<(+*gd*J8=l%x@@UIq(Nbvb%;ITKc}+%bNPs9M zqk-SAX(qQw>{2n#7KnW|pIq-Yo5Z`bjWkdL)0h@UBHe}FYv$m94c+{bho#;xy{@KK zyI4-!;KIK|MlgQ|r}v}7g3p7bCp$M?tUd^(zX^O7`!vzGe_$IyV*$hd7%gY zE&UOk?_HOe2=oYXBeZa}!Le_lyHB)!pf}SQL0yxY{91S;98qQ?>AWtP_age+HK|fn zUhkDroji4?4`F68527$u^4!L|mq#^oY_*vOPo3bMOQ9WopA9wO(VHWl4;?0R&@e#} zple3G>+f$ABH7I)I-l`O?%)?lEX!Rq5zhud8Q{B_h0$V-a+A489w1@%pWJ9*L zr@69Z#XG^jKo2Mi6Y@$aXkVQN3duwXN`DResb~EhK6=|D2BjaZL!sa095fSnMva8Q z3gHVwRA{4^ z>hk#l+3$9cLs&mqHGBLhONVE2xMas(H$bB}#afHc8}_vJHZGg!K-Yml5DFBy;kcC{ zQE2NwgVWz@Suy^MM;0lm6~O^Zf&KdS*iw9%cCorKYv@MN-Qg4MXQ67ZJimY3w$J4O zO(D=!{Rf<&7`=Zhn^6ZqH?lKmVFlD1*xUuJv-EfLa{ry}P*>@VfLR3J@x1%N;w1^J#h9~W;m zw67p!YnhQZ;#kD0r{--pWN56ai z+>OME++R^p_kr{=#Yeu1lCPaZrrjzYEz8MXc?lolN1m5w<|MpN_3O&?(f!qFp^$y0 z)Xjrr$}|Y&h%9z1srP;f=lP8Z|5mosm>B4aEs;3#enx1H{}$vE z;=P3&e`Zf#BNteIp$g=FE6YET85@*PS5xew)&7s!E=gaw?st=*aZ1(1H2Yj*u#OPy*>B0;DD^l+v!!zb1{nfauu1BlY4_ zVtVGn?|;4N$){ciOIFuD^)GQ|V$X=NtdXc9njV`$Eu-pAY#~xy5h79fU_Z^U#;<|j zO1w{fK8G6-u&TKS>j$@PVz5rzMqimLBdcros3lX4O>&Kj`@zO^-CXHQ4cXc4tY%R@ zi~&xr4*Y9+*MqGSId$*->XSkn<2{^EUv)y1^ch@U^6!t93!azL_z- z@#jAUBFY`BuG9oIL)fa`75Nk@Z5Qf(_BziehUjcty@z5z7LPB@XrwxHmBC#U+YsZX zVKD3n42-`XX)&P2ES!fYfjZVzy|Lxuo9`N(pWUb*V|%-5Zz6j9QS0+URavs`r(M>o z&*J?@>pCth8Tu5N+IP$Kp|+0q$A7V%bsh=6u*vln>L&OI4jf0zo95+2^v_bJVmZ^ow05lbY+npy1 zKHz8M&Q?%2@eKP111^3me4n_wJLzbPtODl9&mF@;4t#!X)9&rE_s59V1L z23Jq1JTA;=?qJ}3so()%{YKVE=emHA=Ee~T@6()RADgucZ9K^xI~>5s#y%f*J2PpnnAXWp-c!acv*>KTY)j0VkNvPli`>LCREv7>?AD-4oJex8qZhPZ&=`)MV z>F_6s!9czCN z#wV}{Wpe&?uip;&`25;ap`iJBW2?XQB62xOZfS24q+l(cMLo2gvkiwpE{Nr@0w3FYqvT9kAoniK|LUY$*23JDD zK&$h9ai3PxxZEqyo*#QadA0ytkg&iW-3J&!%8-n^_ueho>MD2ZidYt}=zv-bgLTs` z*dF-rZX!T!j!RQ?E;~s~rQvC|nn6ap1-Yt(#Ym}hDs9Hcag$irMty?eZ^o@(L_Lz% zUq|h33Q3@H)Qi^b1>0wt=$-8Fft1^6oCMMBpJ3^q!oJ*R`k?8tC4CRklv$azXGQ#N z=;Q+r5(kJKuz7X~C(de@V{c3KZ$3P~f#TTJ{lU4@qEjzVI&6loXjLchb#~P=FKzQX;oT^ow?{c`XKRoG_~OTb2AG;*c_a-4 zrkItMHTD&%7bU3>i7zWj=&j_Sl#Qu@9&1!_`2cuusOu4TUpIKW$yZZb_kv3QSSz~| z;IYd*PhfmGM2~csF?tx=-|rTz?+bWa_X}M%GPqGuG>W!=z!m5}R)GT*h3qeWLpE9r zst^~RZ{7L|+QAhIGHr}E5U3_FsN)swxPwv4rhc8R5$& zEmlav9QUG~DJ4`ep29Li78Eq2m+S4DI$jnw#g7IBB8{xIRh@$jI)j)a&F}qvxtm0% z)KMoFoV*gIg+qLH3lKHl&XtQ{ZHE!CAxCJ#%yC%U;DO8%;v2&ev#YTZjQLsyoA6F= zkofshV`yk7suIbXN#TA1i?ICmexy}hT~#l?6A*axz+lOf8=@Wg2m=KeJB;s9k2Fr1 zttfemhiPlfwyR0s%GK0dLyFZ+nhXpv3G*W~5^xKRDnH$sHyW0nggN$l@WKaDslB6~ znAq$5=G-PYB2u7u&Gfxw74k${2~HXL>#8S1$$HR##Ff{l<}nIY?0_ZeUsn=JSGiqi zo@ujqf5RFe3Bd;IALy=`hg(+8_~gB+D+LBdjnd)BrmEKgoPP3Ne{y|mwi2YhxOyb4 z#IU&kCvYc3`+Idfavnbl#vEDvrzC%OiNePkkeMU@)1mQ0jWj!)LVM00>o>+l!pqA$Dw)2c@PuxyvUs(k8 z-Hl(n<93LOxmi~>wj4A{+JI&}rtDwgi30pd-<_~iD#jaB>Qv|`YC1`w8|Pkt8^G3Z zBoupvmbrOFUC7&u#7gK(&Lk6|EH9_NX(@Kyu7*)XskX&aaNrfe#0q!nq$tzr>^-si zR-s5v`3ka5nG-8_gzhqD6ly}6_r8?#T?r3CbNO3fx*)-E&OQzXebXt5GZ~heY?Pq& z>$Wb+Qbz3z%b)Lb&6Aj3^5sDy@mxGt(O(@`e*5IyDoHXoYayb)J~~y2o&1)FA-&Ki zo0b>z6o}QfwEC{bA~lHR&l#HI=_qY?-z9+=Pdy^67LN)VFoPgG0=BoRJ4OY-#w}91 zT?i+8C>ffNp|W`0QIU7#Ja>97bbm~O!SHT+zxy+RY)mJWQvjM2sZyQ4;DXpUmaZZO zFfVMj?GjwMk1mc|`dRx~GQX&86O84Bm!9}!{OpYtL0XeuDIw04PAWs?g8ILm~2HJKJ5m1+b@Sj?WF(cksTJ1!S8|L39-H)HxaXI*omuRg~esc!K2i?g9boe|)nqeB^R#MhT zBa?>vIiFsqVqgf$)Z2I(3}hWK%BIa6xP?f(+Ik%d1ZIiREk)$j(N(}O6=hDPM5tkF z@W1tI;?thMfVe{8oZ8|@)DVowNwodviV%yl+4OC`5b!VT*##rE9qY$WS2%*K6K|$B zxQ$a2-JorA`a>`%M7rg9?@<0Q&s*J?opg%@IX2tE>a8;YE~B~G%Y`_9%CINtnVjyf zfaJ=$ca{)9_lmkv=aYU>!b~@3t^G%&eoMyky7v-ToIk`6L}PTz9K;itl)T0tXwJd& zH(khXb^&cS{sOwoL&-%EYfnkqa*ep!2vjEBF&pj)p(bWT`<*j?AiFw4nn%;gRj7T%C`c~DJ|Ajt zo=wZ>m`VlRMq$*?jQ9li+HDoIqOE&x%*S`GNLSY};rt)h1=|b^iFfnZi8VX-Z4`oD z|E9lMQgTyh<)uTBbvsSJkV1Ts8gHoM)) zYzS`wRxjo3`k_o+M;3I9sISxQ%+IVPqV)u$Mu{psa$+V`4i6zcg$8z&WM^rEDdRDH z-pr|t3jK%e1PI|UNd88o@f4@?OPg|w^(yT-C_dd$q?dfzJi{k}4mR=>eu`;}H`&Qh z`xrZvz6Nn6SPDhJ9`QVyzvh|NeZu3}=$Z1;Eaj3BSurLYJyhcNZ=9>{yX(u1Trc+s zC%A;|7qN($?QE*20$MdzW3X$2P=83|BYOeIq1-*D#I|mT8}CL9D;ZMi3U~|Y69G#8 zZslCvpc1bM7D|tp16VYYF^FHw%>3iFX)}@1O=14;97&UY+_^YIT=}iViBLYMBU%JI!J9oJGh`EI8%F3@~! zg#YOWvR|k9G*WSgfXK6Y7^f=f{ z37vqzN!0^exq6$h06Fv{ihJQx1RU-TK>*nrtR&Zz?}58#zdv>+Rvg3vzV_zjVT?mg z3C}t?ObGY7c_ds=r3%C@q<*8WQw^iML?dG`4sEIkzpQxMG)>8+dX`_dXo@UK5M3qt;?ZgWM zVP6tHoM-gwQSLTbv@B;z}paV`l2cQW;HL9j|Ya}k+97s33>F>fJ;x|H4LX`)6y z+Yc~3pzFl@TF~`Q_=(DtQxGZrlvDF2Bg3;|o|vly-+YM%0eHG^uKAFD$~V6oiBn+_ z5(p#B7`ncG>cqO&a1W3CM6tKdB~l?e^YW(3Y1CMNhRQ7j$=&?>9wGU_^Xzv#VG@(P zFT30#amoCGe9mrsjuv}i3rAF@Alf|g=XY|O#)VyYm#)2s65>X2AvjH$G7_gSLyu2? z57Dioay1&{g{p$~=<;|Cp;m|#rq8ZBDy|dCsb~#Wa!5TzQaZS>i6+jhh2K6&QFsRg z;kUFHGLo|xt&x5O@owJpw$Y|INn&B9s>zY9RU5WQa$mU@pajofu(0}!nw{J78)ak( z2Oi!#KRE(JNb{}PA6jjVPy zlNs@EpS`+IJLV(N+-NjaDMqiQRWWxnA6HWE_!$3{+P1Zp0gj7=dz+FOy9&Ok6r+~L zF^7>+Cv(ZDN0>@(yJUTkyHj{Wx1OH}p8u-r{<4SKC#Q>IQ0D-~ zl*n0Q7dm(Ph1mUjk356*Y3+B(%uVqdFFJU?)_ljPnkcVq21NHH9zHI5HY8Pu+VavM z=78}r)7YMSjX%JfS2r)@w2&(U8VK|PRQg)OyZ|PIA)4i7o=s8NkTWqw5$OT1!`;yVtd4h>cKF4J}@VBK~&0g7Aw7lIT!-E9o3y6a+r}>ror^ z_I?lM+$mq56|hwQf#|TJK}20y%Gya=ua#NNfDocnfs3r#X0V|Bog{Ra_*0A}DMBL* z?2F8rg6#Qo{TGzJy|^;raw%ip}FiF zYp0(?uR`_4^e6;v5&FwdSft(+T$^c-(x^Rg4X(~!>`l$ZAqDA54)lZ?fQjKaYTW%0Bn(i+y(bT?;i+#6w!ErK$DZTFvbBX@EEyYTUS}jCzb8X@SvI+ai=_jW);jWtJz1m}!s$b4x*m zgiSG-hnnX2(f>@%8uscH0fQj##LxW6mt)%ObS2Oj$0t)TTu>gM1Qp^SjV|GOo;FDp zs_(lNRqIX!M;{0l zi`xVDD}U9e!c=AZCPc-~W|gb_cMdjYP@Ifva4!7Jr9C`s#}y$Ps5yD(A|Z-;ke1vT zp6(_})MB^fYO!a!K)(dZ`$t3=jWd~H-3VBpgCyEtmclyjEzGeF|Ix1U`}gO_kXmDifJ5dewpd({Vm$JV#GyaMS-ZO}5lQI9 zXh?~g1>#u3`L=WnN8HeBU1zoWPt{lo@#Z3DdrgOoM80UU0T>3e=?C-l{u&(gU)}-O zsd0x&Sh)RVD8@rU`2DT-8~ZgbH&&sQ@e5usVSYmv1sl&O$qB2*T?Rfu$&{+igLzb8Yh@lIMve z{@5%DxJ^*Vm#g7!z)PM5?t?2fV-SDs`};p70sIs5N!PE~_K`Y86&2Qj!;z_fxW`VO znPQm|!clVez|V;6?4t_mf4Da-+4R_Ssu8smGJhZRXJfi!#hzKOUy@c<_{`Gk=V*;I z>B-1o;W>xOyNB`8hmsqSp<~$1lW+IE-$mM6rD=xtfTm3U8sLc z+)pnFWq+i82P@Cl=n?b(ZJoTi;h5r!#?y-z4h|@Vq7acJQwx`yEWTaN6M6JCBFbV8 zw8?Nfl3H*{T3<(Cx8ogB@uQ5B9e$hfh9vX19_Gd zTrhwB+t6vdyu_$!=`c+ZSh_?d%*K|o-Rf{U3rrRaA!Cb(M4U+Bl1m(Y^G#r6+?8c$ zx`(CBzppJ)7pH>cK6^3a5~>Qtv$iyoJh@#ir534FEO)51`AgZlAIu>Hb?v1JVwg;2 z`20ZqLDD+cbWdQ(afdF?3qQt3h-fU}oA(}uaDaksdZa;D~{NZc6*aF^J zsJwmL5#6szNkg%TPXpH6vxi{)6+7`RMR?ecX_{9JRV9IZm1G*V4#5h6G!7? zxROokD^#Vmq_8#tpH9yZH!Tzb3$>Bgk0`%Q^Y~l2=C3M*VHXglber2j?xS;lAZY_S zmTE9*K*ArCw<-VX$nuuAMjvBm80|MsF`7tslE}_=(CDd~#iTA)iP8s$qVrv3i_T3Q zQRnm$bpk;D7%~v7zHLy4mn61bJe0Net)TL#T1dHCMvh4O|50lH2Uz>xC6)+fh?Y47 z2Jy#z%V(x92O+q7InEC-lB9ldCDO6!mMiy<_%jq>T6ModRk+eF-rx6hoT-yW*3|Tk zC;@ZnXa)g{R++4)gWN&hQ8}9P1QzIWm=O1qnIQyn(u8;IVa~x@uiU}&c>G0Wj2!)u zeE6G}4|3-G6jQCoZINDmnLwMLbv0KkyCjEj4T?Z`KbgCiasj0R>Y{cAG zA)wRW^|2#c@7uRXyD71CyOeZ$NP1=XWL$bQommk4&`W2C+B)SE$0cV6g3#NG@5I>x zR~}m7)ESmAL;~fw1A)ZjmTTXlt&+mrf)Sim<(mHR$C55XvF>p$&B%)-)GISxq4r1o z+(X_E6_wDzsSR$O#cyT;Pw6O|7V6d|#Z&u7EGtuQROE`41Efm%!ew&Nfe zPh6c-d|EpWZWB6LW(HxWGSd3l<%n=$=$Nv zp1N0Uzgy}wmoxuzpcf&JD16pq^xBlp!6Rl`v6W9L5O!K2oKas{&YEen{oP`o@AR3+ zES>j9luRUy)WHSA?JzcnsA`EDiZGWUF;Xy=RP1k@@k_j*o6zqw_VZ~kFQ&H$+f$+^ z)vESUj|n$Ldb2TBwc37v(;T+B>5wsw{Qm;IKtjK6M>Dtkf2Zrdb>TW~IVT6xBNR=s zGy@o}#Qt=6fz4&f!vk?)wypoOcYb+v!nw4y<=o1NmGoVt|69lSU1B-gtB1<=eUezg z<6Tknmsr8`o)~5M(LPVCr184a1DD0Y`1B9-h1uHO>&B`d+FLdZL6YQ1iUa#RmdFZ# z5@ZyJxXPnLu5OCsict_UFkC~M!mg-4cGXZ%ZIYNcpLdlrtNq>Wi-sq4U2ljJ5QhLo zND2}KTJN*bY(UH#ug7fn6i`EcrYNkpVi{AcD6_uES$c294GmI#O^K#~?oTpbdU@ZD ziw+JGjShMWF@U8hg5rml*q&SM(=&ay!Pw~&X4|mjDzQ!PjZn)s_?k(ITI4g1z*K|x zA`s>6^pu#|>Usvx6H`Ke-_8{Je?9D1=WD#~bV@bw5j05mo`%91U8?_1^B`VFSFau_ z3$=Gq(~i3KYwdi{9KK!S4ZiD|9QuDP9}n1Fw&Q7_`{(yt=cHvuLjq$K$OKk=su@%y z64+eM_Lj;nx_1wn|Iu|fX^LD#5PM{?SzJ6MIlX3(SzWR7%tkcgAos^a zmoDp98i!bC03caNLBt@Eq)7eM<<=G@&F)q;bQOc#ZFVo1yltf>Ak(5-`(Hb8fB_t! z7={-uHrW?=lxy-od%{b*(>qp>{6rJ9X+*3(lA1oS$H+3)(^!{3svC`1+pCAB6}-gD z8!1i0tR2c(jutYkc?d$r6!%INhdBJJppy<^0p0%^KA2oV^^Gm(_w{x7D^`4!RL*lJ z4si$vk=A1=K{(j`!*w4m|9Y-*1aHI;G|3QzFT^&-kg@8r4R&|$^h18ar)fH_wph3- z@_=Qdm+s%>J~^iPpr^NL$~ALMAvuZ?H8RLC5}+8t=YC9?FCO{ehAw8kP;+LKyujRq z@GQR3d!^$%#QpVqNnIbU86t#K>BTWelN^m`j0A!LANV}}j>I!u(Jq-0?l{>Ric<_E1%Vvb3c_jvUb1gTIz5>D0Z8s1WJ}!21)`m3_bkK4fjt;yXGIpS*1fa-u+&yVS~rt zqbdD{h-&Qb#884XEkJ}Bmc+}mCJ+Ae@P{c^i^tA%(7Op0i6FG)uI1J>VnvNQz z!AnSSk0>}-rN&Da#So!(A7BMqA}L59fi2e4*)!;PyE83jRo7%2-wcZ`HJL)^+v%?T z^yq4_nkw$;({r9QorvZ#jgg?tNd!%BG^M{xJFhFhU0Q6bPXE4^H+rs@WSxt$p7RFn zEnO)&?k)pf-P!r6mb#Kd#JA-Yq(GKK0!=9Fw|&eD2Y=Kosi8s5zv}WzgqHql@LjBM zS2^D|)<~P|{&GvLg7xFu1Y?Mc0yl^NM3AK^mUm!ZnA_okZHg}za;&C>lij~O_7!0| z-ciR#IVE0IeKZUqHNqz3J9F(Wy*lLWy1M5@Xp8Yka9O3|E0Lwv{ z(%*H(ikS1<4>vuwNV+Gydte}NzKzOqYz+7KQ{4+b_;%B#_8QL54W3cO#uE@Cg%(IC zig>`fne~!hW|ON{(CK3|##7yYG(3CHJFCNXngRrpDT#sv5rcW?GTk1`ae zNCFlrGE!s?HF_fZtLH|M*9V^ zcRT8u(l0T6kYKvi-DUnnIE1G zr}R$BgaTQphy+z>O7C;sL)Z`A9q@KmFpd|M@>sU}I7?@pw%_yRQze_{p6_|~K)VO( z1yi_AmypxBfZ-&70V&H!CKe2@vaxK0^g?(0+$XoJY@jW)a+lre-ll2xx3H!u*12>8fk z0#jn8ERMU}-whhOr%&hRA>>jQTfvGf0SSVj1*W7Gr^hWh+F6VgAr2WkhB_>E zhs9;V&YJgs)0TeQn_5>Br0N(84c8oqz)NZWA4sYkq!&FKzs6l1U9;`>9Zf^9xR?ik zB1n?v7?uSr%TT^+7b*9F2JQO!mP*wMUb<$}TKDP26FRnB|1 z_8}sUVnhX1oNu~y?!{;OymkJai`U?ZA&w`GgP2h`S(Z7a_vd@}{y6lFG^vbLH?Lrn zJ~c+Y;O_sBI}Qzr9WuaXkt98oj(&(0$+g$zKaPM^6QX>6I4QdCDhdu=?sooBpDGW# zxnA=NHct(qf#OFQ%9uoeBq%J1$o}IJ|6N~pS>y)y-QCV^d}>r$Fmm>pwUQk5`@&@t z!Pd=*N#*EnpgHTKZgP+Hyz+f`zaap#3QYqRidd=nvE@a7zaa@_TwfAtofq=@m3i8KlAV&1U!J zPQ#x`nW~)>4MVauSP@uG;Rq3v3@?eqH}Cg;`H8u2Ty#s3sS;jI)ZL;HyKY^*nxe?< z>blHV*M_!4dM_zSw^~Y4LN)Pww^!&9)5_7(w*LU0@!ueu-CeqGJu&kJ&86RJLt>vM zD3T!|4fz31yKRtN5?pqNPu0_6%js*AoAmBr%Cycm*SJg&Yw6P5;-0W-^t_o*Ye(EN zAp{~tSiu}kP*{-|Uh-Y-j40{ZjC{xU&t~pprzX{Cp(=rDHY`7@b!Z#DyNZdns{{N< z1$QZ@iYX3$5NUk1^K_OvAJcWr)+Y72(bfCUI?l94e8?{gh(z1!w@I`roqzsA5sY0i z_FL=UZRJFbvBLZ^ewR?r`8C?Nks!UC&m$3XjmoJjyiS+bWFd!j&mWIK&=;v`izvrE zQ%#M`(;LK5Or^qq{vrI<`7+0ER|}MtOuO+Cots+wx?iQ|N1QGyfvhWJ;3`UFrc{M+b)e;ZVZaX)EkwSV{=sceYT zL2-!Xd|7pg>rbvAI^b&AuU9M7HF$najPy=rt&_MsD^AZ}3D77$1o3m?671We2=6N~ z#{4MnIUhg2{~3PiYJu5p;&X2D3#D_l;^|2EU8a}%J3Td|$ zr=+bHEw8%xNh;g6C3WX8uVbTrK)NUvnLoFoV*Ne{M4gz?eq@sxL-*IeR#r}u%BQpR~T0=ty_0S`=+wk&uH(NQ%qMTM8fylx?NJq z?a0vOUn=MLrbU>)ikh!lWnBM8`>Cv<86xekNY9P-oi=_=qdd3Dx(^d#Y+tl+rS8j1 z4OhE9%!6g*Bhq!>C&jqV7nE~-nk#v|*NPIKTyD_1ob+8>Tpfq20Ur35Tp(7xOvj~K zIT2-&4$nvOWgF={s1@H5@%>qWd|_GJA796Dh=uP+j}OHq1&elm#fKseS21Yoo4LyR z)vBCyMQ?-Wnp|&B8RZ8%E2+PfF5kY4{6gyp^miQM5QjL#Ar5i)=V7kj-JtCss6WB9 z%{}bfLt{VeqG{3)YFZpD+kvO@kRdpN<0u+&EJHxbT%+U2KI2cMMItFmqeeXK?)XLZ zEiXAV9|a*Ia49xkkcE5~&$2YhA%=xAV0cSjzV+bvMqLL@%uJ6~lgubOhuQRu`}F*G zmY*A?g~i#C9I6?LA__EM6&7REs_AoCTSwDXo>ISfa$HH8rK+jCq&8}Tnm(kyH%PUv zyZ_;m77Q>4-s9wHRBFx8(tGyjX^`G4vHq5uQ_0)8Y6X8y z3{Nd;Ue%lGu9v#&$Wd9H`>CqfW0|T}m#ey$Vg>}h|LnYy)W{3}K~+8Quu9$zSIhfC zZU4G%W#jhsOok@x9;`;3iKP9LeNA{SLj(P7+|Ve=alO=NqAovKm)F+SE4t_3M5rfU zxBiCexCu=Q@@Jz1U)q%Hr=E9& zUUwQyA6(L~r>`$b_Y5g{zE>^ycQxIjMP5|DyIoC@>IJBU8hzfns3bjgLty_N*Ucx^ zP52OX``1$ksGmAsnl`1T71vKKXT6#hs0%X9V7+QELYHdTX1SVbk(%nL<@Ph+3iVps z&zeKex89rF^}2>tw3SP@>r2vIUl`+h|E50Ue)$C`d+*h>J8ub&YgH07+Umj%p2UPg zGbGK>0PUKFyFb_JP0zcZlJBoE>X&-zlNtUrjgZs1fMo=h6$k+fNaFX7nc#~= zdZ|S8S~H(_=k4A9nrn%s`nk~*a*a!7C!w`}6{DLkbO5gydFe9U_x4zN(?jKepmsfYic!eT48`?pxb!bw7E!Q!tIIg_kY~{^kpV&N38Y8GZ!L6KpPvG{Pq2J9F)>MGtTJ z`uyg4=^7cbfh%PE^D=h29QHz9Ub3p)p0pM}rdCv-X5)$8eb z&;ltloXjvV+WwnOuem!GJl?kB7a7L*%Yh|+xCgFD2+H@)V* z?w2QSO0V54xFW0U;349C;jgj7B3LamF)!Kk@+_{L+*MmLV`9$UaQB7D-Xq>{(Iyp1 zmKdxEq$DGKw8U95t$^&h=CHz3IZK1 zB0KC}aL@F=l3s2UyzPD1g#rP{#fe?BQOz6t_kFa(WHx>5-uYJZ&Y9_rf~T_d#2_R{ z$^eNJO~V5#9^@uZa8@nr%zW&gy8MX?%^Ic#Qy#L!(;WTC4J+CVKi#2vMQhKOE{&t^ z_SFWQedy4D;CY)K#p-1U#8NcJ@`J2>^DHhOm*RBU9XQ+O!a3M6+JdJ?e`0^)KK_Qe z$B%bwgl7NHc-Lvq!@Nj|90x^KVxjos@nqNGMR!$e6~~1!Bh0|~$A>eTF62*!vmK7vH znwLa)>W;(iHZ{-HXdNHWGL633bkgnpsLrze&5bYF2*}bD!$OYYC=zjcN|97$0xb=y zIO$HTdi4I+oZ1xKVh$#kDH2i?OHrg6mA$vUz$Och!u7+BJpI2tlT)+eGZu$RVHi)j zf1vian0#Ipe$z~*)zI2~|<@JXjdCBmU0R#mg=HFkuCba3i zxa^OxByEk#hmgK>PeHKyv^o8QWgk(9mLN+429gNSd@rZ#CcBJzi_PLHk(4+_SnaMV z2PfRoaPxgNVilDnn7(o^_`Tz{x9)5eLTn%gQfUKmAx|iX!ZKul!lCFT*r(kqoBW*i z*3t0dJ4gx)0~tUtBB7TmFHtM$XHds!cj1yT`ET?IE43mxmQy5|5*0b<`k}Vr2z~25 zRPEZtA?cV{e+0h6dthD!*KjlV{YnQ;XXKw z>8K0t3x{i0*?V93ol9Vb6M-Tj5z%_V`yUaP+VAcor>=Fc{#-*r4+YmzV6)h5yzg=- zho@yqLKriUCg3{{r<#AY9!;)!neHRA=}&jRAHUnU?O<5MBqPKz5@rRCqoT#Cf4beU zu=P_nYcq4MwBTZKI!Oe`({r$^!xtA;rOg?Y*7#o|f-re@zTKUhlG8Z&*!5QfMT{tN zk|bjp>hBt(ud9lu{hWzw)}9MH(U4XcPNEcrX6fj~>D4@g*M2wchSRkAq`x6jVi}5q zG{q2nR)I}&S?sov4#DQM3NE{Y&$s7~EX>Ciddaz^6aGp}F8A85;c4G~Mek9&8XC$N zAcY7HQiuc;WPlze{;;S774~^OF=P!jJj?r`od*_PRG$qweJp__h5<4ou=1x}=VU22 zOiQkF#Vys^o(b&j_YM6u+yMv}8gYmc7+FGUacx$p`P$2!oFENSYxznnQfP z1Lq44EN40FdD#wr@w%JOt(~4&^RgZ0x}Hy}&3?Yo@BzuQ{{lNF_xp@3aqpZ+E7}tm>7m;FM@;>3R8Jzq!u2Esf7opB{}9W0@Cd zf+T4l$I76Ow>`GgGQn9@L-Duhj@G&6&?C~)BMoon;TH7`UI|gDV}!WSmV|s)fdlup z&nT}ZMoZ6}g(H4`YI1mXla>G?DFul_4C|nkXXp2=AAUiGAr687wLVB7j%GQQA7L+W zNO+K45_|`~vvm7b-Wk!x1HYbhuKtIbVpYDeVim*6tVj|f1_V6Lv~D!1Uw&FUg9nih%S1%VhqgfK=$YT+^Oik<##25S$WtPU`1IS44z&GvTiWGzW*haX zqi5TNryn+1DPgNt^_JYtz>i|Xu|I;noooBz`| zxFA2mRZ=*KV+od%K@iuMY}m*yo~q8t_`Yi7Dmuq-Lfss zMk4?{j}_G)@MryNbtM~EQi&7^BvC@N#5^(jL(kN|+oY251$9}1v9==R`5|TU*pW9I zE32>s30aEdIEEk*6{OZ|jwPb2EaEwm-vi!g+uhoI=ey-N=DxPisv79;(R zC0UlCDVpF#yWKh*EBZ;OW{5ypPnR!lPwMg8rQh5CI^QRw4HDbQLsu%5Giu1s1EzVpBQ(Ji(RA zOW0!dk-RKLP!fm47&z@7p1(fYH!5{U18rPOPa22MegpFkjwU%8(HIGe?@IdSTGcLG zyx2Obnucqs2CEYS7ruUD_qs8#X%rKfKcy2fexl1a)?HOUs58stbopgE8|%&01M>rQ z`L4SBZ@SI)r)~m2)#cyP<)6^yH|z3u>GH4WOjK6u@=JAji!T3*Zo&UlMLQ#I^vt*3 zb=`HZX=i|eSpuGh9fdri6qY4eMADM@)Q$UE_}e8Isij6zS8W~TdzA&PFHyNhC;g3{ zm&GQh_P!k6wuqw?ieVH2a5(zS+{<(Pw_Df0Q>C%-+$uJnW@(aP7>;9TJgdpet6!77 zX3a;8Rd-k=g*d!?pn7z;7zk>*?tg8&j#fWB9%1lO%P8T$e3+Kro~2}USI+j7;Axc= zk!Pcq!1VDv_*|#6-@Y4Ot_lPUMbUTVCq-LyA5ZG|IqL^@>1bH6#U|q!e1T2Iip7TI zET2Xwudsq5h#aN_ij96PW_g||?7r)f8??3fc~YpgNHPqGIT<0DrQ5yx`*S*b1|%p-$g3#a)+{x6CLNqE^CO-&(+4__wyV)wGGevp>Hq(j^?Hnk_?9c3pkb^ zjuq_iVdpUpiwiq_yj--XIngx0Gp9-Bwx3gsB@KXNeOBBYq<#K*f)tiD#~4)%su({0${%(dief(N}^U4K#9EQY!8AD982KRS)- zclYM7XRMF(Wn~#qEE5Aqb(6=vWahXf*_tom5MGe-06-Li6bnF!s%*AR!H$u+*d~Zp zobgH9MtvvVlBjov6srY8QiSiyYVnYC#qYz>9_fpwH~b!*GZ9)=D3)PJ7O`b;s4&KJ z@R|?*+vSbU#xfIC-a~PaAt;&v{20NRms#L&+8w+Tg3cBQ=3bZ7_`rnEOyyNqOEBH+ z`L14vl)qCoE^bCh5g^S14kA*3P$<1gKYqOKx9wlrl#+T0<}2_5SMszU(DSXi9~vse za9AJ#$H_ECoL(U&A;vM1JiYiu_enQu67>GngZD3_2$H2ChgjZfpN<{Fv1E71*|uEl zL&x%9oF`(({Oc@_HK6w;Z%BxriE)TS9O4j%IK&|iafm}4;t(CvDtj8FZM(kf8tszP z-?N-Dg(o?($IZ6pmFvV-@w8~u``)VEG)d8cU`9TV^j(!B8UV;+n`E^+Ew-Fqj+}x# zY;%3Ry+-W=$L80luYRXl0Q{}~_)AUy)TMgnaf>dmB!*5kSXpVaV)57;95~$OV`D#z z1W7O?gGd4q2n73K{OQ(`&b1wy5VDFS(_~Lh@9X=#)is=#RKT&EL^2dd1zRp=GR;D! z`kE$t-V_{z8oYhc0f2$No!!w_kaBrWBxsouMNtxjCzwgE46L>-twnsp2JIk!N#SHq zle}Xs7T+A+3>9LElw}MAiU4Kx=P=nLUDIyI$s`S13=PB<6vh0$aM?t#b#r1;g<*%O z9-OwX`bY0-hD#xxZDNuH0x1v@093Kz(&=$ajyBkQUk$At$q~}vJy_^LZSus_OwEEW zgpz#;YT^)}X#iM0tH6onK|a-4$!>GH90iig?$ArOZ%PPVq1iOcGh*N-*JE|A4<6h= z(LTws5K$D%0KRvDO}63@l06?gi~C*oR4ce_!e5D1DhL0HQ<{n2*w8v$!fRxunKokf{EW6vR zyFI^b+`j9vDNQu&;ZF{bp4SKeb^?Ms17QvvpGg zE7S7&R1c4VRry(i3#wYk1C@ zbY;zNWsk!gwc~N*CxLj~`$q3Y3ke3ed4*@&9^3v;&$cv{++8#$ zg))|81}Or?;GvMg%joy0t;n|fItMIUYOfh zx9Sp2MnbC9o_7X6_0-~&@X|O5k_5-GSQcSOXhV7=`QhkZJhOZ3ME;=+E|HTWjW7nY~brNeS^G8M%U>7lCb|5)GCrxoS3 z>7VBu*Lb##pYcY$abdy@5DdxE93TkDaEOi-iJ46gc!q4)Ubo{J%@6Os5CI1OK#1c2 zMIhed9FCP;kL~MP)QdBZs-yu(yu<^3PrJAfvLazkyTEzW#&=D-%WH!@;K^Ro@A=Mh zD`U}yzl&Uvgq%pqq(q4F!SRhYHBTRw82dT-pyxuXzejzJ!yQ_*ARr(U6sAy6oW|vu zq0`{4z24JzUdv9;j|y*HPmnZ4Bd*v&^x4a7A= z+rtJ-ZKr}ud#aWW#wO2&yLSC3P^D)v5hn}?KE zc<#OKx?l>>XE0zG6L_e@?hAU-cK_(v{=}|koj=zc?Lqyd=e@)8TW0;%DYyZF7qft3 zI6$x*K)$#JV=NAwWwByj7F@#3u-8WaR!sWH5|Bn}#gm>jbLtjl#xkY+hRG87<6j3oLL+D5p996Z#LkF6FP<|UCFe{;Y6 z&m4L#ZC(5lGY)ZxLmc7|hd9I`4snP>1h`ae!=>_hkQkrR`1r;l4snP>9RBs-FX8sT z=6TNZi@fmRDHFqrb_GF@7+PW}P6-OM_nGc?q*RW-(~~-3+Jn14)xyX5-FOL3KT{SO z!HKot%MC)PpBR~>lvc9Kqw|5)v z+^9|0jFb@5MM8z31VC{LLCzc7;-+SvH&W8$zJuZrhd9I`4snP>B|#~@^rB~!xBF`Y z9|&VX%3zk{SVkli8R+TC7n4I5{Gw-P!m%TDUq{Adm}WQ5L4+uh4UsNh?7dvmkg@d=XtB`!g|tmje{!)@Q+2)GGHm0WW-pV(I=YT z_Vk*&X36Fp%>vZWc@v;G4$>TjNPd7bTN+UuV@}6SVy=V7F$lXFPPKm&n7$0&iUjT&40{Z z^X0bL-|^hKxZAdN^THZyazOUk&M|@@;E=|eH?FA>HVv-#fM;EmhQo7T(d-p|4IbbC zpMQcZ(K1KUSYg*}Iy5k&+mRZ2%k1hk!{^Hi(U!BMUfIgme`g#y;{(s&?mNd^c)C$A z8(%tE5OM+`K%aO(SoH9gug`C;m#!gzqF0&TA!bJ-`O(wPzW;P z7a;`!#fg9sag%FaJ!wAu*EN-AqIB3(Z_Ld6d%b;vg$UClNA)3DnjshtaST7SK(tz% zxnl(D6zp*FGFF_?%Nve(@(!<`u;RXq5XilBA3>4=fR#DSk(&LD-uebai4l#hZ$9>P z+)^*;>5*Df#)e)c3JYaXlp!q}h5LD=USPUiH;Iqbi?&Ihc&6TT%OgGR)#OhbLm6jt zEQuJFrkN6S+RIsJlLpx(A40V|e3mN?dp>r!3V)q7bJh9Y_f)OuAlq6H)XXnRQtOp& z8~u+TE}wZC^fXt!`}}prR8<}%eJ3a)X@XZALLM$L#vhR@YIvoboUi_NBSEHwaO$ z8dDjFkm6_-AtXuqn98x@+f$xxW649KUeG4`T*!&W5K1hCyTxPAckBL;FG_ zk(O8RKCE$>-~qGgOV3}8Uc+@x8b^>)FeWJsC{_~n5u{?R?n_Ud)?F6e`Fr>Pu1J(f znnsXiVu2>L=dvxE?R+247Z9px6oYr?U(1VM0sC1?t; z45Mdpr>K!z|5MediZh<7j~5M53bZKht4php^LUb?ileyi?rhri_q#Py^~&C0;RGsKTPm5`&0C+gBD$#DI#vEAUiJ_g^fuT{2j(veqiHs8`Pa<8W!<_829D^`anC1BFLFdh#aUHthb}G)JaG6GAa# z7h@dfJ1o-#7cLGA?6lrKdDDTFN0PLY_x!yjX>(PN`DyjguCEJCd`3NNTXrp}EdAk< zG%F*p)k{~Eq{{yyK?m_Jn6Rfa{#NBJQ>+vb8`gw^hH^0LF8-`hSz&mphW zrNN~5ubv4xRPHLVoBAZzs9wJy$;Hh0aGYatx*Uc4bc-vu?+h2V$yoN?1UTo9&zN_z z;jwCwJpO!MMl(LG@xOZd4S4$QiJ7Af3Hw;NU7r)ci{wnE-D<_fsy_V+1V;=Zr+@eK z>-*eEuq-1C8}1j6!=VKacb1*E{>$^$@|UJ>I2hKMBgK&nWRS!lPVX0MBJ7-UY_1#b;Cvd(^J$iFQz-yEueYLcd7aLYWkS^Tnk^M zdYLM8Vj;S!BYd{o9RfdQ!P8Jd|47{8k009 z0WnCvEEpDD%liSTjDK;cc9_fvpoJhyJUf5--TC*wn5ub1d|wxj(lR=_-e~VddcU-3 zwY}Wk8Ob%bX}x~P9HQ4OOCuVRNR(;Vb#c~jzCde3FEO5~Vv0k2yrNmsb-kZ;Ue_se zP}q%3kw7G9QN&Q-qGt)~d3#M?e5xPWFqoB4eUSqS5Qrja1_HzexgtN@x}=W07mR9X z;638{?t1=Mz2L^@3HinMAT;B<1mQ*djOZKQ*jt@U;qKlOrs04Bh^AQvF);WNYF}EU z8k%?qpWA(Hi*5~!8_uHQh8NgkYI+N=Wx=lBms<=1j{=IS_`stry$6%`Ov(R`wuE-1 zhgd>LCJ{w)B8>^?-E-@W>vl^udL@KEzKmSm*3gOnjZ%{-{PRfH3X#fWr~t{SE|T*`5Xk9Qp6 zaQWe7lkQx-)L`V%=u*MzgwnA{R7p>NNQ&qGk$i$F!#nk06U*6}8ov_amakO#EZ<>w z*(JM`R|Kn76r?FU+r<0zZ%Ps>}|cy4<~-|YygGj6sP!4a!=R0}155mLi|oqfSs>Azj1(FodUeO)Yacm1 zB2^n5YkdRRTSEAJ*+-{~cU|4)pI$qwc`yfDdRHq*EF%k$We`RojS9=(4#LY!8?tEs zubLRs?;6G>^CV52JCZZt*Yx96jTmul2#qh*NUyNv`Mc3i+Me*cg~*W<2i8m}NrHkD zNic{XWKmpL&hnWU936d1nLXq{g@;WtmJ?kpP%C`AT zNS(z2k%~>8a);dbx_{_b?e^*86Xl(5&U<9PGWmxAnhx+XqqcGg&@=!nuLTgwDsUDD z*DA0z8`Hy-wYGDTrdQs!Z%H~OA#|#(l+Km5h`W0iJa7N)jpLzg0>vnFg-Dj55MW3j z*1#@HUa|I*-R9(7LQeGSy{Gr_b_W)2x-&$S*HU~;(F~?Ik-{X44y<^Pn>@i;wX9dt zJ-y_xm4A?b)5bK4u`-mS*zjtwke_80a-2h54!wHPz^I4+M(^NnE%tlY8i(SfAp|5z z6Og89LH<;Yh4-GyqcVne!I;)Eu-`s;v#Z zlh3o42ut+!o?Y>EvtGM2dTU=o;F$mj>zUiv?H!t&fa3h&6$zyqBFkIvu@~~rq;(IT z>p<5JkR<^FNd#zLJi43gG9F}cx=M~lgcMRlfRSjnm~i{z?~%)MZa!E=+n>!62Zc;S z@s{XZoz|GN^H-!(}mW7AzOA08Q)&m9q%|6zDweuXao_mIH+CLKa* zq02v+6`238F8F6FU4F_9fq5cuI84pD2Ij}nf%%toF{4}R^4);0eo~u@Y;U8fkN?DV zZEcLVOCnj?1Yg8zUf?*9r6qu9k!e}K{%8KdRa2v0lmor3-kJZ^>XpV=8jvhQv493N zNiq!3W9gOF7RBj?)kau)kazyp!ld?hX%yc#p(#G6JrDD&C{U1QkW4|Y7pS@U+>D|c z4XzSQV8j^=@^1cg9nbuyS@0BCWd~0(44)^su)`u)EiC1*+Y7(%>X$ehv+hsK0NtS^0s>Bi$}t6@7+sV-1TmA zV-X&QIEp4&mf=W(K%D;6$xu(5td!8`Zn*dQSp%1C?Gn~WjzE$eiy2Hy9Mn6>DLa`r z!h8JmDW-E1?YQfoV0_$hP-IwIky%E@KORqZ9bR--wN`POIp*Wke?gi}W4#40)NOw2 z1w;KMiU1@{5+qAgBp}&X^_Rwa8G67q-65ssHwF_lc|P$oA`w7@YKDO2;aHG|h)(R7 zhMl8qGFB`$EVmfYP?-lF-U`J;=K)?x#5Lh zk2DGv+xZbmETAL|2muf*yz}!p{!%%Uu8M>*54h<4q~<(#-^8#uj1);AVh9j}<%+{$ z*n4-|&L7U&+c;RV?l;#Ytq3B=`aIylH*Y;K{kt7?O_xrEU-2Hfe)hEP+2Pg%CsBaJ z5>QA<(65PTYciWG-s8y^@+UtLt|klsBakuz1jJ>n$>R0iQYHECEe(U$o1jXW;J%f(7JJVuT^{SO{DEd#S&Fg*V^uY_8t_>c5QoC;i zAc8DSu_YJSLzLkKR-fU*kj0yZCP#mHYWMzjd}=pKePiMdAVd=+Ndv?&h$zGT>{Kt4 z-|x0gKWntoj!-8sVmXc^5#WkVd`J0YCnJTN1#7-r+TmFBbS<`)yQm~RH@zh7Y7U+6 zquvESr9SU@$q!(M_hkL8(}vV1g6|I_-YAI$dHGouD<0tzTpQnlwUryDC2QA=8{Y~% zqxAX8>ygv@$*`eKGi}<<%+QdllI8%xu!!TQW3iXhiStBj;b5F6V#gj!>i(CqZONL@ zW7g<|a<#~8a(TzCt9Eih_@Hi(kY!SoC>arKv=>1x?=J@uUmKZUJ9twlei7XO#pxwG zW);29GaC(Kf%k-C>1}vmSSM=|2PK81L`kCLkWSVTBc#EDHO-rW-Zm@0g;g~`P{6Xp z_@tF`NL7PqEkKQ2LQV5d_$Ynt`u1U`3_%E4Mr3G#QKGjdnBjG2Z$JLU(;6%Hd1%RH z$z3%|VG#;4f&^OI`!&mR$KOb}+5`fnZmef{x4yr*Ym?5#2P#DqBt;Pn;-HV)(&PAL zDt&ASf>Bg}?)#Vmd#|yR_CV z51Q*~^=vfzUD@#@3unGprQr>C^fh$I9fvqv4!hWFn(eLe?UWXiZwre$X$8;%qJRV` zGFsF*+ne{yqqllq?;d<2Md78zr@u!NkYs6J{HZY(2j(4Ekn6Plp7&=1V(;%9@0#bn z+%RNTYH)vLi3b4c`!_o+bWwA>g}bePkA5iZz$r+S6cGv>38?7LoO#}QgO^PbVc4Qs zfg~iK*J?(N;W)e9yYx}hl;+QcFPa2|01*plh@#hWS>Qc={-pqb3?cTFtoqa2kEHPLSNJ&OU z&c4kdgqWf7#+rqTymx=Q<&Snu2$!V38$`&VfE&bIAqJo3i@h1W=HDYM$~Igyu{vBT zuvuK$Hm6IlNq9I`qF-c7ycfEr6%}5S8Qhd;6uN@dDtIZ^VwHW$711_giFfbfgaa=p zYMx{E_)R+INdyrA5d~<9L9lqxrQG%l&yDhhf2ezf9uo;BxA(055&1%k@PbG`!BoWw zB0b&$=MLvKTX=qqB19}H5-Wljuwjw6!P-x)V}1+EHBk@~G658h!&FGFDfTWc_454Y z2WIXMUoW6Y$jOW>(x`&!UG81?;m;Q`4qSALo?y((NDRda07@bTO#j)f4%NN0dzH3v z%Bh0((>>l3bw9pi@`bYEF@ok8z(BS*I;XwBA>m9x%Ei1ByP`*?tGxW$PrjL0U0V+4 zOvcxgBu6nolxV~d^aHQFRtL8Gx!Tpn+Zvs&tGrA5XVqj+hW8{cQlcW0BEtwE`YBlL z9dpZf?~fi3jy3^o?6k>h0D?e$zi;=kO&a&;sVTR9VJ`JvSt@p^Yci30WPYssZSmgp9fmp*& zm`x9Oy$iOFZGJ9nR}?HES|C_S#1(UzJ>dQAqj}@rXx=!uRzK;GNXjJ50R|zjUiHjF?HKcV8w$PkW_pCYzC8VXWt9lL zt3F?QInfhD>%AY4HD|9vAqD&^uriZ;B*Je}Z<%PwiP@zRiU?oZ*LWkk2 z`+N9QU+=@->#g`+pr>k0a>#7)4@tF6$gSQ@8mK{#H0+K8vvkD?8QLHTGiUiX}@6N*e+P3W( zR-FV=lFZU1fes59f?KN3zPE*;A{@ie6wR`%Puz!s1E$VYJI@)^u*JLd;hS1{ zm9T;V5dczPC54cIq8AKom(=4%-Stbmh0X_0=QeNZ+S5PqOG1fq^LUaDl3o627%S>I zZw9(+`7fP}@3H^|AcO?s7>;DfAbo{rRN2^BgT?op*PUP3x7YgcH$?yZ+Jaze5m0#gacFQ1X|9UFVulf6-D7^Fp&}msdDb$M)zKVbPQ*C^Td_nI>eV zLP)+{UVDD(@74B2h^2-}TK1_8)3Fn?38t65pET*}lz$ssM#h{2G(#~6P<(b?UV+PZ z7^x>w3DsAeiGFhTc)Q4rEBWP-G$TV7w1iiWBKuY0q{;*IyU zGt|R^j0_Y(mT8Wl^?F#b5=wxNhOsab6{oDlOk1p&^tf(=9AB_ zuNr*v`L52}NOh0P?)24v+8FLKCVq4w~{(*Dq?6ESV>=6Bc}ROO4cOE=~M0Tmm) zXY{`wjNY&8_x^3)#lMe#AOHTJ|Nd$pk68czr~8v~nXZq^t(uWuCVdC+SgaS zoPYN^iqBsOyuLQ^su=%&D_;G#?X&p4jqk7cI*#`{K7Rl1@-FrFafm}4Dh^67$UgJp zmDTCzk829$Az}_+v@allq5wvu6+xi4^_}w8{l`XD)9!=^m;+Ni42W=_e;^@r-st&O zgL0-DJl|?K0>```EUWovtG}YU6&6WZ5F`dr1eWxdx1ZJtU4_|n+`F!q`_)!_cvTVr z2$E&6h=m|Em>ZHp7k%8jcHaoH*F6TR!6X&CHpS=O^RFh}mF3lLOmloJ^=>wO;k~bA-On-?YV#Gsqm|E#2#FX9(Y(_#6A!YuutTsu^U}g* z-6lMeq}_-gi=YX2%s?^d3va8}GTZ;uNNd2@a0`YZ7=!_>kOD0w{jb21@yD8!sujMA zPkLKCfAi@v%SIS3u&|c99LF(`0UX2MB)BZoaNikNDp7HdVURq+{NP@G685@HBZsDDV<=?kUMxSRuXvVsQqWR%ZOmU-g7^E&tc zFLewIr&Y)Zlt>}KN?h5UR3(_sct`!%;5dd|jS;=74@ELQ|L!zN@R`0{K2!~el z;}E;&rJuY~!tc2rxsWoczA)$7lhX-d&ymfdq&T3f_ND@oREFc)Yvsxo>Xtg4=qi2Ng zD;s)VqH>LA+FUgC(Z8B~kr7s#nq)ab#)2eLa>baTn~UE3wtuIuUee~TUGTh@1RL-z zwj7>hSb_!|Dbs*B-~R+$cc+|?5#bO{)^%4)6AkiuFnX^4F4B9^mK*K=(Ie`_qQ_qE z{C3{^eS@)RQ~`)W_|C96v-9%o4wqn!9^)nz6*O!-qx;~n5r`0EDHd@IAZSV-fvAaU zEw)U3;I0~&53Vw~hrkrmY1*1$q zGbS37G*)Cqq=eb1<_-QhGk;+T)%N=@tpd{Es?v(KzG+{!=%QkNZb&Yi6$OFtg)T#q zed(S%F9lDVU`j9gVOB@#gTlta^qJqtLxCk_Bmh|wh~GAU{rQ2Ki{k`arOipTA_0B# zLZb)6N7F-!3qGcA@+S>SgcCp@MG3Q5b!PTxWPdn2p&OESo(OPrz28R@O07(o5p94mb zmSXS%Q>SSA8+Bi3<1w^IL71Q^C`qCuljXNaX;4(_#f7V;N#U)S1fPEonZPVdNU_V^ znie%0-TW?Y_aI~B8|$&-bD%r4K(tz%xmX^Fov!lwVoNYJFG_#+j*;D&tg;E30Dufh zQWVJ#vi2#ol~60a9C=xS#aiIN(Jz3EqVJZxefOt7Wd$D_(To%>}^- ztKH@FdDzMl@+{UuefYfSg_CWI{#x;D$1$(AH(n`uK4VylCLkbri?a{5Vi)c^Bj16Y zzMzcy9e?CiPe7`#vTf0O8Fw`Qs!B^!pll(O{N5LmlNDH!#w<%&`{pe?vb;)DgD$;Z z&O>i>mGXV3|6ZSu6y>{*!F#1k=(?hL=bBq`PZ~Qjr&xuepack(*5eS(Lj#`>?apae zwCx0Xe({k;hB)8HoXa943E=abEa_K5#aJ+%2WgfABtrqhx7tKEbgh1cWGwh-%k) z`wQ?7TZ&foyvCu^$W6Gus7cEz|M|5jjCcql5+DF6#370bvZY^T-h2q+E$ngT2e^8UM4UH$b8dqEa4bB45Q@%u$Nqsd>+2w3i&J9nGMWq+Pf z(eay0n*fV40d>OprWRiMn_!18d4Q&9hNTcm@;(;=GkrH5BMbAf^U?lW&U(M>kyfaF zto0))N-kAww1+#OZ))PKI}^GJ)Z%!xpfqyQNSV-O@O zA8k%FD4H(9H_Ts`-nNx74d^eWqa;P-Xp-P0EW~=|CzzO`%)2v9=eFHcandRu+c4NZ z4a+02Rmrs5Bq0U|h24s3w0vNz z&`{>{`13yb0ZqWO7M0{uY z!;(1(@j>`UvD*zrLi#t?4t%XmFbc|XmMnJ3Zng40#TXy&>vJ8e2nsFx81&>tgFD1_ zz1*Xy8#DByyGLmL=k|nRJQzgKECpGXx94M9iK0oddda9!;}*OoRZG{rmCZA#cwU4C zY5&iwq*K)BHYmZ=tH}G*(I?a14;MR$q9Ft%%_0f~2gbZZ9m`FIL)^RQm+$|({=&Us zuLBq)V;N(@7Z*!^9ne9Kv?9)GX3@``9&c#7D=iq6%gPjvWoV<`{&U9IZ(O!JP*6=*!dUx%C)WF9HfyK)?o8Y=DA@hy@Wu z5wX1RL*@6`> z0Cj}r1APgMb~n&&wzHh20WqeP%G-pz2{y1-PLsi7mfozIGr z%W0)L{f3Rdd1*L46(tc$sW;?RRzM6Cc!h~j#+zEMpqm4qv_5d((lOC3k{EH1UpcRx zZtXsE7Rgb8pSq0vbMY^X^<9-^2FQFP<8*glRv)i#+f7YZl*U?{of>Z^Mh8w^xm}pu z_oB#EszXk)1eSrEl)O1PZhzwD2r=-Fg4m#VnBFB4ArynmFJt<=`M+#jta-Q;*nCsR zC-2TR1n2uB&#MyeVnSHJ@`M122`7HisO6F6b&N}#jQY{b<0kjwIi{m|OpKn+N!Y3& z2j1AP?YKxBUOpo^gBVEltk=|4BsVI)K7u63MS^5F3`EX!XL$sF0zNEB4ka+9Uhm(W z*=dmqik#zO2paL|s7G(;|E2Rx`yVQShA*W*^FSY4)m~IpR^*W=VU&Q?AS=-3Cnjsd zNkg@t5k<*CJfMUS9wC=IucteAtm4xp^UplrrR6@fG0jMNuqd~wj6 zl{zZPj_km`y>zAjq-}C|3CR!;K~V&roYmy;*@1S4UV6EEW;4^aC@X4FQTG{D6~K$K z@3))w)yp34%s9s^COdG;Co9Lj^}N0Ik2y&tjDkeKMSz0;5Od+>1m4LxI_CE~48u?` zx?fb0ehMfRu!?w|vR8o(Khwt-rCm}b7@SqI=G~qE|5T$ba8{H=7rNqtIL?ff|7n+M zxwB4kbt=!3)fX7itINr^P8jil(IbAnKH25-=KB?w$jFG7F|SaJFOVDT(V4iJ9n`OI zukr)$Uv%i^%`EQ=l+eBtjOzkgfG`SwaRN(?-c z1HGFqLc8+q)4@=dNUTaE2`c>lU0=$3Z|>}i?Pw@0Nd6O#iQ9%y_$)6E`bf#I;IvOodxi!qY}aA9!5s;8SqZvRr|DMBE| zyhtTPo_a|w)Kl$LexU!fz{;;Ce7*nsW+q#m$r#80K@u6tGO}>zf4koQp9e_BLlwLg zwbIAsury!UW@p2pMGE&jV?gxp8L#zxcoq$d*fpkEt!N@&Hpb`IpCdcf`7-|hmiOus zF0TrgcZWCUiSQ2=R4>aU%x8wNEREcAcZV}b)OgW(UaaGxan|#9*>8NV^KZ32`7^XW z51Q8JrE#v$@~;0_^*;1L72p0lt)E2a_k5wh%ldjtJ~vL2`xl+r`a`C3_i)lbW1m%2 zjxff3S|?{h`!L@9XVh=tJe}|IL`BzCtp7XW){cRpr-#;_)+n1-5{oW`cypF@qQ%#@WYxZaJfCXY`wR|IUWX^>>F-xw?#~q(asHFf38gp%C=|FkV(;h|C>eoM!N=?>o=3R zz3f8!{rW?k>v5D2{r_9)mThN^iScE`Xm7CT|FQTyE$6yEoS@+~(e}*ekokABvv1MQ}EpL?&zGSFX=Rf&p>Od*FVo-KEJz{R;1 zJ~PO0pRfQ6k%e5pOHnA~i9$qClFiO`bxftXr6k9U!2FS5{o#x#*|hz#3j$&`aDQR} z9XKOUYw1MK!CRuI5ap-0UV-?1tK%DDzj2W12|>|3cF6wdi-WN zyOd&rkt)eR-t;exlN;|5ef-RSqq%0$Ii=;Bz8gAxKf$KcOzd~@}v3H6h# z05=SD+_z(VUQx2DN3Nv$&GlGcyUhyB?J)ew)ywVS#sH5QPLe67Fhc8AWXJJZ`y$p# zi#Vq*$uT#O_tNy%wH}Kz3RIRjmdJ=I9HE`-c%FNt`2@=-P=l=CE#Il~R6H-~>RSJ- z_c0dx+(7qPjc(Yn$6)HEKuvVdcOIvE$M@HFQ)&epaysq~+;Q}eNn=;r-n^VJL9;;f)!895BE%q6R==4iN$%B6_fjJGThfd!$du z%~gDPUDsZDGQCtJRNb(u*>7s`Yd$iexE$e*UdG?m`vR@CXF~ffu^SX52vC3$C6EE; zL8)a?Mz%CR@YtBPAiaKvC^D0;WKa;xFc5IOOI7^R*zSJ6lIIt6fTZ{r?t;K?qhFU+ zjIl=BA(&?X0TdvX;|ZTAs`rAxcXb?ZH2$@z$A`np3OKh>_>9LGwQNOCL>y!HMu zI&iQxd=dwFhD8Xm2(u(|vFF8u|0bt~)3Gv8unZ17{)4U8tAa(sV~C)_z_aT0>U69MWL|dRd!H@8G?G`8 z4X469&k&B|8JCW1a;-Pt=Ml1tzy}oBJ7eIC(g=S~#*O2)CNO`&v;%?ewnqcUNJNmZ z?k&y6&oZ6~j5ywL(pRZA09_DJhT%ENPzEsAyohIn0ik^sdfqdE?`~g^^T}viU!9U{FKAwtrtRZni|n3c%-pIi<8y3mAoOo-Z{Dc!qVZiJkPK!hLG38X)}wV7&ARW zZr)h0f9LM54a*cq_F}*P&NO2}2lH;DP|wn>%;;#r>AmIrA{cF9g~(N`Etd{J_Y?QV}qtG8m}w zOKL9$cC7tz)7F#r`l$>gK_Uu|IK)*nm^jI?Hn3>1cI?gqYZd?zWjVxB4stwTftdwp zjf=}p7EP=TWWE39;Ld~XeeXqvQACzU1PkRzA@x#VZugrmxnq^lhija+f~O}xTc4gH z(Q|~y?H{7%4bSymz2^O7!~J;Ot!0}sp4T=u#;uq(hVNb;n^3mw6pj(uFs^KQiDdsu zyDa{nblxB0n*vYXd1b9S-P)L}J{EQk5h{omfW$xsU-iQ9lYi{|xP}?J(tv?63|Q4H zK6jW-ZDTVSY;bQ_L|A>^4A#qm-v4)e{r3Z`Hyz@rZm6Z00E!@&cmkf+0wX)U{YuyR z(M`1sOXHUk-V8i5>#m`xSw_HODclI3;zBGXx{8hUOhJ&*V1!=sHr5GueT)E@3uFdm$hNvHopT!Cf zwy1HgBABcdkhcSypSxuLJJ%Tc!ACaw0mD$D%2b2`K$F_td{@gro%FwZQXFH--wyPC z=IYFLGc7=)Aj4EXXwQ-|7bt~C=U{0Nv7GvL4_Wn!zo2|?8BDy76ymwN9^H)8=vWhB3 zP8)?Wwaol}8er%3{1pGk60(uUJO>aV7%&WuOoUQxP7FrJai zUzn>5_v)}ay8R_yeQZx)+p=zNZrNpxdkuIU$rv*{AUq4$L>2Enf$qtTe|qbE!;BgA zE>hrRSr7$I0s`-nl{~-CTj-MSTG;W`nk|o|8N16Icl2?BY}m^DuqUv#IvHKq&F&6d zW@SPdEbH*G&ehG>|-~W#eYn);9gVf>-r*%|liuzYV;%Iy+9zIN!`^PRCb) z$F8JD+gx7qE=keeh02uYSw)}0hD)xVZpxiyZqmU#}y3=yzE73G$CE0Ax;66Y5Q@~9LO`|Ny{ z_w)G{`}=RF^KCv-EY@j@s;R14FXy4*wHEt3}jPGAiNpfULCF!phpW$(7mY_UxaRtZ2%qLSUK2JHz>!q@8nwnLe z3sLpsD!zPv$p2O2TJ_#lboQvD$)@hKIFFr<1A)1R?`X5Gu5l9?43}ksVJYAVrwAg? za?*vb-_~e;zdvdi2|iywP_{HE`7A9xr{lZ8j;?PUZ2Ddt87ma5ql$2{ey3`cv0~+U zwy4ehv3id6J%dh#XQriDR;VQ5$6Sy3+4}DCP@w1f<4bN#w~eyo0n`%;^C~YPbChM{ zR?ae|!}R~iwewS8_v`P^=5B}v;3K&pkKzw6`6clF+-b9YE3G4`c?c;%81oF}Sdwrs z%r61=S0~W;du)dXQ>+FJh$Tz!0xBlLoOT4c--8LBLlc@V!t z`u_#G9DZ%_oZ*(kg&Bshkns9g@f=f**n>X;GkZ)Jy7UQqcY2AcNR*HsA`t&%p9(y7 z<=R;-{$~W}T$3KbbF4!vMX%52Eyx?`_K)@E`-c>G+@7pX!8-j4c5ThL{X9iMQ%rED zyDLdW{Kj;BKU0kUy<5iF*W-@S&Ij<^j^FRMp4s~2eZTFgXSN@)maqE^wJTguc3pPu zQCx0ypWAuArS$vxRiB=M0V4z2|72j+PVegjQAu zUb3G^D_>@Co}F7)ab=%7@2FfpYS5N2p3RjOxDvI(i5su}=G=~l)%4sMPNKdboGIQo zW>MGTazfp*{M6vD#^>h$8|TZGUS-=g*zl(pmo3c{FTXao<2Jpg(LaOl)io{L_bTZe zH2B)Rru`f5e&iF}H=(-m@l|uR=H*#gmgg$Zwe!OQcPjAHw|{o;`;@J&136Jp0FfC5 zB@k!r&~{(l;ACz;1Mt68=&+%7hIJhV@la1{3|&3F9=}hJ{9!lwIghRS?&p;aYZ;r) zfDgGY&eP>|XPjEzJvV&a?+<%lZAJkU@+uKTAPsE(d0O*U6O+#eU+vPmYmy^L>))lp zt&i4+kppYIi`(P(hDVoT4iL%#QUuMDnVaqQ8$e6fZRj>g$2O`cAZ3y^WLb}HseR(G zq)B>`JgicR6;hS^_1v$lvY;Bt+TIxy)jxGpBsZv7xJ#De@1K*S$Zo-}bkBARd5T;N zuN5ylN!Er;n0w`sE1O03OwUTon6lE274qU|RMoVscK2-)gS8_KWaILru`Z6dMDL`d zEebZeOIgL5hV7wi!jeSa%VHUS(zHh|?|$mlX$F=;sodN;R0qRSGXKvDcZ~Z!t>!se z0cl!8*YmYoO>Yu8%0-Er3q3kMnQOdK=*stq-bwL~ak}=-56^FXbi08tbxm{@k>~aK zT|nkVS!4+%9CAq_+<*Jdx$Wv6t<&}&whz0X;k%C0D=$M^oRn67WnCkzE4S29Tw($S zDlcFG5}puzI;`ue!l|45KQ(jKI7>?~L%Z+p6~o)Dw@W7JoIht zvyB_&bkx=Oal5Y=&9*k#1rT#stRw;!O_%IMy{HMTIyYEr7w2%w_d1;LRLz; zkkU8XD+<}e<;m5y-F$m_&_|t)Mp~D~HUAe{XMgJ@sti>b%n@FR|M+aG&0f3jnZwJP zM$x58SeGmUK#;6ZK~l|{(~n^uc1ySnnpj%Uvgu~pbqiK~|KpbS;s1<@GT;o00ncE} z>0CmP!*Fssgj~8(|AY4HYoygUW1Op{COmW7?JvG+0Ku(uL}epIKya86C^IrfGG*#d z9^zXy{bYub&Z~Kh7MoiN1XM?s`vC8x6)P~Z8YfR5?6{+r@1V-SO8t3S1x3m z?fd=vbr(2lp0zWiwbth1y)*dd3>kfFR2^G^9AJq zTl1(k+JJ4tKjy{8QORAytlN}v2=4R4q$;%cD@rqy68oN&+sNth z+R%1IXYjt^bY2R`A&lcte7NwKats9+xrQmK;!`}5(pyy($)9J2c9?Ez>1$_scW+1S znP1i%Yrn&o%YIhsYL4QPDB>lV7lA0S$M&WAch0#t-4KOZ*tBd%En@usOjFufs@FP* zzmryH#Mc`orhcSQSz_aK`(2Pm$dIuQs?OSzNtqX3G}D;f_oRsb?Tj`Oz!j>UaIYWx8W}@H@D3xA*eEuC6%f`#Zhxg{FWSF>2O4Uw%%WtYZI>P zbG`dZJ7iRel{ik26cq}{jEt(?T3p}ax@F5qr5|XU#|(BhYJXv*`07(!5Mf%BsRZ#l ziZd++75%#VLmgk~?@2vVLMzaczuc9Z+~;x|ks2d_I0P_*itP3S-J(zM750}EkKgSt z9O(8ac^{n|y;et=K6A1)t94kqgrwHA)o2u+p#mVH3}q>PjfQB_=Ks68{kN8B1ZBXg z06;=yl~g>9Ag8r^L3`qjdd7wr8f`;Bg_n4lBMM}Mq78Au{x(eMibM9!d`XNoI6W+72@(+ckHK5xeq!-#b>I$tl&6^R)}zv-hqhv*CY z3$JH7{+1r=SneNwv1F(H=lv__)v~OTerL^quhC{c+o5UqKke^*RVs5p;#C%r_;+>> zZNkZW(}F#WSpZHOQ=*<*M<4^}RE1 z*YBz24gCDA*FJA-eP4rc;@34jwau-LzH%JJBOmdIVSps7tjO_y7x^g3(ObKDOPwXJ z)N2~4dz=nmA&Md+MWB!%{-$QzzFB+d@wDod+?C$ieL-@$vc>j_012YPL0)783ACPf zW9Nqtk`&{LAVx-&n4iagg!a`^*LG^(yo)7>BLjFnR)OarVp+f>>Uf{z=&vopcW#{Z zvrSStj)jz^nCCE$BjFA2>2Kdee{J7`7uCDAmo3*58AVh?5l}*5{9Nx^ZR9|;{()a? zkrOE=Dh!2!3}C4%HnST0t5mkk=u)=PUrlq`(ZuD=ogG&4*&uD-x@EP;*$gmdFkuF<9%=|Mg+Lp0<4O1kqPwtcLE$FG|08{c@s$0pH^U{6)-BNSvgJmR%Y&j!s% zswlr2qP=!UO^Kec8&!oMtV$xQLZF&QHN~Pdw=_h{`!#FLBm0_KYTf$nt3r86lA)eO zJ#poGs8%OCwc-02)@u-A1|tR&hNUb6B9iXCT{Bh_ncAKU#(&iD6}!(_+D0~ANn(LY}nkz#Pfh?wg0!$Hr#hNQV z;CgCrPQMy|pX`@6YrN;7)$iWe%=$i0kG4W0FJm4`99GJEL6_thrCs;Vp466Ew(K7Z zEEEY)c}|Qwif@!Qz54N{9Uio;SfaATagxMhsK)QKFh<+Z?msOzpiz-kSJ)*h)1BoJ z{P{kmkI$RaOOdh#UqVTD$7sn5a~|1!6^xXkO6(YjvXG}N!w{F4ud0eqZ>zh{ClvN5 zdK@NrvXte$eqIZjzMg7GSCyA+QP58O-?P^*SP{j{kmnb&F3Sfj6h*2~-3*pBcHz`} zYv!bt-^?ItBhy_se)Ey-LXag6vRG1~3KCGOB<<8)UpHmFmIf0R0)Y^o0w|#NA6|cJ zMG_-A9kP}+b!qdp%WZim0x}R8R+0fMKMz&4C*6C0-@nAL4bLchoyl{%W^{dH#+ApN z>F10|WobW;UpV%i%i2Yby*~8e)IKLc<{ZUPnJfxH$&ZXviB%N{e6gU68RS3RdRCi&ddZ*^;xqpe@U)a><6%}DOAqXHn5fIjKfI?Uew z^<>|TW)T@xEB`1}!0^jVf|P0|kk+N9CC#YP+bl1thu_OCI{436Otk9pQLSn#_i zDm}e9x$bPm$1-yceX;iSlDT}he)O_r4U2!e z(%uWz8+m){NN##s1SS#%EKwC%P*lUb+N|KU2P-%G?Nsg1iqX5f%{8pD2cw9_kV3$4 z90!R@)g6|G_rs>E@Nep<6&_N{J*q3x!}=?PV{Y4m5S|5r09CP}7P$XK5n&*twL zBQQM%ud%jT=>F-welm|_6=Vo$3>H{SJGrhMHdi@_;}OP) z0v1q)i^!?=e)yLioza_^qaA+knIrFJ+K!nD2}Ud{h-xBZrfC_kZCNm8d>d;HS|(rw z$UGJlMxt1qf3j5$Uyzj1^dG9yo*ty2=FQJgSGQ_rZCow#6yjBuhX_#s-u>(MUN@}V zkZvewo5E9lclg<7vGE5u%6>1hFClHyZ*%`@axyLQ^pzzSM{(cAjTh?I$;?}rNa^Z*=X`UZGEe$legY@ne|0P4nmmYc+B#| zm8S>N56qsJ6ZXs->hos#gq-qTPTZ$;zw@Pz>-!s9qHdDymY@njy89-Q5o&c{b5e() zb5pMh|Mc;9i+AAB@H+T8JZsa!ZQZ?~xa@kctT*nE24%lz{=HFe?q+A1dRpIJTn55u zJ6hbTpMNxox_+VKZlRZRR-kNilj19*2(ZCe(kWmx3|+#MG3KvdD<1%6|U`o z+C*;GXp2cg0?RRyiUFj)sRa{X?(a#p+Q@$mF8*ZlqwyY8^R;bH?b_L8iOqd4&jAcM z04dK=KH;2|^R)(#bV@(5#fY>yXdP(-6rNIE!6J}_OZE+#{Kvp{DJHi@akh0Yky*1F>Yjd?nC=@%`#hyODv3TH3ALiH(<;-0AZPT!*DuowXjFg)Wb z*4~8dqRY!+iXi8Gern9hDF@d%&VIP|LhaOJ5A1$6w}+*0W_Kx!d0uz5?+@B9Vp+wU3M7Gu3@N{d%X00;yB=G*^?;?1CZYfmPQNhH zlSFfg`c^I1gl@vIta**245JZ7i&-cLSk#fW%|`w5>hDg+liIg`9l2)30(-{_UZxN# zfLA~Quple7O|2StNWacnKml0a+&s@C$`K}E$JUkF>}jnYTYRTs1N+p*2F9|yzyekV zs;vA{>yvA5-Z{CBG1x2mmaRY5bFA;h`}>aJ`=h7hG(-A36qh?MvDy+(X?rr4zp!^i zT-R@up_t=&Dl009e^y`Awk;j`&5lp6i)h{Pkk@A33Bnb$J`@UDwtU;e%l+wiU&m!wvf|s=4 zo*LD&QR@=VP-ir*&#Dm1vcQQ5$(N2Br7iesRYuD*EST4+@%J0sYGvMcgZAh4TShxB zwckn{kYp?ofKo(f+0V=u043g^{xC(+FM(M^alria; z-2T~=f4WgP$?=AE#h_pN)O*KP3=#kqkgD)9j6bo)8``%*?bomW!C+UVP;`nM*(q;! zWbZw{8onau&GZI;vq5w^-qbE%i0=Anf~6-d6$pzM%mPtn&7QQz0Hws;+}qlotNL_I z{T9T21dsxkr=ulTrIqmORh>oDW8CRs=T)@^Uqu4dnDzUz1U>qlOYFhmeS zEXFTjeW3k0Z(y6l?^uo^WC^bzR%BQeR@4Xf1Fdz(lc$z)hVDDZ-l9o>q{s@3RRuA> zFS@5`UO!)Y#yMYiA8Nln_~x7cCt1foQ&x|@0ssJp!wg7NK1*?I)1)!0KVJW;4a|{< z5EQ7S0vV}hn4?*#Wy@G%&NglJ$HyIaUSTZlImyxOGrXumgjo#nT$nQK@l}VDE;7Bs z77N4?Hl+*%0|aGag=o&AdSm@zo}{NZ!vAm zTBhfZP3>(pkEiK*rRmvh)}Lp3o^E<}nVv_Qo`;&A2U^@c8e|UO>|uJo%JkgT^lZk@ zH(U1^)AOaK=eue|7f=i`FAuX5tl3S)jN)b%QOub}&7sq^V?3L=T56nD^KDwo=laUC zX2dUWQJLYOf>jDsc}d+zKJD~HMy-Fkz_m^D-rDT?V}G==J3gU~X)Y56u!OplNq)r> z5#-m_@)X^vZQZ)(i)JadN&o>WD?<@;lFXTvfO+8^JT?5RWt4q3H@Q zduyI$I;<4Ps1ON+g_7v>6ueLwSuPH0IR{q{Ra(@JRFU=Q9?BQNuGYN$t)yDhN7QUk zK`Y(aS5JP_?)l%w?M?2o+>N5lD?k)wma?jOHyU7#^K2kRUz0 zo#!FL0TiJOwF;{cS39j*II8VEI(};X`o=zwl58`FPzor=5j{?SyfWOKqxib}vhs$H z&G(F-|8kFo{U5z0?e;1Mq%%TQ!&)`2Ra8Y)`{wNQ!+Dl|?>xu-cAn?+=d9W>vvgLdigzUV}hS955q$S0=q&!{cN$t0pkJkTo zk&PuG2NMVoLYQ@BdkYlb2w(PKrNHbT8UJ1EDXsB{2CMG5Jc=)-e$9;_Q|6jGPx0T% z*1fVk7!yg3q+s)JCw~6J%eENoED%&dQVC{d6cvNLqGXxuF*u|!(=p>h`|v)%V+t5Dg%B|i65tx1#|_JsdS<&7kKc^yv2$K()Y9B= za&Yx>?}Vi9?B570K;=inbm`rUYq{n(>EBm>1!fir}S;QN<;uy zft4AAa=Y#O{@Z=^lHvsz9312GXTsyr{tWTp>Oq&XY5RYd8+O%FW_LNq1p)WVQ~N#Z zN}1W67UhE%mMvp1ni|1(uAH3Fqej0-ds?|OmFX7FK00RUP`|ID@dQbZwBYV%rR?2T zmBiszkL)1>S;!*FB9|m&XN!U~eyASNa7B%mxW?^ou5qI3xUZrrs-h~YqAL2w>9A?R z*$=+|aA9W@e*Q92hzSexx-&dLvw#c@#VREN^Z7L*iXsMReX2s_-3{4q-_oX zF+9G^sbBk>N{8ulhsEdTYNVWwn!&s$**=%gwN*fP-BpM%6fqzHG{{=Px&1zQXs)-D zA+bB7sLFZ>Jthp|T|#cI;*ooM{Jz3LUO7Ko$=jTf({jW`KcpGj#9v{l@#S(Nb~HAX zvA$Q)|2s_mE-x9sFK<1KD|z);MLZ@s(u14tyZw(}2j5&i^}#ZL%?9_oq8dedknhrT z!@TDVec~f~y;6}CK(RzvBGTVx%nyyc?Azo<7EM^W|5lG-Z8E4qc#zLtHr$Nhz60-F z-Ct*xX&AX-snWFeI_#U(i|40fM9sSV%T7Vb>ts8aM= zGTUn4l6>Rs{)3Bw~Ym+FQ-e#lbt~d~oWc z4K|=~gfc9lJm3M(M`G>Z`R=0fhsL#{HgR!q&ma7~o#$BYAx&*}e895AE)4IU9B?5ptAe^>`iD)!*Z1 zP-eE*pXU-}xfljNer5=RkNo&S_TFowL5HiN3sN@zy4c_?xwTGo-fru)&Opo~iHZmb zz*XRL`{QTbNe&XsJK{^Owa(a&xzY9`rGOV$8L3#5PVdL73a6IYk7q)VD*XZ^*fY1) zpX=veYCXRUOCZDZlw({zB~S6|644N!JIn34Uh(C*y`G4XnPGXzaKXaOLqC50ReR@k zR+1%_Fod#LFq`jxi#fl1@WD4W9((+N?a9I`f+%60;i&@6C(DsV#WyJbdoL+!89CwI zf*ac2x~Cb95%*sVVZjI@PdTFJPrK~l6Q^Epe_^sQ9OhfJi^@6M7g;=C6leYA1;Mfc z*(%9E8ob(bs7>pi<8qD$NTvvI6e3nNJ4YwS&A_e-Uh(u!rtgRnFqj|^E;~)wN6L(Aoq2xthQRe$`;yXcV4bH zF9BJ-M=*ci6N@jn(b#coY<3*wp$r%(0*)~GFMWLBfa&>Z^`r2@Xk-;277K38kzoB! z%Qx*CY&c|A>VCmi9^!ZmIIPGVRJiyDv0rff^i92&4maYjq9oDCVOXRC^RkF@x$`n5 zAzSc`(3RAI1D@25KwO{ZZ*@ck8rLTGLJTumzbIe4MCT$LKVEWZZYKUl!>j@%>7 zteLhxvYf~$sw#0*l5RS&tx!)NXZ)g%sqU-Fxp8wX{%=N{-Df&izchV*&@|;I9roXk zHAYE}0YUDs8P7khwXso&83rOf2Q1I)v2R{k8JwRZD!zD^;eg>S#3=X+#NBX#)22(h0!xRW2EENeO0{|8afzDID_^d|rf0^~#=@=AzZT2Tu^_*=F zfFLUXA`YlTN&o<1MDXxsqqpT8w2jGAFqLMyA<7@#n!xa*PXpH?5&7wAk9D!SVngLO7tOK8*CC%m@cW-)GUpxZvd<+#`N6(^%G} zf(!MqKEN{R-tqm9*V%0*2tQ|rMg3XfQSB9; z4}ZA9rr`#E4%hc}xPLJ2G0F~(5Ce1W-C&ml3{XV%n*%|FLiv+`d4nSw?kA1zw$BQ| zQz(d-B?6YrtF}+I=v5~>a)a-zSiZf*iwz@RBAj+q0US?6ff9+{F|6A1^1MNAu-6EP(R5E4)&(-WZsZu|9M5ps-Ak4!$|HizZ0)gd+10X%yx^a&d~)dI^5}9WBq)CV?hn>_^Qo&^y%di!3RGSYMaUsZ zRDU`)ZvHFN(=+})>8J~Xho5cufBQT3sJtsO(e07lo~-ysdrI)W+@{BWME2RFML-ZQ zD>9YUco9OA9aDpU${kkEpKT3&#)~{hIbK0>gxobY!BsvrSnIKGZog&`Z@p>^A5#uN zNC*V3p1OzYP@mWDmAu(`E;ZX*P@GIx$6CE|^>w4BU0zVzSWeBux;Yq?T1NFY%K!8! z{{P!yK0RPi>RDY*Q-cHQId5%zRyZ#^LMSREgL03tct2q zj9H0@sqHAiRJJP!%dY@d|%W5$PH>6akzF4f<>9{pGe)h8T8!odQR955& zMo5*QngE-d9^~J9V0@j!_7MaUkSS823Ls7(O;oV@^*6|`-DFrwbFGt9D7;8nS*C)( zf_+@urlb4j*6e7}z;lfK^O+*6b}QPSI;OI`R42x>_41k%tp4$;CnpDtjdg?5`lwS> zATumxSg4}O+qORa*OxCkI#jUdX>mSV{l9*k^~U=D*`_qhtrHCLqbIan{+#tCFoFz3 zh$RdI7>rS(m%vGmdBK?z`*oEL4=vXvFv}3cQV#GXR{yZamF{b$=K*;x$?MUlOY!y17kqLenRXTjVaF5F{@V@k$uZG|J-0k*h|dK%Nm3}s%UBRE zb2F$-hi8vocc^oQQQbWz0c~8IX6QDS-CGhoxz5$(+V%FiIRwJ-0I3`+(fHr|(cn|7 z`faXX%eHE)s4T!#P&rYJzv?G~>jyvc@*5Xeqwxa7BY-i+diqR|uy0YanTH)SZ=2_W1zd_Ff3I;!$)c!JJD@Zoq856l=r&*f=c?G@rM5muKuF=?~T^>iJTqd z{faT!M4#Z1#t!v)a}}T8t>l%;uND2yTu-GK?^OOb*z-`E$L||#Z^mOdMS++Bh$gW7 zmIr%}uHU`pZHD!ANmP5S!b&p65`j=AR|Foo_&$xPR@ZTU(dl;28`Eg^9b=Jr$h!XWe^xt?CeYF;hun&8UutJ}T#XtT(!=y!Dxl)bAPD@4@&^L(qipA8Oa(Y53KliJ$IK`cZ(%kwOw z+o5xE^LpnM2Z+3X-PN@!7EJtHaN1)N2j4ijZ{=Ce^i#Y?p+8W+?!V*WkLtx^(I*IUNa1)zP{hqsHa*a5-zz2dLlmP$ zWbuq*d@oV+g_Zf>_27qxn>_3rV|BZWEAe)Bb8vhYNQdmSH}_&eW&}mX9G`%&x+VCO z)_xt^H7>tWqyqi+MdA>O@GFh~ZQcxaI6h%u$Z4D=v}WXK0$HAA7|OA{OYjKUg_D(@ zg;KVXck#@Ik9TT0F6kO)^dtP&j`qFyu~pgU6&8+5vFb7Z&Tqlw`8box5JrDS zhJ~-gUF_d4QOdNK=0rs(^SDm9JbFFe+7;_pyhgz}mzOOAF%D~Uzb2TX4X$Vr{dY$F zRy4!(9#bmmBHW6;?3h$${K`9ypRI|`Vz!0rH|907g2}D#&PZ%t&NS6IOYOws3y+u* zKs2`4Z^rst-hM`l6qyw)7;+wT~s;iFc$x+EHc_L&ad;0##ithoSEdPqEeLT zu~0j_oiDlpf`GPRCop9Urba#Ba0@j%8#F1;8;#km8r2-ww9^W#paGwit1@ z9D#%ZfaMc#XWklI`gxy8%bMD|^Gc9#s>}(DEO6c#180 z=NLyALMTrN;#mx7;s(5J!JfVPJU+g06eCs1^&=)>J5E9ukjaki!3U2%`+cvkn^|ka zdJ0PhQC3zNnWw1Qwwv1yt~JY1UIWecV4KmIgC|~mk&Ri5LW~hlSnP7=blm0e0R--5XT6V3LW$2x6pKf$qf$D-3rTpK;U#tr(t<~^vZ=~4~ zl!lYSQTDf=ROG3oN{Hiy1a3b+2_`omaMNblSS<&mt`;b&EF(%BRYc^N_fj)GY|H3O zo~e;}akBPiaSnswc>QH~C(lVK`+GyvXkl8uw}neX5~!Z=uzwbOe|hJc$)6c$0BcgC zDCh)mvB?+FMUe83u=O6CvRp@E^`u+!&JeTf#I?i^@VQdD&$~Z&6JKx$*^mpd( zHyKmD-(}uYT-L9o_b`)rJ0yCy_(8w;>TPT>9}QwWn=L$}O#g2kqaLg8VbgQ#INvuT z&UMx?#{8NI$EeTTezkJ$AFFj^{=8b8?U?InT1ox+w@|DM>D5X;+Z*imkn;F|D-DsN z6rQ+l%7%!x8j{~JwaL&LXUeDV^x5-8@Vm8_@XLEx-^*Z3A!YQSZI+{eHw&SHg%)tS ziG9IMP4(v9idxClJGB+e%`*W~vqA z^SR}$e_n$9Twp26e-(Ud>Cp*w=3W#j_Z6ImR^fGs3zm1e^ZI)fU)=Y&Uj97`~Z35>|7nDjvLU-S4Ri~1+bxo&u?Kg#Fw33;AjSsi^yhpx|5@^qM( zu-{4%!d_9#LLYaw62EKaH^Iya1GaB@!rCE;V>rw~%&`zt6nWSAc1`;xz6l=MG5495 z7TdWJ3WVWQL>0ZA^12cxIlc>Cy>RuzPkn2j@?Mn@Ph}_~Ng)l|A33$MR*jU3-okws z%&+^MJZE$(YlWeNYse6BgcT`6C|I}wo>;I;t!4~erXi*NGlK)88X2lU%Ay1q=|zh>@C%t{&<=X;+O#m1HhU)a;gA zN%dJrLHrP0cH-!YHIEqEs9*HMH_w}+xKssVqUWZjynJk5s(!XJ%uX-O2sUj`$VVIbgmS8j=~vEa*6 z{6o|^i)O#R{gh%37*mNMz z?muQoz~F+&rGr?CDPa)?#fg{*aYq4+$81wUU@O6 zDw`_GgEHgnurp3uLq*q~K~_%6_f~DwDypI?s-h~YqAEH^v@%9HW@zQM_fb;WGM3zG z)}4+1TwFor@y2k4R^E~;DtVma#VoksJXsfKO8z&yi!#pW&rCTx5by7H$NBm0Gc*pn z9aU6CRa8Y)R7KWg*pq$=w$9F4{?WcDH~{fvDx(l_3}g{;b<64#_6iyK2cai&v`S>5KG2(~=l_sHuv*gGc+qRdksAc>)@8EZJ+b>MXT6%4)jb+bjkSl?k2 z1Sw02j%!kBElwatmEMz#JNUz-2P$3OUgIru~pyw zys}}fie5CI3fAjW|G`H`8EY&U<$eZX%1|9dgmFpUe2-s|dnukgC3CEht2}o_+vazz znU`|eS>CgTP1zhc+oML=XEP;w=a}rUuP-ge=VzOTIUUKN)>8J7x(AJm@hDfqIXbit z10cZ2CFZ-cb=V3e+ncLQo$*!A|EpDy(&%r_(M$7?(zhN-j_RTHb6dA(_u7OVKn4K_ z^=w=mWfI=m)k8aOuOoc{FOJ;Tr8X4LGen2G(vdN)&Fe2^y8X(*Vc((P&3`5vTe`2a zZ0U%bx1@y{T=L5m6Gq#DM-VEhD$8KNDpEzkBho^dfBo?Mh#T8jpPUGBJVJyZ*I2hK zE1o`XC0p(rKOjbuqju65wu|KM*EC@tk zAOjLW%c>vB{7;wRy869MmS9-8w0f7dL0*8c7vODd+4z%!VOf3IH@ z8nXV`><+z1_&-s+X2aW>0LrlpqOP7^PoCeGFZmU@2z^UYfg%RV8YgcwFrWJp(1IuP>|W6B{&FaRu*FuY&eQ1jorJuz;Z@zP_WrDWH|6^`Te#FDw$ zLgBUEe4j_ie)7M0?~>dl>BdWDgtK$pA5P4if3bbpwtl44b}s0Clg4TGFX?CU6HPOn zdgD!FEt-Dc+w^QcG^<oJVsnZjBMJJ;5cBI$RY`{YOw~JuJ1%3cnh}E?T`iH{+ZIaap<1UKV;`$mW|mG%&Ws zScio)#84g(fG7`&;yH?dZHc$>zd>ASWJ=U%in;Xw)+0(p*N2q}ul zA--`&G24IFvWY7~cLY6q|5pMn7DXn>*J18l9>M4H7PtshIVw=B5HaGI9_ftrLRW>J zdasT5$)K&YjU-vZkf8+f31oHX9!mY+?%btQY*PRVMB)U6NC%WlHn>OtF6`;`_ z^shAA>mO=ZV|vS{I$HBi#pm<-Tpl4uzqJ+OHq-VGO_()e%BsulQ!QaaDGOAI6Xp0# zU;{$kUwOG#u&Xt|IU*D=m{5!e6Pa0WPPnuRO&<_)X1tjE{f8|gWwUVCb%3N|;Co5P z&K3n}yodK!{!5!K??2=nHd}F-Y@}$$R7H;>l zd?E-86(j-xpg*s8{$A8pOE;1>4Y{RkSw&TJepn;Mg<4O(a~+#+9B8?v4m8O{0n0Yq z_xtzjE^yR5Yh4;2>VE&lS<}TvkvvMzNrM=+bWWQ18I(8VT-S8+k!Den4HqAv6a$GW zP+~b1W{q7q_1>B}X$I5y$W$8V`#YA+<%Sxx8+syRnc*1tWfWr!VHgG@9+P7CtxP>b zTvl=5dkgwRqbE|XN?TC1TC1pvs^}kJYAS7Pa5^T0#`Amca2&9?*s;nK!>#9dWWS5= zCUwNTEElFcBP*gp6-m4!=gF>m?#Jf;5>9h^PfiOpZF%92)^jZ-J&EIGkrh};5hb&v z_pzxocK$}o=57mhKeoJ2v%V#3v2HXLpsG+N2qReq?3Au+TRr#4!zq7Ma67sx2<>Jz z55@ArR_Q*fGmcrie*gq1hPNN{N+gc*@kLpQ^DUS|3fD; z$uT=LZTI3|lHxVeDXJ>V9LpjGpjQqwxHu|+xsus0kcEzzu#D-IfhBQls&do z%(27)9*Zm$05{e%{rCT6f0k+(VrL|kEzL9|sj_GJu23Fwz4B83=vU<&z-Rla{I1a9 z&IjI8R~j*YVX%lNm8hs_;xa(xLdK}O9)=VN}z^}u7V z_ANnfh!S$9yI%@OQdvM%DiGnuS~u={GTzAeUXIxtg(J02&}|SFNd%UU>HJx zYlNr3?UB2S?(5y&Y{BpLdNNWR?7ctDD}lkdtda+DQRu}!_mgNe7RFQrAxTVUZkNgkl)F`sDq+rW{;XVG$~RY2xwF-WAI?C)AwxOLQmzCt%t(!>kLv~d+b}v@Tje2Dtqggu`Tm2!{klf>OpFqemFF)dOdzZS zQBoeUI{N5Hx34H`I&y#@Z()2toG5DNj|F-M4QnL&xG zG0%p$?A>{L`!g}uFGdhyLWwK02>2o2Cu9%x=DBtGGVcs6;pak&VD+~*>@_SJz}`H? z6P^({$a9FoD}UQO`X{Aj9RoP=w(w6^l@eu3Q@dn)GtnwjJxyZR<{t=`_5U`f;tQcc zf1c{~;(9~ti~=?3QzTb`TlSB25mA9W&#_dJq!$-{-(_&ES&q~ScVS(q)3mj}F4$W; zQWcYPT!>*@qE{|FbHQ!vL+x(vfvT-!)`7pogt!!SV=; z1S0|!E~;p;zma>L>Zd!$+o!S>LJU$g}azq58{1{81xgED zR@m+V5mOaoMnZr_7q53a?MrjJJ3|GH-x>=GZCfQkMS?2GqQXd(BGm5;-Ld4>kx~oR zTBwf$Hn+Q{aCl*^vhAj(D@uD;JL6uMyF!npfWyt+ZW?)loql;4D-_BQVGcqw?D>h? ziyKWhwb>|U)1QXYUT^AnXO+#)*0GUUjzYjf%9le@+Z+0@-L?1kyfKE0Kc^yDMMUKk zVAf`Sh}p)Mp(i`ttK_Wg62$R}d1lL8myr4qZB|WAf2iw$p`F ziBg6LJXDy%X@^5Qw$1=*YH@23d4@lMs(p=Gc7 zq&xDPMsDxY*a?!zswzQ{DCGxc-5=UJt=^s;U)xI#jH*JBfvgIdsQhbsl6@Jeh#m+H zS@T`zJx=QjBNnqPMm$S-ND<}}-M3WFeVlRK!B4a#rwe#gt8|Cf6lD+p*1Pw25K%k4X1l-abx<@nPW+^~j!W$ub~eA=bw!>%-j zRA^D4Wl7V-+%E*1=jEQXy&|7osG^g%(bdclWKLJJLrzIba-|O#IcGxJi~H;q|1&PG;+|#wHm67K zyW8COuP5U49dzYsAv?uy8%Z9j`V_Ly%089;?)qs7xS=`FuG?kYU7UwqX9KPC)mNl(AYv0J7W3$GSZ z63@trs4^PCm2{^>g{*h0ShJ)wAe@ zcOGW?hB3Q{9KkU(Pf?u6iq{e6SHn{?c3KwsNSIrYB25XbNQeYQ2bcJI=zU`!EK1k( zl;~6KyHWou6RcnRy`a3}q*$lMX*{P*?OkXk8^5(^UUlo5o}bs8N$mP%d@!LYn$tn$ zCBt`Z&(yw^iqvk~BG^v@y9+DO979qJv0n5`*Lzk){QjBlBK>v7U#l#qr<8RSq5! zpFT*C1jkW4#Rx1XimYEDe6C!*4nBuze!p-%&!Zog=v`;MZfm$d#4bxx0x7V(Ac&5U zsyoeK5#;`Mdz@d;Ywq#gy3x%)K%UM^mCG5Ddl8Y~IaFc3VTw z))~cLir%VANZUe(l=(^y`GUzPNmZPREbggshF?!7 z;lrg*)!+PLY}_p$KEX4D?D)o+$M{f^fx)LH(gMwpEJ->1DHuB?E9&UhzQQ$W*)MYQ zMpyK-`uo(}i$8}kIi_c%US%SJK#+pu6eT9u(ljN;Y>R5*DKq$|!>?biZhnL82qT#g zSz2NkfpRjrPjlbgb2jSJ2kyI8)_YP&osW@xIjSk1l~m!<3uQB_-!(Yub`>IT?paf@ zSBGV9gx9TQ!dLZG6?w^-dojI*r$_5&7ZPIl5Cl%8MOoB*m3~4x)8Z`p;QO}nxE3(m z2kq4Ts|S__%bzq!(-g%q6zxz)s_x8oqf^~&hPo1!k%zifZ&v5YDE;ubp1fE-X1v{d zfr0vEo?jCh-OTT$zjWUJAZ+0Igb}5#_GcdU+rXk@hFtB>vHsu9Y2^RiGXX!={1I7K z`yT@1yFBn5FZMIaV)uxCvsii{IAGEN|9wwB?pIpNe6#=R6{bJo7xtdk{NF1TAdh?A z_kaK8zasC2@uRar4 zCNAUe#|G~2;{5Nat@Dp#`wM<8|CK5JzfarYzt0yP{0^gUicnWqWRGV4!%=mspSjxK zee~;yoX-*Y?(6>f%=FifT+!Ws-J^erSNs0!`d#h++Ub{gYV_-WwHJ^1$K#KH<7r7v z<9zFNDI2Bv`->Gz89vwVe{CKD$8VGN`#oUI_ck)Tx4usGb*ZnfA|}Bm`g0u(Y<0SK=W9Y>-FJs^@7>af_22*Wz0s0TDd4<#@=A9@-)>i|p2!V|@Z2$6cSGMa@Bn(RuXCMl#zjOL=y>ty zA|dHerx$%Z_3_omUFTzv=u;=Lb5UsXi=V{0|5mS%(P&-@K!lFZjSr|N0sBm~o%M{YBr0_6FqG5p_AkexdJMg&Gt$^aBFps`q0_ zV}DOT+}siP`!|6=s!fyqePV>MZ~v6B&k95e=zWuwZ47;<6A^}fb&ohh?|t2F=ucS) z*7t0UG4vbw2t%*ahu$*YjyCi4SloJiVW{?;b<1)9E$(T^Jbm zx&8~a3ea7-FQX0gt@DYOLEcFZ^aDpl8u|$?yRqM3GxS8+28O;`-$I6d>jz~FebMGN zLtn@1zt5ty0N?)1&*xhA^M8L|;B55AcK`KDB-;&r<(*{=eX*Ul$U~ zpKfe3^mQVPJ+_m9>1G0dKb7f!j>U<7dailVf8RYLq6~C{a-B|xI{oT&rqe6ZnNGht zee3kE^8=l3b-LI2fllYgs~Gz(MU4H2fpNZPtg+Ym!kdA=zZGrlv0bX(*wE`o+wV1@ zugMP>`-OI6|5Svre@ip=O{yCE16jttN4q#fKPy1Ddau*P@#mur{f~-^=-WRRI82Z(L=hXWr9*;8g z5+7^mzY2U$?|ZSv{(mEkeZ>kfhMo-YbG<)4$k^LeV_$cwu^+$O|6GRx_pjRDf88;G zbu0v;bSumX&~HF&*uTvGyDKwoA=lR{{f#}Yr@@FH(==TK1Mep^azwQ7Xy&h@o$HWAW~t=pe;JBx0o)9o|59Y&Yq^`^`DXpYhCSh{@+^=h=s z>UIM&dyK9h=yn*i|4o{e?RW4!OL=G&%9poY?J88MQoce3|A)2;6@35n{a>k41^ui3 zANxNqU%q7EQgzCeyZUiu{YwEo3hJh|14r{VC=8Ma_!8Jd`va~HcpBIb3Ba#IaQ0iJ zjQDv7=6)3L5Wq2j)e=VB8E{>|SBe{P55ObgfKO$>WdJ`9!EzHJ+1F$6{`~=WgWtCX z$5?&9XF(pV3itrnEnfn>3h=MsK70f4Q-BXcx{22SKL)ra;BtWXgWS9v4kUB~{5!CZ zcL1M#+lV(-G2#ob-eX}sH-Yta9M;EjI2qOu4%{4vnn6ckejfz98Rl;m;3U9b!ThxV z{2k2KH-HBL{t@P524D_wCBO$@{_a^~#B=Ky@fyh5C6zPc(=h%m0lx*~-wSYOz%3#Gh~YK3q9r;38u>^ zBW|_2Oa_@NEP1@{sU{+4n^yyvj-eJ(s{#F>?hxX3Bv z{fa^E;BUV$;yxQ-KX}!Mcfs@bf6<8lTn_wUDaaR#fu0r_@w{0^{J&{N++l(dFCAsX zT}HxwkOtT5WW>9d8OOhIcjNk8cN*5`P9y$ygAtdWX~eZg81bU|M!dAN5mz~3e7;XU zGU5kdea(jXX*th`+dd8Qg2#vt&V~Ku3D}>f8u7x3M*PZnBVL?p#A}n``5i_)_8sH+ zr~GLg|LMbwIO9#@c-5R^#3LRzVkhv2&w(Gz1$xf_djA6GeF4x10qegijCVSWZ<{$V z9*-Jv0~pVWkkzsntnZF)BaTlrVsf|cq1+kk&=&Tmz20jf4ZwUxPfk z8RVChuwP?RhCjfs^$Xw+0k;PH4aA|n19%nS`G85lTnPXV3?cpTt#Oeg^OGSDN0BiRlB z{uuBqz`X!B2iy!W0r(Qo?~8y}0Nw%g`Y7Q2_kY{-DC11^c@aREmG zK9Bn=;3I(F0Q>}CP`7Q#fD-|?0!#p|WFZe+fbqs8X9=^6_J;eK882{Y8|W7w0=hNmr z30IxV+sc5w_WM&t31dWOBYjM$WSpP!{f*;Uh&AG}zZ>7T+g>A%{KSZ_07KvXni2mt z+laq_4ec4#h+n+Nh}Ty);+3&L?|%b5e+l-Q&yD!a9Y)N54EhY%=alsz-#iZT^jEMx z9|8OGIFKKJe~^8QczbKGpKzd`LB6d?pwE^8+zs?w0&o`4_X{8ZH-Q3eX`s(egzUWs zLBCxE{*Xw(8$p161O({sz<*K#@K-=yKz_Cl08a)CZdKb5z`)*ZT`lyD_JErK2J?lD zw7`u41G~00ve0Kxf2nAJQJ*Pmp+CF^@{oe^HpnN-0rv%b58%>(Ujcbxn1wuX%0jrwv)4CZRva~Aq9h!?iU0E4;IHr!&p*6L|=`1}p~Sq0jN%U_211bgOauwVWN z_WN&EzjwKNFu;C=a2&^=2vXuYkRIEmT{M2L`(i z?8QaFU^E~0*J7~$ErtDWBQW5SfO`W2b^!y92Ydwf$3DQIt3v!oPw;QQ3kIioU~n1> zmZ9@zgr2fQ0FYzMZt0E2tUmI+vA z&-(o_E)Lb*{(yS{2KHft0PlhMS^#)9;L9*SH2`Zc{tm!x0Hc4bGvHQ$S-@C968&Ev z0sg>ZKC&$MC5T@(5Wj3-?g{c=qCFwr0>|YM$KD{0xy?Ag#~=NPYeT^00gndy{SEZrS%4n_JOXe7z?A@31pKjuzjg)Sd4R_Q9t3zG z;HfbF|APh68u>Hu-&%#j?~j!LKVz{U#shu~#%H9(cn<=6FJN$g*?va z;|X}Qg*|mM_`^zo{bUdb*bTs5vKr=Z5il$T1ni5TZ)XCI0{h3epigUnOMv~O32Z>s z0Dl1T@(Ey=2LZnU_yxd)0AB!x+YfMMz-3^4)&Tl{3)TySd)vVMW|IJ41bzqZGuv*! z;I6bmxVjC(TW!k#L%6nW3Sjilj0K!zVIK!`agaZ!hlM_hcmxFGybbZR)9`^nVSaj$ z5tq8(h$n%6zb5$S4g&q01p3K>4Sze>ANPQP;$2X1zXAGc0s7}|&^J$kJ*zk1j({%# zJ*EM^3-GFvMtO8TtnXdG@Zx8HJqYaG94vsrFu^6j0C5Zq4Aa5>*b?v&n6Gg#U+=(t zH3hsD=3@c~Y@NYATp#93Ef=0Y9*6mx1b7JGcsO4Ujc*6OK`p6#lzbt zk^uJu{@DTWYT%cJECkA*L0)(l@M4SeYWD)Z0Q`9i;Aw!10sa%@i4}mC0B#XwoDb9w z@;V<@<3Icc=VKMf$6aAQ>RHTJUgzUe7~l1Phgi(Vp?sc?3ilcL)nPav^A;GmXMsUF z9pbS{0l%36@f+^|KlvZIz|SiIfBp)_yC>LlIl!&(yfDbG zQvjy{z6A60GT`=re}VD+81QR=2cZ00)kt8Sn;PfCUDb%UL;Tex2)Ota;t^hffQycR zKV1m&IykiIU_1iYA76p>@(HY$D-d7M7tSv&g7x$z(0lFXMto0Gkl(?D4ec4uibz2JzfBzyf1@Q5?`$Cd^N3z`w%pe+GQQV!y%j3GZ6i%aihmaXi4hZ0ifSr-eNn z&o5y79iC?Zb;UAXYYFg!AAlaK0DZ&)o*xySUkZS$0!U<4?8|fIkDg!{R*t z8o+ZcFzO%uEpP(hLRd%0;=Jtyz@Na+@%+Mg3;6}wUGw`J6?784G{hIu^)G{Sic=CeL5Of}c%_F8P zFv2;UM4W)cfek&06qi^`BA_P0e=h(^KQWVfT4c@ zfv^YIS>Zfn8M;qpQGt1!OXD&9D+I6jX!?iORK_~rT_;I;&XX#@xmyTO0> z2gHl*0tNdOz>#1OYz^_57~ezzJv<5Y9|8373eblW*8c;5Uj=)j7yRKOU;=O*z*WnJ z7cjO!JXu%RkRO8yEDHLP3-;p_3w?c{1%`CQHV!a^+uHts*ZT?Z5y0r**baD`g*_3^ z3%(8*<2f;(!7K|5>2-s~AM_fX`Ws|9AO3{;ylubFIeT zDxU<7|7*aon*x2D0eSTYz`FsbTIAP%0O+d~U=r{tJl_x4YmrYA^WhN|=N-xe-fLm+ zgLE6VrWXE6J^h2ukI;T!0=|#&(GuYMEbOyZ=b_O)OIz5xP#>*&gZg1!^~L8Wj%`VRI{|KC5#O=^@KnGmU}nc&PR>5IG=;|&W3<%0X|@n?{cHXe4xKzxkdiVX8}XFqm2Sw z#A5u>9?;2xU(~eV2Uhu|tmOMR3wug*9__b?BkwSLkA*%_=my_E;va_5e%#+8zHXw0 zeY2B=Jqy$=8>m}B`9^TR#P|!V{B3BzvdT|g!-C$d@>N@5tNd>>EbN6%ES|r59_<6S zTfe{6=a;SQ$v1oaZ}oV`-ejEL<9`=0>=%LmpnvK~3k>N(gZwj?ZwKQ!x?AwKwifGy zx7dHIuvPvf`6w}- z2;3DmNN;U}^ua;?Q^d~#Mt>^Ce~lrG7T;eX0P-jV+{9cm4nRFfVD-cTBVP585kCa^ z{1(R;@kbD##e;!nCk)^;Fwn$;L1rn`Pr4V*qf`Y0Sv@$9@-x)4`V9Vcp{81907P}9c zpl*M`__+ryupZA;@2ixaQGEwoli$}S|1p2e^kKzy+>&Y3XzIMV<#l}K!lK@HeYvl` zjt}2+^ke4bgmyZ9xr%(aaNCBGj*qSW^UKFR9_QAv9^b2DJ-?Wahp%+=MH2SDqT}^H zKb{n|up3t!#KOAWxA6V^&krwiL0S=D~#{1S{NOy1h5x(#p+Ft=b zY*8Nr&#N@H&{q+c&7-`4@x@S{F({uk`XewN1mlyjo)gNqSU+nfU?|6E`^_Rg5cAo* zXAvLx4B*Lt1;8~h9uROm;7Gt2pO5*)e+0b8Vm`1w8J-_Uf6io!{SxExRlrH0&<(@< zjKFY;1NMNyX*A&Nm@f+O-GJ?YPgu7jS2b^P7z<>eb==e{C_ppIOLXDJJrW znZAbhs8$xZ*$wJ*4J_;jb#G9gt8QVxvhoL&vcMRRg82p4bvGW69r~$p0rF5F@p&lN z_rqW#j)4O{Z6E>D!mo|^1E}ZP2=tdvfq|rezVaRv+*=R&iwOG2TF4(S00Zv|4&;x( zKyeHXIL?9q+hf4+2d4u+Y-5zSYk~l?2@FEJ;O~bm;>Yi^pm))t9u?M$C=B?L1;76u zFvbI5d^6Us{M&7i01WLJFi56Aft$?` zAXW$VkLkdGIzs{7`4E6~c(oC?2L<5}(PVw*-P24-T@=ARtzQfRajpzkvK4-NBw+4{$u-qriaY0Gm75`0LByAczEpH5~-R-(mbW!uXE?f$((@ z2;YP89}M^@81Dx_fP4nVa|+;cfa73%|Ag^e1$Z*xGaw%w1l$JehgifLLHR}7V2gUw zm>;;TMSW7t-+}c<|7TH8c8^8=p2ZgW|1`jOzB>(YTZ{AG#Z9o?*4p!7MOURKW9xuq zmL@x#n!_=gVjW6mvO`Xk($XBm)yy=9K!_?Q5Cp5R&N_eFCwz8jN->N_yVG0jHM?3H zPuixv$45S{GuV3B@9$Oc+D~7TC#&8HB}IKMx#`z{kYkczkcS2qD5}o zFm?1Cn_2D0Vov>;TSkX^W?7*WRZ=xx<}~}xN_%$S{XxX?>%2FbJavlHccQ}ZIgWR^ z8+>QI^)$J@&Ej+WEt;cZH|e@}%J|>&FCYI1=yg@(u3Y{;@)lj+4%e}ns1&*V-ZG#s zJw)qali!uKF#ScEs60`*{QI4^HFfr!oy#@MOw+ffIl=oxU~3`;k`yR`r5)`vlI3() zN^*ZG(WOY~DQ-t`h%&2vHJcS!A4YZpSpr*29zZZo-1p)V9|(!z3@TEI|+i z>*$o6PE&mnQ_|BMlA`pK+)`3*pQ49n-yy2jjIm)~kES$@lmwY$Wg+($ez*?A5Wa49Ke^m@7h8&Wfrf>`|@sdUo)R3W1ztkoNIp}A>X_I^O^gPNwU4F@0 z{Utkw8a<99Xr5LShULYk50E3z7d{+=RxDjfE|Tk)>*aa;>58#`$Lr(TGWg}fElZlB zNr7TTUU0M-s>;JvcY8^el&dq*CM7v7T}n>x@B3k?IzKsnU0tSd)OAinFHhvfPv$Id z6Lx{|3?VovR^b?i&FuoS+j@Im|4!Ih>TBHvHrO6K1QaWZ3`cPc<#45S&q#8r?)Hh& z5Qpp}o7Mf)U1bDi*Y(BH7M8_p8Yft8wLJdb>^hu@Wq2Oop%xZov-{t5llH>$IYcG9 zL2T{oX_vWe`k{H@nKD5T3?)fUQI>K)_x(Jl8@4;udWLR&*_M6jVWTvM$VFYOacJG_ zC56k_{+TVC())Y1_WA4kjSuOOy(@zi)+AD7Xp&+`o^>Rqj8fhGl3gjut=w)Yv$vX* zGEz!x$CvN9Lnu?|)m!`;c3VOFH?)Fzys>d87{7v+8+PB{)1~6dl`kgfGOG|$W+iD+ zB_vX08Npd-&%j5@uU=RzGLLt%+Xi|hSJO_;yTU6K1nFcnfoC)!52D#1Prr|r|2m?N zE}P5=7R@BL+u>G~3|V#X93?5DC~=fPt~zvfc*Et%ag7Sr#4T;+Qruuq<_nW{K9{Oz z8YmumF4IzyR0qK*0!>H^t&;3t_kTwZ8c{N$a=}Oj{w;alq@OGI`~rO>kJ!vdk`Wk2 z(@0I#IIZTHZ4b^qFy3DFUpq2R&y1Fb27I|*clQ4nLY3obmgPl?V;x$el-^BB?WiWE zs_wWge{XsveQyz6S8oVCw)z&|YnaR4%1T|(@+KKIu-sH+&(Y57eye?=y7}JdR%OR1 zmy$lzACjaH~sqV`e_OIW!8$c4e{*%Zf{K198()FN0K}x5;V)QgdlQg z<6RpV@oFY_7~(nFyYNe2)-4lkS#l?bw2GsA*XrhBp4~IM1>)q zcLx16V9dk1yfZzdyrZg4O(6tLl4a@MCh>26v!hyc;oHu%T%M+1z3|KC3wne|YWA}$ zvcu=cU@IQ}b-^3n$?l$WU|VSQ4fa4Zt{J*&F$H;L21!G2~*DSdEu?PI1x%_tB%-Gd4AI?u?;0tKV;s&DCG-7Z z=PuVjlu#HAubYb5?x=<#d)W&v)3c>c+0FD{je}WvwrP)L35FwRigdWr`l#uxWLZs1 zOL4bV)lL&kU<4|YoLTuI;8UI}qyN)QB!BY2i^sEKNlnw;KE z%51H+PjRcRA;}E~J#co$GgLy!8#HhrYb+HY|H5!x{dvp4Yo;}Q4BU;vL z9z5vR=^RfPm7IGk#6*v`(hEID^)>f~Q!K%XEKPGf!%_rFN_y^&wx)M@*t50P;kgqY zs204Z<<#gBQ&LhLs>Um<%1as}$|p)~ulw?@kK=FOUN_ZqhX3Vo7rVaKtqZx=ITc=X z5&}sHgjV8<)=l1xFBzu?xO#!Bn}x?MxA^Zu3~@_IW^tNkw|&%eaOmbYCT3jYOi|%E6HD*{Ba#FoXuDIy zWF_Ww0-R@Gq1BwM6qSeoK!fh8U8l$7-D zQj&VH*$-?}hRwzYHNcXPXoxf>s2Il?0X+%=V}0(Pp=p<>|6( z#7_y+!$)dKnnG~`&k>|T4ds7kDPl_`Ss5S=EBA1v!Oq&6TV; zG?pa=PF7`AbAHm*X?=_LOrJnV3q?nQCLIl)iGigd@S*O4XPMVaaFMH|4+0|tV>sw1rxMYk8 z##=A-j6IqXlf}n}Fiva39W*O)PhPJ4#jsOx@wbWEmwKv<898}xpSa+Km#Abo7$Wah zq~)Gs-?|b~-l!P76Xgt$rWr{SM2^r{V#C=Bbe;9Far!m%!^V1l>V~(b6`mDeKD}l9 z-fI>WySYV0R7H-EI9Ybm#K#LFKiMDkt=-IxXqAUMznazPn?1+%K3_y0?|-A$Gk1r* z;Cc4)-Cz9_tIyoFFt#vFR5(rHSW2dd^YXK+pE$Iv$Ui+&*KS+sDf8HU&(;20r>Dgs z>51lKLKI0-;Z*5`i(}IF?VcP}{EmI67d=zUciga(DjCcp0xZPdD(Ng8$IGJrEDk`=ys5l!Rn1(kxi|`Uq8zBif3(&?y=E=xo4df zL{TJ2LhuPrL2_|Kz?|F7J6V%DB%NhP=W_^D@&<_gqdQPh%HskN{K&tL{)KgUG>r@Xpnv+K>m)Yk$JV${w z@A?{_&)1_141opK>N|KHwC!CmM|VOyTp@4Yr|yvF_QV+bgy`G*Jhy6GGXCW;y_whf zJ6&t}^j|7hP_}}0J@dfdB>AeK-I>iw4~e?N=#9>$eno?RcdHwDhs-Ziu*CCqeUkt1 zaj+N6`@iabxB9uLJM6irJpTPw&kuQvu3r#sSJ1+>Y^!{!$k)!g%jkZt9A5gIX& zRSAKWNsU>!@%bX_PA-qr4F=<`^Ue{rH$A(Dx7j-8SeOiVEJ2I3NC=`xiF97WFW&SN zd+fc^MV{0H2}WmMKRW_}%0*e`tx%EKgX}R z3qyj%D46wmfkC z!-0N-$r@Q~k~ynul<_{@Oy0X>F4d%hc6-{Gn&xztb4f(lHhK;oe4zD5nPEd=HBO*J znk6NgmhyU3W20x0b2?RSyKW$E8R`bKMk=zZh_u2=pJgo)hYd`Nx!#C5yKRf-iz-!T z)^mgoN2M8dd9$qAy-zksxLM(-5w>?dug_W5i+jlQY$?eLilE2}PbnInIByi-Lb~(y zU}X5)z3WM+)b`tB$vV}BJo-q{Jj0Tt;Bc$MR5`s(N>XaND@ko5rKV@N)wJCowI56_ zFBy^BVLc0Nz#}11N91_hqib7O{N1WN@BE0o{l1{(%@mkl zrt@rhWvA!hrOv@N($h?A7%izjvovQ?iG0x94QUuoH`Vwhi9%a&v$rbZYaojHD#Voq3~2 zIU;PIc+OR9^TdZ;^Dixn zMt!^G7onYgV(>ud(DWoJ)uAYiCJU^S7bvpG%rT!5x0tw_PUfF`PCPQ}i!~kf`XZBp z&;KXU1k11t!!e{kfpo|8^wf@5gJ|`TT5-Yn1F18M#6Na}&sDr&Mg60iST6LA9$_(` z5qVq(W;nN>oBh3Dz1^8D!lDlr2)^)$J61n^<=fi9YVIhfZn@zYo+BuRBOFOm@{mMT zFC&Di?w9t^xB0@ew#G>9_nLY-(F297nPnfN zQ9k#)D|tv)SGww!60g>lN_*n1Ct4j!>KJR~N2zkl-svk(-3oigk=N=kgeY9#D~Kk` zg6bqWl5rA$kA5#>KHI$TJ-2B5KQs9}>NedM{~mSQ*X1G4mWy+GJa|R7P3H&^k=`wZP(_HJl9WuS_JLu3h6lARh!lk}>4SO40t?ePSRa4d0~ z2GcB0V_x$&7QN2<qq~?vv5H58TVWZILjdr z`2!UM*+=V&BCv$B?q$0F>2;-TcTOqeKRq8N@0ytPMa9s=LlYv_Y|VShq4OU8-pNmo znxPjn3{_BrWNAiZ1cD(PL#4DfDT>-bO;-J>&RZqAq_piLioLqMLRUK$0LMOvn%db- zOiLF$g+JJ`^Ot(2QKbUU@*FLYlrJkfEn-yZ zVisJ<*K)G4Bufb_|;7EnagL1v|aMZ&u1KOT_x;}NQew8$WB%!cs1mX znAeqk$>VxygjV=;SdKzbs>-S&Me%a3W1cQ~#P-j2IyEZ%g?;(68Cs=fn#(<_y6ic} ztfh#K`mAjWIcuVmRz;o{1e#TeYG0LGAEMx?napYRdGu}KLy@+>J%{I1pE2{%@HJta znjn#+Osc9t$8Q*WSLbR=Y`3E(Oiqgb+r$4Iz4eF8@PYB1C@F%hFucNZD_eat+gJ5E z`UXesZ%?J3ox99y5_TyPDn~OKPm3(i=05bx=6&^KtslF8WEy@asZNe&RECsg3d8T7 ziVfZ4ZEW5V&0nh5Knz>AhUW=MBL!L@Rmm(nYa;YE6KqwtrslQ3*}W&|B1w;aB?dDs zP_YD(;%SnlI7h3r^zJEs$IVBHp@3 zXV2XFMu^)5c0*a?NP^}hQe%b;eR`ZHJ}K^cZ&$?o<{a;^EgqfEggUE03Zx+LoX_K} z=j`=m3>@F+SfO8cz7|{jA3{AvyldyT<6G|{&4oV8wAELGz)Qw{|9;b?kBaC?_+67Cc`PI2$1A~PcTpNkKcO?;WGDU!K3ZO()FDT3H-CA?28s{dV?z9EvL=g51@ z^S(6ivZRR`+SZ~i7iLLs!WwOl_@ybEmt>w%6`3MwlEnIhdEZsadQX4%(tr_<>dA~( z+Cqv|SCbi245_KSMlq})mRS`4>xJf>Rn}Wt-Hd>uoUg26rN#3 ziDs_aVoHBslb$p1a%7==dyewn2YVgd^7ug0iDg)dWmTW`jR@MmU(cfnD#BLXD?fMt zgmH_j1rv49#PWnh%Y@7-PDL5eW)a=|nc?v|nP04AH}p369NUjg1B!Yc*Cc*lf0OFo zHh(w$b^}?{-0_$5OcbLzNhirt6eW>sirLw^WeBRxjP5-tW=cln8 zdBp}d=Ir?Ac=l>~&os~4b!3`p5eS+QIA0-DQKU(l=ES^LP^slzvTkXkjZ?xG&mdHh zbTSGf$P8sq*%gzMHcIC4wIXeGysHOptaV=x{hsGT8{Py}R5d3_kdkv^$wk#VK6)zp zzm}J}j(5$63Cz@I>zEt*vP)?US2NQb5-F<`qw)m9iT31CZ~B;M^bJ2n?bDg5arcLn z1656?d5!U3-cMG$*u6$gL_Fvg!~t(kVy^MUs-d z>d@KY4VNd!H3GfnpW29+L%d7V!cS~YJ$EIRo zl?o>-i!wn|48`Ull7RNEd1S?&Rma1q%{0SOG{q7eD{ypB^1c@WzkI|b%!>Ao-<7bp zT@&*g&@|(VFJd{45Jj5D8?^2b7zEQ&wT$=Ggcm)nFNQUnkxo@%HH8%!Dzw>5x9XT# zgUtS({T#fvOvwSxhwjmz<41dl=a2|RB_&lLBuT#d9Pf5LT0h-05jOwEYhV!yBxb;+^}E zU_TJAr=H2->~yORie@N^W@u6*D2@=X1|`cwkG9*n|5*7$*Zi8d@9CR+_o#zfmX!1u z-r|ua@|4I@97j=tqo*rXO>`xz?K9GRCh62fDS7bXk{31)tc)h>;8l#`7}*sptn-1OIf^E zgI?V-og0+SwpWAXdPWew(Exh;jxHsZh&F}{wIFS|@l2Q~WpL?%< zOK&l4>QsqjVGx_aj~aaG>eN_SS| z@Jjn4s7d;l{X;sRFMRmA<2k!}k43vitNZovj1Uoz*TOSsNs~E=VMSIFGB)h3++|`$ zobL4g$l`t1?&DM_lsNij~DVJJ+jV+BDxZF59?jR?TfJ9_FV7bW8=9<=PEBHXjw5LPMnjXkdsiHF zkkYPx`V_VV8S#wW`B1L4CzcvWFp*-5Z`P(JbJ3Yjg6-rl!c4E+4X zd8GN;4Xjd{5=mC%IMUH3CD|8_n;u9n;TSbkb*nGTC{y!#)@7uvkN08kku85N(1rWd zP{XXT6v;X@L8KTt`;5(^9c4GA|6I|Y-xUkYCZdmbZtspK;jbAbX^~?{ ziq)d0cbi%9;$P8`VBD}8oj%?z8){a{=p7eqKN>d5L6O9cxBA35cYhsu`;A5Yy>+`1 zHP0LjfBcvwB~fGrj*(>LtM6TPhzjpV>o)3g`6i^@@9kBpQ~H|&LZAO)L?O4T=l$MG zyP73dITikds!FSjF99%165KsRGh+Qug<@~V2~}gP_JiKchMPMVITV&_ND?WtEGHAH z=*+!7{*d?WPTvgv=)68G#S4WR7M>IdQldyj5U8P7nlAY4%2%W>zzuDWL*VF3_4q+rD36|km zj^J5`E6r#8^Mz7$OHncs)p>1N68CpHa?R3F9r{>{-f9gdd7r#1X3$U1h0ky$sU*ir z1T7MD?v=%4ulj7aPF0@Hjiq1KXo*urUXo}hTKbn+=qmVk9h-fQ?XkeC+-q|Evw?o6 z-Rw}M6t_SRmvm5%{ z+jz!%A3U=8?5pR>2ixM@fmC~Lf~QEQLMaN*(AS$-Z@jn5@Zat^f9=To&`^}YbBv&H zw8~OWac21k-#fLg^tE$7%|J&*+#=$7w~dM3g^jy)$av`5(b14+_as$PWL1<{MWR~F z&OEkZ{P9A|feFT#Y-y3OUDtu{=?iyLpkE*Od|{w(6}XTtvV3e}5-(z*CUy&4zkdLy z1cLKxnSB38!211vvK!w^Uv#bD`(`D)@bUGaTuh_81y*wnFpot1!^huj+|7tMa74oP za^QuU0MY92`L&4|sO&#%UT^j|+#PA$OH0A~iBWm`p8mY21Cr#qz{GA0gno_-Y{DA~ z8UL>1pY**pFaY|2^7JU<-*v42UH^U?cwar@RE2?j55Ct1zHfuyy_fGw*d%ZDVd|ov z`xFY^<5N>d8{sdcGS!fjtPK}Zy%N(Apzu6O%-*xT>1b+sG3q3;osLT=F- z$!L@&@-#0o<$68x?B0&w6xMk{?Z8}@3H1L9%-NAZ-vwx>iwRBT_K72HQ@mnE^TDY_ zOl2L7;ss7&NrqO4TP5pE@pg(Mig~}&CGOF|!O%%G$Fm|saJ1-9eaU?L43$#VZhh9Q ze)D|WxZwr*S3xUix6EKR#oJ@#1K$=Wbb|dQwBD(XRNa{ll_Ln6))`&MG zy-4|gvGv2~Dt^SY-oZF-Dtn)hC^ZKaOW z8wT%p`fRw8(^D{rLX>$@a1ylB$?+IOk$YWnhWApb;%r3Iu$!&MkenbYnnDNZiWN+H zyweQtp9#^Go*h#S1ekCJMH&EtK%U6cOtZ-q@* zs?eNDQKIGx1a@J$}7b zTPpOuoQfujswxRQRqf#Glj+?>?wA@8S>A5yvOQZ$)Cgt>`WvJ;hxsg6Jw_!vNLl6x zN+D=UQL)(461SB^{gn6dXCoTUD;z!nmZ;DgsgSZnI~9*td?{xFEG#@^<+Qfjp7!>u z-f6?@??aHaLhS^CWPS#FnSq;038n zVXHTgoFF(^pE;N!^QC&jd~cV!Cr3Bb1DbQPPC^t3 zLX+^Q!PLOjFwccq-it`vGViMsrj&1d&7M=dbf^hYXrJSQNSk7a*e~8GCKEHUE_Ur zVq(7ws2!a<$foD0MAz6aS>u^Wd)_RLI-gIDK^{`$@K~N-;A!wSC<$Uo%uJvw8 zf8=d)pJ|pHQlXr*MElB=F_QJuS({G<# z9+zKr*k1LndivWZ9{xV;O5+(;lvPQP8BNapnt09odTi44UVn!_LnQD#E%Tfps7&rJ z{f4(h?AK$v{Z`$aXJy9>$*Lgp5-mug7L+=3VuaaDyzTAwJ8}H(PS+O_5X$|o_^Ot= zRi&ppCCQbhwn|Lwnj%Yyxqa)my;ZlaTsfdcc&4c+EFp3tscNih#x#qVj_W$_gU9c# zJm$1cV{<~%7^xAOD$^24u~%tqLd4!04K}|RtLLh(4L!EnCOF#Sdsfwsv;VfiyC&h+ zkB*-VUyj%*YZT!W7)=vyyd3c+Z{ymt+MYXM$^jXYA~=EOIf|w!kq+X31E3GS#b)o^ zQR00W9-TSlNU5VFIT(UIx90ogbtjj{)-2KrLfF`kXVUfX-(EBE%(ggeXsqaj~;n^PWb$~jH2+oMkyj4#NrB> zUit&?{4F1i*;XU$rD@7ZiJHJrG?#~`{?MD!&Qtix?C_W7c~xaug_N9mkS=z3n-dZw38=jimQ2M+k>+YjJKCHxxze(}yz0hIZ`|Hb z>-BohbhmdhPM%;XRbZXMjpoGL={?r9O@nS<>qmfzsGw=cDRaA}kwUNZo-i>@ssjduV|Xf?|lvL-4w{Agh@0-Zoik?zu#!num73}tC|vJ>~q^*i^$ve zUb{|%nc43iinzJ+kKfO2U(oWmAsy!AZm|aLw#$3EZM}Z2tLWTK$hnF8&QVF6p5Vy%e(W#q4v9f3Kv_?@&x0gWyR^_2#l@AOa=+2+t_aJI};X;&4`H) zmPrzo3c(Ok)j?};>0q)C}l z*;8#Jrgb||C91r|9rPBJ%O|?gH;uZ%@0-a7pLv%(AVlv|!i!{#!VxmZD?BCUUL^a% z%U4)gYFIy0!9ycRSr%oHA)WG#SGnKoZMD3?p6wU(iaf>bIY`Itpm@QMnL;hEZN^xvgr>L_KB- zn-$}_-rBDD)nabZb=euLzRC(L0Fs{K?(ee|#k9IGVU?FC!US$x_+LgJ zF}8wsC$+-2`8vqN;%?J8TyG#i$e*NvM0Z22@k1?|7p%!E+8?WmVbeqBB?t9m%aP-aC+P#KDooxYM4 za-!r8Iu0Cds%m`ajV@bu>YTsApNf`Po>K)@U^$W~Rp%#1&QsBOw+o!`?yLG~*(a;% zvh_N&7cmr}5SmJmswOm9I`fYbiGA&*{vorezvc^xl ztBlNWnj({&D6Dtx-gnp5S+P?CKOLB2+?qOS{xK<0$jDkB%kuX-16Ud7zvp?{|GfnV z{MV@w*!h@G{C_XM+mD+r^>39W10Iuu0X^)e@&4aC0usJ#{ic6MTkJ4Dd(%o(uNvDjg!RV1 z!-yoqi=wJf3?U8~`t&$Yd{W%?ZfHMyYj!O6%UjRt%kjJ|EXUJ0igGFnLrR1?HEC57 z?-O*PKs8+3>A=WU4!oeAS5POcae)P{XCBe31?oPqlYzcRAfd`C3!Pa1UQ?6%<9+n! z(XV?Fo@;Whw~1f8cIx>Tp8Ue1YLHVER6^6FyhJ$s=8bMY&++1lu=Uh(reQLxrxtA@ zJw=BR;EaC%KfLqf`~O^in0a`M$P+ZnaXc^bgvjxE4R86wTV>a|&PP^M2wr5reE*dXfgqCzE2OeXri z5PzF@HvOG1de?f^jGuX}VxbUf`Lm2bNQA0Nk}O@nTzkn&mzsNF@`5mBAUTR)Xo@0e zk|2UJ_gmk>mQ_XhyXuBB=G=m2Se9mKmZNE3mBhT?A}TB8yJoMw+*()nQbVeHszOTy zFLJW12ve&s|9gCo&k}A`?ZXILbXJM7&TVs=>(4kepm#phJ#Nry8<$$WpBME7brQWNg`p^x5Lk{ANtUNcHt&^N zRDZBs!eAYM?|%Y#7T|G!GXbXnb^-1TxC7w!78uiNV`+=#fJML@U>Yzg!nFWn z_x|s*#^d&Sp)Pmr7r$7;! zD#(KWWWu{$57+x&)o}^>hI9OhxLox%_`WR%gAI2AVQQq#G%IFRavqz#jSN#jh$R`G zplF6+1cna^m~S`F-@j;bLZxEXif%#`xpep<(1fOHl+!7*&ODs1sg!lB_(yAYt!Wti z>~JEGU}%Q))hFue($ZC>y)QP|;mk-%#iJ*sEO(hISx>jwS!c!D<|oK_nj?6UqbPvdq8^O&kxz5eRt z+3!Z5eTeF|(`AC*0Nrt0Eg6CL*36f#ojkYp-*T|ZG z^5G88*R2M-WvJ}OPK9$iIVZs>v{HQK>F27>E>=WO-d6+e&@hkh+|UF!wD?|)Jl>~< z$?vj9q-NHph!2{7oE0L&p_1ev#h?s_txPXfCu>MlXV2mzVRR6lq)C<$8IGjcU>)Sy zP5~Lh!&5?LeY-v z^uK4*0+ls(b?K~a--J+>uST;nokwv)S~9KCl0M5>B2J3BkO6cyFwiEsYeSLJFNhw%K+vV zX*L4@$6!bp;*i~0Syc9Es>?yQQjf=}Q11;i%RPBx%R1!`7D}$QHhKSJ zwtJtx_NMru-XWG*UVsQnm@!hybu2G)NB`vA{A>SNs`oWFW?wQD8HN#v3MAA%+t;V- zjEPk${{!bZQt;ZvzrFqb2Xn7%9xXMAy00mr3`T;)Vk+P1Uh{pctN~H8^iqNa^8aA% zxP-T1#9w1 z0rI>im1Oy(<4|<-&;RlL-#^+-q8TFtu`cjD;RVRBj=>)H1S2~Tm%kynVdd-NuQ0z~3ZxVT@md@NBZ{bkctuf-6X{HkzgE5cyJ~!T;*(=> zj|(fPRFo*I5F}b>J^T0r{RXV9-ac;AipJA&kU$0i>rMCdxA-A1$c-~q@=%`Bq?cHR zglqlrO?Q;cc&eYjS-azo1wX~VbpTOi#4@}f@MQmI1C|%Z?!=PgN*jB8hydgkS0JcUSFl@Av(i8P0g*EJ}zY z6p50=GsxlfW&3vRI(1*@#cMKGg@3jsOqIS9p4;og7A(g6DtfYwHQ{-2hD)7Rof#Gd zED1NXlME&m`E!J;QP1Kr}R9c^};{QT3t}8 z;eGyfjmYOOg)f@>!xHyahJC5;KYd>sVcb*U_8%!IjTT)mhtcPwVR^eZypMN=pHB-b znqfv{|7NhjWL{Pn_E)Bf0`N)0`s5hi%Q1O=waL1SHax$|us$g$E2d(gKXBsX&mU@H zEprs+RRUR}vPcn)nWLUfc*76zPd&1s)&p0X`vQtsLI7jLtHfx=G2NmKVqtf~{Gr#< zAI<&RoS@)1tWsIxvA`I+v+4v<*xe}qRQBDE?|ArzXws;d0jYeRT;KS-K}ncw-QvG` z`P53Q>**}wTzd>D1`t>T1cJ2e_IX37nYA4SQ=BEO=O9%927VTHig>F+}B`tmEuZG|5H7=kCpxF=A1n> z{MAY^)FrCqVE81szj6NTUBB3>HfU+CjEZn~phQGak$AweEq?WF9ns;(^!oo2;#frI2mWw-dWiCPhr$t-%A9}+FFyS2XZ>1q`l7lq^=X|1_2Ponc3Kp( z{T3D}8mIs5z;C~7I;abyPuNYwZ44rq#RL$}(O-)LKs}DhPT%+;xh|hGn-0qHIo&QX zt6P@n_1;u)VKdmlF(ONltSXoj?(Dl|r+5G2iX_RA7-`@>Njg_pO*;EvxZS;Bp7?Zl zD@+KVlYJE;%kwi>Kl1%VdC2tk^s=;*;@Xo`D-;*n8eC)bzc-^6*AAI@&%G7S_dmh^ zUFd9!x9{j5EjlWuznC|N%DGvhw&%LJT|PRc1dd}l{xdgU-uV6LIxSbDb_^Pj#{v)- z7BCK)?eq;0bNV|c(mpON9jezUKhSSVuZ88RXO1x}eM^Hp=5v#;YgtNpajz|@n53$; z_l!IIhGO<-^(23Of#f&s4fUH$-W#4?ym46_M~0yt;S#->>z2{J$PSlxgv;91FRpP< zGI_4k&DT|oERB%JHe+Rar0}7hfeAM%yWYvLhL80BzY!MC4GZIgo(cA`uIV0TV8V>+ zsqgE~;Zk@1`m&hkdxgpOTxaq3K|w6DiPEN9r)#_Ln(LsY|e3`;Q2`gq?B zzu(rL+`Ke1BiX|3=#H(r|Lr~le$qi_hPD{yV{nq|)F=TduJ`|6!*`x1`4f@6;g0`f z=nojqUq=J}*<)BoyUD>nqciY^=Z_lJ+2|O4y*+ZCuMdC70>gXr4E5cH`u7F|qKl5V z8s4*NO4uq%d}#H(iX~(@b{o#~8%h4&=)ZAQDKqQm?8U>Q_vq_vPmXD?W|OtHp!p4@Z)k%er)c}K>&cf0I&c!j)x?9mvWE)+%HpI zH~tXM_)+0Sg&|bpI3>#Xah*vS-P5i9`g4Co<@=br7I6Z{2?E1u#+(=k$>#!_?Em!C zy<@@HmIg*JLZhc(4ggs*L&sQm4|OQFf7`orMhvH};)0o9#AN@|f?XK+YrW{{)~xa{ zV2hgNVKn!v%PQZPp1e4AiXWewm3Cv3xORC!q6)(+g2)MMOuIbY`oXM>?)P^8v5H%V z-}9Yr$`r#gFB@uJ036`}bhvV|hx$aHQ|_K0`7U1+-D66Q+vD@PU(VY8SA$CF&!rGh z3Q~}Q6kJd!#ObsA<*w@W&fCvf%6=mAf+DCYgp{JuTV}mpyz6VWe`5QrHjAgnHTdUw z3Cozlh+r6%!O^toyZsN04t(^^9To#Ou)K^}L?w}9`Tg}~4=ozFVP*m^jKt%d>whh{ z{Jus5%)MJM5U>`P2=Riz2vG#y@+y(Cp6D*-`H%hZ_54}=bZOPtwCEcdahh2I0~}75 zLZ?t=xHbV@J=tFM=vz~MIC9H*+bE-(u9=mW(H1CK%j_x%{_hXR_-q+&cxjko>6TW! z?=S}4zB9a!bW!}#?lCOL&U*`3Ffu-1xGIP z{iFN*+I^a=6U1#RM-ap;6G0HSxc<5&>y|F9B&K9EDM&#IQjmfaq#y+;NI?<0dZ9o2 ze)Qz#_jRVdM!Y11f+Day;uR4Q;oDJL){L1{E6vQxq+ys+f3Qyc|CbcZ+EMD3PW#4o z%)_uf;D3*Kwbu==n|kyiUev-9D-6O>9(}rVP(_O?mu7p=Kce$}SMg1+ik5v8`aczo z33QX_af(tFEh0lVibJ};AjItLLI1l`_kQ%m2Hn&rMwk%I6^WNvg_j_USn}hwtFD{* zk3<3q`YXI82P>|Q6A6T6SR!zUMVQ4PD&TDMPYZ@Q_xExpU4;DEkA8F2C_!K8xkbCs z5)UX6Arh1T#v)j~=DA0_y**W`{^Mu;VSnu&O;L+RaiwJ#2r8s3hES2MJ4h|@<6$5F zHsoX77H(l|G@>~N@>s$|5M{t3d@XqG2*2Xt%&Sr;`GSHu5?ktj@297G{C>(5i3tER zvKDMe76fCQ6KA+B9ZjHwNbGU{@VW24akO=#=)+nBv8bYgSc+K6QIKp_?#KOe&h07x z{b&<6Ku8$tyZj0NfrE|SI6k#q^yHimUB(d}Ac7!r&?%zq8?1S64N`|qc6V?hrW3be zMA0}sEltY$rl0V%|LvCVcbW23|2SB`xb8i-(q36^NzAf7A<*SeD{Lm6D9DOETm!i(@5Lp^QfBr*lv+r2t-!?K-@4ox>`CAmdjfx8E z2_rC=laQ?P!rFBiyS2!Y)r%YrTa0Mei9in$p^J`3l`t@2nr*fJh5d7Y*L~+s(G7hQ{YqPHsyi`+iB`uZ+_9oq70xSNwq` z@*DHATbN_}LJc8SA;BDv6;5G{(L54ul62d8zx$(_nYTO|KPIvuQ1V4ln>O5iKEX$(Nm+dA@>PGUg%jCF7n@E1&c-lHfO5w4z}vQ{w{s7iwNQ;>rH1t_g3l7%K>6q*QO4k9fcDRQ{PY&u80q{p-$sxpU}n(=?!>LO6yB z9D^V-rUA8^+!A(^?l$|q4`1D@;~|{@n35i24z#qR1T#EwWNGYwPu1B?%*ygCo%GbB zSHtRhUZ&vM_#?dYj?^YjK?;f^)GUf^(rsJ(C;3x-0Z#x*Rw%K> z->ckZcfDA%L9|Fh6L~9nE(aSH$mO~u_Y|vgh%NprKebmKbwWSeI~Y z^B?gI`FP;7di=Z@v9LKL41^p9fkTvK>h)5kk85z2DAPB34m;l9gQZn8t5_VuNe*egSU2x!jA;F+HNlPRwu}Bi6JXud5zA zqZGpv>rpay`SE}kj$ZF>5#3a@XpbVEGW#)&WrqROiLiFNW{#yE@dIer7};I z5{$2!$$M$G6r>;pDY!VH@Z#R%cPyLt<4xoEXc9MJNLpFU@#T7`5)Mn-le%PDrO)f- z#3GuVWWQ*SzgNrJ_te?n$ef^4T@D6eo>O@S%YYj>{edH;K}_0hd;M*ez3hbFH8)6s z4Ed3H4l)dJc<7{D>h<+>d)}NlXUlK2S@kCWqr1p%`^mrKOs!?m8&?~rh$;j;MeMMW=!u9fBkE2?cctxPD1g8hi<}T)d4a1^V+{Q z*Sh{_#g-|&o#ZAu>R)zn+&x!q(GlAI*j6n0Nf|LGQosX2kp<@7+^;8Y8FILiZVg<+ zV$a6yKD?C3ah=Q_W%8c!`$R*1l*xO}VtyB}xB?do0F&=axBcmtH$75u!JyvJY_*lV zFf0)mzzYo4ayO4~dT38)7S#}x(>1QE$0O!h<--5;U)|*X8wdZ^Jg(qNRKy&ggI7ez zOB`Sc5tB_t_ox50FSc!|u}mi~_Sj?fLl_S8BBwAAkT&K0tD5coZ*@L}SpKD0@`V5A zp|t~j+UXW6gCoUY&>^{%Jm(wAOif}~zSO!s>3^nqe`cO1u0)HG1yPa-BXI~>muQ{x z_hY)AxT1aY=%zJOEK^%xV-IF_p6Rx~{WY0+JCBa<8Ut?>(+)W+OG{X7b&!Ai5AU0} z@pUDx=`mCl8FQS%Vug)qdR)s9SsFoq-nD_*SM=KbQyWw#K{8Xyh(rdIW3cr#Jniq- zCbuO%8^38xSbO$ zYPbH)QL^NxXZ;WKacp03g}J&82pr-W&4WY}fOAITS5JR?HY0WyXZ@32Z#i({n7=q{$~V1H3M^=nf+zx6I~fpB(;|! zI|zcf(RY9Svc8V3(gpgYnt{fHK69-e5_hiy0wsnLUZf!Eer#g8;pzu^RQ-0!V~5NG zW(pW!0=1mZJTD;Dh+(b?XOI7|u~`=l0zYpre|Yr7_|A3&QJ$3*R^g)1_bj{F-PUPzyzL@bVA(4m-6jo#uA^+-otN(Xxe{FVqRo!mZYH2g6oAL7v1CEUys!t8Z zuvsYT(giuH8Tey?vQ}|a!@%L|pRah&13k@KmbHvn4#^|BGzm0a)nM}HQ%z0zSw&(5MS+YUVxuX4 z^60;LpyoYGt8JeWe?GAy0)>T~Dr4*O*&^`FvGh5QzGWIrmS{dEJkPV7#>OTcOtwXU z+xi=d{Q=vsRJ5?pbbF4~$tn68ETz+fA-BnAAk4U$*3_QHx%g*zf>sQ>`I9Hsa zFe0l6RKg0*eRXG(e$#U^Yh5B&RLelKah;piy1$_*m5_hzc!;6QQY=Zy$_82nzQ6hU z?Z-!&SX&`Lj9xX?aYmcKx?ewP+^vJTH3v%&!$K`iGh%S`jg$BowGH&!T;aaQ@^oR@ zV0**`&T{#D?3DG_A2`waWLj%m3QC7?x++k?H!877|7v925uyEJ$``uL^V; zKmSDkMds`f)S^7F0CAkaK_;q$*Ta7dG~GHNAa?)knprnAiJ=Ri4u*#uCoqsB9D*1l z?G(u4k2d~ltj0=LDCG&Y+fd+}<~RNQ>(c?}KavIe{<$bG*iOidk8bC{OI}^9~k$ z`ZR5b6R5~oMlm&F zoIQRSy&Hu95@$*?o6hGL2A95itiC1tuYo z>Kxeh`>ePAsCZsa6^Deu5+z8XA_p0<_ta@`ZNK~T^Ld0-i%UG#q;B@Sx#78ycx!I9 zm8@<#lXePc=-R+TTd(PPhC6?(W9ltbR+2;oD1d`#`SaeFs{1=vZDC76{M~n5U{mv> zr!rsEchTc%F*Y{kSqU?$!U$NcGIR9nuMd4TWAFw3+akzxA#6BUGTB_QW1y*sFdRo89a>b+N?+r_LswA-Ra?yGwrKS;JLIltp`+ZV9weg z9s{1?FlG@S#o1Ip&&itg&_B>7P38u^Gr)W_u?0VaJUy~=e0fFWKP-fZCoJZPV<^oQ zT|TEg*yEl+W#8vtb*x*woYn&a%W4mP{6k-6^aS`62Sy}WM$~Q_6gd9E!j3KH#udgR zAPTBLR76$ID2&&g%=HGUn3U07-x#R6D|_L!&&J<6oWv7ZP!s|&XUqnE?nJvS_kH2cXecq!?Rjc9jGD;1T zj0`;Ktrpz7t3|Ygt8gbu97TdGsEW)&Jy}wt$(t54&#g)~#yH7LfRxSGXjI^{UTbfx zdRE_=D`T=Y62}Ruz{vo}V*QPW!LUDmt8!zC+)2SjePQ1mn0dpltAE@S-;qp|B~deJ zU{%RFb2U29xb0ZEM=g^Gcr2HMl6XvDPKR}S8r&PllNN9+zz7Ho=6Mj6h~&O-Tf0rW zxFs+m^u!gQ<)LM{`(3y}$&CV^~g-Ia%bN zt8T|@_K4{^W`E!C6}>Yeai?myg!`Is=C_7FVPNHd`}Q9fII!TOD-KSMuPv2X%*t5e zS*jSf>}RG;PY4`P?|R6!-&C2U5GqOn0Rjuvk}9*(Y*~Q?1G|oF{{x5~iN1Sve+r(# z94l~+{#mzXcc)VBxIQk`tzVy3&tz6$-=dB0*E>q!2eOe|v%X61z@fiy zxZ>vi@x7BJ#IT4JIYodtdGF+$z+KIMed6;U;pDM&#IQjmfaq#y+;NI?pc zfI?B?ZGop>**&eX%iPz2;~{1=k0zdlESJ26`Lw{1i91@ipA+9>84(UshSMBgjgr3G zE1NYvJuvgTYX5gbQ{BvDPr36=Ck#X6(y|kF^?Eg%54Wq2%jaJ7#G! z{Iv7^#fAy`fWl>)B!6Gkq@6mY)J}QB|4SRv64VntFDppJ@GpShmKV(YLutvqpAp_@ ziGFv)u)p;8_nGWFy_U?9yyA1C4L`Wa-htvGU+0 zR^eg9F_t&SdpoZ^})}I zyQA(4JSlFk(&X=6rle!C;bJrc$!>0syX$1p>9g(;e1Bm0mSZ2B{RG81tO5@?%rN=R zWy4)rZc)+P#QV6sJ~1ncD#N@5F4Z?p`k*5d1sT6 zKN#4w-gbYxaq*2{cvVmZmgQBI2Sy{9DVBHgLxFSGH+u0`XM9s7MUntV04B*;>iGj3 zHs84Ni(&E1p;-U~svw2KEK_#&4T}PuUU^*J-ZMsIc%R~6a1y>T!_Tc&;)-EUFLR9<0-$Z!Mz zD7HGW=^5AEQ!3Ukqp7L&4=qKS?U}%nWA^{2$~~8xPf9lAwdlBvfEkC=dy__3456aZ ze#oCI?rhyTD#`X03HrXmc5#9}C(i_yq>Y&ExPD-{AoT;M&XP`MyJ zPB&2=PaPiW^|?JsBrsVOc;nYDzdyL8UiA0mhtpsqlGIwK;8q7VJzH;9<4UpY*|qdC zyyf^Xs{>b$n09cu(1stvLo*@l& z9^^zUgiJ-2r&NJJRyZ>rir0mw+gfDw{7;4cPx{NFd3=YEJE_zeIKaGb(W zNwC`Vi-DhObbF+GPVwx%&6v>cc`h;ADfgI?hr(4v6+lD)6;M=yF0+)Y zZv{TNTNRBCidnwhHDA;}TEq!j4+}aoE!n}m8~Cu+?sCtY`?*2FvI1fW z2Ly}}2a`pg?*^_Gu6*gKEpa(ih&hfS3a3g@ejod*#V(__`ul+o-K&m&bv}+TA8TD0 zN+m|d6cb)GibmcVR>LAQygktHq@}mA^d<132ppo~#yuVz7!4=Dj^)3984+Gog zEZ%fWx4O}TF31V2uz=$^iRTDa?ix~lW%0QGj{@VqzOv5{dn@w`1u+Qn3>JtcOzfsb zDd_Kl3^%c7_d2TOx^A^Wq{Z#nQFlwIlqB zhcmA-G+fShaX~qY^>P-+Q7y^mCH>xN7B|`Ffi5#o<^FY~Q8eZ%N^1Za%L2rJhwR_Y z2k!9p_Eaf*T=qp^=vQA4u^+iCTEtkyAzJ1oO?0OSK#CdeH{D`s#*(!)%$(ii{WRM* z0pb6eH?P=Tzi`GDhH3DIzqdm!K^RF00;saW+@*WmOYJXL>}^Xy3QGS7eG_Q5^-QZ9 zhUr(@qFDC_29OmHWE|eSY{{L~kLC?hXRkfI{r>F7D(ex7^lLs*BC0gQdo4|_88dN5 z;%jGj;N7Xu&FR6kjHXXxrmPhS5*3z0s3x5zcz56pUl%&=fw*CJu^=*{B=L|1QE9dt zB*bug0*}?*_-)ti=F~O@3}iUKupEJaM2%rr*bL;IG_wiY7YHb4KWlrsgE^%Ju@*)Z zAO<>|-d@z#H9zCI+tZ!OS)xbOYzwWDZ2JP$e|mc2ZR_LYgNG1?#SBU0gSXp$2|V59 z-CYf@i7y+$M1ojl6`o}~5UvC^Iju&7B#0i=!y1+!SJaV&wKF(Ay>)~jC z?qAxdM|{;O�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%0ArSAJ$* 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%0AW?^ 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 yPq~XzncdRndsrOr@D+a|GLKX& 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

    9Ys2 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

    ei0nzj#Lyev0`U7;zmA7cKpZ+L&hHKFuO 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⪼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

    t1*tVtIJVjl8CM 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 Cg0f}+ literal 1806722 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≠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

    m*OE7LK= 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%0A{?@7M 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

  1. w_bYHksWL?#OZ@ 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Ξ!-T!N7k_2P+D{C3lJ-ubx;yT_iq9Z>?6P|8SLovMfs8;6i@SbA>E#VTi z2-lAGG9QcdN1GK6=8vt+LoY}?YYliI`jyQtJ^Ab0;ApkMI%3(n5mr5+kH)K}j=m?EISURix< z^f4Ny_xfoM?SJ1_^@4b+;2VokFv36g(@gG1t&2hrCYK;k)!%T+__H(2nMH=mCS#dG zbrgKpTrm)YzZbsblCPB@Rso$n6EO}^`!7YAIAI_1`jG{wdLcP3mq%jl7pVR0Lj#}? ziz*z9Q6KkNz23U9xzTRBQM};&I0xmz5XD3pmMW?ms6mUGOK2Xsr0q^L`}NK^u=!;@ zB0x6E#^3l<4!j+5UMv1cO|;b1^#M_wdFBRU;K{hlp)8*yix;R1X{biFySiOCdi*|{ z@Zyd1a}@|-FgfSTozlOXw$=OEsrblDmcOQJmV&}%T)nu-3L466c&b#(8C{>q9?
    4K(A&w;e%wG)z4g4TMzVj*UnuFqL^s^48R!%vM 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]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%0ATB!i@_r|K@81IwN@I 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%0D(sOE}2aB<<*K2Q_Vx-C9 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%0DZN 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�xu_KTjY>W6e}@uB*}uaE`7)Wg}KideN+X z)DZ3CQyE?oY&isE`P2(Ct)da#P6{M4cm*nOPnqy~A+F`zNA{yHlv3;+jU}jKrBb}> zc2)qI1@S{oo7Br4&Q##PcVuu>Wg9O<23&^-(phq;6t-aL;+@Rm@B0<9X9jzcN{Jug zJBW)?58c)QB^tkqp+-xNpd#!hgk9F<$j>0M#;IFO%CWrBZEROr=Lf#QS+hE=guo02 z`@KFg{fAZ_5!{&YRrl~aKrY47K+n%mKRX;0s3rLXAr6Fc0u!# z8`pGHHmTvK%We)~*oNp8(?*`^2e)`bp+9!xNCt=e`->^8r`n3nbMIjvjJgs7G%)sn z?(lU2#tz&^t0`g`=;l5b+JN?wg`2E21u9ak2RAA&rNkUEUOI?G3*yxV9_JN%ydM+; zztPzVgwYZiKA@S*#Ra@q-n&;kW7?gwCXK5}e=@k|83VOO{vz#0U8iqn#a6@Nh-W)l zC97rRJN-nIf(1{~lbH7c_`Nep?glBO#1jI$tk&fN|Lk3G;Br>PxtOJwi}H0b1(w{v zVq*H_F!C+FNt2A-enz5|u-aGY!hC$>Cld9z)_AF?q~`pJCW;w39W)o1cFy;{&$%b- zt_W4j<&|;WIeo9Mm0-b_JKCcbSZ+7`KyTf6&U#hInrEsM=$2}ad}_3OrV06fxg&u3HF!Cw#C-QquYlU;MB$nMTS1P#N{JP=8|GM zU~;xu+eKJ!8GsplG8@^EwiM1fpyzI|ZvxzIxMcWLgun758b#jS9p+h&klLRo?HKc& z%JtuB$xU>QKE{u$O-Z}-M6f=Df>dYLuDVOPwr&!>lR(g$v^^+`BfUcPW=-2y6xuOius3ctFS7yp5W2}0w53J zYS^8m^1D09=mcn@ywA0pmNXk*V!`TFRB6smA%ypmhd+N(8Oy}JAm%TeuYCR>UeF|Y z0=2-6<2h`)YyHswHMH(r~L3G)_f4*0| zxeIfV_nw_A{h2M8MEqB3{FaxNzmA33Ej##Dth!DM#pXr{sDxwP z81r5J>hJyA%#=YIgH81b$Xya!?;D)Dd$?#FdPP-2upqn-Jn)oS;phibP93aB@QayA!338KPrCIj{nin$~U9@ zxg|dqAX0p&J#WU+aHaSYMr}Z&kj4y}vD6O;5N89?#%pg00cQ**SgYOCnvkox2FDOX z#}*XIGH&uJUdMGjzc%*4R5-YYL);jcTH1c#uU$gW2tl_1YvKjB4(spw3G-M8_UH9v zS%KvD7x(yx1>vB6PBIeotAsl|oWD0>!8(qQjOwT$`Vu@rk6E_T70B0i4iN>dLj5wL zn_ z$L8Gf=7)8O6w%P`{7=t{z_jO6jaMGSFSz)D)+EMRyBfE;2i@RQ-4o6q$A8}z$GQs2 zoq`-vgX~*<+bGn=6Uh;d#j=ey>*3vAw~3v@CZ-N-F>reQ2;HcXwcc7P!mDfHV`#JT z5Z4FGvI=!2FmE=m0w65>fz5$AW78<_l17}!9v35VU~ddhAR~OyE7OkoC-)9;7cRU) znt0fGG5t4H% z8Fg)v-crZdwU>M80+RFY=HFWXTIcz=T7YbC`Q@Mmy0?JL1)K5SYj$PTPe@CKf6Y6d z-k0C!UhK75o%sE1A>1LC`}WYi81{-oD!Ja{wP=!OcW~DNIX@$R7&5vlne$X@asJOV|izZv-i0%2N^r zIJK;M}?JDhFoayYJc8xq4l3%Qdm8SMz8F0}mZAs}bVMXm$E z>ZDeq!Xhm5kxCpEA7muGN+WacluQ+eTH)|-If{%HZ$6N-AU`Qgls6v1B_B>4X;*b5 z7mKIp&qxV%!%}P*;S0*a4Ti#Y1vBB}51R01;3Gt;^&QC5uV=ndt-rjZet4eU9CDhE zJM~2B_v@_k!lpY!zss{})?eH;nO=L;Ih898y;(eSfi)TP(XU3@P%fdkDvd#LH_1dr zpZZ-@9RqsGFj(31c((2LZnG?z*1wI=Ss`P-PXC6zdi9UDbVW2p!s_QmLfvwwkKT2cCS*GpUOk+W3by=l_WCai;u4TtyiUd0ZZ%iCrjO zytnX}i%RAYgdguvc*bZhxEl`&J{LR&oaASdPOjm$b2LQ9+vZkZf?Wn^noI&%X6k$U8c62ejit$2Zot zExhQ17*KA6agFe|SKMn^^QR=!aif+@&AzUom=pZ|PT$~a0^QaBw^8M3zIF9nXC5~Q zW$4Vh;*H0@_`D6*crawcznmuY3qfoIN|)X1bZqlE;;F9{2g_wh^Em1B$VP0%9nPE* zL*?xHmsr|WseG@AfzZ}1&A;0tq@A(_m4A+>jgVI-tquRDi1r!<(=%r=fBiV!DT~)f zthkXjIIiaa9u9^|?#^hkHw{0c3A&lwdhH-At_i`#<6ZohL1O*iRtfo(;Rnfxts#@z zXv`WHU~T}23+>p{$`^04JB*Ut69y2T2e1xJ{cYL6svVt)j|mw4CGgsHIOd#s7g)BF z29a-ywOI$i?fet072C428mu}>d2|W@jppzExI$z zA{pR)iQX6Wo@qNKmUQ>b(NUn%og{;&E4(p_Yc+)@N+9c}8jS$afw|oN15ANVTf)ev zL({@1exwVlm~Phr0lEL9=-eNf?*BJ#gd(IIN)D;JBt_k5Ic*M=Pbm_ma#)AEq%w!) zFq_SxA}Sq}avI6`unsgcHo{HB$YFQcsX0t!2Q%C3^xgLl*iY~GUhn7YdS2J#(r^#6 zj74gq=&vua7Jmm9tracsB*sEdF5`kbw@wTEPIG?xk~-+t30U>1bi(JiDRmhEPA>@H zq9JScZ7)I4eq%vOHd}s9d<~H!I2OG+Gk}=TWFx)9qP4}^aqS+YVc30C3lOtN&7xEo zrBo9;16Ebw-IH=7au9fFxFQBk3`xGsDdt)i2f?2v)0@m?1(~%F)Lu-?V&@|F49;Au zb;}{_7Um6`pVC}pw&P{#FL8tl3_a90GwdQ4ym2|--5%Et@+xOo+0gTTB-6pJ5xB*@ zhtpRv{_8kLPPmJf|KWv)snz@U!j3o0{3~KtC=xU-lOH2F<_lRsjaNV4a$NiF%nBH( zo;ZP~6JNtUr!}r9xdftveg~c{kVzD4ODsGjo>!8{ggs$M2ZR+ip_D;OmxtFwQ1F~y_XZMS72+}5tf%#`4Ai#v3 zNy-2Vw_~Q3OBU+?7Kh0oBM|lvJB8H6L8$S}^s5c$z}GIwYb#k&wm?Vi{C76OaYb~} zBjC7ZFaF&9PV(N3^B3;TVfVGB19%b@WglEaFwuB)%si-gj%;emt#9T>oMRLra%2T( zkqrC_U3F4{;&M{|3(-Iko08Gx!cK=k2*>rjUHpdrYA2R7?s2o5Ro0%7+&iiY_n4Nd zgGsO;yhOK11<*Cg4{cdjdR41+)SMTm@{^GC+bw^1wPSu-#4#)+VPE}S+JUaK9C%9N z12~YN#+k31lEqIVNkOWL-juVXOug9yh(O{;ATJ}eWr`Af00I0!X#q2zrKeSDeH{{v zJe_jex&reVU#c(Ez%c$kMJsN;f)~gh#olxIoU0~$#e?D1`pJBlz2~Xtf67v(;Do zlIPAdV~`R_uFNyfx4~+C>yp|~q^hfjF=*7^a>AG$D%&Kr2lpz%S8^*go}6Y2bd_nP zGGAJ%jI}+~14ayHU1@Rl8IAZq;q%Cgwbuwp*{` z<-fs7=r^`j{${LOn>m-#;3+gVo>|3QxB@9fPmk5_{N@q(Y&ho3iS~&4fp*9{ORPhk z4Nm!1ubD8Ml@syl0n3Fj5;Jbj+i`W!gcXsjiEws8)OB3q7pF`Lfr+l*P z#0i-Klf&_gQ~xdFHEKe(>25ugPJVN0MmS-%vToe!bd@3^ggISxCiTg7uno#=A`h>j zboWRig7-LH@n@bwMRch~!AH~^hc7>LN#n9ds9bz!Zc5!0yHE0zi%;X~T{;fnbSE(0g@zO0FOTab)l88A zdXndEURIxiaBOF;{ZFe(W{6SyB8MtZg|}(Xh12bTqJXp`xSOQ^fco!HXLn$5V6`=o zh8fYps|>L&NV#DdWgUz*)1m&}#O#hmK?`=V&UwSIN{*GUxm~0{mw)K1wq=jR6V6J&xL!kS5p3m4{_&ZI5daG zaQuEwEuVz?->0ys?G)uOV-Xw6c?(RNi}~$ZWaR!kS|6>AeoN#>F0Fd(F-#F{o)A`} z4cQvcXXlL9_6-lo>!6SguOS$31o&)xvO#qQgX4zLJvUzpo>*FJ*{S52&Pv939Sx?Q zB%F?dT4OPv%7;8eX&DlR1-++dRw-o4<{6s6Hwp*NHArr1ln;<%MxfH&WAsK6`4 zTS1+*rzHxT`<#(SWQ(AAzfd0j>;X8fu7#?|+ZR7E)YFlvqkM)>BuBz@6I4}B%Kwfx z;c6O>h$4Pff7XsrHNPLWS)jyfaaiBTC64AR{~XOTOoRCXnk{{FyN-o#S;q?~w?o#&02W$MIbj(ln z)=6z%v(@Fy!6NfKv%>)%I>>B;7+we^e>kAD`g==ebOw0w?4k zdOPl!%ha{uXwX8CcMap9Q8KcIimEn$i%&bq?Bxb|tXaGqn#1iAXUEIh2{mX3gCk|?Dk-`USF0_%>QP6jb)Z*Ut&yB&N)K-mA)MbS z+Nz{2YapYW#}T?kUx(mXcurM3yyN`S?OCner>NVn`pY>c`8Jn$@~-G)`D<^+*fA(0 zn(z>IWuC(Ihn3TusT9lSi>pR#vma^Pm|er$L~j-EBjOh+A2X@yZXisRmuOxug?DQq zg#T9dEMuynQYN{CPaR&F2`1=fJ{R>BejhOc9brL8p#f6Avu~0s0Z;<$9-D(ui3cV zT!hf?3_A69r@L|srttdZl9=lfq4_{MG{lk@pxJ3>+$+^>@|MT%L879a>qvF_?iG8O z|6NL(y2T!b?{DZP!>dQIlN$6|z=VbwPriRVzhyU(*4+ za9_UbZP!e2OKu`ta(497@00KgA^b2hlu0^%=f7|oXeA|E@VTP~b49!TW=uN=G@cj2 z>qKf57P6rJe`4KN~0n1ycK?YXsg{WE{d zsKMiqZ>Ctce*oel)9+!5-JKlu4lMu zM>)8?UVdo3Fg*HeJqYXD)4?)q2OA5G`;;XN@=-k);@DaFzy|)BC}0`&pY4e5(Lj>e zh2Oq!bX??)r3tGq$E0k$eDV~hxME22^{3^JZSecpz4U;7Y}m7+v4wpz>YFfO+UA=F zMdVu}(=lf|rY-nuHe4A2O&TKT3efb*MWfa{E}&=FfG6S_lB`U}{Xkj`%j*uxTrgGw z6SColUx-2hoGki@dghi#VD#V>znP>HrtB2Cp>$ASDKG3c~#@xy6{ElZP@lsH=b>yhl z-P?XNj&Jrqq|2fG=Wh40O)DZAJcQSbWC1qqj1q|p`3(0;uT(4CQ*=!B<33q$L1%5W zsXc}gj-!bzjm(bg?BkD>L>S<%-JOKyCo71Ml5m5&|s;JzB!A@SJ35+u&l=JZ&Vmhlh)r#k! zvft#AgV0~uCw%Oq)F%4$#+MM|@J$TN-&SD;>H7$l7^ zwJ9WFoh}b{jSo#7F6A*Gmbt*xrrFH zqaOP@0p%ZBDe`S%IApX~Y8S`7uZ5o2K7##=r|34wVN?c)2`eWE(kpA*QqDhAa-=d0 z*+Ose0tz5MyO~QmH7E3kz*AK!Dmn*yo9sY`lmgZqdK!PE*)5yjLu2QyW*DRd{e`=r zi$aMaU#p!%I|cQao{PtycumNdA5(vS*)I+q=!ciQI6YAk5U(%U&{&JPaa>ZV-`VYY zRvrjMK?R(jG}2H`M9^)fVzSM{0R6#gQsaHK-sPxJ*QAohk5N28shG`^x6yz5gZ@RnfYsR9>4au z2px_!?N7K{Dd9FD(Va#S==*Cmwc|ioP!g!`AnCH%<$G?IX}?)6Mb2WHhbQ-N<{J8j z2FclA#^v>M&_dQmMC@Q%u4Cr$`a z)@ZsBowakd$?DtO11F|%u!amhDi7%&Dmv2geJbei<)%2_PGPp(byTro#`M+#q@hoWw=BNlw7j^C<0#il;S3``!A8Ns#Z8nj}Q6LRQRvryW1WhdCXWkzJKQdgEs5*N?L$OzV_`E;d^v3V)s8)f=Qka3-hVm{9#k zXUE4{g;y6s`Em*qNZeFg?5B@^WG<^qxr(-5)7S`rsKUmNS@}gT)j+tvCeW|ciA1N% z>3^pc7+R_J)1x2ClhMPceS%dNuh(4aBW_8Q{#vgI3vYKRgEWyp_XM|DWZyC;ue%Y9 zx%Mv`6*Zz=6x5NUIs54u_{{wI=rrHY*5d!pi-V+miL?f|f78Jhj34^Vydd&H%`z>$A8Akii2r$EPG*461DAdOb@5C2~DDsJrKme)54#JyrJL>TG;d{JLwI6oDnWib_7z4r3d?KCL3lI;k|=si zN=(g^XfpIEBw_peNsG?=NfH`yA~ z^CMpw{x^APE_Gr=0JklTlfggMfu_alfsRsyis;ndlS=0t~^*(q7j+#-@`SDs|E$9 zj?A3@t{Hnhr1L4XnNsIQ^1qzKUpw%pGwHK-1GR|kaAy92+*TCGOVQ|AM1AcNZT+8| z&|j^ub54fHS>DzEsiYR9`kH>qKIf~RxJ@(pj?oa%OanQ#6@?)grHo%-*7pT^cy&dd z-V90Fw?^4B7Up9bM;_Lb`9YCQU!Cf>iR2P4Z1ML&_ScQBL;`+T7%taJ$Y zcoWs=b+PMlj^%)W#DD0Vmau)h`sx9Ddf(LdpG#xq8<&o~l3?(3+3auEfdoi?U%b!YYV{Z0h1>1$z z;cDc>XH(=gPEN5i@2}fLFfJ=m6qWq@;1|rRa%#tZ9(1-lUI^EpJcxy9j)=~0>_%(z z@RepODd#-7SH0y{{T=mZJ&fUZoa=y1`pDY{_z5A{1FIgR0kw@BnLZ`6J<5lO(-(5} zdSMQS)zR0kbuu1Dq5ijJ0Bf5(RF!WKZLg|<)aB{6tSi2EVbUn}vn@ke>18#hv$EC* zAblP#VZYDY_HER$S}@RDjy$})_Da?^;qr;eGsKAtma4T8ptQ5fUhK0z;kDn3C?g z)sizI_85}p%$LxS_BcPLWp=oZ8Q!E!IEpe%?O+dZ-c#hPwEC&F`haOX& zauZ)HNMiUdnRoHRN!$2QbTgv#){T(}_9>LV+QP)Acs71w8Yyk0B zh{!NgP|BWWr_5=mKDQKNe$R4159Y_<(#H}>{mIPIz~k+T>3F8dfz0-Qi)wP^GHS|c z!c^>rj%zJ9Nr4t9`h)bglId&}Kjg;2S+0dx^2yv-H1>=vjNQy7kLby+Xa9yG=~v9= zqd4OZhXULglr1uK0f2qrt)wqkj4J9aiwSSwAafnkWnyC%efcHRAp8IjeDYanhgPzn zB^W%T*FNpqnYvg5fp$<+#^U=syhs$S&QIIL$Upz?f-8Was-nxZhSPWD|LtHtHpmgR zY?p8DauPYc=BjR}oK&;ef46}|GmqK?@7?_bgyFhHcHVc6418-|esVK;d&w!epXQUz z^z+;rF?ZBlrc{*V;A2w@v0+b_J!k5508eZ;itz`Bei;3tB-jotLLZdbm`uwL9rry~ zBC0$4lwvm|(tr6&_~rWS4u(x5GMm|I`iKY<=~6QbdoZ7Zdsb$_BY zw%+O{BYv%4v$f%;9C%Pa6;RH1;#M(nHfNxqXBhP5w~6c>(rusiW z+cG!{`+#75n17IyI~U4w@iRh^qFC)e?k*Vc)IbSZ6IS0gk)u4e$aXnOikJ55i4tBV zLnnT;(UNjql1pK~ivtB|q+%OYFgb_@TD^i=*i00y7ZUvdp)pnXEunn;a+j#cf%!e! zNu+~+NlHfV*5@e(cGTHueGO;lUj`*a! zT4?xmYO8gD@;?6MGbC~8MBNl-GuflM3!P+kchQlB`mvXnS#h(8?=rwG9i)jOyKlO3 zJ)0kp?1l#$3Bk{#HOv>+#4Z{RK^>##n1vqA?SmnmTOhR%LD2)o?)$_&nqposNO`t=yE5Mm7yVjl_Xfk)jqe+~i3(|B zG3?M{xbfdLActv&oN(*vVWRTWZ`UEk+0vDe_BvoymruW(AgKISNRpFK?kj-H55-Gg*II|%$!L=vRHYY6N-=)W zW=NzN*kPlvj?<@j$!@LEE+Ncpn7tSvP8hVwAR2vOnbKBqA)^$(s&+*P3iaF@Cp|9l z(lj`I4oBY1khHUt_{FVO&lxz(Qx%ZIKsG>ml1nnST8hv(sUa{FJ3Zh4_y*(whQCwpm}RKwIwoEawOWA+y#t`#IJ zh%}}tRijn?5ILgLUwV_V$I~6VidsOgf7dQO!DI&js!Fwrlh4y!oStOJ_VwUDAeCMX ziR{~{8YwN%F@=sM1Ch0Co0N|BG>Nx&DZE(|tq zxwJlhx6W-G7Gjq2>sXKAPR?0na|YpMrOYCp9nZp_8_bpa7{k&2yW<>c&#HDf6+dO> zY}Yb~Dj|LTKuaj@j@?hhSRv+9_oIc`q4dR;%9QFvBuhNeTfK`PS!8}xWg1o9Ih++v`%mi$nRiv4JEZ?GWjwG}j=W2;_bs zW52ohb1cy`_1=Q>lVyBo1uNCq<+%K7-?)cqx?#KosgiOLg=Db1k5D}@pL~Ybx)ldY0iDF|SFt9wNV|OXZ_ZJ4Q+b;F!WFp2L60O8M zZI!vq?T-t1MtVpm_4lrX#c}v40fM2%T>r0MDRM8Ryr5~E>i|OJfB}$v1Mc;Z+HE#7O$-t(Y_3eh+7FTKF1%WR?K^{N`qCaY!0R8+@F)wihwfC(LWz3}<8xHutTL?qHe(z51sMAL{M=|l3hl^r~+ zJ`1Lw>6Lf10ep}AW20v3dkrom{!9{tqt~5K5=Z+LFF){l5U3uzvi_&^zHCKhLYD=W z+2nm+a;ZC{wN~o*yZFB!`9;IODBJ!vUHJrqC4;|dpkLcuZnnWdKBX-PUjamr04jTxnseRu`ro8F}Z1r$LBbz_fA5#J%3nvHi8c@K-#n6nzqK#%p}?j3k| zoVGR4VdMLmE1sfmBsi!%=?_eu?wA_zUNR-Gr9;&)QxzkpwbUU_ynA(0MB>w{!<(4o z2YXi!8HtwElE0)ws#ym|*e+*DZ?^DG`v;S`rzBe=QJjol!9a6s;;`*J)&lNbE$TV~ zoF^qrv+tH17wU3UgcEId4QG3KccSUCEwXO3pahd zrHxu%Nm+-D4PR0GcCB_SKLq3>`SGdqz*{w+iXQ0)ce3EFdf6x5*% z%rq_u;kTz^(#MRb>C!quqdbpI-NaE@ zj?qA0bq>2@l!@(Em&d$f$@AHN6{(geon_3rbh$8-{o33F+bfmaLrK3^|G!t#lRnHhdd{V-N98GCr>*o0;T z9(4JrhH8;Rdw_?5vkpHma%|Wz^S0=_tm+05e7ZdEmcHyHtgZ-Wf{ls(S4x;lqkrE# z($v@{$R4nc8TJ1Y<4Za!rQ!`ZIWBq4#csIFwo;t&Oh{6B$3L2)MU_=~`-DiS9x?J{ zVUIkGV&y4(mB}OOX_-42@%}qgXa_WJ?OtC8Imi1^Az4f<8xiDbgV631l+$VvQ9H|Q zSb9mGpMIwmZPJC0C{i`SPFs?{UQFYE0)%`66a!6TyDt6o^9D^6EdZbTHf&)~>=%1c zufK3Vc;VQqAK%8b8H!!Os(R2`E?z^NU6Qszs@ACLaQoj5-d{&QX~;mI^lPS+Uo)M+ zju)Dgr=BgEcuPt*@rzT+l^kx>KdrMjdu9tT>6U&)@oy*5d{N$S(2y;veBS0#5Z`YTtc5=50iv{n=5HHz z6pm4u=kr6LL*%GyRa2>Q9H`nzx)9|L2kJ6o4v6J$Ert-vffduw#%!%-4dq`~2UpW@ zQ)3YneOa-sg_ptnQMrA|>~Lx;S4m+KGWqK$?~mb&gxb1++xjF-^%FcHwV zM=;q$+Fyl(@qzB(+ypna=O5t3ou$+Ge9?hd>Ckrb*tL^*`BA(0k`TU!slx~+C5Vw? zfiVc2Zs?annB0a^k&k*Gqm>G z+D0UiS7)C^&!WrTQp%p!Yi>{3y1x(@U~xKW8dzG6#z6tl_LmDyIuYNp;@N4At{x(R zy0Lu6zzdZb$cuSe#SPx|L?7V3>dKqheI0F$^QBN>49|DCkAWZ!@vSzM(BJ zSr>j1s+c6`O%YYU?F0e`<-`0LlS_zE;gc}5!Q3QcRv_gBcHA)MHO9pY2=uICvJVKt zGo0VDDF(!X<(3N8bjP_pxuP+dCYO?|nbJjW=Qer;$Qx+#-vu>IAyQooxNd}ClgkF3 z70XEg^!*FgFV`$+Mz}M!jOIo#hKLW52!+PZ~r<-Vt_(4@I=1Y(I zg<{9uf`maIe^N%9WXyTS!Y+f@`aHQ5em!AP-nesET9`&^)@AnDJ6TPYa2@8gQ!at| zGQ50t_4X0ZZr2);SF!tRvZ@ZScT;Cpc1spt@=}NP(=ZuqQ&;2`M5JBhq}<9olZ5&H zZ|TH>$H$xIOOMS0;LFLX@Z*Luw}5dd4GsEa^Huo52=8QykB|j}Oj%V>#)h#S;GUAz zloTH9?;F`{#J6z{)zU7-G?EV+9)4D&j04TwuxAP!oafI+lxe2~k}`o9GD-igZ_it= zG*DI)NCO{qWa8SFi4scTuBXbBqj97sXDw@(9(nx5u;cRM_mZvbo@A1C{hcK*4Nme< z>=Wb$j3WD^m?gt%pTW8p4&-16dr!90^I@tz&4@*Xgetkomld$P$d5)j2o@}zyBlIc z{zN(B>zJAp zq5dR7?Y~Js8vNe>=0cj%sRhnX+~!xyTQzY)EohtmLHG+6{OA4%<$?)s>P{uz8-(P( z_I6mzWk4Vx#?_+aR5vt|E>A!VJEeX!fF~F0u!;_quhR6gA-cz&JH^c;aXH#9CY^cPOu5?CPOfG>=8C1)! z`lf|i8Ix&QM9Co#&?$owiczD@{KdS~lmFsUL|@eWWA_6bWw5w|e8v)PkSsZZPrY+? zCd_JPSY++rUHsW#cFyYj%&i^`gWT#AsxH$K1HkTH7P#$xNYV2oo&0zNcji}!Y~L`q zzYCJ@EibR_Jg{7{D+Md->=s~NxRT;EZ$kB#3)j*f>jt93t@+eb8a&nMP1+719;)i_ zGA7ri_+LGQ{s7|C0~iKp=k?40r2DNO4qc}2Vc$)G=FN^^=#SPgPpxj-#{_=E?-a{O%_`e*Enr~?zm88{OMoj*ut{MpYry;W1uJc?}U+*&8iGbT&xc?b3c zM#TQj>uX9g3F;BppVA~vI&~5pqd+$f&u(F#jkse8R@yHZxC01e?LQyW<_z|4;*xJ! zi?dYW@&772iw=w};U7Q$Lxxxv2=oovO<5Ue+1AUFY^t0d-3LFNr@?VAB?tt^zQZea z&d%9f<_I^)IzV4V1FGq8|BS(=p#Y6U_X+M){K^!gR#iwwuIwXK>j}1 zMfgbOumCl>m7k(*tZ3BjBt*<00*uxs{NgENYpN$>tqtMoh(9&)@K-`+S4US0!|cyL zgAtoJMCZKw?TXVsryjNU97qr#on{>4Upul63o*2E8P$i`Xa%?d+DsOts4Kozr&*QO z5uSV{-z45~pRIppiY`xfXkSO4H(tO3v`Mc*m0Rbk+5zpNSKQu?Zc-jYqY$M=T~mQH zD)LyxW2SUc*+`y^0N)uCjD2|$pHw#kBH2y)(4|?ejNdlmZQ$9-hijVnQBsSP_P>dd z?QgW!W}D3wmM20a9rA9rP2?FlF=Hz7EZsr3RSH3s9xJ_BD-WA|>Nq&Ks3m!OE*yId z)h{)9x_JHS@Ws42hxyu2)jLkEE(5*YA-rw$7Kt<*z)Y$U@q3uuLYeGCOHIUE{aBGJ zQem^;v#37T=nLyTup3LTz=T$g_$ECXt{AKi0nR6JhRGK%9{{3n7!-c`V@uJUe0m$& zy=Zr*Hlns5xuh(jt%QtLmi(g)o7<^4R(!)CxeOQ{nQFB(>AVntu$TA3PzGw~FP>k8 zTBBhbm!Fo$%Qc?hVWov2zv6k>>~LpLaV^ppN=SauE9J1f8n!;^ zL#8}i06&XKP`_)XUjy`R=h)n5q&UWshT3R2-hpOPg5B&DP^ak{%jLNGq)e-ozkNt~ zmRD=5>Rou^SE-N&qm;hHpj55_KcPxFzGNODf16s*$X~3~aFA-hCwXm@+3%X%Z|Q@% zHeUSmrlM*xe(60zYs*TfV;BZX|Ym!oz{UHHZVu3 z()x?D1;Z?bZsdX~_O4?bi8?Xqs`dP7(?ImDWv$#6L(#m*qM%61B>h>>Q^`CrdQ zocp^gX4N!yOhqff7qY*gW6^ZohL}Qwl|)Uon0Y>ab*(IBlr1;9552U$_1Z68B$)-u z?`~n9E39*iarhQ_a~|)kA-@WvV}Givl!G@1RIylF-m6BjBH3{yXp?R;z?^P)@ZB!P z_R-7*8-zLzSDx}FB0qErpuA#`+>8^q-x2}9pA9fmlX(l7YXW>l4P{#cO?0L5t;nyd zRrDMvHgYQR7y&y+>%VkJDai2pOYF>+Z zyvT@48p?P0sUc%qqEOwbWxkxTB`M_!cty1H2A9pgs9hJzwwya{ptfedN#wVVuaNGD zi$SdykLiz6`+Sh(>DP&Dp>0+KW4#{t+yFvXn*FK}R)8~df#`-NKne5dZ##1?5H z6HF!$|7bWUO_d$bL_6K9CHBw5urkvGsd9HJQTacJJI>dO4zxQe^wbP+IED8y9JprO zemfAq7#gjHFM5y`?)N?7$}Z+;fEvj|)7{Xalrg8tjXBn#@QVX4S#Sg325a4-1rB3j zUB8V@HsS>+Ek^uo&df$#As>Ddq!u7bm}F+o`8AkxTZNT z$z63-`JC3>9MOK4Y58JUnuwlRHNKCp+UA6*Vs3Fv#|*wr8FDXR!jF!N2`{+Mq2T$H z5lp==`_Wi+`x!4LOlNs9_5A!UUDaW|f3DA@yaU%yHmXeV(7>ybvDTvUbwfahucC@G z;OnR4hbq&+w!0%JHIEWS*OD*(BxED+xO7Tqdti(ZO-7s9Wl!fg;zf&gZUVq>T)P+o zp&}kD%C*ukX6mla>W`xS;!tiiObhCkKlyd1a87%o?;ZJQi zG~ueZ&8T|Ek*T^%!*=S3J<&J8otwo?pVMwE&HVo~d+KM9Wu^?O-C6eJ=Mv(S4L%}K zA0Js#%NRZhg%a%JU2>aL^wyVi^+_)l`w|NVg)RSbUpiyB)XarIpS>i8cMcUnHjCsAUxxw)t#PxeHJN3tTNd{<1>udb zD&@f*xc5p|9*HUfad3NFo*y}Z5F=$pk(j!8c%aM7TKkN=3u}bNc2pz1)n}u@{Yy4S z|4v$~I1=I#_(3Jc2k}HZ&e7oH9+~4YtVFfyB7%8btQ9Lvg1M^Px2A}4Y3F|LV!ZK( z{pgRB0~$)x(S4CQ>|?gF8y7o0K1%3Y#vw*+#r0@Ye?D5S9!k$@VM-B0aN0-) z#jY73Z`m!BHdnS^bR&{lN}yzR_9~Ke+?P*P(^KG{EUb>zHyu@Do06CEcju07tnm~@M$k)<4)5f>ywFH&&dvRO?Jzw?}Yr$xN6&7gk^WK z?F}?MdbjcBVhg3No0Eq|7dXnSLr)F1`XOFTHzS^CXzp_w;TBMJ5^B6-ko{tBQ z)zBFh;tffl8250(;zcH)!^xnRVd1zJ>+I)_uKYs546zZznjShI2Him+JzHS9PO@Qp zfP8v$FL(580(;X3rzARrXx9T<3CWS`>L|zdF+bM>NR7{?*gi4+&Jdenw??)+YCD`3 z={OM(4N!DxQv|aJiL6F(rMgW(JhZrgj-~ynZ-Cs@#}@6M6*ii!$OfBqM86&=Fy`?t zsU`;s7AY6?@K+*`iiZV>(%6f;IFiOK(!-0r3hNcz9V7P1m~zxqJY`D zf>ulaYL=YlJfW-V71_Kzojsd!7TuJA;b>C{q-0X9e0I2=qSo)CZ^SH4au8f)69+u4J&#VkLL}Sz-&Kw6I{-PYPnIZ_Om$S4p)zLCp3D z$}J@!cQm4s)ycN5GN~q3KWj^fxJIl##MHbNM@qH*z<9eNR6Y}BdTqN98MKX`LUI;w zA5bM51CA;DT;i0c;2$8L)rAEi>!4>Ia`ERklcz3!k-n)RobP27X0If&e zLH!66)3=|NPhPuAc#{2L!~y6}D>i*$&6v`RoiOT6)t_Z=>$PhFMznKs3dYeQ9Y#Qm zID)V)ffBb#a2mu!@H1PjWQMY-hpb|`=>l51b6ESY^q7@%P-Ozi3n~Q0q5fC(A1PlG zRpI_Y*%h5VkQWy*60_^`fG-RrxmvkeQe~ags5T$7qK26t99lfPDgKwH1Ucc&a;YCt zF}Ul;L^Uyi^9BdYVALEwEXL$TDAp&g(C)(XWx#>-qSt3>2JkSu&W|Mk>|GNqfqwjt zvNC2IYHLL)zzEh06Xi3i00?I8 z<1+)RvMIq|Qpu}s*9xt(q@EohtDKZiT`c%*Co#!*t;ZV4v0I2PsezEUi5Gq$$=CA} z+3@huMQ4-bfeWb8=_7T(H=XQTr{1kiJX}~c{re3W2%F%z(rDs{Ur}X*+RtY@IZK3HRrA6s_&&R93qm4Ul^7d z+=(-FS(cNrR$sihTfF2|ed#er_nX!JlK6T6M)~)WNmVwr==uCa^2EfLnC_v`DmcX< zQXY}N!*^Gt7368jjE1n0uu_V_-n*GwmsS_6{)DSprar@j@b^t%!nUZWv9Ck~x|*D) zM+f3h2wnQIM72A-=Ulkm%13OP1G18X{QD4h3 z#`dd7sRYMMdHwgO@>3v&i=R8Y^$Yj~`*;%wXbYFXGne^m+T&XU0%9~^#9-H}@6)ir z8s)gQdGJ$m@68b_<7aMJX1m4IzxCQG4ChTZsj9gvPV(W?AA@58En88VG)_?41ES9{ zKGpJNGT2B6dRc3g-u{nqT|m>$h-%yhuGP`hkaKaQf1G&%6eD&U<+)oQ&1L4#RA$Un z`rH@S{vq7b{^4U(0BJ6~&@Lr_27A9pe;LgkqxWlfI)KYkzGihss&q6 zE$>5Cwk>gy|B|Pq>UaOIp)+x0@{i-VnIl(<S}>@X!YJLX|y%+*tl zBi%Qh>0f6y(^vS}ZP8l!Bl~&>Rdg%Pdr&gxt-0KuzSOAF`qAy3&Xjw$c7oc6LMVikBt~$o%_o)+Q=0U>aH>Q*NY^nw=)4rx~)x!G6B`Ye=P?1 zC$mG}U2SZ-V76Z=4tO0cdUR=WmlH$O@^sGlDLz(lo~ijeyf%W@dHa4X{pK~ci>l=Y z*scsk;?7x=u%-=^U_EW3yXqz5A zj*^>h)L_ya%UaGGTUOEd$o{4jmp&LR;!i0P{)F?zsK`(Hfo1Gbds;fD>;OjAs@glI zzxdsjZafL$hIG_NmI=oflIYh`wCmMPU3Uw;`(UopXI}+c4s!@e_91e{f~HoNri~|E zyeF4ujiR@CA4Wgj<-nXnL{&oY{+}p&j(A8@_YW4`*%34@dU1)~6@{Ekc!=EMpjUkp zeW>j4H`&RiaxE3q)r`0zAmn3EunsmTQ}}P^0OZ`_G4H8LE63Er6l1Oz1k85Gl*g@8 z#_!g}RRXu?XvH3aQ_585JS=|f`P@j}xpDZ*I_AHeYtr`U4lQ3$ZLmej(yl`ewgg9e z8i&C9fEYO>@#x^)R^0ddwB%DCIk8=VnEqOd(I5j`zt`>Hn_^pDIt9wvvQh&tMib&b^a%wt`8;&UFU#D;Ns|@dfsymcm^4NNCY+mnQ`;6 z1uKd%qP%}_ER$i`FpXq631T-{U)yUF1fbY01LNT7HrLJf$i<1l^=mkWRni8=Q;S~jxgu9CsjgV zz2)B~CDtF9_7@T8;~`Si+Qz7j4UxkSX;wAw>Y#}W#RVCZZw|e3Wdq z;mhJAcA3`9&hMD=#3h0_wgmS@7l2`1xtWRH(wO8?_^?e2(7KhJ_{dDZAJuz)sUfNB zBk+;IZRDdK<;C*gy+*_7$K0-14+2(k&XI7I>%~d`&!yrwS)(rfclOa@%3^6qg~YPe zG?5!9nu86z5J0zJfF4beyy>j0(NXPu)=QAD`SaCZ*$9db)j8)KyYNtKA#uBjV%L3rRK#!q6|7`InUml;# zJTucE9NZCq_28YUwe{yRSKGi=6kmzDuY&aKV5C)z9>2I zT@PsgU;OXe6aJ%n@xkY~yY`c6m$ES@&miDQC~2 zRO3gU&ruM+96LtZd!Zv5eJ?LXZYf~&W53>>10xKh_kSP9e z<~Yk_61U}hoGpzca6^nc)aWiE*7nV(jE>rA5m;tRyhVF%`u5HqlXOScwO3i5AgGnz zA`L-4>^?b->dXErQ%jhMoO3wkjUa;ZZC|cE=vcJMl=Us3EUu6)ZI>3k@MP}icTuU* z@{u}^<iw1yxHct;@YmAJ$|Rzv!>25k z4T7Xuq31gJ{lEpeF6dAoOTm1B<^CBESpJ8e);dpPF%<-{_N{Ut1xdJ@;k8b8-Nbb7 z=r|!K@1-R)^wL@s_dzgvVe6b|H%O`)B|cA-t>sdz;?P48Pzb$?#RJDR4x*N%4m*x?E@$gy8=qiEGL`00_og2fy%%%;j3NOEXI7_`>WWE- z-N!AWdZRQ1!v^GTgC)1nfOVo1w$l{&+J>{tYXMBATjpRyqn|^GzHrUmrI4{z$&o(n z;{E6p906uiL+b4Dln+GDC;NzOXr%juX!kG_8$y(=;T|x=AY{vqEEgUhjo-C$F&_Bn zlxHotNj!-nqStc&Q;v5x;@)|n@Kv4TC`VvJcI+Bw*15{*2>G=R_DAMbPdt|Vvn12e z%f*+dms`D)sJiejdkmMd>}d8t3Kq2A{KRTkK%2oJWx%no>CqC}v^9`Qs-(B0~d4AtIo!4)7{Hv>d zc4{lf#p3#U$BCw|&Xvbh3j3I3S`8 z2i$%ld1ZpZ&fVu$7bTO}-9Xv(`0^w1NkgZE*Ze>}tTuq&{t%!otd(Ll3xvSaa@CYV9Xj^J{egokN4n#F->9RP8dN|YPf_ofs7k-oE)%pPbLPE6j05q}qJliE%3tClW>N0>rit3Uto0?V5HgUJn;1cvI#P5PDrf*SERfKg zKD>nf8yJ@CQ-=MjRE zK5s#U-xFAvbdT(-5453nCMhFd#em1!9=bE3hNxKWVeRi=NrA}%u10n2qdwyaRP3l_ zLZ&khF*j|huAJTqh}l&Q$AaSFAjxme9U%&Ljao9mlF z^$8R5U4m(2{+@{Y9DDV(3X~ zab@|%G?vy(Ya}R-_#E$(!iyQ_f|!4VzWB zj4;e6g_B z?EZKUrpI{4Na&#dDvx8i%3BE~YiNcdOGU>}s*-+0Jm)<6UxWY7dMRD(c32PC1t-!h z;PDq{+`KqgJ8&m+a+q=KDDH{3Egp<8alL)xLrxmfG!)ulUtGDi< z%}h#xq6*71x+gg@m|st5kcd}Wm(N<~)U$O}u8*2|4AX8s;KDK@?`X_iQ$IMWxmaO{ zeiG|EjQtVg0V6l8VunmE)Ke|>2DHDaxDNW&NUtM_h!pAE7^pp#NlpAAUjIFY{rD(^ zogA<0%wVq-JBDlulRZ#GHt5dK3~b;Vo$+6hn`xa7C}!tMXtO6+5tX0Da4G6@XH5{rlshb^19fW^7)#$yuN|uH=WEeEfx!tl!+|63Z98_1N~+-GUCNkdy#Gu zNr4>l{15N=W=6rG0IX39QS~0^^N|_ph~A8oceUvcJ~)lIdjnti$Crk+iXH2FHma{? zc0ijGtAQ~KRI0tUCo$`i!fIBwnD|*|WSi?VtaFu-I7oG-5IEc$X`)jQ8kO(be!_yf zXF{dZ7w-ugXPPs{ygxOPUY12k%41?thVvp94}!FuI^ooRni2KVm)B6jNW7eEnz%kD z&+A*{pOtZR)eBRGnGo|zg|{f98jf4#(MyHauc@lr$XjmI0>|1o&cS1ix~?+y{`S~5 zsdAgObye{V@M!PGyV}iZuI7>j3s(-Z=PUOQ(~ZB9b{tYDX}t=FW8y}{8J35 zw;jT-=+;L%Nw$Q#Vz5E&NwyB;YYr$>sq+HK;5Sy!|)(ZToR$uye zrCRFwL*>^o1ur-}@egrrE~an&Jn~Tsyz9-yMD4;Mh7cLvA|!lnC4_``F_8m-WdYb@ z&zzofW3ZXVdH;}U+ zsOaDoa#S@dt}R;GQUNIZ0Us*clXX3*^Ku34Oes_Al+R-Qvt(`yhm5-(-01Zp8lXma zjx}`U%X;`^E3q^a*H7%zs!$E>cf|YuT%gY$7&tcio@LFxirhbO5yt08cQm7SE{W(& zroW34X?R$fxMcs2 zs+P?!$k;=(Q+6BQzD0{2C;Yw z88ce|!j6mCW}%itp=GW`<>R_6=o2!|aTjmY$a#r{+9P{tUzE;1!+O`)x_bFn9>s7K z?3!{l--_`H^fQp@j%7x~Ncxh$jfZ46#E)E`F0b_Nyds} zh@E!54tp!y3n^1Odg0B7gEpKM!9%YiM=JIfdrXTcZG@e$-yHW7HOx1FOP#dpD9*tw zZnwv0<(NQ){-E8H0Q`>fYF?!h+YA)<{OZU>jFq9(?-&nhn8tM|-vgMmj+ft*LO%~Z zDhhpjZ`3x;Epgi-UK1N}egP%n$xFOru*a+AZCUb8Zk|dS%k6)~W#)BKlsXAVjUr-yCUN9K@s91bGK7xE%OEmVy{bQ~4uw~29Coabb@Gcf z$Cw`eP5xtEA)-IXN2Jm&qU!C61s6KWKzIcs*EV-p(N=bT)cxM`3JiP}c4?^p`5yP&ZpeM_`E;-@s11WJC2t@+t{WxU|r^ z2JqQIr8d;{Qaw}XytfZ;!Scc$56Xse94sqMi?C4aP@qw7Lb$abExdzXR`>lkal+Te z;~6#L9s&R47E_!t2pMQaE*sk3e$18j@HywZ7WG*vvd33t8)Hz7N6}$xMyoAIBtI)6 z8j_3+KgzO{ryIKSS8csk0(85>Uw(>3$Epp{_Lai?7OLDxCPktjD_5t*@m3=#z->@% z(O+$=c-qThJ*Jr-IEb#rdVU9k{?a78>z@F9e@B3#|KYAk}G z9&d2-okFKxfyWbHEbBhuqkSOno9)aN3COBW@s$<>Ao(TB9?lXYzR|C2E^x?R^?vDw zUbiqp;P5^<8i>qN7daCTf1w^KHkPV>j{L6#&1F!{7SvGqt1**)c0r6lVQ^w`TB)72`0k?_^H`U#>9Fsk`{&1x<9zD-Ro3(p~nlt%XPkMKPn$ zikUmJI=|i4{G-vd-eds-3W>ZzFB2pS9G=go!HT-i;V4Dv}h(z1&ff+C%0E9 z6gMieihP1A%?|Uh?JJ?0MLwYE1?AgO=f(++rauH@smTr*p*(wN4IolE@tdetOZ^ZM zL%*0-g1$EMN-014?Xc-m=Q*HA@dHe8aX_sO*Y7E9FrUtnoBv`L28UB?WAU8c?&38L zAFNXlbX(O@7IsY=W*7&SiqItau_y{otaZZ#>}|ehIq&9bjU{P(F-NMa??J@L2h|=E zq(Ablb>^FLmvgsJ+)puMv|GWFwhQfqJj42xI6y9EIm`^gBsi2CqLWE41c z^}({(;6kfp=u$3??x(f9rDn!yKfD?>T+b1ZCpRIpA_Sr%DT1MY)SuAW@ zNkW+PsUfL|~tA2u^`ihaTg#N3Ycv(XZ@4ESV6t<^Qk5u_({Q@N1I&$1m z*NI+j{TXkk>^izZgfm3!2XCUS6g_CO_Avb=#&l%f!>(p4|L^Y@_4>j$&DrQz;-Us=&t z3m(gE5vN&ZnFH`-?$}!S+hLvdjh$=$y&djZ3Hjn%6t6zH%Z$miJSD!S96zD!OX{g@ z^^9i{o=+8E6*GcsMZ3qC{wgyj_SI(XaizQKBB;u}HMXaU%hRV|vQ+3_UgwVHNM!D6 zDem!t!>Umci<9rlBw*}0EkeDVrz4jXh(g`M`j*;3?|9~?)s4(_`Y-Mtv#>^n!_b(O zi%>iEBY%xd7HPpS%r#Y8sQI+LsQmSDR(U?ObmJAg6DEv%*X^s@BG@lD@xsu;!1JB$0G z$S!OCD8MPzMN@lS9*OjDWZGxeA%fu zXGAqD=w~#pt3#yyTEaSw*tF{a;Lz2$@|NS)T!o498t(Tl3QP#sXk|PwmBip zKqSpi=H7r|Y+rU2J3MUE|Ah>-Zc3PV_j6$kZCL5$dz|-jeKHqRo=oyT!)ymyh5e0U zNz!Vc^sPsUk6Sk}^50Y-^Nc64eSMwu-cbZZ!EN(XN}1QnmQHcw+V_tZK1Xe0w%HfQ z9FLZUCi@pR3xzPTqeVBb=iCCK%;&wYWaEo|ilS!M8&;jWK8xvd9~NnzG^J7PM!!rU z88B^6#^D`;C0oajP*zMRxMzz$fjwreah39?0OG7mlm3BtEE% z2|O##HPx8>tM$?11+Hu@AzU-iNC6s&VbzC&+}~J4YRevG zqeruYd_Jz{Z}W4hJXeej9-{tHsJdfCe*d|3`o8+~uhT8j)+0x3hH@zSu_~^=@2!${ z^r~L|6dMtCeSr5(k^aSsatyBO*8W1k#&91hx-BYcnml9;H1au6FY%V<~o*D9-7*y}z!s`lPtQ+$$IAhTTV&ZZf=(`k| zqR-EKa2q?>=$wW+o4%h#-g8EEXA#z)-Jz;=g9*d*?wBks%>Dzv98=B&i`aRSpW4A# z9SDt{>9gP(b?_c5@?@=-;@30_eEtX(* zc~$KvM(q5snbOY<-y1gOqOtP)vifTMBkrU0V9^=EQD)`NUezFw>(t|0)D!9DKL;&e z{KsR}-J|Ck2Xh)C9#4&X$-N>4D#459Jc$_>gBDJ>GN_-I)`^lcj9ui6new^GUr0Y@ zUqXT@IwA?Q8dAK>$_c5x=KeT0my6|BY**bCcSXPlP$9CVMQ#fof*6G-rSDYEi> zigkRK)a1euk@JQbz%4mKVz?N}4d9DDAGeY6((lVShX2{;)$_FX&%1k5bK$7x`)0-W z5=wAG|9IZvk0iKZ!l|)#lgztg6K&+geV~|u&Wp3IPNgNpYMYt*m?^I8x{|=N4a2@8 z;KsgBLZ`OSBaSl>-j;GQAxLI|4NZ`z()Yrq0bZrM99`x@QoDS)&FX$yA{d*k>6mJ#u6Z{s!BRf#>6;KDK_56Pv&D;GUG$^?aL$ zWrcj?@WC!;+F9gGQfyF#{_1m@!|z-ybysuN;`#!ID;3eyKJQC-mo3xbp9!LZQ&G z3Eb8k_x=|qV6=LY|N{pxLWfVui>|+4^2C+6mc>*l}5tmCvH!|B2G|=6UED#j#GL)5B zCJH;PfD|juQ?YBrf}<5#g-YU|<`sAi1yeowh7+|L>ynG@@?o5~|F{UTw67!n0VwuW z6V6^sm44GCaeSyRK95`C9QluzxCx9pT=APY_I(jX(&G#K1#lvI81Zar&I`oksgN1){rb9`+!p7w8@Q{;Z|N{xMs@DJsF;qY!U^ec!HIwAbZnL(9r z>=>zUJ5oshnq3K@gA@9}-$>qXXa{{ue(}aGD09tT5*N=MejuYl7MktQw#|M^ao8(r zk!Ynja}TW2eA(V{U(IZzlw(4!*N*i z5m!j#XPiiTjaPVoz5xiY8dz=ToE1HnW_jKYIQIw!mR`E+{xZV%zT}B5hDFRtG9$hf z1t1@A@6+;WXb;+%^Ch8PD`Sz#+VQE}c^;XEB-dR{n{<`kC$xrkONdt@7BkTl-b>lP z`ri`%GB{cvwUalRzb}5P73slL{hUJOU=ug&Ofv44%FRkugMoXmw=m!y(oz58!HIhK z_&2{q!6Ppg!jAJU_pIz$r~)FM2;|PJ>+$dUU4+>C0jLv&wAqaK5gRfM(InKgif2Bv z?BoHbXhHKT3I4`p*Rk2r51{4gg0<_r%CsL8zOZB*uqDSgPxXY)o?&`h)KzLPBDP&f zq)eiQ1k22@44sj(P6HIX_1dDVA_%bGt@#5!a>OpuJ(n#)?Lv=#IyaBLCSKe}*1sAf zDVd!oXtYaPUy?_96f^R*_#p=MRl{|Yo}%U#kjO!&sGdVqA9xOyHHNT2!* zfl{a=xDtuu`gzo`MV4))PW{@vlO1E38@ljmZ(vzNmO-mzrLY^H zu6iA~DnV#YqpD-ZihQeC_D`A#`XhFv??vnoqV7speam$I!h4uNeFdCokvQL;GzMbi zYAd2b<6Mf_c>bE1_iDc*Q5#^*N9$0k{rcv8sIa|5U~dflWUFv-pEQ1|tTWN9{#vi# z%xM`M3MFmJ69`s)uvKXE4qoE=wmEgZ0Ul{>0?!!3lr|M$*ncW)RPV;EMQ3eIlg)tK zaRP&+_5d>3MH%oZZeSrOsYzpHF=K|hm%7ODVOc{r6g_QLv)pu-j&A%#ZxG#^1iq$;KVB~~_D0a5R-5#6yO$IOauGIVxI0w$M z=I&?-&xTiXL|=`IL?wrS0TWjB*lZ!zdZuT-3JZWnTXb1nhG} zD{h^9mE+g#4qm_`mWs_A(I)>Ez>K&-l(!9&SgBa?%}5mPBd>6M+(zs->JFrV<;x;G z$Db?X#?|gOpFg9f-E)%kh*A4Psz~Weud01{S?@#vkEVDygH%b$!FZbfU8UuEoyo!d zZrg2T7Z0OuZ=EsIX%%Wg-oPBr_9u+MN^Ea@C{~Z#ro}w*F2wD?b2eh9cMZ^$d%0FR zrrdoZphavxk!Q2ST-%T#QS-4Qp&kU8A#0LQsx|@5$lbUuR(;?zTq2lH*969tzEM;% zdftm1YLBtz@YQaUHj5uNIRyzZL#eJxuKV;wUYwbv8u79t{l{Km&c-Sdr&xi4JjKNB zY5Zxw3Y3KYT)@j5NtFrf`OQ!TXwrW~bYw=Nnq=b!@FkSS47K;Gl3leD)m5a&*+svO ziu{tas(t9|+yguOjV)4>^H!5GwC9~+oS*8-4Y+_?vrqlOs-!$))Y^Kn=$nA>`Ap07 z=Yix=^}uTJ$opV|UqbfChg434Fh6L>HV5wR^F2FHwz*T)K!JK-9cyAxhY7{MWo>8=vCPTi3U}0{hz>Xm}Md&CIe3l8e36 z>VxPA8;Q#;t diff --git a/packages/compiler/src/frontend/lowering/lowerer.ts b/packages/compiler/src/frontend/lowering/lowerer.ts index 18547772f..e218d7fdd 100644 --- a/packages/compiler/src/frontend/lowering/lowerer.ts +++ b/packages/compiler/src/frontend/lowering/lowerer.ts @@ -17,7 +17,7 @@ import { import { isDeclBoundaryFile } from "../decl-projection.js"; import { relieveHeapPressure } from "../../heap-pressure.js"; import { moduleNamespaceObject, moduleNamespaceValue } from "./module-namespace-elements.js"; -import { keyedHelperName } from "./stable-names.js"; +import { keyedHelperName, moduleTagNumber } from "./stable-names.js"; import { positionTag, StructuralPositions } from "./structural-positions.js"; import { bindingSymbolOfRead, onlyForwarded, stripTypeWrappers } from "./typed-arguments.js"; import { @@ -3545,11 +3545,14 @@ export class Lowerer { * by their base name (two checkers install them in different * directories), and the files scriptc ships by their name inside scriptc, * so names do not depend on where scriptc is installed either. */ - readonly positions = new StructuralPositions((sf) => - this.program.isSourceFileDefaultLibrary(sf) + readonly positions = new StructuralPositions((sf) => this.stableFileName(sf)); + + /** The name of `sf` in positions and module tags. */ + stableFileName(sf: ts.SourceFile): string { + return this.program.isSourceFileDefaultLibrary(sf) ? `lib:${sf.fileName.slice(sf.fileName.lastIndexOf("/") + 1)}` - : (compilerOwnedFileName(sf.fileName) ?? relative(dirname(this.entry.fileName), sf.fileName)), - ); + : (compilerOwnedFileName(sf.fileName) ?? relative(dirname(this.entry.fileName), sf.fileName)); + } /** The outermost node whose token span is exactly `loc`, or null. */ nodeAtLoc(loc: SrcLoc): ts.Node | null { @@ -4214,9 +4217,20 @@ export class Lowerer { // moduleOrder BEFORE any pass constructed — lowerToIr runs // appendDynamicImportModules once on the shared array (a per-pass run // here would repeatedly extend the graph and duplicate cycle reports). - this.moduleOrder.forEach((sf, i) => { - this.fileTag.set(sf, sf === entry ? "" : `%m${i}.`); - }); + // A module's tag hashes its stable file name rather than numbering its + // place in moduleOrder, so adding or reordering modules leaves the other + // modules' function names, and the closure names keyed by them, + // unchanged. The native compiler's profile matches functions by name. + const tagNumbers = new Set(); + for (const sf of this.moduleOrder) { + if (sf === entry) { + this.fileTag.set(sf, ""); + continue; + } + const n = moduleTagNumber(this.stableFileName(sf), tagNumbers); + tagNumbers.add(n); + this.fileTag.set(sf, `%m${n}.`); + } if (this.moduleOrder.length === 0) this.fileTag.set(entry, ""); const jsDynamic = jsDynamicDeclarations(this.moduleOrder, this.checker); if (jsDynamic.size > 0) this.typeCtx.jsDynamicDeclaration = (decl) => jsDynamic.has(decl); diff --git a/packages/compiler/src/frontend/lowering/stable-names.test.ts b/packages/compiler/src/frontend/lowering/stable-names.test.ts new file mode 100644 index 000000000..31982597c --- /dev/null +++ b/packages/compiler/src/frontend/lowering/stable-names.test.ts @@ -0,0 +1,10 @@ +import { expect, test } from "vitest"; +import { moduleTagNumber } from "./stable-names.js"; + +test("module tag numbers depend only on the file name and stay distinct", () => { + const first = moduleTagNumber("lib/a.ts", new Set()); + expect(moduleTagNumber("lib/a.ts", new Set([7, 8]))).toBe(first); + expect(moduleTagNumber("lib/b.ts", new Set())).not.toBe(first); + expect(moduleTagNumber("lib/a.ts", new Set([first]))).toBe((first + 1) >>> 0); + expect(moduleTagNumber("lib/a.ts", new Set([first, (first + 1) >>> 0]))).toBe((first + 2) >>> 0); +}); diff --git a/packages/compiler/src/frontend/lowering/stable-names.ts b/packages/compiler/src/frontend/lowering/stable-names.ts index 8f7d0967e..f47f1aca3 100644 --- a/packages/compiler/src/frontend/lowering/stable-names.ts +++ b/packages/compiler/src/frontend/lowering/stable-names.ts @@ -46,3 +46,15 @@ export function keyedHelperName( throw new InternalCompilerError(`helper name ${name} is shared by two helper keys`); return name; } + +/** The number in the `%m.` tag of the module named `fileName`: a + * 32-bit FNV-1a hash of the name, so a module keeps its tag when other + * modules are added, removed or reordered. A number in `taken` moves to the + * next free one, which keeps tags distinct. */ +export function moduleTagNumber(fileName: string, taken: ReadonlySet): number { + let h = 0x811c9dc5; + for (let i = 0; i < fileName.length; i++) h = Math.imul(h ^ fileName.charCodeAt(i), 0x01000193); + let n = h >>> 0; + while (taken.has(n)) n = (n + 1) >>> 0; + return n; +} diff --git a/packages/compiler/test/stable-names.test.ts b/packages/compiler/test/stable-names.test.ts index c82db039d..13ed000df 100644 --- a/packages/compiler/test/stable-names.test.ts +++ b/packages/compiler/test/stable-names.test.ts @@ -117,3 +117,44 @@ test("names do not depend on the directory the program sits in", async () => { const [second] = await lower(recursive); expect(names(second!)).toEqual(names(first!)); }); + +/** Lowers a program of several files; `main.ts` is the entry. */ +async function lowerFiles(files: Record): Promise { + const dir = await mkdtemp(join(tmpdir(), "scriptc-stable-names-")); + try { + for (const [name, source] of Object.entries(files)) await writeFile(join(dir, name), source); + const outPath = join(dir, "main.ir.json"); + const result = await compile(join(dir, "main.ts"), { outDir: dir, outPath, outputKind: "ir" }); + if (!result.ok) + throw new Error(result.diagnostics.map((d) => `${d.code}: ${d.message}`).join("\n")); + return deserializeModule(await readFile(outPath, "utf8")); + } finally { + await rm(dir, { recursive: true, force: true }); + } +} + +test("a module's names do not depend on the modules loaded before it", async () => { + const shapes = ` +export class Box { + constructor(private value: number) {} + scaled(by: number): number { return this.value * by; } +} +export function boxes(count: number): number[] { + return Array.from({ length: count }, (_, i) => new Box(i).scaled(2)); +} +`; + const before = await lowerFiles({ + "shapes.ts": shapes, + "main.ts": `import { boxes } from "./shapes";\nconsole.log(boxes(3).join(","));\n`, + }); + const after = await lowerFiles({ + "offsets.ts": `export function offset(x: number): number { return x + 1; }\n`, + "shapes.ts": shapes, + "main.ts": `import { offset } from "./offsets";\nimport { boxes } from "./shapes";\nconsole.log(offset(1), boxes(3).join(","));\n`, + }); + // The class, its methods, the function and the closure it lifts. + const ofShapes = (mod: IrModule) => + names(mod).filter((name) => /Box|boxes/.test(name) || name.startsWith("%fn.")); + expect(ofShapes(before).length).toBeGreaterThanOrEqual(4); + expect(ofShapes(after)).toEqual(ofShapes(before)); +}); diff --git a/scripts/build-native-cli.mts b/scripts/build-native-cli.mts index e76065880..4ea1412ec 100644 --- a/scripts/build-native-cli.mts +++ b/scripts/build-native-cli.mts @@ -24,10 +24,10 @@ const sanitize = process.env["SCRIPTC_SAN"] === "1"; // SCRIPTC_NATIVE_PROFILE_USE builds without one. const profileGenerate = process.env["SCRIPTC_NATIVE_PROFILE_GENERATE"] || undefined; // Below this share of matching functions, the build warns that the profile -// has lost most of its gain. A profile refreshed on the same commit matched -// 92.7% of the native compiler's profiled functions, one refreshed 1.5 days -// and about 200 commits earlier 87.2%, and that one kept about half of the -// fresh profile's gain on a cold tsc-ts build. +// has lost most of its gain. A profile refreshed on the same commit, with +// the same layout, matches all of the native compiler's profiled functions. +// One refreshed 1.5 days and about 200 commits earlier matched 87.2%, and +// kept about half of the fresh profile's gain on a cold tsc-ts build. const PROFILE_MATCH_WARNING = 0.9; const committedProfile = join(root, "packages/compiler/native/cli.profdata.gz"); const requestedProfile = process.env["SCRIPTC_NATIVE_PROFILE_USE"]; @@ -39,11 +39,15 @@ const useProfile = (requestedProfile !== undefined || existsSync(committedProfile)); // Builds lay out the compiler's functions with the committed layout // (scripts/refresh-cli-layout.mjs), or the one SCRIPTC_NATIVE_LAYOUT names; -// an empty SCRIPTC_NATIVE_LAYOUT, and instrumented builds, use none. +// an empty SCRIPTC_NATIVE_LAYOUT uses none. Instrumented builds use the same +// layout as the builds their profile is for. The layout decides which +// functions share a partition, and a function whose partition differs from +// the instrumented build's is optimized differently before its control flow +// is hashed, so the profile's record for it no longer matches. const committedLayout = join(root, "packages/compiler/native/cli.layout.gz"); const requestedLayout = process.env["SCRIPTC_NATIVE_LAYOUT"]; const functionLayout = - profileGenerate !== undefined || requestedLayout === "" + requestedLayout === "" ? undefined : (requestedLayout ?? (existsSync(committedLayout) ? committedLayout : undefined)); let target = nativeCodegenTarget(); diff --git a/scripts/refresh-cli-profile.mjs b/scripts/refresh-cli-profile.mjs index dde4e21b9..a9436b505 100644 --- a/scripts/refresh-cli-profile.mjs +++ b/scripts/refresh-cli-profile.mjs @@ -6,7 +6,7 @@ * * Builds an instrumented native compiler for this Linux host, runs it on the * training builds below, and merges the raw profiles it writes into one - * sparse indexed profile. The training builds are tsc-ts (a cold `speed` + * indexed profile. The training builds are tsc-ts (a cold `speed` * build, then a rebuild after an edit), every seventh top-level corpus * program (by number, or by a hash of the name of a program without one) at * the default optimization and a further slice in `dev`, and the runtime @@ -14,6 +14,11 @@ * move much compiler code; a stale profile only loses part of its gain. A * refresh takes about 11 minutes on 16 cores. * + * The instrumented compiler is built with the committed function layout, or + * the one SCRIPTC_NATIVE_LAYOUT names, and the profile matches builds that + * use the same layout. When refreshing both, refresh the layout first + * (scripts/refresh-cli-layout.mjs). + * * node scripts/refresh-cli-profile.mjs --tsc-ts [--jobs 8] */ import { spawn, spawnSync } from "node:child_process"; @@ -210,12 +215,15 @@ const profiles = readdirSync(raw) .map((name) => join(raw, name)); rmSync(builds, { recursive: true, force: true }); const indexed = join(work, "cli.profdata"); -const merged = spawnSync(scriptc, ["merge-profiles", "--sparse", "-o", indexed, ...profiles], { +// The profile keeps the functions that never ran in training, with zero +// counts. Builds optimize those as cold and place them after the trained code, +// which keeps the compiler's .text smaller than a sparse profile does. +const merged = spawnSync(scriptc, ["merge-profiles", "-o", indexed, ...profiles], { stdio: "inherit", env: { ...trainingEnv, LLVM_PROFILE_FILE: join(work, "merge.profraw") }, }); if (merged.status !== 0) throw new Error("merge-profiles failed"); -// The indexed profile compresses to about an eighth of its size. +// The indexed profile compresses to about a sixth of its size. writeFileSync( profileOutput, gzipSync(readFileSync(indexed), { level: constants.Z_BEST_COMPRESSION }), From 6d8f0558ff4bf52040c500250ff750d9350db5f3 Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 15:45:29 -0500 Subject: [PATCH 20/52] Read int32-slot arrays at their width in integer clones --- .../src/backend/llvm/dense-array-access.ts | 3 ++ .../src/backend/llvm/integer-clones.ts | 33 ++++++++++++++- .../corpus/integer-clone-int32-slots.ts.json | 6 +++ tests/corpus/integer-clone-int32-slots.ts | 40 +++++++++++++++++++ .../integer-clone-int32-slots.ts.json | 1 + 5 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/integer-clone-int32-slots.ts.json create mode 100644 tests/corpus/integer-clone-int32-slots.ts create mode 100644 tests/harness/corpus-costs/integer-clone-int32-slots.ts.json diff --git a/packages/compiler/src/backend/llvm/dense-array-access.ts b/packages/compiler/src/backend/llvm/dense-array-access.ts index 0991c344c..b1e65a23f 100644 --- a/packages/compiler/src/backend/llvm/dense-array-access.ts +++ b/packages/compiler/src/backend/llvm/dense-array-access.ts @@ -301,6 +301,9 @@ function loadState(host: LlvmEmitterContext, guard: DenseGuard): string { return state; } +/** The ScrElemKind of double arrays (scr_array.h). */ +export const SCR_ELEM_F64 = 0; + /** The ScrElemKind of int32 arrays (scr_array.h). */ export const SCR_ELEM_I32 = 7; diff --git a/packages/compiler/src/backend/llvm/integer-clones.ts b/packages/compiler/src/backend/llvm/integer-clones.ts index 3f3f86e22..0ea3947b2 100644 --- a/packages/compiler/src/backend/llvm/integer-clones.ts +++ b/packages/compiler/src/backend/llvm/integer-clones.ts @@ -3,6 +3,7 @@ import type { IrExpr, IrFunction, IrLocal, IrModule, IrStmt, IrType } from "../. import { mangleFunction } from "../mangle.js"; import { BlockBuilder } from "./blocks.js"; import { SCR_ARR_FIELD } from "./common.js"; +import { SCR_ELEM_F64, SCR_ELEM_I32 } from "./dense-array-access.js"; /** Speculative integer clones of pure number-valued functions. * @@ -1051,9 +1052,39 @@ class CloneEmitter { ); B.line(`${data} = load ptr, ptr ${dataField}`); B.line(`${offset} = zext i32 ${index} to i64`); + // A number array keeps 8-byte doubles, or 4-byte int32 slots when it is + // proven to hold only int32s (SCR_ELEM_I32); any other storage bails. + const kindField = B.tmp(); + const kind = B.tmp(); + const isInt32 = B.tmp(); + B.line( + `${kindField} = getelementptr inbounds %ScrArr, ptr ${array}, i32 0, i32 ${SCR_ARR_FIELD.elem}`, + ); + B.line(`${kind} = load i8, ptr ${kindField}`); + B.line(`${isInt32} = icmp eq i8 ${kind}, ${SCR_ELEM_I32}`); + const int32Slots = B.newLabel("elem.i32"); + const doubleSlots = B.newLabel("elem.f64"); + const join = B.newLabel("elem.join"); + B.condBr(isInt32, int32Slots, doubleSlots); + B.startBlock(int32Slots); + const int32Slot = B.tmp(); + const int32 = B.tmp(); + B.line(`${int32Slot} = getelementptr inbounds i32, ptr ${data}, i64 ${offset}`); + B.line(`${int32} = load i32, ptr ${int32Slot}`); + B.br(join); + B.startBlock(doubleSlots); + const isDouble = B.tmp(); + B.line(`${isDouble} = icmp eq i8 ${kind}, ${SCR_ELEM_F64}`); + this.require(isDouble); B.line(`${slot} = getelementptr inbounds double, ptr ${data}, i64 ${offset}`); B.line(`${number} = load double, ptr ${slot}`); - return this.exactInt32(number); + const exact = this.exactInt32(number); + const doubleEnd = B.currentLabel(); + B.br(join); + B.startBlock(join); + const value = B.tmp(); + B.line(`${value} = phi i32 [ ${int32}, %${int32Slots} ], [ ${exact}, %${doubleEnd} ]`); + return value; } /** The int32 the double `number` equals bit for bit (never -0, NaN, a diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/integer-clone-int32-slots.ts.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/integer-clone-int32-slots.ts.json new file mode 100644 index 000000000..e26a5a727 --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/integer-clone-int32-slots.ts.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/integer-clone-int32-slots.ts" + ], + "diags": [] +} diff --git a/tests/corpus/integer-clone-int32-slots.ts b/tests/corpus/integer-clone-int32-slots.ts new file mode 100644 index 000000000..5c34ada67 --- /dev/null +++ b/tests/corpus/integer-clone-int32-slots.ts @@ -0,0 +1,40 @@ +// A recursive function over a number array runs as an integer clone. +// sumFrom only receives arrays that hold int32s, which keep 4-byte int32 +// slots, and the clone reads them at that width, near their end too. +// sumWide receives an array that also holds a fraction, with 8-byte slots. +function sumFrom(xs: number[], i: number): number { + if (i >= xs.length) return 0; + return xs[i]! + sumFrom(xs, i + 1); +} + +function masked(n: number, start: number): number { + const a: number[] = []; + for (let i = 0; i < n; i++) a.push(i & 7); + return sumFrom(a, start); +} + +function halves(n: number, start: number): number { + const a: number[] = []; + for (let i = 0; i < n; i++) a.push(i < n / 2 ? 0 : 3); + return sumFrom(a, start); +} + +function sumWide(xs: number[], i: number): number { + if (i >= xs.length) return 0; + return xs[i]! + sumWide(xs, i + 1); +} + +function widened(n: number, start: number): number { + const a: number[] = []; + for (let i = 0; i < n; i++) a.push(i % 5); + const before = sumWide(a, start); + a.push(0.5); + return before * 10 + sumWide(a, start); +} + +const { n } = JSON.parse('{"n": 1000}') as { n: number }; +for (const start of [0, 1, n / 2, n - 9, n - 2, n - 1, n]) + console.log(start, masked(n | 0, start | 0), halves(n | 0, start | 0)); +for (const size of [63, 64, 65]) + console.log(size, halves(size, size - 24), halves(size, size - 1), masked(size, size - 3)); +console.log(widened(40, 0), widened(40, 37)); diff --git a/tests/harness/corpus-costs/integer-clone-int32-slots.ts.json b/tests/harness/corpus-costs/integer-clone-int32-slots.ts.json new file mode 100644 index 000000000..91deb4042 --- /dev/null +++ b/tests/harness/corpus-costs/integer-clone-int32-slots.ts.json @@ -0,0 +1 @@ +{ "plain": 3474, "san": 38229 } From 45d81216c04f78b2b33f92cc5e6e926576759ee1 Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 16:05:57 -0500 Subject: [PATCH 21/52] Name modules by the same relative path on Windows stableFileName used node:path's relative(), which returns paths with `\` separators on Windows. The module tags hash that name, so Windows builds named the functions of every non-entry module differently from Linux builds, and a profile or layout collected on Linux no longer matched them. Structural positions used the same name. portableRelativePath computes the relative path with the platform's rules and writes it with `/` separators, as tsgoPath does for checker paths. Linux and macOS names are unchanged. --- packages/compiler/src/frontend/lowering/lowerer.ts | 10 ++++++---- .../src/frontend/lowering/stable-names.test.ts | 13 ++++++++++++- .../compiler/src/frontend/lowering/stable-names.ts | 14 ++++++++++++++ 3 files changed, 32 insertions(+), 5 deletions(-) diff --git a/packages/compiler/src/frontend/lowering/lowerer.ts b/packages/compiler/src/frontend/lowering/lowerer.ts index e218d7fdd..75d824feb 100644 --- a/packages/compiler/src/frontend/lowering/lowerer.ts +++ b/packages/compiler/src/frontend/lowering/lowerer.ts @@ -17,7 +17,7 @@ import { import { isDeclBoundaryFile } from "../decl-projection.js"; import { relieveHeapPressure } from "../../heap-pressure.js"; import { moduleNamespaceObject, moduleNamespaceValue } from "./module-namespace-elements.js"; -import { keyedHelperName, moduleTagNumber } from "./stable-names.js"; +import { keyedHelperName, moduleTagNumber, portableRelativePath } from "./stable-names.js"; import { positionTag, StructuralPositions } from "./structural-positions.js"; import { bindingSymbolOfRead, onlyForwarded, stripTypeWrappers } from "./typed-arguments.js"; import { @@ -213,7 +213,7 @@ export { newFnCtx, type FnCtx } from "./function-context.js"; * - Lexical scoping is resolved here: locals get function-unique ids * ("x.0", "x.1" for shadowing); the IR is scope-flat. */ -import { dirname, relative, resolve } from "node:path"; +import { dirname, resolve } from "node:path"; import { bindingSource } from "../binding-source.js"; import { compilerOwnedFileName, tsgoPath } from "../dts-paths.js"; import * as ts from "../ts7/adapter.js"; @@ -3544,14 +3544,16 @@ export class Lowerer { * names do not depend on where the program sits, default library files * by their base name (two checkers install them in different * directories), and the files scriptc ships by their name inside scriptc, - * so names do not depend on where scriptc is installed either. */ + * so names do not depend on where scriptc is installed either. Relative + * paths use `/` on every platform. */ readonly positions = new StructuralPositions((sf) => this.stableFileName(sf)); /** The name of `sf` in positions and module tags. */ stableFileName(sf: ts.SourceFile): string { return this.program.isSourceFileDefaultLibrary(sf) ? `lib:${sf.fileName.slice(sf.fileName.lastIndexOf("/") + 1)}` - : (compilerOwnedFileName(sf.fileName) ?? relative(dirname(this.entry.fileName), sf.fileName)); + : (compilerOwnedFileName(sf.fileName) ?? + portableRelativePath(dirname(this.entry.fileName), sf.fileName)); } /** The outermost node whose token span is exactly `loc`, or null. */ diff --git a/packages/compiler/src/frontend/lowering/stable-names.test.ts b/packages/compiler/src/frontend/lowering/stable-names.test.ts index 31982597c..dbef9b29e 100644 --- a/packages/compiler/src/frontend/lowering/stable-names.test.ts +++ b/packages/compiler/src/frontend/lowering/stable-names.test.ts @@ -1,5 +1,5 @@ import { expect, test } from "vitest"; -import { moduleTagNumber } from "./stable-names.js"; +import { moduleTagNumber, portableRelativePath } from "./stable-names.js"; test("module tag numbers depend only on the file name and stay distinct", () => { const first = moduleTagNumber("lib/a.ts", new Set()); @@ -8,3 +8,14 @@ test("module tag numbers depend only on the file name and stay distinct", () => expect(moduleTagNumber("lib/a.ts", new Set([first]))).toBe((first + 1) >>> 0); expect(moduleTagNumber("lib/a.ts", new Set([first, (first + 1) >>> 0]))).toBe((first + 2) >>> 0); }); + +test("relative module paths use / on every platform", () => { + expect(portableRelativePath("/repo/src", "/repo/src/lib/a.ts", "linux")).toBe("lib/a.ts"); + expect(portableRelativePath("C:/repo/src", "C:/repo/src/lib/a.ts", "win32")).toBe("lib/a.ts"); + expect(portableRelativePath("C:\\repo\\src", "C:/repo/node_modules/x/index.d.ts", "win32")).toBe( + "../node_modules/x/index.d.ts", + ); + expect( + moduleTagNumber(portableRelativePath("C:/repo", "C:/repo/lib/a.ts", "win32"), new Set()), + ).toBe(moduleTagNumber(portableRelativePath("/repo", "/repo/lib/a.ts", "linux"), new Set())); +}); diff --git a/packages/compiler/src/frontend/lowering/stable-names.ts b/packages/compiler/src/frontend/lowering/stable-names.ts index f47f1aca3..0d57bd2c9 100644 --- a/packages/compiler/src/frontend/lowering/stable-names.ts +++ b/packages/compiler/src/frontend/lowering/stable-names.ts @@ -1,4 +1,7 @@ +import * as posix from "node:path/posix"; +import * as win32 from "node:path/win32"; import { InternalCompilerError } from "../../errors.js"; +import { tsgoPath } from "../ts7/session-path.js"; /** The owner of the names keyedHelperName hands out. */ export interface KeyedNameOwner { @@ -58,3 +61,14 @@ export function moduleTagNumber(fileName: string, taken: ReadonlySet): n while (taken.has(n)) n = (n + 1) >>> 0; return n; } + +/** The path of `file` relative to the directory `from`, with `/` separators + * on every platform, so names built from it match across hosts. */ +export function portableRelativePath( + from: string, + file: string, + platform: NodeJS.Platform = process.platform, +): string { + const path = platform === "win32" ? win32.relative(from, file) : posix.relative(from, file); + return tsgoPath(path, platform); +} From 1b2e591a0262e62e9a544af88182a0552889442e Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 16:18:58 -0500 Subject: [PATCH 22/52] Keep the typed ?? path to literal defaults --- .../frontend/lowering/expressions/binary.ts | 27 ++++++++++++++++++- .../untyped-nullish-scalar-defaults.mjs | 4 +++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/packages/compiler/src/frontend/lowering/expressions/binary.ts b/packages/compiler/src/frontend/lowering/expressions/binary.ts index 39b19c7e2..cfc317ccd 100644 --- a/packages/compiler/src/frontend/lowering/expressions/binary.ts +++ b/packages/compiler/src/frontend/lowering/expressions/binary.ts @@ -334,6 +334,25 @@ function isMemberReceiver(node: ts.Expression): boolean { ); } +/** A literal default (`0`, `-1`, `""`, `true`): it always has its own type. + * Other defaults, such as an element read that can be undefined, keep the + * dynamic path. */ +function literalDefault(node: ts.Expression): boolean { + while (ts.isParenthesizedExpression(node)) node = node.expression; + if ( + ts.isPrefixUnaryExpression(node) && + (node.operator === ts.SyntaxKind.MinusToken || node.operator === ts.SyntaxKind.PlusToken) + ) + node = node.operand; + return ( + ts.isNumericLiteral(node) || + ts.isStringLiteral(node) || + ts.isNoSubstitutionTemplateLiteral(node) || + node.kind === ts.SyntaxKind.TrueKeyword || + node.kind === ts.SyntaxKind.FalseKeyword + ); +} + export function lowerNullishPair( lowerer: Lowerer, expr: ts.BinaryExpression, @@ -392,7 +411,13 @@ export function lowerNullishPair( // default of its value's type give a scalar, so the test and the default // run on the typed path and only the result converts. Converting the // optional left itself would allocate a union for every read. - if (rest.length === 1 && primitive(rest[0]!) && rightType && typeEquals(rightType, rest[0]!)) { + if ( + rest.length === 1 && + primitive(rest[0]!) && + rightType && + typeEquals(rightType, rest[0]!) && + literalDefault(expr.right) + ) { const typed: IrExpr = { kind: "nullish", left, diff --git a/tests/corpus/untyped-nullish-scalar-defaults.mjs b/tests/corpus/untyped-nullish-scalar-defaults.mjs index 5057e369e..507945456 100644 --- a/tests/corpus/untyped-nullish-scalar-defaults.mjs +++ b/tests/corpus/untyped-nullish-scalar-defaults.mjs @@ -44,3 +44,7 @@ console.log(counts.get("omega") ?? fallback, counts.get("alpha") ?? fallback); let total = 0; for (const word of ["alpha", "beta", "omega"]) total += (counts.get(word) ?? 0) * 10; console.log(total, (counts.get("omega") ?? 0) === 0, (odd.get("nan") ?? 0) === (odd.get("nan") ?? 0)); + +// A default of the same type that can itself be undefined keeps its value. +const spare = [4, 5]; +console.log(counts.get("omega") ?? spare[9], counts.get("beta") ?? spare[9], counts.get("omega") ?? spare[1]); From 6bdd3e39ca5d2d29b78cf2ac38e22657490273c9 Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 16:20:12 -0500 Subject: [PATCH 23/52] Fix the self-hosting build of the arena runtime --- packages/compiler/src/backend/llvm/region-groups.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/compiler/src/backend/llvm/region-groups.ts b/packages/compiler/src/backend/llvm/region-groups.ts index 70e4168ed..ce8354c92 100644 --- a/packages/compiler/src/backend/llvm/region-groups.ts +++ b/packages/compiler/src/backend/llvm/region-groups.ts @@ -438,7 +438,11 @@ export function analyzeRegionGroups(mod: IrModule): RegionGroups { const info: UseInfo = {}; const use = useOf(parents[index]!, parents.slice(0, index), false, info); if (use !== "internal") { - Object.assign(out, info); + // Field by field: an Object.assign onto a record makes the + // self-hosted compiler read class and record properties dynamically. + if (info.bound !== undefined) out.bound = info.bound; + if (info.at !== undefined) out.at = info.at; + if (info.target !== undefined) out.target = info.target; return use; } index = info.at!; From c2f9b491139760259708cfafc9c07d1bf52c92a8 Mon Sep 17 00:00:00 2001 From: Malte Ubl Date: Mon, 26 Oct 2026 15:05:27 -0700 Subject: [PATCH 24/52] Write untyped stores into live records and pass prefix records by pointer An untyped write of a present declared field of a live record capsule now stores into the native record through a per-shape `set` hook (checked like the commit, refusing to the snapshot path for values the field cannot hold), so the capsule keeps answering from the record instead of turning into a permanent snapshot. Object.assign from a plain object takes the same path, and checked conversions and matches read a capsule through a fresh, uncached snapshot. A checked conversion of a record capsule into a record type whose storage is a same-offset prefix of the capsule's record (and whose extra fields hold no references) passes the pointer: both names keep one object, writes show through either, and the record remembers its own capsule parameters, so every later box of it and the narrower type's reflective surfaces answer for the whole object (decision D3). Other cross-layout conversions keep the refreshed copy. Co-Authored-By: Claude Opus 5.5 --- packages/compiler/src/backend/llvm/dyn.ts | 92 ++++++++- .../src/backend/llvm/expr-stream-bridges.ts | 87 +++++++- .../corpus/record-dynamic-writes.ts.json | 6 + .../corpus/record-prefix-identity.ts.json | 6 + packages/runtime/src/scr_dyn.h | 9 + packages/runtime/src/scr_json.c | 190 +++++++++++++++++- tests/corpus/record-dynamic-writes.ts | 62 ++++++ tests/corpus/record-prefix-identity.ts | 52 +++++ .../record-dynamic-writes.ts.json | 1 + .../record-prefix-identity.ts.json | 1 + 10 files changed, 490 insertions(+), 16 deletions(-) create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/record-dynamic-writes.ts.json create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/record-prefix-identity.ts.json create mode 100644 tests/corpus/record-dynamic-writes.ts create mode 100644 tests/corpus/record-prefix-identity.ts create mode 100644 tests/harness/corpus-costs/record-dynamic-writes.ts.json create mode 100644 tests/harness/corpus-costs/record-prefix-identity.ts.json diff --git a/packages/compiler/src/backend/llvm/dyn.ts b/packages/compiler/src/backend/llvm/dyn.ts index 4387c13f9..762bc52f4 100644 --- a/packages/compiler/src/backend/llvm/dyn.ts +++ b/packages/compiler/src/backend/llvm/dyn.ts @@ -1,5 +1,5 @@ import { emitPerKeyOrder } from "./key-orders.js"; -import { typedRefConstructor } from "./shapes.js"; +import { rcMembers, typedRefConstructor } from "./shapes.js"; import { bindLiveArrayOps } from "./expr-stream-bridges.js"; import { BYTES_ELEM_NUM, @@ -45,6 +45,7 @@ import { DYN_HANDLE_KINDS, isDirentShape, KEY_ORDER_FIELD, + shapeHasAccessorSlots, shapeKeyOrders, isDynTypedRefType, isRefCounted, @@ -260,6 +261,8 @@ export class LlDyn { /** Emitted function definitions, in interning order. */ readonly defs: string[] = []; + private readonly prefixSources = new Map(); + constructor(private readonly host: DynHost) {} /** Journal replay (emit-journal.ts): builds or finds the helper a chunk @@ -419,7 +422,7 @@ export class LlDyn { * dyn view: inside a visit session (`wrapped`), a capsule keeps the view * it was first given, so an outer visit can keep reading it. */ private viewFn(wrapped: boolean): string { - const fn = wrapped ? "scr_dyn_visit_view" : "scr_dyn_typed_ref_materialize"; + const fn = wrapped ? "scr_dyn_visit_view" : "scr_dyn_typed_ref_peek"; this.host.declare(`declare ptr @${fn}(ptr)`); return fn; } @@ -1150,10 +1153,63 @@ export class LlDyn { * Class layouts share their base prefix, so unboxing retains the same * pointer and virtual dispatch still uses the object's original vtable. */ private typedRefMatches(B: BlockBuilder, t: IrType): string { + return this.typedRefMatchesAny( + B, + isDynTypedRefType(t) + ? this.host.classSubtypes(t.className).map((className) => ({ kind: "object", className })) + : [t], + ); + } + + /** The record shapes whose values a pointer of shape `targetId` may + * reference unchanged: their struct begins with exactly the target's + * fields (same names, types and representations, so the same offsets), + * and everything the target's release, teardown and collector support + * would get wrong on them is absent. The extra fields hold no + * references (the target's release frees the block without visiting + * them; frees are size-class agnostic), neither shape carries a shape + * word, a cycle header, an overflow map, key order variants or accessor + * slots, and both freeze alike. A record that keeps undeclared source + * properties is refused at run time (scr_dyn_typed_ref_prefix_view). */ + private prefixViewSources(targetId: string): string[] { + const memo = this.prefixSources.get(targetId); + if (memo) return memo; + const host = this.host; + const plain = (shape: IrRecordShape): boolean => + !shape.tuple && + !shape.indexValue && + !isDirentShape(shape) && + !shapeHasAccessorSlots(shape) && + shapeKeyOrders(shape).length === 1 && + !shape.fields.some((field) => field.name === KEY_ORDER_FIELD) && + host.nullableUnions.shapeNumber(shape.id) === 0 && + !host.tracedShapes.has(`record:${shape.id}`); + const target = host.recordsById.get(targetId); + const out: string[] = []; + if (target && plain(target) && target.fields.length > 0) { + const base = host.nullableUnions.fieldBase(targetId); + for (const shape of host.recordsById.values()) { + if (shape.id === targetId || shape.fields.length <= target.fields.length) continue; + if (!plain(shape) || shape.freezable !== target.freezable) continue; + if (host.nullableUnions.fieldBase(shape.id) !== base) continue; + const prefix = target.fields.every( + (field, i) => + shape.fields[i]!.name === field.name && + typeKey(shape.fields[i]!.type) === typeKey(field.type), + ); + if (!prefix) continue; + const extra = rcMembers(shape, host.inlineUnions, base).some( + (member) => member.index >= target.fields.length + base && isRefCounted(member.type), + ); + if (!extra) out.push(shape.id); + } + } + this.prefixSources.set(targetId, out); + return out; + } + + private typedRefMatchesAny(B: BlockBuilder, types: readonly IrType[]): string { this.host.declare(`declare zeroext i1 @scr_dyn_typed_ref_is(ptr, ptr, ${this.S})`); - const types: IrType[] = isDynTypedRefType(t) - ? this.host.classSubtypes(t.className).map((className) => ({ kind: "object", className })) - : [t]; let matched = "false"; for (const type of types) { const key = typeKey(type); @@ -2166,6 +2222,32 @@ export class LlDyn { B.line(`${ref} = call ptr @scr_dyn_typed_ref_unbox(ptr %d)`); B.terminate(`ret ptr ${ref}`); B.startBlock(lNext); + if (t.kind === "record") { + // A record whose storage begins with exactly this type's storage + // is this type's value too: the conversion passes the pointer, so + // both names keep one object (decision D3). + const sources = this.prefixViewSources(t.shapeId); + if (sources.length > 0) { + const viewed = this.typedRefMatchesAny( + B, + sources.map((shapeId) => ({ kind: "record", shapeId })), + ); + const lView = B.newLabel("dc.prefix"); + const lOther = B.newLabel("dc.noprefix"); + B.condBr(viewed, lView, lOther); + B.startBlock(lView); + host.declare(`declare ptr @scr_dyn_typed_ref_prefix_view(ptr)`); + const view = B.tmp(); + B.line(`${view} = call ptr @scr_dyn_typed_ref_prefix_view(ptr %d)`); + const passed = B.tmp(); + B.line(`${passed} = icmp ne ptr ${view}, null`); + const lPass = B.newLabel("dc.prefix.pass"); + B.condBr(passed, lPass, lOther); + B.startBlock(lPass); + B.terminate(`ret ptr ${view}`); + B.startBlock(lOther); + } + } // A constructor-function stream (scr_dyn_builtin_stream.c) carries // its runtime stream. const streamKind = t.kind === "object" ? builtinStreamKind(t.className) : null; diff --git a/packages/compiler/src/backend/llvm/expr-stream-bridges.ts b/packages/compiler/src/backend/llvm/expr-stream-bridges.ts index f711795d3..516c08076 100644 --- a/packages/compiler/src/backend/llvm/expr-stream-bridges.ts +++ b/packages/compiler/src/backend/llvm/expr-stream-bridges.ts @@ -1484,6 +1484,10 @@ function liveRecordOps( G.startBlock(bad); G.terminate(`unreachable`); + // Only a program that writes through a dynamic view needs the store + // hook (and its checked conversions), as for the commit adapter. + const setDefs = host.liveViewsReadOnly ? [] : liveRecordSet(host, t, `${snapshot}_set`, fields); + const literals = fields.map((field) => `ptr ${host.internLiteral(field.name)}`); host.resolveThunkDefs.push( `define internal zeroext i1 @${has}(ptr %p, ${host.sizeType} %i) ${FN_ATTRS} { ; live field presence of ${typeKey(t)}`, @@ -1494,13 +1498,90 @@ function liveRecordOps( G.render(), `}`, ``, + ...setDefs, `@${names} = internal constant [${fields.length} x ptr] [${literals.join(", ")}]`, - // Mutable: the runtime fills the trailing key-array slot on first use. - `@${ops} = internal global { ${host.sizeType}, ptr, ptr, ptr, i8, ptr, ptr } { ${host.sizeType} ${fields.length}, ptr @${names}, ptr @${has}, ptr @${get}, i8 ${optional.length === 0 ? 1 : 0}, ptr null, ptr null }`, + // Mutable: the runtime fills the key-array slot on first use. + `@${ops} = internal global { ${host.sizeType}, ptr, ptr, ptr, i8, ptr, ptr, ptr } { ${host.sizeType} ${fields.length}, ptr @${names}, ptr @${has}, ptr @${get}, i8 ${optional.length === 0 ? 1 : 0}, ptr null, ptr null, ptr ${setDefs.length ? `@${snapshot}_set` : "null"} }`, ``, ); } +/** The `set` hook of a live record's ops table: stores a dynamic write of + * present field `index` into the native record in place, so the capsule + * never becomes a snapshot for it. A value the field type does not accept + * answers false with no side effects, leaving the snapshot path to raise + * the commit's diagnostic; an inline union field always does. */ +function liveRecordSet( + host: LlvmEmitterContext, + t: IrType & { kind: "record" }, + sym: string, + fields: readonly IrRecordShape["fields"][number][], +): string[] { + const shape = host.recordsById.get(t.shapeId)!; + const struct = mangleRecordStruct(t.shapeId); + const S = new BlockBuilder(); + const labels = fields.map(() => S.newLabel("live.record.store")); + const refuse = S.newLabel("live.record.refuse"); + S.terminate( + `switch ${host.sizeType} %i, label %${refuse} [ ${fields + .map((_, position) => `${host.sizeType} ${position}, label %${labels[position]}`) + .join(" ")} ]`, + ); + fields.forEach((field, position) => { + S.startBlock(labels[position]!); + const inline = host.inlineUnions.record(field.type); + if (inline) { + S.br(refuse); + return; + } + const fits = S.tmp(); + S.line(`${fits} = call zeroext i1 @${host.dyn.dynMatchHelper(field.type)}(ptr %v)`); + const check = S.newLabel("live.record.check"); + S.condBr(fits, check, refuse); + S.startBlock(check); + const valueTy = host.llType(field.type); + const next = S.tmp(); + S.line( + `${next} = call ${valueTy === "i1" ? "zeroext " : ""}${valueTy} @${host.dyn.dynCheckHelper(field.type)}(ptr %v, ptr null)`, + ); + // A conversion that throws has already raised the write's error. + const pending = S.tmp(); + for (const line of host.pendingTestLines(pending)) S.line(line.trimStart()); + const write = S.newLabel("live.record.write"); + const done = S.newLabel("live.record.done"); + S.condBr(pending, done, write); + S.startBlock(write); + const index = shape.fields.indexOf(field) + host.nullableUnions.fieldBase(t.shapeId); + const fieldPtr = S.tmp(); + S.line(`${fieldPtr} = getelementptr inbounds %${struct}, ptr %p, i64 0, i32 ${index}`); + const fieldTy = llFieldType(field.type, false); + let stored = next; + if (fieldTy === "i8") { + stored = S.tmp(); + S.line(`${stored} = zext i1 ${next} to i8`); + } + if (isRefCounted(field.type)) { + const old = S.tmp(); + S.line(`${old} = load ptr, ptr ${fieldPtr}`); + S.line(`store ptr ${stored}, ptr ${fieldPtr} ; takes ownership`); + S.line(`call void ${releaseSym(host.shapeHost, field.type)}(ptr ${old})`); + } else { + S.line(`store ${fieldTy} ${stored}, ptr ${fieldPtr}`); + } + S.br(done); + S.startBlock(done); + S.terminate(`ret i1 true`); + }); + S.startBlock(refuse); + S.terminate(`ret i1 false`); + return [ + `define internal zeroext i1 @${sym}(ptr %p, ${host.sizeType} %i, ptr %v) ${FN_ATTRS} { ; live field store into ${typeKey(t)}`, + S.render(), + `}`, + ``, + ]; +} + /** `@_rops` for a shape with orderVariants: a record-ops table * whose `select` hook answers the `_o_rops` table (liveRecordOps) of the * record's current key order, which a write of an optional key can change @@ -1524,7 +1605,7 @@ function liveRecordOrderSelect( B.render(), `}`, ``, - `@${snapshot}_rops = internal global { ${host.sizeType}, ptr, ptr, ptr, i8, ptr, ptr } { ${host.sizeType} 0, ptr null, ptr null, ptr null, i8 0, ptr null, ptr @${snapshot}_select }`, + `@${snapshot}_rops = internal global { ${host.sizeType}, ptr, ptr, ptr, i8, ptr, ptr, ptr } { ${host.sizeType} 0, ptr null, ptr null, ptr null, i8 0, ptr null, ptr @${snapshot}_select, ptr null }`, ``, ); } diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/record-dynamic-writes.ts.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/record-dynamic-writes.ts.json new file mode 100644 index 000000000..8de4b7d03 --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/record-dynamic-writes.ts.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/record-dynamic-writes.ts" + ], + "diags": [] +} diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/record-prefix-identity.ts.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/record-prefix-identity.ts.json new file mode 100644 index 000000000..273bff2c1 --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/record-prefix-identity.ts.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/record-prefix-identity.ts" + ], + "diags": [] +} diff --git a/packages/runtime/src/scr_dyn.h b/packages/runtime/src/scr_dyn.h index 1572c8a11..6ab146652 100644 --- a/packages/runtime/src/scr_dyn.h +++ b/packages/runtime/src/scr_dyn.h @@ -428,6 +428,13 @@ typedef struct ScrDynTypedRecordOps { * optional key can change after the record is boxed. NULL in every other * table. */ const struct ScrDynTypedRecordOps *(*select)(void *rec); + /* Stores `value` into present field `index` in place when it fits the + * field's type and answers true (also when the conversion itself threw, + * which has then raised the write's error); answers false with no side + * effects otherwise, leaving the snapshot path to raise its diagnostic. + * NULL when the program never writes through a dynamic view, and for a + * field whose storage it cannot replace (an inline union). */ + bool (*set)(void *rec, size_t index, const ScrDyn *value); } ScrDynTypedRecordOps; /* A record capsule's ops while it answers from the native record (no view * created yet), or NULL. */ @@ -1308,8 +1315,10 @@ bool scr_dyn_typed_ref_is( const ScrDyn *d, const char *type_key, size_t type_key_len); bool scr_dyn_typed_ref_is_key(const ScrDyn *d, const ScrStr *type_key); void *scr_dyn_typed_ref_unbox(const ScrDyn *d); /* +1 */ +void *scr_dyn_typed_ref_prefix_view(const ScrDyn *d); /* +1 or NULL */ ScrDyn *scr_dyn_class_view_unavailable(void *ptr); ScrDyn *scr_dyn_typed_ref_materialize(const ScrDyn *d); /* +1 */ +ScrDyn *scr_dyn_typed_ref_peek(const ScrDyn *d); /* +1 */ /* What string conversion renders for a capsule (+1): its materialized * view, or, for an EventTarget or Event subclass without its own * toString, the "[object EventTarget]" / "[object Event]" string of its diff --git a/packages/runtime/src/scr_json.c b/packages/runtime/src/scr_json.c index 7b0d44069..e2194c03c 100644 --- a/packages/runtime/src/scr_json.c +++ b/packages/runtime/src/scr_json.c @@ -3745,7 +3745,24 @@ typedef struct { const char *names; const char *lens; size_t name_stride, len_stride, count; + /* A record that a narrower record type also references (a prefix view, + * scr_dyn_typed_ref_prefix_view) has an entry with no view and this, its + * own capsule's parameters: every capsule of the record then answers + * for its whole storage (scr_dyn_typed_ref_new), and reflective surfaces + * of the narrower type go through that capsule (scr_record_source_has). + * Owned; NULL for an ordinary source. */ + struct ScrRecordPrefix *prefix; } ScrRecordSource; +typedef struct ScrRecordPrefix { + void *(*retain)(void *); + void (*release)(void *); + const char *type_key; + size_t type_key_len; + ScrDyn *(*materialize)(void *); + void (*commit)(void *, const ScrDyn *); + const ScrDynTypedArrayOps *ops; /* the record's ScrDynTypedRecordOps */ + bool traced, record; +} ScrRecordPrefix; static SCR_TL ScrRecordSource *scr_record_sources; static SCR_TL size_t scr_record_source_capacity, scr_record_source_count; /* Deleted slots keep this marker so probe runs stay intact without moving @@ -3776,7 +3793,7 @@ static size_t scr_record_source_bucket(const void *rec) { return (size_t)((run << 6) | (key & 63)) & (scr_record_source_capacity - 1); } -static ScrRecordSource *scr_record_source_find(const void *rec) { +static ScrRecordSource *scr_record_source_slot(const void *rec) { if (!scr_record_source_count) return NULL; size_t mask = scr_record_source_capacity - 1; for (size_t slot = scr_record_source_bucket(rec); scr_record_sources[slot].rec; @@ -3786,6 +3803,17 @@ static ScrRecordSource *scr_record_source_find(const void *rec) { return NULL; } +/* The record's kept source, or NULL (also for a prefix-view entry). */ +static ScrRecordSource *scr_record_source_find(const void *rec) { + ScrRecordSource *entry = scr_record_source_slot(rec); + return entry && !entry->prefix ? entry : NULL; +} + +static const ScrRecordPrefix *scr_record_prefix_find(const void *rec) { + ScrRecordSource *entry = scr_record_source_slot(rec); + return entry ? entry->prefix : NULL; +} + /* The retained view of a record with undeclared keys (borrowed), or NULL. */ ScrDyn *scr_record_source_view(const void *rec) { ScrRecordSource *entry = scr_record_source_find(rec); @@ -3793,7 +3821,7 @@ ScrDyn *scr_record_source_view(const void *rec) { } bool scr_record_source_has(const void *rec) { - return scr_record_source_count && scr_record_source_find(rec) != NULL; + return scr_record_source_count && scr_record_source_slot(rec) != NULL; } /* Drops the entry at `found` from the table, releasing its view. The table @@ -3801,6 +3829,7 @@ bool scr_record_source_has(const void *rec) { * the dispose hook sees a consistent table. */ static void scr_record_source_drop(ScrRecordSource *found) { ScrDyn *view = found->view; + free(found->prefix); *found = (ScrRecordSource){ .rec = SCR_RECORD_SOURCE_DELETED }; scr_record_source_count--; scr_record_source_deleted++; @@ -3810,7 +3839,7 @@ static void scr_record_source_drop(ScrRecordSource *found) { static void scr_record_source_disposed(void *rec) { size_t bit = scr_record_source_filter_bit(rec); if (!(scr_record_source_filter[bit >> 6] & (UINT64_C(1) << (bit & 63)))) return; - ScrRecordSource *found = scr_record_source_find(rec); + ScrRecordSource *found = scr_record_source_slot(rec); if (found) scr_record_source_drop(found); } @@ -3883,7 +3912,10 @@ static void scr_record_source_teardown(void) { free(scr_record_source_filter); scr_record_source_filter = NULL; for (size_t i = 0; i < capacity; i++) { - if (table[i].rec && table[i].rec != SCR_RECORD_SOURCE_DELETED) scr_dyn_release(table[i].view); + if (table[i].rec && table[i].rec != SCR_RECORD_SOURCE_DELETED) { + free(table[i].prefix); + scr_dyn_release(table[i].view); + } } free(table); } @@ -3991,7 +4023,7 @@ void scr_record_source_spread(void *dst, const void *src, const char *const *nam if (scr_dyn_obj_get(view, names[i], lens[i])) continue; scr_dyn_obj_set(view, names[i], lens[i], scr_dyn_retain(scr_dyn_undefined())); } - ScrRecordSource *old = scr_record_source_find(dst); + ScrRecordSource *old = scr_record_source_slot(dst); if (old) scr_record_source_drop(old); probe.view = view; scr_record_source_put(&probe); @@ -3999,9 +4031,15 @@ void scr_record_source_spread(void *dst, const void *src, const char *const *nam void scr_record_source_move(void *from, void *to) { if (!scr_record_source_count) return; - ScrRecordSource *old = scr_record_source_find(to); - if (old) scr_record_source_drop(old); + ScrRecordSource *old = scr_record_source_slot(to); ScrRecordSource *found = scr_record_source_find(from); + if (old && old->prefix) { + /* A prefix-viewed record keeps its entry: its capsule's view holds the + * undeclared properties, and narrower names read them through it. */ + if (found) scr_record_source_drop(found); + return; + } + if (old) scr_record_source_drop(old); if (!found) return; ScrRecordSource moved = *found; *found = (ScrRecordSource){ .rec = SCR_RECORD_SOURCE_DELETED }; @@ -4061,6 +4099,7 @@ ScrDyn *scr_record_source_apply(ScrDyn *snapshot, const void *rec) { } static ScrDyn *scr_json_member(const ScrDyn *holder, const ScrStr *key); +static void scr_jb_put_record_prefix(ScrJsonBuf *b, void *rec); static bool scr_jb_try_pure_member(ScrJsonBuf *b, const char *key, size_t key_len, const ScrStr *key_str, const ScrDyn *value, bool *first); static bool scr_jb_put_member(ScrJsonBuf *b, const ScrStr *key, ScrDyn *value, bool *first, @@ -4138,6 +4177,10 @@ static void scr_record_source_key_order(const ScrDyn *view, size_t *out) { bool scr_jb_try_record_source(ScrJsonBuf *b, void *rec, bool (*field)(ScrJsonBuf *, void *, size_t, bool)) { + if (scr_record_prefix_find(rec)) { + scr_jb_put_record_prefix(b, rec); + return true; + } ScrRecordSource *found = scr_record_source_find(rec); if (!found) return false; /* Program code run by a member can add record sources and move the @@ -4235,6 +4278,20 @@ static ScrDyn *scr_dyn_typed_ref_new( const char *type_key, size_t type_key_len, ScrDyn *(*materialize)(void *), void (*commit)(void *, const ScrDyn *), bool traced, bool observed) { + const ScrRecordPrefix *prefix = + scr_record_source_count && type_key_len >= 7 && memcmp(type_key, "record:", 7) == 0 + ? scr_record_prefix_find(ptr) + : NULL; + if (prefix) { + /* A record seen through a narrower type: its capsule is its own. */ + retain = prefix->retain; + release = prefix->release; + type_key = prefix->type_key; + type_key_len = prefix->type_key_len; + materialize = prefix->materialize; + commit = prefix->commit; + traced = traced || prefix->traced; + } scr_typed_ref_reserve(); size_t slot = scr_typed_ref_bucket(ptr); for (ScrDyn *value; (value = scr_typed_ref_slots[slot]); slot = (slot + 1) & (scr_typed_ref_capacity - 1)) { @@ -4270,6 +4327,11 @@ static ScrDyn *scr_dyn_typed_ref_new( d->v.typed_ref.record = false; d->v.typed_ref.klass = false; d->v.typed_ref.bag_class = false; + if (prefix) { + /* Bound here: the narrower name's bind keeps them (bind_record). */ + d->v.typed_ref.array = prefix->ops; + d->v.typed_ref.record = prefix->record; + } scr_typed_ref_slots[slot] = d; /* the empty slot that ended the probe */ scr_typed_ref_count++; return d; @@ -4316,6 +4378,32 @@ void *scr_dyn_typed_ref_unbox(const ScrDyn *d) { return d->v.typed_ref.retain(d->v.typed_ref.ptr); } +/* A record capsule's native record for a conversion into a type whose + * storage is a prefix of the record's (the compiler's prefix-view sources): + * the pointer itself (+1), so both names keep one object. The record + * remembers its own capsule parameters (ScrRecordPrefix), so every later + * capsule of it, whichever name boxes it, answers for its whole storage. + * NULL while the record keeps undeclared source properties, whose table + * is keyed by the record's own declaration; the conversion then builds + * its copy as before. */ +void *scr_dyn_typed_ref_prefix_view(const ScrDyn *d) { + void *record = d->v.typed_ref.ptr; + if (!scr_record_prefix_find(record)) { + if (scr_record_source_find(record) || !d->v.typed_ref.record) return NULL; + ScrRecordPrefix *prefix = malloc(sizeof *prefix); + if (!prefix) scr_json_oom(); + *prefix = (ScrRecordPrefix){ + d->v.typed_ref.retain, d->v.typed_ref.release, d->v.typed_ref.type_key, + d->v.typed_ref.type_key_len, d->v.typed_ref.materialize, d->v.typed_ref.commit, + d->v.typed_ref.array, d->v.typed_ref.traced, d->v.typed_ref.record, + }; + ScrRecordSource entry = { .rec = record, .prefix = prefix }; + scr_record_source_put(&entry); + } + return d->v.typed_ref.retain(record); +} + + static void scr_dyn_typed_ref_preserve_child( ScrDyn **fresh_slot, ScrDyn *cached_child) { ScrDyn *fresh_child = *fresh_slot; @@ -4465,6 +4553,23 @@ ScrDyn *scr_dyn_typed_ref_materialize(const ScrDyn *d) { return scr_dyn_retain(capsule->v.typed_ref.materialized); } +static const ScrDynTypedRecordOps *scr_typed_ref_record_ops(const ScrDyn *d); + +/* A capsule's dyn view for a checked conversion or match, which only reads + * it (+1): a live record capsule without a view gets a fresh snapshot that + * is not kept, so the capsule keeps answering from the record; any other + * capsule its cached view (scr_dyn_typed_ref_materialize). */ +ScrDyn *scr_dyn_typed_ref_peek(const ScrDyn *d) { + if (!scr_typed_ref_record_ops(d)) return scr_dyn_typed_ref_materialize(d); + ScrDyn *fresh = d->v.typed_ref.materialize(d->v.typed_ref.ptr); + if (scr_exc_pending()) { + scr_dyn_release(fresh); + return scr_dyn_retain(scr_dyn_undefined()); + } + if (scr_dyn_typed_ref_frozen(d)) scr_dyn_record_view_freeze(fresh); + return fresh; +} + void scr_dyn_typed_ref_commit(ScrDyn *d) { /* A frozen record's or array's view cannot have changed its contents. */ if (d && d->kind == SCR_DYN_TYPED_REF && d->v.typed_ref.commit && @@ -4502,7 +4607,9 @@ void scr_dyn_typed_ref_bind_array(ScrDyn *d, const ScrDynTypedArrayOps *ops) { * hold state the record cannot (added properties, a prototype, changed * attributes), and every operation goes through it as before. */ void scr_dyn_typed_ref_bind_record(ScrDyn *d, const ScrDynTypedRecordOps *ops) { - if (d && d->kind == SCR_DYN_TYPED_REF) { + /* A capsule binds once; a prefix-viewed record's capsule keeps its own + * table when a narrower name boxes it (scr_dyn_typed_ref_new). */ + if (d && d->kind == SCR_DYN_TYPED_REF && !d->v.typed_ref.record) { d->v.typed_ref.array = (const ScrDynTypedArrayOps *)(const void *)ops; d->v.typed_ref.record = true; d->v.typed_ref.klass = false; @@ -4645,6 +4752,18 @@ static bool scr_typed_ref_record_field(const ScrDynTypedRecordOps *ops, const Sc return false; } +static bool scr_typed_ref_record_field_bytes(const ScrDynTypedRecordOps *ops, const char *key, + size_t key_len, size_t *out) { + for (size_t i = 0; i < ops->count; i++) { + const ScrStr *name = ops->names[i]; + if (name->len == key_len && memcmp(name->data, key, key_len) == 0) { + *out = i; + return true; + } + } + return false; +} + /* +1 own field value, or NULL when `key` is not a present field. */ static ScrDyn *scr_typed_ref_record_get(const ScrDyn *d, const ScrStr *key) { const ScrDynTypedRecordOps *ops = scr_typed_ref_record_ops(d); @@ -4792,6 +4911,51 @@ static bool scr_typed_ref_array_has_own(const ScrDyn *d, const ScrStr *key) { /* Writes an element in place or appends at `length`. False (nothing done) * when the value does not fit the element type or the write could grow the * array by more than one element: the snapshot path owns those outcomes. */ +/* A write of a present declared field of a live record stores into the + * native record itself, so the capsule keeps answering from the record + * instead of turning into a permanent snapshot. A present field keeps its + * own-key position, so order observers see what the snapshot would show. + * Absent optional fields, frozen records, and values the field type does + * not accept take the snapshot path, which reports the mismatch. */ +static bool scr_typed_ref_record_store(ScrDyn *d, const ScrDynTypedRecordOps *ops, size_t index, + const ScrDyn *value) { + void *record = d->v.typed_ref.ptr; + if (!ops->set || scr_rc_frozen(record)) return false; + if (!ops->fixed && !ops->has(record, index)) return false; + return ops->set(record, index, value); +} + +static bool scr_typed_ref_record_set(ScrDyn *d, const ScrStr *key, const ScrDyn *value) { + const ScrDynTypedRecordOps *ops = scr_typed_ref_record_ops(d); + size_t index; + if (!ops || !scr_typed_ref_record_field(ops, key, &index)) return false; + return scr_typed_ref_record_store(d, ops, index, value); +} + +/* Object.assign onto a live record from a plain object whose own + * properties are all data properties: each enumerable one that names a + * present declared field stores in place. Answers false at the first key + * it cannot store, leaving every key to the snapshot path, which stores + * the already stored values again unchanged. */ +static bool scr_typed_ref_record_assign(ScrDyn *d, const ScrDyn *src) { + const ScrDynTypedRecordOps *ops = scr_typed_ref_record_ops(d); + if (!ops || !ops->set || src->kind != SCR_DYN_OBJ || src->symbol_properties || src->symbol_keys) + return false; + size_t count = scr_dyn_obj_count(src); + for (size_t i = 0; i < count; i++) { + if (scr_dyn_obj_prop_at(src, i).accessor) return false; + } + for (size_t i = 0; i < count; i++) { + ScrDynProp prop = scr_dyn_obj_prop_at(src, i); + if (!prop.enumerable) continue; + size_t index; + if (!scr_typed_ref_record_field_bytes(ops, prop.key, prop.key_len, &index)) return false; + if (!scr_typed_ref_record_store(d, ops, index, prop.value)) return false; + if (scr_exc_pending()) return true; + } + return true; +} + static bool scr_typed_ref_array_set(ScrDyn *d, const ScrStr *key, const ScrDyn *value) { const ScrDynTypedArrayOps *ops = scr_dyn_typed_ref_array_ops(d); if (!ops || !ops->set) return false; @@ -11803,6 +11967,7 @@ void scr_dyn_key_set(ScrDyn *recv, ScrStr *key, ScrDyn *value) { if (recv->kind == SCR_DYN_PROXY) { scr_dyn_proxy_set(recv, key, value); return; } if (recv->kind == SCR_DYN_TYPED_REF) { if (scr_typed_ref_array_set(recv, key, value)) return; + if (scr_typed_ref_record_set(recv, key, value)) return; if (scr_event_ref_hooks && scr_event_ref_hooks->set(recv, key, value)) return; ScrDyn *materialized = scr_dyn_typed_ref_materialize(recv); scr_dyn_key_set(materialized, key, value); @@ -14642,6 +14807,13 @@ ScrStr *scr_util_format_j_text(ScrStr *text) { /* The gap of a compact walk; the walks read only its length. */ static const ScrStr scr_json_compact_gap = { .rc = SIZE_MAX, .len = 0 }; +/* JSON for a prefix-viewed record: its own capsule's. */ +static void scr_jb_put_record_prefix(ScrJsonBuf *b, void *rec) { + ScrDyn *capsule = scr_dyn_new_typed_ref(rec, NULL, NULL, "record:", 7, NULL, NULL); + scr_json_replaced_write(b, capsule, scr_dyn_undefined(), NULL, &scr_json_compact_gap, b->seen_len); + scr_dyn_release(capsule); +} + #define SCR_JSON_PURE_DEPTH 32 /* Writes `value` when writing it runs no program code and meets no cycle: @@ -16601,6 +16773,8 @@ ScrDyn *scr_dyn_assign(ScrDyn *target, const ScrDyn *src) { return NULL; } + if (target->kind == SCR_DYN_TYPED_REF && scr_typed_ref_record_assign(target, src)) + return scr_exc_pending() ? NULL : scr_dyn_retain(target); if (target->kind == SCR_DYN_TYPED_REF) { ScrDyn *materialized = scr_dyn_typed_ref_materialize(target); ScrDyn *assigned = scr_dyn_assign(materialized, src); diff --git a/tests/corpus/record-dynamic-writes.ts b/tests/corpus/record-dynamic-writes.ts new file mode 100644 index 000000000..58a47116b --- /dev/null +++ b/tests/corpus/record-dynamic-writes.ts @@ -0,0 +1,62 @@ +// Writes through an untyped view of a native record store into the record +// itself: typed reads see them, the view keeps answering from the record +// (no snapshot), and typed writes show through the view again. +type Point = { x: number; y: number; label: string; tag?: string }; +const p: Point = { x: 1, y: 2, label: "a" }; +const d = p as unknown as Record; +d.x = 10; +d.label = "b"; +console.log(p.x, p.label, JSON.stringify(d), Object.keys(d).join(",")); +p.y = 7; +console.log(d.y, JSON.stringify(p), "y" in d); +d.tag = "t"; +console.log(p.tag, JSON.stringify(d), Object.keys(p).join(",")); +d.tag = "u"; +console.log(p.tag, d.tag); +d.label = "c"; +console.log(p.label, JSON.stringify(Object.entries(d))); + +// Nested values written through the view are the record's own. +type Nested = { inner: { v: number }; list: number[]; flag: boolean }; +const n: Nested = { inner: { v: 1 }, list: [1], flag: false }; +const dn = n as unknown as { inner: unknown; list: unknown; flag: unknown }; +const fresh = { v: 2 }; +dn.inner = fresh; +fresh.v = 3; +console.log(n.inner.v, JSON.stringify(dn)); +dn.list = [4, 5]; +n.list.push(6); +console.log(n.list.length, n.list[1], JSON.stringify(dn.list)); +dn.flag = true; +console.log(n.flag, dn.flag); + +// A counter updated through the view in a loop. +const acc: { total: number; count: number } = { total: 0, count: 0 }; +const da = acc as unknown as { total: number; count: number }; +for (let i = 0; i < 100000; i++) { + da.total = da.total + i; + da.count += 1; +} +console.log(acc.total, acc.count); + +// Object.assign onto the view. +type Cfg = { host: string; port: number; debug: boolean; tags?: string[] }; +const c: Cfg = { host: "a", port: 1, debug: false, tags: ["x"] }; +const dc = c as unknown as object; +Object.assign(dc, { port: 2, debug: true }); +console.log(c.port, c.debug, JSON.stringify(dc)); +Object.assign(dc, { host: "z", extra: 1 }); +console.log(c.host, JSON.stringify(dc), Object.keys(dc).length); +c.port = 3; +console.log(JSON.stringify(dc)); + +// Writes through a function that takes the record as unknown. +function bump(value: unknown, key: string): void { + const object = value as Record; + object[key] = object[key]! + 1; +} +const counts = { a: 1, b: 2 }; +bump(counts, "a"); +bump(counts, "b"); +bump(counts, "b"); +console.log(counts.a, counts.b, JSON.stringify(counts)); diff --git a/tests/corpus/record-prefix-identity.ts b/tests/corpus/record-prefix-identity.ts new file mode 100644 index 000000000..b1747da10 --- /dev/null +++ b/tests/corpus/record-prefix-identity.ts @@ -0,0 +1,52 @@ +// A record value converted from an untyped value into a narrower record +// type whose fields begin the wider record's storage is the same object: +// a write through either name shows through the other, untyped views of +// the narrower name see every property, and identity holds. +type Wide = { a: number; b: string; c: boolean; d: number }; +type Narrow = { a: number; b: string }; +type Head = { a: number }; +function make(): unknown { + return { a: 1, b: "x", c: true, d: 4 } satisfies Wide; +} +const src = make(); +const w = src as Wide; +const n = src as Narrow; +n.a = 10; +console.log(w.a, (src as Head).a); +w.b = "y"; +console.log(n.b); +console.log(JSON.stringify(src), JSON.stringify(n)); +const n2 = src as Narrow; +console.log(n2 === n, n2.a); +(src as Record).a = 30; +console.log(w.a, n.a, (src as Head).a); +console.log(Object.keys(n).join(","), JSON.stringify({ n }), (n as unknown) === src); +console.log(n); + +// A native record boxed and narrowed in a function. +function narrow(value: unknown): Narrow { + return value as Narrow; +} +const wide: Wide = { a: 1, b: "p", c: false, d: 2 }; +const seen = narrow(wide); +seen.b = "q"; +wide.a = 5; +console.log(wide.b, seen.a, JSON.stringify(seen)); + +// Narrowing to a leading field of a record whose other fields are scalars. +type Sample = { a: number; b: number; c: boolean }; +const items: Sample[] = [ + { a: 1, b: 10, c: true }, + { a: 2, b: 20, c: false }, +]; +function asHead(value: unknown): Head { + return value as Head; +} +const heads = items.map((item) => asHead(item)); +for (const head of heads) head.a *= 10; +items[0]!.a += 1; +console.log(JSON.stringify(items), JSON.stringify(heads), heads[0]!.a); +const last = items[items.length - 1]!; +const second = asHead(last); +second.a = 7; +console.log(last.a, (second as unknown) === (last as unknown), Object.keys(second).join(",")); diff --git a/tests/harness/corpus-costs/record-dynamic-writes.ts.json b/tests/harness/corpus-costs/record-dynamic-writes.ts.json new file mode 100644 index 000000000..8c0e66c3c --- /dev/null +++ b/tests/harness/corpus-costs/record-dynamic-writes.ts.json @@ -0,0 +1 @@ +{ "plain": 3000, "san": 3600 } diff --git a/tests/harness/corpus-costs/record-prefix-identity.ts.json b/tests/harness/corpus-costs/record-prefix-identity.ts.json new file mode 100644 index 000000000..8c0e66c3c --- /dev/null +++ b/tests/harness/corpus-costs/record-prefix-identity.ts.json @@ -0,0 +1 @@ +{ "plain": 3000, "san": 3600 } From a82a0dda933531ae6b9d1eb14ace9e819e3f26a3 Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 17:05:37 -0500 Subject: [PATCH 25/52] Revert "Build node:zlib on the zlib Node bundles" This reverts #2355. The sanitized three.js nodes CI job has failed on every main commit since it landed. --- .../src/backend/native-toolchain.test.ts | 6 +- .../backend/native/compiler-fingerprint.ts | 10 +- .../compiler/src/backend/native/contracts.ts | 11 +- .../compiler/src/backend/native/executable.ts | 28 +- .../compiler/src/backend/native/library.ts | 5 +- .../compiler/src/backend/vendor-archives.ts | 38 +- .../src/backend/vendor-inputs.test.ts | 80 - .../compiler/src/backend/vendor-inputs.ts | 82 +- packages/compiler/src/native/sanitizer.ts | 7 +- .../corpus/8405-zlib-compressed-bytes.ts.json | 6 - .../corpus/8406-zlib-inflate-chunks.cjs.json | 6 - .../runtime-darwin-arm64/scripts/build.mjs | 21 +- .../runtime-pack-common/scripts/build.mjs | 21 +- .../scripts/zlib-inputs.mjs | 83 - packages/runtime/src/scr_zlib.c | 11 +- packages/runtime/vendor/README.md | 10 +- packages/runtime/vendor/zlib/LICENSE | 2 +- packages/runtime/vendor/zlib/LICENSE.chromium | 27 - packages/runtime/vendor/zlib/README.chromium | 38 - packages/runtime/vendor/zlib/adler32.c | 33 - packages/runtime/vendor/zlib/adler32_simd.c | 459 ----- packages/runtime/vendor/zlib/adler32_simd.h | 16 - packages/runtime/vendor/zlib/chromeconf.h | 211 --- packages/runtime/vendor/zlib/compare256.h | 56 - packages/runtime/vendor/zlib/compress.c | 55 +- .../zlib/contrib/optimizations/chunkcopy.h | 564 ------ .../contrib/optimizations/inffast_chunk.c | 376 ---- .../contrib/optimizations/inffast_chunk.h | 42 - .../zlib/contrib/optimizations/inflate.c | 1562 ----------------- .../contrib/optimizations/insert_string.h | 80 - packages/runtime/vendor/zlib/cpu_features.c | 218 --- packages/runtime/vendor/zlib/cpu_features.h | 22 - packages/runtime/vendor/zlib/crc32.c | 325 ++-- packages/runtime/vendor/zlib/crc32_simd.c | 628 ------- packages/runtime/vendor/zlib/crc32_simd.h | 57 - packages/runtime/vendor/zlib/crc_folding.c | 513 ------ packages/runtime/vendor/zlib/deflate.c | 480 ++--- packages/runtime/vendor/zlib/deflate.h | 48 +- packages/runtime/vendor/zlib/gzguts.h | 69 +- packages/runtime/vendor/zlib/gzlib.c | 106 +- packages/runtime/vendor/zlib/gzread.c | 302 ++-- packages/runtime/vendor/zlib/gzwrite.c | 267 ++- packages/runtime/vendor/zlib/infback.c | 98 +- packages/runtime/vendor/zlib/inffast.c | 36 +- packages/runtime/vendor/zlib/inffast.h | 15 - packages/runtime/vendor/zlib/inffixed.h | 182 +- packages/runtime/vendor/zlib/inflate.c | 199 ++- packages/runtime/vendor/zlib/inflate.h | 2 +- packages/runtime/vendor/zlib/inftrees.c | 143 +- packages/runtime/vendor/zlib/inftrees.h | 14 +- .../runtime/vendor/zlib/slide_hash_simd.h | 116 -- packages/runtime/vendor/zlib/trees.c | 82 +- packages/runtime/vendor/zlib/uncompr.c | 62 +- packages/runtime/vendor/zlib/zconf.h | 61 +- packages/runtime/vendor/zlib/zlib.h | 344 ++-- packages/runtime/vendor/zlib/zutil.c | 85 +- packages/runtime/vendor/zlib/zutil.h | 120 +- tests/corpus/8405-zlib-compressed-bytes.ts | 96 - tests/corpus/8406-zlib-inflate-chunks.cjs | 69 - .../8405-zlib-compressed-bytes.ts.json | 1 - .../8406-zlib-inflate-chunks.cjs.json | 1 - tests/harness/wasi-differential.test.ts | 2 - 62 files changed, 1210 insertions(+), 7499 deletions(-) delete mode 100644 packages/compiler/src/backend/vendor-inputs.test.ts delete mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8405-zlib-compressed-bytes.ts.json delete mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8406-zlib-inflate-chunks.cjs.json delete mode 100644 packages/runtime-pack-common/scripts/zlib-inputs.mjs delete mode 100644 packages/runtime/vendor/zlib/LICENSE.chromium delete mode 100644 packages/runtime/vendor/zlib/README.chromium delete mode 100644 packages/runtime/vendor/zlib/adler32_simd.c delete mode 100644 packages/runtime/vendor/zlib/adler32_simd.h delete mode 100644 packages/runtime/vendor/zlib/chromeconf.h delete mode 100644 packages/runtime/vendor/zlib/compare256.h delete mode 100644 packages/runtime/vendor/zlib/contrib/optimizations/chunkcopy.h delete mode 100644 packages/runtime/vendor/zlib/contrib/optimizations/inffast_chunk.c delete mode 100644 packages/runtime/vendor/zlib/contrib/optimizations/inffast_chunk.h delete mode 100644 packages/runtime/vendor/zlib/contrib/optimizations/inflate.c delete mode 100644 packages/runtime/vendor/zlib/contrib/optimizations/insert_string.h delete mode 100644 packages/runtime/vendor/zlib/cpu_features.c delete mode 100644 packages/runtime/vendor/zlib/cpu_features.h delete mode 100644 packages/runtime/vendor/zlib/crc32_simd.c delete mode 100644 packages/runtime/vendor/zlib/crc32_simd.h delete mode 100644 packages/runtime/vendor/zlib/crc_folding.c delete mode 100644 packages/runtime/vendor/zlib/slide_hash_simd.h delete mode 100644 tests/corpus/8405-zlib-compressed-bytes.ts delete mode 100644 tests/corpus/8406-zlib-inflate-chunks.cjs delete mode 100644 tests/harness/corpus-costs/8405-zlib-compressed-bytes.ts.json delete mode 100644 tests/harness/corpus-costs/8406-zlib-inflate-chunks.cjs.json diff --git a/packages/compiler/src/backend/native-toolchain.test.ts b/packages/compiler/src/backend/native-toolchain.test.ts index 1651da083..0ac21e853 100644 --- a/packages/compiler/src/backend/native-toolchain.test.ts +++ b/packages/compiler/src/backend/native-toolchain.test.ts @@ -326,9 +326,9 @@ test.skipIf( let vendorEntries = await readdir(vendorRoot); expect(vendorEntries.filter((name) => name.startsWith("mbedtls-")).length).toBe(2); - // Host clang and Zig each materialize their own vendored zlib object - // family in the shared vendor root. - expect(vendorEntries.filter((name) => name.startsWith("zlib-")).length).toBe(2); + // Host clang uses system zlib, so only the Zig build materializes a zlib + // object family in the shared vendor root. + expect(vendorEntries.filter((name) => name.startsWith("zlib-")).length).toBe(1); // Invalidate the host archive. A targetless Zig rebuild must continue to // use the separately keyed Zig archive instead of repairing or consuming // the host-clang entry. diff --git a/packages/compiler/src/backend/native/compiler-fingerprint.ts b/packages/compiler/src/backend/native/compiler-fingerprint.ts index 00d84c09b..6f92707f6 100644 --- a/packages/compiler/src/backend/native/compiler-fingerprint.ts +++ b/packages/compiler/src/backend/native/compiler-fingerprint.ts @@ -1,7 +1,7 @@ import { createHash } from "node:crypto"; import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; import { tmpdir } from "node:os"; -import { basename, dirname, join, resolve } from "node:path"; +import { dirname, join, resolve } from "node:path"; import { type CcDriver } from "./driver.js"; import { resolvedToolIdentity, resolvedTool } from "./tool-identity.js"; import { execFileAsync } from "./process.js"; @@ -168,7 +168,7 @@ export function effectiveCompilerInvocationFingerprint( export async function implicitDependencyProbeIncludes(rtDir: string): Promise { const vendor = join(rtDir, "..", "vendor"); const quickjsSources = new Set(LRE_SOURCES); - const zlibSources = new Set(ZLIB_SOURCES.map((source) => basename(source))); + const zlibSources = new Set(ZLIB_SOURCES); const fileGroups = await Promise.all([ nativeSourceFiles(rtDir, false), nativeSourceFiles(join(vendor, "ryu"), false), @@ -181,7 +181,7 @@ export async function implicitDependencyProbeIncludes(rtDir: string): Promise name.endsWith(".h") || zlibSources.has(name), ), ]); @@ -199,10 +199,8 @@ export async function implicitDependencyProbeIncludes(rtDir: string): Promise, * , ...), , and . */ -/** clang's x86 intrinsic headers: every <...intrin.h> but the Windows - * (, , ...), and . */ function x86OnlyHeader(include: string): boolean { - return include === "" || /^<[a-z0-9_]+intrin\.h>$/.test(include); + return include === "" || /^<(x86|x86gpr|[a-z]*mm)intrin\.h>$/.test(include); } /** One guarded line of the implicit-toolchain probe source: the header is diff --git a/packages/compiler/src/backend/native/contracts.ts b/packages/compiler/src/backend/native/contracts.ts index 03d9ead2a..49fd792ba 100644 --- a/packages/compiler/src/backend/native/contracts.ts +++ b/packages/compiler/src/backend/native/contracts.ts @@ -76,9 +76,14 @@ export interface CcOptions { fetch?: boolean; /** The program uses zlib (index.ts detects zlib.* libCalls on the IR): * compiles scr_zlib.c — the regex gating precedent, so zlib-free - * binaries keep their exact link line. Every driver compiles the vendored - * zlib, the copy Node bundles (ensureZlibObjects), so compressed bytes match - * Node's. */ + * binaries keep their exact link line. The default host-clang build links + * the SYSTEM libz (macOS ships it), byte-identical to the historical line; + * every Zig build compiles the vendored zlib with the selected driver instead + * (ensureZlibObjects — zig has no libz in its sysroots). Compressed bytes may + * differ between the + * system and vendored libraries, which is why the corpus only ever + * compares round-trips and fixed-blob inflation, never raw deflate + * output. */ zlib?: boolean; /** The program uses node:zlib's Brotli forms (with zlib): compiles * scr_brotli.c and links the vendored brotli archive. */ diff --git a/packages/compiler/src/backend/native/executable.ts b/packages/compiler/src/backend/native/executable.ts index 1b29c6b47..d940ae604 100644 --- a/packages/compiler/src/backend/native/executable.ts +++ b/packages/compiler/src/backend/native/executable.ts @@ -217,13 +217,18 @@ const RUNTIME_UNITS: readonly RuntimeUnit[] = [ // Blob and File (every blob.* call selects dynAsync, whose unit boxes // their reads as dyn promises). unit((u) => u.opts.dynAsync, "scr_blob.c"), - // The zlib UNIT (scr_zlib.c) gates on zlib.* IR use; the vendored zlib - // objects also serve the native fetch's gzip decoder — spread exactly once. + // The zlib UNIT (scr_zlib.c) gates on zlib.* IR use; the LINK (system + // libz on the default host-clang build, vendored objects on Zig builds) + // also serves the native fetch's gzip decoder — spread exactly once. unitArgs((u) => u.opts.zlib - ? ["-I", vendorZlibDir(), u.rt(join(u.rtDir, "scr_zlib.c")), ...u.zlibObjects] + ? isZigDriver(u.driver) + ? ["-I", vendorZlibDir(), u.rt(join(u.rtDir, "scr_zlib.c")), ...u.zlibObjects] + : [u.rt(join(u.rtDir, "scr_zlib.c"))] : u.nativeFetch - ? ["-I", vendorZlibDir(), ...u.zlibObjects] + ? isZigDriver(u.driver) + ? ["-I", vendorZlibDir(), ...u.zlibObjects] + : [] : [], ), // Brotli (scr_brotli.c) plugs into the zlib engine and links the @@ -669,11 +674,11 @@ export async function compileCInternal( let lreObjects = regex ? lreObjectPaths(sanitize, driver, vendorBuildIdentity, vendorCacheRoot) : []; - // Every driver links the vendored zlib (the copy Node bundles), so - // compressed bytes match Node's. The native fetch's gzip decoder rides the - // same objects. + // Vendored zlib is the Zig story — default host-clang builds keep the exact + // historical `-lz` system link (see CcOptions.zlib). The native fetch's + // gzip decoder rides the same objects/link. let zlibObjects = - (opts.zlib ?? false) || nativeFetch + ((opts.zlib ?? false) || nativeFetch) && isZigDriver(driver) ? zlibObjectPaths(sanitize, driver, vendorBuildIdentity, vendorCacheRoot) : []; const materializeVendorPrerequisites = async ( @@ -822,6 +827,11 @@ export async function compileCInternal( ...(opts.linkInputs ?? []), ...(opts.systemLibraries ?? []).map((name) => `-l${name}`), ...(opts.frameworks ?? []).flatMap((name) => ["-framework", name]), + // GNU ld resolves libraries from left to right and commonly enables + // --as-needed: host-clang libz must follow scr_zlib.c/scr_fetch.c and every + // generated/native input that references inflate symbols. Cross + // and targetless Zig builds use vendored zlib objects in the input section above. + ...(((opts.zlib ?? false) || nativeFetch) && !isZigDriver(driver) ? ["-lz"] : []), ...unwinderLinkArgs(driver), // glibc keeps libm separate from libc. This must trail the generated // program and every native FFI input because GNU ld resolves archives @@ -1075,6 +1085,7 @@ export async function compileCInternal( ...(targetPlatform(driver) === "win32" ? ["-ladvapi32", "-liphlpapi", "-lws2_32"] : []), ...(mbedtls && targetPlatform(driver) === "win32" ? ["-lbcrypt"] : []), ...(tlsCa && targetPlatform(driver) === "win32" ? ["-lcrypt32"] : []), + ...(((opts.zlib ?? false) || nativeFetch) && !isZigDriver(driver) ? ["-lz"] : []), ...unwinderLinkArgs(driver), ...driver.linkArgs, ...executableLinkFlags, @@ -1087,6 +1098,7 @@ export async function compileCInternal( ...(targetPlatform(driver) === "win32" ? ["-ladvapi32", "-liphlpapi", "-lws2_32"] : []), ...(mbedtls && targetPlatform(driver) === "win32" ? ["-lbcrypt"] : []), ...(tlsCa && targetPlatform(driver) === "win32" ? ["-lcrypt32"] : []), + ...(((opts.zlib ?? false) || nativeFetch) && !isZigDriver(driver) ? ["-lz"] : []), ...unwinderLinkArgs(driver), ...driver.linkArgs, ...executableLinkFlags, diff --git a/packages/compiler/src/backend/native/library.ts b/packages/compiler/src/backend/native/library.ts index 3cf4afa53..06b4ce1df 100644 --- a/packages/compiler/src/backend/native/library.ts +++ b/packages/compiler/src/backend/native/library.ts @@ -78,8 +78,9 @@ import { CacheInputsChangedError } from "./session.js"; * External-symbol contract: undefined references only to the target's C/math * runtime and system APIs. Windows embedders additionally link advapi32, * iphlpapi, and ws2_32; the platform driver supplies its ordinary CRT and - * kernel imports. Zlib rides the vendored per-flavor objects, as in the - * executable lane. */ + * kernel imports. Zlib rides the VENDORED per-flavor objects here even on + * hosts because the executable lane's system `-lz` cannot ride inside an + * archive. */ export async function compileLibArchive(opts: LibArchiveOptions): Promise { clearCcCaches(); diff --git a/packages/compiler/src/backend/vendor-archives.ts b/packages/compiler/src/backend/vendor-archives.ts index 363d14b08..ef63aa4e4 100644 --- a/packages/compiler/src/backend/vendor-archives.ts +++ b/packages/compiler/src/backend/vendor-archives.ts @@ -18,12 +18,6 @@ const execFileAsync = promisify(execFile); * runtime pack's executable_section_elimination flags). */ const LRE_SECTION_FLAGS = ["-ffunction-sections", "-fdata-sections"]; -/** A vendored source's object file name: sources in subdirectories - * (zlib's contrib/optimizations/inflate.c) flatten to one directory. */ -function vendorObjectName(source: string): string { - return source.replaceAll("/", "-").replace(/\.c$/, ".o"); -} - import { QJS_COMMIT, MBEDTLS_VERSION, @@ -31,7 +25,6 @@ import { BROTLI_VERSION, LRE_SOURCES, ZLIB_SOURCES, - zlibInputs, } from "./vendor-inputs.js"; export { QJS_COMMIT, @@ -250,18 +243,11 @@ export function createVendorArchives(context: VendorArchiveContext) { return join(runtimeSrcDir(), "..", "vendor", "zlib"); } - /** The vendored zlib TUs every C-lane build links (zlibInputs picks them - * per target; the gzFile file-I/O units are never compiled, nothing in - * scr_zlib.c references the gzFile API). */ - - /** The triple zlibInputs reads for a driver: its explicit target, else - * the host. */ - function zlibTriple(driver: Pick): string { - if (driver.target !== null) return driver.target; - const cpu = - process.arch === "x64" ? "x86_64" : process.arch === "arm64" ? "aarch64" : process.arch; - return `${cpu}-${process.platform === "win32" ? "windows" : process.platform}`; - } + /** The vendored zlib TUs behind Zig zlib support: every root *.c + * except the gzFile file-I/O units (gz*.c — nothing in scr_zlib.c + * references the gzFile API, and those TUs alone want unistd/io headers). + * The default host-clang build links the system libz; Zig builds use this + * list so targetless and explicit-target Zig inputs stay on one toolchain. */ function zlibObjectPaths( sanitize: boolean, @@ -274,15 +260,15 @@ export function createVendorArchives(context: VendorArchiveContext) { (driver.argv.length === 1 && driver.argv[0] === "clang" ? "" : "-zigcc") + `-${vendorCacheTargetFlavor(driver)}-${buildIdentity}`; const cacheDir = join(cacheRoot, `zlib-${ZLIB_VERSION}-${flavor}`); - return zlibInputs(zlibTriple(driver)).sources.map((f) => join(cacheDir, vendorObjectName(f))); + return ZLIB_SOURCES.map((f) => join(cacheDir, f.replace(/\.c$/, ".o"))); } /** The zlib objects for one flavor, compiled lazily on the first zlib-using - * C-lane build (~1s) and cached like the lre objects — + * Zig build (~1s) and cached like the lre objects — * /vendor/zlib----/*.o — with the same atomic-rename * publish (parallel first builds race safely; losers discard their work). - * Plain is -O3, as Node builds zlib; asan matches the final link so the - * sanitized lane instruments the codec too. The flavor keys the driver and target exactly + * Plain is -Os, asan matches the final link so the sanitized lane + * instruments the codec too. The flavor keys the driver and target exactly * like the lre flavor: the keying * must never hand a zig-built object set to a clang link off a shared * directory. */ @@ -296,7 +282,6 @@ export function createVendorArchives(context: VendorArchiveContext) { (sanitize ? "asan" : "plain") + (driver.argv.length === 1 && driver.argv[0] === "clang" ? "" : "-zigcc") + `-${vendorCacheTargetFlavor(driver)}-${buildIdentity}`; - const inputs = zlibInputs(zlibTriple(driver)); return ensureVendorObjects({ sanitize, driver, @@ -304,9 +289,8 @@ export function createVendorArchives(context: VendorArchiveContext) { flavor, name: "zlib", vendor: vendorZlibDir(), - sources: inputs.sources, + sources: ZLIB_SOURCES, objects: zlibObjectPaths(sanitize, driver, buildIdentity, cacheRoot), - flags: [...(sanitize ? [] : ["-O3"]), ...inputs.defines.map((define) => `-D${define}`)], }); } @@ -343,7 +327,7 @@ export function createVendorArchives(context: VendorArchiveContext) { "-c", join(vendor, f), "-o", - join(buildDir, vendorObjectName(f)), + join(buildDir, f.replace(/\.c$/, ".o")), ], { cwd: buildDir }, ); diff --git a/packages/compiler/src/backend/vendor-inputs.test.ts b/packages/compiler/src/backend/vendor-inputs.test.ts deleted file mode 100644 index 53e9b8c22..000000000 --- a/packages/compiler/src/backend/vendor-inputs.test.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { existsSync } from "node:fs"; -import { join } from "node:path"; -import { fileURLToPath, pathToFileURL } from "node:url"; -import { expect, test } from "vitest"; -import { ZLIB_SOURCES, zlibInputs } from "./vendor-inputs.js"; - -const repoRoot = fileURLToPath(new URL("../../../..", import.meta.url)); -const zlibDir = join(repoRoot, "packages/runtime/vendor/zlib"); - -const TRIPLES = [ - // The runtime packs' targets. - "x86_64-unknown-linux-gnu", - "x86_64-unknown-linux-musl", - "aarch64-unknown-linux-gnu", - "aarch64-unknown-linux-musl", - "aarch64-unknown-linux-android26", - "arm64-apple-macosx14.0.0", - "x86_64-apple-macosx14.0.0", - "arm64-apple-ios15.0", - "arm64-apple-ios15.0-simulator", - "x86_64-pc-windows-msvc", - "wasm32-unknown-wasi", - // Zig cross targets and host spellings. - "x86_64-linux-gnu", - "aarch64-linux-musl", - "aarch64-macos", - "x86_64-windows-gnu", - "aarch64-windows-gnu", - "wasm32-wasi", - "x86_64-linux", - "aarch64-darwin", -]; - -test("the compiler's zlib inputs match the runtime packs' for every target", async () => { - const packInputs = (await import( - pathToFileURL(join(repoRoot, "packages/runtime-pack-common/scripts/zlib-inputs.mjs")).href - )) as { zlibInputs(triple: string): { sources: string[]; defines: string[] } }; - for (const triple of TRIPLES) { - expect(zlibInputs(triple), triple).toEqual(packInputs.zlibInputs(triple)); - } -}); - -test("every zlib input exists, and ZLIB_SOURCES lists every source a target compiles", () => { - const listed = new Set(ZLIB_SOURCES); - for (const triple of TRIPLES) { - for (const source of zlibInputs(triple).sources) { - expect(listed.has(source), `${triple}: ${source}`).toBe(true); - expect(existsSync(join(zlibDir, source)), source).toBe(true); - } - } -}); - -test("zlib inputs follow Node's deps/zlib/zlib.gyp", () => { - const x64 = zlibInputs("x86_64-unknown-linux-gnu"); - expect(x64.sources).toContain("adler32_simd.c"); - expect(x64.sources).toContain("contrib/optimizations/inflate.c"); - expect(x64.sources).not.toContain("inflate.c"); - expect(x64.defines).toEqual([ - "HAVE_HIDDEN", - "ADLER32_SIMD_SSSE3", - "X86_NOT_WINDOWS", - "INFLATE_CHUNK_SIMD_SSE2", - "INFLATE_CHUNK_READ_64LE", - "DEFLATE_SLIDE_HASH_SSE2", - ]); - expect(zlibInputs("x86_64-pc-windows-msvc").defines).toContain("X86_WINDOWS"); - const mac = zlibInputs("arm64-apple-macosx14.0.0"); - expect(mac.sources).toContain("crc32_simd.c"); - expect(mac.defines).toContain("ARMV8_OS_MACOS"); - expect(mac.defines).toContain("CRC32_ARMV8_CRC32"); - const ios = zlibInputs("arm64-apple-ios15.0"); - expect(ios.sources).not.toContain("crc32_simd.c"); - expect(ios.defines).not.toContain("CRC32_ARMV8_CRC32"); - expect(ios.defines).toContain("INFLATE_CHUNK_SIMD_NEON"); - expect(zlibInputs("aarch64-unknown-linux-android26").defines).toContain("ARMV8_OS_LINUX"); - const wasm = zlibInputs("wasm32-unknown-wasi"); - expect(wasm.sources).toContain("inflate.c"); - expect(wasm.sources).not.toContain("contrib/optimizations/inflate.c"); - expect(wasm.defines).toEqual(["HAVE_HIDDEN", "CPU_NO_SIMD"]); -}); diff --git a/packages/compiler/src/backend/vendor-inputs.ts b/packages/compiler/src/backend/vendor-inputs.ts index 270815b00..a9d13e2f0 100644 --- a/packages/compiler/src/backend/vendor-inputs.ts +++ b/packages/compiler/src/backend/vendor-inputs.ts @@ -1,98 +1,22 @@ /** The pinned QuickJS, mbedTLS, zlib, and brotli inputs used by native recipes. */ export const QJS_COMMIT = "3c8f3d68953955950074c41c6e4d999562ae82a7"; export const MBEDTLS_VERSION = "3.6.7"; -/** The zlib Node v24.22.0 bundles (`process.versions.zlib` there), the - * Chromium fork in Node's deps/zlib (packages/runtime/vendor/zlib). */ -export const ZLIB_VERSION = "1.3.2.1-motley-285e94b"; +export const ZLIB_VERSION = "1.3.1"; /** The brotli release Node v24.22.0 bundles (packages/runtime/vendor/brotli). */ export const BROTLI_VERSION = "1.2.0"; /** Exact translation-unit membership shared by cache builds and external * source-pack recipes. */ export const LRE_SOURCES = ["libregexp.c", "libunicode.c"] as const; -const ZLIB_COMMON_SOURCES = [ +export const ZLIB_SOURCES = [ "adler32.c", "compress.c", - "cpu_features.c", "crc32.c", "deflate.c", "infback.c", "inffast.c", + "inflate.c", "inftrees.c", "trees.c", "uncompr.c", "zutil.c", ] as const; - -/** Every zlib translation unit some target compiles (zlibInputs). */ -export const ZLIB_SOURCES = [ - ...ZLIB_COMMON_SOURCES, - "adler32_simd.c", - "crc32_simd.c", - "inflate.c", - "contrib/optimizations/inffast_chunk.c", - "contrib/optimizations/inflate.c", -] as const; - -/** The zlib translation units and defines for a target, chosen the way - * Node's deps/zlib/zlib.gyp chooses them. The SIMD units carry their own - * target attributes and check the CPU at run time, so every unit builds with - * the same flags, and compressed output does not depend on the choice. - * packages/runtime-pack-common/scripts/zlib-inputs.mjs keeps the same table - * for the runtime packs. `triple` is an LLVM or Zig target triple. */ -export function zlibInputs(triple: string): { sources: string[]; defines: string[] } { - const [cpu = "", ...rest] = triple.split("-"); - const system = rest.join("-"); - const architecture = - cpu === "x86_64" || cpu === "amd64" - ? "x64" - : cpu === "aarch64" || cpu === "arm64" - ? "arm64" - : cpu; - const ios = system.includes("ios"); - const windows = - system.includes("windows") || system.includes("win32") || system.includes("mingw"); - // Android reads the CPU features through getauxval, as Linux does: Node's - // ARMV8_OS_ANDROID path needs the NDK's cpu-features library. - const linux = system.includes("linux") || system.includes("android"); - const mac = !ios && (system.includes("darwin") || system.includes("macos")); - const sources: string[] = [...ZLIB_COMMON_SOURCES]; - const defines = windows ? [] : ["HAVE_HIDDEN"]; - if (architecture === "x64" && !ios) { - sources.push( - "adler32_simd.c", - "contrib/optimizations/inffast_chunk.c", - "contrib/optimizations/inflate.c", - ); - defines.push( - "ADLER32_SIMD_SSSE3", - windows ? "X86_WINDOWS" : "X86_NOT_WINDOWS", - "INFLATE_CHUNK_SIMD_SSE2", - "INFLATE_CHUNK_READ_64LE", - "DEFLATE_SLIDE_HASH_SSE2", - ); - } else if (architecture === "arm64") { - sources.push("contrib/optimizations/inffast_chunk.c", "contrib/optimizations/inflate.c"); - defines.push( - "INFLATE_CHUNK_SIMD_NEON", - "INFLATE_CHUNK_READ_64LE", - "__ARM_NEON__", - "DEFLATE_SLIDE_HASH_NEON", - ); - if (windows) { - defines.push("ARMV8_OS_WINDOWS"); - } else if (linux || mac) { - // Node builds the Adler-32 and CRC-32 units for every arm64 target but - // iOS and Windows. - sources.push("adler32_simd.c", "crc32_simd.c"); - defines.push( - "ADLER32_SIMD_NEON", - "CRC32_ARMV8_CRC32", - linux ? "ARMV8_OS_LINUX" : "ARMV8_OS_MACOS", - ); - } - } else { - sources.push("inflate.c"); - defines.push("CPU_NO_SIMD"); - } - return { sources, defines }; -} diff --git a/packages/compiler/src/native/sanitizer.ts b/packages/compiler/src/native/sanitizer.ts index 81667b28b..abc15d043 100644 --- a/packages/compiler/src/native/sanitizer.ts +++ b/packages/compiler/src/native/sanitizer.ts @@ -14,7 +14,7 @@ import { selectedRuntimeUnits, type RuntimePackMode, } from "../backend/runtime-pack-core.js"; -import { LRE_SOURCES, zlibInputs } from "../backend/vendor-inputs.js"; +import { LRE_SOURCES, ZLIB_SOURCES } from "../backend/vendor-inputs.js"; import { contentDigest, type NativeCache } from "./cache.js"; import type { NativeToolchain } from "./toolchain.js"; @@ -171,10 +171,9 @@ export function buildSanitizedRuntime( directory = quickjs; args = ["-std=c11", "-I", quickjs]; } else if (name === "zlib") { - const inputs = zlibInputs(toolchain.target.llvmTriple); - sources = inputs.sources; + sources = ZLIB_SOURCES; directory = zlib; - args = ["-std=c11", ...inputs.defines.map((define) => "-D" + define), "-I", zlib]; + args = ["-std=c11", "-I", zlib]; } else if (name === "mbedtls") { directory = join(mbedtls, "library"); sources = readdirSync(directory) diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8405-zlib-compressed-bytes.ts.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8405-zlib-compressed-bytes.ts.json deleted file mode 100644 index 509b30d34..000000000 --- a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8405-zlib-compressed-bytes.ts.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "order": [ - "/tests/corpus/8405-zlib-compressed-bytes.ts" - ], - "diags": [] -} diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8406-zlib-inflate-chunks.cjs.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8406-zlib-inflate-chunks.cjs.json deleted file mode 100644 index 772d91511..000000000 --- a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8406-zlib-inflate-chunks.cjs.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "order": [ - "/tests/corpus/8406-zlib-inflate-chunks.cjs" - ], - "diags": [] -} diff --git a/packages/runtime-darwin-arm64/scripts/build.mjs b/packages/runtime-darwin-arm64/scripts/build.mjs index 95fe91ab3..dc6c24a47 100644 --- a/packages/runtime-darwin-arm64/scripts/build.mjs +++ b/packages/runtime-darwin-arm64/scripts/build.mjs @@ -16,7 +16,6 @@ import { import { createDeterministicArchive } from "./archive.mjs"; import { installRuntimePack, withBuildLock } from "./build-state.mjs"; import { shareIdenticalArtifacts } from "../../runtime-pack-common/scripts/share-artifacts.mjs"; -import { zlibInputs } from "../../runtime-pack-common/scripts/zlib-inputs.mjs"; const run = promisify(execFile); const packageRoot = dirname(dirname(fileURLToPath(import.meta.url))); @@ -77,7 +76,19 @@ async function build() { const brotli = join(vendorRoot, "brotli", "c"); const QJS_SOURCES = ["dtoa.c", "libregexp.c", "libunicode.c", "quickjs.c"]; const LRE_SOURCES = ["libregexp.c", "libunicode.c"]; - const ZLIB_BUILD = zlibInputs(RUNTIME_PACK_MATRIX.target.llvm_triple); + const ZLIB_SOURCES = [ + "adler32.c", + "compress.c", + "crc32.c", + "deflate.c", + "infback.c", + "inffast.c", + "inflate.c", + "inftrees.c", + "trees.c", + "uncompr.c", + "zutil.c", + ]; // Speed-flavor executable units are emitted through the host LLVM helper // so their object and import bitcode come from one promoted module. The @@ -298,12 +309,11 @@ async function build() { "-I", quickjs, ]), - await archive("zlib", ZLIB_BUILD.sources, zlib, [ + await archive("zlib", ZLIB_SOURCES, zlib, [ "-target", RUNTIME_PACK_MATRIX.target.llvm_triple, "-std=c11", - "-O3", - ...ZLIB_BUILD.defines.map((define) => `-D${define}`), + "-Os", ...codeAlignment, "-I", zlib, @@ -346,7 +356,6 @@ async function build() { ], [join(vendorRoot, "unicode", "LICENSE"), "artifacts/licenses/unicode.txt", "Unicode-3.0"], [join(zlib, "LICENSE"), "artifacts/licenses/zlib.txt", "Zlib"], - [join(zlib, "LICENSE.chromium"), "artifacts/licenses/zlib-chromium.txt", "BSD-3-Clause"], [join(vendorRoot, "brotli", "LICENSE"), "artifacts/licenses/brotli.txt", "MIT"], [join(mbedtls, "LICENSE"), "artifacts/licenses/mbedtls.txt", "Apache-2.0"], ]; diff --git a/packages/runtime-pack-common/scripts/build.mjs b/packages/runtime-pack-common/scripts/build.mjs index aebf1b017..ad9441d67 100644 --- a/packages/runtime-pack-common/scripts/build.mjs +++ b/packages/runtime-pack-common/scripts/build.mjs @@ -17,7 +17,6 @@ import { buildImportBitcode, buildRuntimeUnit, resolveRuntimeUnitHelper } from " import { installRuntimePack, withBuildLock } from "./build-state.mjs"; import { shareIdenticalArtifacts } from "./share-artifacts.mjs"; import { parallelMap } from "./parallel-map.mjs"; -import { zlibInputs } from "./zlib-inputs.mjs"; const run = promisify(execFile); const packageRoot = process.env.SCRIPTC_RUNTIME_PACK_ROOT; @@ -90,7 +89,19 @@ async function build() { const brotli = join(vendorRoot, "brotli", "c"); const qjsSources = ["dtoa.c", "libregexp.c", "libunicode.c", "quickjs.c"]; const lreSources = ["libregexp.c", "libunicode.c"]; - const zlibBuild = zlibInputs(config.target.llvm_triple); + const zlibSources = [ + "adler32.c", + "compress.c", + "crc32.c", + "deflate.c", + "infback.c", + "inffast.c", + "inflate.c", + "inftrees.c", + "trees.c", + "uncompr.c", + "zutil.c", + ]; const sha256 = async (path) => createHash("sha256") .update(await readFile(path)) @@ -389,11 +400,10 @@ async function build() { : []), ...(requestedArchives.has("zlib") ? [ - await archive("zlib", zlibBuild.sources, zlib, [ + await archive("zlib", zlibSources, zlib, [ ...vendorTarget, "-std=c11", - "-O3", - ...zlibBuild.defines.map((define) => `-D${define}`), + "-Os", "-I", zlib, ]), @@ -444,7 +454,6 @@ async function build() { "BSD-3-Clause", ], [join(zlib, "LICENSE"), "artifacts/licenses/zlib.txt", "Zlib"], - [join(zlib, "LICENSE.chromium"), "artifacts/licenses/zlib-chromium.txt", "BSD-3-Clause"], [join(vendorRoot, "brotli", "LICENSE"), "artifacts/licenses/brotli.txt", "MIT"], [join(mbedtls, "LICENSE"), "artifacts/licenses/mbedtls.txt", "Apache-2.0"], ]; diff --git a/packages/runtime-pack-common/scripts/zlib-inputs.mjs b/packages/runtime-pack-common/scripts/zlib-inputs.mjs deleted file mode 100644 index efb433ff8..000000000 --- a/packages/runtime-pack-common/scripts/zlib-inputs.mjs +++ /dev/null @@ -1,83 +0,0 @@ -// The translation units and defines of the vendored zlib (packages/runtime/vendor/zlib, -// the copy Node v24.22.0 bundles in deps/zlib), chosen per target the way Node's -// deps/zlib/zlib.gyp chooses them. The SIMD units carry their own target attributes -// and check the CPU at run time, so every unit builds with the same flags. Compressed -// output does not depend on these choices. packages/compiler/src/backend/vendor-inputs.ts -// keeps the same table for cross builds; a unit test checks that the two agree. - -const COMMON_SOURCES = [ - "adler32.c", - "compress.c", - "cpu_features.c", - "crc32.c", - "deflate.c", - "infback.c", - "inffast.c", - "inftrees.c", - "trees.c", - "uncompr.c", - "zutil.c", -]; - -/** - * @param {string} triple an LLVM or Zig target triple, such as - * "x86_64-unknown-linux-gnu", "arm64-apple-ios15.0" or "aarch64-linux-musl". - * @returns {{ sources: string[], defines: string[] }} - */ -export function zlibInputs(triple) { - const [cpu = "", ...rest] = triple.split("-"); - const system = rest.join("-"); - const architecture = - cpu === "x86_64" || cpu === "amd64" - ? "x64" - : cpu === "aarch64" || cpu === "arm64" - ? "arm64" - : cpu; - const ios = system.includes("ios"); - const windows = - system.includes("windows") || system.includes("win32") || system.includes("mingw"); - // Android reads the CPU features through getauxval, as Linux does: Node's - // ARMV8_OS_ANDROID path needs the NDK's cpu-features library. - const linux = system.includes("linux") || system.includes("android"); - const mac = !ios && (system.includes("darwin") || system.includes("macos")); - const sources = [...COMMON_SOURCES]; - const defines = windows ? [] : ["HAVE_HIDDEN"]; - if (architecture === "x64" && !ios) { - sources.push( - "adler32_simd.c", - "contrib/optimizations/inffast_chunk.c", - "contrib/optimizations/inflate.c", - ); - defines.push( - "ADLER32_SIMD_SSSE3", - windows ? "X86_WINDOWS" : "X86_NOT_WINDOWS", - "INFLATE_CHUNK_SIMD_SSE2", - "INFLATE_CHUNK_READ_64LE", - "DEFLATE_SLIDE_HASH_SSE2", - ); - } else if (architecture === "arm64") { - sources.push("contrib/optimizations/inffast_chunk.c", "contrib/optimizations/inflate.c"); - defines.push( - "INFLATE_CHUNK_SIMD_NEON", - "INFLATE_CHUNK_READ_64LE", - "__ARM_NEON__", - "DEFLATE_SLIDE_HASH_NEON", - ); - if (windows) { - defines.push("ARMV8_OS_WINDOWS"); - } else if (linux || mac) { - // Node builds the Adler-32 and CRC-32 units for every arm64 target but - // iOS and Windows. - sources.push("adler32_simd.c", "crc32_simd.c"); - defines.push( - "ADLER32_SIMD_NEON", - "CRC32_ARMV8_CRC32", - linux ? "ARMV8_OS_LINUX" : "ARMV8_OS_MACOS", - ); - } - } else { - sources.push("inflate.c"); - defines.push("CPU_NO_SIMD"); - } - return { sources, defines }; -} diff --git a/packages/runtime/src/scr_zlib.c b/packages/runtime/src/scr_zlib.c index bc1254f29..8756c3d17 100644 --- a/packages/runtime/src/scr_zlib.c +++ b/packages/runtime/src/scr_zlib.c @@ -1,10 +1,13 @@ /* node:zlib, the lowered slice: the one-shot zlib/raw-DEFLATE/gzip codecs * over u8 bytes with Node's DEFAULT options. Compiled ONLY when the program * uses zlib (native-toolchain.ts gates it exactly like scr_regex.c/libregexp), - * so zlib-free binaries keep their historical link line. Every build links - * the vendored zlib (packages/runtime/vendor/zlib), the copy Node bundles, - * so compressed bytes match Node's for the same parameters. deflate of valid - * input cannot fail (OOM aborts); inflate of + * so zlib-free binaries keep their historical link line. Host builds link + * the system -lz; cross targets link the vendored zlib built per target + * (ensureZlibObjects in native-toolchain.ts). + * + * Compressed OUTPUT bytes are zlib-version-dependent — the differential + * corpus tests round-trips and fixed-blob inflation, never raw deflate + * output. deflate of valid input cannot fail (OOM aborts); inflate of * corrupt input THROWS Node's catchable Error (zlib's own msg text: * "incorrect header check", ...). */ #include "scr_runtime.h" diff --git a/packages/runtime/vendor/README.md b/packages/runtime/vendor/README.md index cfb0d196f..53238410e 100644 --- a/packages/runtime/vendor/README.md +++ b/packages/runtime/vendor/README.md @@ -38,15 +38,13 @@ The native runtime pack build produces `libscriptc-quickjs.a` for the compiler b ## zlib/ -- Project: https://chromium.googlesource.com/chromium/src/third_party/zlib (Chromium's zlib, a fork of https://github.com/madler/zlib) -- Version: 1.3.2.1-motley-285e94b, the copy Node v24.22.0 bundles in `deps/zlib` (`process.versions.zlib`) +- Project: https://github.com/madler/zlib +- Version: 1.3.1 (release tarball zlib-1.3.1.tar.gz, sha256 9a93b2b7dfdac77ceba5a558a580e74667dd6fede4585b91eefb60f03b72df23) - License: zlib (see zlib/LICENSE) -The codec behind node:zlib's gzip, deflate and inflate functions and streams (see packages/runtime/src/scr_zlib.c) and the native fetch's gzip decoder. The flat `*.c`/`*.h` files at the root of Node's `deps/zlib`, `contrib/optimizations/`, `LICENSE` and `README.chromium` are vendored; `contrib/minizip`, the other contrib directories, tests, patches, Chromium's build files and docs are not. No vendored file is modified, and the files match Node's copy. The gz* file-I/O units are vendored but never compiled (nothing references the gzFile API). +The CROSS-target arm of node:zlib (see packages/runtime/src/scr_zlib.c): host builds keep the historical system `-lz` link (macOS ships libz), but zig's cross sysroots have no libz, so SCRIPTC_TARGET builds compile this vendored copy per target instead. Only the flat `*.c`/`*.h` at the distribution root are vendored (LICENSE beside them) — contrib, tests, build machinery, and docs are not. No vendored file is modified; the gz* file-I/O TUs are vendored for faithfulness but never compiled (nothing references the gzFile API — see ZLIB_SOURCES in packages/compiler/src/backend/vendor-archives.ts). To update, re-fetch the release tarball, copy the same flat set, and bump `ZLIB_VERSION` in vendor-archives.ts. -Each target compiles the units and defines Node's `deps/zlib/zlib.gyp` selects for it: the SSSE3 Adler-32 and SSE2 inflate and slide-hash code on x86-64, the NEON code and the ARMv8 CRC-32 code on arm64 Linux, Android and macOS, the NEON inflate and slide-hash code on iOS and Windows arm64, and the portable code (`CPU_NO_SIMD`) elsewhere. The table is `zlibInputs` in packages/runtime-pack-common/scripts/zlib-inputs.mjs (runtime packs) and in packages/compiler/src/backend/vendor-inputs.ts (Zig cross builds and the sanitized runtime), and a unit test keeps the two identical. Android reads CPU features through `getauxval` as Linux does, where Node's Android build uses the NDK's cpu-features library. The SIMD units check the CPU at run time and give the same output as the portable code, so compressed bytes match Node's for the same parameters on every target. To update, copy the same files from the `deps/zlib` of the Node version scriptc follows and bump `ZLIB_VERSION` in vendor-inputs.ts. - -Runtime packs archive zlib at `-O3`, as Node builds it. Zig cross builds compile the objects lazily on the first zlib-using cross compile into the per-user build cache's `vendor/zlib----/` directory, one flavor per driver/target and compiler environment/identity (the lre-objects pattern). Zlib-free binaries compile and link none of it. +The objects build lazily on the first zlib-using cross compile into the per-user build cache's `vendor/zlib----/` directory — one flavor per driver/target and compiler environment/identity (the lre-objects pattern). Zlib-free binaries never compile any of this; compressed OUTPUT bytes are zlib-version-dependent, which is why the corpus only compares round-trips and fixed-blob inflation. ## brotli/ diff --git a/packages/runtime/vendor/zlib/LICENSE b/packages/runtime/vendor/zlib/LICENSE index b7a69d058..ab8ee6f71 100644 --- a/packages/runtime/vendor/zlib/LICENSE +++ b/packages/runtime/vendor/zlib/LICENSE @@ -1,6 +1,6 @@ Copyright notice: - (C) 1995-2026 Jean-loup Gailly and Mark Adler + (C) 1995-2022 Jean-loup Gailly and Mark Adler This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/packages/runtime/vendor/zlib/LICENSE.chromium b/packages/runtime/vendor/zlib/LICENSE.chromium deleted file mode 100644 index 2249a2865..000000000 --- a/packages/runtime/vendor/zlib/LICENSE.chromium +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2015 The Chromium Authors -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google LLC nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/packages/runtime/vendor/zlib/README.chromium b/packages/runtime/vendor/zlib/README.chromium deleted file mode 100644 index 232ef66ae..000000000 --- a/packages/runtime/vendor/zlib/README.chromium +++ /dev/null @@ -1,38 +0,0 @@ -Name: zlib -Short Name: zlib -URL: https://github.com/madler/zlib -Version: 1.3.2 -Revision: 09a1572aa624e5ddb6c075dc013880de70b1b9b9 -Update Mechanism: Manual (https://crbug.com/422348588) -CPEPrefix: cpe:/a:zlib:zlib:1.3.2 -Security Critical: yes -Shipped: yes -License: Zlib -License File: LICENSE -License Android Compatible: yes - -Description: -"A massively spiffy yet delicately unobtrusive compression library." - -zlib is a free, general-purpose, legally unencumbered lossless data-compression -library. zlib implements the "deflate" compression algorithm described by RFC -1951, which combines the LZ77 (Lempel-Ziv) algorithm with Huffman coding. zlib -also implements the zlib (RFC 1950) and gzip (RFC 1952) wrapper formats. - -Local Modifications: - - Only source code from the http://zlib.net distribution used to build the zlib - and minizip libraries are present. Many other files have been omitted. Only *.c - and *.h files from the upstream root directory, contrib/minizip and - examples/zpipe.c were imported. - - The files named '*simd*' are original x86/Arm/RISC-V specific optimizations. - - The contents of the google directory are original Chromium-specific - additions. - - The contents of the 'contrib' of directory are either Chromium-specific - additions or heavily patched zlib files (e.g. inffast_chunk*). - - Added chromeconf.h - - Plus the changes in 'patches' folder. - - Code in contrib/ other than contrib/minizip was added to match zlib's - contributor layout. - - In sync with 1.3.2 official release - - ZIP reader modified to allow for progress callbacks during extraction. - - ZIP reader modified to add detection of AES encrypted content. diff --git a/packages/runtime/vendor/zlib/adler32.c b/packages/runtime/vendor/zlib/adler32.c index de78b4e56..04b81d29b 100644 --- a/packages/runtime/vendor/zlib/adler32.c +++ b/packages/runtime/vendor/zlib/adler32.c @@ -57,27 +57,10 @@ # define MOD63(a) a %= BASE #endif -#include "cpu_features.h" -#if defined(ADLER32_SIMD_SSSE3) || defined(ADLER32_SIMD_NEON) || defined(ADLER32_SIMD_RVV) -#include "adler32_simd.h" -#endif - /* ========================================================================= */ uLong ZEXPORT adler32_z(uLong adler, const Bytef *buf, z_size_t len) { unsigned long sum2; unsigned n; - /* TODO(cavalcantii): verify if this lengths are optimal for current CPUs. */ -#if defined(ADLER32_SIMD_SSSE3) || defined(ADLER32_SIMD_NEON) \ - || defined(ADLER32_SIMD_RVV) -#if defined(ADLER32_SIMD_SSSE3) - if (buf != Z_NULL && len >= 64 && x86_cpu_enable_ssse3) -#elif defined(ADLER32_SIMD_NEON) - if (buf != Z_NULL && len >= 64) -#elif defined(ADLER32_SIMD_RVV) - if (buf != Z_NULL && len >= 32 && riscv_cpu_enable_rvv) -#endif - return adler32_simd_(adler, buf, len); -#endif /* split Adler-32 into component sums */ sum2 = (adler >> 16) & 0xffff; @@ -94,25 +77,9 @@ uLong ZEXPORT adler32_z(uLong adler, const Bytef *buf, z_size_t len) { return adler | (sum2 << 16); } -#if defined(ADLER32_SIMD_SSSE3) || defined(ADLER32_SIMD_NEON) \ - || defined(RISCV_RVV) - /* - * Use SIMD to compute the adler32. Since this function can be - * freely used, check CPU features here. zlib convention is to - * call adler32(0, NULL, 0), before making calls to adler32(). - * So this is a good early (and infrequent) place to cache CPU - * features for those later, more interesting adler32() calls. - */ - if (buf == Z_NULL) { - if (!len) /* Assume user is calling adler32(0, NULL, 0); */ - cpu_check_features(); - return 1L; - } -#else /* initial Adler-32 value (deferred check for len == 1 speed) */ if (buf == Z_NULL) return 1L; -#endif /* in case short lengths are provided, keep it somewhat fast */ if (len < 16) { diff --git a/packages/runtime/vendor/zlib/adler32_simd.c b/packages/runtime/vendor/zlib/adler32_simd.c deleted file mode 100644 index ce4ce7c57..000000000 --- a/packages/runtime/vendor/zlib/adler32_simd.c +++ /dev/null @@ -1,459 +0,0 @@ -/* adler32_simd.c - * - * Copyright 2017 The Chromium Authors - * Use of this source code is governed by a BSD-style license that can be - * found in the Chromium source repository LICENSE file. - * - * Per http://en.wikipedia.org/wiki/Adler-32 the adler32 A value (aka s1) is - * the sum of N input data bytes D1 ... DN, - * - * A = A0 + D1 + D2 + ... + DN - * - * where A0 is the initial value. - * - * SSE2 _mm_sad_epu8() can be used for byte sums (see http://bit.ly/2wpUOeD, - * for example) and accumulating the byte sums can use SSE shuffle-adds (see - * the "Integer" section of http://bit.ly/2erPT8t for details). Arm NEON has - * similar instructions. - * - * The adler32 B value (aka s2) sums the A values from each step: - * - * B0 + (A0 + D1) + (A0 + D1 + D2) + ... + (A0 + D1 + D2 + ... + DN) or - * - * B0 + N.A0 + N.D1 + (N-1).D2 + (N-2).D3 + ... + (N-(N-1)).DN - * - * B0 being the initial value. For 32 bytes (ideal for garden-variety SIMD): - * - * B = B0 + 32.A0 + [D1 D2 D3 ... D32] x [32 31 30 ... 1]. - * - * Adjacent blocks of 32 input bytes can be iterated with the expressions to - * compute the adler32 s1 s2 of M >> 32 input bytes [1]. - * - * As M grows, the s1 s2 sums grow. If left unchecked, they would eventually - * overflow the precision of their integer representation (bad). However, s1 - * and s2 also need to be computed modulo the adler BASE value (reduced). If - * at most NMAX bytes are processed before a reduce, s1 s2 _cannot_ overflow - * a uint32_t type (the NMAX constraint) [2]. - * - * [1] the iterative equations for s2 contain constant factors; these can be - * hoisted from the n-blocks do loop of the SIMD code. - * - * [2] zlib adler32_z() uses this fact to implement NMAX-block-based updates - * of the adler s1 s2 of uint32_t type (see adler32.c). - */ - -#include "adler32_simd.h" - -/* Definitions from adler32.c: largest prime smaller than 65536 */ -#define BASE 65521U -/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */ -#define NMAX 5552 - -#if defined(ADLER32_SIMD_SSSE3) - -#include - -#if defined(__GNUC__) || defined(__clang__) -__attribute__((__target__("ssse3"))) -#endif -uint32_t ZLIB_INTERNAL adler32_simd_( /* SSSE3 */ - uint32_t adler, - const unsigned char *buf, - z_size_t len) -{ - /* - * Split Adler-32 into component sums. - */ - uint32_t s1 = adler & 0xffff; - uint32_t s2 = adler >> 16; - - /* - * Process the data in blocks. - */ - const unsigned BLOCK_SIZE = 1 << 5; - - z_size_t blocks = len / BLOCK_SIZE; - len -= blocks * BLOCK_SIZE; - - while (blocks) - { - unsigned n = NMAX / BLOCK_SIZE; /* The NMAX constraint. */ - if (n > blocks) - n = (unsigned) blocks; - blocks -= n; - - const __m128i tap1 = - _mm_setr_epi8(32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17); - const __m128i tap2 = - _mm_setr_epi8(16,15,14,13,12,11,10, 9, 8, 7, 6, 5, 4, 3, 2, 1); - const __m128i zero = - _mm_setr_epi8( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); - const __m128i ones = - _mm_set_epi16( 1, 1, 1, 1, 1, 1, 1, 1); - - /* - * Process n blocks of data. At most NMAX data bytes can be - * processed before s2 must be reduced modulo BASE. - */ - __m128i v_ps = _mm_set_epi32(0, 0, 0, s1 * n); - __m128i v_s2 = _mm_set_epi32(0, 0, 0, s2); - __m128i v_s1 = _mm_set_epi32(0, 0, 0, 0); - - do { - /* - * Load 32 input bytes. - */ - const __m128i bytes1 = _mm_loadu_si128((__m128i*)(buf)); - const __m128i bytes2 = _mm_loadu_si128((__m128i*)(buf + 16)); - - /* - * Add previous block byte sum to v_ps. - */ - v_ps = _mm_add_epi32(v_ps, v_s1); - - /* - * Horizontally add the bytes for s1, multiply-adds the - * bytes by [ 32, 31, 30, ... ] for s2. - */ - v_s1 = _mm_add_epi32(v_s1, _mm_sad_epu8(bytes1, zero)); - const __m128i mad1 = _mm_maddubs_epi16(bytes1, tap1); - v_s2 = _mm_add_epi32(v_s2, _mm_madd_epi16(mad1, ones)); - - v_s1 = _mm_add_epi32(v_s1, _mm_sad_epu8(bytes2, zero)); - const __m128i mad2 = _mm_maddubs_epi16(bytes2, tap2); - v_s2 = _mm_add_epi32(v_s2, _mm_madd_epi16(mad2, ones)); - - buf += BLOCK_SIZE; - - } while (--n); - - v_s2 = _mm_add_epi32(v_s2, _mm_slli_epi32(v_ps, 5)); - - /* - * Sum epi32 ints v_s1(s2) and accumulate in s1(s2). - */ - -#define S23O1 _MM_SHUFFLE(2,3,0,1) /* A B C D -> B A D C */ -#define S1O32 _MM_SHUFFLE(1,0,3,2) /* A B C D -> C D A B */ - - v_s1 = _mm_add_epi32(v_s1, _mm_shuffle_epi32(v_s1, S23O1)); - v_s1 = _mm_add_epi32(v_s1, _mm_shuffle_epi32(v_s1, S1O32)); - - s1 += _mm_cvtsi128_si32(v_s1); - - v_s2 = _mm_add_epi32(v_s2, _mm_shuffle_epi32(v_s2, S23O1)); - v_s2 = _mm_add_epi32(v_s2, _mm_shuffle_epi32(v_s2, S1O32)); - - s2 = _mm_cvtsi128_si32(v_s2); - -#undef S23O1 -#undef S1O32 - - /* - * Reduce. - */ - s1 %= BASE; - s2 %= BASE; - } - - /* - * Handle leftover data. - */ - if (len) { - if (len >= 16) { - s2 += (s1 += *buf++); - s2 += (s1 += *buf++); - s2 += (s1 += *buf++); - s2 += (s1 += *buf++); - - s2 += (s1 += *buf++); - s2 += (s1 += *buf++); - s2 += (s1 += *buf++); - s2 += (s1 += *buf++); - - s2 += (s1 += *buf++); - s2 += (s1 += *buf++); - s2 += (s1 += *buf++); - s2 += (s1 += *buf++); - - s2 += (s1 += *buf++); - s2 += (s1 += *buf++); - s2 += (s1 += *buf++); - s2 += (s1 += *buf++); - - len -= 16; - } - - while (len--) { - s2 += (s1 += *buf++); - } - - if (s1 >= BASE) - s1 -= BASE; - s2 %= BASE; - } - - /* - * Return the recombined sums. - */ - return s1 | (s2 << 16); -} - -#elif defined(ADLER32_SIMD_NEON) - -#include - -uint32_t ZLIB_INTERNAL adler32_simd_( /* NEON */ - uint32_t adler, - const unsigned char *buf, - z_size_t len) -{ - /* - * Split Adler-32 into component sums. - */ - uint32_t s1 = adler & 0xffff; - uint32_t s2 = adler >> 16; - - /* - * Serially compute s1 & s2, until the data is 16-byte aligned. - */ - if ((uintptr_t)buf & 15) { - while ((uintptr_t)buf & 15) { - s2 += (s1 += *buf++); - --len; - } - - if (s1 >= BASE) - s1 -= BASE; - s2 %= BASE; - } - - /* - * Process the data in blocks. - */ - const unsigned BLOCK_SIZE = 1 << 5; - - z_size_t blocks = len / BLOCK_SIZE; - len -= blocks * BLOCK_SIZE; - - while (blocks) - { - unsigned n = NMAX / BLOCK_SIZE; /* The NMAX constraint. */ - if (n > blocks) - n = (unsigned) blocks; - blocks -= n; - - /* - * Process n blocks of data. At most NMAX data bytes can be - * processed before s2 must be reduced modulo BASE. - */ - uint32x4_t v_s2 = (uint32x4_t) { 0, 0, 0, s1 * n }; - uint32x4_t v_s1 = (uint32x4_t) { 0, 0, 0, 0 }; - - uint16x8_t v_column_sum_1 = vdupq_n_u16(0); - uint16x8_t v_column_sum_2 = vdupq_n_u16(0); - uint16x8_t v_column_sum_3 = vdupq_n_u16(0); - uint16x8_t v_column_sum_4 = vdupq_n_u16(0); - - do { - /* - * Load 32 input bytes. - */ - const uint8x16_t bytes1 = vld1q_u8((uint8_t*)(buf)); - const uint8x16_t bytes2 = vld1q_u8((uint8_t*)(buf + 16)); - - /* - * Add previous block byte sum to v_s2. - */ - v_s2 = vaddq_u32(v_s2, v_s1); - - /* - * Horizontally add the bytes for s1. - */ - v_s1 = vpadalq_u16(v_s1, vpadalq_u8(vpaddlq_u8(bytes1), bytes2)); - - /* - * Vertically add the bytes for s2. - */ - v_column_sum_1 = vaddw_u8(v_column_sum_1, vget_low_u8 (bytes1)); - v_column_sum_2 = vaddw_u8(v_column_sum_2, vget_high_u8(bytes1)); - v_column_sum_3 = vaddw_u8(v_column_sum_3, vget_low_u8 (bytes2)); - v_column_sum_4 = vaddw_u8(v_column_sum_4, vget_high_u8(bytes2)); - - buf += BLOCK_SIZE; - - } while (--n); - - v_s2 = vshlq_n_u32(v_s2, 5); - - /* - * Multiply-add bytes by [ 32, 31, 30, ... ] for s2. - */ - v_s2 = vmlal_u16(v_s2, vget_low_u16 (v_column_sum_1), - (uint16x4_t) { 32, 31, 30, 29 }); - v_s2 = vmlal_u16(v_s2, vget_high_u16(v_column_sum_1), - (uint16x4_t) { 28, 27, 26, 25 }); - v_s2 = vmlal_u16(v_s2, vget_low_u16 (v_column_sum_2), - (uint16x4_t) { 24, 23, 22, 21 }); - v_s2 = vmlal_u16(v_s2, vget_high_u16(v_column_sum_2), - (uint16x4_t) { 20, 19, 18, 17 }); - v_s2 = vmlal_u16(v_s2, vget_low_u16 (v_column_sum_3), - (uint16x4_t) { 16, 15, 14, 13 }); - v_s2 = vmlal_u16(v_s2, vget_high_u16(v_column_sum_3), - (uint16x4_t) { 12, 11, 10, 9 }); - v_s2 = vmlal_u16(v_s2, vget_low_u16 (v_column_sum_4), - (uint16x4_t) { 8, 7, 6, 5 }); - v_s2 = vmlal_u16(v_s2, vget_high_u16(v_column_sum_4), - (uint16x4_t) { 4, 3, 2, 1 }); - - /* - * Sum epi32 ints v_s1(s2) and accumulate in s1(s2). - */ - uint32x2_t sum1 = vpadd_u32(vget_low_u32(v_s1), vget_high_u32(v_s1)); - uint32x2_t sum2 = vpadd_u32(vget_low_u32(v_s2), vget_high_u32(v_s2)); - uint32x2_t s1s2 = vpadd_u32(sum1, sum2); - - s1 += vget_lane_u32(s1s2, 0); - s2 += vget_lane_u32(s1s2, 1); - - /* - * Reduce. - */ - s1 %= BASE; - s2 %= BASE; - } - - /* - * Handle leftover data. - */ - if (len) { - if (len >= 16) { - s2 += (s1 += *buf++); - s2 += (s1 += *buf++); - s2 += (s1 += *buf++); - s2 += (s1 += *buf++); - - s2 += (s1 += *buf++); - s2 += (s1 += *buf++); - s2 += (s1 += *buf++); - s2 += (s1 += *buf++); - - s2 += (s1 += *buf++); - s2 += (s1 += *buf++); - s2 += (s1 += *buf++); - s2 += (s1 += *buf++); - - s2 += (s1 += *buf++); - s2 += (s1 += *buf++); - s2 += (s1 += *buf++); - s2 += (s1 += *buf++); - - len -= 16; - } - - while (len--) { - s2 += (s1 += *buf++); - } - - if (s1 >= BASE) - s1 -= BASE; - s2 %= BASE; - } - - /* - * Return the recombined sums. - */ - return s1 | (s2 << 16); -} - -#elif defined(ADLER32_SIMD_RVV) -#include - -/* - * Patch by Simon Hosie, from: - * https://github.com/cloudflare/zlib/pull/55 - */ - -uint32_t ZLIB_INTERNAL adler32_simd_( /* RVV */ - uint32_t adler, - const unsigned char *buf, - unsigned long len) -{ - size_t vl = __riscv_vsetvlmax_e8m2(); - const vuint16m4_t zero16 = __riscv_vmv_v_x_u16m4(0, vl); - vuint16m4_t a_sum = zero16; - vuint32m8_t b_sum = __riscv_vmv_v_x_u32m8(0, vl); - - /* Deal with the part which is not a multiple of vl first; because it's - * easier to zero-stuff the beginning of the checksum than it is to tweak the - * multipliers and sums for odd lengths afterwards. - */ - size_t head = len & (vl - 1); - if (head > 0) { - vuint8m2_t zero8 = __riscv_vmv_v_x_u8m2(0, vl); - vuint8m2_t in = __riscv_vle8_v_u8m2(buf, vl); - in = __riscv_vslideup(zero8, in, vl - head, vl); - vuint16m4_t in16 = __riscv_vwcvtu_x(in, vl); - a_sum = in16; - buf += head; - } - - /* We have a 32-bit accumulator, and in each iteration we add 22-times a - * 16-bit value, plus another 16-bit value. We periodically subtract up to - * 65535 times BASE to avoid overflow. b_overflow estimates how often we - * need to do this subtraction. - */ - const int b_overflow = BASE / 23; - int fixup = b_overflow; - ssize_t iters = (len - head) / vl; - while (iters > 0) { - const vuint16m4_t a_overflow = __riscv_vrsub(a_sum, BASE, vl); - int batch = iters < 22 ? iters : 22; - iters -= batch; - b_sum = __riscv_vwmaccu(b_sum, batch, a_sum, vl); - vuint16m4_t a_batch = zero16, b_batch = zero16; - - /* Do a short batch, where neither a_sum nor b_sum can overflow a 16-bit - * register. Then add them back into the main accumulators. - */ - while (batch-- > 0) { - vuint8m2_t in8 = __riscv_vle8_v_u8m2(buf, vl); - buf += vl; - b_batch = __riscv_vadd(b_batch, a_batch, vl); - a_batch = __riscv_vwaddu_wv(a_batch, in8, vl); - } - vbool4_t ov = __riscv_vmsgeu(a_batch, a_overflow, vl); - a_sum = __riscv_vadd(a_sum, a_batch, vl); - a_sum = __riscv_vadd_mu(ov, a_sum, a_sum, 65536 - BASE, vl); - b_sum = __riscv_vwaddu_wv(b_sum, b_batch, vl); - if (--fixup <= 0) { - b_sum = __riscv_vnmsac(b_sum, BASE, __riscv_vsrl(b_sum, 16, vl), vl); - fixup = b_overflow; - } - } - /* Adjust per-lane sums to have appropriate offsets from the end of the - * buffer. - */ - const vuint16m4_t off = __riscv_vrsub(__riscv_vid_v_u16m4(vl), vl, vl); - vuint16m4_t bsum16 = __riscv_vncvt_x(__riscv_vremu(b_sum, BASE, vl), vl); - b_sum = __riscv_vadd(__riscv_vwmulu(a_sum, off, vl), - __riscv_vwmulu(bsum16, vl, vl), vl); - bsum16 = __riscv_vncvt_x(__riscv_vremu(b_sum, BASE, vl), vl); - - /* And finally, do a horizontal sum across the registers for the final - * result. - */ - uint32_t a = adler & 0xffff; - uint32_t b = ((adler >> 16) + a * (len % BASE)) % BASE; - vuint32m1_t sca = __riscv_vmv_v_x_u32m1(a, 1); - vuint32m1_t scb = __riscv_vmv_v_x_u32m1(b, 1); - sca = __riscv_vwredsumu(a_sum, sca, vl); - scb = __riscv_vwredsumu(bsum16, scb, vl); - a = __riscv_vmv_x(sca); - b = __riscv_vmv_x(scb); - a %= BASE; - b %= BASE; - return (b << 16) | a; -} - -#endif /* ADLER32_SIMD_SSSE3 */ diff --git a/packages/runtime/vendor/zlib/adler32_simd.h b/packages/runtime/vendor/zlib/adler32_simd.h deleted file mode 100644 index 0b2361a51..000000000 --- a/packages/runtime/vendor/zlib/adler32_simd.h +++ /dev/null @@ -1,16 +0,0 @@ -/* adler32_simd.h - * - * Copyright 2017 The Chromium Authors - * Use of this source code is governed by a BSD-style license that can be - * found in the Chromium source repository LICENSE file. - */ - -#include - -#include "zconf.h" -#include "zutil.h" - -uint32_t ZLIB_INTERNAL adler32_simd_( - uint32_t adler, - const unsigned char *buf, - z_size_t len); diff --git a/packages/runtime/vendor/zlib/chromeconf.h b/packages/runtime/vendor/zlib/chromeconf.h deleted file mode 100644 index 77f0e29e0..000000000 --- a/packages/runtime/vendor/zlib/chromeconf.h +++ /dev/null @@ -1,211 +0,0 @@ -/* Copyright 2017 The Chromium Authors - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. */ - -#ifndef THIRD_PARTY_ZLIB_CHROMECONF_H_ -#define THIRD_PARTY_ZLIB_CHROMECONF_H_ - -#if defined(COMPONENT_BUILD) -#if defined(WIN32) -#if defined(ZLIB_IMPLEMENTATION) -#define ZEXTERN __declspec(dllexport) -#else -#define ZEXTERN __declspec(dllimport) -#endif -#elif defined(ZLIB_IMPLEMENTATION) -#define ZEXTERN __attribute__((visibility("default"))) -#endif -#endif - -/* Rename all zlib names with a Cr_z_ prefix. This is based on the Z_PREFIX - * option from zconf.h, but with a custom prefix. Where zconf.h would rename - * both a macro and its underscore-suffixed internal implementation (such as - * deflateInit2 and deflateInit2_), only the implementation is renamed here. - * The Byte type is also omitted. - * - * To generate this list, run - * sed -rn -e 's/^# *define +([^ ]+) +(z_[^ ]+)$/#define \1 Cr_\2/p' zconf.h - * (use -E instead of -r on macOS). - * - * gzread is also addressed by modifications in gzread.c and zlib.h. */ - -#define Z_CR_PREFIX_SET - -#define _dist_code Cr_z__dist_code -#define _length_code Cr_z__length_code -#define _tr_align Cr_z__tr_align -#define _tr_flush_bits Cr_z__tr_flush_bits -#define _tr_flush_block Cr_z__tr_flush_block -#define _tr_init Cr_z__tr_init -#define _tr_stored_block Cr_z__tr_stored_block -#define _tr_tally Cr_z__tr_tally -#define adler32 Cr_z_adler32 -#define adler32_combine Cr_z_adler32_combine -#define adler32_combine64 Cr_z_adler32_combine64 -#define adler32_z Cr_z_adler32_z -#define compress Cr_z_compress -#define compress2 Cr_z_compress2 -#define compress_z Cr_z_compress_z -#define compress2_z Cr_z_compress2_z -#define compressBound Cr_z_compressBound -#define compressBound_z Cr_z_compressBound_z -#define crc32 Cr_z_crc32 -#define crc32_combine Cr_z_crc32_combine -#define crc32_combine64 Cr_z_crc32_combine64 -#define crc32_combine_gen Cr_z_crc32_combine_gen -#define crc32_combine_gen64 Cr_z_crc32_combine_gen64 -#define crc32_combine_op Cr_z_crc32_combine_op -#define crc32_z Cr_z_crc32_z -#define deflate Cr_z_deflate -#define deflateBound Cr_z_deflateBound -#define deflateBound_z Cr_z_deflateBound_z -#define deflateCopy Cr_z_deflateCopy -#define deflateEnd Cr_z_deflateEnd -#define deflateGetDictionary Cr_z_deflateGetDictionary -/* #undef deflateInit */ -/* #undef deflateInit2 */ -#define deflateInit2_ Cr_z_deflateInit2_ -#define deflateInit_ Cr_z_deflateInit_ -#define deflateParams Cr_z_deflateParams -#define deflatePending Cr_z_deflatePending -#define deflatePrime Cr_z_deflatePrime -#define deflateReset Cr_z_deflateReset -#define deflateResetKeep Cr_z_deflateResetKeep -#define deflateSetDictionary Cr_z_deflateSetDictionary -#define deflateSetHeader Cr_z_deflateSetHeader -#define deflateTune Cr_z_deflateTune -#define deflateUsed Cr_z_deflateUsed -#define deflate_copyright Cr_z_deflate_copyright -#define get_crc_table Cr_z_get_crc_table -#define gz_error Cr_z_gz_error -#define gz_intmax Cr_z_gz_intmax -#define gz_strwinerror Cr_z_gz_strwinerror -#define gzbuffer Cr_z_gzbuffer -#define gzclearerr Cr_z_gzclearerr -#define gzclose Cr_z_gzclose -#define gzclose_r Cr_z_gzclose_r -#define gzclose_w Cr_z_gzclose_w -#define gzdirect Cr_z_gzdirect -#define gzdopen Cr_z_gzdopen -#define gzeof Cr_z_gzeof -#define gzerror Cr_z_gzerror -#define gzflush Cr_z_gzflush -#define gzfread Cr_z_gzfread -#define gzfwrite Cr_z_gzfwrite -#define gzgetc Cr_z_gzgetc -#define gzgetc_ Cr_z_gzgetc_ -#define gzgets Cr_z_gzgets -#define gzoffset Cr_z_gzoffset -#define gzoffset64 Cr_z_gzoffset64 -#define gzopen Cr_z_gzopen -#define gzopen64 Cr_z_gzopen64 -#define gzopen_w Cr_z_gzopen_w -#define gzprintf Cr_z_gzprintf -#define gzputc Cr_z_gzputc -#define gzputs Cr_z_gzputs -#define gzread Cr_z_gzread -#define gzrewind Cr_z_gzrewind -#define gzseek Cr_z_gzseek -#define gzseek64 Cr_z_gzseek64 -#define gzsetparams Cr_z_gzsetparams -#define gztell Cr_z_gztell -#define gztell64 Cr_z_gztell64 -#define gzungetc Cr_z_gzungetc -#define gzvprintf Cr_z_gzvprintf -#define gzwrite Cr_z_gzwrite -#define inflate Cr_z_inflate -#define inflateBack Cr_z_inflateBack -#define inflateBackEnd Cr_z_inflateBackEnd -/* #undef inflateBackInit */ -#define inflateBackInit_ Cr_z_inflateBackInit_ -#define inflateCodesUsed Cr_z_inflateCodesUsed -#define inflateCopy Cr_z_inflateCopy -#define inflateEnd Cr_z_inflateEnd -#define inflateGetDictionary Cr_z_inflateGetDictionary -#define inflateGetHeader Cr_z_inflateGetHeader -/* #undef inflateInit */ -/* #undef inflateInit2 */ -#define inflateInit2_ Cr_z_inflateInit2_ -#define inflateInit_ Cr_z_inflateInit_ -#define inflateMark Cr_z_inflateMark -#define inflatePrime Cr_z_inflatePrime -#define inflateReset Cr_z_inflateReset -#define inflateReset2 Cr_z_inflateReset2 -#define inflateResetKeep Cr_z_inflateResetKeep -#define inflateSetDictionary Cr_z_inflateSetDictionary -#define inflateSync Cr_z_inflateSync -#define inflateSyncPoint Cr_z_inflateSyncPoint -#define inflateUndermine Cr_z_inflateUndermine -#define inflateValidate Cr_z_inflateValidate -#define inflate_copyright Cr_z_inflate_copyright -#define inflate_fast Cr_z_inflate_fast -#define inflate_table Cr_z_inflate_table -#define inflate_fixed Cr_z_inflate_fixed -#define uncompress Cr_z_uncompress -#define uncompress2 Cr_z_uncompress2 -#define uncompress_z Cr_z_uncompress_z -#define uncompress2_z Cr_z_uncompress2_z -#define zError Cr_z_zError -#define zcalloc Cr_z_zcalloc -#define zcfree Cr_z_zcfree -#define zlibCompileFlags Cr_z_zlibCompileFlags -#define zlibVersion Cr_z_zlibVersion -/* #undef Byte */ -#define Bytef Cr_z_Bytef -#define alloc_func Cr_z_alloc_func -#define charf Cr_z_charf -#define free_func Cr_z_free_func -#define gzFile Cr_z_gzFile -#define gz_header Cr_z_gz_header -#define gz_headerp Cr_z_gz_headerp -#define in_func Cr_z_in_func -#define intf Cr_z_intf -#define out_func Cr_z_out_func -#define uInt Cr_z_uInt -#define uIntf Cr_z_uIntf -#define uLong Cr_z_uLong -#define uLongf Cr_z_uLongf -#define voidp Cr_z_voidp -#define voidpc Cr_z_voidpc -#define voidpf Cr_z_voidpf -#define gz_header_s Cr_z_gz_header_s -/* #undef internal_state */ -/* #undef z_off64_t */ - -/* An exported symbol that isn't handled by Z_PREFIX in zconf.h */ -#define z_errmsg Cr_z_z_errmsg - -/* Symbols added in simd.patch */ -#define copy_with_crc Cr_z_copy_with_crc -#define crc_finalize Cr_z_crc_finalize -#define crc_fold_512to32 Cr_z_crc_fold_512to32 -#define crc_fold_copy Cr_z_crc_fold_copy -#define crc_fold_init Cr_z_crc_fold_init -#define crc_reset Cr_z_crc_reset -#define fill_window_sse Cr_z_fill_window_sse -#define deflate_read_buf Cr_z_deflate_read_buf -#define x86_check_features Cr_z_x86_check_features -#define x86_cpu_enable_simd Cr_z_x86_cpu_enable_simd - -/* Symbols added by adler_simd.c */ -#define adler32_simd_ Cr_z_adler32_simd_ -#define x86_cpu_enable_ssse3 Cr_z_x86_cpu_enable_ssse3 - -/* Symbols added by contrib/optimizations/inffast_chunk */ -#define inflate_fast_chunk_ Cr_z_inflate_fast_chunk_ - -/* Symbols added by crc32_simd.c */ -#define crc32_sse42_simd_ Cr_z_crc32_sse42_simd_ - -/* Symbols added by armv8_crc32 */ -#define arm_cpu_enable_crc32 Cr_z_arm_cpu_enable_crc32 -#define arm_cpu_enable_pmull Cr_z_arm_cpu_enable_pmull -#define arm_check_features Cr_z_arm_check_features -#define armv8_crc32_little Cr_z_armv8_crc32_little -#define armv8_crc32_pmull_little Cr_z_armv8_crc32_pmull_little - -/* Symbols added by cpu_features.c */ -#define cpu_check_features Cr_z_cpu_check_features -#define x86_cpu_enable_sse2 Cr_z_x86_cpu_enable_sse2 - -#endif /* THIRD_PARTY_ZLIB_CHROMECONF_H_ */ diff --git a/packages/runtime/vendor/zlib/compare256.h b/packages/runtime/vendor/zlib/compare256.h deleted file mode 100644 index 80061c3fe..000000000 --- a/packages/runtime/vendor/zlib/compare256.h +++ /dev/null @@ -1,56 +0,0 @@ -/* compare256.h - * - * This does 256-byte match comparison for deflate's longest_match. - * - * Copyright 2026 The Chromium Authors - * Use of this source code is governed by a BSD-style license that can be - * found in the Chromium source repository LICENSE file. - */ -#ifndef COMPARE256_H -#define COMPARE256_H - -#include -#include -#if defined(_MSC_VER) && !defined(__clang__) -#include -#endif - -/* Safe unaligned 16-bit load. Compilers optimize this into a single load - * instruction. */ -static inline uint16_t read16(const void* p) { - uint16_t v; - memcpy(&v, p, sizeof(v)); - return v; -} - -/* Finds the byte offset (0..7) of the first difference in non-zero XOR mask - * `x`: - */ -static inline int compare256_diff(uint64_t x) { -#if defined(_MSC_VER) && !defined(__clang__) - unsigned long i; - _BitScanForward64(&i, x); - return (int)i / 8; -#else - return __builtin_ctzll(x) / 8; -#endif -} - -/* Returns the number of matching leading bytes (0 to 256) between src0 and - * src1. Compares 8 bytes per iteration with early exit. */ -static inline int compare256(const unsigned char* src0, - const unsigned char* src1) { - int len = 0; - do { - uint64_t a, b, x; - memcpy(&a, src0 + len, sizeof(a)); - memcpy(&b, src1 + len, sizeof(b)); - x = a ^ b; - if (x) - return len + compare256_diff(x); - len += (int)sizeof(a); - } while (len < 256); - return 256; -} - -#endif /* COMPARE256_H */ diff --git a/packages/runtime/vendor/zlib/compress.c b/packages/runtime/vendor/zlib/compress.c index e3a7516e4..f43bacf7a 100644 --- a/packages/runtime/vendor/zlib/compress.c +++ b/packages/runtime/vendor/zlib/compress.c @@ -1,5 +1,5 @@ /* compress.c -- compress a memory buffer - * Copyright (C) 1995-2026 Jean-loup Gailly, Mark Adler + * Copyright (C) 1995-2005, 2014, 2016 Jean-loup Gailly, Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -18,19 +18,13 @@ compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_BUF_ERROR if there was not enough room in the output buffer, Z_STREAM_ERROR if the level parameter is invalid. - - The _z versions of the functions take size_t length arguments. */ -int ZEXPORT compress2_z(Bytef *dest, z_size_t *destLen, const Bytef *source, - z_size_t sourceLen, int level) { +int ZEXPORT compress2(Bytef *dest, uLongf *destLen, const Bytef *source, + uLong sourceLen, int level) { z_stream stream; int err; const uInt max = (uInt)-1; - z_size_t left; - - if ((sourceLen > 0 && source == NULL) || - destLen == NULL || (*destLen > 0 && dest == NULL)) - return Z_STREAM_ERROR; + uLong left; left = *destLen; *destLen = 0; @@ -49,36 +43,23 @@ int ZEXPORT compress2_z(Bytef *dest, z_size_t *destLen, const Bytef *source, do { if (stream.avail_out == 0) { - stream.avail_out = left > (z_size_t)max ? max : (uInt)left; + stream.avail_out = left > (uLong)max ? max : (uInt)left; left -= stream.avail_out; } if (stream.avail_in == 0) { - stream.avail_in = sourceLen > (z_size_t)max ? max : - (uInt)sourceLen; + stream.avail_in = sourceLen > (uLong)max ? max : (uInt)sourceLen; sourceLen -= stream.avail_in; } err = deflate(&stream, sourceLen ? Z_NO_FLUSH : Z_FINISH); } while (err == Z_OK); - *destLen = (z_size_t)(stream.next_out - dest); + *destLen = stream.total_out; deflateEnd(&stream); return err == Z_STREAM_END ? Z_OK : err; } -int ZEXPORT compress2(Bytef *dest, uLongf *destLen, const Bytef *source, - uLong sourceLen, int level) { - int ret; - z_size_t got = *destLen; - ret = compress2_z(dest, &got, source, sourceLen, level); - *destLen = (uLong)got; - return ret; -} + /* =========================================================================== */ -int ZEXPORT compress_z(Bytef *dest, z_size_t *destLen, const Bytef *source, - z_size_t sourceLen) { - return compress2_z(dest, destLen, source, sourceLen, - Z_DEFAULT_COMPRESSION); -} int ZEXPORT compress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen) { return compress2(dest, destLen, source, sourceLen, Z_DEFAULT_COMPRESSION); @@ -88,23 +69,7 @@ int ZEXPORT compress(Bytef *dest, uLongf *destLen, const Bytef *source, If the default memLevel or windowBits for deflateInit() is changed, then this function needs to be updated. */ -z_size_t ZEXPORT compressBound_z(z_size_t sourceLen) { - z_size_t bound = sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + - (sourceLen >> 25) + 13; - - /* FIXME(cavalcantii): usage of CRC32 Castagnoli as a hash function - * for the hash table of symbols used for compression has a side effect - * where for compression level [4, 5] it will increase the output buffer size - * by 0.1% (i.e. less than 1%) for a high entropy input (i.e. random data). - * To avoid a scenario where client code would fail, for safety we increase - * the expected output size by 0.8% (i.e. 8x more than the worst scenario). - * See: http://crbug.com/990489 - */ - bound += bound >> 7; // Equivalent to 1.0078125 - - return bound < sourceLen ? (z_size_t)-1 : bound; -} uLong ZEXPORT compressBound(uLong sourceLen) { - z_size_t bound = compressBound_z(sourceLen); - return (uLong)bound != bound ? (uLong)-1 : (uLong)bound; + return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + + (sourceLen >> 25) + 13; } diff --git a/packages/runtime/vendor/zlib/contrib/optimizations/chunkcopy.h b/packages/runtime/vendor/zlib/contrib/optimizations/chunkcopy.h deleted file mode 100644 index 97efff3a4..000000000 --- a/packages/runtime/vendor/zlib/contrib/optimizations/chunkcopy.h +++ /dev/null @@ -1,564 +0,0 @@ -/* chunkcopy.h -- fast chunk copy and set operations - * Copyright (C) 2017 ARM, Inc. - * Copyright 2017 The Chromium Authors - * Use of this source code is governed by a BSD-style license that can be - * found in the Chromium source repository LICENSE file. - */ - -#ifndef CHUNKCOPY_H -#define CHUNKCOPY_H - -#include -#include "zutil.h" - -#define Z_STATIC_ASSERT(name, assert) typedef char name[(assert) ? 1 : -1] - -#if __STDC_VERSION__ >= 199901L -#define Z_RESTRICT restrict -#else -#define Z_RESTRICT -#endif - -#if defined(__clang__) || defined(__GNUC__) || defined(__llvm__) -#define Z_BUILTIN_MEMCPY __builtin_memcpy -#define Z_BUILTIN_MEMSET __builtin_memset -#else -#define Z_BUILTIN_MEMCPY zmemcpy -#define Z_BUILTIN_MEMSET zmemset -#endif - -#if defined(INFLATE_CHUNK_SIMD_NEON) -#include -typedef uint8x16_t z_vec128i_t; -#elif defined(INFLATE_CHUNK_SIMD_SSE2) -#include -typedef __m128i z_vec128i_t; -#elif defined(INFLATE_CHUNK_GENERIC) -typedef struct { uint8_t x[16]; } z_vec128i_t; -#else -#error chunkcopy.h inflate chunk SIMD is not defined for your build target -#endif - -/* - * Suppress MSan errors about copying uninitialized bytes (crbug.com/1376033). - */ -#define Z_DISABLE_MSAN -#if defined(__has_feature) - #if __has_feature(memory_sanitizer) - #undef Z_DISABLE_MSAN - #define Z_DISABLE_MSAN __attribute__((no_sanitize("memory"))) - #endif -#endif - -/* - * chunk copy type: the z_vec128i_t type size should be exactly 128-bits - * and equal to CHUNKCOPY_CHUNK_SIZE. - */ -#define CHUNKCOPY_CHUNK_SIZE sizeof(z_vec128i_t) - -Z_STATIC_ASSERT(vector_128_bits_wide, - CHUNKCOPY_CHUNK_SIZE == sizeof(int8_t) * 16); - -/* - * Ask the compiler to perform a wide, unaligned load with a machine - * instruction appropriate for the z_vec128i_t type. - */ -static inline z_vec128i_t loadchunk( - const unsigned char FAR* s) Z_DISABLE_MSAN { - z_vec128i_t v; - Z_BUILTIN_MEMCPY(&v, s, sizeof(v)); - return v; -} - -/* - * Ask the compiler to perform a wide, unaligned store with a machine - * instruction appropriate for the z_vec128i_t type. - */ -static inline void storechunk( - unsigned char FAR* d, - const z_vec128i_t v) { - Z_BUILTIN_MEMCPY(d, &v, sizeof(v)); -} - -/* - * Perform a memcpy-like operation, assuming that length is non-zero and that - * it's OK to overwrite at least CHUNKCOPY_CHUNK_SIZE bytes of output even if - * the length is shorter than this. - * - * It also guarantees that it will properly unroll the data if the distance - * between `out` and `from` is at least CHUNKCOPY_CHUNK_SIZE, which we rely on - * in chunkcopy_relaxed(). - * - * Aside from better memory bus utilisation, this means that short copies - * (CHUNKCOPY_CHUNK_SIZE bytes or fewer) will fall straight through the loop - * without iteration, which will hopefully make the branch prediction more - * reliable. - */ -static inline unsigned char FAR* chunkcopy_core( - unsigned char FAR* out, - const unsigned char FAR* from, - unsigned len) Z_DISABLE_MSAN { - const int bump = (--len % CHUNKCOPY_CHUNK_SIZE) + 1; - storechunk(out, loadchunk(from)); - out += bump; - from += bump; - len /= CHUNKCOPY_CHUNK_SIZE; - while (len-- > 0) { - storechunk(out, loadchunk(from)); - out += CHUNKCOPY_CHUNK_SIZE; - from += CHUNKCOPY_CHUNK_SIZE; - } - return out; -} - -/* - * Like chunkcopy_core(), but avoid writing beyond of legal output. - * - * Accepts an additional pointer to the end of safe output. A generic safe - * copy would use (out + len), but it's normally the case that the end of the - * output buffer is beyond the end of the current copy, and this can still be - * exploited. - */ -static inline unsigned char FAR* chunkcopy_core_safe( - unsigned char FAR* out, - const unsigned char FAR* from, - unsigned len, - unsigned char FAR* limit) { - Assert(out + len <= limit, "chunk copy exceeds safety limit"); - if ((limit - out) < (ptrdiff_t)CHUNKCOPY_CHUNK_SIZE) { - const unsigned char FAR* Z_RESTRICT rfrom = from; - Assert((uintptr_t)out - (uintptr_t)from >= len, - "invalid restrict in chunkcopy_core_safe"); - Assert((uintptr_t)from - (uintptr_t)out >= len, - "invalid restrict in chunkcopy_core_safe"); - if (len & 8) { - Z_BUILTIN_MEMCPY(out, rfrom, 8); - out += 8; - rfrom += 8; - } - if (len & 4) { - Z_BUILTIN_MEMCPY(out, rfrom, 4); - out += 4; - rfrom += 4; - } - if (len & 2) { - Z_BUILTIN_MEMCPY(out, rfrom, 2); - out += 2; - rfrom += 2; - } - if (len & 1) { - *out++ = *rfrom++; - } - return out; - } - return chunkcopy_core(out, from, len); -} - -/* - * Perform short copies until distance can be rewritten as being at least - * CHUNKCOPY_CHUNK_SIZE. - * - * Assumes it's OK to overwrite at least the first 2*CHUNKCOPY_CHUNK_SIZE - * bytes of output even if the copy is shorter than this. This assumption - * holds within zlib inflate_fast(), which starts every iteration with at - * least 258 bytes of output space available (258 being the maximum length - * output from a single token; see inffast.c). - */ -static inline unsigned char FAR* chunkunroll_relaxed( - unsigned char FAR* out, - unsigned FAR* dist, - unsigned FAR* len) Z_DISABLE_MSAN { - const unsigned char FAR* from = out - *dist; - while (*dist < *len && *dist < CHUNKCOPY_CHUNK_SIZE) { - storechunk(out, loadchunk(from)); - out += *dist; - *len -= *dist; - *dist += *dist; - } - return out; -} - -#if defined(INFLATE_CHUNK_SIMD_NEON) -/* - * v_load64_dup(): load *src as an unaligned 64-bit int and duplicate it in - * every 64-bit component of the 128-bit result (64-bit int splat). - */ -static inline z_vec128i_t v_load64_dup(const void* src) { - return vcombine_u8(vld1_u8(src), vld1_u8(src)); -} - -/* - * v_load32_dup(): load *src as an unaligned 32-bit int and duplicate it in - * every 32-bit component of the 128-bit result (32-bit int splat). - */ -static inline z_vec128i_t v_load32_dup(const void* src) { - int32_t i32; - Z_BUILTIN_MEMCPY(&i32, src, sizeof(i32)); - return vreinterpretq_u8_s32(vdupq_n_s32(i32)); -} - -/* - * v_load16_dup(): load *src as an unaligned 16-bit int and duplicate it in - * every 16-bit component of the 128-bit result (16-bit int splat). - */ -static inline z_vec128i_t v_load16_dup(const void* src) { - int16_t i16; - Z_BUILTIN_MEMCPY(&i16, src, sizeof(i16)); - return vreinterpretq_u8_s16(vdupq_n_s16(i16)); -} - -/* - * v_load8_dup(): load the 8-bit int *src and duplicate it in every 8-bit - * component of the 128-bit result (8-bit int splat). - */ -static inline z_vec128i_t v_load8_dup(const void* src) { - return vld1q_dup_u8((const uint8_t*)src); -} - -/* - * v_store_128(): store the 128-bit vec in a memory destination (that might - * not be 16-byte aligned) void* out. - */ -static inline void v_store_128(void* out, const z_vec128i_t vec) { - vst1q_u8(out, vec); -} - -#elif defined(INFLATE_CHUNK_SIMD_SSE2) -/* - * v_load64_dup(): load *src as an unaligned 64-bit int and duplicate it in - * every 64-bit component of the 128-bit result (64-bit int splat). - */ -static inline z_vec128i_t v_load64_dup(const void* src) { - int64_t i64; - Z_BUILTIN_MEMCPY(&i64, src, sizeof(i64)); - return _mm_set1_epi64x(i64); -} - -/* - * v_load32_dup(): load *src as an unaligned 32-bit int and duplicate it in - * every 32-bit component of the 128-bit result (32-bit int splat). - */ -static inline z_vec128i_t v_load32_dup(const void* src) { - int32_t i32; - Z_BUILTIN_MEMCPY(&i32, src, sizeof(i32)); - return _mm_set1_epi32(i32); -} - -/* - * v_load16_dup(): load *src as an unaligned 16-bit int and duplicate it in - * every 16-bit component of the 128-bit result (16-bit int splat). - */ -static inline z_vec128i_t v_load16_dup(const void* src) { - int16_t i16; - Z_BUILTIN_MEMCPY(&i16, src, sizeof(i16)); - return _mm_set1_epi16(i16); -} - -/* - * v_load8_dup(): load the 8-bit int *src and duplicate it in every 8-bit - * component of the 128-bit result (8-bit int splat). - */ -static inline z_vec128i_t v_load8_dup(const void* src) { - return _mm_set1_epi8(*(const char*)src); -} - -/* - * v_store_128(): store the 128-bit vec in a memory destination (that might - * not be 16-byte aligned) void* out. - */ -static inline void v_store_128(void* out, const z_vec128i_t vec) { - _mm_storeu_si128((__m128i*)out, vec); -} -#elif defined(INFLATE_CHUNK_GENERIC) -/* - * Default implementations for chunk-copy functions rely on memcpy() being - * inlined by the compiler for best performance. This is most likely to work - * as expected when the length argument is constant (as is the case here) and - * the target supports unaligned loads and stores. Since that's not always a - * safe assumption, this may need extra compiler arguments such as - * `-mno-strict-align` or `-munaligned-access`, or the availability of - * extensions like SIMD. - */ - -/* - * v_load64_dup(): load *src as an unaligned 64-bit int and duplicate it in - * every 64-bit component of the 128-bit result (64-bit int splat). - */ -static inline z_vec128i_t v_load64_dup(const void* src) { - int64_t in; - Z_BUILTIN_MEMCPY(&in, src, sizeof(in)); - z_vec128i_t out; - for (int i = 0; i < sizeof(out); i += sizeof(in)) { - Z_BUILTIN_MEMCPY((uint8_t*)&out + i, &in, sizeof(in)); - } - return out; -} - -/* - * v_load32_dup(): load *src as an unaligned 32-bit int and duplicate it in - * every 32-bit component of the 128-bit result (32-bit int splat). - */ -static inline z_vec128i_t v_load32_dup(const void* src) { - int32_t in; - Z_BUILTIN_MEMCPY(&in, src, sizeof(in)); - z_vec128i_t out; - for (int i = 0; i < sizeof(out); i += sizeof(in)) { - Z_BUILTIN_MEMCPY((uint8_t*)&out + i, &in, sizeof(in)); - } - return out; -} - -/* - * v_load16_dup(): load *src as an unaligned 16-bit int and duplicate it in - * every 16-bit component of the 128-bit result (16-bit int splat). - */ -static inline z_vec128i_t v_load16_dup(const void* src) { - int16_t in; - Z_BUILTIN_MEMCPY(&in, src, sizeof(in)); - z_vec128i_t out; - for (int i = 0; i < sizeof(out); i += sizeof(in)) { - Z_BUILTIN_MEMCPY((uint8_t*)&out + i, &in, sizeof(in)); - } - return out; -} - -/* - * v_load8_dup(): load the 8-bit int *src and duplicate it in every 8-bit - * component of the 128-bit result (8-bit int splat). - */ -static inline z_vec128i_t v_load8_dup(const void* src) { - int8_t in = *(const uint8_t*)src; - z_vec128i_t out; - Z_BUILTIN_MEMSET(&out, in, sizeof(out)); - return out; -} - -/* - * v_store_128(): store the 128-bit vec in a memory destination (that might - * not be 16-byte aligned) void* out. - */ -static inline void v_store_128(void* out, const z_vec128i_t vec) { - Z_BUILTIN_MEMCPY(out, &vec, sizeof(vec)); -} -#endif - -/* - * Perform an overlapping copy which behaves as a memset() operation, but - * supporting periods other than one, and assume that length is non-zero and - * that it's OK to overwrite at least CHUNKCOPY_CHUNK_SIZE*3 bytes of output - * even if the length is shorter than this. - */ -static inline unsigned char FAR* chunkset_core( - unsigned char FAR* out, - unsigned period, - unsigned len) { - z_vec128i_t v; - const int bump = ((len - 1) % sizeof(v)) + 1; - - switch (period) { - case 1: - v = v_load8_dup(out - 1); - v_store_128(out, v); - out += bump; - len -= bump; - while (len > 0) { - v_store_128(out, v); - out += sizeof(v); - len -= sizeof(v); - } - return out; - case 2: - v = v_load16_dup(out - 2); - v_store_128(out, v); - out += bump; - len -= bump; - if (len > 0) { - v = v_load16_dup(out - 2); - do { - v_store_128(out, v); - out += sizeof(v); - len -= sizeof(v); - } while (len > 0); - } - return out; - case 4: - v = v_load32_dup(out - 4); - v_store_128(out, v); - out += bump; - len -= bump; - if (len > 0) { - v = v_load32_dup(out - 4); - do { - v_store_128(out, v); - out += sizeof(v); - len -= sizeof(v); - } while (len > 0); - } - return out; - case 8: - v = v_load64_dup(out - 8); - v_store_128(out, v); - out += bump; - len -= bump; - if (len > 0) { - v = v_load64_dup(out - 8); - do { - v_store_128(out, v); - out += sizeof(v); - len -= sizeof(v); - } while (len > 0); - } - return out; - } - out = chunkunroll_relaxed(out, &period, &len); - return chunkcopy_core(out, out - period, len); -} - -/* - * Perform a memcpy-like operation, but assume that length is non-zero and that - * it's OK to overwrite at least CHUNKCOPY_CHUNK_SIZE bytes of output even if - * the length is shorter than this. - * - * Unlike chunkcopy_core() above, no guarantee is made regarding the behaviour - * of overlapping buffers, regardless of the distance between the pointers. - * This is reflected in the `restrict`-qualified pointers, allowing the - * compiler to re-order loads and stores. - */ -static inline unsigned char FAR* chunkcopy_relaxed( - unsigned char FAR* Z_RESTRICT out, - const unsigned char FAR* Z_RESTRICT from, - unsigned len) { - Assert((uintptr_t)out - (uintptr_t)from >= len, - "invalid restrict in chunkcopy_relaxed"); - Assert((uintptr_t)from - (uintptr_t)out >= len, - "invalid restrict in chunkcopy_relaxed"); - return chunkcopy_core(out, from, len); -} - -/* - * Like chunkcopy_relaxed(), but avoid writing beyond of legal output. - * - * Unlike chunkcopy_core_safe() above, no guarantee is made regarding the - * behaviour of overlapping buffers, regardless of the distance between the - * pointers. This is reflected in the `restrict`-qualified pointers, allowing - * the compiler to re-order loads and stores. - * - * Accepts an additional pointer to the end of safe output. A generic safe - * copy would use (out + len), but it's normally the case that the end of the - * output buffer is beyond the end of the current copy, and this can still be - * exploited. - */ -static inline unsigned char FAR* chunkcopy_safe( - unsigned char FAR* out, - const unsigned char FAR* Z_RESTRICT from, - unsigned len, - unsigned char FAR* limit) { - Assert(out + len <= limit, "chunk copy exceeds safety limit"); - Assert((uintptr_t)out - (uintptr_t)from >= len, - "invalid restrict in chunkcopy_safe"); - Assert((uintptr_t)from - (uintptr_t)out >= len, - "invalid restrict in chunkcopy_safe"); - - return chunkcopy_core_safe(out, from, len, limit); -} - -/* - * Perform chunky copy within the same buffer, where the source and destination - * may potentially overlap. - * - * Assumes that len > 0 on entry, and that it's safe to write at least - * CHUNKCOPY_CHUNK_SIZE*3 bytes to the output. - */ -static inline unsigned char FAR* chunkcopy_lapped_relaxed( - unsigned char FAR* out, - unsigned dist, - unsigned len) { - if (dist < len && dist < CHUNKCOPY_CHUNK_SIZE) { - return chunkset_core(out, dist, len); - } - return chunkcopy_core(out, out - dist, len); -} - -/* - * Behave like chunkcopy_lapped_relaxed(), but avoid writing beyond of legal - * output. - * - * Accepts an additional pointer to the end of safe output. A generic safe - * copy would use (out + len), but it's normally the case that the end of the - * output buffer is beyond the end of the current copy, and this can still be - * exploited. - */ -static inline unsigned char FAR* chunkcopy_lapped_safe( - unsigned char FAR* out, - unsigned dist, - unsigned len, - unsigned char FAR* limit) { - Assert(out + len <= limit, "chunk copy exceeds safety limit"); - if ((limit - out) < (ptrdiff_t)(3 * CHUNKCOPY_CHUNK_SIZE)) { - /* TODO(cavalcantii): try harder to optimise this */ - while (len-- > 0) { - *out = *(out - dist); - out++; - } - return out; - } - return chunkcopy_lapped_relaxed(out, dist, len); -} - -/* TODO(cavalcanti): see crbug.com/1110083. */ -static inline unsigned char FAR* chunkcopy_safe_ugly(unsigned char FAR* out, - unsigned dist, - unsigned len, - unsigned char FAR* limit) { -#if defined(__GNUC__) && !defined(__clang__) - /* Speed is the same as using chunkcopy_safe - w/ GCC on ARM (tested gcc 6.3 and 7.5) and avoids - undefined behavior. - */ - return chunkcopy_core_safe(out, out - dist, len, limit); -#elif defined(__clang__) && defined(ARMV8_OS_ANDROID) && !defined(__aarch64__) - /* Seems to perform better on 32bit (i.e. Android). */ - return chunkcopy_core_safe(out, out - dist, len, limit); -#else - /* Seems to perform better on 64bit. */ - return chunkcopy_lapped_safe(out, dist, len, limit); -#endif -} - -/* - * The chunk-copy code above deals with writing the decoded DEFLATE data to - * the output with SIMD methods to increase decode speed. Reading the input - * to the DEFLATE decoder with a wide, SIMD method can also increase decode - * speed. This option is supported on little endian machines, and reads the - * input data in 64-bit (8 byte) chunks. - */ - -#ifdef INFLATE_CHUNK_READ_64LE -/* - * Buffer the input in a uint64_t (8 bytes) in the wide input reading case. - */ -typedef uint64_t inflate_holder_t; - -/* - * Ask the compiler to perform a wide, unaligned load of a uint64_t using a - * machine instruction appropriate for the uint64_t type. - */ -static inline inflate_holder_t read64le(const unsigned char FAR *in) { - inflate_holder_t input; - Z_BUILTIN_MEMCPY(&input, in, sizeof(input)); - return input; -} -#else -/* - * Otherwise, buffer the input bits using zlib's default input buffer type. - */ -typedef unsigned long inflate_holder_t; - -#endif /* INFLATE_CHUNK_READ_64LE */ - -#undef Z_STATIC_ASSERT -#undef Z_RESTRICT -#undef Z_BUILTIN_MEMCPY -#undef Z_DISABLE_MSAN - -#endif /* CHUNKCOPY_H */ diff --git a/packages/runtime/vendor/zlib/contrib/optimizations/inffast_chunk.c b/packages/runtime/vendor/zlib/contrib/optimizations/inffast_chunk.c deleted file mode 100644 index 3c93da051..000000000 --- a/packages/runtime/vendor/zlib/contrib/optimizations/inffast_chunk.c +++ /dev/null @@ -1,376 +0,0 @@ -/* inffast_chunk.c -- fast decoding - * Copyright (C) 1995-2026 Mark Adler - * Copyright 2023 The Chromium Authors - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -#include "zutil.h" -#include "inftrees.h" -#include "inflate.h" -#include "contrib/optimizations/inffast_chunk.h" -#include "contrib/optimizations/chunkcopy.h" - -#ifdef ASMINF -# pragma message("Assembler code may have bugs -- use at your own risk") -#else - -/* - Decode literal, length, and distance codes and write out the resulting - literal and match bytes until either not enough input or output is - available, an end-of-block is encountered, or a data error is encountered. - When large enough input and output buffers are supplied to inflate(), for - example, a 16K input buffer and a 64K output buffer, more than 95% of the - inflate() execution time is spent in this routine. - - Entry assumptions: - - state->mode == LEN - strm->avail_in >= INFLATE_FAST_MIN_INPUT (6 or 8 bytes + 7 bytes) - strm->avail_out >= INFLATE_FAST_MIN_OUTPUT (258 bytes + 2 bytes) - start >= strm->avail_out - state->bits < 8 - (state->hold >> state->bits) == 0 - strm->next_out[0..strm->avail_out] does not overlap with - strm->next_in[0..strm->avail_in] - strm->state->window is allocated with an additional - CHUNKCOPY_CHUNK_SIZE-1 bytes of padding beyond strm->state->wsize - - On return, state->mode is one of: - - LEN -- ran out of enough output space or enough available input - TYPE -- reached end of block code, inflate() to interpret next block - BAD -- error in block data - - Notes: - - INFLATE_FAST_MIN_INPUT: 6 or 8 bytes + 7 bytes - - - The maximum input bits used by a length/distance pair is 15 bits for the - length code, 5 bits for the length extra, 15 bits for the distance code, - and 13 bits for the distance extra. This totals 48 bits, or six bytes. - Therefore if strm->avail_in >= 6, then there is enough input to avoid - checking for available input while decoding. - - - The wide input data reading option reads 64 input bits at a time. Thus, - if strm->avail_in >= 8, then there is enough input to avoid checking for - available input while decoding. Reading consumes the input with: - - hold |= read64le(in) << bits; - in += 6; - bits += 48; - - reporting 6 bytes of new input because |bits| is 0..15 (2 bytes rounded - up, worst case) and 6 bytes is enough to decode as noted above. At exit, - hold &= (1U << bits) - 1 drops excess input to keep the invariant: - - (state->hold >> state->bits) == 0 - - INFLATE_FAST_MIN_OUTPUT: 258 bytes + 2 bytes for literals = 260 bytes - - - The maximum bytes that a single length/distance pair can output is 258 - bytes, which is the maximum length that can be coded. inflate_fast() - requires strm->avail_out >= 260 for each loop to avoid checking for - available output space while decoding. - */ -void ZLIB_INTERNAL inflate_fast_chunk_(z_streamp strm, unsigned start) { - struct inflate_state FAR *state; - z_const unsigned char FAR *in; /* local strm->next_in */ - z_const unsigned char FAR *last; /* have enough input while in < last */ - unsigned char FAR *out; /* local strm->next_out */ - unsigned char FAR *beg; /* inflate()'s initial strm->next_out */ - unsigned char FAR *end; /* while out < end, enough space available */ - unsigned char FAR *limit; /* safety limit for chunky copies */ -#ifdef INFLATE_STRICT - unsigned dmax; /* maximum distance from zlib header */ -#endif - unsigned wsize; /* window size or zero if not using window */ - unsigned whave; /* valid bytes in the window */ - unsigned wnext; /* window write index */ - unsigned char FAR *window; /* allocated sliding window, if wsize != 0 */ - inflate_holder_t hold; /* local strm->hold */ - unsigned bits; /* local strm->bits */ - code const FAR *lcode; /* local strm->lencode */ - code const FAR *dcode; /* local strm->distcode */ - unsigned lmask; /* mask for first level of length codes */ - unsigned dmask; /* mask for first level of distance codes */ - code const *here; /* retrieved table entry */ - unsigned op; /* code bits, operation, extra bits, or */ - /* window position, window bytes to copy */ - unsigned len; /* match length, unused bytes */ - unsigned dist; /* match distance */ - unsigned char FAR *from; /* where to copy match from */ - - /* copy state to local variables */ - state = (struct inflate_state FAR *)strm->state; - in = strm->next_in; - last = in + (strm->avail_in - (INFLATE_FAST_MIN_INPUT - 1)); - out = strm->next_out; - beg = out - (start - strm->avail_out); - end = out + (strm->avail_out - (INFLATE_FAST_MIN_OUTPUT - 1)); - limit = out + strm->avail_out; -#ifdef INFLATE_STRICT - dmax = state->dmax; -#endif - wsize = state->wsize; - whave = state->whave; - wnext = (state->wnext == 0 && whave >= wsize) ? wsize : state->wnext; - window = state->window; - hold = state->hold; - bits = state->bits; - lcode = state->lencode; - dcode = state->distcode; - lmask = (1U << state->lenbits) - 1; - dmask = (1U << state->distbits) - 1; - -#ifdef INFLATE_CHUNK_READ_64LE -#define REFILL() do { \ - Assert(bits < 64, "### Too many bits in inflate_fast."); \ - hold |= read64le(in) << bits; \ - in += 7; \ - in -= bits >> 3; \ - bits |= 56; \ - } while (0) -#endif - - /* decode literals and length/distances until end-of-block or not enough - input data or output space */ - do { -#ifdef INFLATE_CHUNK_READ_64LE - REFILL(); -#else - if (bits < 15) { - hold += (unsigned long)(*in++) << bits; - bits += 8; - hold += (unsigned long)(*in++) << bits; - bits += 8; - } -#endif - here = lcode + (hold & lmask); -#ifdef INFLATE_CHUNK_READ_64LE - if (here->op == 0) { /* literal */ - Tracevv((stderr, here->val >= 0x20 && here->val < 0x7f ? - "inflate: literal '%c'\n" : - "inflate: literal 0x%02x\n", here->val)); - *out++ = (unsigned char)(here->val); - hold >>= here->bits; - bits -= here->bits; - here = lcode + (hold & lmask); - if (here->op == 0) { /* literal */ - Tracevv((stderr, here->val >= 0x20 && here->val < 0x7f ? - "inflate: 2nd literal '%c'\n" : - "inflate: 2nd literal 0x%02x\n", here->val)); - *out++ = (unsigned char)(here->val); - hold >>= here->bits; - bits -= here->bits; - here = lcode + (hold & lmask); - } - } -#endif - dolen: - op = (unsigned)(here->bits); - hold >>= op; - bits -= op; - op = (unsigned)(here->op); - if (op == 0) { /* literal */ - Tracevv((stderr, here->val >= 0x20 && here->val < 0x7f ? - "inflate: literal '%c'\n" : - "inflate: literal 0x%02x\n", here->val)); - *out++ = (unsigned char)(here->val); - } - else if (op & 16) { /* length base */ - len = (unsigned)(here->val); - op &= 15; /* number of extra bits */ - if (op) { -#ifndef INFLATE_CHUNK_READ_64LE - if (bits < op) { - hold += (unsigned long)(*in++) << bits; - bits += 8; - } -#endif - len += (unsigned)hold & ((1U << op) - 1); - hold >>= op; - bits -= op; - } - Tracevv((stderr, "inflate: length %u\n", len)); -#ifndef INFLATE_CHUNK_READ_64LE - if (bits < 15) { - hold += (unsigned long)(*in++) << bits; - bits += 8; - hold += (unsigned long)(*in++) << bits; - bits += 8; - } -#endif - here = dcode + (hold & dmask); - dodist: - op = (unsigned)(here->bits); - hold >>= op; - bits -= op; - op = (unsigned)(here->op); - if (op & 16) { /* distance base */ - dist = (unsigned)(here->val); - op &= 15; /* number of extra bits */ - /* we have two fast-path loads: 10+10 + 15+5 + 15 = 55, - but we may need to refill here in the worst case */ - if (bits < op) { -#ifdef INFLATE_CHUNK_READ_64LE - REFILL(); -#else - hold += (unsigned long)(*in++) << bits; - bits += 8; - if (bits < op) { - hold += (unsigned long)(*in++) << bits; - bits += 8; - } -#endif - } - dist += (unsigned)hold & ((1U << op) - 1); -#ifdef INFLATE_STRICT - if (dist > dmax) { - strm->msg = (z_const char *)"invalid distance too far back"; - state->mode = BAD; - break; - } -#endif - hold >>= op; - bits -= op; - Tracevv((stderr, "inflate: distance %u\n", dist)); - op = (unsigned)(out - beg); /* max distance in output */ - if (dist > op) { /* see if copy from window */ - op = dist - op; /* distance back in window */ - if (op > whave) { - if (state->sane) { - strm->msg = - (z_const char *)"invalid distance too far back"; - state->mode = BAD; - break; - } -#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR - if (len <= op - whave) { - do { - *out++ = 0; - } while (--len); - continue; - } - len -= op - whave; - do { - *out++ = 0; - } while (--op > whave); - if (op == 0) { - from = out - dist; - do { - *out++ = *from++; - } while (--len); - continue; - } -#endif - } - from = window; - if (wnext >= op) { /* contiguous in window */ - from += wnext - op; - } - else { /* wrap around window */ - op -= wnext; - from += wsize - op; - if (op < len) { /* some from end of window */ - len -= op; - out = chunkcopy_safe(out, from, op, limit); - from = window; /* more from start of window */ - op = wnext; - /* This (rare) case can create a situation where - the first chunkcopy below must be checked. - */ - } - } - if (op < len) { /* still need some from output */ - out = chunkcopy_safe(out, from, op, limit); - len -= op; - /* When dist is small the amount of data that can be - copied from the window is also small, and progress - towards the dangerous end of the output buffer is - also small. This means that for trivial memsets and - for chunkunroll_relaxed() a safety check is - unnecessary. However, these conditions may not be - entered at all, and in that case it's possible that - the main copy is near the end. - */ - out = chunkunroll_relaxed(out, &dist, &len); - out = chunkcopy_safe_ugly(out, dist, len, limit); - } else { - /* from points to window, so there is no risk of - overlapping pointers requiring memset-like behaviour - */ - out = chunkcopy_safe(out, from, len, limit); - } - } - else { - /* Whole reference is in range of current output. No - range checks are necessary because we start with room - for at least 258 bytes of output, so unroll and roundoff - operations can write beyond `out+len` so long as they - stay within 258 bytes of `out`. - */ - out = chunkcopy_lapped_relaxed(out, dist, len); - } - } - else if ((op & 64) == 0) { /* 2nd level distance code */ - here = dcode + here->val + (hold & ((1U << op) - 1)); - goto dodist; - } - else { - strm->msg = (z_const char *)"invalid distance code"; - state->mode = BAD; - break; - } - } - else if ((op & 64) == 0) { /* 2nd level length code */ - here = lcode + here->val + (hold & ((1U << op) - 1)); - goto dolen; - } - else if (op & 32) { /* end-of-block */ - Tracevv((stderr, "inflate: end of block\n")); - state->mode = TYPE; - break; - } - else { - strm->msg = (z_const char *)"invalid literal/length code"; - state->mode = BAD; - break; - } - } while (in < last && out < end); - - /* return unused bytes (on entry, bits < 8, so in won't go too far back) */ - len = bits >> 3; - in -= len; - bits -= len << 3; - hold &= (1U << bits) - 1; - - /* update state and return */ - strm->next_in = in; - strm->next_out = out; - strm->avail_in = (unsigned)(in < last ? - (INFLATE_FAST_MIN_INPUT - 1) + (last - in) : - (INFLATE_FAST_MIN_INPUT - 1) - (in - last)); - strm->avail_out = (unsigned)(out < end ? - (INFLATE_FAST_MIN_OUTPUT - 1) + (end - out) : - (INFLATE_FAST_MIN_OUTPUT - 1) - (out - end)); - state->hold = hold; - state->bits = bits; - - Assert((state->hold >> state->bits) == 0, "invalid input data state"); -} - -/* - inflate_fast() speedups that turned out slower (on a PowerPC G3 750CXe): - - Using bit fields for code structure - - Different op definition to avoid & for extra bits (do & for table bits) - - Three separate decoding do-loops for direct, window, and wnext == 0 - - Special case for distance > 1 copies to do overlapped load and store copy - - Explicit branch predictions (based on measured branch probabilities) - - Deferring match copy and interspersed it with decoding subsequent codes - - Swapping literal/length else - - Swapping window/direct else - - Larger unrolled copy loops (three is about right) - - Moving len -= 3 statement into middle of loop - */ - -#endif /* !ASMINF */ diff --git a/packages/runtime/vendor/zlib/contrib/optimizations/inffast_chunk.h b/packages/runtime/vendor/zlib/contrib/optimizations/inffast_chunk.h deleted file mode 100644 index e75ee5e91..000000000 --- a/packages/runtime/vendor/zlib/contrib/optimizations/inffast_chunk.h +++ /dev/null @@ -1,42 +0,0 @@ -/* inffast_chunk.h -- header to use inffast_chunk.c - * Copyright (C) 1995-2003, 2010 Mark Adler - * Copyright (C) 2017 ARM, Inc. - * Copyright 2023 The Chromium Authors - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -#include "inffast.h" - -/* INFLATE_FAST_MIN_INPUT: - The minimum number of input bytes needed so that we can safely call - inflate_fast() with only one up-front bounds check. One - length/distance code pair (15 bits for the length code, 5 bits for length - extra, 15 bits for the distance code, 13 bits for distance extra) requires - reading up to 48 input bits. Additionally, in the same iteraction, we may - decode two literals from the root-table (requiring MIN_OUTPUT = 258 + 2). - - Each root-table entry is up to 10 bits, for a total of 68 input bits each - iteraction. - - The refill variant reads 8 bytes from the buffer at a time, and advances - the input pointer by up to 7 bytes, ensuring there are at least 56-bits - available in the bit-buffer. The technique was documented by Fabian Giesen - on his blog as variant 4 in the article 'Reading bits in far too many ways': - https://fgiesen.wordpress.com/2018/02/20/ - - In the worst case, we may refill twice in the same iteraction, requiring - MIN_INPUT = 8 + 7. -*/ -#ifdef INFLATE_CHUNK_READ_64LE -#undef INFLATE_FAST_MIN_INPUT -#define INFLATE_FAST_MIN_INPUT 15 -#undef INFLATE_FAST_MIN_OUTPUT -#define INFLATE_FAST_MIN_OUTPUT 260 -#endif - -void ZLIB_INTERNAL inflate_fast_chunk_(z_streamp strm, unsigned start); diff --git a/packages/runtime/vendor/zlib/contrib/optimizations/inflate.c b/packages/runtime/vendor/zlib/contrib/optimizations/inflate.c deleted file mode 100644 index 3268320e9..000000000 --- a/packages/runtime/vendor/zlib/contrib/optimizations/inflate.c +++ /dev/null @@ -1,1562 +0,0 @@ -/* inflate.c -- zlib decompression - * Copyright (C) 1995-2022 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* - * Change history: - * - * 1.2.beta0 24 Nov 2002 - * - First version -- complete rewrite of inflate to simplify code, avoid - * creation of window when not needed, minimize use of window when it is - * needed, make inffast.c even faster, implement gzip decoding, and to - * improve code readability and style over the previous zlib inflate code - * - * 1.2.beta1 25 Nov 2002 - * - Use pointers for available input and output checking in inffast.c - * - Remove input and output counters in inffast.c - * - Change inffast.c entry and loop from avail_in >= 7 to >= 6 - * - Remove unnecessary second byte pull from length extra in inffast.c - * - Unroll direct copy to three copies per loop in inffast.c - * - * 1.2.beta2 4 Dec 2002 - * - Change external routine names to reduce potential conflicts - * - Correct filename to inffixed.h for fixed tables in inflate.c - * - Make hbuf[] unsigned char to match parameter type in inflate.c - * - Change strm->next_out[-state->offset] to *(strm->next_out - state->offset) - * to avoid negation problem on Alphas (64 bit) in inflate.c - * - * 1.2.beta3 22 Dec 2002 - * - Add comments on state->bits assertion in inffast.c - * - Add comments on op field in inftrees.h - * - Fix bug in reuse of allocated window after inflateReset() - * - Remove bit fields--back to byte structure for speed - * - Remove distance extra == 0 check in inflate_fast()--only helps for lengths - * - Change post-increments to pre-increments in inflate_fast(), PPC biased? - * - Add compile time option, POSTINC, to use post-increments instead (Intel?) - * - Make MATCH copy in inflate() much faster for when inflate_fast() not used - * - Use local copies of stream next and avail values, as well as local bit - * buffer and bit count in inflate()--for speed when inflate_fast() not used - * - * 1.2.beta4 1 Jan 2003 - * - Split ptr - 257 statements in inflate_table() to avoid compiler warnings - * - Move a comment on output buffer sizes from inffast.c to inflate.c - * - Add comments in inffast.c to introduce the inflate_fast() routine - * - Rearrange window copies in inflate_fast() for speed and simplification - * - Unroll last copy for window match in inflate_fast() - * - Use local copies of window variables in inflate_fast() for speed - * - Pull out common wnext == 0 case for speed in inflate_fast() - * - Make op and len in inflate_fast() unsigned for consistency - * - Add FAR to lcode and dcode declarations in inflate_fast() - * - Simplified bad distance check in inflate_fast() - * - Added inflateBackInit(), inflateBack(), and inflateBackEnd() in new - * source file infback.c to provide a call-back interface to inflate for - * programs like gzip and unzip -- uses window as output buffer to avoid - * window copying - * - * 1.2.beta5 1 Jan 2003 - * - Improved inflateBack() interface to allow the caller to provide initial - * input in strm. - * - Fixed stored blocks bug in inflateBack() - * - * 1.2.beta6 4 Jan 2003 - * - Added comments in inffast.c on effectiveness of POSTINC - * - Typecasting all around to reduce compiler warnings - * - Changed loops from while (1) or do {} while (1) to for (;;), again to - * make compilers happy - * - Changed type of window in inflateBackInit() to unsigned char * - * - * 1.2.beta7 27 Jan 2003 - * - Changed many types to unsigned or unsigned short to avoid warnings - * - Added inflateCopy() function - * - * 1.2.0 9 Mar 2003 - * - Changed inflateBack() interface to provide separate opaque descriptors - * for the in() and out() functions - * - Changed inflateBack() argument and in_func typedef to swap the length - * and buffer address return values for the input function - * - Check next_in and next_out for Z_NULL on entry to inflate() - * - * The history for versions after 1.2.0 are in ChangeLog in zlib distribution. - */ - -#include "zutil.h" -#include "inftrees.h" -#include "inflate.h" -#include "contrib/optimizations/inffast_chunk.h" -#include "contrib/optimizations/chunkcopy.h" - -#ifdef MAKEFIXED -# ifndef BUILDFIXED -# define BUILDFIXED -# endif -#endif - -local int inflateStateCheck(z_streamp strm) { - struct inflate_state FAR *state; - if (strm == Z_NULL || - strm->zalloc == (alloc_func)0 || strm->zfree == (free_func)0) - return 1; - state = (struct inflate_state FAR *)strm->state; - if (state == Z_NULL || state->strm != strm || - state->mode < HEAD || state->mode > SYNC) - return 1; - return 0; -} - -int ZEXPORT inflateResetKeep(z_streamp strm) { - struct inflate_state FAR *state; - - if (inflateStateCheck(strm)) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - strm->total_in = strm->total_out = state->total = 0; - strm->msg = Z_NULL; - if (state->wrap) /* to support ill-conceived Java test suite */ - strm->adler = state->wrap & 1; - state->mode = HEAD; - state->last = 0; - state->havedict = 0; - state->flags = -1; - state->dmax = 32768U; - state->head = Z_NULL; - state->hold = 0; - state->bits = 0; - state->lencode = state->distcode = state->next = state->codes; - state->sane = 1; - state->back = -1; - Tracev((stderr, "inflate: reset\n")); - return Z_OK; -} - -int ZEXPORT inflateReset(z_streamp strm) { - struct inflate_state FAR *state; - - if (inflateStateCheck(strm)) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - state->wsize = 0; - state->whave = 0; - state->wnext = 0; - return inflateResetKeep(strm); -} - -int ZEXPORT inflateReset2(z_streamp strm, int windowBits) { - int wrap; - struct inflate_state FAR *state; - - /* get the state */ - if (inflateStateCheck(strm)) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - - /* extract wrap request from windowBits parameter */ - if (windowBits < 0) { - if (windowBits < -15) - return Z_STREAM_ERROR; - wrap = 0; - windowBits = -windowBits; - } - else { - wrap = (windowBits >> 4) + 5; -#ifdef GUNZIP - if (windowBits < 48) - windowBits &= 15; -#endif - } - - /* set number of window bits, free window if different */ - if (windowBits && (windowBits < 8 || windowBits > 15)) - return Z_STREAM_ERROR; - if (state->window != Z_NULL && state->wbits != (unsigned)windowBits) { - ZFREE(strm, state->window); - state->window = Z_NULL; - } - - /* update state and reset the rest of it */ - state->wrap = wrap; - state->wbits = (unsigned)windowBits; - return inflateReset(strm); -} - -int ZEXPORT inflateInit2_(z_streamp strm, int windowBits, - const char *version, int stream_size) { - int ret; - struct inflate_state FAR *state; - - if (version == Z_NULL || version[0] != ZLIB_VERSION[0] || - stream_size != (int)(sizeof(z_stream))) - return Z_VERSION_ERROR; - if (strm == Z_NULL) return Z_STREAM_ERROR; - strm->msg = Z_NULL; /* in case we return an error */ - if (strm->zalloc == (alloc_func)0) { -#ifdef Z_SOLO - return Z_STREAM_ERROR; -#else - strm->zalloc = zcalloc; - strm->opaque = (voidpf)0; -#endif - } - if (strm->zfree == (free_func)0) -#ifdef Z_SOLO - return Z_STREAM_ERROR; -#else - strm->zfree = zcfree; -#endif - state = (struct inflate_state FAR *) - ZALLOC(strm, 1, sizeof(struct inflate_state)); - if (state == Z_NULL) return Z_MEM_ERROR; - Tracev((stderr, "inflate: allocated\n")); - strm->state = (struct internal_state FAR *)state; - state->strm = strm; - state->window = Z_NULL; - state->mode = HEAD; /* to pass state test in inflateReset2() */ - state->check = 1L; /* 1L is the result of adler32() zero length data */ - ret = inflateReset2(strm, windowBits); - if (ret != Z_OK) { - ZFREE(strm, state); - strm->state = Z_NULL; - } - return ret; -} - -int ZEXPORT inflateInit_(z_streamp strm, const char *version, - int stream_size) { - return inflateInit2_(strm, DEF_WBITS, version, stream_size); -} - -int ZEXPORT inflatePrime(z_streamp strm, int bits, int value) { - struct inflate_state FAR *state; - - if (inflateStateCheck(strm)) return Z_STREAM_ERROR; - if (bits == 0) - return Z_OK; - state = (struct inflate_state FAR *)strm->state; - if (bits < 0) { - state->hold = 0; - state->bits = 0; - return Z_OK; - } - if (bits > 16 || state->bits + (uInt)bits > 32) return Z_STREAM_ERROR; - value &= (1L << bits) - 1; - state->hold += (unsigned)value << state->bits; - state->bits += (uInt)bits; - return Z_OK; -} - -/* - Return state with length and distance decoding tables and index sizes set to - fixed code decoding. Normally this returns fixed tables from inffixed.h. - If BUILDFIXED is defined, then instead this routine builds the tables the - first time it's called, and returns those tables the first time and - thereafter. This reduces the size of the code by about 2K bytes, in - exchange for a little execution time. However, BUILDFIXED should not be - used for threaded applications, since the rewriting of the tables and virgin - may not be thread-safe. - */ -local void fixedtables(struct inflate_state FAR *state) { -#ifdef BUILDFIXED - static int virgin = 1; - static code *lenfix, *distfix; - static code fixed[544]; - - /* build fixed huffman tables if first call (may not be thread safe) */ - if (virgin) { - unsigned sym, bits; - static code *next; - - /* literal/length table */ - sym = 0; - while (sym < 144) state->lens[sym++] = 8; - while (sym < 256) state->lens[sym++] = 9; - while (sym < 280) state->lens[sym++] = 7; - while (sym < 288) state->lens[sym++] = 8; - next = fixed; - lenfix = next; - bits = 9; - inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work); - - /* distance table */ - sym = 0; - while (sym < 32) state->lens[sym++] = 5; - distfix = next; - bits = 5; - inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work); - - /* do this just once */ - virgin = 0; - } -#else /* !BUILDFIXED */ -# include "inffixed.h" -#endif /* BUILDFIXED */ - state->lencode = lenfix; - state->lenbits = 9; - state->distcode = distfix; - state->distbits = 5; -} - -#ifdef MAKEFIXED -#include - -/* - Write out the inffixed.h that is #include'd above. Defining MAKEFIXED also - defines BUILDFIXED, so the tables are built on the fly. makefixed() writes - those tables to stdout, which would be piped to inffixed.h. A small program - can simply call makefixed to do this: - - void makefixed(void); - - int main(void) - { - makefixed(); - return 0; - } - - Then that can be linked with zlib built with MAKEFIXED defined and run: - - a.out > inffixed.h - */ -void makefixed(void) -{ - unsigned low, size; - struct inflate_state state; - - fixedtables(&state); - puts(" /* inffixed.h -- table for decoding fixed codes"); - puts(" * Generated automatically by makefixed()."); - puts(" */"); - puts(""); - puts(" /* WARNING: this file should *not* be used by applications."); - puts(" It is part of the implementation of this library and is"); - puts(" subject to change. Applications should only use zlib.h."); - puts(" */"); - puts(""); - size = 1U << 9; - printf(" static const code lenfix[%u] = {", size); - low = 0; - for (;;) { - if ((low % 7) == 0) printf("\n "); - printf("{%u,%u,%d}", (low & 127) == 99 ? 64 : state.lencode[low].op, - state.lencode[low].bits, state.lencode[low].val); - if (++low == size) break; - putchar(','); - } - puts("\n };"); - size = 1U << 5; - printf("\n static const code distfix[%u] = {", size); - low = 0; - for (;;) { - if ((low % 6) == 0) printf("\n "); - printf("{%u,%u,%d}", state.distcode[low].op, state.distcode[low].bits, - state.distcode[low].val); - if (++low == size) break; - putchar(','); - } - puts("\n };"); -} -#endif /* MAKEFIXED */ - -/* - Update the window with the last wsize (normally 32K) bytes written before - returning. If window does not exist yet, create it. This is only called - when a window is already in use, or when output has been written during this - inflate call, but the end of the deflate stream has not been reached yet. - It is also called to create a window for dictionary data when a dictionary - is loaded. - - Providing output buffers larger than 32K to inflate() should provide a speed - advantage, since only the last 32K of output is copied to the sliding window - upon return from inflate(), and since all distances after the first 32K of - output will fall in the output data, making match copies simpler and faster. - The advantage may be dependent on the size of the processor's data caches. - */ -local int updatewindow(z_streamp strm, const Bytef *end, unsigned copy) { - struct inflate_state FAR *state; - unsigned dist; - - state = (struct inflate_state FAR *)strm->state; - - /* if it hasn't been done already, allocate space for the window */ - if (state->window == Z_NULL) { - unsigned wsize = 1U << state->wbits; - state->window = (unsigned char FAR *) - ZALLOC(strm, wsize + CHUNKCOPY_CHUNK_SIZE, - sizeof(unsigned char)); - if (state->window == Z_NULL) return 1; -#ifdef INFLATE_CLEAR_UNUSED_UNDEFINED - /* Copies from the overflow portion of this buffer are undefined and - may cause analysis tools to raise a warning if we don't initialize - it. However, this undefined data overwrites other undefined data - and is subsequently either overwritten or left deliberately - undefined at the end of decode; so there's really no point. - */ - zmemzero(state->window + wsize, CHUNKCOPY_CHUNK_SIZE); -#endif - } - - /* if window not in use yet, initialize */ - if (state->wsize == 0) { - state->wsize = 1U << state->wbits; - state->wnext = 0; - state->whave = 0; - } - - /* copy state->wsize or less output bytes into the circular window */ - if (copy >= state->wsize) { - zmemcpy(state->window, end - state->wsize, state->wsize); - state->wnext = 0; - state->whave = state->wsize; - } - else { - dist = state->wsize - state->wnext; - if (dist > copy) dist = copy; - zmemcpy(state->window + state->wnext, end - copy, dist); - copy -= dist; - if (copy) { - zmemcpy(state->window, end - copy, copy); - state->wnext = copy; - state->whave = state->wsize; - } - else { - state->wnext += dist; - if (state->wnext == state->wsize) state->wnext = 0; - if (state->whave < state->wsize) state->whave += dist; - } - } - return 0; -} - -/* Macros for inflate(): */ - -/* check function to use adler32() for zlib or crc32() for gzip */ -#ifdef GUNZIP -# define UPDATE_CHECK(check, buf, len) \ - (state->flags ? crc32(check, buf, len) : adler32(check, buf, len)) -#else -# define UPDATE_CHECK(check, buf, len) adler32(check, buf, len) -#endif - -/* check macros for header crc */ -#ifdef GUNZIP -# define CRC2(check, word) \ - do { \ - hbuf[0] = (unsigned char)(word); \ - hbuf[1] = (unsigned char)((word) >> 8); \ - check = crc32(check, hbuf, 2); \ - } while (0) - -# define CRC4(check, word) \ - do { \ - hbuf[0] = (unsigned char)(word); \ - hbuf[1] = (unsigned char)((word) >> 8); \ - hbuf[2] = (unsigned char)((word) >> 16); \ - hbuf[3] = (unsigned char)((word) >> 24); \ - check = crc32(check, hbuf, 4); \ - } while (0) -#endif - -/* Load registers with state in inflate() for speed */ -#define LOAD() \ - do { \ - put = strm->next_out; \ - left = strm->avail_out; \ - next = strm->next_in; \ - have = strm->avail_in; \ - hold = state->hold; \ - bits = state->bits; \ - } while (0) - -/* Restore state from registers in inflate() */ -#define RESTORE() \ - do { \ - strm->next_out = put; \ - strm->avail_out = left; \ - strm->next_in = next; \ - strm->avail_in = have; \ - state->hold = hold; \ - state->bits = bits; \ - } while (0) - -/* Clear the input bit accumulator */ -#define INITBITS() \ - do { \ - hold = 0; \ - bits = 0; \ - } while (0) - -/* Get a byte of input into the bit accumulator, or return from inflate() - if there is no input available. */ -#define PULLBYTE() \ - do { \ - if (have == 0) goto inf_leave; \ - have--; \ - hold += (unsigned long)(*next++) << bits; \ - bits += 8; \ - } while (0) - -/* Assure that there are at least n bits in the bit accumulator. If there is - not enough available input to do that, then return from inflate(). */ -#define NEEDBITS(n) \ - do { \ - while (bits < (unsigned)(n)) \ - PULLBYTE(); \ - } while (0) - -/* Return the low n bits of the bit accumulator (n < 16) */ -#define BITS(n) \ - ((unsigned)hold & ((1U << (n)) - 1)) - -/* Remove n bits from the bit accumulator */ -#define DROPBITS(n) \ - do { \ - hold >>= (n); \ - bits -= (unsigned)(n); \ - } while (0) - -/* Remove zero to seven bits as needed to go to a byte boundary */ -#define BYTEBITS() \ - do { \ - hold >>= bits & 7; \ - bits -= bits & 7; \ - } while (0) - -/* - inflate() uses a state machine to process as much input data and generate as - much output data as possible before returning. The state machine is - structured roughly as follows: - - for (;;) switch (state) { - ... - case STATEn: - if (not enough input data or output space to make progress) - return; - ... make progress ... - state = STATEm; - break; - ... - } - - so when inflate() is called again, the same case is attempted again, and - if the appropriate resources are provided, the machine proceeds to the - next state. The NEEDBITS() macro is usually the way the state evaluates - whether it can proceed or should return. NEEDBITS() does the return if - the requested bits are not available. The typical use of the BITS macros - is: - - NEEDBITS(n); - ... do something with BITS(n) ... - DROPBITS(n); - - where NEEDBITS(n) either returns from inflate() if there isn't enough - input left to load n bits into the accumulator, or it continues. BITS(n) - gives the low n bits in the accumulator. When done, DROPBITS(n) drops - the low n bits off the accumulator. INITBITS() clears the accumulator - and sets the number of available bits to zero. BYTEBITS() discards just - enough bits to put the accumulator on a byte boundary. After BYTEBITS() - and a NEEDBITS(8), then BITS(8) would return the next byte in the stream. - - NEEDBITS(n) uses PULLBYTE() to get an available byte of input, or to return - if there is no input available. The decoding of variable length codes uses - PULLBYTE() directly in order to pull just enough bytes to decode the next - code, and no more. - - Some states loop until they get enough input, making sure that enough - state information is maintained to continue the loop where it left off - if NEEDBITS() returns in the loop. For example, want, need, and keep - would all have to actually be part of the saved state in case NEEDBITS() - returns: - - case STATEw: - while (want < need) { - NEEDBITS(n); - keep[want++] = BITS(n); - DROPBITS(n); - } - state = STATEx; - case STATEx: - - As shown above, if the next state is also the next case, then the break - is omitted. - - A state may also return if there is not enough output space available to - complete that state. Those states are copying stored data, writing a - literal byte, and copying a matching string. - - When returning, a "goto inf_leave" is used to update the total counters, - update the check value, and determine whether any progress has been made - during that inflate() call in order to return the proper return code. - Progress is defined as a change in either strm->avail_in or strm->avail_out. - When there is a window, goto inf_leave will update the window with the last - output written. If a goto inf_leave occurs in the middle of decompression - and there is no window currently, goto inf_leave will create one and copy - output to the window for the next call of inflate(). - - In this implementation, the flush parameter of inflate() only affects the - return code (per zlib.h). inflate() always writes as much as possible to - strm->next_out, given the space available and the provided input--the effect - documented in zlib.h of Z_SYNC_FLUSH. Furthermore, inflate() always defers - the allocation of and copying into a sliding window until necessary, which - provides the effect documented in zlib.h for Z_FINISH when the entire input - stream available. So the only thing the flush parameter actually does is: - when flush is set to Z_FINISH, inflate() cannot return Z_OK. Instead it - will return Z_BUF_ERROR if it has not reached the end of the stream. - */ - -int ZEXPORT inflate(z_streamp strm, int flush) { - struct inflate_state FAR *state; - z_const unsigned char FAR *next; /* next input */ - unsigned char FAR *put; /* next output */ - unsigned have, left; /* available input and output */ - unsigned long hold; /* bit buffer */ - unsigned bits; /* bits in bit buffer */ - unsigned in, out; /* save starting available input and output */ - unsigned copy; /* number of stored or match bytes to copy */ - unsigned char FAR *from; /* where to copy match bytes from */ - code here; /* current decoding table entry */ - code last; /* parent table entry */ - unsigned len; /* length to copy for repeats, bits to drop */ - int ret; /* return code */ -#ifdef GUNZIP - unsigned char hbuf[4]; /* buffer for gzip header crc calculation */ -#endif - static const unsigned short order[19] = /* permutation of code lengths */ - {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15}; - - if (inflateStateCheck(strm) || strm->next_out == Z_NULL || - (strm->next_in == Z_NULL && strm->avail_in != 0)) - return Z_STREAM_ERROR; - - state = (struct inflate_state FAR *)strm->state; - if (state->mode == TYPE) state->mode = TYPEDO; /* skip check */ - LOAD(); - in = have; - out = left; - ret = Z_OK; - for (;;) - switch (state->mode) { - case HEAD: - if (state->wrap == 0) { - state->mode = TYPEDO; - break; - } - NEEDBITS(16); -#ifdef GUNZIP - if ((state->wrap & 2) && hold == 0x8b1f) { /* gzip header */ - if (state->wbits == 0) - state->wbits = 15; - state->check = crc32(0L, Z_NULL, 0); - CRC2(state->check, hold); - INITBITS(); - state->mode = FLAGS; - break; - } - if (state->head != Z_NULL) - state->head->done = -1; - if (!(state->wrap & 1) || /* check if zlib header allowed */ -#else - if ( -#endif - ((BITS(8) << 8) + (hold >> 8)) % 31) { - strm->msg = (char *)"incorrect header check"; - state->mode = BAD; - break; - } - if (BITS(4) != Z_DEFLATED) { - strm->msg = (char *)"unknown compression method"; - state->mode = BAD; - break; - } - DROPBITS(4); - len = BITS(4) + 8; - if (state->wbits == 0) - state->wbits = len; - if (len > 15 || len > state->wbits) { - strm->msg = (char *)"invalid window size"; - state->mode = BAD; - break; - } - state->dmax = 1U << len; - state->flags = 0; /* indicate zlib header */ - Tracev((stderr, "inflate: zlib header ok\n")); - strm->adler = state->check = adler32(0L, Z_NULL, 0); - state->mode = hold & 0x200 ? DICTID : TYPE; - INITBITS(); - break; -#ifdef GUNZIP - case FLAGS: - NEEDBITS(16); - state->flags = (int)(hold); - if ((state->flags & 0xff) != Z_DEFLATED) { - strm->msg = (char *)"unknown compression method"; - state->mode = BAD; - break; - } - if (state->flags & 0xe000) { - strm->msg = (char *)"unknown header flags set"; - state->mode = BAD; - break; - } - if (state->head != Z_NULL) - state->head->text = (int)((hold >> 8) & 1); - if ((state->flags & 0x0200) && (state->wrap & 4)) - CRC2(state->check, hold); - INITBITS(); - state->mode = TIME; - /* fallthrough */ - case TIME: - NEEDBITS(32); - if (state->head != Z_NULL) - state->head->time = hold; - if ((state->flags & 0x0200) && (state->wrap & 4)) - CRC4(state->check, hold); - INITBITS(); - state->mode = OS; - /* fallthrough */ - case OS: - NEEDBITS(16); - if (state->head != Z_NULL) { - state->head->xflags = (int)(hold & 0xff); - state->head->os = (int)(hold >> 8); - } - if ((state->flags & 0x0200) && (state->wrap & 4)) - CRC2(state->check, hold); - INITBITS(); - state->mode = EXLEN; - /* fallthrough */ - case EXLEN: - if (state->flags & 0x0400) { - NEEDBITS(16); - state->length = (unsigned)(hold); - if (state->head != Z_NULL) - state->head->extra_len = (unsigned)hold; - if ((state->flags & 0x0200) && (state->wrap & 4)) - CRC2(state->check, hold); - INITBITS(); - } - else if (state->head != Z_NULL) - state->head->extra = Z_NULL; - state->mode = EXTRA; - /* fallthrough */ - case EXTRA: - if (state->flags & 0x0400) { - copy = state->length; - if (copy > have) copy = have; - if (copy) { - if (state->head != Z_NULL && - state->head->extra != Z_NULL && - (len = state->head->extra_len - state->length) < - state->head->extra_max) { - zmemcpy(state->head->extra + len, next, - len + copy > state->head->extra_max ? - state->head->extra_max - len : copy); - } - if ((state->flags & 0x0200) && (state->wrap & 4)) - state->check = crc32(state->check, next, copy); - have -= copy; - next += copy; - state->length -= copy; - } - if (state->length) goto inf_leave; - } - state->length = 0; - state->mode = NAME; - /* fallthrough */ - case NAME: - if (state->flags & 0x0800) { - if (have == 0) goto inf_leave; - copy = 0; - do { - len = (unsigned)(next[copy++]); - if (state->head != Z_NULL && - state->head->name != Z_NULL && - state->length < state->head->name_max) - state->head->name[state->length++] = (Bytef)len; - } while (len && copy < have); - if ((state->flags & 0x0200) && (state->wrap & 4)) - state->check = crc32(state->check, next, copy); - have -= copy; - next += copy; - if (len) goto inf_leave; - } - else if (state->head != Z_NULL) - state->head->name = Z_NULL; - state->length = 0; - state->mode = COMMENT; - /* fallthrough */ - case COMMENT: - if (state->flags & 0x1000) { - if (have == 0) goto inf_leave; - copy = 0; - do { - len = (unsigned)(next[copy++]); - if (state->head != Z_NULL && - state->head->comment != Z_NULL && - state->length < state->head->comm_max) - state->head->comment[state->length++] = (Bytef)len; - } while (len && copy < have); - if ((state->flags & 0x0200) && (state->wrap & 4)) - state->check = crc32(state->check, next, copy); - have -= copy; - next += copy; - if (len) goto inf_leave; - } - else if (state->head != Z_NULL) - state->head->comment = Z_NULL; - state->mode = HCRC; - /* fallthrough */ - case HCRC: - if (state->flags & 0x0200) { - NEEDBITS(16); - if ((state->wrap & 4) && hold != (state->check & 0xffff)) { - strm->msg = (char *)"header crc mismatch"; - state->mode = BAD; - break; - } - INITBITS(); - } - if (state->head != Z_NULL) { - state->head->hcrc = (int)((state->flags >> 9) & 1); - state->head->done = 1; - } - strm->adler = state->check = crc32(0L, Z_NULL, 0); - state->mode = TYPE; - break; -#endif - case DICTID: - NEEDBITS(32); - strm->adler = state->check = ZSWAP32(hold); - INITBITS(); - state->mode = DICT; - /* fallthrough */ - case DICT: - if (state->havedict == 0) { - RESTORE(); - return Z_NEED_DICT; - } - strm->adler = state->check = adler32(0L, Z_NULL, 0); - state->mode = TYPE; - /* fallthrough */ - case TYPE: - if (flush == Z_BLOCK || flush == Z_TREES) goto inf_leave; - /* fallthrough */ - case TYPEDO: - if (state->last) { - BYTEBITS(); - state->mode = CHECK; - break; - } - NEEDBITS(3); - state->last = BITS(1); - DROPBITS(1); - switch (BITS(2)) { - case 0: /* stored block */ - Tracev((stderr, "inflate: stored block%s\n", - state->last ? " (last)" : "")); - state->mode = STORED; - break; - case 1: /* fixed block */ - fixedtables(state); - Tracev((stderr, "inflate: fixed codes block%s\n", - state->last ? " (last)" : "")); - state->mode = LEN_; /* decode codes */ - if (flush == Z_TREES) { - DROPBITS(2); - goto inf_leave; - } - break; - case 2: /* dynamic block */ - Tracev((stderr, "inflate: dynamic codes block%s\n", - state->last ? " (last)" : "")); - state->mode = TABLE; - break; - case 3: - strm->msg = (char *)"invalid block type"; - state->mode = BAD; - } - DROPBITS(2); - break; - case STORED: - BYTEBITS(); /* go to byte boundary */ - NEEDBITS(32); - if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) { - strm->msg = (char *)"invalid stored block lengths"; - state->mode = BAD; - break; - } - state->length = (unsigned)hold & 0xffff; - Tracev((stderr, "inflate: stored length %u\n", - state->length)); - INITBITS(); - state->mode = COPY_; - if (flush == Z_TREES) goto inf_leave; - /* fallthrough */ - case COPY_: - state->mode = COPY; - /* fallthrough */ - case COPY: - copy = state->length; - if (copy) { - if (copy > have) copy = have; - if (copy > left) copy = left; - if (copy == 0) goto inf_leave; - zmemcpy(put, next, copy); - have -= copy; - next += copy; - left -= copy; - put += copy; - state->length -= copy; - break; - } - Tracev((stderr, "inflate: stored end\n")); - state->mode = TYPE; - break; - case TABLE: - NEEDBITS(14); - state->nlen = BITS(5) + 257; - DROPBITS(5); - state->ndist = BITS(5) + 1; - DROPBITS(5); - state->ncode = BITS(4) + 4; - DROPBITS(4); -#ifndef PKZIP_BUG_WORKAROUND - if (state->nlen > 286 || state->ndist > 30) { - strm->msg = (char *)"too many length or distance symbols"; - state->mode = BAD; - break; - } -#endif - Tracev((stderr, "inflate: table sizes ok\n")); - state->have = 0; - state->mode = LENLENS; - /* fallthrough */ - case LENLENS: - while (state->have < state->ncode) { - NEEDBITS(3); - state->lens[order[state->have++]] = (unsigned short)BITS(3); - DROPBITS(3); - } - while (state->have < 19) - state->lens[order[state->have++]] = 0; - state->next = state->codes; - state->lencode = state->distcode = (const code FAR *)(state->next); - state->lenbits = 7; - ret = inflate_table(CODES, state->lens, 19, &(state->next), - &(state->lenbits), state->work); - if (ret) { - strm->msg = (char *)"invalid code lengths set"; - state->mode = BAD; - break; - } - Tracev((stderr, "inflate: code lengths ok\n")); - state->have = 0; - state->mode = CODELENS; - /* fallthrough */ - case CODELENS: - while (state->have < state->nlen + state->ndist) { - for (;;) { - here = state->lencode[BITS(state->lenbits)]; - if ((unsigned)(here.bits) <= bits) break; - PULLBYTE(); - } - if (here.val < 16) { - DROPBITS(here.bits); - state->lens[state->have++] = here.val; - } - else { - if (here.val == 16) { - NEEDBITS(here.bits + 2); - DROPBITS(here.bits); - if (state->have == 0) { - strm->msg = (char *)"invalid bit length repeat"; - state->mode = BAD; - break; - } - len = state->lens[state->have - 1]; - copy = 3 + BITS(2); - DROPBITS(2); - } - else if (here.val == 17) { - NEEDBITS(here.bits + 3); - DROPBITS(here.bits); - len = 0; - copy = 3 + BITS(3); - DROPBITS(3); - } - else { - NEEDBITS(here.bits + 7); - DROPBITS(here.bits); - len = 0; - copy = 11 + BITS(7); - DROPBITS(7); - } - if (state->have + copy > state->nlen + state->ndist) { - strm->msg = (char *)"invalid bit length repeat"; - state->mode = BAD; - break; - } - while (copy--) - state->lens[state->have++] = (unsigned short)len; - } - } - - /* handle error breaks in while */ - if (state->mode == BAD) break; - - /* check for end-of-block code (better have one) */ - if (state->lens[256] == 0) { - strm->msg = (char *)"invalid code -- missing end-of-block"; - state->mode = BAD; - break; - } - - /* build code tables -- note: do not change the lenbits or distbits - values here (10 and 9) without reading the comments in inftrees.h - concerning the ENOUGH constants, which depend on those values */ - state->next = state->codes; - state->lencode = (const code FAR *)(state->next); - state->lenbits = 10; - ret = inflate_table(LENS, state->lens, state->nlen, &(state->next), - &(state->lenbits), state->work); - if (ret) { - strm->msg = (char *)"invalid literal/lengths set"; - state->mode = BAD; - break; - } - state->distcode = (const code FAR *)(state->next); - state->distbits = 9; - ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist, - &(state->next), &(state->distbits), state->work); - if (ret) { - strm->msg = (char *)"invalid distances set"; - state->mode = BAD; - break; - } - Tracev((stderr, "inflate: codes ok\n")); - state->mode = LEN_; - if (flush == Z_TREES) goto inf_leave; - /* fallthrough */ - case LEN_: - state->mode = LEN; - /* fallthrough */ - case LEN: - if (have >= INFLATE_FAST_MIN_INPUT && - left >= INFLATE_FAST_MIN_OUTPUT) { - RESTORE(); - inflate_fast_chunk_(strm, out); - LOAD(); - if (state->mode == TYPE) - state->back = -1; - break; - } - state->back = 0; - for (;;) { - here = state->lencode[BITS(state->lenbits)]; - if ((unsigned)(here.bits) <= bits) break; - PULLBYTE(); - } - if (here.op && (here.op & 0xf0) == 0) { - last = here; - for (;;) { - here = state->lencode[last.val + - (BITS(last.bits + last.op) >> last.bits)]; - if ((unsigned)(last.bits + here.bits) <= bits) break; - PULLBYTE(); - } - DROPBITS(last.bits); - state->back += last.bits; - } - DROPBITS(here.bits); - state->back += here.bits; - state->length = (unsigned)here.val; - if ((int)(here.op) == 0) { - Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? - "inflate: literal '%c'\n" : - "inflate: literal 0x%02x\n", here.val)); - state->mode = LIT; - break; - } - if (here.op & 32) { - Tracevv((stderr, "inflate: end of block\n")); - state->back = -1; - state->mode = TYPE; - break; - } - if (here.op & 64) { - strm->msg = (char *)"invalid literal/length code"; - state->mode = BAD; - break; - } - state->extra = (unsigned)(here.op) & 15; - state->mode = LENEXT; - /* fallthrough */ - case LENEXT: - if (state->extra) { - NEEDBITS(state->extra); - state->length += BITS(state->extra); - DROPBITS(state->extra); - state->back += state->extra; - } - Tracevv((stderr, "inflate: length %u\n", state->length)); - state->was = state->length; - state->mode = DIST; - /* fallthrough */ - case DIST: - for (;;) { - here = state->distcode[BITS(state->distbits)]; - if ((unsigned)(here.bits) <= bits) break; - PULLBYTE(); - } - if ((here.op & 0xf0) == 0) { - last = here; - for (;;) { - here = state->distcode[last.val + - (BITS(last.bits + last.op) >> last.bits)]; - if ((unsigned)(last.bits + here.bits) <= bits) break; - PULLBYTE(); - } - DROPBITS(last.bits); - state->back += last.bits; - } - DROPBITS(here.bits); - state->back += here.bits; - if (here.op & 64) { - strm->msg = (char *)"invalid distance code"; - state->mode = BAD; - break; - } - state->offset = (unsigned)here.val; - state->extra = (unsigned)(here.op) & 15; - state->mode = DISTEXT; - /* fallthrough */ - case DISTEXT: - if (state->extra) { - NEEDBITS(state->extra); - state->offset += BITS(state->extra); - DROPBITS(state->extra); - state->back += state->extra; - } -#ifdef INFLATE_STRICT - if (state->offset > state->dmax) { - strm->msg = (char *)"invalid distance too far back"; - state->mode = BAD; - break; - } -#endif - Tracevv((stderr, "inflate: distance %u\n", state->offset)); - state->mode = MATCH; - /* fallthrough */ - case MATCH: - if (left == 0) goto inf_leave; - copy = out - left; - if (state->offset > copy) { /* copy from window */ - copy = state->offset - copy; - if (copy > state->whave) { - if (state->sane) { - strm->msg = (char *)"invalid distance too far back"; - state->mode = BAD; - break; - } -#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR - Trace((stderr, "inflate.c too far\n")); - copy -= state->whave; - if (copy > state->length) copy = state->length; - if (copy > left) copy = left; - left -= copy; - state->length -= copy; - do { - *put++ = 0; - } while (--copy); - if (state->length == 0) state->mode = LEN; - break; -#endif - } - if (copy > state->wnext) { - copy -= state->wnext; - from = state->window + (state->wsize - copy); - } - else - from = state->window + (state->wnext - copy); - if (copy > state->length) copy = state->length; - if (copy > left) copy = left; - put = chunkcopy_safe(put, from, copy, put + left); - } - else { /* copy from output */ - copy = state->length; - if (copy > left) copy = left; - put = chunkcopy_lapped_safe(put, state->offset, copy, put + left); - } - left -= copy; - state->length -= copy; - if (state->length == 0) state->mode = LEN; - break; - case LIT: - if (left == 0) goto inf_leave; - *put++ = (unsigned char)(state->length); - left--; - state->mode = LEN; - break; - case CHECK: - if (state->wrap) { - NEEDBITS(32); - out -= left; - strm->total_out += out; - state->total += out; - if ((state->wrap & 4) && out) - strm->adler = state->check = - UPDATE_CHECK(state->check, put - out, out); - out = left; - if ((state->wrap & 4) && ( -#ifdef GUNZIP - state->flags ? hold : -#endif - ZSWAP32(hold)) != state->check) { - strm->msg = (char *)"incorrect data check"; - state->mode = BAD; - break; - } - INITBITS(); - Tracev((stderr, "inflate: check matches trailer\n")); - } -#ifdef GUNZIP - state->mode = LENGTH; - /* fallthrough */ - case LENGTH: - if (state->wrap && state->flags) { - NEEDBITS(32); - if ((state->wrap & 4) && hold != (state->total & 0xffffffff)) { - strm->msg = (char *)"incorrect length check"; - state->mode = BAD; - break; - } - INITBITS(); - Tracev((stderr, "inflate: length matches trailer\n")); - } -#endif - state->mode = DONE; - /* fallthrough */ - case DONE: - ret = Z_STREAM_END; - goto inf_leave; - case BAD: - ret = Z_DATA_ERROR; - goto inf_leave; - case MEM: - return Z_MEM_ERROR; - case SYNC: - /* fallthrough */ - default: - return Z_STREAM_ERROR; - } - - /* - Return from inflate(), updating the total counts and the check value. - If there was no progress during the inflate() call, return a buffer - error. Call updatewindow() to create and/or update the window state. - Note: a memory error from inflate() is non-recoverable. - */ - inf_leave: -#if defined(ZLIB_DEBUG) - /* XXX(cavalcantii): I put this in place back in 2017 to help debug faulty - * client code relying on undefined behavior when chunk_copy first landed. - * - * It is save to say after all these years that Chromium code is well - * behaved and works fine with the optimization, therefore we can enable - * this only for DEBUG builds. - * - * We write a defined value in the unused space to help mark - * where the stream has ended. We don't use zeros as that can - * mislead clients relying on undefined behavior (i.e. assuming - * that the data is over when the buffer has a zero/null value). - * - * The basic idea is that if client code is not relying on the zlib context - * to inform the amount of decompressed data, but instead reads the output - * buffer until a zero/null is found, it will fail faster and harder - * when the remaining of the buffer is marked with a symbol (e.g. 0x55). - */ - if (left >= CHUNKCOPY_CHUNK_SIZE) - memset(put, 0x55, CHUNKCOPY_CHUNK_SIZE); - else - memset(put, 0x55, left); -#endif - RESTORE(); - if (state->wsize || (out != strm->avail_out && state->mode < BAD && - (state->mode < CHECK || flush != Z_FINISH))) - if (updatewindow(strm, strm->next_out, out - strm->avail_out)) { - state->mode = MEM; - return Z_MEM_ERROR; - } - in -= strm->avail_in; - out -= strm->avail_out; - strm->total_in += in; - strm->total_out += out; - state->total += out; - if ((state->wrap & 4) && out) - strm->adler = state->check = - UPDATE_CHECK(state->check, strm->next_out - out, out); - strm->data_type = (int)state->bits + (state->last ? 64 : 0) + - (state->mode == TYPE ? 128 : 0) + - (state->mode == LEN_ || state->mode == COPY_ ? 256 : 0); - if (((in == 0 && out == 0) || flush == Z_FINISH) && ret == Z_OK) - ret = Z_BUF_ERROR; - return ret; -} - -int ZEXPORT inflateEnd(z_streamp strm) { - struct inflate_state FAR *state; - if (inflateStateCheck(strm)) - return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - if (state->window != Z_NULL) ZFREE(strm, state->window); - ZFREE(strm, strm->state); - strm->state = Z_NULL; - Tracev((stderr, "inflate: end\n")); - return Z_OK; -} - -int ZEXPORT inflateGetDictionary(z_streamp strm, Bytef *dictionary, - uInt *dictLength) { - struct inflate_state FAR *state; - - /* check state */ - if (inflateStateCheck(strm)) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - - /* copy dictionary */ - if (state->whave && dictionary != Z_NULL) { - zmemcpy(dictionary, state->window + state->wnext, - state->whave - state->wnext); - zmemcpy(dictionary + state->whave - state->wnext, - state->window, state->wnext); - } - if (dictLength != Z_NULL) - *dictLength = state->whave; - return Z_OK; -} - -int ZEXPORT inflateSetDictionary(z_streamp strm, const Bytef *dictionary, - uInt dictLength) { - struct inflate_state FAR *state; - unsigned long dictid; - int ret; - - /* check state */ - if (inflateStateCheck(strm)) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - if (state->wrap != 0 && state->mode != DICT) - return Z_STREAM_ERROR; - - /* check for correct dictionary identifier */ - if (state->mode == DICT) { - dictid = adler32(0L, Z_NULL, 0); - dictid = adler32(dictid, dictionary, dictLength); - if (dictid != state->check) - return Z_DATA_ERROR; - } - - /* copy dictionary to window using updatewindow(), which will amend the - existing dictionary if appropriate */ - ret = updatewindow(strm, dictionary + dictLength, dictLength); - if (ret) { - state->mode = MEM; - return Z_MEM_ERROR; - } - state->havedict = 1; - Tracev((stderr, "inflate: dictionary set\n")); - return Z_OK; -} - -int ZEXPORT inflateGetHeader(z_streamp strm, gz_headerp head) { - struct inflate_state FAR *state; - - /* check state */ - if (inflateStateCheck(strm)) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - if ((state->wrap & 2) == 0) return Z_STREAM_ERROR; - - /* save header structure */ - state->head = head; - head->done = 0; - return Z_OK; -} - -/* - Search buf[0..len-1] for the pattern: 0, 0, 0xff, 0xff. Return when found - or when out of input. When called, *have is the number of pattern bytes - found in order so far, in 0..3. On return *have is updated to the new - state. If on return *have equals four, then the pattern was found and the - return value is how many bytes were read including the last byte of the - pattern. If *have is less than four, then the pattern has not been found - yet and the return value is len. In the latter case, syncsearch() can be - called again with more data and the *have state. *have is initialized to - zero for the first call. - */ -local unsigned syncsearch(unsigned FAR *have, const unsigned char FAR *buf, - unsigned len) { - unsigned got; - unsigned next; - - got = *have; - next = 0; - while (next < len && got < 4) { - if ((int)(buf[next]) == (got < 2 ? 0 : 0xff)) - got++; - else if (buf[next]) - got = 0; - else - got = 4 - got; - next++; - } - *have = got; - return next; -} - -int ZEXPORT inflateSync(z_streamp strm) { - unsigned len; /* number of bytes to look at or looked at */ - int flags; /* temporary to save header status */ - unsigned long in, out; /* temporary to save total_in and total_out */ - unsigned char buf[4]; /* to restore bit buffer to byte string */ - struct inflate_state FAR *state; - - /* check parameters */ - if (inflateStateCheck(strm)) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - if (strm->avail_in == 0 && state->bits < 8) return Z_BUF_ERROR; - - /* if first time, start search in bit buffer */ - if (state->mode != SYNC) { - state->mode = SYNC; - state->hold >>= state->bits & 7; - state->bits -= state->bits & 7; - len = 0; - while (state->bits >= 8) { - buf[len++] = (unsigned char)(state->hold); - state->hold >>= 8; - state->bits -= 8; - } - state->have = 0; - syncsearch(&(state->have), buf, len); - } - - /* search available input */ - len = syncsearch(&(state->have), strm->next_in, strm->avail_in); - strm->avail_in -= len; - strm->next_in += len; - strm->total_in += len; - - /* return no joy or set up to restart inflate() on a new block */ - if (state->have != 4) return Z_DATA_ERROR; - if (state->flags == -1) - state->wrap = 0; /* if no header yet, treat as raw */ - else - state->wrap &= ~4; /* no point in computing a check value now */ - flags = state->flags; - in = strm->total_in; out = strm->total_out; - inflateReset(strm); - strm->total_in = in; strm->total_out = out; - state->flags = flags; - state->mode = TYPE; - return Z_OK; -} - -/* - Returns true if inflate is currently at the end of a block generated by - Z_SYNC_FLUSH or Z_FULL_FLUSH. This function is used by one PPP - implementation to provide an additional safety check. PPP uses - Z_SYNC_FLUSH but removes the length bytes of the resulting empty stored - block. When decompressing, PPP checks that at the end of input packet, - inflate is waiting for these length bytes. - */ -int ZEXPORT inflateSyncPoint(z_streamp strm) { - struct inflate_state FAR *state; - - if (inflateStateCheck(strm)) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - return state->mode == STORED && state->bits == 0; -} - -int ZEXPORT inflateCopy(z_streamp dest, z_streamp source) { - struct inflate_state FAR *state; - struct inflate_state FAR *copy; - unsigned char FAR *window; - unsigned wsize; - - /* check input */ - if (inflateStateCheck(source) || dest == Z_NULL) - return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)source->state; - - /* allocate space */ - copy = (struct inflate_state FAR *) - ZALLOC(source, 1, sizeof(struct inflate_state)); - if (copy == Z_NULL) return Z_MEM_ERROR; - window = Z_NULL; - if (state->window != Z_NULL) { - window = (unsigned char FAR *)ZALLOC( - source, (1U << state->wbits) + CHUNKCOPY_CHUNK_SIZE, - sizeof(unsigned char)); - if (window == Z_NULL) { - ZFREE(source, copy); - return Z_MEM_ERROR; - } - } - - /* copy state */ - zmemcpy((voidpf)dest, (voidpf)source, sizeof(z_stream)); - zmemcpy((voidpf)copy, (voidpf)state, sizeof(struct inflate_state)); - copy->strm = dest; - if (state->lencode >= state->codes && - state->lencode <= state->codes + ENOUGH - 1) { - copy->lencode = copy->codes + (state->lencode - state->codes); - copy->distcode = copy->codes + (state->distcode - state->codes); - } - copy->next = copy->codes + (state->next - state->codes); - if (window != Z_NULL) { - wsize = 1U << state->wbits; - zmemcpy(window, state->window, wsize); - } - copy->window = window; - dest->state = (struct internal_state FAR *)copy; - return Z_OK; -} - -int ZEXPORT inflateUndermine(z_streamp strm, int subvert) { - struct inflate_state FAR *state; - - if (inflateStateCheck(strm)) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; -#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR - state->sane = !subvert; - return Z_OK; -#else - (void)subvert; - state->sane = 1; - return Z_DATA_ERROR; -#endif -} - -int ZEXPORT inflateValidate(z_streamp strm, int check) { - struct inflate_state FAR *state; - - if (inflateStateCheck(strm)) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - if (check && state->wrap) - state->wrap |= 4; - else - state->wrap &= ~4; - return Z_OK; -} - -long ZEXPORT inflateMark(z_streamp strm) { - struct inflate_state FAR *state; - - if (inflateStateCheck(strm)) - return -(1L << 16); - state = (struct inflate_state FAR *)strm->state; - return (long)(((unsigned long)((long)state->back)) << 16) + - (state->mode == COPY ? state->length : - (state->mode == MATCH ? state->was - state->length : 0)); -} - -unsigned long ZEXPORT inflateCodesUsed(z_streamp strm) { - struct inflate_state FAR *state; - if (inflateStateCheck(strm)) return (unsigned long)-1; - state = (struct inflate_state FAR *)strm->state; - return (unsigned long)(state->next - state->codes); -} diff --git a/packages/runtime/vendor/zlib/contrib/optimizations/insert_string.h b/packages/runtime/vendor/zlib/contrib/optimizations/insert_string.h deleted file mode 100644 index 260b82680..000000000 --- a/packages/runtime/vendor/zlib/contrib/optimizations/insert_string.h +++ /dev/null @@ -1,80 +0,0 @@ -/* insert_string.h - * - * Copyright 2019 The Chromium Authors - * Use of this source code is governed by a BSD-style license that can be - * found in the Chromium source repository LICENSE file. - */ - -#ifndef INSERT_STRING_H -#define INSERT_STRING_H - -#ifndef INLINE -#if defined(_MSC_VER) && !defined(__clang__) -#define INLINE __inline -#else -#define INLINE inline -#endif -#endif - -#include - -/** - * Some applications need to match zlib DEFLATE output exactly [3]. Use the - * canonical zlib Rabin-Karp rolling hash [1,2] in that case. - * - * [1] For a description of the Rabin and Karp algorithm, see "Algorithms" - * book by R. Sedgewick, Addison-Wesley, p252. - * [2] https://www.euccas.me/zlib/#zlib_rabin_karp and also "rolling hash" - * https://en.wikipedia.org/wiki/Rolling_hash - * [3] crbug.com/1316541 AOSP incremental client APK package OTA upgrades. - */ -#ifdef CHROMIUM_ZLIB_NO_CASTAGNOLI -#define USE_ZLIB_RABIN_KARP_ROLLING_HASH -#endif - -/* =========================================================================== - * Update a hash value with the given input byte (Rabin-Karp rolling hash). - * IN assertion: all calls to UPDATE_HASH are made with consecutive input - * characters, so that a running hash key can be computed from the previous - * key instead of complete recalculation each time. - */ -#define UPDATE_HASH(s, h, c) (h = (((h) << s->hash_shift) ^ (c)) & s->hash_mask) - -/* =========================================================================== - * Insert string str in the dictionary and set match_head to the previous head - * of the hash chain (the most recent string with same hash key). Return - * the previous length of the hash chain. - * If this file is compiled with -DFASTEST, the compression level is forced - * to 1, and no hash chains are maintained. - * IN assertion: all calls to INSERT_STRING are made with consecutive input - * characters and the first MIN_MATCH bytes of str are valid (except for - * the last MIN_MATCH-1 bytes of the input file). - */ -local INLINE Pos insert_string(deflate_state* const s, const Pos str) { - Pos ret; -/* insert_string dictionary insertion: ANZAC++ hasher - * significantly improves data compression speed. - * - * Note: the generated compressed output is a valid DEFLATE stream, but will - * differ from canonical zlib output. - */ -#if defined(USE_ZLIB_RABIN_KARP_ROLLING_HASH) - UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH - 1)]); -#else - uint32_t value; - // Validated for little endian archs (i.e. x86, Arm). YMMV for big endian. - zmemcpy(&value, &s->window[str], sizeof(value)); - s->ins_h = ((value * 66521 + 66521) >> 16) & s->hash_mask; -#endif - -#ifdef FASTEST - ret = s->head[s->ins_h]; -#else - ret = s->prev[str & s->w_mask] = s->head[s->ins_h]; -#endif - s->head[s->ins_h] = str; - - return ret; -} - -#endif /* INSERT_STRING_H */ diff --git a/packages/runtime/vendor/zlib/cpu_features.c b/packages/runtime/vendor/zlib/cpu_features.c deleted file mode 100644 index 6613a65e3..000000000 --- a/packages/runtime/vendor/zlib/cpu_features.c +++ /dev/null @@ -1,218 +0,0 @@ -/* cpu_features.c -- Processor features detection. - * - * Copyright 2018 The Chromium Authors - * Use of this source code is governed by a BSD-style license that can be - * found in the Chromium source repository LICENSE file. - */ - -#include "cpu_features.h" -#include "zutil.h" - -#include -#if defined(_MSC_VER) -#include -#elif defined(ADLER32_SIMD_SSSE3) -#include -#endif - -/* TODO(cavalcantii): remove checks for x86_flags on deflate. - */ -#if defined(ARMV8_OS_MACOS) -/* Crypto extensions (crc32/pmull) are a baseline feature in ARMv8.1-A, and - * OSX running on arm64 is new enough that these can be assumed without - * runtime detection. - */ -int ZLIB_INTERNAL arm_cpu_enable_crc32 = 1; -int ZLIB_INTERNAL arm_cpu_enable_pmull = 1; -#else -int ZLIB_INTERNAL arm_cpu_enable_crc32 = 0; -int ZLIB_INTERNAL arm_cpu_enable_pmull = 0; -#endif -int ZLIB_INTERNAL x86_cpu_enable_sse2 = 0; -int ZLIB_INTERNAL x86_cpu_enable_ssse3 = 0; -int ZLIB_INTERNAL x86_cpu_enable_simd = 0; -int ZLIB_INTERNAL x86_cpu_enable_avx512 = 0; - -int ZLIB_INTERNAL riscv_cpu_enable_rvv = 0; -int ZLIB_INTERNAL riscv_cpu_enable_vclmul = 0; - -#ifndef CPU_NO_SIMD - -#if defined(ARMV8_OS_ANDROID) || defined(ARMV8_OS_LINUX) || \ - defined(ARMV8_OS_FUCHSIA) || defined(ARMV8_OS_IOS) -#include -#endif - -#if defined(ARMV8_OS_ANDROID) -#include -#elif defined(ARMV8_OS_LINUX) -#include -#include -#elif defined(ARMV8_OS_FUCHSIA) -#include -#include -#include -#elif defined(ARMV8_OS_WINDOWS) || defined(X86_WINDOWS) -#include -#elif defined(ARMV8_OS_IOS) -#include -#elif !defined(_MSC_VER) -#include -#else -#error cpu_features.c CPU feature detection in not defined for your platform -#endif - -#if !defined(CPU_NO_SIMD) && !defined(ARMV8_OS_MACOS) -static void _cpu_check_features(void); -#endif - -#if defined(ARMV8_OS_ANDROID) || defined(ARMV8_OS_LINUX) || \ - defined(ARMV8_OS_MACOS) || defined(ARMV8_OS_FUCHSIA) || \ - defined(X86_NOT_WINDOWS) || defined(ARMV8_OS_IOS) || \ - defined(RISCV_RVV) -#if !defined(ARMV8_OS_MACOS) -// _cpu_check_features() doesn't need to do anything on mac/arm since all -// features are known at build time, so don't call it. -// Do provide cpu_check_features() (with a no-op implementation) so that we -// don't have to make all callers of it check for mac/arm. -static pthread_once_t cpu_check_inited_once = PTHREAD_ONCE_INIT; -#endif -void ZLIB_INTERNAL cpu_check_features(void) -{ -#if !defined(ARMV8_OS_MACOS) - pthread_once(&cpu_check_inited_once, _cpu_check_features); -#endif -} -#elif defined(ARMV8_OS_WINDOWS) || defined(X86_WINDOWS) -static INIT_ONCE cpu_check_inited_once = INIT_ONCE_STATIC_INIT; -static BOOL CALLBACK _cpu_check_features_forwarder(PINIT_ONCE once, PVOID param, PVOID* context) -{ - _cpu_check_features(); - return TRUE; -} -void ZLIB_INTERNAL cpu_check_features(void) -{ - InitOnceExecuteOnce(&cpu_check_inited_once, _cpu_check_features_forwarder, - NULL, NULL); -} -#endif - -#if (defined(__ARM_NEON__) || defined(__ARM_NEON)) -#if !defined(ARMV8_OS_MACOS) -/* - * See http://bit.ly/2CcoEsr for run-time detection of ARM features and also - * crbug.com/931275 for android_getCpuFeatures() use in the Android sandbox. - */ -static void _cpu_check_features(void) -{ -#if defined(ARMV8_OS_ANDROID) && defined(__aarch64__) - uint64_t features = android_getCpuFeatures(); - arm_cpu_enable_crc32 = !!(features & ANDROID_CPU_ARM64_FEATURE_CRC32); - arm_cpu_enable_pmull = !!(features & ANDROID_CPU_ARM64_FEATURE_PMULL); -#elif defined(ARMV8_OS_ANDROID) /* aarch32 */ - uint64_t features = android_getCpuFeatures(); - arm_cpu_enable_crc32 = !!(features & ANDROID_CPU_ARM_FEATURE_CRC32); - arm_cpu_enable_pmull = !!(features & ANDROID_CPU_ARM_FEATURE_PMULL); -#elif defined(ARMV8_OS_LINUX) && defined(__aarch64__) - unsigned long features = getauxval(AT_HWCAP); - arm_cpu_enable_crc32 = !!(features & HWCAP_CRC32); - arm_cpu_enable_pmull = !!(features & HWCAP_PMULL); -#elif defined(ARMV8_OS_LINUX) && (defined(__ARM_NEON) || defined(__ARM_NEON__)) - /* Query HWCAP2 for ARMV8-A SoCs running in aarch32 mode */ - unsigned long features = getauxval(AT_HWCAP2); - arm_cpu_enable_crc32 = !!(features & HWCAP2_CRC32); - arm_cpu_enable_pmull = !!(features & HWCAP2_PMULL); -#elif defined(ARMV8_OS_FUCHSIA) - uint32_t features; - zx_status_t rc = zx_system_get_features(ZX_FEATURE_KIND_CPU, &features); - if (rc != ZX_OK || (features & ZX_ARM64_FEATURE_ISA_ASIMD) == 0) - return; /* Report nothing if ASIMD(NEON) is missing */ - arm_cpu_enable_crc32 = !!(features & ZX_ARM64_FEATURE_ISA_CRC32); - arm_cpu_enable_pmull = !!(features & ZX_ARM64_FEATURE_ISA_PMULL); -#elif defined(ARMV8_OS_WINDOWS) - arm_cpu_enable_crc32 = IsProcessorFeaturePresent(PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE); - arm_cpu_enable_pmull = IsProcessorFeaturePresent(PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE); -#elif defined(ARMV8_OS_IOS) - // Determine what features are supported dynamically. This code is applicable to macOS - // as well if we wish to do that dynamically on that platform in the future. - // See https://developer.apple.com/documentation/kernel/1387446-sysctlbyname/determining_instruction_set_characteristics - int val = 0; - size_t len = sizeof(val); - arm_cpu_enable_crc32 = sysctlbyname("hw.optional.armv8_crc32", &val, &len, 0, 0) == 0 - && val != 0; - val = 0; - len = sizeof(val); - arm_cpu_enable_pmull = sysctlbyname("hw.optional.arm.FEAT_PMULL", &val, &len, 0, 0) == 0 - && val != 0; -#endif -} -#endif -#elif defined(X86_NOT_WINDOWS) || defined(X86_WINDOWS) -/* - * iOS@x86 (i.e. emulator) is another special case where we disable - * SIMD optimizations. - */ -#ifndef CPU_NO_SIMD -/* On x86 we simply use a instruction to check the CPU features. - * (i.e. CPUID). - */ -#ifdef CRC32_SIMD_AVX512_PCLMUL -#include -#include -#endif -/* _xgetbv() below needs the xsave ISA. Annotate it here so the build does not - * need -mxsave. */ -#if defined(CRC32_SIMD_AVX512_PCLMUL) && (defined(__GNUC__) || defined(__clang__)) -__attribute__((__target__("xsave"))) -#endif -static void _cpu_check_features(void) -{ - int x86_cpu_has_sse2; - int x86_cpu_has_ssse3; - int x86_cpu_has_sse42; - int x86_cpu_has_pclmulqdq; - int abcd[4]; - -#ifdef _MSC_VER - __cpuid(abcd, 1); -#else - __cpuid(1, abcd[0], abcd[1], abcd[2], abcd[3]); -#endif - - x86_cpu_has_sse2 = abcd[3] & 0x4000000; - x86_cpu_has_ssse3 = abcd[2] & 0x000200; - x86_cpu_has_sse42 = abcd[2] & 0x100000; - x86_cpu_has_pclmulqdq = abcd[2] & 0x2; - - x86_cpu_enable_sse2 = x86_cpu_has_sse2; - - x86_cpu_enable_ssse3 = x86_cpu_has_ssse3; - - x86_cpu_enable_simd = x86_cpu_has_sse2 && - x86_cpu_has_sse42 && - x86_cpu_has_pclmulqdq; - -#ifdef CRC32_SIMD_AVX512_PCLMUL - x86_cpu_enable_avx512 = _xgetbv(0) & 0x00000040; -#endif -} -#endif // x86 & NO_SIMD - -#elif defined(RISCV_RVV) -#include - -#ifndef ZLIB_HWCAP_RVV -#define ZLIB_HWCAP_RVV (1 << ('v' - 'a')) -#endif - -/* TODO(cavalcantii) - * - add support for Android@RISCV i.e. __riscv_hwprobe(). - * - detect vclmul (crypto extensions). - */ -static void _cpu_check_features(void) -{ - unsigned long features = getauxval(AT_HWCAP); - riscv_cpu_enable_rvv = !!(features & ZLIB_HWCAP_RVV); -} -#endif // ARM | x86 | RISCV -#endif // NO SIMD CPU diff --git a/packages/runtime/vendor/zlib/cpu_features.h b/packages/runtime/vendor/zlib/cpu_features.h deleted file mode 100644 index 6092c7e85..000000000 --- a/packages/runtime/vendor/zlib/cpu_features.h +++ /dev/null @@ -1,22 +0,0 @@ -/* cpu_features.h -- Processor features detection. - * - * Copyright 2018 The Chromium Authors - * Use of this source code is governed by a BSD-style license that can be - * found in the Chromium source repository LICENSE file. - */ - -#include "zlib.h" - -/* TODO(cavalcantii): remove checks for x86_flags on deflate. - */ -extern int arm_cpu_enable_crc32; -extern int arm_cpu_enable_pmull; -extern int x86_cpu_enable_sse2; -extern int x86_cpu_enable_ssse3; -extern int x86_cpu_enable_simd; -extern int x86_cpu_enable_avx512; - -extern int riscv_cpu_enable_rvv; -extern int riscv_cpu_enable_vclmul; - -void cpu_check_features(void); diff --git a/packages/runtime/vendor/zlib/crc32.c b/packages/runtime/vendor/zlib/crc32.c index 2ec5ab5ce..6c38f5c04 100644 --- a/packages/runtime/vendor/zlib/crc32.c +++ b/packages/runtime/vendor/zlib/crc32.c @@ -1,5 +1,5 @@ /* crc32.c -- compute the CRC-32 of a data stream - * Copyright (C) 1995-2026 Mark Adler + * Copyright (C) 1995-2022 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h * * This interleaved implementation of a CRC makes use of pipelined multiple @@ -24,24 +24,11 @@ # include # ifndef DYNAMIC_CRC_TABLE # define DYNAMIC_CRC_TABLE -# endif -#endif -#ifdef DYNAMIC_CRC_TABLE -# define Z_ONCE -#endif +# endif /* !DYNAMIC_CRC_TABLE */ +#endif /* MAKECRCH */ -#include "deflate.h" -#include "cpu_features.h" #include "zutil.h" /* for Z_U4, Z_U8, z_crc_t, and FAR definitions */ -#ifdef HAVE_S390X_VX -# include "contrib/crc32vx/crc32_vx_hooks.h" -#endif - -#if defined(CRC32_SIMD_SSE42_PCLMUL) || defined(CRC32_ARMV8_CRC32) -#include "crc32_simd.h" -#endif - /* A CRC of a message is computed on N braids of words in the message, where each word consists of W bytes (4 or 8). If N is 3, for example, then three @@ -112,12 +99,11 @@ #endif /* If available, use the ARM processor CRC32 instruction. */ -#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) && \ - defined(W) && W == 8 && defined(USE_CANONICAL_ARMV8_CRC32) -# define ARMCRC32_CANONICAL_ZLIB +#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) && W == 8 +# define ARMCRC32 #endif -#if defined(W) && (!defined(ARMCRC32_CANONICAL_ZLIB) || defined(DYNAMIC_CRC_TABLE)) +#if defined(W) && (!defined(ARMCRC32) || defined(DYNAMIC_CRC_TABLE)) /* Swap the bytes in a z_word_t to convert between little and big endian. Any self-respecting compiler will optimize this to a single machine byte-swap @@ -166,10 +152,10 @@ local z_word_t byte_swap(z_word_t word) { Return a(x) multiplied by b(x) modulo p(x), where p(x) is the CRC polynomial, reflected. For speed, this requires that a not be zero. */ -local uLong multmodp(uLong a, uLong b) { - uLong m, p; +local z_crc_t multmodp(z_crc_t a, z_crc_t b) { + z_crc_t m, p; - m = (uLong)1 << 31; + m = (z_crc_t)1 << 31; p = 0; for (;;) { if (a & m) { @@ -185,12 +171,12 @@ local uLong multmodp(uLong a, uLong b) { /* Return x^(n * 2^k) modulo p(x). Requires that x2n_table[] has been - initialized. n must not be negative. + initialized. */ -local uLong x2nmodp(z_off64_t n, unsigned k) { - uLong p; +local z_crc_t x2nmodp(z_off64_t n, unsigned k) { + z_crc_t p; - p = (uLong)1 << 31; /* x^0 == 1 */ + p = (z_crc_t)1 << 31; /* x^0 == 1 */ while (n) { if (n & 1) p = multmodp(x2n_table[k & 31], p); @@ -218,8 +204,83 @@ local z_crc_t FAR crc_table[256]; local void write_table64(FILE *, const z_word_t FAR *, int); #endif /* MAKECRCH */ +/* + Define a once() function depending on the availability of atomics. If this is + compiled with DYNAMIC_CRC_TABLE defined, and if CRCs will be computed in + multiple threads, and if atomics are not available, then get_crc_table() must + be called to initialize the tables and must return before any threads are + allowed to compute or combine CRCs. + */ + +/* Definition of once functionality. */ +typedef struct once_s once_t; + +/* Check for the availability of atomics. */ +#if defined(__STDC__) && __STDC_VERSION__ >= 201112L && \ + !defined(__STDC_NO_ATOMICS__) + +#include + +/* Structure for once(), which must be initialized with ONCE_INIT. */ +struct once_s { + atomic_flag begun; + atomic_int done; +}; +#define ONCE_INIT {ATOMIC_FLAG_INIT, 0} + +/* + Run the provided init() function exactly once, even if multiple threads + invoke once() at the same time. The state must be a once_t initialized with + ONCE_INIT. + */ +local void once(once_t *state, void (*init)(void)) { + if (!atomic_load(&state->done)) { + if (atomic_flag_test_and_set(&state->begun)) + while (!atomic_load(&state->done)) + ; + else { + init(); + atomic_store(&state->done, 1); + } + } +} + +#else /* no atomics */ + +/* Structure for once(), which must be initialized with ONCE_INIT. */ +struct once_s { + volatile int begun; + volatile int done; +}; +#define ONCE_INIT {0, 0} + +/* Test and set. Alas, not atomic, but tries to minimize the period of + vulnerability. */ +local int test_and_set(int volatile *flag) { + int was; + + was = *flag; + *flag = 1; + return was; +} + +/* Run the provided init() function once. This is not thread-safe. */ +local void once(once_t *state, void (*init)(void)) { + if (!state->done) { + if (test_and_set(&state->begun)) + while (!state->done) + ; + else { + init(); + state->done = 1; + } + } +} + +#endif + /* State for once(). */ -local z_once_t made = Z_ONCE_INIT; +local once_t made = ONCE_INIT; /* Generate tables for a byte-wise 32-bit CRC calculation on the polynomial: @@ -245,8 +306,8 @@ local z_once_t made = Z_ONCE_INIT; information needed to generate CRCs on data a byte at a time for all combinations of CRC register values and incoming bytes. */ -local void make_crc_table(void) -{ + +local void make_crc_table(void) { unsigned i, j, n; z_crc_t p; @@ -265,7 +326,7 @@ local void make_crc_table(void) p = (z_crc_t)1 << 30; /* x^1 */ x2n_table[0] = p; for (n = 1; n < 32; n++) - x2n_table[n] = p = (z_crc_t)multmodp(p, p); + x2n_table[n] = p = multmodp(p, p); #ifdef W /* initialize the braiding tables -- needs x2n_table[] */ @@ -468,11 +529,11 @@ local void braid(z_crc_t ltl[][256], z_word_t big[][256], int n, int w) { int k; z_crc_t i, p, q; for (k = 0; k < w; k++) { - p = (z_crc_t)x2nmodp((n * w + 3 - k) << 3, 0); + p = x2nmodp((n * w + 3 - k) << 3, 0); ltl[k][0] = 0; big[w - 1 - k][0] = 0; for (i = 1; i < 256; i++) { - ltl[k][i] = q = (z_crc_t)multmodp(i << 24, p); + ltl[k][i] = q = multmodp(i << 24, p); big[w - 1 - k][i] = byte_swap(q); } } @@ -487,7 +548,7 @@ local void braid(z_crc_t ltl[][256], z_word_t big[][256], int n, int w) { */ const z_crc_t FAR * ZEXPORT get_crc_table(void) { #ifdef DYNAMIC_CRC_TABLE - z_once(&made, make_crc_table); + once(&made, make_crc_table); #endif /* DYNAMIC_CRC_TABLE */ return (const z_crc_t FAR *)crc_table; } @@ -501,7 +562,7 @@ const z_crc_t FAR * ZEXPORT get_crc_table(void) { * -march=armv8-a+crc, or -march=native if the compile machine has the crc32 * instructions. */ -#if ARMCRC32_CANONICAL_ZLIB +#ifdef ARMCRC32 /* Constants empirically determined to maximize speed. These values are from @@ -511,8 +572,9 @@ const z_crc_t FAR * ZEXPORT get_crc_table(void) { #define Z_BATCH_ZEROS 0xa10d3d0c /* computed from Z_BATCH = 3990 */ #define Z_BATCH_MIN 800 /* fewest words in a final batch */ -uLong ZEXPORT crc32_z(uLong crc, const unsigned char FAR *buf, z_size_t len) { - uLong val; +unsigned long ZEXPORT crc32_z(unsigned long crc, const unsigned char FAR *buf, + z_size_t len) { + z_crc_t val; z_word_t crc1, crc2; const z_word_t *word; z_word_t val0, val1, val2; @@ -523,7 +585,7 @@ uLong ZEXPORT crc32_z(uLong crc, const unsigned char FAR *buf, z_size_t len) { if (buf == Z_NULL) return 0; #ifdef DYNAMIC_CRC_TABLE - z_once(&made, make_crc_table); + once(&made, make_crc_table); #endif /* DYNAMIC_CRC_TABLE */ /* Pre-condition the CRC */ @@ -578,7 +640,7 @@ uLong ZEXPORT crc32_z(uLong crc, const unsigned char FAR *buf, z_size_t len) { } word += 3 * last; num -= 3 * last; - val = x2nmodp((int)last, 6); + val = x2nmodp(last, 6); crc = multmodp(val, crc) ^ crc1; crc = multmodp(val, crc) ^ crc2; } @@ -629,79 +691,15 @@ local z_word_t crc_word_big(z_word_t data) { #endif /* ========================================================================= */ -uLong ZEXPORT crc32_z(uLong crc, const unsigned char FAR *buf, z_size_t len) { - - /* If no optimizations are enabled, do it as canonical zlib. */ -#if !defined(CRC32_SIMD_SSE42_PCLMUL) && !defined(CRC32_ARMV8_CRC32) && \ - !defined(RISCV_RVV) && !defined(CRC32_SIMD_AVX512_PCLMUL) - if (buf == Z_NULL) { - return 0UL; - } -#else - /* - * zlib convention is to call crc32(0, NULL, 0); before making - * calls to crc32(). So this is a good, early (and infrequent) - * place to cache CPU features if needed for those later, more - * interesting crc32() calls. - */ - if (buf == Z_NULL) { - if (!len) - cpu_check_features(); - return 0UL; - } -#endif - /* If AVX-512 is enabled, we will use it for longer inputs and fallback - * to SSE4.2 and eventually the portable implementation to handle the tail. - */ -#if defined(CRC32_SIMD_AVX512_PCLMUL) - if (x86_cpu_enable_avx512 && len >= Z_CRC32_AVX512_MINIMUM_LENGTH) { - /* crc32 64-byte chunks */ - z_size_t chunk_size = len & ~Z_CRC32_AVX512_CHUNKSIZE_MASK; - crc = ~crc32_avx512_simd_(buf, chunk_size, ~(uint32_t)crc); - /* check remaining data */ - len -= chunk_size; - if (!len) - return crc; - /* Fall into the default crc32 for the remaining data. */ - buf += chunk_size; - } -#endif -#if defined(CRC32_SIMD_SSE42_PCLMUL) - if (x86_cpu_enable_simd && len >= Z_CRC32_SSE42_MINIMUM_LENGTH) { - /* crc32 16-byte chunks */ - z_size_t chunk_size = len & ~Z_CRC32_SSE42_CHUNKSIZE_MASK; - crc = ~crc32_sse42_simd_(buf, chunk_size, ~(uint32_t)crc); - /* check remaining data */ - len -= chunk_size; - if (!len) - return crc; - /* Fall into the default crc32 for the remaining data. */ - buf += chunk_size; - } -#elif defined(CRC32_ARMV8_CRC32) - if (arm_cpu_enable_crc32) { -#if defined(__aarch64__) - /* PMULL is 64bit only, plus code needs at least a 64 bytes buffer. */ - if (arm_cpu_enable_pmull && (len > Z_CRC32_PMULL_MINIMUM_LENGTH)) { - const size_t chunk_size = len & ~Z_CRC32_PMULL_CHUNKSIZE_MASK; - crc = ~armv8_crc32_pmull_little(buf, chunk_size, ~(uint32_t)crc); - /* Check remaining data. */ - len -= chunk_size; - if (!len) - return crc; - - /* Fall through for the remaining data. */ - buf += chunk_size; - } -#endif - /* This is scalar and self contained, used on Armv8@32bit or tail. */ - return armv8_crc32_little(buf, len, crc); - } -#endif /* CRC32_SIMD */ +unsigned long ZEXPORT crc32_z(unsigned long crc, const unsigned char FAR *buf, + z_size_t len) { + /* Return initial CRC, if requested. */ + if (buf == Z_NULL) return 0; #ifdef DYNAMIC_CRC_TABLE - z_once(&made, make_crc_table); + once(&made, make_crc_table); #endif /* DYNAMIC_CRC_TABLE */ + /* Pre-condition the CRC */ crc = (~crc) & 0xffffffff; @@ -1014,56 +1012,28 @@ uLong ZEXPORT crc32_z(uLong crc, const unsigned char FAR *buf, z_size_t len) { #endif /* ========================================================================= */ -uLong ZEXPORT crc32(uLong crc, const unsigned char FAR *buf, uInt len) { - #ifdef HAVE_S390X_VX - return crc32_z_hook(crc, buf, len); - #endif +unsigned long ZEXPORT crc32(unsigned long crc, const unsigned char FAR *buf, + uInt len) { + return crc32_z(crc, buf, len); +} - /* Some bots compile with optimizations disabled, others will emulate - * ARM on x86 and other weird combinations. - */ -#if defined(CRC32_SIMD_SSE42_PCLMUL) || defined(CRC32_ARMV8_CRC32) \ - || defined(RISCV_RVV) - /* We got to verify CPU features, so exploit the common usage pattern - * of calling this function with Z_NULL for an initial valid crc value. - * This allows to cache the result of the feature check and avoid extraneous - * function calls. - */ - if (buf == Z_NULL) { - if (!len) /* Assume user is calling crc32(0, NULL, 0); */ - cpu_check_features(); - return 0UL; - } -#endif +/* ========================================================================= */ +uLong ZEXPORT crc32_combine64(uLong crc1, uLong crc2, z_off64_t len2) { +#ifdef DYNAMIC_CRC_TABLE + once(&made, make_crc_table); +#endif /* DYNAMIC_CRC_TABLE */ + return multmodp(x2nmodp(len2, 3), crc1) ^ (crc2 & 0xffffffff); +} -#if defined(CRC32_ARMV8_CRC32) - if (arm_cpu_enable_crc32) { -#if defined(__aarch64__) - /* PMULL is 64bit only, plus code needs at least a 64 bytes buffer. */ - if (arm_cpu_enable_pmull && (len > Z_CRC32_PMULL_MINIMUM_LENGTH)) { - const size_t chunk_size = len & ~Z_CRC32_PMULL_CHUNKSIZE_MASK; - crc = ~armv8_crc32_pmull_little(buf, chunk_size, ~(uint32_t)crc); - /* Check remaining data. */ - len -= chunk_size; - if (!len) - return crc; - - /* Fall through for the remaining data. */ - buf += chunk_size; - } -#endif - return armv8_crc32_little(buf, len, crc); /* Armv8@32bit or tail. */ - } -#endif - return crc32_z(crc, buf, len); /* Armv7 or Armv8 w/o crypto extensions. */ +/* ========================================================================= */ +uLong ZEXPORT crc32_combine(uLong crc1, uLong crc2, z_off_t len2) { + return crc32_combine64(crc1, crc2, (z_off64_t)len2); } /* ========================================================================= */ uLong ZEXPORT crc32_combine_gen64(z_off64_t len2) { - if (len2 < 0) - return 0; #ifdef DYNAMIC_CRC_TABLE - z_once(&made, make_crc_table); + once(&made, make_crc_table); #endif /* DYNAMIC_CRC_TABLE */ return x2nmodp(len2, 3); } @@ -1072,55 +1042,8 @@ uLong ZEXPORT crc32_combine_gen64(z_off64_t len2) { uLong ZEXPORT crc32_combine_gen(z_off_t len2) { return crc32_combine_gen64((z_off64_t)len2); } + /* ========================================================================= */ uLong ZEXPORT crc32_combine_op(uLong crc1, uLong crc2, uLong op) { - if (op == 0) - return 0; - return multmodp(op, crc1 & 0xffffffff) ^ (crc2 & 0xffffffff); -} - -/* ========================================================================= */ -uLong ZEXPORT crc32_combine64(uLong crc1, uLong crc2, z_off64_t len2) { - return crc32_combine_op(crc1, crc2, crc32_combine_gen64(len2)); -} - -/* ========================================================================= */ -uLong ZEXPORT crc32_combine(uLong crc1, uLong crc2, z_off_t len2) { - return crc32_combine64(crc1, crc2, (z_off64_t)len2); -} - -ZLIB_INTERNAL void crc_reset(deflate_state *const s) -{ -#ifdef CRC32_SIMD_SSE42_PCLMUL - if (x86_cpu_enable_simd) { - crc_fold_init(s); - return; - } -#endif - s->strm->adler = crc32(0L, Z_NULL, 0); -} - -ZLIB_INTERNAL void crc_finalize(deflate_state *const s) -{ -#ifdef QAT_COMPRESSION_ENABLED - if (s->qat_s) { - return; - } -#endif -#ifdef CRC32_SIMD_SSE42_PCLMUL - if (x86_cpu_enable_simd) - s->strm->adler = crc_fold_512to32(s); -#endif -} - -ZLIB_INTERNAL void copy_with_crc(z_streamp strm, Bytef *dst, long size) -{ -#ifdef CRC32_SIMD_SSE42_PCLMUL - if (x86_cpu_enable_simd) { - crc_fold_copy(strm->state, dst, strm->next_in, size); - return; - } -#endif - zmemcpy(dst, strm->next_in, size); - strm->adler = crc32(strm->adler, dst, size); + return multmodp(op, crc1) ^ (crc2 & 0xffffffff); } diff --git a/packages/runtime/vendor/zlib/crc32_simd.c b/packages/runtime/vendor/zlib/crc32_simd.c deleted file mode 100644 index f9d52a631..000000000 --- a/packages/runtime/vendor/zlib/crc32_simd.c +++ /dev/null @@ -1,628 +0,0 @@ -/* crc32_simd.c - * - * Copyright 2017 The Chromium Authors - * Use of this source code is governed by a BSD-style license that can be - * found in the Chromium source repository LICENSE file. - */ - -#include "crc32_simd.h" -#if defined(CRC32_SIMD_AVX512_PCLMUL) - -/* - * crc32_avx512_simd_(): compute the crc32 of the buffer, where the buffer - * length must be at least 256, and a multiple of 64. Based on: - * - * "Fast CRC Computation for Generic Polynomials Using PCLMULQDQ Instruction" - * V. Gopal, E. Ozturk, et al., 2009, http://intel.ly/2ySEwL0 - */ - -#include -#include -#include -#include - -#if defined(__GNUC__) || defined(__clang__) -__attribute__((__target__("avx512f,pclmul,vpclmulqdq"))) -#endif -uint32_t ZLIB_INTERNAL crc32_avx512_simd_( /* AVX512+PCLMUL */ - const unsigned char *buf, - z_size_t len, - uint32_t crc) -{ - /* - * Definitions of the bit-reflected domain constants k1,k2,k3,k4 - * are similar to those given at the end of the paper, and remaining - * constants and CRC32+Barrett polynomials remain unchanged. - * - * Replace the index of x from 128 to 512. As follows: - * k1 = ( x ^ ( 512 * 4 + 32 ) mod P(x) << 32 )' << 1 = 0x011542778a - * k2 = ( x ^ ( 512 * 4 - 32 ) mod P(x) << 32 )' << 1 = 0x01322d1430 - * k3 = ( x ^ ( 512 + 32 ) mod P(x) << 32 )' << 1 = 0x0154442bd4 - * k4 = ( x ^ ( 512 - 32 ) mod P(x) << 32 )' << 1 = 0x01c6e41596 - */ - static const uint64_t zalign(64) k1k2[] = { 0x011542778a, 0x01322d1430, - 0x011542778a, 0x01322d1430, - 0x011542778a, 0x01322d1430, - 0x011542778a, 0x01322d1430 }; - static const uint64_t zalign(64) k3k4[] = { 0x0154442bd4, 0x01c6e41596, - 0x0154442bd4, 0x01c6e41596, - 0x0154442bd4, 0x01c6e41596, - 0x0154442bd4, 0x01c6e41596 }; - static const uint64_t zalign(16) k5k6[] = { 0x01751997d0, 0x00ccaa009e }; - static const uint64_t zalign(16) k7k8[] = { 0x0163cd6124, 0x0000000000 }; - static const uint64_t zalign(16) poly[] = { 0x01db710641, 0x01f7011641 }; - __m512i x0, x1, x2, x3, x4, x5, x6, x7, x8, y5, y6, y7, y8; - __m128i a0, a1, a2, a3; - - /* - * There's at least one block of 256. - */ - x1 = _mm512_loadu_si512((__m512i *)(buf + 0x00)); - x2 = _mm512_loadu_si512((__m512i *)(buf + 0x40)); - x3 = _mm512_loadu_si512((__m512i *)(buf + 0x80)); - x4 = _mm512_loadu_si512((__m512i *)(buf + 0xC0)); - - x1 = _mm512_xor_si512(x1, _mm512_castsi128_si512(_mm_cvtsi32_si128(crc))); - - x0 = _mm512_load_si512((__m512i *)k1k2); - - buf += 256; - len -= 256; - - /* - * Parallel fold blocks of 256, if any. - */ - while (len >= 256) - { - x5 = _mm512_clmulepi64_epi128(x1, x0, 0x00); - x6 = _mm512_clmulepi64_epi128(x2, x0, 0x00); - x7 = _mm512_clmulepi64_epi128(x3, x0, 0x00); - x8 = _mm512_clmulepi64_epi128(x4, x0, 0x00); - - - x1 = _mm512_clmulepi64_epi128(x1, x0, 0x11); - x2 = _mm512_clmulepi64_epi128(x2, x0, 0x11); - x3 = _mm512_clmulepi64_epi128(x3, x0, 0x11); - x4 = _mm512_clmulepi64_epi128(x4, x0, 0x11); - - y5 = _mm512_loadu_si512((__m512i *)(buf + 0x00)); - y6 = _mm512_loadu_si512((__m512i *)(buf + 0x40)); - y7 = _mm512_loadu_si512((__m512i *)(buf + 0x80)); - y8 = _mm512_loadu_si512((__m512i *)(buf + 0xC0)); - - x1 = _mm512_xor_si512(x1, x5); - x2 = _mm512_xor_si512(x2, x6); - x3 = _mm512_xor_si512(x3, x7); - x4 = _mm512_xor_si512(x4, x8); - - x1 = _mm512_xor_si512(x1, y5); - x2 = _mm512_xor_si512(x2, y6); - x3 = _mm512_xor_si512(x3, y7); - x4 = _mm512_xor_si512(x4, y8); - - buf += 256; - len -= 256; - } - - /* - * Fold into 512-bits. - */ - x0 = _mm512_load_si512((__m512i *)k3k4); - - x5 = _mm512_clmulepi64_epi128(x1, x0, 0x00); - x1 = _mm512_clmulepi64_epi128(x1, x0, 0x11); - x1 = _mm512_xor_si512(x1, x2); - x1 = _mm512_xor_si512(x1, x5); - - x5 = _mm512_clmulepi64_epi128(x1, x0, 0x00); - x1 = _mm512_clmulepi64_epi128(x1, x0, 0x11); - x1 = _mm512_xor_si512(x1, x3); - x1 = _mm512_xor_si512(x1, x5); - - x5 = _mm512_clmulepi64_epi128(x1, x0, 0x00); - x1 = _mm512_clmulepi64_epi128(x1, x0, 0x11); - x1 = _mm512_xor_si512(x1, x4); - x1 = _mm512_xor_si512(x1, x5); - - /* - * Single fold blocks of 64, if any. - */ - while (len >= 64) - { - x2 = _mm512_loadu_si512((__m512i *)buf); - - x5 = _mm512_clmulepi64_epi128(x1, x0, 0x00); - x1 = _mm512_clmulepi64_epi128(x1, x0, 0x11); - x1 = _mm512_xor_si512(x1, x2); - x1 = _mm512_xor_si512(x1, x5); - - buf += 64; - len -= 64; - } - - /* - * Fold 512-bits to 384-bits. - */ - a0 = _mm_load_si128((__m128i *)k5k6); - - a1 = _mm512_extracti32x4_epi32(x1, 0); - a2 = _mm512_extracti32x4_epi32(x1, 1); - - a3 = _mm_clmulepi64_si128(a1, a0, 0x00); - a1 = _mm_clmulepi64_si128(a1, a0, 0x11); - - a1 = _mm_xor_si128(a1, a3); - a1 = _mm_xor_si128(a1, a2); - - /* - * Fold 384-bits to 256-bits. - */ - a2 = _mm512_extracti32x4_epi32(x1, 2); - a3 = _mm_clmulepi64_si128(a1, a0, 0x00); - a1 = _mm_clmulepi64_si128(a1, a0, 0x11); - a1 = _mm_xor_si128(a1, a3); - a1 = _mm_xor_si128(a1, a2); - - /* - * Fold 256-bits to 128-bits. - */ - a2 = _mm512_extracti32x4_epi32(x1, 3); - a3 = _mm_clmulepi64_si128(a1, a0, 0x00); - a1 = _mm_clmulepi64_si128(a1, a0, 0x11); - a1 = _mm_xor_si128(a1, a3); - a1 = _mm_xor_si128(a1, a2); - - /* - * Fold 128-bits to 64-bits. - */ - a2 = _mm_clmulepi64_si128(a1, a0, 0x10); - a3 = _mm_setr_epi32(~0, 0, ~0, 0); - a1 = _mm_srli_si128(a1, 8); - a1 = _mm_xor_si128(a1, a2); - - a0 = _mm_loadl_epi64((__m128i*)k7k8); - a2 = _mm_srli_si128(a1, 4); - a1 = _mm_and_si128(a1, a3); - a1 = _mm_clmulepi64_si128(a1, a0, 0x00); - a1 = _mm_xor_si128(a1, a2); - - /* - * Barret reduce to 32-bits. - */ - a0 = _mm_load_si128((__m128i*)poly); - - a2 = _mm_and_si128(a1, a3); - a2 = _mm_clmulepi64_si128(a2, a0, 0x10); - a2 = _mm_and_si128(a2, a3); - a2 = _mm_clmulepi64_si128(a2, a0, 0x00); - a1 = _mm_xor_si128(a1, a2); - - /* - * Return the crc32. - */ - return _mm_extract_epi32(a1, 1); -} - -#endif -#if defined(CRC32_SIMD_SSE42_PCLMUL) - -/* - * crc32_sse42_simd_(): compute the crc32 of the buffer, where the buffer - * length must be at least 64, and a multiple of 16. - */ - -#include -#include -#include - -#if defined(__GNUC__) || defined(__clang__) -__attribute__((__target__("sse4.2,pclmul"))) -#endif -uint32_t ZLIB_INTERNAL crc32_sse42_simd_( /* SSE4.2+PCLMUL */ - const unsigned char *buf, - z_size_t len, - uint32_t crc) -{ - /* - * Definitions of the bit-reflected domain constants k1,k2,k3, etc and - * the CRC32+Barrett polynomials given at the end of the paper. - */ - static const uint64_t zalign(16) k1k2[] = { 0x0154442bd4, 0x01c6e41596 }; - static const uint64_t zalign(16) k3k4[] = { 0x01751997d0, 0x00ccaa009e }; - static const uint64_t zalign(16) k5k0[] = { 0x0163cd6124, 0x0000000000 }; - static const uint64_t zalign(16) poly[] = { 0x01db710641, 0x01f7011641 }; - - __m128i x0, x1, x2, x3, x4, x5, x6, x7, x8, y5, y6, y7, y8; - - /* - * There's at least one block of 64. - */ - x1 = _mm_loadu_si128((__m128i *)(buf + 0x00)); - x2 = _mm_loadu_si128((__m128i *)(buf + 0x10)); - x3 = _mm_loadu_si128((__m128i *)(buf + 0x20)); - x4 = _mm_loadu_si128((__m128i *)(buf + 0x30)); - - x1 = _mm_xor_si128(x1, _mm_cvtsi32_si128(crc)); - - x0 = _mm_load_si128((__m128i *)k1k2); - - buf += 64; - len -= 64; - - /* - * Parallel fold blocks of 64, if any. - */ - while (len >= 64) - { - x5 = _mm_clmulepi64_si128(x1, x0, 0x00); - x6 = _mm_clmulepi64_si128(x2, x0, 0x00); - x7 = _mm_clmulepi64_si128(x3, x0, 0x00); - x8 = _mm_clmulepi64_si128(x4, x0, 0x00); - - x1 = _mm_clmulepi64_si128(x1, x0, 0x11); - x2 = _mm_clmulepi64_si128(x2, x0, 0x11); - x3 = _mm_clmulepi64_si128(x3, x0, 0x11); - x4 = _mm_clmulepi64_si128(x4, x0, 0x11); - - y5 = _mm_loadu_si128((__m128i *)(buf + 0x00)); - y6 = _mm_loadu_si128((__m128i *)(buf + 0x10)); - y7 = _mm_loadu_si128((__m128i *)(buf + 0x20)); - y8 = _mm_loadu_si128((__m128i *)(buf + 0x30)); - - x1 = _mm_xor_si128(x1, x5); - x2 = _mm_xor_si128(x2, x6); - x3 = _mm_xor_si128(x3, x7); - x4 = _mm_xor_si128(x4, x8); - - x1 = _mm_xor_si128(x1, y5); - x2 = _mm_xor_si128(x2, y6); - x3 = _mm_xor_si128(x3, y7); - x4 = _mm_xor_si128(x4, y8); - - buf += 64; - len -= 64; - } - - /* - * Fold into 128-bits. - */ - x0 = _mm_load_si128((__m128i *)k3k4); - - x5 = _mm_clmulepi64_si128(x1, x0, 0x00); - x1 = _mm_clmulepi64_si128(x1, x0, 0x11); - x1 = _mm_xor_si128(x1, x2); - x1 = _mm_xor_si128(x1, x5); - - x5 = _mm_clmulepi64_si128(x1, x0, 0x00); - x1 = _mm_clmulepi64_si128(x1, x0, 0x11); - x1 = _mm_xor_si128(x1, x3); - x1 = _mm_xor_si128(x1, x5); - - x5 = _mm_clmulepi64_si128(x1, x0, 0x00); - x1 = _mm_clmulepi64_si128(x1, x0, 0x11); - x1 = _mm_xor_si128(x1, x4); - x1 = _mm_xor_si128(x1, x5); - - /* - * Single fold blocks of 16, if any. - */ - while (len >= 16) - { - x2 = _mm_loadu_si128((__m128i *)buf); - - x5 = _mm_clmulepi64_si128(x1, x0, 0x00); - x1 = _mm_clmulepi64_si128(x1, x0, 0x11); - x1 = _mm_xor_si128(x1, x2); - x1 = _mm_xor_si128(x1, x5); - - buf += 16; - len -= 16; - } - - /* - * Fold 128-bits to 64-bits. - */ - x2 = _mm_clmulepi64_si128(x1, x0, 0x10); - x3 = _mm_setr_epi32(~0, 0, ~0, 0); - x1 = _mm_srli_si128(x1, 8); - x1 = _mm_xor_si128(x1, x2); - - x0 = _mm_loadl_epi64((__m128i*)k5k0); - - x2 = _mm_srli_si128(x1, 4); - x1 = _mm_and_si128(x1, x3); - x1 = _mm_clmulepi64_si128(x1, x0, 0x00); - x1 = _mm_xor_si128(x1, x2); - - /* - * Barret reduce to 32-bits. - */ - x0 = _mm_load_si128((__m128i*)poly); - - x2 = _mm_and_si128(x1, x3); - x2 = _mm_clmulepi64_si128(x2, x0, 0x10); - x2 = _mm_and_si128(x2, x3); - x2 = _mm_clmulepi64_si128(x2, x0, 0x00); - x1 = _mm_xor_si128(x1, x2); - - /* - * Return the crc32. - */ - return _mm_extract_epi32(x1, 1); -} - -#elif defined(CRC32_ARMV8_CRC32) - -/* CRC32 checksums using ARMv8-a crypto instructions. - */ - -#if defined(__clang__) -/* We need some extra types for using PMULL. - */ -#if defined(__aarch64__) -#include -#include -#endif - -/* CRC32 intrinsics are #ifdef'ed out of arm_acle.h unless we build with an - * armv8 target, which is incompatible with ThinLTO optimizations on Android. - * (Namely, mixing and matching different module-level targets makes ThinLTO - * warn, and Android defaults to armv7-a. This restriction does not apply to - * function-level `target`s, however.) - * - * Since we only need four crc intrinsics, and since clang's implementation of - * those are just wrappers around compiler builtins, it's simplest to #define - * those builtins directly. If this #define list grows too much (or we depend on - * an intrinsic that isn't a trivial wrapper), we may have to find a better way - * to go about this. - * - * NOTE: clang currently complains that "'+soft-float-abi' is not a recognized - * feature for this target (ignoring feature)." This appears to be a harmless - * bug in clang. - * - * These definitions must appear *after* including arm_acle.h otherwise that - * header may end up defining functions named __builtin_arm_crc32* that call - * themselves, creating an infinite loop when the intrinsic is called. - */ -/* XXX: Cannot hook into builtins with XCode for arm64. */ -#if !defined(ARMV8_OS_MACOS) -#define __crc32b __builtin_arm_crc32b -#define __crc32d __builtin_arm_crc32d -#define __crc32w __builtin_arm_crc32w -#define __crc32cw __builtin_arm_crc32cw -#endif - -#if defined(__aarch64__) -#define TARGET_ARMV8_WITH_CRC __attribute__((target("arch=armv8-a+aes+crc"))) -#else // !defined(__aarch64__) -#define TARGET_ARMV8_WITH_CRC __attribute__((target("crc"))) -#endif // defined(__aarch64__) - -#elif defined(__GNUC__) -/* For GCC, we are setting CRC extensions at module level, so ThinLTO is not - * allowed. We can just include arm_acle.h. - */ -#include -#include -#define TARGET_ARMV8_WITH_CRC __attribute__((target("arch=armv8-a+crc+crypto"))) -#else // !defined(__GNUC__) && !defined(_aarch64__) -#error ARM CRC32 SIMD extensions only supported for Clang and GCC -#endif - -TARGET_ARMV8_WITH_CRC -uint32_t ZLIB_INTERNAL armv8_crc32_little( - const unsigned char *buf, - z_size_t len, - uint32_t crc) -{ - uint32_t c = (uint32_t) ~crc; - - while (len && ((uintptr_t)buf & 7)) { - c = __crc32b(c, *buf++); - --len; - } - - const uint64_t *buf8 = (const uint64_t *)buf; - - while (len >= 64) { - c = __crc32d(c, *buf8++); - c = __crc32d(c, *buf8++); - c = __crc32d(c, *buf8++); - c = __crc32d(c, *buf8++); - - c = __crc32d(c, *buf8++); - c = __crc32d(c, *buf8++); - c = __crc32d(c, *buf8++); - c = __crc32d(c, *buf8++); - len -= 64; - } - - while (len >= 8) { - c = __crc32d(c, *buf8++); - len -= 8; - } - - buf = (const unsigned char *)buf8; - - while (len--) { - c = __crc32b(c, *buf++); - } - - return ~c; -} - -#if defined(__aarch64__) || defined(ARMV8_OS_MACOS) /* aarch64 specific code. */ - -/* - * crc32_pmull_simd_(): compute the crc32 of the buffer, where the buffer - * length must be at least 64, and a multiple of 16. Based on: - * - * "Fast CRC Computation for Generic Polynomials Using PCLMULQDQ Instruction" - * V. Gopal, E. Ozturk, et al., 2009, http://intel.ly/2ySEwL0 - */ -TARGET_ARMV8_WITH_CRC -static inline uint8x16_t pmull_lo(const uint64x2_t a, const uint64x2_t b) -{ - uint8x16_t r; - __asm__ __volatile__ ("pmull %0.1q, %1.1d, %2.1d \n\t" - : "=w" (r) : "w" (a), "w" (b) ); - return r; -} - -TARGET_ARMV8_WITH_CRC -static inline uint8x16_t pmull_01(const uint64x2_t a, const uint64x2_t b) -{ - uint8x16_t r; - __asm__ __volatile__ ("pmull %0.1q, %1.1d, %2.1d \n\t" - : "=w" (r) : "w" (a), "w" (vgetq_lane_u64(b, 1)) ); - return r; -} - -TARGET_ARMV8_WITH_CRC -static inline uint8x16_t pmull_hi(const uint64x2_t a, const uint64x2_t b) -{ - uint8x16_t r; - __asm__ __volatile__ ("pmull2 %0.1q, %1.2d, %2.2d \n\t" - : "=w" (r) : "w" (a), "w" (b) ); - return r; -} - -TARGET_ARMV8_WITH_CRC -uint32_t ZLIB_INTERNAL armv8_crc32_pmull_little( - const unsigned char *buf, - z_size_t len, - uint32_t crc) -{ - /* - * Definitions of the bit-reflected domain constants k1,k2,k3, etc and - * the CRC32+Barrett polynomials given at the end of the paper. - */ - static const uint64_t zalign(16) k1k2[] = { 0x0154442bd4, 0x01c6e41596 }; - static const uint64_t zalign(16) k3k4[] = { 0x01751997d0, 0x00ccaa009e }; - static const uint64_t zalign(16) k5k0[] = { 0x0163cd6124, 0x0000000000 }; - static const uint64_t zalign(16) poly[] = { 0x01db710641, 0x01f7011641 }; - - uint64x2_t x0, x1, x2, x3, x4, x5, x6, x7, x8, y5, y6, y7, y8; - - /* - * There's at least one block of 64. - */ - x1 = vld1q_u64((const uint64_t *)(buf + 0x00)); - x2 = vld1q_u64((const uint64_t *)(buf + 0x10)); - x3 = vld1q_u64((const uint64_t *)(buf + 0x20)); - x4 = vld1q_u64((const uint64_t *)(buf + 0x30)); - - x1 = veorq_u64(x1, (uint64x2_t) vsetq_lane_u32(crc, vdupq_n_u32(0), 0)); - - x0 = vld1q_u64(k1k2); - - buf += 64; - len -= 64; - - /* - * Parallel fold blocks of 64, if any. - */ - while (len >= 64) - { - x5 = (uint64x2_t) pmull_lo(x1, x0); - x6 = (uint64x2_t) pmull_lo(x2, x0); - x7 = (uint64x2_t) pmull_lo(x3, x0); - x8 = (uint64x2_t) pmull_lo(x4, x0); - - y5 = vld1q_u64((const uint64_t *)(buf + 0x00)); - y6 = vld1q_u64((const uint64_t *)(buf + 0x10)); - y7 = vld1q_u64((const uint64_t *)(buf + 0x20)); - y8 = vld1q_u64((const uint64_t *)(buf + 0x30)); - - x1 = (uint64x2_t) pmull_hi(x1, x0); - x2 = (uint64x2_t) pmull_hi(x2, x0); - x3 = (uint64x2_t) pmull_hi(x3, x0); - x4 = (uint64x2_t) pmull_hi(x4, x0); - - x1 = veorq_u64(x1, x5); - x2 = veorq_u64(x2, x6); - x3 = veorq_u64(x3, x7); - x4 = veorq_u64(x4, x8); - - x1 = veorq_u64(x1, y5); - x2 = veorq_u64(x2, y6); - x3 = veorq_u64(x3, y7); - x4 = veorq_u64(x4, y8); - - buf += 64; - len -= 64; - } - - /* - * Fold into 128-bits. - */ - x0 = vld1q_u64(k3k4); - - x5 = (uint64x2_t) pmull_lo(x1, x0); - x1 = (uint64x2_t) pmull_hi(x1, x0); - x1 = veorq_u64(x1, x2); - x1 = veorq_u64(x1, x5); - - x5 = (uint64x2_t) pmull_lo(x1, x0); - x1 = (uint64x2_t) pmull_hi(x1, x0); - x1 = veorq_u64(x1, x3); - x1 = veorq_u64(x1, x5); - - x5 = (uint64x2_t) pmull_lo(x1, x0); - x1 = (uint64x2_t) pmull_hi(x1, x0); - x1 = veorq_u64(x1, x4); - x1 = veorq_u64(x1, x5); - - /* - * Single fold blocks of 16, if any. - */ - while (len >= 16) - { - x2 = vld1q_u64((const uint64_t *)buf); - - x5 = (uint64x2_t) pmull_lo(x1, x0); - x1 = (uint64x2_t) pmull_hi(x1, x0); - x1 = veorq_u64(x1, x2); - x1 = veorq_u64(x1, x5); - - buf += 16; - len -= 16; - } - - /* - * Fold 128-bits to 64-bits. - */ - static uint32_t zalign(16) mask[] = { ~0u, 0u, ~0u, 0u }; - - x2 = (uint64x2_t) pmull_01(x1, x0); - x1 = (uint64x2_t) vextq_u8(vreinterpretq_u8_u64(x1), vdupq_n_u8(0), 8); - x3 = (uint64x2_t) vld1q_u32(mask); - x1 = veorq_u64(x1, x2); - - x0 = vld1q_u64(k5k0); - - x2 = (uint64x2_t) pmull_01(x2, x0); - x2 = (uint64x2_t) vextq_u8(vreinterpretq_u8_u64(x1), vdupq_n_u8(0), 4); - x1 = vandq_u64(x1, x3); - x1 = (uint64x2_t) pmull_lo(x1, x0); - x1 = veorq_u64(x1, x2); - - /* - * Barret reduce to 32-bits. - */ - x0 = vld1q_u64(poly); - - x2 = vandq_u64(x1, x3); - x2 = (uint64x2_t) pmull_01(x2, x0); - x2 = vandq_u64(x2, x3); - x2 = (uint64x2_t) pmull_lo(x2, x0); - x1 = veorq_u64(x1, x2); - - /* - * Return the crc32. - */ - return vgetq_lane_u32(vreinterpretq_u32_u64(x1), 1); -} -#endif /* aarch64 specific code. */ - -#endif diff --git a/packages/runtime/vendor/zlib/crc32_simd.h b/packages/runtime/vendor/zlib/crc32_simd.h deleted file mode 100644 index 84624647b..000000000 --- a/packages/runtime/vendor/zlib/crc32_simd.h +++ /dev/null @@ -1,57 +0,0 @@ -/* crc32_simd.h - * - * Copyright 2017 The Chromium Authors - * Use of this source code is governed by a BSD-style license that can be - * found in the Chromium source repository LICENSE file. - */ - -#include - -#include "zconf.h" -#include "zutil.h" -#include "deflate.h" - -/* - * crc32_sse42_simd_(): compute the crc32 of the buffer, where the buffer - * length must be at least 64, and a multiple of 16. - */ -uint32_t ZLIB_INTERNAL crc32_sse42_simd_(const unsigned char* buf, - z_size_t len, - uint32_t crc); - -uint32_t ZLIB_INTERNAL crc32_avx512_simd_(const unsigned char* buf, - z_size_t len, - uint32_t crc); - -/* - * crc32_sse42_simd_ buffer size constraints: see the use in zlib/crc32.c - * for computing the crc32 of an arbitrary length buffer. - */ -#define Z_CRC32_SSE42_MINIMUM_LENGTH 64 -#define Z_CRC32_SSE42_CHUNKSIZE_MASK 15 -#define Z_CRC32_AVX512_MINIMUM_LENGTH 256 -#define Z_CRC32_AVX512_CHUNKSIZE_MASK 63 - -/* - * CRC32 checksums using ARMv8-a crypto instructions. - */ -uint32_t ZLIB_INTERNAL armv8_crc32_little(const unsigned char* buf, - z_size_t len, - uint32_t crc); - -/* aarch64 specific code. */ -#if defined(__aarch64__) - -/* 128 is the sweet spot at the time of coding (late 2020). */ -#define Z_CRC32_PMULL_MINIMUM_LENGTH 128 -#define Z_CRC32_PMULL_CHUNKSIZE_MASK 15 - -/* - * CRC32 checksums using ARMv8-a PMULL instructions, where the buffer - * length must be at least 64, and a multiple of 16. - */ -uint32_t ZLIB_INTERNAL armv8_crc32_pmull_little(const unsigned char* buf, - z_size_t len, - uint32_t crc); - -#endif diff --git a/packages/runtime/vendor/zlib/crc_folding.c b/packages/runtime/vendor/zlib/crc_folding.c deleted file mode 100644 index 3e31ae4a7..000000000 --- a/packages/runtime/vendor/zlib/crc_folding.c +++ /dev/null @@ -1,513 +0,0 @@ -/* - * Compute the CRC32 using a parallelized folding approach with the PCLMULQDQ - * instruction. - * - * A white paper describing this algorithm can be found at: - * http://www.intel.com/content/dam/www/public/us/en/documents/white-papers/fast-crc-computation-generic-polynomials-pclmulqdq-paper.pdf - * - * Copyright (C) 2013 Intel Corporation. All rights reserved. - * Authors: - * Wajdi Feghali - * Jim Guilford - * Vinodh Gopal - * Erdinc Ozturk - * Jim Kukunas - * - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -#include "deflate.h" - -#ifdef CRC32_SIMD_SSE42_PCLMUL - -#include -#include -#include -#include - -#if defined(__GNUC__) || defined(__clang__) -#define TARGET_SSE42_PCLMUL __attribute__((__target__("sse4.2,pclmul"))) -#else -#define TARGET_SSE42_PCLMUL -#endif - -#define CRC_LOAD(s) \ - do { \ - __m128i xmm_crc0 = _mm_loadu_si128((__m128i *)s->crc0 + 0);\ - __m128i xmm_crc1 = _mm_loadu_si128((__m128i *)s->crc0 + 1);\ - __m128i xmm_crc2 = _mm_loadu_si128((__m128i *)s->crc0 + 2);\ - __m128i xmm_crc3 = _mm_loadu_si128((__m128i *)s->crc0 + 3);\ - __m128i xmm_crc_part = _mm_loadu_si128((__m128i *)s->crc0 + 4); - -#define CRC_SAVE(s) \ - _mm_storeu_si128((__m128i *)s->crc0 + 0, xmm_crc0);\ - _mm_storeu_si128((__m128i *)s->crc0 + 1, xmm_crc1);\ - _mm_storeu_si128((__m128i *)s->crc0 + 2, xmm_crc2);\ - _mm_storeu_si128((__m128i *)s->crc0 + 3, xmm_crc3);\ - _mm_storeu_si128((__m128i *)s->crc0 + 4, xmm_crc_part);\ - } while (0); - -TARGET_SSE42_PCLMUL -ZLIB_INTERNAL void crc_fold_init(deflate_state *const s) -{ - CRC_LOAD(s) - - xmm_crc0 = _mm_cvtsi32_si128(0x9db42487); - xmm_crc1 = _mm_setzero_si128(); - xmm_crc2 = _mm_setzero_si128(); - xmm_crc3 = _mm_setzero_si128(); - - CRC_SAVE(s) - - s->strm->adler = 0; -} - -TARGET_SSE42_PCLMUL -local void fold_1(deflate_state *const s, - __m128i *xmm_crc0, __m128i *xmm_crc1, - __m128i *xmm_crc2, __m128i *xmm_crc3) -{ - const __m128i xmm_fold4 = _mm_set_epi32( - 0x00000001, 0x54442bd4, - 0x00000001, 0xc6e41596); - - __m128i x_tmp3; - __m128 ps_crc0, ps_crc3, ps_res; - - x_tmp3 = *xmm_crc3; - - *xmm_crc3 = *xmm_crc0; - *xmm_crc0 = _mm_clmulepi64_si128(*xmm_crc0, xmm_fold4, 0x01); - *xmm_crc3 = _mm_clmulepi64_si128(*xmm_crc3, xmm_fold4, 0x10); - ps_crc0 = _mm_castsi128_ps(*xmm_crc0); - ps_crc3 = _mm_castsi128_ps(*xmm_crc3); - ps_res = _mm_xor_ps(ps_crc0, ps_crc3); - - *xmm_crc0 = *xmm_crc1; - *xmm_crc1 = *xmm_crc2; - *xmm_crc2 = x_tmp3; - *xmm_crc3 = _mm_castps_si128(ps_res); -} - -TARGET_SSE42_PCLMUL -local void fold_2(deflate_state *const s, - __m128i *xmm_crc0, __m128i *xmm_crc1, - __m128i *xmm_crc2, __m128i *xmm_crc3) -{ - const __m128i xmm_fold4 = _mm_set_epi32( - 0x00000001, 0x54442bd4, - 0x00000001, 0xc6e41596); - - __m128i x_tmp3, x_tmp2; - __m128 ps_crc0, ps_crc1, ps_crc2, ps_crc3, ps_res31, ps_res20; - - x_tmp3 = *xmm_crc3; - x_tmp2 = *xmm_crc2; - - *xmm_crc3 = *xmm_crc1; - *xmm_crc1 = _mm_clmulepi64_si128(*xmm_crc1, xmm_fold4, 0x01); - *xmm_crc3 = _mm_clmulepi64_si128(*xmm_crc3, xmm_fold4, 0x10); - ps_crc3 = _mm_castsi128_ps(*xmm_crc3); - ps_crc1 = _mm_castsi128_ps(*xmm_crc1); - ps_res31= _mm_xor_ps(ps_crc3, ps_crc1); - - *xmm_crc2 = *xmm_crc0; - *xmm_crc0 = _mm_clmulepi64_si128(*xmm_crc0, xmm_fold4, 0x01); - *xmm_crc2 = _mm_clmulepi64_si128(*xmm_crc2, xmm_fold4, 0x10); - ps_crc0 = _mm_castsi128_ps(*xmm_crc0); - ps_crc2 = _mm_castsi128_ps(*xmm_crc2); - ps_res20= _mm_xor_ps(ps_crc0, ps_crc2); - - *xmm_crc0 = x_tmp2; - *xmm_crc1 = x_tmp3; - *xmm_crc2 = _mm_castps_si128(ps_res20); - *xmm_crc3 = _mm_castps_si128(ps_res31); -} - -TARGET_SSE42_PCLMUL -local void fold_3(deflate_state *const s, - __m128i *xmm_crc0, __m128i *xmm_crc1, - __m128i *xmm_crc2, __m128i *xmm_crc3) -{ - const __m128i xmm_fold4 = _mm_set_epi32( - 0x00000001, 0x54442bd4, - 0x00000001, 0xc6e41596); - - __m128i x_tmp3; - __m128 ps_crc0, ps_crc1, ps_crc2, ps_crc3, ps_res32, ps_res21, ps_res10; - - x_tmp3 = *xmm_crc3; - - *xmm_crc3 = *xmm_crc2; - *xmm_crc2 = _mm_clmulepi64_si128(*xmm_crc2, xmm_fold4, 0x01); - *xmm_crc3 = _mm_clmulepi64_si128(*xmm_crc3, xmm_fold4, 0x10); - ps_crc2 = _mm_castsi128_ps(*xmm_crc2); - ps_crc3 = _mm_castsi128_ps(*xmm_crc3); - ps_res32 = _mm_xor_ps(ps_crc2, ps_crc3); - - *xmm_crc2 = *xmm_crc1; - *xmm_crc1 = _mm_clmulepi64_si128(*xmm_crc1, xmm_fold4, 0x01); - *xmm_crc2 = _mm_clmulepi64_si128(*xmm_crc2, xmm_fold4, 0x10); - ps_crc1 = _mm_castsi128_ps(*xmm_crc1); - ps_crc2 = _mm_castsi128_ps(*xmm_crc2); - ps_res21= _mm_xor_ps(ps_crc1, ps_crc2); - - *xmm_crc1 = *xmm_crc0; - *xmm_crc0 = _mm_clmulepi64_si128(*xmm_crc0, xmm_fold4, 0x01); - *xmm_crc1 = _mm_clmulepi64_si128(*xmm_crc1, xmm_fold4, 0x10); - ps_crc0 = _mm_castsi128_ps(*xmm_crc0); - ps_crc1 = _mm_castsi128_ps(*xmm_crc1); - ps_res10= _mm_xor_ps(ps_crc0, ps_crc1); - - *xmm_crc0 = x_tmp3; - *xmm_crc1 = _mm_castps_si128(ps_res10); - *xmm_crc2 = _mm_castps_si128(ps_res21); - *xmm_crc3 = _mm_castps_si128(ps_res32); -} - -TARGET_SSE42_PCLMUL -local void fold_4(deflate_state *const s, - __m128i *xmm_crc0, __m128i *xmm_crc1, - __m128i *xmm_crc2, __m128i *xmm_crc3) -{ - const __m128i xmm_fold4 = _mm_set_epi32( - 0x00000001, 0x54442bd4, - 0x00000001, 0xc6e41596); - - __m128i x_tmp0, x_tmp1, x_tmp2, x_tmp3; - __m128 ps_crc0, ps_crc1, ps_crc2, ps_crc3; - __m128 ps_t0, ps_t1, ps_t2, ps_t3; - __m128 ps_res0, ps_res1, ps_res2, ps_res3; - - x_tmp0 = *xmm_crc0; - x_tmp1 = *xmm_crc1; - x_tmp2 = *xmm_crc2; - x_tmp3 = *xmm_crc3; - - *xmm_crc0 = _mm_clmulepi64_si128(*xmm_crc0, xmm_fold4, 0x01); - x_tmp0 = _mm_clmulepi64_si128(x_tmp0, xmm_fold4, 0x10); - ps_crc0 = _mm_castsi128_ps(*xmm_crc0); - ps_t0 = _mm_castsi128_ps(x_tmp0); - ps_res0 = _mm_xor_ps(ps_crc0, ps_t0); - - *xmm_crc1 = _mm_clmulepi64_si128(*xmm_crc1, xmm_fold4, 0x01); - x_tmp1 = _mm_clmulepi64_si128(x_tmp1, xmm_fold4, 0x10); - ps_crc1 = _mm_castsi128_ps(*xmm_crc1); - ps_t1 = _mm_castsi128_ps(x_tmp1); - ps_res1 = _mm_xor_ps(ps_crc1, ps_t1); - - *xmm_crc2 = _mm_clmulepi64_si128(*xmm_crc2, xmm_fold4, 0x01); - x_tmp2 = _mm_clmulepi64_si128(x_tmp2, xmm_fold4, 0x10); - ps_crc2 = _mm_castsi128_ps(*xmm_crc2); - ps_t2 = _mm_castsi128_ps(x_tmp2); - ps_res2 = _mm_xor_ps(ps_crc2, ps_t2); - - *xmm_crc3 = _mm_clmulepi64_si128(*xmm_crc3, xmm_fold4, 0x01); - x_tmp3 = _mm_clmulepi64_si128(x_tmp3, xmm_fold4, 0x10); - ps_crc3 = _mm_castsi128_ps(*xmm_crc3); - ps_t3 = _mm_castsi128_ps(x_tmp3); - ps_res3 = _mm_xor_ps(ps_crc3, ps_t3); - - *xmm_crc0 = _mm_castps_si128(ps_res0); - *xmm_crc1 = _mm_castps_si128(ps_res1); - *xmm_crc2 = _mm_castps_si128(ps_res2); - *xmm_crc3 = _mm_castps_si128(ps_res3); -} - -local const unsigned zalign(32) pshufb_shf_table[60] = { - 0x84838281,0x88878685,0x8c8b8a89,0x008f8e8d, /* shl 15 (16 - 1)/shr1 */ - 0x85848382,0x89888786,0x8d8c8b8a,0x01008f8e, /* shl 14 (16 - 3)/shr2 */ - 0x86858483,0x8a898887,0x8e8d8c8b,0x0201008f, /* shl 13 (16 - 4)/shr3 */ - 0x87868584,0x8b8a8988,0x8f8e8d8c,0x03020100, /* shl 12 (16 - 4)/shr4 */ - 0x88878685,0x8c8b8a89,0x008f8e8d,0x04030201, /* shl 11 (16 - 5)/shr5 */ - 0x89888786,0x8d8c8b8a,0x01008f8e,0x05040302, /* shl 10 (16 - 6)/shr6 */ - 0x8a898887,0x8e8d8c8b,0x0201008f,0x06050403, /* shl 9 (16 - 7)/shr7 */ - 0x8b8a8988,0x8f8e8d8c,0x03020100,0x07060504, /* shl 8 (16 - 8)/shr8 */ - 0x8c8b8a89,0x008f8e8d,0x04030201,0x08070605, /* shl 7 (16 - 9)/shr9 */ - 0x8d8c8b8a,0x01008f8e,0x05040302,0x09080706, /* shl 6 (16 -10)/shr10*/ - 0x8e8d8c8b,0x0201008f,0x06050403,0x0a090807, /* shl 5 (16 -11)/shr11*/ - 0x8f8e8d8c,0x03020100,0x07060504,0x0b0a0908, /* shl 4 (16 -12)/shr12*/ - 0x008f8e8d,0x04030201,0x08070605,0x0c0b0a09, /* shl 3 (16 -13)/shr13*/ - 0x01008f8e,0x05040302,0x09080706,0x0d0c0b0a, /* shl 2 (16 -14)/shr14*/ - 0x0201008f,0x06050403,0x0a090807,0x0e0d0c0b /* shl 1 (16 -15)/shr15*/ -}; - -TARGET_SSE42_PCLMUL -local void partial_fold(deflate_state *const s, const size_t len, - __m128i *xmm_crc0, __m128i *xmm_crc1, - __m128i *xmm_crc2, __m128i *xmm_crc3, - __m128i *xmm_crc_part) -{ - - const __m128i xmm_fold4 = _mm_set_epi32( - 0x00000001, 0x54442bd4, - 0x00000001, 0xc6e41596); - const __m128i xmm_mask3 = _mm_set1_epi32(0x80808080); - - __m128i xmm_shl, xmm_shr, xmm_tmp1, xmm_tmp2, xmm_tmp3; - __m128i xmm_a0_0, xmm_a0_1; - __m128 ps_crc3, psa0_0, psa0_1, ps_res; - - xmm_shl = _mm_load_si128((__m128i *)pshufb_shf_table + (len - 1)); - xmm_shr = xmm_shl; - xmm_shr = _mm_xor_si128(xmm_shr, xmm_mask3); - - xmm_a0_0 = _mm_shuffle_epi8(*xmm_crc0, xmm_shl); - - *xmm_crc0 = _mm_shuffle_epi8(*xmm_crc0, xmm_shr); - xmm_tmp1 = _mm_shuffle_epi8(*xmm_crc1, xmm_shl); - *xmm_crc0 = _mm_or_si128(*xmm_crc0, xmm_tmp1); - - *xmm_crc1 = _mm_shuffle_epi8(*xmm_crc1, xmm_shr); - xmm_tmp2 = _mm_shuffle_epi8(*xmm_crc2, xmm_shl); - *xmm_crc1 = _mm_or_si128(*xmm_crc1, xmm_tmp2); - - *xmm_crc2 = _mm_shuffle_epi8(*xmm_crc2, xmm_shr); - xmm_tmp3 = _mm_shuffle_epi8(*xmm_crc3, xmm_shl); - *xmm_crc2 = _mm_or_si128(*xmm_crc2, xmm_tmp3); - - *xmm_crc3 = _mm_shuffle_epi8(*xmm_crc3, xmm_shr); - *xmm_crc_part = _mm_shuffle_epi8(*xmm_crc_part, xmm_shl); - *xmm_crc3 = _mm_or_si128(*xmm_crc3, *xmm_crc_part); - - xmm_a0_1 = _mm_clmulepi64_si128(xmm_a0_0, xmm_fold4, 0x10); - xmm_a0_0 = _mm_clmulepi64_si128(xmm_a0_0, xmm_fold4, 0x01); - - ps_crc3 = _mm_castsi128_ps(*xmm_crc3); - psa0_0 = _mm_castsi128_ps(xmm_a0_0); - psa0_1 = _mm_castsi128_ps(xmm_a0_1); - - ps_res = _mm_xor_ps(ps_crc3, psa0_0); - ps_res = _mm_xor_ps(ps_res, psa0_1); - - *xmm_crc3 = _mm_castps_si128(ps_res); -} - -TARGET_SSE42_PCLMUL -ZLIB_INTERNAL void crc_fold_copy(deflate_state *const s, - unsigned char *dst, const unsigned char *src, long len) -{ - unsigned long algn_diff; - __m128i xmm_t0, xmm_t1, xmm_t2, xmm_t3; - - CRC_LOAD(s) - - if (len < 16) { - if (len == 0) - return; - goto partial; - } - - algn_diff = (0 - (uintptr_t)src) & 0xF; - if (algn_diff) { - xmm_crc_part = _mm_loadu_si128((__m128i *)src); - _mm_storeu_si128((__m128i *)dst, xmm_crc_part); - - dst += algn_diff; - src += algn_diff; - len -= algn_diff; - - partial_fold(s, algn_diff, &xmm_crc0, &xmm_crc1, &xmm_crc2, &xmm_crc3, - &xmm_crc_part); - } - - while ((len -= 64) >= 0) { - xmm_t0 = _mm_load_si128((__m128i *)src); - xmm_t1 = _mm_load_si128((__m128i *)src + 1); - xmm_t2 = _mm_load_si128((__m128i *)src + 2); - xmm_t3 = _mm_load_si128((__m128i *)src + 3); - - fold_4(s, &xmm_crc0, &xmm_crc1, &xmm_crc2, &xmm_crc3); - - _mm_storeu_si128((__m128i *)dst, xmm_t0); - _mm_storeu_si128((__m128i *)dst + 1, xmm_t1); - _mm_storeu_si128((__m128i *)dst + 2, xmm_t2); - _mm_storeu_si128((__m128i *)dst + 3, xmm_t3); - - xmm_crc0 = _mm_xor_si128(xmm_crc0, xmm_t0); - xmm_crc1 = _mm_xor_si128(xmm_crc1, xmm_t1); - xmm_crc2 = _mm_xor_si128(xmm_crc2, xmm_t2); - xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_t3); - - src += 64; - dst += 64; - } - - /* - * len = num bytes left - 64 - */ - if (len + 16 >= 0) { - len += 16; - - xmm_t0 = _mm_load_si128((__m128i *)src); - xmm_t1 = _mm_load_si128((__m128i *)src + 1); - xmm_t2 = _mm_load_si128((__m128i *)src + 2); - - fold_3(s, &xmm_crc0, &xmm_crc1, &xmm_crc2, &xmm_crc3); - - _mm_storeu_si128((__m128i *)dst, xmm_t0); - _mm_storeu_si128((__m128i *)dst + 1, xmm_t1); - _mm_storeu_si128((__m128i *)dst + 2, xmm_t2); - - xmm_crc1 = _mm_xor_si128(xmm_crc1, xmm_t0); - xmm_crc2 = _mm_xor_si128(xmm_crc2, xmm_t1); - xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_t2); - - if (len == 0) - goto done; - - dst += 48; - src += 48; - } else if (len + 32 >= 0) { - len += 32; - - xmm_t0 = _mm_load_si128((__m128i *)src); - xmm_t1 = _mm_load_si128((__m128i *)src + 1); - - fold_2(s, &xmm_crc0, &xmm_crc1, &xmm_crc2, &xmm_crc3); - - _mm_storeu_si128((__m128i *)dst, xmm_t0); - _mm_storeu_si128((__m128i *)dst + 1, xmm_t1); - - xmm_crc2 = _mm_xor_si128(xmm_crc2, xmm_t0); - xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_t1); - - if (len == 0) - goto done; - - dst += 32; - src += 32; - } else if (len + 48 >= 0) { - len += 48; - - xmm_t0 = _mm_load_si128((__m128i *)src); - - fold_1(s, &xmm_crc0, &xmm_crc1, &xmm_crc2, &xmm_crc3); - - _mm_storeu_si128((__m128i *)dst, xmm_t0); - - xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_t0); - - if (len == 0) - goto done; - - dst += 16; - src += 16; - } else { - len += 64; - if (len == 0) - goto done; - } - -partial: - -#if defined(_MSC_VER) - /* VS does not permit the use of _mm_set_epi64x in 32-bit builds */ - { - int32_t parts[4] = {0, 0, 0, 0}; - memcpy(&parts, src, len); - xmm_crc_part = _mm_set_epi32(parts[3], parts[2], parts[1], parts[0]); - } -#else - { - int64_t parts[2] = {0, 0}; - memcpy(&parts, src, len); - xmm_crc_part = _mm_set_epi64x(parts[1], parts[0]); - } -#endif - - zmemcpy(dst, src, len); /* TODO: Possibly generate more efficient code. */ - partial_fold(s, len, &xmm_crc0, &xmm_crc1, &xmm_crc2, &xmm_crc3, - &xmm_crc_part); -done: - CRC_SAVE(s) -} - -local const unsigned zalign(16) crc_k[] = { - 0xccaa009e, 0x00000000, /* rk1 */ - 0x751997d0, 0x00000001, /* rk2 */ - 0xccaa009e, 0x00000000, /* rk5 */ - 0x63cd6124, 0x00000001, /* rk6 */ - 0xf7011640, 0x00000001, /* rk7 */ - 0xdb710640, 0x00000001 /* rk8 */ -}; - -local const unsigned zalign(16) crc_mask[4] = { - 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x00000000 -}; - -local const unsigned zalign(16) crc_mask2[4] = { - 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF -}; - -TARGET_SSE42_PCLMUL -unsigned ZLIB_INTERNAL crc_fold_512to32(deflate_state *const s) -{ - const __m128i xmm_mask = _mm_load_si128((__m128i *)crc_mask); - const __m128i xmm_mask2 = _mm_load_si128((__m128i *)crc_mask2); - - unsigned crc; - __m128i x_tmp0, x_tmp1, x_tmp2, crc_fold; - - __m128i xmm_crc0 = _mm_loadu_si128((__m128i *)s->crc0 + 0); - __m128i xmm_crc1 = _mm_loadu_si128((__m128i *)s->crc0 + 1); - __m128i xmm_crc2 = _mm_loadu_si128((__m128i *)s->crc0 + 2); - __m128i xmm_crc3 = _mm_loadu_si128((__m128i *)s->crc0 + 3); - - /* - * k1 - */ - crc_fold = _mm_load_si128((__m128i *)crc_k); - - x_tmp0 = _mm_clmulepi64_si128(xmm_crc0, crc_fold, 0x10); - xmm_crc0 = _mm_clmulepi64_si128(xmm_crc0, crc_fold, 0x01); - xmm_crc1 = _mm_xor_si128(xmm_crc1, x_tmp0); - xmm_crc1 = _mm_xor_si128(xmm_crc1, xmm_crc0); - - x_tmp1 = _mm_clmulepi64_si128(xmm_crc1, crc_fold, 0x10); - xmm_crc1 = _mm_clmulepi64_si128(xmm_crc1, crc_fold, 0x01); - xmm_crc2 = _mm_xor_si128(xmm_crc2, x_tmp1); - xmm_crc2 = _mm_xor_si128(xmm_crc2, xmm_crc1); - - x_tmp2 = _mm_clmulepi64_si128(xmm_crc2, crc_fold, 0x10); - xmm_crc2 = _mm_clmulepi64_si128(xmm_crc2, crc_fold, 0x01); - xmm_crc3 = _mm_xor_si128(xmm_crc3, x_tmp2); - xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_crc2); - - /* - * k5 - */ - crc_fold = _mm_load_si128((__m128i *)crc_k + 1); - - xmm_crc0 = xmm_crc3; - xmm_crc3 = _mm_clmulepi64_si128(xmm_crc3, crc_fold, 0); - xmm_crc0 = _mm_srli_si128(xmm_crc0, 8); - xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_crc0); - - xmm_crc0 = xmm_crc3; - xmm_crc3 = _mm_slli_si128(xmm_crc3, 4); - xmm_crc3 = _mm_clmulepi64_si128(xmm_crc3, crc_fold, 0x10); - xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_crc0); - xmm_crc3 = _mm_and_si128(xmm_crc3, xmm_mask2); - - /* - * k7 - */ - xmm_crc1 = xmm_crc3; - xmm_crc2 = xmm_crc3; - crc_fold = _mm_load_si128((__m128i *)crc_k + 2); - - xmm_crc3 = _mm_clmulepi64_si128(xmm_crc3, crc_fold, 0); - xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_crc2); - xmm_crc3 = _mm_and_si128(xmm_crc3, xmm_mask); - - xmm_crc2 = xmm_crc3; - xmm_crc3 = _mm_clmulepi64_si128(xmm_crc3, crc_fold, 0x10); - xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_crc2); - xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_crc1); - - crc = _mm_extract_epi32(xmm_crc3, 2); - return ~crc; -} - -#endif /* CRC32_SIMD_SSE42_PCLMUL */ diff --git a/packages/runtime/vendor/zlib/deflate.c b/packages/runtime/vendor/zlib/deflate.c index b98a985e5..012ea8148 100644 --- a/packages/runtime/vendor/zlib/deflate.c +++ b/packages/runtime/vendor/zlib/deflate.c @@ -1,5 +1,5 @@ /* deflate.c -- compress data using the deflation algorithm - * Copyright (C) 1995-2026 Jean-loup Gailly and Mark Adler + * Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -37,7 +37,7 @@ * REFERENCES * * Deutsch, L.P.,"DEFLATE Compressed Data Format Specification". - * Available at https://datatracker.ietf.org/doc/html/rfc1951 + * Available in http://tools.ietf.org/html/rfc1951 * * A description of the Rabin and Karp algorithm is given in the book * "Algorithms" by R. Sedgewick, Addison-Wesley, p252. @@ -48,30 +48,11 @@ */ /* @(#) $Id$ */ -#include + #include "deflate.h" -#include "cpu_features.h" - -#if defined(DEFLATE_SLIDE_HASH_SSE2) || defined(DEFLATE_SLIDE_HASH_NEON) -#include "slide_hash_simd.h" -#endif - -#include "compare256.h" - -#if defined(QAT_COMPRESSION_ENABLED) -#include "contrib/qat/deflate_qat.h" -#endif - -#include "contrib/optimizations/insert_string.h" - -#ifdef FASTEST -/* See http://crbug.com/1113596 */ -#error "FASTEST is not supported in Chromium's zlib." -#endif - const char deflate_copyright[] = - " deflate 1.3.2.1 Copyright 1995-2026 Jean-loup Gailly and Mark Adler "; + " deflate 1.3.1 Copyright 1995-2024 Jean-loup Gailly and Mark Adler "; /* If you use the zlib library in a product, an acknowledgment is welcome in the documentation of your product. If for some reason you cannot @@ -97,11 +78,6 @@ local block_state deflate_slow(deflate_state *s, int flush); local block_state deflate_rle(deflate_state *s, int flush); local block_state deflate_huff(deflate_state *s, int flush); -/* From crc32.c */ -extern void ZLIB_INTERNAL crc_reset(deflate_state *const s); -extern void ZLIB_INTERNAL crc_finalize(deflate_state *const s); -extern void ZLIB_INTERNAL copy_with_crc(z_streamp strm, Bytef *dst, long size); - /* =========================================================================== * Local data */ @@ -156,17 +132,46 @@ local const config configuration_table[10] = { /* rank Z_BLOCK between Z_NO_FLUSH and Z_PARTIAL_FLUSH */ #define RANK(f) (((f) * 2) - ((f) > 4 ? 9 : 0)) +/* =========================================================================== + * Update a hash value with the given input byte + * IN assertion: all calls to UPDATE_HASH are made with consecutive input + * characters, so that a running hash key can be computed from the previous + * key instead of complete recalculation each time. + */ +#define UPDATE_HASH(s,h,c) (h = (((h) << s->hash_shift) ^ (c)) & s->hash_mask) + + +/* =========================================================================== + * Insert string str in the dictionary and set match_head to the previous head + * of the hash chain (the most recent string with same hash key). Return + * the previous length of the hash chain. + * If this file is compiled with -DFASTEST, the compression level is forced + * to 1, and no hash chains are maintained. + * IN assertion: all calls to INSERT_STRING are made with consecutive input + * characters and the first MIN_MATCH bytes of str are valid (except for + * the last MIN_MATCH-1 bytes of the input file). + */ +#ifdef FASTEST +#define INSERT_STRING(s, str, match_head) \ + (UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]), \ + match_head = s->head[s->ins_h], \ + s->head[s->ins_h] = (Pos)(str)) +#else +#define INSERT_STRING(s, str, match_head) \ + (UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]), \ + match_head = s->prev[(str) & s->w_mask] = s->head[s->ins_h], \ + s->head[s->ins_h] = (Pos)(str)) +#endif + /* =========================================================================== * Initialize the hash table (avoiding 64K overflow for 16 bit systems). * prev[] will be initialized on the fly. - * TODO(cavalcantii): optimization opportunity, check comments on: - * https://chromium-review.googlesource.com/c/chromium/src/+/3561506/ */ #define CLEAR_HASH(s) \ do { \ s->head[s->hash_size - 1] = NIL; \ - zmemzero(s->head, (unsigned)(s->hash_size - 1)*sizeof(*s->head)); \ - s->slid = 0; \ + zmemzero((Bytef *)s->head, \ + (unsigned)(s->hash_size - 1)*sizeof(*s->head)); \ } while (0) /* =========================================================================== @@ -180,12 +185,6 @@ local const config configuration_table[10] = { # endif #endif local void slide_hash(deflate_state *s) { -#if defined(DEFLATE_SLIDE_HASH_SSE2) || defined(DEFLATE_SLIDE_HASH_NEON) - slide_hash_simd(s->head, s->prev, s->w_size, s->hash_size); - s->slid = 1; - return; -#endif - unsigned n, m; Posf *p; uInt wsize = s->w_size; @@ -196,8 +195,8 @@ local void slide_hash(deflate_state *s) { m = *--p; *p = (Pos)(m >= wsize ? m - wsize : NIL); } while (--n); -#ifndef FASTEST n = wsize; +#ifndef FASTEST p = &s->prev[n]; do { m = *--p; @@ -207,7 +206,6 @@ local void slide_hash(deflate_state *s) { */ } while (--n); #endif - s->slid = 1; } /* =========================================================================== @@ -225,19 +223,15 @@ local unsigned read_buf(z_streamp strm, Bytef *buf, unsigned size) { strm->avail_in -= len; - /* TODO(cavalcantii): verify if we can remove 'copy_with_crc', it is legacy - * of the Intel optimizations dating back to 2015. - */ -#ifdef GZIP - if (strm->state->wrap == 2) - copy_with_crc(strm, buf, len); - else -#endif - { - zmemcpy(buf, strm->next_in, len); - if (strm->state->wrap == 1) - strm->adler = adler32(strm->adler, buf, len); + zmemcpy(buf, strm->next_in, len); + if (strm->state->wrap == 1) { + strm->adler = adler32(strm->adler, buf, len); } +#ifdef GZIP + else if (strm->state->wrap == 2) { + strm->adler = crc32(strm->adler, buf, len); + } +#endif strm->next_in += len; strm->total_in += len; @@ -265,14 +259,7 @@ local void fill_window(deflate_state *s) { more = (unsigned)(s->window_size -(ulg)s->lookahead -(ulg)s->strstart); /* Deal with !@#$% 64K limit: */ -#ifdef _MSC_VER -#pragma warning(push) -#pragma warning(disable: 4127) -#endif if (sizeof(int) <= 2) { -#ifdef _MSC_VER -#pragma warning(pop) -#endif if (more == 0 && s->strstart == 0 && s->lookahead == 0) { more = wsize; @@ -316,20 +303,6 @@ local void fill_window(deflate_state *s) { n = read_buf(s->strm, s->window + s->strstart + s->lookahead, more); s->lookahead += n; - /* Initialize the hash value now that we have some input: */ - if (s->chromium_zlib_hash) { - /* chromium hash reads 4 bytes */ - if (s->lookahead + s->insert > MIN_MATCH) { - uInt str = s->strstart - s->insert; - while (s->insert) { - insert_string(s, str); - str++; - s->insert--; - if (s->lookahead + s->insert <= MIN_MATCH) - break; - } - } - } else /* Initialize the hash value now that we have some input: */ if (s->lookahead + s->insert >= MIN_MATCH) { uInt str = s->strstart - s->insert; @@ -402,8 +375,6 @@ int ZEXPORT deflateInit_(z_streamp strm, int level, const char *version, /* To do: ignore strm->next_in if we use it as window */ } -#define WINDOW_PADDING 8 - /* ========================================================================= */ int ZEXPORT deflateInit2_(z_streamp strm, int level, int method, int windowBits, int memLevel, int strategy, @@ -412,15 +383,6 @@ int ZEXPORT deflateInit2_(z_streamp strm, int level, int method, int wrap = 1; static const char my_version[] = ZLIB_VERSION; - // Needed to activate optimized insert_string() that helps compression - // for all wrapper formats (e.g. RAW, ZLIB, GZIP). - // Feature detection is not triggered while using RAW mode (i.e. we never - // call crc32() with a NULL buffer). -#if defined(CRC32_ARMV8_CRC32) || defined(CRC32_SIMD_SSE42_PCLMUL) \ - || defined(RISCV_RVV) - cpu_check_features(); -#endif - if (version == Z_NULL || version[0] != my_version[0] || stream_size != sizeof(z_stream)) { return Z_VERSION_ERROR; @@ -469,7 +431,6 @@ int ZEXPORT deflateInit2_(z_streamp strm, int level, int method, if (windowBits == 8) windowBits = 9; /* until 256-byte window bug fixed */ s = (deflate_state *) ZALLOC(strm, 1, sizeof(deflate_state)); if (s == Z_NULL) return Z_MEM_ERROR; - zmemzero(s, sizeof(deflate_state)); strm->state = (struct internal_state FAR *)s; s->strm = strm; s->status = INIT_STATE; /* to pass state test in deflateReset() */ @@ -480,23 +441,12 @@ int ZEXPORT deflateInit2_(z_streamp strm, int level, int method, s->w_size = 1 << s->w_bits; s->w_mask = s->w_size - 1; - s->chromium_zlib_hash = 1; -#if defined(USE_ZLIB_RABIN_KARP_ROLLING_HASH) - s->chromium_zlib_hash = 0; -#endif - - s->hash_bits = memLevel + 7; - if (s->chromium_zlib_hash && s->hash_bits < 15) { - s->hash_bits = 15; - } - + s->hash_bits = (uInt)memLevel + 7; s->hash_size = 1 << s->hash_bits; s->hash_mask = s->hash_size - 1; s->hash_shift = ((s->hash_bits + MIN_MATCH-1) / MIN_MATCH); - s->window = (Bytef *) ZALLOC(strm, - s->w_size + WINDOW_PADDING, - 2*sizeof(Byte)); + s->window = (Bytef *) ZALLOC(strm, s->w_size, 2*sizeof(Byte)); s->prev = (Posf *) ZALLOC(strm, s->w_size, sizeof(Pos)); s->head = (Posf *) ZALLOC(strm, s->hash_size, sizeof(Pos)); @@ -542,11 +492,8 @@ int ZEXPORT deflateInit2_(z_streamp strm, int level, int method, * the compressed data for a dynamic block also cannot overwrite the * symbols from which it is being constructed. */ -#ifdef LIT_MEM - s->pending_buf = (uchf *) ZALLOC(strm, s->lit_bufsize, 5); -#else - s->pending_buf = (uchf *) ZALLOC(strm, s->lit_bufsize, 4); -#endif + + s->pending_buf = (uchf *) ZALLOC(strm, s->lit_bufsize, LIT_BUFS); s->pending_buf_size = (ulg)s->lit_bufsize * 4; if (s->window == Z_NULL || s->prev == Z_NULL || s->head == Z_NULL || @@ -556,13 +503,6 @@ int ZEXPORT deflateInit2_(z_streamp strm, int level, int method, deflateEnd (strm); return Z_MEM_ERROR; } - /* Avoid use of unitialized values in the window, see crbug.com/1137613 and - * crbug.com/1144420 */ - zmemzero(s->window, (s->w_size + WINDOW_PADDING) * (2 * sizeof(Byte))); - /* Avoid use of uninitialized value, see: - * https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11360 - */ - zmemzero(s->prev, s->w_size * sizeof(Pos)); #ifdef LIT_MEM s->d_buf = (ushf *)(s->pending_buf + (s->lit_bufsize << 1)); s->l_buf = s->pending_buf + (s->lit_bufsize << 2); @@ -580,13 +520,6 @@ int ZEXPORT deflateInit2_(z_streamp strm, int level, int method, s->strategy = strategy; s->method = (Byte)method; -#if defined(QAT_COMPRESSION_ENABLED) - s->qat_s = NULL; - if (s->level && qat_deflate_init() == Z_OK) { - s->qat_s = qat_deflate_state_init(s->level, s->wrap); - } -#endif - return deflateReset(strm); } @@ -656,7 +589,11 @@ int ZEXPORT deflateSetDictionary(z_streamp strm, const Bytef *dictionary, str = s->strstart; n = s->lookahead - (MIN_MATCH-1); do { - insert_string(s, str); + UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); +#ifndef FASTEST + s->prev[str & s->w_mask] = s->head[s->ins_h]; +#endif + s->head[s->ins_h] = (Pos)str; str++; } while (--n); s->strstart = str; @@ -775,23 +712,10 @@ int ZEXPORT deflateSetHeader(z_streamp strm, gz_headerp head) { /* ========================================================================= */ int ZEXPORT deflatePending(z_streamp strm, unsigned *pending, int *bits) { if (deflateStateCheck(strm)) return Z_STREAM_ERROR; + if (pending != Z_NULL) + *pending = strm->state->pending; if (bits != Z_NULL) *bits = strm->state->bi_valid; - if (pending != Z_NULL) { - *pending = (unsigned)strm->state->pending; - if (*pending != strm->state->pending) { - *pending = (unsigned)-1; - return Z_BUF_ERROR; - } - } - return Z_OK; -} - -/* ========================================================================= */ -int ZEXPORT deflateUsed(z_streamp strm, int *bits) { - if (deflateStateCheck(strm)) return Z_STREAM_ERROR; - if (bits != Z_NULL) - *bits = strm->state->bi_used; return Z_OK; } @@ -815,11 +739,7 @@ int ZEXPORT deflatePrime(z_streamp strm, int bits, int value) { put = Buf_size - s->bi_valid; if (put > bits) put = bits; -#if defined(DEFLATE_CHUNK_WRITE_64LE) - s->bi_buf |= (uint64_t)((value & ((1ULL << put) - 1)) << s->bi_valid); -#else s->bi_buf |= (ush)((value & ((1 << put) - 1)) << s->bi_valid); -#endif /* DEFLATE_CHUNK_WRITE_64LE */ s->bi_valid += put; _tr_flush_bits(s); value >>= put; @@ -911,34 +831,28 @@ int ZEXPORT deflateTune(z_streamp strm, int good_length, int max_lazy, * * Shifts are used to approximate divisions, for speed. */ -z_size_t ZEXPORT deflateBound_z(z_streamp strm, z_size_t sourceLen) { +uLong ZEXPORT deflateBound(z_streamp strm, uLong sourceLen) { deflate_state *s; - z_size_t fixedlen, storelen, wraplen, bound; + uLong fixedlen, storelen, wraplen; /* upper bound for fixed blocks with 9-bit literals and length 255 (memLevel == 2, which is the lowest that may not use stored blocks) -- ~13% overhead plus a small constant */ fixedlen = sourceLen + (sourceLen >> 3) + (sourceLen >> 8) + (sourceLen >> 9) + 4; - if (fixedlen < sourceLen) - fixedlen = (z_size_t)-1; /* upper bound for stored blocks with length 127 (memLevel == 1) -- ~4% overhead plus a small constant */ storelen = sourceLen + (sourceLen >> 5) + (sourceLen >> 7) + (sourceLen >> 11) + 7; - if (storelen < sourceLen) - storelen = (z_size_t)-1; - /* if can't get parameters, return larger bound plus a wrapper */ - if (deflateStateCheck(strm)) { - bound = fixedlen > storelen ? fixedlen : storelen; - return bound + 18 < bound ? (z_size_t)-1 : bound + 18; - } + /* if can't get parameters, return larger bound plus a zlib wrapper */ + if (deflateStateCheck(strm)) + return (fixedlen > storelen ? fixedlen : storelen) + 6; /* compute wrapper length */ s = strm->state; - switch (s->wrap < 0 ? -s->wrap : s->wrap) { + switch (s->wrap) { case 0: /* raw deflate */ wraplen = 0; break; @@ -968,33 +882,18 @@ z_size_t ZEXPORT deflateBound_z(z_streamp strm, z_size_t sourceLen) { break; #endif default: /* for compiler happiness */ - wraplen = 18; - } - - /* With Chromium's hashing, s->hash_bits may not correspond to the - memLevel, making the computations below incorrect. Return the - conservative bound. */ - if (s->chromium_zlib_hash) { - bound = fixedlen > storelen ? fixedlen : storelen; - return bound + wraplen < bound ? (z_size_t)-1 : bound + wraplen; + wraplen = 6; } /* if not default parameters, return one of the conservative bounds */ - if (s->w_bits != 15 || s->hash_bits != 8 + 7) { - bound = s->w_bits <= s->hash_bits && s->level ? fixedlen : - storelen; - return bound + wraplen < bound ? (z_size_t)-1 : bound + wraplen; - } + if (s->w_bits != 15 || s->hash_bits != 8 + 7) + return (s->w_bits <= s->hash_bits && s->level ? fixedlen : storelen) + + wraplen; /* default settings: return tight bound for that case -- ~0.03% overhead plus a small constant */ - bound = sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + - (sourceLen >> 25) + 13 - 6 + wraplen; - return bound < sourceLen ? (z_size_t)-1 : bound; -} -uLong ZEXPORT deflateBound(z_streamp strm, uLong sourceLen) { - z_size_t bound = deflateBound_z(strm, sourceLen); - return (uLong)bound != bound ? (uLong)-1 : (uLong)bound; + return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + + (sourceLen >> 25) + 13 - 6 + wraplen; } /* ========================================================================= @@ -1017,15 +916,9 @@ local void flush_pending(z_streamp strm) { unsigned len; deflate_state *s = strm->state; -#if defined(QAT_COMPRESSION_ENABLED) - if (s->qat_s) { - qat_flush_pending(s); - } -#endif - _tr_flush_bits(s); - len = s->pending > strm->avail_out ? strm->avail_out : - (unsigned)s->pending; + len = s->pending; + if (len > strm->avail_out) len = strm->avail_out; if (len == 0) return; zmemcpy(strm->next_out, s->pending_out, len); @@ -1045,8 +938,8 @@ local void flush_pending(z_streamp strm) { #define HCRC_UPDATE(beg) \ do { \ if (s->gzhead->hcrc && s->pending > (beg)) \ - strm->adler = crc32_z(strm->adler, s->pending_buf + (beg), \ - s->pending - (beg)); \ + strm->adler = crc32(strm->adler, s->pending_buf + (beg), \ + s->pending - (beg)); \ } while (0) /* ========================================================================= */ @@ -1137,7 +1030,7 @@ int ZEXPORT deflate(z_streamp strm, int flush) { #ifdef GZIP if (s->status == GZIP_STATE) { /* gzip header */ - crc_reset(s); + strm->adler = crc32(0L, Z_NULL, 0); put_byte(s, 31); put_byte(s, 139); put_byte(s, 8); @@ -1180,8 +1073,8 @@ int ZEXPORT deflate(z_streamp strm, int flush) { put_byte(s, (s->gzhead->extra_len >> 8) & 0xff); } if (s->gzhead->hcrc) - strm->adler = crc32_z(strm->adler, s->pending_buf, - s->pending); + strm->adler = crc32(strm->adler, s->pending_buf, + s->pending); s->gzindex = 0; s->status = EXTRA_STATE; } @@ -1189,9 +1082,9 @@ int ZEXPORT deflate(z_streamp strm, int flush) { if (s->status == EXTRA_STATE) { if (s->gzhead->extra != Z_NULL) { ulg beg = s->pending; /* start of bytes to update crc */ - ulg left = (s->gzhead->extra_len & 0xffff) - s->gzindex; + uInt left = (s->gzhead->extra_len & 0xffff) - s->gzindex; while (s->pending + left > s->pending_buf_size) { - ulg copy = s->pending_buf_size - s->pending; + uInt copy = s->pending_buf_size - s->pending; zmemcpy(s->pending_buf + s->pending, s->gzhead->extra + s->gzindex, copy); s->pending = s->pending_buf_size; @@ -1338,7 +1231,6 @@ int ZEXPORT deflate(z_streamp strm, int flush) { /* Write the trailer */ #ifdef GZIP if (s->wrap == 2) { - crc_finalize(s); put_byte(s, (Byte)(strm->adler & 0xff)); put_byte(s, (Byte)((strm->adler >> 8) & 0xff)); put_byte(s, (Byte)((strm->adler >> 16) & 0xff)); @@ -1376,12 +1268,6 @@ int ZEXPORT deflateEnd(z_streamp strm) { TRY_FREE(strm, strm->state->prev); TRY_FREE(strm, strm->state->window); -#if defined(QAT_COMPRESSION_ENABLED) - if (strm->state->qat_s) { - qat_deflate_state_free(strm->state); - } -#endif - ZFREE(strm, strm->state); strm->state = Z_NULL; @@ -1409,25 +1295,18 @@ int ZEXPORT deflateCopy(z_streamp dest, z_streamp source) { ss = source->state; - zmemcpy(dest, source, sizeof(z_stream)); + zmemcpy((voidpf)dest, (voidpf)source, sizeof(z_stream)); ds = (deflate_state *) ZALLOC(dest, 1, sizeof(deflate_state)); if (ds == Z_NULL) return Z_MEM_ERROR; - zmemzero(ds, sizeof(deflate_state)); dest->state = (struct internal_state FAR *) ds; - zmemcpy(ds, ss, sizeof(deflate_state)); + zmemcpy((voidpf)ds, (voidpf)ss, sizeof(deflate_state)); ds->strm = dest; - ds->window = (Bytef *) ZALLOC(dest, - ds->w_size + WINDOW_PADDING, - 2*sizeof(Byte)); + ds->window = (Bytef *) ZALLOC(dest, ds->w_size, 2*sizeof(Byte)); ds->prev = (Posf *) ZALLOC(dest, ds->w_size, sizeof(Pos)); ds->head = (Posf *) ZALLOC(dest, ds->hash_size, sizeof(Pos)); -#ifdef LIT_MEM - ds->pending_buf = (uchf *) ZALLOC(dest, ds->lit_bufsize, 5); -#else - ds->pending_buf = (uchf *) ZALLOC(dest, ds->lit_bufsize, 4); -#endif + ds->pending_buf = (uchf *) ZALLOC(dest, ds->lit_bufsize, LIT_BUFS); if (ds->window == Z_NULL || ds->prev == Z_NULL || ds->head == Z_NULL || ds->pending_buf == Z_NULL) { @@ -1435,36 +1314,23 @@ int ZEXPORT deflateCopy(z_streamp dest, z_streamp source) { return Z_MEM_ERROR; } /* following zmemcpy do not work for 16-bit MSDOS */ - zmemcpy(ds->window, ss->window, ss->high_water); - zmemcpy(ds->prev, ss->prev, - (ss->slid || ss->strstart - ss->insert > ds->w_size ? ds->w_size : - ss->strstart - ss->insert) * sizeof(Pos)); - zmemcpy(ds->head, ss->head, ds->hash_size * sizeof(Pos)); + zmemcpy(ds->window, ss->window, ds->w_size * 2 * sizeof(Byte)); + zmemcpy((voidpf)ds->prev, (voidpf)ss->prev, ds->w_size * sizeof(Pos)); + zmemcpy((voidpf)ds->head, (voidpf)ss->head, ds->hash_size * sizeof(Pos)); + zmemcpy(ds->pending_buf, ss->pending_buf, ds->lit_bufsize * LIT_BUFS); ds->pending_out = ds->pending_buf + (ss->pending_out - ss->pending_buf); - zmemcpy(ds->pending_out, ss->pending_out, ss->pending); #ifdef LIT_MEM ds->d_buf = (ushf *)(ds->pending_buf + (ds->lit_bufsize << 1)); ds->l_buf = ds->pending_buf + (ds->lit_bufsize << 2); - zmemcpy(ds->d_buf, ss->d_buf, ss->sym_next * sizeof(ush)); - zmemcpy(ds->l_buf, ss->l_buf, ss->sym_next); #else ds->sym_buf = ds->pending_buf + ds->lit_bufsize; - zmemcpy(ds->sym_buf, ss->sym_buf, ss->sym_next); #endif ds->l_desc.dyn_tree = ds->dyn_ltree; ds->d_desc.dyn_tree = ds->dyn_dtree; ds->bl_desc.dyn_tree = ds->bl_tree; -#if defined(QAT_COMPRESSION_ENABLED) - if(ss->qat_s) { - ds->qat_s = qat_deflate_copy(ss); - if (!ds->qat_s) - return Z_MEM_ERROR; - } -#endif - return Z_OK; #endif /* MAXSEG_64K */ } @@ -1481,9 +1347,9 @@ int ZEXPORT deflateCopy(z_streamp dest, z_streamp source) { */ local uInt longest_match(deflate_state *s, IPos cur_match) { unsigned chain_length = s->max_chain_length;/* max hash chain length */ - Bytef *scan = s->window + s->strstart; /* current string */ - Bytef *match; /* matched string */ - int len; /* length of current match */ + register Bytef *scan = s->window + s->strstart; /* current string */ + register Bytef *match; /* matched string */ + register int len; /* length of current match */ int best_len = (int)s->prev_length; /* best match length so far */ int nice_match = s->nice_match; /* stop if match long enough */ IPos limit = s->strstart > (IPos)MAX_DIST(s) ? @@ -1494,23 +1360,17 @@ local uInt longest_match(deflate_state *s, IPos cur_match) { Posf *prev = s->prev; uInt wmask = s->w_mask; -#if defined(DEFLATE_COMPARE256_64LE) - /* Quickly reject non-matches with the 2-byte prefilter - * (scan_start/scan_end); candidates that pass are extended 8 bytes at a - * time with compare256(). */ - uInt scan_start = read16(scan); - uInt scan_end = read16(scan + best_len - 1); -#elif defined(UNALIGNED_OK) +#ifdef UNALIGNED_OK /* Compare two bytes at a time. Note: this is not always beneficial. * Try with and without -DUNALIGNED_OK to check. */ - Bytef *strend = s->window + s->strstart + MAX_MATCH - 1; - ush scan_start = *(ushf*)scan; - ush scan_end = *(ushf*)(scan + best_len - 1); + register Bytef *strend = s->window + s->strstart + MAX_MATCH - 1; + register ush scan_start = *(ushf*)scan; + register ush scan_end = *(ushf*)(scan + best_len - 1); #else - Bytef *strend = s->window + s->strstart + MAX_MATCH; - Byte scan_end1 = scan[best_len - 1]; - Byte scan_end = scan[best_len]; + register Bytef *strend = s->window + s->strstart + MAX_MATCH; + register Byte scan_end1 = scan[best_len - 1]; + register Byte scan_end = scan[best_len]; #endif /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. @@ -1542,13 +1402,7 @@ local uInt longest_match(deflate_state *s, IPos cur_match) { * However the length of the match is limited to the lookahead, so * the output of deflate is not affected by the uninitialized values. */ -#if defined(DEFLATE_COMPARE256_64LE) - if (read16(match + best_len - 1) != scan_end || - read16(match) != scan_start) continue; - /* scan_start matched, so bytes 0..1 are equal; compare the remaining - * up to 256 bytes so the length can still reach MAX_MATCH (258). */ - len = 2 + compare256(scan + 2, match + 2); -#elif (defined(UNALIGNED_OK) && MAX_MATCH == 258) +#if (defined(UNALIGNED_OK) && MAX_MATCH == 258) /* This code assumes sizeof(unsigned short) == 2. Do not use * UNALIGNED_OK if your compiler uses a different size. */ @@ -1564,16 +1418,7 @@ local uInt longest_match(deflate_state *s, IPos cur_match) { * necessary to put more guard bytes at the end of the window, or * to check more often for insufficient lookahead. */ - if (!s->chromium_zlib_hash) { - Assert(scan[2] == match[2], "scan[2]?"); - } else { - /* When using CRC hashing, scan[2] and match[2] may mismatch, but in - * that case at least one of the other hashed bytes will mismatch - * also. Bytes 0 and 1 were already checked above, and we know there - * are at least four bytes to check otherwise the mismatch would have - * been found by the scan_end comparison above, so: */ - Assert(scan[2] == match[2] || scan[3] != match[3], "scan[2]??"); - } + Assert(scan[2] == match[2], "scan[2]?"); scan++, match++; do { } while (*(ushf*)(scan += 2) == *(ushf*)(match += 2) && @@ -1584,7 +1429,7 @@ local uInt longest_match(deflate_state *s, IPos cur_match) { /* The funny "do {}" generates better code on most compilers */ /* Here, scan <= window + strstart + 257 */ - Assert(scan <= s->window+(unsigned)(s->window_size - 1), + Assert(scan <= s->window + (unsigned)(s->window_size - 1), "wild scan"); if (*scan == *match) scan++; @@ -1593,10 +1438,10 @@ local uInt longest_match(deflate_state *s, IPos cur_match) { #else /* UNALIGNED_OK */ - if (match[best_len] != scan_end || + if (match[best_len] != scan_end || match[best_len - 1] != scan_end1 || - *match != *scan || - *++match != scan[1]) continue; + *match != *scan || + *++match != scan[1]) continue; /* The check at best_len - 1 can be removed because it will be made * again later. (This heuristic is not always a win.) @@ -1605,16 +1450,7 @@ local uInt longest_match(deflate_state *s, IPos cur_match) { * the hash keys are equal and that HASH_BITS >= 8. */ scan += 2, match++; - if (!s->chromium_zlib_hash) { - Assert(*scan == *match, "match[2]?"); - } else { - /* When using CRC hashing, scan[2] and match[2] may mismatch, but in - * that case at least one of the other hashed bytes will mismatch - * also. Bytes 0 and 1 were already checked above, and we know there - * are at least four bytes to check otherwise the mismatch would have - * been found by the scan_end comparison above, so: */ - Assert(*scan == *match || scan[1] != match[1], "match[2]??"); - } + Assert(*scan == *match, "match[2]?"); /* We check for insufficient lookahead only every 8th comparison; * the 256th check will be made at strstart + 258. @@ -1638,9 +1474,7 @@ local uInt longest_match(deflate_state *s, IPos cur_match) { s->match_start = cur_match; best_len = len; if (len >= nice_match) break; -#if defined(DEFLATE_COMPARE256_64LE) - scan_end = read16(scan + best_len - 1); -#elif defined(UNALIGNED_OK) +#ifdef UNALIGNED_OK scan_end = *(ushf*)(scan + best_len - 1); #else scan_end1 = scan[best_len - 1]; @@ -1660,10 +1494,10 @@ local uInt longest_match(deflate_state *s, IPos cur_match) { * Optimized version for FASTEST only */ local uInt longest_match(deflate_state *s, IPos cur_match) { - Bytef *scan = s->window + s->strstart; /* current string */ - Bytef *match; /* matched string */ - int len; /* length of current match */ - Bytef *strend = s->window + s->strstart + MAX_MATCH; + register Bytef *scan = s->window + s->strstart; /* current string */ + register Bytef *match; /* matched string */ + register int len; /* length of current match */ + register Bytef *strend = s->window + s->strstart + MAX_MATCH; /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. * It is easy to get rid of this optimization if necessary. @@ -1723,7 +1557,7 @@ local uInt longest_match(deflate_state *s, IPos cur_match) { local void check_match(deflate_state *s, IPos start, IPos match, int length) { /* check that the match is indeed a match */ Bytef *back = s->window + (int)match, *here = s->window + start; - IPos len = (IPos)length; + IPos len = length; if (match == (IPos)-1) { /* match starts one byte before the current window -- just compare the subsequent length-1 bytes */ @@ -1795,14 +1629,13 @@ local block_state deflate_stored(deflate_state *s, int flush) { * this is 32K. This can be as small as 507 bytes for memLevel == 1. For * large input and output buffers, the stored block size will be larger. */ - unsigned min_block = (unsigned)(MIN(s->pending_buf_size - 5, s->w_size)); + unsigned min_block = MIN(s->pending_buf_size - 5, s->w_size); /* Copy as many min_block or larger stored blocks directly to next_out as * possible. If flushing, copy the remaining available input to next_out as * stored blocks, if there is enough space. */ - int last = 0; - unsigned len, left, have; + unsigned len, left, have, last = 0; unsigned used = s->strm->avail_in; do { /* Set len to the maximum size block that we can copy directly with the @@ -1810,12 +1643,12 @@ local block_state deflate_stored(deflate_state *s, int flush) { * would be copied from what's left in the window. */ len = MAX_STORED; /* maximum deflate stored block length */ - have = ((unsigned)s->bi_valid + 42) >> 3; /* bytes in header */ + have = (s->bi_valid + 42) >> 3; /* number of header bytes */ if (s->strm->avail_out < have) /* need room for header */ break; /* maximum stored block length that will fit in avail_out: */ have = s->strm->avail_out - have; - left = (unsigned)(s->strstart - s->block_start); /* window bytes */ + left = s->strstart - s->block_start; /* bytes left in window */ if (len > (ulg)left + s->strm->avail_in) len = left + s->strm->avail_in; /* limit len to the input */ if (len > have) @@ -1838,10 +1671,10 @@ local block_state deflate_stored(deflate_state *s, int flush) { _tr_stored_block(s, (char *)0, 0L, last); /* Replace the lengths in the dummy stored block with len. */ - s->pending_buf[s->pending - 4] = (Bytef)len; - s->pending_buf[s->pending - 3] = (Bytef)(len >> 8); - s->pending_buf[s->pending - 2] = (Bytef)~len; - s->pending_buf[s->pending - 1] = (Bytef)(~len >> 8); + s->pending_buf[s->pending - 4] = len; + s->pending_buf[s->pending - 3] = len >> 8; + s->pending_buf[s->pending - 2] = ~len; + s->pending_buf[s->pending - 1] = ~len >> 8; /* Write the stored block header bytes. */ flush_pending(s->strm); @@ -1912,10 +1745,8 @@ local block_state deflate_stored(deflate_state *s, int flush) { s->high_water = s->strstart; /* If the last block was written to next_out, then done. */ - if (last) { - s->bi_used = 8; + if (last) return finish_done; - } /* If flushing and all input has been consumed, then done. */ if (flush != Z_NO_FLUSH && flush != Z_FINISH && @@ -1923,7 +1754,7 @@ local block_state deflate_stored(deflate_state *s, int flush) { return block_done; /* Fill the window with any remaining input. */ - have = (unsigned)(s->window_size - s->strstart); + have = s->window_size - s->strstart; if (s->strm->avail_in > have && s->block_start >= (long)s->w_size) { /* Slide the window down. */ s->block_start -= s->w_size; @@ -1950,11 +1781,11 @@ local block_state deflate_stored(deflate_state *s, int flush) { * have enough input for a worthy block, or if flushing and there is enough * room for the remaining input as a stored block in the pending buffer. */ - have = ((unsigned)s->bi_valid + 42) >> 3; /* bytes in header */ + have = (s->bi_valid + 42) >> 3; /* number of header bytes */ /* maximum stored block length that will fit in pending: */ - have = (unsigned)MIN(s->pending_buf_size - have, MAX_STORED); + have = MIN(s->pending_buf_size - have, MAX_STORED); min_block = MIN(have, s->w_size); - left = (unsigned)(s->strstart - s->block_start); + left = s->strstart - s->block_start; if (left >= min_block || ((left || flush == Z_FINISH) && flush != Z_NO_FLUSH && s->strm->avail_in == 0 && left <= have)) { @@ -1967,8 +1798,6 @@ local block_state deflate_stored(deflate_state *s, int flush) { } /* We've done all we can with the available input and output. */ - if (last) - s->bi_used = 8; return last ? finish_started : need_more; } @@ -1983,24 +1812,6 @@ local block_state deflate_fast(deflate_state *s, int flush) { IPos hash_head; /* head of the hash chain */ int bflush; /* set if current block must be flushed */ -#if defined(QAT_COMPRESSION_ENABLED) - if (s->qat_s) { - qat_block_state qat_block = qat_deflate_step(s, flush); - switch (qat_block) { - case qat_block_need_more: - return need_more; - case qat_block_done: - return block_done; - case qat_block_finish_started: - return finish_started; - case qat_block_finish_done: - return finish_done; - case qat_failure: - break; - } - } -#endif - for (;;) { /* Make sure that we always have enough lookahead, except * at the end of the input file. We need MAX_MATCH bytes @@ -2020,7 +1831,7 @@ local block_state deflate_fast(deflate_state *s, int flush) { */ hash_head = NIL; if (s->lookahead >= MIN_MATCH) { - hash_head = insert_string(s, s->strstart); + INSERT_STRING(s, s->strstart, hash_head); } /* Find the longest match, discarding those <= prev_length. @@ -2035,7 +1846,7 @@ local block_state deflate_fast(deflate_state *s, int flush) { /* longest_match() sets match_start */ } if (s->match_length >= MIN_MATCH) { - check_match(s, s->strstart, s->match_start, (int)s->match_length); + check_match(s, s->strstart, s->match_start, s->match_length); _tr_tally_dist(s, s->strstart - s->match_start, s->match_length - MIN_MATCH, bflush); @@ -2051,7 +1862,7 @@ local block_state deflate_fast(deflate_state *s, int flush) { s->match_length--; /* string at strstart already in table */ do { s->strstart++; - hash_head = insert_string(s, s->strstart); + INSERT_STRING(s, s->strstart, hash_head); /* strstart never exceeds WSIZE-MAX_MATCH, so there are * always MIN_MATCH bytes ahead. */ @@ -2062,17 +1873,14 @@ local block_state deflate_fast(deflate_state *s, int flush) { { s->strstart += s->match_length; s->match_length = 0; - - if (!s->chromium_zlib_hash) { - s->ins_h = s->window[s->strstart]; - UPDATE_HASH(s, s->ins_h, s->window[s->strstart + 1]); + s->ins_h = s->window[s->strstart]; + UPDATE_HASH(s, s->ins_h, s->window[s->strstart + 1]); #if MIN_MATCH != 3 - Call UPDATE_HASH() MIN_MATCH-3 more times + Call UPDATE_HASH() MIN_MATCH-3 more times #endif - /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not - * matter since it will be recomputed at next deflate call. - */ - } + /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not + * matter since it will be recomputed at next deflate call. + */ } } else { /* No match, output a literal byte */ @@ -2103,24 +1911,6 @@ local block_state deflate_slow(deflate_state *s, int flush) { IPos hash_head; /* head of hash chain */ int bflush; /* set if current block must be flushed */ -#if defined(QAT_COMPRESSION_ENABLED) - if (s->qat_s) { - qat_block_state qat_block = qat_deflate_step(s, flush); - switch (qat_block) { - case qat_block_need_more: - return need_more; - case qat_block_done: - return block_done; - case qat_block_finish_started: - return finish_started; - case qat_block_finish_done: - return finish_done; - case qat_failure: - break; - } - } -#endif - /* Process the input block. */ for (;;) { /* Make sure that we always have enough lookahead, except @@ -2141,7 +1931,7 @@ local block_state deflate_slow(deflate_state *s, int flush) { */ hash_head = NIL; if (s->lookahead >= MIN_MATCH) { - hash_head = insert_string(s, s->strstart); + INSERT_STRING(s, s->strstart, hash_head); } /* Find the longest match, discarding those <= prev_length. @@ -2178,7 +1968,7 @@ local block_state deflate_slow(deflate_state *s, int flush) { uInt max_insert = s->strstart + s->lookahead - MIN_MATCH; /* Do not insert strings in hash table beyond this. */ - check_match(s, s->strstart - 1, s->prev_match, (int)s->prev_length); + check_match(s, s->strstart - 1, s->prev_match, s->prev_length); _tr_tally_dist(s, s->strstart - 1 - s->prev_match, s->prev_length - MIN_MATCH, bflush); @@ -2192,7 +1982,7 @@ local block_state deflate_slow(deflate_state *s, int flush) { s->prev_length -= 2; do { if (++s->strstart <= max_insert) { - hash_head = insert_string(s, s->strstart); + INSERT_STRING(s, s->strstart, hash_head); } } while (--s->prev_length != 0); s->match_available = 0; @@ -2286,7 +2076,7 @@ local block_state deflate_rle(deflate_state *s, int flush) { /* Emit match if have run of MIN_MATCH or longer, else emit literal */ if (s->match_length >= MIN_MATCH) { - check_match(s, s->strstart, s->strstart - 1, (int)s->match_length); + check_match(s, s->strstart, s->strstart - 1, s->match_length); _tr_tally_dist(s, 1, s->match_length - MIN_MATCH, bflush); diff --git a/packages/runtime/vendor/zlib/deflate.h b/packages/runtime/vendor/zlib/deflate.h index c55fd8f6a..300c6ada6 100644 --- a/packages/runtime/vendor/zlib/deflate.h +++ b/packages/runtime/vendor/zlib/deflate.h @@ -1,5 +1,5 @@ /* deflate.h -- internal compression state - * Copyright (C) 1995-2026 Jean-loup Gailly + * Copyright (C) 1995-2024 Jean-loup Gailly * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -13,10 +13,6 @@ #ifndef DEFLATE_H #define DEFLATE_H -#if defined(DEFLATE_CHUNK_WRITE_64LE) -#include -#endif - #include "zutil.h" /* define NO_GZIP when compiling if you want to disable gzip header and @@ -29,7 +25,7 @@ /* define LIT_MEM to slightly increase the speed of deflate (order 1% to 2%) at the cost of a larger memory footprint */ -#define LIT_MEM +/* #define LIT_MEM */ /* =========================================================================== * Internal compression state. @@ -56,11 +52,7 @@ #define MAX_BITS 15 /* All codes must not exceed MAX_BITS bits */ -#if defined(DEFLATE_CHUNK_WRITE_64LE) -#define Buf_size 64 -#else #define Buf_size 16 -#endif /* size of bit buffer in bi_buf */ #define INIT_STATE 42 /* zlib header -> BUSY_STATE */ @@ -121,8 +113,8 @@ typedef struct internal_state { ulg gzindex; /* where in extra, name, or comment */ Byte method; /* can only be DEFLATED */ int last_flush; /* value of flush param for previous deflate call */ - unsigned crc0[4 * 5]; - /* used by deflate.c: */ + + /* used by deflate.c: */ uInt w_size; /* LZ77 window size (32K by default) */ uInt w_bits; /* log2(w_size) (8..16) */ @@ -230,9 +222,11 @@ typedef struct internal_state { */ #ifdef LIT_MEM +# define LIT_BUFS 5 ushf *d_buf; /* buffer for distances */ uchf *l_buf; /* buffer for literals/lengths */ #else +# define LIT_BUFS 4 uchf *sym_buf; /* buffer for distances and literals/lengths */ #endif @@ -269,11 +263,7 @@ typedef struct internal_state { ulg bits_sent; /* bit length of compressed data sent mod 2^32 */ #endif -#if defined(DEFLATE_CHUNK_WRITE_64LE) - uint64_t bi_buf; -#else ush bi_buf; -#endif /* Output buffer. bits are inserted starting at the bottom (least * significant bits). */ @@ -281,9 +271,6 @@ typedef struct internal_state { /* Number of valid bits in bi_buf. All bits above the last valid bit * are always zero. */ - int bi_used; - /* Last number of used bits when going to a byte boundary. - */ ulg high_water; /* High water mark offset in window for initialized bytes -- bytes above @@ -292,21 +279,6 @@ typedef struct internal_state { * updated to the new high water mark. */ - uInt chromium_zlib_hash; - /* 0 if Rabin-Karp rolling hash is enabled, non-zero if chromium zlib - * hash is enabled. - */ - -#if defined(QAT_COMPRESSION_ENABLED) - /* Pointer to a struct that contains the current state of the QAT - * stream. - */ - struct qat_deflate *qat_s; -#endif - - int slid; - /* True if the hash table has been slid since it was cleared. */ - } FAR deflate_state; /* Output a byte on the stream. @@ -402,12 +374,4 @@ void ZLIB_INTERNAL _tr_stored_block(deflate_state *s, charf *buf, flush = _tr_tally(s, distance, length) #endif -/* Functions that are SIMD optimised on x86 */ -void ZLIB_INTERNAL crc_fold_init(deflate_state* const s); -void ZLIB_INTERNAL crc_fold_copy(deflate_state* const s, - unsigned char* dst, - const unsigned char* src, - long len); -unsigned ZLIB_INTERNAL crc_fold_512to32(deflate_state* const s); - #endif /* DEFLATE_H */ diff --git a/packages/runtime/vendor/zlib/gzguts.h b/packages/runtime/vendor/zlib/gzguts.h index f7946bdc5..eba72085b 100644 --- a/packages/runtime/vendor/zlib/gzguts.h +++ b/packages/runtime/vendor/zlib/gzguts.h @@ -1,5 +1,5 @@ /* gzguts.h -- zlib internal header definitions for gz* operations - * Copyright (C) 2004-2026 Mark Adler + * Copyright (C) 2004-2024 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -17,18 +17,6 @@ # define ZLIB_INTERNAL #endif -#if defined(_WIN32) -# ifndef WIN32_LEAN_AND_MEAN -# define WIN32_LEAN_AND_MEAN -# endif -# ifndef _CRT_SECURE_NO_WARNINGS -# define _CRT_SECURE_NO_WARNINGS -# endif -# ifndef _CRT_NONSTDC_NO_DEPRECATE -# define _CRT_NONSTDC_NO_DEPRECATE -# endif -#endif - #include #include "zlib.h" #ifdef STDC @@ -37,8 +25,8 @@ # include #endif -#ifndef _POSIX_C_SOURCE -# define _POSIX_C_SOURCE 200112L +#ifndef _POSIX_SOURCE +# define _POSIX_SOURCE #endif #include @@ -48,13 +36,19 @@ #if defined(__TURBOC__) || defined(_MSC_VER) || defined(_WIN32) # include -# include #endif -#if defined(_WIN32) && !defined(WIDECHAR) +#if defined(_WIN32) # define WIDECHAR #endif +#ifdef WINAPI_FAMILY +# define open _open +# define read _read +# define write _write +# define close _close +#endif + #ifdef NO_DEFLATE /* for compatibility with old definition */ # define NO_GZCOMPRESS #endif @@ -78,28 +72,33 @@ #endif #ifndef HAVE_VSNPRINTF -# if !defined(NO_vsnprintf) && \ - (defined(MSDOS) || defined(__TURBOC__) || defined(__SASC) || \ - defined(VMS) || defined(__OS400) || defined(__MVS__)) +# ifdef MSDOS /* vsnprintf may exist on some MS-DOS compilers (DJGPP?), but for now we just assume it doesn't. */ # define NO_vsnprintf # endif +# ifdef __TURBOC__ +# define NO_vsnprintf +# endif # ifdef WIN32 /* In Win32, vsnprintf is available as the "non-ANSI" _vsnprintf. */ -# if !defined(_MSC_VER) || ( defined(_MSC_VER) && _MSC_VER < 1500 ) -# ifndef vsnprintf -# define vsnprintf _vsnprintf +# if !defined(vsnprintf) && !defined(NO_vsnprintf) +# if !defined(_MSC_VER) || ( defined(_MSC_VER) && _MSC_VER < 1500 ) +# define vsnprintf _vsnprintf # endif # endif -# elif !defined(__STDC_VERSION__) || __STDC_VERSION__-0 < 199901L -/* Otherwise if C89/90, assume no C99 snprintf() or vsnprintf() */ -# ifndef NO_snprintf -# define NO_snprintf -# endif -# ifndef NO_vsnprintf -# define NO_vsnprintf -# endif +# endif +# ifdef __SASC +# define NO_vsnprintf +# endif +# ifdef VMS +# define NO_vsnprintf +# endif +# ifdef __OS400__ +# define NO_vsnprintf +# endif +# ifdef __MVS__ +# define NO_vsnprintf # endif #endif @@ -136,11 +135,6 @@ # endif #endif -/* some environments don't define EWOULDBLOCK */ -#ifndef EWOULDBLOCK -# define EWOULDBLOCK EAGAIN -#endif - /* provide prototypes for these when building zlib without LFS */ #if !defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0 ZEXTERN gzFile ZEXPORT gzopen64(const char *, const char *); @@ -188,9 +182,7 @@ typedef struct { unsigned char *out; /* output buffer (double-sized when reading) */ int direct; /* 0 if processing gzip, 1 if transparent */ /* just for reading */ - int junk; /* -1 = start, 1 = junk candidate, 0 = in gzip */ int how; /* 0: get header, 1: copy, 2: decompress */ - int again; /* true if EAGAIN or EWOULDBLOCK on last i/o */ z_off64_t start; /* where the gzip data started, for rewinding */ int eof; /* true if end of input file reached */ int past; /* true if read requested past end */ @@ -200,6 +192,7 @@ typedef struct { int reset; /* true if a reset is pending after a Z_FINISH */ /* seek request */ z_off64_t skip; /* amount to skip (already rewound if backwards) */ + int seek; /* true if seek request pending */ /* error information */ int err; /* error code */ char *msg; /* error message */ diff --git a/packages/runtime/vendor/zlib/gzlib.c b/packages/runtime/vendor/zlib/gzlib.c index 2db29c8f0..983153cc8 100644 --- a/packages/runtime/vendor/zlib/gzlib.c +++ b/packages/runtime/vendor/zlib/gzlib.c @@ -1,21 +1,18 @@ /* gzlib.c -- zlib functions common to reading and writing gzip files - * Copyright (C) 2004-2026 Mark Adler + * Copyright (C) 2004-2024 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ #include "gzguts.h" -#if defined(__DJGPP__) -# define LSEEK llseek -#elif defined(_WIN32) && !defined(__BORLANDC__) && !defined(UNDER_CE) +#if defined(_WIN32) && !defined(__BORLANDC__) # define LSEEK _lseeki64 -# define OPEN open -#elif defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0 +#else +#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0 # define LSEEK lseek64 -# define OPEN open64 #else # define LSEEK lseek -# define OPEN open +#endif #endif #if defined UNDER_CE @@ -55,7 +52,7 @@ char ZLIB_INTERNAL *gz_strwinerror(DWORD error) { msgbuf[chars] = 0; } - wcstombs(buf, msgbuf, chars + 1); /* assumes buf is big enough */ + wcstombs(buf, msgbuf, chars + 1); LocalFree(msgbuf); } else { @@ -75,12 +72,10 @@ local void gz_reset(gz_statep state) { state->eof = 0; /* not at end of file */ state->past = 0; /* have not read past end yet */ state->how = LOOK; /* look for gzip header */ - state->junk = -1; /* mark first member */ } else /* for writing ... */ state->reset = 0; /* no deflateReset pending */ - state->again = 0; /* no stalled i/o yet */ - state->skip = 0; /* no seek request pending */ + state->seek = 0; /* no seek request pending */ gz_error(state, Z_OK, NULL); /* clear error */ state->x.pos = 0; /* no uncompressed data yet */ state->strm.avail_in = 0; /* no input data yet */ @@ -90,13 +85,16 @@ local void gz_reset(gz_statep state) { local gzFile gz_open(const void *path, int fd, const char *mode) { gz_statep state; z_size_t len; - int oflag = 0; + int oflag; +#ifdef O_CLOEXEC + int cloexec = 0; +#endif #ifdef O_EXCL int exclusive = 0; #endif /* check input */ - if (path == NULL || mode == NULL) + if (path == NULL) return NULL; /* allocate gzFile structure to return */ @@ -105,7 +103,6 @@ local gzFile gz_open(const void *path, int fd, const char *mode) { return NULL; state->size = 0; /* no buffers allocated yet */ state->want = GZBUFSIZE; /* requested buffer size */ - state->err = Z_OK; /* no error yet */ state->msg = NULL; /* no error message yet */ /* interpret mode */ @@ -136,7 +133,7 @@ local gzFile gz_open(const void *path, int fd, const char *mode) { break; #ifdef O_CLOEXEC case 'e': - oflag |= O_CLOEXEC; + cloexec = 1; break; #endif #ifdef O_EXCL @@ -156,14 +153,6 @@ local gzFile gz_open(const void *path, int fd, const char *mode) { case 'F': state->strategy = Z_FIXED; break; - case 'G': - state->direct = -1; - break; -#ifdef O_NONBLOCK - case 'N': - oflag |= O_NONBLOCK; - break; -#endif case 'T': state->direct = 1; break; @@ -179,30 +168,22 @@ local gzFile gz_open(const void *path, int fd, const char *mode) { return NULL; } - /* direct is 0, 1 if "T", or -1 if "G" (last "G" or "T" wins) */ + /* can't force transparent read */ if (state->mode == GZ_READ) { - if (state->direct == 1) { - /* can't force a transparent read */ + if (state->direct) { free(state); return NULL; } - if (state->direct == 0) - /* default when reading is auto-detect of gzip vs. transparent -- - start with a transparent assumption in case of an empty file */ - state->direct = 1; + state->direct = 1; /* for empty file */ } - else if (state->direct == -1) { - /* "G" has no meaning when writing -- disallow it */ - free(state); - return NULL; - } - /* if reading, direct == 1 for auto-detect, -1 for gzip only; if writing or - appending, direct == 0 for gzip, 1 for transparent (copy in to out) */ /* save the path name for error messages */ #ifdef WIDECHAR - if (fd == -2) + if (fd == -2) { len = wcstombs(NULL, path, 0); + if (len == (z_size_t)-1) + len = 0; + } else #endif len = strlen((const char *)path); @@ -212,29 +193,29 @@ local gzFile gz_open(const void *path, int fd, const char *mode) { return NULL; } #ifdef WIDECHAR - if (fd == -2) { + if (fd == -2) if (len) wcstombs(state->path, path, len + 1); else *(state->path) = 0; - } else #endif - { #if !defined(NO_snprintf) && !defined(NO_vsnprintf) (void)snprintf(state->path, len + 1, "%s", (const char *)path); #else strcpy(state->path, path); #endif - } /* compute the flags for open() */ - oflag |= + oflag = #ifdef O_LARGEFILE O_LARGEFILE | #endif #ifdef O_BINARY O_BINARY | +#endif +#ifdef O_CLOEXEC + (cloexec ? O_CLOEXEC : 0) | #endif (state->mode == GZ_READ ? O_RDONLY : @@ -247,23 +228,11 @@ local gzFile gz_open(const void *path, int fd, const char *mode) { O_APPEND))); /* open the file with the appropriate flags (or just use fd) */ - if (fd == -1) - state->fd = OPEN((const char *)path, oflag, 0666); + state->fd = fd > -1 ? fd : ( #ifdef WIDECHAR - else if (fd == -2) - state->fd = _wopen(path, oflag, _S_IREAD | _S_IWRITE); + fd == -2 ? _wopen(path, oflag, 0666) : #endif - else { -#ifdef O_NONBLOCK - if (oflag & O_NONBLOCK) - fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) | O_NONBLOCK); -#endif -#ifdef O_CLOEXEC - if (oflag & O_CLOEXEC) - fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | O_CLOEXEC); -#endif - state->fd = fd; - } + open((const char *)path, oflag, 0666)); if (state->fd == -1) { free(state->path); free(state); @@ -390,10 +359,9 @@ z_off64_t ZEXPORT gzseek64(gzFile file, z_off64_t offset, int whence) { /* normalize offset to a SEEK_CUR specification */ if (whence == SEEK_SET) offset -= state->x.pos; - else { - offset += state->past ? 0 : state->skip; - state->skip = 0; - } + else if (state->seek) + offset += state->skip; + state->seek = 0; /* if within raw area while reading, just go there */ if (state->mode == GZ_READ && state->how == COPY && @@ -404,7 +372,7 @@ z_off64_t ZEXPORT gzseek64(gzFile file, z_off64_t offset, int whence) { state->x.have = 0; state->eof = 0; state->past = 0; - state->skip = 0; + state->seek = 0; gz_error(state, Z_OK, NULL); state->strm.avail_in = 0; state->x.pos += offset; @@ -433,7 +401,10 @@ z_off64_t ZEXPORT gzseek64(gzFile file, z_off64_t offset, int whence) { } /* request skip (if not zero) */ - state->skip = offset; + if (offset) { + state->seek = 1; + state->skip = offset; + } return state->x.pos + offset; } @@ -457,7 +428,7 @@ z_off64_t ZEXPORT gztell64(gzFile file) { return -1; /* return position */ - return state->x.pos + (state->past ? 0 : state->skip); + return state->x.pos + (state->seek ? state->skip : 0); } /* -- see zlib.h -- */ @@ -564,7 +535,7 @@ void ZLIB_INTERNAL gz_error(gz_statep state, int err, const char *msg) { } /* if fatal, set state->x.have to 0 so that the gzgetc() macro fails */ - if (err != Z_OK && err != Z_BUF_ERROR && !state->again) + if (err != Z_OK && err != Z_BUF_ERROR) state->x.have = 0; /* set error code, and if no message, then done */ @@ -601,7 +572,6 @@ unsigned ZLIB_INTERNAL gz_intmax(void) { return INT_MAX; #else unsigned p = 1, q; - do { q = p; p <<= 1; diff --git a/packages/runtime/vendor/zlib/gzread.c b/packages/runtime/vendor/zlib/gzread.c index bf41d63bc..4168cbc88 100644 --- a/packages/runtime/vendor/zlib/gzread.c +++ b/packages/runtime/vendor/zlib/gzread.c @@ -1,5 +1,5 @@ /* gzread.c -- zlib functions for reading gzip files - * Copyright (C) 2004-2026 Mark Adler + * Copyright (C) 2004-2017 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -8,36 +8,23 @@ /* Use read() to load a buffer -- return -1 on error, otherwise 0. Read from state->fd, and update state->eof, state->err, and state->msg as appropriate. This function needs to loop on read(), since read() is not guaranteed to - read the number of bytes requested, depending on the type of descriptor. It - also needs to loop to manage the fact that read() returns an int. If the - descriptor is non-blocking and read() returns with no data in order to avoid - blocking, then gz_load() will return 0 if some data has been read, or -1 if - no data has been read. Either way, state->again is set true to indicate a - non-blocking event. If errno is non-zero on return, then there was an error - signaled from read(). *have is set to the number of bytes read. */ + read the number of bytes requested, depending on the type of descriptor. */ local int gz_load(gz_statep state, unsigned char *buf, unsigned len, unsigned *have) { int ret; unsigned get, max = ((unsigned)-1 >> 2) + 1; - state->again = 0; - errno = 0; *have = 0; do { get = len - *have; if (get > max) get = max; - ret = (int)read(state->fd, buf + *have, get); + ret = read(state->fd, buf + *have, get); if (ret <= 0) break; *have += (unsigned)ret; } while (*have < len); if (ret < 0) { - if (errno == EAGAIN || errno == EWOULDBLOCK) { - state->again = 1; - if (*have != 0) - return 0; - } gz_error(state, Z_ERRNO, zstrerror()); return -1; } @@ -63,14 +50,10 @@ local int gz_avail(gz_statep state) { if (strm->avail_in) { /* copy what's there to the start */ unsigned char *p = state->in; unsigned const char *q = strm->next_in; - - if (q != p) { - unsigned n = strm->avail_in; - - do { - *p++ = *q++; - } while (--n); - } + unsigned n = strm->avail_in; + do { + *p++ = *q++; + } while (--n); } if (gz_load(state, state->in + strm->avail_in, state->size - strm->avail_in, &got) == -1) @@ -121,44 +104,39 @@ local int gz_look(gz_statep state) { } } - /* if transparent reading is disabled, which would only be at the start, or - if we're looking for a gzip member after the first one, which is not at - the start, then proceed directly to look for a gzip member next */ - if (state->direct == -1 || state->junk == 0) { + /* get at least the magic bytes in the input buffer */ + if (strm->avail_in < 2) { + if (gz_avail(state) == -1) + return -1; + if (strm->avail_in == 0) + return 0; + } + + /* look for gzip magic bytes -- if there, do gzip decoding (note: there is + a logical dilemma here when considering the case of a partially written + gzip file, to wit, if a single 31 byte is written, then we cannot tell + whether this is a single-byte file, or just a partially written gzip + file -- for here we assume that if a gzip file is being written, then + the header will be written in a single operation, so that reading a + single byte is sufficient indication that it is not a gzip file) */ + if (strm->avail_in > 1 && + strm->next_in[0] == 31 && strm->next_in[1] == 139) { inflateReset(strm); state->how = GZIP; - state->junk = state->junk != -1; state->direct = 0; return 0; } - /* otherwise we're at the start with auto-detect -- we check to see if the - first four bytes could be gzip header in order to decide whether or not - this will be a transparent read */ - - /* load any header bytes into the input buffer -- if the input is empty, - then it's not an error as this is a transparent read of zero bytes */ - if (gz_avail(state) == -1) - return -1; - if (strm->avail_in == 0 || (state->again && strm->avail_in < 4)) - /* if non-blocking input stalled before getting four bytes, then - return and wait until a later call has accumulated enough */ - return 0; - - /* see if this is (likely) gzip input -- if the first four bytes are - consistent with a gzip header, then go look for the first gzip member, - otherwise proceed to copy the input transparently */ - if (strm->avail_in > 3 && - strm->next_in[0] == 31 && strm->next_in[1] == 139 && - strm->next_in[2] == 8 && strm->next_in[3] < 32) { - inflateReset(strm); - state->how = GZIP; - state->junk = 1; - state->direct = 0; + /* no gzip header -- if we were decoding gzip before, then this is trailing + garbage. Ignore the trailing garbage and finish. */ + if (state->direct == 0) { + strm->avail_in = 0; + state->eof = 1; + state->x.have = 0; return 0; } - /* doing raw i/o: copy any leftover input to output -- this assumes that + /* doing raw i/o, copy any leftover input to output -- this assumes that the output buffer is larger than the input buffer, which also assures space for gzungetc() */ state->x.next = state->out; @@ -166,17 +144,15 @@ local int gz_look(gz_statep state) { state->x.have = strm->avail_in; strm->avail_in = 0; state->how = COPY; + state->direct = 1; return 0; } /* Decompress from input to the provided next_out and avail_out in the state. On return, state->x.have and state->x.next point to the just decompressed - data. If the gzip stream completes, state->how is reset to LOOK to look for - the next gzip stream or raw data, once state->x.have is depleted. Returns 0 - on success, -1 on failure. If EOF is reached when looking for more input to - complete the gzip member, then an unexpected end of file error is raised. - If there is no more input, but state->again is true, then EOF has not been - reached, and no error is raised. */ + data. If the gzip stream completes, state->how is reset to LOOK to look for + the next gzip stream or raw data, once state->x.have is depleted. Returns 0 + on success, -1 on failure. */ local int gz_decomp(gz_statep state) { int ret = Z_OK; unsigned had; @@ -186,41 +162,28 @@ local int gz_decomp(gz_statep state) { had = strm->avail_out; do { /* get more input for inflate() */ - if (strm->avail_in == 0 && gz_avail(state) == -1) { - ret = state->err; - break; - } + if (strm->avail_in == 0 && gz_avail(state) == -1) + return -1; if (strm->avail_in == 0) { - if (!state->again) - gz_error(state, Z_BUF_ERROR, "unexpected end of file"); + gz_error(state, Z_BUF_ERROR, "unexpected end of file"); break; } /* decompress and handle errors */ ret = inflate(strm, Z_NO_FLUSH); - if (strm->avail_out < had) - /* any decompressed data marks this as a real gzip stream */ - state->junk = 0; if (ret == Z_STREAM_ERROR || ret == Z_NEED_DICT) { gz_error(state, Z_STREAM_ERROR, "internal error: inflate stream corrupt"); - break; + return -1; } if (ret == Z_MEM_ERROR) { gz_error(state, Z_MEM_ERROR, "out of memory"); - break; + return -1; } if (ret == Z_DATA_ERROR) { /* deflate stream invalid */ - if (state->junk == 1) { /* trailing garbage is ok */ - strm->avail_in = 0; - state->eof = 1; - state->how = LOOK; - ret = Z_OK; - break; - } gz_error(state, Z_DATA_ERROR, strm->msg == NULL ? "compressed data error" : strm->msg); - break; + return -1; } } while (strm->avail_out && ret != Z_STREAM_END); @@ -229,14 +192,11 @@ local int gz_decomp(gz_statep state) { state->x.next = strm->next_out - state->x.have; /* if the gzip stream completed successfully, look for another */ - if (ret == Z_STREAM_END) { - state->junk = 0; + if (ret == Z_STREAM_END) state->how = LOOK; - return 0; - } - /* return decompression status */ - return ret != Z_OK ? -1 : 0; + /* good decompression */ + return 0; } /* Fetch data and put it in the output buffer. Assumes state->x.have is 0. @@ -267,31 +227,25 @@ local int gz_fetch(gz_statep state) { strm->next_out = state->out; if (gz_decomp(state) == -1) return -1; - break; - default: - gz_error(state, Z_STREAM_ERROR, "state corrupt"); - return -1; } } while (state->x.have == 0 && (!state->eof || strm->avail_in)); return 0; } -/* Skip state->skip (> 0) uncompressed bytes of output. Return -1 on error, 0 - on success. */ -local int gz_skip(gz_statep state) { +/* Skip len uncompressed bytes of output. Return -1 on error, 0 on success. */ +local int gz_skip(gz_statep state, z_off64_t len) { unsigned n; /* skip over len bytes or reach end-of-file, whichever comes first */ - do { + while (len) /* skip over whatever is in output buffer */ if (state->x.have) { - n = GT_OFF(state->x.have) || - (z_off64_t)state->x.have > state->skip ? - (unsigned)state->skip : state->x.have; + n = GT_OFF(state->x.have) || (z_off64_t)state->x.have > len ? + (unsigned)len : state->x.have; state->x.have -= n; state->x.next += n; state->x.pos += n; - state->skip -= n; + len -= n; } /* output buffer empty -- return if we're at the end of the input */ @@ -304,32 +258,30 @@ local int gz_skip(gz_statep state) { if (gz_fetch(state) == -1) return -1; } - } while (state->skip); return 0; } /* Read len bytes into buf from file, or less than len up to the end of the - input. Return the number of bytes read. If zero is returned, either the end - of file was reached, or there was an error. state->err must be consulted in - that case to determine which. If there was an error, but some uncompressed - bytes were read before the error, then that count is returned. The error is - still recorded, and so is deferred until the next call. */ + input. Return the number of bytes read. If zero is returned, either the + end of file was reached, or there was an error. state->err must be + consulted in that case to determine which. */ local z_size_t gz_read(gz_statep state, voidp buf, z_size_t len) { z_size_t got; unsigned n; - int err; /* if len is zero, avoid unnecessary operations */ if (len == 0) return 0; /* process a skip request */ - if (state->skip && gz_skip(state) == -1) - return 0; + if (state->seek) { + state->seek = 0; + if (gz_skip(state, state->skip) == -1) + return 0; + } /* get len bytes to buf, or less than len if at the end */ got = 0; - err = 0; do { /* set n to the maximum amount of len that fits in an unsigned int */ n = (unsigned)-1; @@ -343,36 +295,37 @@ local z_size_t gz_read(gz_statep state, voidp buf, z_size_t len) { memcpy(buf, state->x.next, n); state->x.next += n; state->x.have -= n; - if (state->err != Z_OK) - /* caught deferred error from gz_fetch() */ - err = -1; } /* output buffer empty -- return if we're at the end of the input */ - else if (state->eof && state->strm.avail_in == 0) + else if (state->eof && state->strm.avail_in == 0) { + state->past = 1; /* tried to read past end */ break; + } /* need output data -- for small len or new stream load up our output - buffer, so that gzgetc() can be fast */ + buffer */ else if (state->how == LOOK || n < (state->size << 1)) { /* get more output, looking for header if required */ - if (gz_fetch(state) == -1 && state->x.have == 0) - /* if state->x.have != 0, error will be caught after copy */ - err = -1; + if (gz_fetch(state) == -1) + return 0; continue; /* no progress yet -- go back to copy above */ /* the copy above assures that we will leave with space in the output buffer, allowing at least one gzungetc() to succeed */ } /* large len -- read directly into user buffer */ - else if (state->how == COPY) /* read directly */ - err = gz_load(state, (unsigned char *)buf, n, &n); + else if (state->how == COPY) { /* read directly */ + if (gz_load(state, (unsigned char *)buf, n, &n) == -1) + return 0; + } /* large len -- decompress directly into user buffer */ else { /* state->how == GZIP */ state->strm.avail_out = n; state->strm.next_out = (unsigned char *)buf; - err = gz_decomp(state); + if (gz_decomp(state) == -1) + return 0; n = state->x.have; state->x.have = 0; } @@ -382,11 +335,7 @@ local z_size_t gz_read(gz_statep state, voidp buf, z_size_t len) { buf = (char *)buf + n; got += n; state->x.pos += n; - } while (len && !err); - - /* note read past eof */ - if (len && state->eof) - state->past = 1; + } while (len); /* return number of bytes read into user buffer */ return got; @@ -396,17 +345,15 @@ local z_size_t gz_read(gz_statep state, voidp buf, z_size_t len) { int ZEXPORT gzread(gzFile file, voidp buf, unsigned len) { gz_statep state; - /* get internal structure and check that it's for reading */ + /* get internal structure */ if (file == NULL) return -1; state = (gz_statep)file; - if (state->mode != GZ_READ) - return -1; - /* check that there was no (serious) error */ - if (state->err != Z_OK && state->err != Z_BUF_ERROR && !state->again) + /* check that we're reading and that there's no (serious) error */ + if (state->mode != GZ_READ || + (state->err != Z_OK && state->err != Z_BUF_ERROR)) return -1; - gz_error(state, Z_OK, NULL); /* since an int is returned, make sure len fits in one, otherwise return with an error (this avoids a flaw in the interface) */ @@ -419,39 +366,27 @@ int ZEXPORT gzread(gzFile file, voidp buf, unsigned len) { len = (unsigned)gz_read(state, buf, len); /* check for an error */ - if (len == 0) { - if (state->err != Z_OK && state->err != Z_BUF_ERROR) - return -1; - if (state->again) { - /* non-blocking input stalled after some input was read, but no - uncompressed bytes were produced -- let the application know - this isn't EOF */ - gz_error(state, Z_ERRNO, zstrerror()); - return -1; - } - } + if (len == 0 && state->err != Z_OK && state->err != Z_BUF_ERROR) + return -1; - /* return the number of bytes read */ + /* return the number of bytes read (this is assured to fit in an int) */ return (int)len; } /* -- see zlib.h -- */ -z_size_t ZEXPORT gzfread(voidp buf, z_size_t size, z_size_t nitems, - gzFile file) { +z_size_t ZEXPORT gzfread(voidp buf, z_size_t size, z_size_t nitems, gzFile file) { z_size_t len; gz_statep state; - /* get internal structure and check that it's for reading */ + /* get internal structure */ if (file == NULL) return 0; state = (gz_statep)file; - if (state->mode != GZ_READ) - return 0; - /* check that there was no (serious) error */ - if (state->err != Z_OK && state->err != Z_BUF_ERROR && !state->again) + /* check that we're reading and that there's no (serious) error */ + if (state->mode != GZ_READ || + (state->err != Z_OK && state->err != Z_BUF_ERROR)) return 0; - gz_error(state, Z_OK, NULL); /* compute bytes to read -- error on overflow */ len = nitems * size; @@ -469,26 +404,20 @@ z_size_t ZEXPORT gzfread(voidp buf, z_size_t size, z_size_t nitems, # undef z_gzgetc #else # undef gzgetc -# ifdef Z_CR_PREFIX_SET -# define gzgetc Cr_z_gzgetc -# endif #endif - int ZEXPORT gzgetc(gzFile file) { unsigned char buf[1]; gz_statep state; - /* get internal structure and check that it's for reading */ + /* get internal structure */ if (file == NULL) return -1; state = (gz_statep)file; - if (state->mode != GZ_READ) - return -1; - /* check that there was no (serious) error */ - if (state->err != Z_OK && state->err != Z_BUF_ERROR && !state->again) + /* check that we're reading and that there's no (serious) error */ + if (state->mode != GZ_READ || + (state->err != Z_OK && state->err != Z_BUF_ERROR)) return -1; - gz_error(state, Z_OK, NULL); /* try output buffer (no need to check for skip request) */ if (state->x.have) { @@ -509,25 +438,26 @@ int ZEXPORT gzgetc_(gzFile file) { int ZEXPORT gzungetc(int c, gzFile file) { gz_statep state; - /* get internal structure and check that it's for reading */ + /* get internal structure */ if (file == NULL) return -1; state = (gz_statep)file; - if (state->mode != GZ_READ) - return -1; /* in case this was just opened, set up the input buffer */ - if (state->how == LOOK && state->x.have == 0) - (void)gz_look(state); + if (state->mode == GZ_READ && state->how == LOOK && state->x.have == 0) + (void)gz_look(state); - /* check that there was no (serious) error */ - if (state->err != Z_OK && state->err != Z_BUF_ERROR && !state->again) + /* check that we're reading and that there's no (serious) error */ + if (state->mode != GZ_READ || + (state->err != Z_OK && state->err != Z_BUF_ERROR)) return -1; - gz_error(state, Z_OK, NULL); /* process a skip request */ - if (state->skip && gz_skip(state) == -1) - return -1; + if (state->seek) { + state->seek = 0; + if (gz_skip(state, state->skip) == -1) + return -1; + } /* can't push EOF */ if (c < 0) @@ -553,7 +483,6 @@ int ZEXPORT gzungetc(int c, gzFile file) { if (state->x.next == state->out) { unsigned char *src = state->out + state->x.have; unsigned char *dest = state->out + (state->size << 1); - while (src > state->out) *--dest = *--src; state->x.next = dest; @@ -573,31 +502,32 @@ char * ZEXPORT gzgets(gzFile file, char *buf, int len) { unsigned char *eol; gz_statep state; - /* check parameters, get internal structure, and check that it's for - reading */ + /* check parameters and get internal structure */ if (file == NULL || buf == NULL || len < 1) return NULL; state = (gz_statep)file; - if (state->mode != GZ_READ) - return NULL; - /* check that there was no (serious) error */ - if (state->err != Z_OK && state->err != Z_BUF_ERROR && !state->again) + /* check that we're reading and that there's no (serious) error */ + if (state->mode != GZ_READ || + (state->err != Z_OK && state->err != Z_BUF_ERROR)) return NULL; - gz_error(state, Z_OK, NULL); /* process a skip request */ - if (state->skip && gz_skip(state) == -1) - return NULL; + if (state->seek) { + state->seek = 0; + if (gz_skip(state, state->skip) == -1) + return NULL; + } - /* copy output up to a new line, len-1 bytes, or there is no more output, - whichever comes first */ + /* copy output bytes up to new line or len - 1, whichever comes first -- + append a terminating zero to the string (we don't check for a zero in + the contents, let the user worry about that) */ str = buf; left = (unsigned)len - 1; if (left) do { /* assure that something is in the output buffer */ if (state->x.have == 0 && gz_fetch(state) == -1) - break; /* error */ + return NULL; /* error */ if (state->x.have == 0) { /* end of file */ state->past = 1; /* read past end */ break; /* return what we have */ @@ -618,9 +548,7 @@ char * ZEXPORT gzgets(gzFile file, char *buf, int len) { buf += n; } while (left && eol == NULL); - /* append a terminating zero to the string (we don't check for a zero in - the contents, let the user worry about that) -- return the terminated - string, or if nothing was read, NULL */ + /* return terminated string, or if nothing, end of file */ if (buf == str) return NULL; buf[0] = 0; @@ -642,7 +570,7 @@ int ZEXPORT gzdirect(gzFile file) { (void)gz_look(state); /* return 1 if transparent, 0 if processing a gzip stream */ - return state->direct == 1; + return state->direct; } /* -- see zlib.h -- */ @@ -650,10 +578,12 @@ int ZEXPORT gzclose_r(gzFile file) { int ret, err; gz_statep state; - /* get internal structure and check that it's for reading */ + /* get internal structure */ if (file == NULL) return Z_STREAM_ERROR; state = (gz_statep)file; + + /* check that we're reading */ if (state->mode != GZ_READ) return Z_STREAM_ERROR; diff --git a/packages/runtime/vendor/zlib/gzwrite.c b/packages/runtime/vendor/zlib/gzwrite.c index 13a3700a8..435b4621b 100644 --- a/packages/runtime/vendor/zlib/gzwrite.c +++ b/packages/runtime/vendor/zlib/gzwrite.c @@ -1,5 +1,5 @@ /* gzwrite.c -- zlib functions for writing gzip files - * Copyright (C) 2004-2026 Mark Adler + * Copyright (C) 2004-2019 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -74,13 +74,9 @@ local int gz_comp(gz_statep state, int flush) { /* write directly if requested */ if (state->direct) { while (strm->avail_in) { - errno = 0; - state->again = 0; put = strm->avail_in > max ? max : strm->avail_in; - writ = (int)write(state->fd, strm->next_in, put); + writ = write(state->fd, strm->next_in, put); if (writ < 0) { - if (errno == EAGAIN || errno == EWOULDBLOCK) - state->again = 1; gz_error(state, Z_ERRNO, zstrerror()); return -1; } @@ -92,9 +88,8 @@ local int gz_comp(gz_statep state, int flush) { /* check for a pending reset */ if (state->reset) { - /* don't start a new gzip member unless there is data to write and - we're not flushing */ - if (strm->avail_in == 0 && flush == Z_NO_FLUSH) + /* don't start a new gzip member unless there is data to write */ + if (strm->avail_in == 0) return 0; deflateReset(strm); state->reset = 0; @@ -108,14 +103,10 @@ local int gz_comp(gz_statep state, int flush) { if (strm->avail_out == 0 || (flush != Z_NO_FLUSH && (flush != Z_FINISH || ret == Z_STREAM_END))) { while (strm->next_out > state->x.next) { - errno = 0; - state->again = 0; put = strm->next_out - state->x.next > (int)max ? max : (unsigned)(strm->next_out - state->x.next); - writ = (int)write(state->fd, state->x.next, put); + writ = write(state->fd, state->x.next, put); if (writ < 0) { - if (errno == EAGAIN || errno == EWOULDBLOCK) - state->again = 1; gz_error(state, Z_ERRNO, zstrerror()); return -1; } @@ -147,12 +138,10 @@ local int gz_comp(gz_statep state, int flush) { return 0; } -/* Compress state->skip (> 0) zeros to output. Return -1 on a write error or - memory allocation failure by gz_comp(), or 0 on success. state->skip is - updated with the number of successfully written zeros, in case there is a - stall on a non-blocking write destination. */ -local int gz_zero(gz_statep state) { - int first, ret; +/* Compress len zeros to output. Return -1 on a write error or memory + allocation failure by gz_comp(), or 0 on success. */ +local int gz_zero(gz_statep state, z_off64_t len) { + int first; unsigned n; z_streamp strm = &(state->strm); @@ -160,34 +149,29 @@ local int gz_zero(gz_statep state) { if (strm->avail_in && gz_comp(state, Z_NO_FLUSH) == -1) return -1; - /* compress state->skip zeros */ + /* compress len zeros (len guaranteed > 0) */ first = 1; - do { - n = GT_OFF(state->size) || (z_off64_t)state->size > state->skip ? - (unsigned)state->skip : state->size; + while (len) { + n = GT_OFF(state->size) || (z_off64_t)state->size > len ? + (unsigned)len : state->size; if (first) { memset(state->in, 0, n); first = 0; } strm->avail_in = n; strm->next_in = state->in; - ret = gz_comp(state, Z_NO_FLUSH); - n -= strm->avail_in; state->x.pos += n; - state->skip -= n; - if (ret == -1) + if (gz_comp(state, Z_NO_FLUSH) == -1) return -1; - } while (state->skip); + len -= n; + } return 0; } /* Write len bytes from buf to file. Return the number of bytes written. If - the returned value is less than len, then there was an error. If the error - was a non-blocking stall, then the number of bytes consumed is returned. - For any other error, 0 is returned. */ + the returned value is less than len, then there was an error. */ local z_size_t gz_write(gz_statep state, voidpc buf, z_size_t len) { z_size_t put = len; - int ret; /* if len is zero, avoid unnecessary operations */ if (len == 0) @@ -198,13 +182,16 @@ local z_size_t gz_write(gz_statep state, voidpc buf, z_size_t len) { return 0; /* check for seek request */ - if (state->skip && gz_zero(state) == -1) - return 0; + if (state->seek) { + state->seek = 0; + if (gz_zero(state, state->skip) == -1) + return 0; + } /* for small len, copy to input buffer, otherwise compress directly */ if (len < state->size) { /* copy to input buffer, compress when full */ - for (;;) { + do { unsigned have, copy; if (state->strm.avail_in == 0) @@ -219,11 +206,9 @@ local z_size_t gz_write(gz_statep state, voidpc buf, z_size_t len) { state->x.pos += copy; buf = (const char *)buf + copy; len -= copy; - if (len == 0) - break; - if (gz_comp(state, Z_NO_FLUSH) == -1) - return state->again ? put - len : 0; - } + if (len && gz_comp(state, Z_NO_FLUSH) == -1) + return 0; + } while (len); } else { /* consume whatever's left in the input buffer */ @@ -234,16 +219,13 @@ local z_size_t gz_write(gz_statep state, voidpc buf, z_size_t len) { state->strm.next_in = (z_const Bytef *)buf; do { unsigned n = (unsigned)-1; - if (n > len) n = (unsigned)len; state->strm.avail_in = n; - ret = gz_comp(state, Z_NO_FLUSH); - n -= state->strm.avail_in; state->x.pos += n; + if (gz_comp(state, Z_NO_FLUSH) == -1) + return 0; len -= n; - if (ret == -1) - return state->again ? put - len : 0; } while (len); } @@ -260,10 +242,9 @@ int ZEXPORT gzwrite(gzFile file, voidpc buf, unsigned len) { return 0; state = (gz_statep)file; - /* check that we're writing and that there's no (serious) error */ - if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) + /* check that we're writing and that there's no error */ + if (state->mode != GZ_WRITE || state->err != Z_OK) return 0; - gz_error(state, Z_OK, NULL); /* since an int is returned, make sure len fits in one, otherwise return with an error (this avoids a flaw in the interface) */ @@ -287,10 +268,9 @@ z_size_t ZEXPORT gzfwrite(voidpc buf, z_size_t size, z_size_t nitems, return 0; state = (gz_statep)file; - /* check that we're writing and that there's no (serious) error */ - if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) + /* check that we're writing and that there's no error */ + if (state->mode != GZ_WRITE || state->err != Z_OK) return 0; - gz_error(state, Z_OK, NULL); /* compute bytes to read -- error on overflow */ len = nitems * size; @@ -316,14 +296,16 @@ int ZEXPORT gzputc(gzFile file, int c) { state = (gz_statep)file; strm = &(state->strm); - /* check that we're writing and that there's no (serious) error */ - if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) + /* check that we're writing and that there's no error */ + if (state->mode != GZ_WRITE || state->err != Z_OK) return -1; - gz_error(state, Z_OK, NULL); /* check for seek request */ - if (state->skip && gz_zero(state) == -1) - return -1; + if (state->seek) { + state->seek = 0; + if (gz_zero(state, state->skip) == -1) + return -1; + } /* try writing to input buffer for speed (state->size == 0 if buffer not initialized) */ @@ -356,10 +338,9 @@ int ZEXPORT gzputs(gzFile file, const char *s) { return -1; state = (gz_statep)file; - /* check that we're writing and that there's no (serious) error */ - if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) + /* check that we're writing and that there's no error */ + if (state->mode != GZ_WRITE || state->err != Z_OK) return -1; - gz_error(state, Z_OK, NULL); /* write string */ len = strlen(s); @@ -368,47 +349,16 @@ int ZEXPORT gzputs(gzFile file, const char *s) { return -1; } put = gz_write(state, s, len); - return len && put == 0 ? -1 : (int)put; + return put < len ? -1 : (int)len; } -#if (((!defined(STDC) && !defined(Z_HAVE_STDARG_H)) || !defined(NO_vsnprintf)) && \ - (defined(STDC) || defined(Z_HAVE_STDARG_H) || !defined(NO_snprintf))) || \ - defined(ZLIB_INSECURE) -/* If the second half of the input buffer is occupied, write out the contents. - If there is any input remaining due to a non-blocking stall on write, move - it to the start of the buffer. Return true if this did not open up the - second half of the buffer. state->err should be checked after this to - handle a gz_comp() error. */ -local int gz_vacate(gz_statep state) { - z_streamp strm; - - strm = &(state->strm); - if (strm->next_in + strm->avail_in <= state->in + state->size) - return 0; - (void)gz_comp(state, Z_NO_FLUSH); - if (strm->avail_in == 0) { - strm->next_in = state->in; - return 0; - } - memmove(state->in, strm->next_in, strm->avail_in); - strm->next_in = state->in; - return strm->avail_in > state->size; -} -#endif - #if defined(STDC) || defined(Z_HAVE_STDARG_H) #include /* -- see zlib.h -- */ int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va) { -#if defined(NO_vsnprintf) && !defined(ZLIB_INSECURE) -#warning "vsnprintf() not available -- gzprintf() stub returns Z_STREAM_ERROR" -#warning "you can recompile with ZLIB_INSECURE defined to use vsprintf()" - /* prevent use of insecure vsprintf(), unless purposefully requested */ - (void)file, (void)format, (void)va; - return Z_STREAM_ERROR; -#else - int len, ret; + int len; + unsigned left; char *next; gz_statep state; z_streamp strm; @@ -419,34 +369,24 @@ int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va) { state = (gz_statep)file; strm = &(state->strm); - /* check that we're writing and that there's no (serious) error */ - if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) + /* check that we're writing and that there's no error */ + if (state->mode != GZ_WRITE || state->err != Z_OK) return Z_STREAM_ERROR; - gz_error(state, Z_OK, NULL); /* make sure we have some buffer space */ if (state->size == 0 && gz_init(state) == -1) return state->err; /* check for seek request */ - if (state->skip && gz_zero(state) == -1) - return state->err; - - /* do the printf() into the input buffer, put length in len -- the input - buffer is double-sized just for this function, so there should be - state->size bytes available after the current contents */ - ret = gz_vacate(state); - if (state->err) { - if (ret && state->again) { - /* There was a non-blocking stall on write, resulting in the part - of the second half of the output buffer being occupied. Return - a Z_BUF_ERROR to let the application know that this gzprintf() - needs to be retried. */ - gz_error(state, Z_BUF_ERROR, "stalled write on gzprintf"); - } - if (!state->again) + if (state->seek) { + state->seek = 0; + if (gz_zero(state, state->skip) == -1) return state->err; } + + /* do the printf() into the input buffer, put length in len -- the input + buffer is double-sized just for this function, so there is guaranteed to + be state->size bytes available after the current contents */ if (strm->avail_in == 0) strm->next_in = state->in; next = (char *)(state->in + (strm->next_in - state->in) + strm->avail_in); @@ -472,16 +412,19 @@ int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va) { if (len == 0 || (unsigned)len >= state->size || next[state->size - 1] != 0) return 0; - /* update buffer and position */ + /* update buffer and position, compress first half if past that */ strm->avail_in += (unsigned)len; state->x.pos += len; - - /* write out buffer if more than half is occupied */ - ret = gz_vacate(state); - if (state->err && !state->again) - return state->err; + if (strm->avail_in >= state->size) { + left = strm->avail_in - state->size; + strm->avail_in = state->size; + if (gz_comp(state, Z_NO_FLUSH) == -1) + return state->err; + memmove(state->in, state->in + state->size, left); + strm->next_in = state->in; + strm->avail_in = left; + } return len; -#endif } int ZEXPORTVA gzprintf(gzFile file, const char *format, ...) { @@ -501,17 +444,6 @@ int ZEXPORTVA gzprintf(gzFile file, const char *format, int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12, int a13, int a14, int a15, int a16, int a17, int a18, int a19, int a20) { -#if defined(NO_snprintf) && !defined(ZLIB_INSECURE) -#warning "snprintf() not available -- gzprintf() stub returns Z_STREAM_ERROR" -#warning "you can recompile with ZLIB_INSECURE defined to use sprintf()" - /* prevent use of insecure sprintf(), unless purposefully requested */ - (void)file, (void)format, (void)a1, (void)a2, (void)a3, (void)a4, (void)a5, - (void)a6, (void)a7, (void)a8, (void)a9, (void)a10, (void)a11, (void)a12, - (void)a13, (void)a14, (void)a15, (void)a16, (void)a17, (void)a18, - (void)a19, (void)a20; - return Z_STREAM_ERROR; -#else - int ret; unsigned len, left; char *next; gz_statep state; @@ -527,34 +459,24 @@ int ZEXPORTVA gzprintf(gzFile file, const char *format, int a1, int a2, int a3, if (sizeof(int) != sizeof(void *)) return Z_STREAM_ERROR; - /* check that we're writing and that there's no (serious) error */ - if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) + /* check that we're writing and that there's no error */ + if (state->mode != GZ_WRITE || state->err != Z_OK) return Z_STREAM_ERROR; - gz_error(state, Z_OK, NULL); /* make sure we have some buffer space */ if (state->size == 0 && gz_init(state) == -1) - return state->err; + return state->error; /* check for seek request */ - if (state->skip && gz_zero(state) == -1) - return state->err; + if (state->seek) { + state->seek = 0; + if (gz_zero(state, state->skip) == -1) + return state->error; + } /* do the printf() into the input buffer, put length in len -- the input buffer is double-sized just for this function, so there is guaranteed to be state->size bytes available after the current contents */ - ret = gz_vacate(state); - if (state->err) { - if (ret && state->again) { - /* There was a non-blocking stall on write, resulting in the part - of the second half of the output buffer being occupied. Return - a Z_BUF_ERROR to let the application know that this gzprintf() - needs to be retried. */ - gz_error(state, Z_BUF_ERROR, "stalled write on gzprintf"); - } - if (!state->again) - return state->err; - } if (strm->avail_in == 0) strm->next_in = state->in; next = (char *)(strm->next_in + strm->avail_in); @@ -588,13 +510,16 @@ int ZEXPORTVA gzprintf(gzFile file, const char *format, int a1, int a2, int a3, /* update buffer and position, compress first half if past that */ strm->avail_in += len; state->x.pos += len; - - /* write out buffer if more than half is occupied */ - ret = gz_vacate(state); - if (state->err && !state->again) - return state->err; + if (strm->avail_in >= state->size) { + left = strm->avail_in - state->size; + strm->avail_in = state->size; + if (gz_comp(state, Z_NO_FLUSH) == -1) + return state->err; + memmove(state->in, state->in + state->size, left); + strm->next_in = state->in; + strm->avail_in = left; + } return (int)len; -#endif } #endif @@ -608,18 +533,20 @@ int ZEXPORT gzflush(gzFile file, int flush) { return Z_STREAM_ERROR; state = (gz_statep)file; - /* check that we're writing and that there's no (serious) error */ - if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) + /* check that we're writing and that there's no error */ + if (state->mode != GZ_WRITE || state->err != Z_OK) return Z_STREAM_ERROR; - gz_error(state, Z_OK, NULL); /* check flush parameter */ if (flush < 0 || flush > Z_FINISH) return Z_STREAM_ERROR; /* check for seek request */ - if (state->skip && gz_zero(state) == -1) - return state->err; + if (state->seek) { + state->seek = 0; + if (gz_zero(state, state->skip) == -1) + return state->err; + } /* compress remaining data with requested flush */ (void)gz_comp(state, flush); @@ -637,19 +564,20 @@ int ZEXPORT gzsetparams(gzFile file, int level, int strategy) { state = (gz_statep)file; strm = &(state->strm); - /* check that we're compressing and that there's no (serious) error */ - if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again) || - state->direct) + /* check that we're writing and that there's no error */ + if (state->mode != GZ_WRITE || state->err != Z_OK || state->direct) return Z_STREAM_ERROR; - gz_error(state, Z_OK, NULL); /* if no change is requested, then do nothing */ if (level == state->level && strategy == state->strategy) return Z_OK; /* check for seek request */ - if (state->skip && gz_zero(state) == -1) - return state->err; + if (state->seek) { + state->seek = 0; + if (gz_zero(state, state->skip) == -1) + return state->err; + } /* change compression parameters for subsequent input */ if (state->size) { @@ -678,8 +606,11 @@ int ZEXPORT gzclose_w(gzFile file) { return Z_STREAM_ERROR; /* check for seek request */ - if (state->skip && gz_zero(state) == -1) - ret = state->err; + if (state->seek) { + state->seek = 0; + if (gz_zero(state, state->skip) == -1) + ret = state->err; + } /* flush, free memory, and close file */ if (gz_comp(state, Z_FINISH) == -1) diff --git a/packages/runtime/vendor/zlib/infback.c b/packages/runtime/vendor/zlib/infback.c index 7ffb7b044..e7b25b307 100644 --- a/packages/runtime/vendor/zlib/infback.c +++ b/packages/runtime/vendor/zlib/infback.c @@ -1,5 +1,5 @@ /* infback.c -- inflate using a call-back interface - * Copyright (C) 1995-2026 Mark Adler + * Copyright (C) 1995-2022 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -46,7 +46,7 @@ int ZEXPORT inflateBackInit_(z_streamp strm, int windowBits, #ifdef Z_SOLO return Z_STREAM_ERROR; #else - strm->zfree = zcfree; + strm->zfree = zcfree; #endif state = (struct inflate_state FAR *)ZALLOC(strm, 1, sizeof(struct inflate_state)); @@ -63,6 +63,57 @@ int ZEXPORT inflateBackInit_(z_streamp strm, int windowBits, return Z_OK; } +/* + Return state with length and distance decoding tables and index sizes set to + fixed code decoding. Normally this returns fixed tables from inffixed.h. + If BUILDFIXED is defined, then instead this routine builds the tables the + first time it's called, and returns those tables the first time and + thereafter. This reduces the size of the code by about 2K bytes, in + exchange for a little execution time. However, BUILDFIXED should not be + used for threaded applications, since the rewriting of the tables and virgin + may not be thread-safe. + */ +local void fixedtables(struct inflate_state FAR *state) { +#ifdef BUILDFIXED + static int virgin = 1; + static code *lenfix, *distfix; + static code fixed[544]; + + /* build fixed huffman tables if first call (may not be thread safe) */ + if (virgin) { + unsigned sym, bits; + static code *next; + + /* literal/length table */ + sym = 0; + while (sym < 144) state->lens[sym++] = 8; + while (sym < 256) state->lens[sym++] = 9; + while (sym < 280) state->lens[sym++] = 7; + while (sym < 288) state->lens[sym++] = 8; + next = fixed; + lenfix = next; + bits = 9; + inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work); + + /* distance table */ + sym = 0; + while (sym < 32) state->lens[sym++] = 5; + distfix = next; + bits = 5; + inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work); + + /* do this just once */ + virgin = 0; + } +#else /* !BUILDFIXED */ +# include "inffixed.h" +#endif /* BUILDFIXED */ + state->lencode = lenfix; + state->lenbits = 9; + state->distcode = distfix; + state->distbits = 5; +} + /* Macros for inflateBack(): */ /* Load returned state from inflate_fast() */ @@ -242,7 +293,7 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, state->mode = STORED; break; case 1: /* fixed block */ - inflate_fixed(state); + fixedtables(state); Tracev((stderr, "inflate: fixed codes block%s\n", state->last ? " (last)" : "")); state->mode = LEN; /* decode codes */ @@ -252,8 +303,8 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, state->last ? " (last)" : "")); state->mode = TABLE; break; - default: - strm->msg = (z_const char *)"invalid block type"; + case 3: + strm->msg = (char *)"invalid block type"; state->mode = BAD; } DROPBITS(2); @@ -264,7 +315,7 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, BYTEBITS(); /* go to byte boundary */ NEEDBITS(32); if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) { - strm->msg = (z_const char *)"invalid stored block lengths"; + strm->msg = (char *)"invalid stored block lengths"; state->mode = BAD; break; } @@ -302,8 +353,7 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, DROPBITS(4); #ifndef PKZIP_BUG_WORKAROUND if (state->nlen > 286 || state->ndist > 30) { - strm->msg = (z_const char *) - "too many length or distance symbols"; + strm->msg = (char *)"too many length or distance symbols"; state->mode = BAD; break; } @@ -325,7 +375,7 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, ret = inflate_table(CODES, state->lens, 19, &(state->next), &(state->lenbits), state->work); if (ret) { - strm->msg = (z_const char *)"invalid code lengths set"; + strm->msg = (char *)"invalid code lengths set"; state->mode = BAD; break; } @@ -348,8 +398,7 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, NEEDBITS(here.bits + 2); DROPBITS(here.bits); if (state->have == 0) { - strm->msg = (z_const char *) - "invalid bit length repeat"; + strm->msg = (char *)"invalid bit length repeat"; state->mode = BAD; break; } @@ -372,8 +421,7 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, DROPBITS(7); } if (state->have + copy > state->nlen + state->ndist) { - strm->msg = (z_const char *) - "invalid bit length repeat"; + strm->msg = (char *)"invalid bit length repeat"; state->mode = BAD; break; } @@ -387,31 +435,30 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, /* check for end-of-block code (better have one) */ if (state->lens[256] == 0) { - strm->msg = (z_const char *) - "invalid code -- missing end-of-block"; + strm->msg = (char *)"invalid code -- missing end-of-block"; state->mode = BAD; break; } /* build code tables -- note: do not change the lenbits or distbits - values here (10 and 9) without reading the comments in inftrees.h + values here (9 and 6) without reading the comments in inftrees.h concerning the ENOUGH constants, which depend on those values */ state->next = state->codes; state->lencode = (code const FAR *)(state->next); - state->lenbits = 10; + state->lenbits = 9; ret = inflate_table(LENS, state->lens, state->nlen, &(state->next), &(state->lenbits), state->work); if (ret) { - strm->msg = (z_const char *)"invalid literal/lengths set"; + strm->msg = (char *)"invalid literal/lengths set"; state->mode = BAD; break; } state->distcode = (code const FAR *)(state->next); - state->distbits = 9; + state->distbits = 6; ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist, &(state->next), &(state->distbits), state->work); if (ret) { - strm->msg = (z_const char *)"invalid distances set"; + strm->msg = (char *)"invalid distances set"; state->mode = BAD; break; } @@ -421,9 +468,10 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, case LEN: /* use inflate_fast() if we have enough input and output */ - if (have >= INFLATE_FAST_MIN_INPUT && - left >= INFLATE_FAST_MIN_OUTPUT) { + if (have >= 6 && left >= 258) { RESTORE(); + if (state->whave < state->wsize) + state->whave = state->wsize - left; inflate_fast(strm, state->wsize); LOAD(); break; @@ -469,7 +517,7 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, /* invalid code */ if (here.op & 64) { - strm->msg = (z_const char *)"invalid literal/length code"; + strm->msg = (char *)"invalid literal/length code"; state->mode = BAD; break; } @@ -501,7 +549,7 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, } DROPBITS(here.bits); if (here.op & 64) { - strm->msg = (z_const char *)"invalid distance code"; + strm->msg = (char *)"invalid distance code"; state->mode = BAD; break; } @@ -516,7 +564,7 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, } if (state->offset > state->wsize - (state->whave < state->wsize ? left : 0)) { - strm->msg = (z_const char *)"invalid distance too far back"; + strm->msg = (char *)"invalid distance too far back"; state->mode = BAD; break; } diff --git a/packages/runtime/vendor/zlib/inffast.c b/packages/runtime/vendor/zlib/inffast.c index 58fc5afc0..9354676e7 100644 --- a/packages/runtime/vendor/zlib/inffast.c +++ b/packages/runtime/vendor/zlib/inffast.c @@ -1,5 +1,5 @@ /* inffast.c -- fast decoding - * Copyright (C) 1995-2026 Mark Adler + * Copyright (C) 1995-2017 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -18,13 +18,13 @@ available, an end-of-block is encountered, or a data error is encountered. When large enough input and output buffers are supplied to inflate(), for example, a 16K input buffer and a 64K output buffer, more than 95% of the - inflate() execution time is spent in this routine. + inflate execution time is spent in this routine. Entry assumptions: state->mode == LEN - strm->avail_in >= INFLATE_FAST_MIN_INPUT (6 bytes) - strm->avail_out >= INFLATE_FAST_MIN_OUTPUT (258 bytes) + strm->avail_in >= 6 + strm->avail_out >= 258 start >= strm->avail_out state->bits < 8 @@ -36,20 +36,16 @@ Notes: - INFLATE_FAST_MIN_INPUT: 6 bytes - - The maximum input bits used by a length/distance pair is 15 bits for the length code, 5 bits for the length extra, 15 bits for the distance code, and 13 bits for the distance extra. This totals 48 bits, or six bytes. Therefore if strm->avail_in >= 6, then there is enough input to avoid checking for available input while decoding. - INFLATE_FAST_MIN_OUTPUT: 258 bytes - - The maximum bytes that a single length/distance pair can output is 258 bytes, which is the maximum length that can be coded. inflate_fast() requires strm->avail_out >= 258 for each loop to avoid checking for - available output space while decoding. + output space. */ void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start) { struct inflate_state FAR *state; @@ -81,10 +77,10 @@ void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start) { /* copy state to local variables */ state = (struct inflate_state FAR *)strm->state; in = strm->next_in; - last = in + (strm->avail_in - (INFLATE_FAST_MIN_INPUT - 1)); + last = in + (strm->avail_in - 5); out = strm->next_out; beg = out - (start - strm->avail_out); - end = out + (strm->avail_out - (INFLATE_FAST_MIN_OUTPUT - 1)); + end = out + (strm->avail_out - 257); #ifdef INFLATE_STRICT dmax = state->dmax; #endif @@ -159,8 +155,7 @@ void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start) { dist += (unsigned)hold & ((1U << op) - 1); #ifdef INFLATE_STRICT if (dist > dmax) { - strm->msg = (z_const char *) - "invalid distance too far back"; + strm->msg = (char *)"invalid distance too far back"; state->mode = BAD; break; } @@ -173,8 +168,8 @@ void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start) { op = dist - op; /* distance back in window */ if (op > whave) { if (state->sane) { - strm->msg = (z_const char *) - "invalid distance too far back"; + strm->msg = + (char *)"invalid distance too far back"; state->mode = BAD; break; } @@ -270,7 +265,7 @@ void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start) { goto dodist; } else { - strm->msg = (z_const char *)"invalid distance code"; + strm->msg = (char *)"invalid distance code"; state->mode = BAD; break; } @@ -285,7 +280,7 @@ void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start) { break; } else { - strm->msg = (z_const char *)"invalid literal/length code"; + strm->msg = (char *)"invalid literal/length code"; state->mode = BAD; break; } @@ -300,12 +295,9 @@ void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start) { /* update state and return */ strm->next_in = in; strm->next_out = out; - strm->avail_in = (unsigned)(in < last ? - (INFLATE_FAST_MIN_INPUT - 1) + (last - in) : - (INFLATE_FAST_MIN_INPUT - 1) - (in - last)); + strm->avail_in = (unsigned)(in < last ? 5 + (last - in) : 5 - (in - last)); strm->avail_out = (unsigned)(out < end ? - (INFLATE_FAST_MIN_OUTPUT - 1) + (end - out) : - (INFLATE_FAST_MIN_OUTPUT - 1) - (out - end)); + 257 + (end - out) : 257 - (out - end)); state->hold = hold; state->bits = bits; return; diff --git a/packages/runtime/vendor/zlib/inffast.h b/packages/runtime/vendor/zlib/inffast.h index 9ff6ce3b6..49c6d156c 100644 --- a/packages/runtime/vendor/zlib/inffast.h +++ b/packages/runtime/vendor/zlib/inffast.h @@ -8,19 +8,4 @@ subject to change. Applications should only use zlib.h. */ -/* INFLATE_FAST_MIN_INPUT: the minimum number of input bytes needed so that - we can safely call inflate_fast() with only one up-front bounds check. One - length/distance code pair (15 bits for the length code, 5 bits for length - extra, 15 bits for the distance code, 13 bits for distance extra) requires - reading up to 48 input bits (6 bytes). -*/ -#define INFLATE_FAST_MIN_INPUT 6 - -/* INFLATE_FAST_MIN_OUTPUT: the minimum number of output bytes needed so that - we can safely call inflate_fast() with only one up-front bounds check. One - length/distance code pair can output up to 258 bytes, which is the maximum - length that can be coded. - */ -#define INFLATE_FAST_MIN_OUTPUT 258 - void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start); diff --git a/packages/runtime/vendor/zlib/inffixed.h b/packages/runtime/vendor/zlib/inffixed.h index 05ce88e4f..d62832776 100644 --- a/packages/runtime/vendor/zlib/inffixed.h +++ b/packages/runtime/vendor/zlib/inffixed.h @@ -1,94 +1,94 @@ -/* inffixed.h -- table for decoding fixed codes - * Generated automatically by makefixed(). - */ + /* inffixed.h -- table for decoding fixed codes + * Generated automatically by makefixed(). + */ -/* WARNING: this file should *not* be used by applications. - It is part of the implementation of this library and is - subject to change. Applications should only use zlib.h. - */ + /* WARNING: this file should *not* be used by applications. + It is part of the implementation of this library and is + subject to change. Applications should only use zlib.h. + */ -static const code lenfix[512] = { - {96,7,0},{0,8,80},{0,8,16},{20,8,115},{18,7,31},{0,8,112},{0,8,48}, - {0,9,192},{16,7,10},{0,8,96},{0,8,32},{0,9,160},{0,8,0},{0,8,128}, - {0,8,64},{0,9,224},{16,7,6},{0,8,88},{0,8,24},{0,9,144},{19,7,59}, - {0,8,120},{0,8,56},{0,9,208},{17,7,17},{0,8,104},{0,8,40},{0,9,176}, - {0,8,8},{0,8,136},{0,8,72},{0,9,240},{16,7,4},{0,8,84},{0,8,20}, - {21,8,227},{19,7,43},{0,8,116},{0,8,52},{0,9,200},{17,7,13},{0,8,100}, - {0,8,36},{0,9,168},{0,8,4},{0,8,132},{0,8,68},{0,9,232},{16,7,8}, - {0,8,92},{0,8,28},{0,9,152},{20,7,83},{0,8,124},{0,8,60},{0,9,216}, - {18,7,23},{0,8,108},{0,8,44},{0,9,184},{0,8,12},{0,8,140},{0,8,76}, - {0,9,248},{16,7,3},{0,8,82},{0,8,18},{21,8,163},{19,7,35},{0,8,114}, - {0,8,50},{0,9,196},{17,7,11},{0,8,98},{0,8,34},{0,9,164},{0,8,2}, - {0,8,130},{0,8,66},{0,9,228},{16,7,7},{0,8,90},{0,8,26},{0,9,148}, - {20,7,67},{0,8,122},{0,8,58},{0,9,212},{18,7,19},{0,8,106},{0,8,42}, - {0,9,180},{0,8,10},{0,8,138},{0,8,74},{0,9,244},{16,7,5},{0,8,86}, - {0,8,22},{64,8,0},{19,7,51},{0,8,118},{0,8,54},{0,9,204},{17,7,15}, - {0,8,102},{0,8,38},{0,9,172},{0,8,6},{0,8,134},{0,8,70},{0,9,236}, - {16,7,9},{0,8,94},{0,8,30},{0,9,156},{20,7,99},{0,8,126},{0,8,62}, - {0,9,220},{18,7,27},{0,8,110},{0,8,46},{0,9,188},{0,8,14},{0,8,142}, - {0,8,78},{0,9,252},{96,7,0},{0,8,81},{0,8,17},{21,8,131},{18,7,31}, - {0,8,113},{0,8,49},{0,9,194},{16,7,10},{0,8,97},{0,8,33},{0,9,162}, - {0,8,1},{0,8,129},{0,8,65},{0,9,226},{16,7,6},{0,8,89},{0,8,25}, - {0,9,146},{19,7,59},{0,8,121},{0,8,57},{0,9,210},{17,7,17},{0,8,105}, - {0,8,41},{0,9,178},{0,8,9},{0,8,137},{0,8,73},{0,9,242},{16,7,4}, - {0,8,85},{0,8,21},{16,8,258},{19,7,43},{0,8,117},{0,8,53},{0,9,202}, - {17,7,13},{0,8,101},{0,8,37},{0,9,170},{0,8,5},{0,8,133},{0,8,69}, - {0,9,234},{16,7,8},{0,8,93},{0,8,29},{0,9,154},{20,7,83},{0,8,125}, - {0,8,61},{0,9,218},{18,7,23},{0,8,109},{0,8,45},{0,9,186},{0,8,13}, - {0,8,141},{0,8,77},{0,9,250},{16,7,3},{0,8,83},{0,8,19},{21,8,195}, - {19,7,35},{0,8,115},{0,8,51},{0,9,198},{17,7,11},{0,8,99},{0,8,35}, - {0,9,166},{0,8,3},{0,8,131},{0,8,67},{0,9,230},{16,7,7},{0,8,91}, - {0,8,27},{0,9,150},{20,7,67},{0,8,123},{0,8,59},{0,9,214},{18,7,19}, - {0,8,107},{0,8,43},{0,9,182},{0,8,11},{0,8,139},{0,8,75},{0,9,246}, - {16,7,5},{0,8,87},{0,8,23},{64,8,0},{19,7,51},{0,8,119},{0,8,55}, - {0,9,206},{17,7,15},{0,8,103},{0,8,39},{0,9,174},{0,8,7},{0,8,135}, - {0,8,71},{0,9,238},{16,7,9},{0,8,95},{0,8,31},{0,9,158},{20,7,99}, - {0,8,127},{0,8,63},{0,9,222},{18,7,27},{0,8,111},{0,8,47},{0,9,190}, - {0,8,15},{0,8,143},{0,8,79},{0,9,254},{96,7,0},{0,8,80},{0,8,16}, - {20,8,115},{18,7,31},{0,8,112},{0,8,48},{0,9,193},{16,7,10},{0,8,96}, - {0,8,32},{0,9,161},{0,8,0},{0,8,128},{0,8,64},{0,9,225},{16,7,6}, - {0,8,88},{0,8,24},{0,9,145},{19,7,59},{0,8,120},{0,8,56},{0,9,209}, - {17,7,17},{0,8,104},{0,8,40},{0,9,177},{0,8,8},{0,8,136},{0,8,72}, - {0,9,241},{16,7,4},{0,8,84},{0,8,20},{21,8,227},{19,7,43},{0,8,116}, - {0,8,52},{0,9,201},{17,7,13},{0,8,100},{0,8,36},{0,9,169},{0,8,4}, - {0,8,132},{0,8,68},{0,9,233},{16,7,8},{0,8,92},{0,8,28},{0,9,153}, - {20,7,83},{0,8,124},{0,8,60},{0,9,217},{18,7,23},{0,8,108},{0,8,44}, - {0,9,185},{0,8,12},{0,8,140},{0,8,76},{0,9,249},{16,7,3},{0,8,82}, - {0,8,18},{21,8,163},{19,7,35},{0,8,114},{0,8,50},{0,9,197},{17,7,11}, - {0,8,98},{0,8,34},{0,9,165},{0,8,2},{0,8,130},{0,8,66},{0,9,229}, - {16,7,7},{0,8,90},{0,8,26},{0,9,149},{20,7,67},{0,8,122},{0,8,58}, - {0,9,213},{18,7,19},{0,8,106},{0,8,42},{0,9,181},{0,8,10},{0,8,138}, - {0,8,74},{0,9,245},{16,7,5},{0,8,86},{0,8,22},{64,8,0},{19,7,51}, - {0,8,118},{0,8,54},{0,9,205},{17,7,15},{0,8,102},{0,8,38},{0,9,173}, - {0,8,6},{0,8,134},{0,8,70},{0,9,237},{16,7,9},{0,8,94},{0,8,30}, - {0,9,157},{20,7,99},{0,8,126},{0,8,62},{0,9,221},{18,7,27},{0,8,110}, - {0,8,46},{0,9,189},{0,8,14},{0,8,142},{0,8,78},{0,9,253},{96,7,0}, - {0,8,81},{0,8,17},{21,8,131},{18,7,31},{0,8,113},{0,8,49},{0,9,195}, - {16,7,10},{0,8,97},{0,8,33},{0,9,163},{0,8,1},{0,8,129},{0,8,65}, - {0,9,227},{16,7,6},{0,8,89},{0,8,25},{0,9,147},{19,7,59},{0,8,121}, - {0,8,57},{0,9,211},{17,7,17},{0,8,105},{0,8,41},{0,9,179},{0,8,9}, - {0,8,137},{0,8,73},{0,9,243},{16,7,4},{0,8,85},{0,8,21},{16,8,258}, - {19,7,43},{0,8,117},{0,8,53},{0,9,203},{17,7,13},{0,8,101},{0,8,37}, - {0,9,171},{0,8,5},{0,8,133},{0,8,69},{0,9,235},{16,7,8},{0,8,93}, - {0,8,29},{0,9,155},{20,7,83},{0,8,125},{0,8,61},{0,9,219},{18,7,23}, - {0,8,109},{0,8,45},{0,9,187},{0,8,13},{0,8,141},{0,8,77},{0,9,251}, - {16,7,3},{0,8,83},{0,8,19},{21,8,195},{19,7,35},{0,8,115},{0,8,51}, - {0,9,199},{17,7,11},{0,8,99},{0,8,35},{0,9,167},{0,8,3},{0,8,131}, - {0,8,67},{0,9,231},{16,7,7},{0,8,91},{0,8,27},{0,9,151},{20,7,67}, - {0,8,123},{0,8,59},{0,9,215},{18,7,19},{0,8,107},{0,8,43},{0,9,183}, - {0,8,11},{0,8,139},{0,8,75},{0,9,247},{16,7,5},{0,8,87},{0,8,23}, - {64,8,0},{19,7,51},{0,8,119},{0,8,55},{0,9,207},{17,7,15},{0,8,103}, - {0,8,39},{0,9,175},{0,8,7},{0,8,135},{0,8,71},{0,9,239},{16,7,9}, - {0,8,95},{0,8,31},{0,9,159},{20,7,99},{0,8,127},{0,8,63},{0,9,223}, - {18,7,27},{0,8,111},{0,8,47},{0,9,191},{0,8,15},{0,8,143},{0,8,79}, - {0,9,255} -}; + static const code lenfix[512] = { + {96,7,0},{0,8,80},{0,8,16},{20,8,115},{18,7,31},{0,8,112},{0,8,48}, + {0,9,192},{16,7,10},{0,8,96},{0,8,32},{0,9,160},{0,8,0},{0,8,128}, + {0,8,64},{0,9,224},{16,7,6},{0,8,88},{0,8,24},{0,9,144},{19,7,59}, + {0,8,120},{0,8,56},{0,9,208},{17,7,17},{0,8,104},{0,8,40},{0,9,176}, + {0,8,8},{0,8,136},{0,8,72},{0,9,240},{16,7,4},{0,8,84},{0,8,20}, + {21,8,227},{19,7,43},{0,8,116},{0,8,52},{0,9,200},{17,7,13},{0,8,100}, + {0,8,36},{0,9,168},{0,8,4},{0,8,132},{0,8,68},{0,9,232},{16,7,8}, + {0,8,92},{0,8,28},{0,9,152},{20,7,83},{0,8,124},{0,8,60},{0,9,216}, + {18,7,23},{0,8,108},{0,8,44},{0,9,184},{0,8,12},{0,8,140},{0,8,76}, + {0,9,248},{16,7,3},{0,8,82},{0,8,18},{21,8,163},{19,7,35},{0,8,114}, + {0,8,50},{0,9,196},{17,7,11},{0,8,98},{0,8,34},{0,9,164},{0,8,2}, + {0,8,130},{0,8,66},{0,9,228},{16,7,7},{0,8,90},{0,8,26},{0,9,148}, + {20,7,67},{0,8,122},{0,8,58},{0,9,212},{18,7,19},{0,8,106},{0,8,42}, + {0,9,180},{0,8,10},{0,8,138},{0,8,74},{0,9,244},{16,7,5},{0,8,86}, + {0,8,22},{64,8,0},{19,7,51},{0,8,118},{0,8,54},{0,9,204},{17,7,15}, + {0,8,102},{0,8,38},{0,9,172},{0,8,6},{0,8,134},{0,8,70},{0,9,236}, + {16,7,9},{0,8,94},{0,8,30},{0,9,156},{20,7,99},{0,8,126},{0,8,62}, + {0,9,220},{18,7,27},{0,8,110},{0,8,46},{0,9,188},{0,8,14},{0,8,142}, + {0,8,78},{0,9,252},{96,7,0},{0,8,81},{0,8,17},{21,8,131},{18,7,31}, + {0,8,113},{0,8,49},{0,9,194},{16,7,10},{0,8,97},{0,8,33},{0,9,162}, + {0,8,1},{0,8,129},{0,8,65},{0,9,226},{16,7,6},{0,8,89},{0,8,25}, + {0,9,146},{19,7,59},{0,8,121},{0,8,57},{0,9,210},{17,7,17},{0,8,105}, + {0,8,41},{0,9,178},{0,8,9},{0,8,137},{0,8,73},{0,9,242},{16,7,4}, + {0,8,85},{0,8,21},{16,8,258},{19,7,43},{0,8,117},{0,8,53},{0,9,202}, + {17,7,13},{0,8,101},{0,8,37},{0,9,170},{0,8,5},{0,8,133},{0,8,69}, + {0,9,234},{16,7,8},{0,8,93},{0,8,29},{0,9,154},{20,7,83},{0,8,125}, + {0,8,61},{0,9,218},{18,7,23},{0,8,109},{0,8,45},{0,9,186},{0,8,13}, + {0,8,141},{0,8,77},{0,9,250},{16,7,3},{0,8,83},{0,8,19},{21,8,195}, + {19,7,35},{0,8,115},{0,8,51},{0,9,198},{17,7,11},{0,8,99},{0,8,35}, + {0,9,166},{0,8,3},{0,8,131},{0,8,67},{0,9,230},{16,7,7},{0,8,91}, + {0,8,27},{0,9,150},{20,7,67},{0,8,123},{0,8,59},{0,9,214},{18,7,19}, + {0,8,107},{0,8,43},{0,9,182},{0,8,11},{0,8,139},{0,8,75},{0,9,246}, + {16,7,5},{0,8,87},{0,8,23},{64,8,0},{19,7,51},{0,8,119},{0,8,55}, + {0,9,206},{17,7,15},{0,8,103},{0,8,39},{0,9,174},{0,8,7},{0,8,135}, + {0,8,71},{0,9,238},{16,7,9},{0,8,95},{0,8,31},{0,9,158},{20,7,99}, + {0,8,127},{0,8,63},{0,9,222},{18,7,27},{0,8,111},{0,8,47},{0,9,190}, + {0,8,15},{0,8,143},{0,8,79},{0,9,254},{96,7,0},{0,8,80},{0,8,16}, + {20,8,115},{18,7,31},{0,8,112},{0,8,48},{0,9,193},{16,7,10},{0,8,96}, + {0,8,32},{0,9,161},{0,8,0},{0,8,128},{0,8,64},{0,9,225},{16,7,6}, + {0,8,88},{0,8,24},{0,9,145},{19,7,59},{0,8,120},{0,8,56},{0,9,209}, + {17,7,17},{0,8,104},{0,8,40},{0,9,177},{0,8,8},{0,8,136},{0,8,72}, + {0,9,241},{16,7,4},{0,8,84},{0,8,20},{21,8,227},{19,7,43},{0,8,116}, + {0,8,52},{0,9,201},{17,7,13},{0,8,100},{0,8,36},{0,9,169},{0,8,4}, + {0,8,132},{0,8,68},{0,9,233},{16,7,8},{0,8,92},{0,8,28},{0,9,153}, + {20,7,83},{0,8,124},{0,8,60},{0,9,217},{18,7,23},{0,8,108},{0,8,44}, + {0,9,185},{0,8,12},{0,8,140},{0,8,76},{0,9,249},{16,7,3},{0,8,82}, + {0,8,18},{21,8,163},{19,7,35},{0,8,114},{0,8,50},{0,9,197},{17,7,11}, + {0,8,98},{0,8,34},{0,9,165},{0,8,2},{0,8,130},{0,8,66},{0,9,229}, + {16,7,7},{0,8,90},{0,8,26},{0,9,149},{20,7,67},{0,8,122},{0,8,58}, + {0,9,213},{18,7,19},{0,8,106},{0,8,42},{0,9,181},{0,8,10},{0,8,138}, + {0,8,74},{0,9,245},{16,7,5},{0,8,86},{0,8,22},{64,8,0},{19,7,51}, + {0,8,118},{0,8,54},{0,9,205},{17,7,15},{0,8,102},{0,8,38},{0,9,173}, + {0,8,6},{0,8,134},{0,8,70},{0,9,237},{16,7,9},{0,8,94},{0,8,30}, + {0,9,157},{20,7,99},{0,8,126},{0,8,62},{0,9,221},{18,7,27},{0,8,110}, + {0,8,46},{0,9,189},{0,8,14},{0,8,142},{0,8,78},{0,9,253},{96,7,0}, + {0,8,81},{0,8,17},{21,8,131},{18,7,31},{0,8,113},{0,8,49},{0,9,195}, + {16,7,10},{0,8,97},{0,8,33},{0,9,163},{0,8,1},{0,8,129},{0,8,65}, + {0,9,227},{16,7,6},{0,8,89},{0,8,25},{0,9,147},{19,7,59},{0,8,121}, + {0,8,57},{0,9,211},{17,7,17},{0,8,105},{0,8,41},{0,9,179},{0,8,9}, + {0,8,137},{0,8,73},{0,9,243},{16,7,4},{0,8,85},{0,8,21},{16,8,258}, + {19,7,43},{0,8,117},{0,8,53},{0,9,203},{17,7,13},{0,8,101},{0,8,37}, + {0,9,171},{0,8,5},{0,8,133},{0,8,69},{0,9,235},{16,7,8},{0,8,93}, + {0,8,29},{0,9,155},{20,7,83},{0,8,125},{0,8,61},{0,9,219},{18,7,23}, + {0,8,109},{0,8,45},{0,9,187},{0,8,13},{0,8,141},{0,8,77},{0,9,251}, + {16,7,3},{0,8,83},{0,8,19},{21,8,195},{19,7,35},{0,8,115},{0,8,51}, + {0,9,199},{17,7,11},{0,8,99},{0,8,35},{0,9,167},{0,8,3},{0,8,131}, + {0,8,67},{0,9,231},{16,7,7},{0,8,91},{0,8,27},{0,9,151},{20,7,67}, + {0,8,123},{0,8,59},{0,9,215},{18,7,19},{0,8,107},{0,8,43},{0,9,183}, + {0,8,11},{0,8,139},{0,8,75},{0,9,247},{16,7,5},{0,8,87},{0,8,23}, + {64,8,0},{19,7,51},{0,8,119},{0,8,55},{0,9,207},{17,7,15},{0,8,103}, + {0,8,39},{0,9,175},{0,8,7},{0,8,135},{0,8,71},{0,9,239},{16,7,9}, + {0,8,95},{0,8,31},{0,9,159},{20,7,99},{0,8,127},{0,8,63},{0,9,223}, + {18,7,27},{0,8,111},{0,8,47},{0,9,191},{0,8,15},{0,8,143},{0,8,79}, + {0,9,255} + }; -static const code distfix[32] = { - {16,5,1},{23,5,257},{19,5,17},{27,5,4097},{17,5,5},{25,5,1025}, - {21,5,65},{29,5,16385},{16,5,3},{24,5,513},{20,5,33},{28,5,8193}, - {18,5,9},{26,5,2049},{22,5,129},{64,5,0},{16,5,2},{23,5,385}, - {19,5,25},{27,5,6145},{17,5,7},{25,5,1537},{21,5,97},{29,5,24577}, - {16,5,4},{24,5,769},{20,5,49},{28,5,12289},{18,5,13},{26,5,3073}, - {22,5,193},{64,5,0} -}; + static const code distfix[32] = { + {16,5,1},{23,5,257},{19,5,17},{27,5,4097},{17,5,5},{25,5,1025}, + {21,5,65},{29,5,16385},{16,5,3},{24,5,513},{20,5,33},{28,5,8193}, + {18,5,9},{26,5,2049},{22,5,129},{64,5,0},{16,5,2},{23,5,385}, + {19,5,25},{27,5,6145},{17,5,7},{25,5,1537},{21,5,97},{29,5,24577}, + {16,5,4},{24,5,769},{20,5,49},{28,5,12289},{18,5,13},{26,5,3073}, + {22,5,193},{64,5,0} + }; diff --git a/packages/runtime/vendor/zlib/inflate.c b/packages/runtime/vendor/zlib/inflate.c index 0742ce10e..94ecff015 100644 --- a/packages/runtime/vendor/zlib/inflate.c +++ b/packages/runtime/vendor/zlib/inflate.c @@ -1,5 +1,5 @@ /* inflate.c -- zlib decompression - * Copyright (C) 1995-2026 Mark Adler + * Copyright (C) 1995-2022 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -85,6 +85,12 @@ #include "inflate.h" #include "inffast.h" +#ifdef MAKEFIXED +# ifndef BUILDFIXED +# define BUILDFIXED +# endif +#endif + local int inflateStateCheck(z_streamp strm) { struct inflate_state FAR *state; if (strm == Z_NULL || @@ -104,7 +110,6 @@ int ZEXPORT inflateResetKeep(z_streamp strm) { state = (struct inflate_state FAR *)strm->state; strm->total_in = strm->total_out = state->total = 0; strm->msg = Z_NULL; - strm->data_type = 0; if (state->wrap) /* to support ill-conceived Java test suite */ strm->adler = state->wrap & 1; state->mode = HEAD; @@ -197,13 +202,11 @@ int ZEXPORT inflateInit2_(z_streamp strm, int windowBits, state = (struct inflate_state FAR *) ZALLOC(strm, 1, sizeof(struct inflate_state)); if (state == Z_NULL) return Z_MEM_ERROR; - zmemzero(state, sizeof(struct inflate_state)); Tracev((stderr, "inflate: allocated\n")); strm->state = (struct internal_state FAR *)state; state->strm = strm; state->window = Z_NULL; state->mode = HEAD; /* to pass state test in inflateReset2() */ - state->check = 1L; /* 1L is the result of adler32() zero length data */ ret = inflateReset2(strm, windowBits); if (ret != Z_OK) { ZFREE(strm, state); @@ -231,11 +234,123 @@ int ZEXPORT inflatePrime(z_streamp strm, int bits, int value) { } if (bits > 16 || state->bits + (uInt)bits > 32) return Z_STREAM_ERROR; value &= (1L << bits) - 1; - state->hold += (unsigned long)value << state->bits; + state->hold += (unsigned)value << state->bits; state->bits += (uInt)bits; return Z_OK; } +/* + Return state with length and distance decoding tables and index sizes set to + fixed code decoding. Normally this returns fixed tables from inffixed.h. + If BUILDFIXED is defined, then instead this routine builds the tables the + first time it's called, and returns those tables the first time and + thereafter. This reduces the size of the code by about 2K bytes, in + exchange for a little execution time. However, BUILDFIXED should not be + used for threaded applications, since the rewriting of the tables and virgin + may not be thread-safe. + */ +local void fixedtables(struct inflate_state FAR *state) { +#ifdef BUILDFIXED + static int virgin = 1; + static code *lenfix, *distfix; + static code fixed[544]; + + /* build fixed huffman tables if first call (may not be thread safe) */ + if (virgin) { + unsigned sym, bits; + static code *next; + + /* literal/length table */ + sym = 0; + while (sym < 144) state->lens[sym++] = 8; + while (sym < 256) state->lens[sym++] = 9; + while (sym < 280) state->lens[sym++] = 7; + while (sym < 288) state->lens[sym++] = 8; + next = fixed; + lenfix = next; + bits = 9; + inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work); + + /* distance table */ + sym = 0; + while (sym < 32) state->lens[sym++] = 5; + distfix = next; + bits = 5; + inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work); + + /* do this just once */ + virgin = 0; + } +#else /* !BUILDFIXED */ +# include "inffixed.h" +#endif /* BUILDFIXED */ + state->lencode = lenfix; + state->lenbits = 9; + state->distcode = distfix; + state->distbits = 5; +} + +#ifdef MAKEFIXED +#include + +/* + Write out the inffixed.h that is #include'd above. Defining MAKEFIXED also + defines BUILDFIXED, so the tables are built on the fly. makefixed() writes + those tables to stdout, which would be piped to inffixed.h. A small program + can simply call makefixed to do this: + + void makefixed(void); + + int main(void) + { + makefixed(); + return 0; + } + + Then that can be linked with zlib built with MAKEFIXED defined and run: + + a.out > inffixed.h + */ +void makefixed(void) +{ + unsigned low, size; + struct inflate_state state; + + fixedtables(&state); + puts(" /* inffixed.h -- table for decoding fixed codes"); + puts(" * Generated automatically by makefixed()."); + puts(" */"); + puts(""); + puts(" /* WARNING: this file should *not* be used by applications."); + puts(" It is part of the implementation of this library and is"); + puts(" subject to change. Applications should only use zlib.h."); + puts(" */"); + puts(""); + size = 1U << 9; + printf(" static const code lenfix[%u] = {", size); + low = 0; + for (;;) { + if ((low % 7) == 0) printf("\n "); + printf("{%u,%u,%d}", (low & 127) == 99 ? 64 : state.lencode[low].op, + state.lencode[low].bits, state.lencode[low].val); + if (++low == size) break; + putchar(','); + } + puts("\n };"); + size = 1U << 5; + printf("\n static const code distfix[%u] = {", size); + low = 0; + for (;;) { + if ((low % 6) == 0) printf("\n "); + printf("{%u,%u,%d}", state.distcode[low].op, state.distcode[low].bits, + state.distcode[low].val); + if (++low == size) break; + putchar(','); + } + puts("\n };"); +} +#endif /* MAKEFIXED */ + /* Update the window with the last wsize (normally 32K) bytes written before returning. If window does not exist yet, create it. This is only called @@ -527,12 +642,12 @@ int ZEXPORT inflate(z_streamp strm, int flush) { if ( #endif ((BITS(8) << 8) + (hold >> 8)) % 31) { - strm->msg = (z_const char *)"incorrect header check"; + strm->msg = (char *)"incorrect header check"; state->mode = BAD; break; } if (BITS(4) != Z_DEFLATED) { - strm->msg = (z_const char *)"unknown compression method"; + strm->msg = (char *)"unknown compression method"; state->mode = BAD; break; } @@ -541,7 +656,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { if (state->wbits == 0) state->wbits = len; if (len > 15 || len > state->wbits) { - strm->msg = (z_const char *)"invalid window size"; + strm->msg = (char *)"invalid window size"; state->mode = BAD; break; } @@ -557,12 +672,12 @@ int ZEXPORT inflate(z_streamp strm, int flush) { NEEDBITS(16); state->flags = (int)(hold); if ((state->flags & 0xff) != Z_DEFLATED) { - strm->msg = (z_const char *)"unknown compression method"; + strm->msg = (char *)"unknown compression method"; state->mode = BAD; break; } if (state->flags & 0xe000) { - strm->msg = (z_const char *)"unknown header flags set"; + strm->msg = (char *)"unknown header flags set"; state->mode = BAD; break; } @@ -678,7 +793,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { if (state->flags & 0x0200) { NEEDBITS(16); if ((state->wrap & 4) && hold != (state->check & 0xffff)) { - strm->msg = (z_const char *)"header crc mismatch"; + strm->msg = (char *)"header crc mismatch"; state->mode = BAD; break; } @@ -725,7 +840,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { state->mode = STORED; break; case 1: /* fixed block */ - inflate_fixed(state); + fixedtables(state); Tracev((stderr, "inflate: fixed codes block%s\n", state->last ? " (last)" : "")); state->mode = LEN_; /* decode codes */ @@ -739,8 +854,8 @@ int ZEXPORT inflate(z_streamp strm, int flush) { state->last ? " (last)" : "")); state->mode = TABLE; break; - default: - strm->msg = (z_const char *)"invalid block type"; + case 3: + strm->msg = (char *)"invalid block type"; state->mode = BAD; } DROPBITS(2); @@ -749,7 +864,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { BYTEBITS(); /* go to byte boundary */ NEEDBITS(32); if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) { - strm->msg = (z_const char *)"invalid stored block lengths"; + strm->msg = (char *)"invalid stored block lengths"; state->mode = BAD; break; } @@ -790,8 +905,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { DROPBITS(4); #ifndef PKZIP_BUG_WORKAROUND if (state->nlen > 286 || state->ndist > 30) { - strm->msg = (z_const char *) - "too many length or distance symbols"; + strm->msg = (char *)"too many length or distance symbols"; state->mode = BAD; break; } @@ -809,12 +923,12 @@ int ZEXPORT inflate(z_streamp strm, int flush) { while (state->have < 19) state->lens[order[state->have++]] = 0; state->next = state->codes; - state->lencode = state->distcode = (const code FAR *)(state->next); + state->lencode = (const code FAR *)(state->next); state->lenbits = 7; ret = inflate_table(CODES, state->lens, 19, &(state->next), &(state->lenbits), state->work); if (ret) { - strm->msg = (z_const char *)"invalid code lengths set"; + strm->msg = (char *)"invalid code lengths set"; state->mode = BAD; break; } @@ -838,8 +952,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { NEEDBITS(here.bits + 2); DROPBITS(here.bits); if (state->have == 0) { - strm->msg = (z_const char *) - "invalid bit length repeat"; + strm->msg = (char *)"invalid bit length repeat"; state->mode = BAD; break; } @@ -862,8 +975,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { DROPBITS(7); } if (state->have + copy > state->nlen + state->ndist) { - strm->msg = (z_const char *) - "invalid bit length repeat"; + strm->msg = (char *)"invalid bit length repeat"; state->mode = BAD; break; } @@ -877,31 +989,30 @@ int ZEXPORT inflate(z_streamp strm, int flush) { /* check for end-of-block code (better have one) */ if (state->lens[256] == 0) { - strm->msg = (z_const char *) - "invalid code -- missing end-of-block"; + strm->msg = (char *)"invalid code -- missing end-of-block"; state->mode = BAD; break; } /* build code tables -- note: do not change the lenbits or distbits - values here (10 and 9) without reading the comments in inftrees.h + values here (9 and 6) without reading the comments in inftrees.h concerning the ENOUGH constants, which depend on those values */ state->next = state->codes; state->lencode = (const code FAR *)(state->next); - state->lenbits = 10; + state->lenbits = 9; ret = inflate_table(LENS, state->lens, state->nlen, &(state->next), &(state->lenbits), state->work); if (ret) { - strm->msg = (z_const char *)"invalid literal/lengths set"; + strm->msg = (char *)"invalid literal/lengths set"; state->mode = BAD; break; } state->distcode = (const code FAR *)(state->next); - state->distbits = 9; + state->distbits = 6; ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist, &(state->next), &(state->distbits), state->work); if (ret) { - strm->msg = (z_const char *)"invalid distances set"; + strm->msg = (char *)"invalid distances set"; state->mode = BAD; break; } @@ -913,8 +1024,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { state->mode = LEN; /* fallthrough */ case LEN: - if (have >= INFLATE_FAST_MIN_INPUT && - left >= INFLATE_FAST_MIN_OUTPUT) { + if (have >= 6 && left >= 258) { RESTORE(); inflate_fast(strm, out); LOAD(); @@ -956,7 +1066,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { break; } if (here.op & 64) { - strm->msg = (z_const char *)"invalid literal/length code"; + strm->msg = (char *)"invalid literal/length code"; state->mode = BAD; break; } @@ -994,7 +1104,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { DROPBITS(here.bits); state->back += here.bits; if (here.op & 64) { - strm->msg = (z_const char *)"invalid distance code"; + strm->msg = (char *)"invalid distance code"; state->mode = BAD; break; } @@ -1011,7 +1121,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { } #ifdef INFLATE_STRICT if (state->offset > state->dmax) { - strm->msg = (z_const char *)"invalid distance too far back"; + strm->msg = (char *)"invalid distance too far back"; state->mode = BAD; break; } @@ -1026,8 +1136,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { copy = state->offset - copy; if (copy > state->whave) { if (state->sane) { - strm->msg = (z_const char *) - "invalid distance too far back"; + strm->msg = (char *)"invalid distance too far back"; state->mode = BAD; break; } @@ -1086,7 +1195,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { state->flags ? hold : #endif ZSWAP32(hold)) != state->check) { - strm->msg = (z_const char *)"incorrect data check"; + strm->msg = (char *)"incorrect data check"; state->mode = BAD; break; } @@ -1100,7 +1209,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { if (state->wrap && state->flags) { NEEDBITS(32); if ((state->wrap & 4) && hold != (state->total & 0xffffffff)) { - strm->msg = (z_const char *)"incorrect length check"; + strm->msg = (char *)"incorrect length check"; state->mode = BAD; break; } @@ -1331,6 +1440,7 @@ int ZEXPORT inflateCopy(z_streamp dest, z_streamp source) { struct inflate_state FAR *state; struct inflate_state FAR *copy; unsigned char FAR *window; + unsigned wsize; /* check input */ if (inflateStateCheck(source) || dest == Z_NULL) @@ -1341,7 +1451,6 @@ int ZEXPORT inflateCopy(z_streamp dest, z_streamp source) { copy = (struct inflate_state FAR *) ZALLOC(source, 1, sizeof(struct inflate_state)); if (copy == Z_NULL) return Z_MEM_ERROR; - zmemzero(copy, sizeof(struct inflate_state)); window = Z_NULL; if (state->window != Z_NULL) { window = (unsigned char FAR *) @@ -1353,8 +1462,8 @@ int ZEXPORT inflateCopy(z_streamp dest, z_streamp source) { } /* copy state */ - zmemcpy(dest, source, sizeof(z_stream)); - zmemcpy(copy, state, sizeof(struct inflate_state)); + zmemcpy((voidpf)dest, (voidpf)source, sizeof(z_stream)); + zmemcpy((voidpf)copy, (voidpf)state, sizeof(struct inflate_state)); copy->strm = dest; if (state->lencode >= state->codes && state->lencode <= state->codes + ENOUGH - 1) { @@ -1362,8 +1471,10 @@ int ZEXPORT inflateCopy(z_streamp dest, z_streamp source) { copy->distcode = copy->codes + (state->distcode - state->codes); } copy->next = copy->codes + (state->next - state->codes); - if (window != Z_NULL) - zmemcpy(window, state->window, state->whave); + if (window != Z_NULL) { + wsize = 1U << state->wbits; + zmemcpy(window, state->window, wsize); + } copy->window = window; dest->state = (struct internal_state FAR *)copy; return Z_OK; diff --git a/packages/runtime/vendor/zlib/inflate.h b/packages/runtime/vendor/zlib/inflate.h index f758e0dcc..f127b6b1f 100644 --- a/packages/runtime/vendor/zlib/inflate.h +++ b/packages/runtime/vendor/zlib/inflate.h @@ -100,7 +100,7 @@ struct inflate_state { unsigned char FAR *window; /* allocated sliding window, if needed */ /* bit accumulator */ unsigned long hold; /* input bit accumulator */ - unsigned bits; /* number of bits in hold */ + unsigned bits; /* number of bits in "in" */ /* for string and stored block copying */ unsigned length; /* literal or length of data to copy */ unsigned offset; /* distance back to copy string from */ diff --git a/packages/runtime/vendor/zlib/inftrees.c b/packages/runtime/vendor/zlib/inftrees.c index 99d8d7730..98cfe1644 100644 --- a/packages/runtime/vendor/zlib/inftrees.c +++ b/packages/runtime/vendor/zlib/inftrees.c @@ -1,29 +1,15 @@ /* inftrees.c -- generate Huffman trees for efficient decoding - * Copyright (C) 1995-2026 Mark Adler + * Copyright (C) 1995-2024 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ -#ifdef MAKEFIXED -# ifndef BUILDFIXED -# define BUILDFIXED -# endif -#endif -#ifdef BUILDFIXED -# define Z_ONCE -#endif - #include "zutil.h" #include "inftrees.h" -#include "inflate.h" - -#ifndef NULL -# define NULL 0 -#endif #define MAXBITS 15 const char inflate_copyright[] = - " inflate 1.3.2.1 Copyright 1995-2026 Mark Adler "; + " inflate 1.3.1 Copyright 1995-2024 Mark Adler "; /* If you use the zlib library in a product, an acknowledgment is welcome in the documentation of your product. If for some reason you cannot @@ -61,9 +47,9 @@ int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens, unsigned mask; /* mask for low root bits */ code here; /* table entry for duplication */ code FAR *next; /* next available space in table */ - const unsigned short FAR *base = NULL; /* base value table to use */ - const unsigned short FAR *extra = NULL; /* extra bits table to use */ - unsigned match = 0; /* use base and extra for symbol >= match */ + const unsigned short FAR *base; /* base value table to use */ + const unsigned short FAR *extra; /* extra bits table to use */ + unsigned match; /* use base and extra for symbol >= match */ unsigned short count[MAXBITS+1]; /* number of codes of each length */ unsigned short offs[MAXBITS+1]; /* offsets in table for each length */ static const unsigned short lbase[31] = { /* Length codes 257..285 base */ @@ -71,7 +57,7 @@ int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0}; static const unsigned short lext[31] = { /* Length codes 257..285 extra */ 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, - 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 68, 193}; + 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 203, 77}; static const unsigned short dbase[32] = { /* Distance codes 0..29 base */ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, @@ -189,6 +175,7 @@ int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens, /* set up for code type */ switch (type) { case CODES: + base = extra = work; /* dummy value--not used */ match = 20; break; case LENS: @@ -196,9 +183,10 @@ int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens, extra = lext; match = 257; break; - case DISTS: + default: /* DISTS */ base = dbase; extra = dext; + match = 0; } /* initialize state for loop */ @@ -309,116 +297,3 @@ int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens, *bits = root; return 0; } - -#ifdef BUILDFIXED -/* - If this is compiled with BUILDFIXED defined, and if inflate will be used in - multiple threads, and if atomics are not available, then inflate() must be - called with a fixed block (e.g. 0x03 0x00) to initialize the tables and must - return before any other threads are allowed to call inflate. - */ - -static code *lenfix, *distfix; -static code fixed[544]; - -/* State for z_once(). */ -local z_once_t built = Z_ONCE_INIT; - -local void buildtables(void) { - unsigned sym, bits; - static code *next; - unsigned short lens[288], work[288]; - - /* literal/length table */ - sym = 0; - while (sym < 144) lens[sym++] = 8; - while (sym < 256) lens[sym++] = 9; - while (sym < 280) lens[sym++] = 7; - while (sym < 288) lens[sym++] = 8; - next = fixed; - lenfix = next; - bits = 9; - inflate_table(LENS, lens, 288, &(next), &(bits), work); - - /* distance table */ - sym = 0; - while (sym < 32) lens[sym++] = 5; - distfix = next; - bits = 5; - inflate_table(DISTS, lens, 32, &(next), &(bits), work); -} -#else /* !BUILDFIXED */ -# include "inffixed.h" -#endif /* BUILDFIXED */ - -/* - Return state with length and distance decoding tables and index sizes set to - fixed code decoding. Normally this returns fixed tables from inffixed.h. - If BUILDFIXED is defined, then instead this routine builds the tables the - first time it's called, and returns those tables the first time and - thereafter. This reduces the size of the code by about 2K bytes, in - exchange for a little execution time. However, BUILDFIXED should not be - used for threaded applications if atomics are not available, as it will - not be thread-safe. - */ -void inflate_fixed(struct inflate_state FAR *state) { -#ifdef BUILDFIXED - z_once(&built, buildtables); -#endif /* BUILDFIXED */ - state->lencode = lenfix; - state->lenbits = 9; - state->distcode = distfix; - state->distbits = 5; -} - -#ifdef MAKEFIXED -#include - -/* - Write out the inffixed.h that will be #include'd above. Defining MAKEFIXED - also defines BUILDFIXED, so the tables are built on the fly. main() writes - those tables to stdout, which would directed to inffixed.h. Compile this - along with zutil.c: - - cc -DMAKEFIXED -o fix inftrees.c zutil.c - ./fix > inffixed.h - */ -int main(void) { - unsigned low, size; - struct inflate_state state; - - inflate_fixed(&state); - puts("/* inffixed.h -- table for decoding fixed codes"); - puts(" * Generated automatically by makefixed()."); - puts(" */"); - puts(""); - puts("/* WARNING: this file should *not* be used by applications."); - puts(" It is part of the implementation of this library and is"); - puts(" subject to change. Applications should only use zlib.h."); - puts(" */"); - puts(""); - size = 1U << 9; - printf("static const code lenfix[%u] = {", size); - low = 0; - for (;;) { - if ((low % 7) == 0) printf("\n "); - printf("{%u,%u,%d}", (low & 127) == 99 ? 64 : state.lencode[low].op, - state.lencode[low].bits, state.lencode[low].val); - if (++low == size) break; - putchar(','); - } - puts("\n};"); - size = 1U << 5; - printf("\nstatic const code distfix[%u] = {", size); - low = 0; - for (;;) { - if ((low % 6) == 0) printf("\n "); - printf("{%u,%u,%d}", state.distcode[low].op, state.distcode[low].bits, - state.distcode[low].val); - if (++low == size) break; - putchar(','); - } - puts("\n};"); - return 0; -} -#endif /* MAKEFIXED */ diff --git a/packages/runtime/vendor/zlib/inftrees.h b/packages/runtime/vendor/zlib/inftrees.h index c572f49d5..396f74b5d 100644 --- a/packages/runtime/vendor/zlib/inftrees.h +++ b/packages/runtime/vendor/zlib/inftrees.h @@ -1,5 +1,5 @@ /* inftrees.h -- header to use inftrees.c - * Copyright (C) 1995-2026 Mark Adler + * Copyright (C) 1995-2005, 2010 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -36,17 +36,17 @@ typedef struct { */ /* Maximum size of the dynamic table. The maximum number of code structures is - 1924, which is the sum of 1332 for literal/length codes and 592 for distance + 1444, which is the sum of 852 for literal/length codes and 592 for distance codes. These values were found by exhaustive searches using the program examples/enough.c found in the zlib distribution. The arguments to that program are the number of symbols, the initial root table size, and the - maximum bit length of a code. "enough 286 10 15" for literal/length codes - returns 1332, and "enough 30 9 15" for distance codes returns 592. - The initial root table size (10 or 9) is found in the fifth argument of the + maximum bit length of a code. "enough 286 9 15" for literal/length codes + returns 852, and "enough 30 6 15" for distance codes returns 592. The + initial root table size (9 or 6) is found in the fifth argument of the inflate_table() calls in inflate.c and infback.c. If the root table size is changed, then these maximum sizes would be need to be recalculated and updated. */ -#define ENOUGH_LENS 1332 +#define ENOUGH_LENS 852 #define ENOUGH_DISTS 592 #define ENOUGH (ENOUGH_LENS+ENOUGH_DISTS) @@ -60,5 +60,3 @@ typedef enum { int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens, unsigned codes, code FAR * FAR *table, unsigned FAR *bits, unsigned short FAR *work); -struct inflate_state; -void ZLIB_INTERNAL inflate_fixed(struct inflate_state FAR *state); diff --git a/packages/runtime/vendor/zlib/slide_hash_simd.h b/packages/runtime/vendor/zlib/slide_hash_simd.h deleted file mode 100644 index 1000b774c..000000000 --- a/packages/runtime/vendor/zlib/slide_hash_simd.h +++ /dev/null @@ -1,116 +0,0 @@ -/* slide_hash_simd.h - * - * Copyright 2022 The Chromium Authors - * Use of this source code is governed by a BSD-style license that can be - * found in the Chromium source repository LICENSE file. - */ - -#ifndef SLIDE_HASH_SIMD_H -#define SLIDE_HASH_SIMD_H - -#include "deflate.h" - -#ifndef INLINE -#if defined(_MSC_VER) && !defined(__clang__) -#define INLINE __inline -#else -#define INLINE inline -#endif -#endif - -#if defined(CPU_NO_SIMD) - -#error SIMD has been disabled for your build target - -#elif defined(DEFLATE_SLIDE_HASH_SSE2) - -#include /* SSE2 */ - -#define Z_SLIDE_INIT_SIMD(wsize) _mm_set1_epi16((ush)(wsize)) - -#define Z_SLIDE_HASH_SIMD(table, size, vector_wsize) \ - for (const Posf* const end = table + size; table != end;) { \ - __m128i vO = _mm_loadu_si128((__m128i *)(table + 0)); \ - vO = _mm_subs_epu16(vO, vector_wsize); \ - _mm_storeu_si128((__m128i *)(table + 0), vO); \ - table += 8; \ - } - -typedef __m128i z_vec128i_u16x8_t; - -#elif defined(DEFLATE_SLIDE_HASH_NEON) - -#include /* NEON */ - -#define Z_SLIDE_INIT_SIMD(wsize) vdupq_n_u16((ush)(wsize)) - -#define Z_SLIDE_HASH_SIMD(table, size, vector_wsize) \ - for (const Posf* const end = table + size; table != end;) { \ - uint16x8_t vO = vld1q_u16(table + 0); \ - uint16x8_t v8 = vld1q_u16(table + 8); \ - vO = vqsubq_u16(vO, vector_wsize); \ - v8 = vqsubq_u16(v8, vector_wsize); \ - vst1q_u16(table + 0, vO); \ - vst1q_u16(table + 8, v8); \ - table += 8 + 8; \ - } - -typedef uint16x8_t z_vec128i_u16x8_t; - -#else - -#error slide_hash_simd is not defined for your build target - -#endif - -/* =========================================================================== - * Slide the hash table when sliding the window down (could be avoided with 32 - * bit values at the expense of memory usage). We slide even when level == 0 to - * keep the hash table consistent if we switch back to level > 0 later. - */ -local INLINE void slide_hash_simd( - Posf *head, Posf *prev, const uInt w_size, const uInt hash_size) { - /* - * The SIMD implementation of the hash table slider assumes: - * - * 1. hash chain offset is 2 bytes. Should be true as Pos is "ush" type. - */ - Assert(sizeof(Pos) == 2, "Pos type size error: should be 2 bytes"); - Assert(sizeof(ush) == 2, "ush type size error: should be 2 bytes"); - - Assert(hash_size <= (1 << 16), "Hash table maximum size error"); - Assert(hash_size >= (1 << 8), "Hash table minimum size error"); - Assert(w_size == (ush)w_size, "Prev table size error"); - - /* - * 2. The hash & prev table sizes are a multiple of 32 bytes (256 bits), - * since the NEON table slider moves two 128-bit items per loop (loop is - * unrolled on NEON for performance, see http://crbug.com/863257). - */ - Assert(!((hash_size * sizeof(head[0])) & (32 - 1)), - "Hash table size error: should be a multiple of 32 bytes"); - Assert(!((w_size * sizeof(prev[0])) & (32 - 1)), - "Prev table size error: should be a multiple of 32 bytes"); - - /* - * Duplicate (ush)w_size in each uint16_t component of a 128-bit vector. - */ - const z_vec128i_u16x8_t vec_wsize = Z_SLIDE_INIT_SIMD(w_size); - - /* - * Slide {head,prev} hash chain values: subtracts (ush)w_size from every - * value with a saturating SIMD subtract, to clamp the result to 0(NIL), - * to implement slide_hash() `(m >= wsize ? m - wsize : NIL);` code. - */ - Z_SLIDE_HASH_SIMD(head, hash_size, vec_wsize); -#ifndef FASTEST - Z_SLIDE_HASH_SIMD(prev, w_size, vec_wsize); -#endif - -} - -#undef z_vec128i_u16x8_t -#undef Z_SLIDE_HASH_SIMD -#undef Z_SLIDE_INIT_SIMD - -#endif /* SLIDE_HASH_SIMD_H */ diff --git a/packages/runtime/vendor/zlib/trees.c b/packages/runtime/vendor/zlib/trees.c index 1aa155102..6a523ef34 100644 --- a/packages/runtime/vendor/zlib/trees.c +++ b/packages/runtime/vendor/zlib/trees.c @@ -1,5 +1,5 @@ /* trees.c -- output deflated data using Huffman coding - * Copyright (C) 1995-2026 Jean-loup Gailly + * Copyright (C) 1995-2024 Jean-loup Gailly * detect_data_type() function provided freely by Cosmin Truta, 2006 * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -112,7 +112,7 @@ local int base_dist[D_CODES]; #else # include "trees.h" -#endif /* defined(GEN_TREES_H) || !defined(STDC) */ +#endif /* GEN_TREES_H */ struct static_tree_desc_s { const ct_data *static_tree; /* static tree or NULL */ @@ -141,25 +141,18 @@ local TCONST static_tree_desc static_bl_desc = * Output a short LSB first on the stream. * IN assertion: there is enough room in pendingBuf. */ -#if defined(DEFLATE_CHUNK_WRITE_64LE) -#define put_short(s, w) { \ - uint16_t data = (uint16_t)(w); \ - zmemcpy(&s->pending_buf[s->pending], &data, sizeof(data)); \ - s->pending += 2; \ - } -#else #define put_short(s, w) { \ put_byte(s, (uch)((w) & 0xff)); \ put_byte(s, (uch)((ush)(w) >> 8)); \ } -#endif /* DEFLATE_CHUNK_WRITE_64LE */ + /* =========================================================================== * Reverse the first len bits of a code, using straightforward code (a faster * method would use a table) * IN assertion: 1 <= len <= 15 */ local unsigned bi_reverse(unsigned code, int len) { - unsigned res = 0; + register unsigned res = 0; do { res |= code & 1; code >>= 1, res <<= 1; @@ -171,13 +164,6 @@ local unsigned bi_reverse(unsigned code, int len) { * Flush the bit buffer, keeping at most 7 bits in it. */ local void bi_flush(deflate_state *s) { -#if defined(DEFLATE_CHUNK_WRITE_64LE) - while (s->bi_valid >= 16) { - put_short(s, s->bi_buf); - s->bi_buf >>= 16; - s->bi_valid -= 16; - } -#endif /* DEFLATE_CHUNK_WRITE_64LE */ if (s->bi_valid == 16) { put_short(s, s->bi_buf); s->bi_buf = 0; @@ -187,31 +173,21 @@ local void bi_flush(deflate_state *s) { s->bi_buf >>= 8; s->bi_valid -= 8; } - - Assert(s->bi_valid >= 0 && s->bi_valid <= 7, "bad bi_flush"); } /* =========================================================================== * Flush the bit buffer and align the output on a byte boundary */ local void bi_windup(deflate_state *s) { -#if defined(DEFLATE_CHUNK_WRITE_64LE) - while (s->bi_valid >= 16) { - put_short(s, s->bi_buf); - s->bi_buf >>= 16; - s->bi_valid -= 16; - } -#endif /* DEFLATE_CHUNK_WRITE_64LE */ if (s->bi_valid > 8) { put_short(s, s->bi_buf); } else if (s->bi_valid > 0) { put_byte(s, (Byte)s->bi_buf); } - s->bi_used = ((s->bi_valid - 1) & 7) + 1; s->bi_buf = 0; s->bi_valid = 0; #ifdef ZLIB_DEBUG - s->bits_sent = (s->bits_sent + 7) & ~(ulg)7; + s->bits_sent = (s->bits_sent + 7) & ~7; #endif } @@ -272,28 +248,7 @@ local void gen_trees_header(void); * Send a value on a given number of bits. * IN assertion: length <= 16 and value fits in length bits. */ -#if defined(DEFLATE_CHUNK_WRITE_64LE) -local void send_bits(deflate_state *s, uint64_t value, int length) -{ - Tracevv((stderr," l %2d v %4llx ", length, (unsigned long long)value)); - Assert(s->bi_valid >= 0 && s->bi_valid <= 63, "invalid bi_valid"); - Assert(length > 0 && length <= 15, "invalid length"); #ifdef ZLIB_DEBUG - s->bits_sent += (ulg)length; -#endif - - s->bi_buf |= (value << s->bi_valid); - s->bi_valid += length; - - if (s->bi_valid >= Buf_size) { - zmemcpy(&s->pending_buf[s->pending], &s->bi_buf, sizeof(s->bi_buf)); - s->pending += 8; - s->bi_valid -= Buf_size; - s->bi_buf = value >> (length - s->bi_valid); - } - Assert(s->bi_valid >= 0 && s->bi_valid <= 63, "invalid bi_valid"); -} -#elif defined(ZLIB_DEBUG) local void send_bits(deflate_state *s, int value, int length) { Tracevv((stderr," l %2d v %4x ", length, value)); Assert(length > 0 && length <= 15, "invalid length"); @@ -313,7 +268,8 @@ local void send_bits(deflate_state *s, int value, int length) { s->bi_valid += length; } } -#else /* !ZLIB_DEBUG && !DEFLATE_CHUNK_WRITE_64LE */ +#else /* !ZLIB_DEBUG */ + #define send_bits(s, value, length) \ { int len = length;\ if (s->bi_valid > (int)Buf_size - len) {\ @@ -327,7 +283,7 @@ local void send_bits(deflate_state *s, int value, int length) { s->bi_valid += len;\ }\ } -#endif /* DEFLATE_CHUNK_WRITE_64LE */ +#endif /* ZLIB_DEBUG */ /* the arguments must not have side effects */ @@ -510,7 +466,6 @@ void ZLIB_INTERNAL _tr_init(deflate_state *s) { s->bi_buf = 0; s->bi_valid = 0; - s->bi_used = 0; #ifdef ZLIB_DEBUG s->compressed_len = 0L; s->bits_sent = 0L; @@ -769,7 +724,7 @@ local void scan_tree(deflate_state *s, ct_data *tree, int max_code) { if (++count < max_count && curlen == nextlen) { continue; } else if (count < min_count) { - s->bl_tree[curlen].Freq += (ush)count; + s->bl_tree[curlen].Freq += count; } else if (curlen != 0) { if (curlen != prevlen) s->bl_tree[curlen].Freq++; s->bl_tree[REP_3_6].Freq++; @@ -862,7 +817,7 @@ local int build_bl_tree(deflate_state *s) { } /* Update opt_len to include the bit length tree and counts */ s->opt_len += 3*((ulg)max_blindex + 1) + 5 + 5 + 4; - Tracev((stderr, "\ndyn trees: dyn %lu, stat %lu", + Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld", s->opt_len, s->static_len)); return max_blindex; @@ -888,13 +843,13 @@ local void send_all_trees(deflate_state *s, int lcodes, int dcodes, Tracev((stderr, "\nbl code %2d ", bl_order[rank])); send_bits(s, s->bl_tree[bl_order[rank]].Len, 3); } - Tracev((stderr, "\nbl tree: sent %lu", s->bits_sent)); + Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent)); send_tree(s, (ct_data *)s->dyn_ltree, lcodes - 1); /* literal tree */ - Tracev((stderr, "\nlit tree: sent %lu", s->bits_sent)); + Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent)); send_tree(s, (ct_data *)s->dyn_dtree, dcodes - 1); /* distance tree */ - Tracev((stderr, "\ndist tree: sent %lu", s->bits_sent)); + Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent)); } /* =========================================================================== @@ -977,14 +932,13 @@ local void compress_block(deflate_state *s, const ct_data *ltree, extra = extra_dbits[code]; if (extra != 0) { dist -= (unsigned)base_dist[code]; - send_bits(s, (int)dist, extra); /* send the extra bits */ + send_bits(s, dist, extra); /* send the extra distance bits */ } } /* literal or match pair ? */ /* Check for no overlay of pending_buf on needed symbols */ #ifdef LIT_MEM - Assert(s->pending < (s->lit_bufsize << 1) + (sx << 1), - "pendingBuf overflow"); + Assert(s->pending < 2 * (s->lit_bufsize + sx), "pendingBuf overflow"); #else Assert(s->pending < s->lit_bufsize + sx, "pendingBuf overflow"); #endif @@ -1052,11 +1006,11 @@ void ZLIB_INTERNAL _tr_flush_block(deflate_state *s, charf *buf, /* Construct the literal and distance trees */ build_tree(s, (tree_desc *)(&(s->l_desc))); - Tracev((stderr, "\nlit data: dyn %lu, stat %lu", s->opt_len, + Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len, s->static_len)); build_tree(s, (tree_desc *)(&(s->d_desc))); - Tracev((stderr, "\ndist data: dyn %lu, stat %lu", s->opt_len, + Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len, s->static_len)); /* At this point, opt_len and static_len are the total bit lengths of * the compressed block data, excluding the tree representations. @@ -1129,7 +1083,7 @@ void ZLIB_INTERNAL _tr_flush_block(deflate_state *s, charf *buf, #endif } Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len >> 3, - s->compressed_len - 7*(ulg)last)); + s->compressed_len - 7*last)); } /* =========================================================================== diff --git a/packages/runtime/vendor/zlib/uncompr.c b/packages/runtime/vendor/zlib/uncompr.c index 2195e7855..5e256663b 100644 --- a/packages/runtime/vendor/zlib/uncompr.c +++ b/packages/runtime/vendor/zlib/uncompr.c @@ -1,5 +1,5 @@ /* uncompr.c -- decompress a memory buffer - * Copyright (C) 1995-2026 Jean-loup Gailly, Mark Adler + * Copyright (C) 1995-2003, 2010, 2014, 2016 Jean-loup Gailly, Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -23,24 +23,24 @@ memory, Z_BUF_ERROR if there was not enough room in the output buffer, or Z_DATA_ERROR if the input data was corrupted, including if the input data is an incomplete zlib stream. - - The _z versions of the functions take size_t length arguments. */ -int ZEXPORT uncompress2_z(Bytef *dest, z_size_t *destLen, const Bytef *source, - z_size_t *sourceLen) { +int ZEXPORT uncompress2(Bytef *dest, uLongf *destLen, const Bytef *source, + uLong *sourceLen) { z_stream stream; int err; const uInt max = (uInt)-1; - z_size_t len, left; - - if (sourceLen == NULL || (*sourceLen > 0 && source == NULL) || - destLen == NULL || (*destLen > 0 && dest == NULL)) - return Z_STREAM_ERROR; + uLong len, left; + Byte buf[1]; /* for detection of incomplete stream when *destLen == 0 */ len = *sourceLen; - left = *destLen; - if (left == 0 && dest == Z_NULL) - dest = (Bytef *)&stream.reserved; /* next_out cannot be NULL */ + if (*destLen) { + left = *destLen; + *destLen = 0; + } + else { + left = 1; + dest = buf; + } stream.next_in = (z_const Bytef *)source; stream.avail_in = 0; @@ -56,46 +56,30 @@ int ZEXPORT uncompress2_z(Bytef *dest, z_size_t *destLen, const Bytef *source, do { if (stream.avail_out == 0) { - stream.avail_out = left > (z_size_t)max ? max : (uInt)left; + stream.avail_out = left > (uLong)max ? max : (uInt)left; left -= stream.avail_out; } if (stream.avail_in == 0) { - stream.avail_in = len > (z_size_t)max ? max : (uInt)len; + stream.avail_in = len > (uLong)max ? max : (uInt)len; len -= stream.avail_in; } err = inflate(&stream, Z_NO_FLUSH); } while (err == Z_OK); - /* Set len and left to the unused input data and unused output space. Set - *sourceLen to the amount of input consumed. Set *destLen to the amount - of data produced. */ - len += stream.avail_in; - left += stream.avail_out; - *sourceLen -= len; - *destLen -= left; + *sourceLen -= len + stream.avail_in; + if (dest != buf) + *destLen = stream.total_out; + else if (stream.total_out && err == Z_BUF_ERROR) + left = 1; inflateEnd(&stream); return err == Z_STREAM_END ? Z_OK : err == Z_NEED_DICT ? Z_DATA_ERROR : - err == Z_BUF_ERROR && len == 0 ? Z_DATA_ERROR : + err == Z_BUF_ERROR && left + stream.avail_out ? Z_DATA_ERROR : err; } -int ZEXPORT uncompress2(Bytef *dest, uLongf *destLen, const Bytef *source, - uLong *sourceLen) { - int ret; - z_size_t got = *destLen, used = *sourceLen; - ret = uncompress2_z(dest, &got, source, &used); - *sourceLen = (uLong)used; - *destLen = (uLong)got; - return ret; -} -int ZEXPORT uncompress_z(Bytef *dest, z_size_t *destLen, const Bytef *source, - z_size_t sourceLen) { - z_size_t used = sourceLen; - return uncompress2_z(dest, destLen, source, &used); -} + int ZEXPORT uncompress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen) { - uLong used = sourceLen; - return uncompress2(dest, destLen, source, &used); + return uncompress2(dest, destLen, source, &sourceLen); } diff --git a/packages/runtime/vendor/zlib/zconf.h b/packages/runtime/vendor/zlib/zconf.h index 4d64a6530..62adc8d84 100644 --- a/packages/runtime/vendor/zlib/zconf.h +++ b/packages/runtime/vendor/zlib/zconf.h @@ -1,5 +1,5 @@ /* zconf.h -- configuration of the zlib compression library - * Copyright (C) 1995-2026 Jean-loup Gailly, Mark Adler + * Copyright (C) 1995-2024 Jean-loup Gailly, Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -8,18 +8,6 @@ #ifndef ZCONF_H #define ZCONF_H -/* - * This library is also built as a part of AOSP, which does not need to include - * chromeconf.h. This config does not want chromeconf.h, so it can set this - * macro to opt out. While this works today, there's no guarantee that building - * zlib outside of Chromium keeps working in the future. - */ -#if !defined(CHROMIUM_ZLIB_NO_CHROMECONF) -/* This include does prefixing as below, but with an updated set of names. Also - * sets up export macros in component builds. */ -//#include "chromeconf.h" -#endif - /* * If you *really* need a unique prefix for all types and library functions, * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. @@ -45,10 +33,7 @@ # ifndef Z_SOLO # define compress z_compress # define compress2 z_compress2 -# define compress_z z_compress_z -# define compress2_z z_compress2_z # define compressBound z_compressBound -# define compressBound_z z_compressBound_z # endif # define crc32 z_crc32 # define crc32_combine z_crc32_combine @@ -59,7 +44,6 @@ # define crc32_z z_crc32_z # define deflate z_deflate # define deflateBound z_deflateBound -# define deflateBound_z z_deflateBound_z # define deflateCopy z_deflateCopy # define deflateEnd z_deflateEnd # define deflateGetDictionary z_deflateGetDictionary @@ -75,7 +59,6 @@ # define deflateSetDictionary z_deflateSetDictionary # define deflateSetHeader z_deflateSetHeader # define deflateTune z_deflateTune -# define deflateUsed z_deflateUsed # define deflate_copyright z_deflate_copyright # define get_crc_table z_get_crc_table # ifndef Z_SOLO @@ -145,12 +128,9 @@ # define inflate_copyright z_inflate_copyright # define inflate_fast z_inflate_fast # define inflate_table z_inflate_table -# define inflate_fixed z_inflate_fixed # ifndef Z_SOLO # define uncompress z_uncompress # define uncompress2 z_uncompress2 -# define uncompress_z z_uncompress_z -# define uncompress2_z z_uncompress2_z # endif # define zError z_zError # ifndef Z_SOLO @@ -254,12 +234,10 @@ # endif #endif -#ifndef z_const -# ifdef ZLIB_CONST -# define z_const const -# else -# define z_const -# endif +#if defined(ZLIB_CONST) && !defined(z_const) +# define z_const const +#else +# define z_const #endif #ifdef Z_SOLO @@ -410,9 +388,6 @@ #ifndef FAR # define FAR #endif -#ifndef far -# define far -#endif #if !defined(__MACTYPES__) typedef unsigned char Byte; /* 8 bits */ @@ -458,11 +433,11 @@ typedef uLong FAR uLongf; typedef unsigned long z_crc_t; #endif -#if !defined(_WIN32) +#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ # define Z_HAVE_UNISTD_H #endif -#if defined(HAVE_STDARG_H) && HAVE_STDARG_H-0 +#ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */ # define Z_HAVE_STDARG_H #endif @@ -495,8 +470,12 @@ typedef uLong FAR uLongf; #endif #ifndef Z_HAVE_UNISTD_H -# if defined(__WATCOMC__) || defined(__GO32__) || \ - (defined(_LARGEFILE64_SOURCE) && !defined(_WIN32)) +# ifdef __WATCOMC__ +# define Z_HAVE_UNISTD_H +# endif +#endif +#ifndef Z_HAVE_UNISTD_H +# if defined(_LARGEFILE64_SOURCE) && !defined(_WIN32) # define Z_HAVE_UNISTD_H # endif #endif @@ -531,19 +510,17 @@ typedef uLong FAR uLongf; #endif #ifndef z_off_t -# define z_off_t long long +# define z_off_t long #endif #if !defined(_WIN32) && defined(Z_LARGE64) # define z_off64_t off64_t -#elif defined(__MINGW32__) -# define z_off64_t long long -#elif defined(_WIN32) && !defined(__GNUC__) -# define z_off64_t __int64 -#elif defined(__GO32__) -# define z_off64_t offset_t #else -# define z_off64_t z_off_t +# if defined(_WIN32) && !defined(__GNUC__) +# define z_off64_t __int64 +# else +# define z_off64_t z_off_t +# endif #endif /* MVS linker does not support external names larger than 8 bytes */ diff --git a/packages/runtime/vendor/zlib/zlib.h b/packages/runtime/vendor/zlib/zlib.h index 13909f2f8..8d4b932ea 100644 --- a/packages/runtime/vendor/zlib/zlib.h +++ b/packages/runtime/vendor/zlib/zlib.h @@ -1,7 +1,7 @@ /* zlib.h -- interface of the 'zlib' general purpose compression library - version 1.3.2.1, February xxth, 2026 + version 1.3.1, January 22nd, 2024 - Copyright (C) 1995-2026 Jean-loup Gailly and Mark Adler + Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -24,29 +24,25 @@ The data format used by the zlib library is described by RFCs (Request for - Comments) 1950 to 1952 at https://datatracker.ietf.org/doc/html/rfc1950 + Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950 (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format). */ #ifndef ZLIB_H #define ZLIB_H -#ifdef ZLIB_BUILD -# include -#else -# include "zconf.h" -#endif +#include "zconf.h" #ifdef __cplusplus extern "C" { #endif -#define ZLIB_VERSION "1.3.2.1-motley" -#define ZLIB_VERNUM 0x1321 +#define ZLIB_VERSION "1.3.1" +#define ZLIB_VERNUM 0x1310 #define ZLIB_VER_MAJOR 1 #define ZLIB_VER_MINOR 3 -#define ZLIB_VER_REVISION 2 -#define ZLIB_VER_SUBREVISION 1 +#define ZLIB_VER_REVISION 1 +#define ZLIB_VER_SUBREVISION 0 /* The 'zlib' compression library provides in-memory compression and @@ -363,6 +359,7 @@ ZEXTERN int ZEXPORT deflate(z_streamp strm, int flush); continue compressing. */ + ZEXTERN int ZEXPORT deflateEnd(z_streamp strm); /* All dynamically allocated data structures for this stream are freed. @@ -444,7 +441,7 @@ ZEXTERN int ZEXPORT inflate(z_streamp strm, int flush); The Z_BLOCK option assists in appending to or combining deflate streams. To assist in this, on return inflate() always sets strm->data_type to the - number of unused bits in the input taken from strm->next_in, plus 64 if + number of unused bits in the last byte taken from strm->next_in, plus 64 if inflate() is currently decoding the last block in the deflate stream, plus 128 if inflate() returned immediately after decoding an end-of-block code or decoding the complete header up to just before the first byte of the deflate @@ -590,21 +587,18 @@ ZEXTERN int ZEXPORT deflateInit2(z_streamp strm, The strategy parameter is used to tune the compression algorithm. Use the value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a - filter (or predictor), Z_RLE to limit match distances to one (run-length - encoding), or Z_HUFFMAN_ONLY to force Huffman encoding only (no string - matching). Filtered data consists mostly of small values with a somewhat - random distribution, as produced by the PNG filters. In this case, the - compression algorithm is tuned to compress them better. The effect of - Z_FILTERED is to force more Huffman coding and less string matching than the - default; it is intermediate between Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY. - Z_RLE is almost as fast as Z_HUFFMAN_ONLY, but should give better - compression for PNG image data than Huffman only. The degree of string - matching from most to none is: Z_DEFAULT_STRATEGY, Z_FILTERED, Z_RLE, then - Z_HUFFMAN_ONLY. The strategy parameter affects the compression ratio but - never the correctness of the compressed output, even if it is not set - optimally for the given data. Z_FIXED uses the default string matching, but - prevents the use of dynamic Huffman codes, allowing for a simpler decoder - for special applications. + filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no + string match), or Z_RLE to limit match distances to one (run-length + encoding). Filtered data consists mostly of small values with a somewhat + random distribution. In this case, the compression algorithm is tuned to + compress them better. The effect of Z_FILTERED is to force more Huffman + coding and less string matching; it is somewhat intermediate between + Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as + fast as Z_HUFFMAN_ONLY, but give better compression for PNG image data. The + strategy parameter only affects the compression ratio but not the + correctness of the compressed output even if it is not set appropriately. + Z_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler + decoder for special applications. deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_STREAM_ERROR if any parameter is invalid (such as an invalid @@ -764,8 +758,8 @@ ZEXTERN int ZEXPORT deflateTune(z_streamp strm, returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream. */ -ZEXTERN uLong ZEXPORT deflateBound(z_streamp strm, uLong sourceLen); -ZEXTERN z_size_t ZEXPORT deflateBound_z(z_streamp strm, z_size_t sourceLen); +ZEXTERN uLong ZEXPORT deflateBound(z_streamp strm, + uLong sourceLen); /* deflateBound() returns an upper bound on the compressed size after deflation of sourceLen bytes. It must be called after deflateInit() or @@ -777,9 +771,6 @@ ZEXTERN z_size_t ZEXPORT deflateBound_z(z_streamp strm, z_size_t sourceLen); to return Z_STREAM_END. Note that it is possible for the compressed size to be larger than the value returned by deflateBound() if flush options other than Z_FINISH or Z_NO_FLUSH are used. - - delfateBound_z() is the same, but takes and returns a size_t length. Note - that a long is 32 bits on Windows. */ ZEXTERN int ZEXPORT deflatePending(z_streamp strm, @@ -794,21 +785,6 @@ ZEXTERN int ZEXPORT deflatePending(z_streamp strm, or bits are Z_NULL, then those values are not set. deflatePending returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. If an int is 16 bits and memLevel is 9, then - it is possible for the number of pending bytes to not fit in an unsigned. In - that case Z_BUF_ERROR is returned and *pending is set to the maximum value - of an unsigned. - */ - -ZEXTERN int ZEXPORT deflateUsed(z_streamp strm, - int *bits); -/* - deflateUsed() returns in *bits the most recent number of deflate bits used - in the last byte when flushing to a byte boundary. The result is in 1..8, or - 0 if there has not yet been a flush. This helps determine the location of - the last bit of a deflate stream. - - deflateUsed returns Z_OK if success, or Z_STREAM_ERROR if the source stream state was inconsistent. */ @@ -1011,15 +987,13 @@ ZEXTERN int ZEXPORT inflatePrime(z_streamp strm, int bits, int value); /* - This function inserts bits in the inflate input stream. The intent is to - use inflatePrime() to start inflating at a bit position in the middle of a - byte. The provided bits will be used before any bytes are used from - next_in. This function should be used with raw inflate, before the first - inflate() call, after inflateInit2() or inflateReset(). It can also be used - after an inflate() return indicates the end of a deflate block or header - when using Z_BLOCK. bits must be less than or equal to 16, and that many of - the least significant bits of value will be inserted in the input. The - other bits in value can be non-zero, and will be ignored. + This function inserts bits in the inflate input stream. The intent is + that this function is used to start inflating at a bit position in the + middle of a byte. The provided bits will be used before any bytes are used + from next_in. This function should only be used with raw inflate, and + should be used before the first inflate() call after inflateInit2() or + inflateReset(). bits must be less than or equal to 16, and that many of the + least significant bits of value will be inserted in the input. If bits is negative, then the input stream bit buffer is emptied. Then inflatePrime() can be called again to put bits in the buffer. This is used @@ -1027,15 +1001,7 @@ ZEXTERN int ZEXPORT inflatePrime(z_streamp strm, to feeding inflate codes. inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent, or if bits is out of range. If inflate was - in the middle of processing a header, trailer, or stored block lengths, then - it is possible for there to be only eight bits available in the bit buffer. - In that case, bits > 8 is considered out of range. However, when used as - outlined above, there will always be 16 bits available in the buffer for - insertion. As noted in its documentation above, inflate records the number - of bits in the bit buffer on return in data_type. 32 minus that is the - number of bits available for insertion. inflatePrime does not update - data_type with the new number of bits in buffer. + stream state was inconsistent. */ ZEXTERN long ZEXPORT inflateMark(z_streamp strm); @@ -1081,22 +1047,20 @@ ZEXTERN int ZEXPORT inflateGetHeader(z_streamp strm, The text, time, xflags, and os fields are filled in with the gzip header contents. hcrc is set to true if there is a header CRC. (The header CRC - was valid if done is set to one.) The extra, name, and comment pointers - much each be either Z_NULL or point to space to store that information from - the header. If extra is not Z_NULL, then extra_max contains the maximum - number of bytes that can be written to extra. Once done is true, extra_len - contains the actual extra field length, and extra contains the extra field, - or that field truncated if extra_max is less than extra_len. If name is not - Z_NULL, then up to name_max characters, including the terminating zero, are - written there. If comment is not Z_NULL, then up to comm_max characters, - including the terminating zero, are written there. The application can tell - that the name or comment did not fit in the provided space by the absence of - a terminating zero. If any of extra, name, or comment are not present in - the header, then that field's pointer is set to Z_NULL. This allows the use - of deflateSetHeader() with the returned structure to duplicate the header. - Note that if those fields initially pointed to allocated memory, then the - application will need to save them elsewhere so that they can be eventually - freed. + was valid if done is set to one.) If extra is not Z_NULL, then extra_max + contains the maximum number of bytes to write to extra. Once done is true, + extra_len contains the actual extra field length, and extra contains the + extra field, or that field truncated if extra_max is less than extra_len. + If name is not Z_NULL, then up to name_max characters are written there, + terminated with a zero unless the length is greater than name_max. If + comment is not Z_NULL, then up to comm_max characters are written there, + terminated with a zero unless the length is greater than comm_max. When any + of extra, name, or comment are not Z_NULL and the respective field is not + present in the header, then that field is set to Z_NULL to signal its + absence. This allows the use of deflateSetHeader() with the returned + structure to duplicate the header. However if those fields are set to + allocated memory, then the application will need to save those pointers + elsewhere so that they can be eventually freed. If inflateGetHeader is not used, then the header information is simply discarded. The header is always checked for validity, including the header @@ -1244,14 +1208,13 @@ ZEXTERN uLong ZEXPORT zlibCompileFlags(void); 21: FASTEST -- deflate algorithm with only one, lowest compression level 22,23: 0 (reserved) - The sprintf variant used by gzprintf (all zeros is best): + The sprintf variant used by gzprintf (zero is best): 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format - 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() is not secure! + 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure! 26: 0 = returns value, 1 = void -- 1 means inferred string length returned - 27: 0 = gzprintf() present, 1 = not -- 1 means gzprintf() returns an error Remainder: - 28-31: 0 (reserved) + 27-31: 0 (reserved) */ #ifndef Z_SOLO @@ -1263,14 +1226,11 @@ ZEXTERN uLong ZEXPORT zlibCompileFlags(void); stream-oriented functions. To simplify the interface, some default options are assumed (compression level and memory usage, standard memory allocation functions). The source code of these utility functions can be modified if - you need special options. The _z versions of the functions use the size_t - type for lengths. Note that a long is 32 bits on Windows. + you need special options. */ -ZEXTERN int ZEXPORT compress(Bytef *dest, uLongf *destLen, +ZEXTERN int ZEXPORT compress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen); -ZEXTERN int ZEXPORT compress_z(Bytef *dest, z_size_t *destLen, - const Bytef *source, z_size_t sourceLen); /* Compresses the source buffer into the destination buffer. sourceLen is the byte length of the source buffer. Upon entry, destLen is the total size @@ -1284,12 +1244,9 @@ ZEXTERN int ZEXPORT compress_z(Bytef *dest, z_size_t *destLen, buffer. */ -ZEXTERN int ZEXPORT compress2(Bytef *dest, uLongf *destLen, +ZEXTERN int ZEXPORT compress2(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen, int level); -ZEXTERN int ZEXPORT compress2_z(Bytef *dest, z_size_t *destLen, - const Bytef *source, z_size_t sourceLen, - int level); /* Compresses the source buffer into the destination buffer. The level parameter has the same meaning as in deflateInit. sourceLen is the byte @@ -1304,24 +1261,21 @@ ZEXTERN int ZEXPORT compress2_z(Bytef *dest, z_size_t *destLen, */ ZEXTERN uLong ZEXPORT compressBound(uLong sourceLen); -ZEXTERN z_size_t ZEXPORT compressBound_z(z_size_t sourceLen); /* compressBound() returns an upper bound on the compressed size after compress() or compress2() on sourceLen bytes. It would be used before a compress() or compress2() call to allocate the destination buffer. */ -ZEXTERN int ZEXPORT uncompress(Bytef *dest, uLongf *destLen, +ZEXTERN int ZEXPORT uncompress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen); -ZEXTERN int ZEXPORT uncompress_z(Bytef *dest, z_size_t *destLen, - const Bytef *source, z_size_t sourceLen); /* Decompresses the source buffer into the destination buffer. sourceLen is - the byte length of the source buffer. On entry, *destLen is the total size + the byte length of the source buffer. Upon entry, destLen is the total size of the destination buffer, which must be large enough to hold the entire uncompressed data. (The size of the uncompressed data must have been saved previously by the compressor and transmitted to the decompressor by some - mechanism outside the scope of this compression library.) On exit, *destLen + mechanism outside the scope of this compression library.) Upon exit, destLen is the actual size of the uncompressed data. uncompress returns Z_OK if success, Z_MEM_ERROR if there was not @@ -1331,10 +1285,8 @@ ZEXTERN int ZEXPORT uncompress_z(Bytef *dest, z_size_t *destLen, buffer with the uncompressed data up to that point. */ -ZEXTERN int ZEXPORT uncompress2(Bytef *dest, uLongf *destLen, +ZEXTERN int ZEXPORT uncompress2(Bytef *dest, uLongf *destLen, const Bytef *source, uLong *sourceLen); -ZEXTERN int ZEXPORT uncompress2_z(Bytef *dest, z_size_t *destLen, - const Bytef *source, z_size_t *sourceLen); /* Same as uncompress, except that sourceLen is a pointer, where the length of the source is *sourceLen. On return, *sourceLen is the number of @@ -1362,17 +1314,13 @@ ZEXTERN gzFile ZEXPORT gzopen(const char *path, const char *mode); 'R' for run-length encoding as in "wb1R", or 'F' for fixed code compression as in "wb9F". (See the description of deflateInit2 for more information about the strategy parameter.) 'T' will request transparent writing or - appending with no compression and not using the gzip format. 'T' cannot be - used to force transparent reading. Transparent reading is automatically - performed if there is no gzip header at the start. Transparent reading can - be disabled with the 'G' option, which will instead return an error if there - is no gzip header. 'N' will open the file in non-blocking mode. + appending with no compression and not using the gzip format. - 'a' can be used instead of 'w' to request that the gzip stream that will - be written be appended to the file. '+' will result in an error, since + "a" can be used instead of "w" to request that the gzip stream that will + be written be appended to the file. "+" will result in an error, since reading and writing to the same gzip file is not supported. The addition of - 'x' when writing will create the file exclusively, which fails if the file - already exists. On systems that support it, the addition of 'e' when + "x" when writing will create the file exclusively, which fails if the file + already exists. On systems that support it, the addition of "e" when reading or writing will set the flag to close the file on an execve() call. These functions, as well as gzip, will read and decode a sequence of gzip @@ -1391,22 +1339,14 @@ ZEXTERN gzFile ZEXPORT gzopen(const char *path, const char *mode); insufficient memory to allocate the gzFile state, or if an invalid mode was specified (an 'r', 'w', or 'a' was not provided, or '+' was provided). errno can be checked to determine if the reason gzopen failed was that the - file could not be opened. Note that if 'N' is in mode for non-blocking, the - open() itself can fail in order to not block. In that case gzopen() will - return NULL and errno will be EAGAIN or ENONBLOCK. The call to gzopen() can - then be re-tried. If the application would like to block on opening the - file, then it can use open() without O_NONBLOCK, and then gzdopen() with the - resulting file descriptor and 'N' in the mode, which will set it to non- - blocking. + file could not be opened. */ ZEXTERN gzFile ZEXPORT gzdopen(int fd, const char *mode); /* Associate a gzFile with the file descriptor fd. File descriptors are obtained from calls like open, dup, creat, pipe or fileno (if the file has - been previously opened with fopen). The mode parameter is as in gzopen. An - 'e' in mode will set fd's flag to close the file on an execve() call. An 'N' - in mode will set fd's non-blocking flag. + been previously opened with fopen). The mode parameter is as in gzopen. The next call of gzclose on the returned gzFile will also close the file descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor @@ -1476,16 +1416,10 @@ ZEXTERN int ZEXPORT gzread(gzFile file, voidp buf, unsigned len); stream. Alternatively, gzerror can be used before gzclose to detect this case. - gzread can be used to read a gzip file on a non-blocking device. If the - input stalls and there is no uncompressed data to return, then gzread() will - return -1, and errno will be EAGAIN or EWOULDBLOCK. gzread() can then be - called again. - gzread returns the number of uncompressed bytes actually read, less than len for end of file, or -1 for error. If len is too large to fit in an int, then nothing is read, -1 is returned, and the error state is set to - Z_STREAM_ERROR. If some data was read before an error, then that data is - returned until exhausted, after which the next call will signal the error. + Z_STREAM_ERROR. */ ZEXTERN z_size_t ZEXPORT gzfread(voidp buf, z_size_t size, z_size_t nitems, @@ -1509,20 +1443,15 @@ ZEXTERN z_size_t ZEXPORT gzfread(voidp buf, z_size_t size, z_size_t nitems, multiple of size, then the final partial item is nevertheless read into buf and the end-of-file flag is set. The length of the partial item read is not provided, but could be inferred from the result of gztell(). This behavior - is the same as that of fread() implementations in common libraries. This - could result in data loss if used with size != 1 when reading a concurrently - written file or a non-blocking file. In that case, use size == 1 or gzread() - instead. + is the same as the behavior of fread() implementations in common libraries, + but it prevents the direct use of gzfread() to read a concurrently written + file, resetting and retrying on end-of-file, when size is not 1. */ ZEXTERN int ZEXPORT gzwrite(gzFile file, voidpc buf, unsigned len); /* Compress and write the len uncompressed bytes at buf to file. gzwrite - returns the number of uncompressed bytes written, or 0 in case of error or - if len is 0. If the write destination is non-blocking, then gzwrite() may - return a number of bytes written that is not 0 and less than len. - - If len does not fit in an int, then 0 is returned and nothing is written. + returns the number of uncompressed bytes written or 0 in case of error. */ ZEXTERN z_size_t ZEXPORT gzfwrite(voidpc buf, z_size_t size, @@ -1537,18 +1466,9 @@ ZEXTERN z_size_t ZEXPORT gzfwrite(voidpc buf, z_size_t size, if there was an error. If the multiplication of size and nitems overflows, i.e. the product does not fit in a z_size_t, then nothing is written, zero is returned, and the error state is set to Z_STREAM_ERROR. - - If writing a concurrently read file or a non-blocking file with size != 1, - a partial item could be written, with no way of knowing how much of it was - not written, resulting in data loss. In that case, use size == 1 or - gzwrite() instead. */ -#if defined(STDC) || defined(Z_HAVE_STDARG_H) ZEXTERN int ZEXPORTVA gzprintf(gzFile file, const char *format, ...); -#else -ZEXTERN int ZEXPORTVA gzprintf(); -#endif /* Convert, format, compress, and write the arguments (...) to file under control of the string format, as in fprintf. gzprintf returns the number of @@ -1556,19 +1476,11 @@ ZEXTERN int ZEXPORTVA gzprintf(); of error. The number of uncompressed bytes written is limited to 8191, or one less than the buffer size given to gzbuffer(). The caller should assure that this limit is not exceeded. If it is exceeded, then gzprintf() will - return an error (0) with nothing written. - - In that last case, there may also be a buffer overflow with unpredictable - consequences, which is possible only if zlib was compiled with the insecure - functions sprintf() or vsprintf(), because the secure snprintf() and - vsnprintf() functions were not available. That would only be the case for - a non-ANSI C compiler. zlib may have been built without gzprintf() because - secure functions were not available and having gzprintf() be insecure was - not an option, in which case, gzprintf() returns Z_STREAM_ERROR. All of - these possibilities can be determined using zlibCompileFlags(). - - If a Z_BUF_ERROR is returned, then nothing was written due to a stall on - the non-blocking write destination. + return an error (0) with nothing written. In this case, there may also be a + buffer overflow with unpredictable consequences, which is possible only if + zlib was compiled with the insecure functions sprintf() or vsprintf(), + because the secure snprintf() or vsnprintf() functions were not available. + This can be determined using zlibCompileFlags(). */ ZEXTERN int ZEXPORT gzputs(gzFile file, const char *s); @@ -1577,11 +1489,6 @@ ZEXTERN int ZEXPORT gzputs(gzFile file, const char *s); the terminating null character. gzputs returns the number of characters written, or -1 in case of error. - The number of characters written may be less than the length of the string - if the write destination is non-blocking. - - If the length of the string does not fit in an int, then -1 is returned - and nothing is written. */ ZEXTERN char * ZEXPORT gzgets(gzFile file, char *buf, int len); @@ -1594,13 +1501,8 @@ ZEXTERN char * ZEXPORT gzgets(gzFile file, char *buf, int len); left untouched. gzgets returns buf which is a null-terminated string, or it returns NULL - for end-of-file or in case of error. If some data was read before an error, - then that data is returned until exhausted, after which the next call will - return NULL to signal the error. - - gzgets can be used on a file being concurrently written, and on a non- - blocking device, both as for gzread(). However lines may be broken in the - middle, leaving it up to the application to reassemble them as needed. + for end-of-file or in case of error. If there was an error, the contents at + buf are indeterminate. */ ZEXTERN int ZEXPORT gzputc(gzFile file, int c); @@ -1611,19 +1513,11 @@ ZEXTERN int ZEXPORT gzputc(gzFile file, int c); ZEXTERN int ZEXPORT gzgetc(gzFile file); /* - Read and decompress one byte from file. gzgetc returns this byte or -1 in - case of end of file or error. If some data was read before an error, then - that data is returned until exhausted, after which the next call will return - -1 to signal the error. - - This is implemented as a macro for speed. As such, it does not do all of - the checking the other functions do. I.e. it does not check to see if file - is NULL, nor whether the structure file points to has been clobbered or not. - - gzgetc can be used to read a gzip file on a non-blocking device. If the - input stalls and there is no uncompressed data to return, then gzgetc() will - return -1, and errno will be EAGAIN or EWOULDBLOCK. gzread() can then be - called again. + Read and decompress one byte from file. gzgetc returns this byte or -1 + in case of end of file or error. This is implemented as a macro for speed. + As such, it does not do all of the checking the other functions do. I.e. + it does not check to see if file is NULL, nor whether the structure file + points to has been clobbered or not. */ ZEXTERN int ZEXPORT gzungetc(int c, gzFile file); @@ -1636,11 +1530,6 @@ ZEXTERN int ZEXPORT gzungetc(int c, gzFile file); output buffer size of pushed characters is allowed. (See gzbuffer above.) The pushed character will be discarded if the stream is repositioned with gzseek() or gzrewind(). - - gzungetc(-1, file) will force any pending seek to execute. Then gztell() - will report the position, even if the requested seek reached end of file. - This can be used to determine the number of uncompressed bytes in a gzip - file without having to read it into a buffer. */ ZEXTERN int ZEXPORT gzflush(gzFile file, int flush); @@ -1670,8 +1559,7 @@ ZEXTERN z_off_t ZEXPORT gzseek(gzFile file, If the file is opened for reading, this function is emulated but can be extremely slow. If the file is opened for writing, only forward seeks are supported; gzseek then compresses a sequence of zeroes up to the new - starting position. For reading or writing, any actual seeking is deferred - until the next read or write operation, or close operation when writing. + starting position. gzseek returns the resulting offset location as measured in bytes from the beginning of the uncompressed stream, or -1 in case of error, in @@ -1679,7 +1567,7 @@ ZEXTERN z_off_t ZEXPORT gzseek(gzFile file, would be before the current position. */ -ZEXTERN int ZEXPORT gzrewind(gzFile file); +ZEXTERN int ZEXPORT gzrewind(gzFile file); /* Rewind file. This function is supported only for reading. @@ -1687,7 +1575,7 @@ ZEXTERN int ZEXPORT gzrewind(gzFile file); */ /* -ZEXTERN z_off_t ZEXPORT gztell(gzFile file); +ZEXTERN z_off_t ZEXPORT gztell(gzFile file); Return the starting position for the next gzread or gzwrite on file. This position represents a number of bytes in the uncompressed data stream, @@ -1732,11 +1620,8 @@ ZEXTERN int ZEXPORT gzdirect(gzFile file); If gzdirect() is used immediately after gzopen() or gzdopen() it will cause buffers to be allocated to allow reading the file to determine if it - is a gzip file. Therefore if gzbuffer() is used, it should be called before - gzdirect(). If the input is being written concurrently or the device is non- - blocking, then gzdirect() may give a different answer once four bytes of - input have been accumulated, which is what is needed to confirm or deny a - gzip header. Before this, gzdirect() will return true (1). + is a gzip file. Therefore if gzbuffer() is used, it should be called before + gzdirect(). When writing, gzdirect() returns true (1) if transparent writing was requested ("wT" for the gzopen() mode), or false (0) otherwise. (Note: @@ -1746,7 +1631,7 @@ ZEXTERN int ZEXPORT gzdirect(gzFile file); gzip file reading and decompression, which may not be desired.) */ -ZEXTERN int ZEXPORT gzclose(gzFile file); +ZEXTERN int ZEXPORT gzclose(gzFile file); /* Flush all pending output for file, if necessary, close file and deallocate the (de)compression state. Note that once file is closed, you @@ -1774,10 +1659,9 @@ ZEXTERN int ZEXPORT gzclose_w(gzFile file); ZEXTERN const char * ZEXPORT gzerror(gzFile file, int *errnum); /* Return the error message for the last error which occurred on file. - If errnum is not NULL, *errnum is set to zlib error number. If an error - occurred in the file system and not in the compression library, *errnum is - set to Z_ERRNO and the application may consult errno to get the exact error - code. + errnum is set to zlib error number. If an error occurred in the file system + and not in the compression library, errnum is set to Z_ERRNO and the + application may consult errno to get the exact error code. The application must not modify the returned string. Future calls to this function may invalidate the previously returned string. If file is @@ -1828,8 +1712,7 @@ ZEXTERN uLong ZEXPORT adler32(uLong adler, const Bytef *buf, uInt len); ZEXTERN uLong ZEXPORT adler32_z(uLong adler, const Bytef *buf, z_size_t len); /* - Same as adler32(), but with a size_t length. Note that a long is 32 bits - on Windows. + Same as adler32(), but with a size_t length. */ /* @@ -1865,8 +1748,7 @@ ZEXTERN uLong ZEXPORT crc32(uLong crc, const Bytef *buf, uInt len); ZEXTERN uLong ZEXPORT crc32_z(uLong crc, const Bytef *buf, z_size_t len); /* - Same as crc32(), but with a size_t length. Note that a long is 32 bits on - Windows. + Same as crc32(), but with a size_t length. */ /* @@ -1876,14 +1758,14 @@ ZEXTERN uLong ZEXPORT crc32_combine(uLong crc1, uLong crc2, z_off_t len2); seq1 and seq2 with lengths len1 and len2, CRC-32 check values were calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32 check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and - len2. len2 must be non-negative, otherwise zero is returned. + len2. len2 must be non-negative. */ /* ZEXTERN uLong ZEXPORT crc32_combine_gen(z_off_t len2); Return the operator corresponding to length len2, to be used with - crc32_combine_op(). len2 must be non-negative, otherwise zero is returned. + crc32_combine_op(). len2 must be non-negative. */ ZEXTERN uLong ZEXPORT crc32_combine_op(uLong crc1, uLong crc2, uLong op); @@ -1962,11 +1844,6 @@ ZEXTERN int ZEXPORT gzgetc_(gzFile file); /* backward compatibility */ # undef z_gzgetc # define z_gzgetc(g) \ ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : (gzgetc)(g)) -#elif defined(Z_CR_PREFIX_SET) -# undef gzgetc -# define gzgetc(g) \ - ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) \ - : (Cr_z_gzgetc)(g)) #else # define gzgetc(g) \ ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : (gzgetc)(g)) @@ -1998,47 +1875,22 @@ ZEXTERN int ZEXPORT gzgetc_(gzFile file); /* backward compatibility */ # define z_crc32_combine z_crc32_combine64 # define z_crc32_combine_gen z_crc32_combine_gen64 # else -# ifdef gzopen -# undef gzopen -# endif # define gzopen gzopen64 -# ifdef gzseek -# undef gzseek -# endif # define gzseek gzseek64 -# ifdef gztell -# undef gztell -# endif # define gztell gztell64 -# ifdef gzoffset -# undef gzoffset -# endif # define gzoffset gzoffset64 -# ifdef adler32_combine -# undef adler32_combine -# endif # define adler32_combine adler32_combine64 -# ifdef crc32_combine -# undef crc32_combine -# endif -# ifdef crc32_combine64 -# undef crc32_combine64 -# endif -# ifdef crc32_combine_gen -# undef crc32_combine_gen -# endif -# ifdef crc32_combine_op -# undef crc32_combine_op -# endif +# define crc32_combine crc32_combine64 +# define crc32_combine_gen crc32_combine_gen64 # endif # ifndef Z_LARGE64 ZEXTERN gzFile ZEXPORT gzopen64(const char *, const char *); ZEXTERN z_off_t ZEXPORT gzseek64(gzFile, z_off_t, int); ZEXTERN z_off_t ZEXPORT gztell64(gzFile); ZEXTERN z_off_t ZEXPORT gzoffset64(gzFile); - ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off64_t); - ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off64_t); - ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off64_t); + ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off_t); + ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off_t); + ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off_t); # endif #else ZEXTERN gzFile ZEXPORT gzopen(const char *, const char *); diff --git a/packages/runtime/vendor/zlib/zutil.c b/packages/runtime/vendor/zlib/zutil.c index 0e30c5664..b1c5d2d3c 100644 --- a/packages/runtime/vendor/zlib/zutil.c +++ b/packages/runtime/vendor/zlib/zutil.c @@ -1,5 +1,5 @@ /* zutil.c -- target dependent utility functions for the compression library - * Copyright (C) 1995-2026 Jean-loup Gailly + * Copyright (C) 1995-2017 Jean-loup Gailly * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -86,36 +86,28 @@ uLong ZEXPORT zlibCompileFlags(void) { flags += 1L << 21; #endif #if defined(STDC) || defined(Z_HAVE_STDARG_H) -# ifdef NO_vsnprintf -# ifdef ZLIB_INSECURE - flags += 1L << 25; -# else - flags += 1L << 27; -# endif -# ifdef HAS_vsprintf_void - flags += 1L << 26; -# endif -# else -# ifdef HAS_vsnprintf_void - flags += 1L << 26; -# endif -# endif +# ifdef NO_vsnprintf + flags += 1L << 25; +# ifdef HAS_vsprintf_void + flags += 1L << 26; +# endif +# else +# ifdef HAS_vsnprintf_void + flags += 1L << 26; +# endif +# endif #else flags += 1L << 24; -# ifdef NO_snprintf -# ifdef ZLIB_INSECURE - flags += 1L << 25; -# else - flags += 1L << 27; -# endif -# ifdef HAS_sprintf_void - flags += 1L << 26; -# endif -# else -# ifdef HAS_snprintf_void - flags += 1L << 26; -# endif -# endif +# ifdef NO_snprintf + flags += 1L << 25; +# ifdef HAS_sprintf_void + flags += 1L << 26; +# endif +# else +# ifdef HAS_snprintf_void + flags += 1L << 26; +# endif +# endif #endif return flags; } @@ -150,33 +142,28 @@ const char * ZEXPORT zError(int err) { #ifndef HAVE_MEMCPY -void ZLIB_INTERNAL zmemcpy(void FAR *dst, const void FAR *src, z_size_t n) { - uchf *p = dst; - const uchf *q = src; - while (n) { - *p++ = *q++; - n--; - } +void ZLIB_INTERNAL zmemcpy(Bytef* dest, const Bytef* source, uInt len) { + if (len == 0) return; + do { + *dest++ = *source++; /* ??? to be unrolled */ + } while (--len != 0); } -int ZLIB_INTERNAL zmemcmp(const void FAR *s1, const void FAR *s2, z_size_t n) { - const uchf *p = s1, *q = s2; - while (n) { - if (*p++ != *q++) - return (int)p[-1] - (int)q[-1]; - n--; +int ZLIB_INTERNAL zmemcmp(const Bytef* s1, const Bytef* s2, uInt len) { + uInt j; + + for (j = 0; j < len; j++) { + if (s1[j] != s2[j]) return 2*(s1[j] > s2[j])-1; } return 0; } -void ZLIB_INTERNAL zmemzero(void FAR *b, z_size_t len) { - uchf *p = b; - while (len) { - *p++ = 0; - len--; - } +void ZLIB_INTERNAL zmemzero(Bytef* dest, uInt len) { + if (len == 0) return; + do { + *dest++ = 0; /* ??? to be unrolled */ + } while (--len != 0); } - #endif #ifndef Z_SOLO diff --git a/packages/runtime/vendor/zlib/zutil.h b/packages/runtime/vendor/zlib/zutil.h index 64cd7a41e..48dd7feba 100644 --- a/packages/runtime/vendor/zlib/zutil.h +++ b/packages/runtime/vendor/zlib/zutil.h @@ -1,5 +1,5 @@ /* zutil.h -- internal interface and configuration of the compression library - * Copyright (C) 1995-2026 Jean-loup Gailly, Mark Adler + * Copyright (C) 1995-2024 Jean-loup Gailly, Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -28,21 +28,6 @@ # include # include #endif -#ifdef NO_ERRNO_H -# ifdef _WIN32_WCE - /* The Microsoft C Run-Time Library for Windows CE doesn't have - * errno. We define it as a global variable to simplify porting. - * Its value is always 0 and should not be used. We rename it to - * avoid conflict with other libraries that use the same workaround. - */ -# define errno z_errno -# endif - extern int errno; -#else -# ifndef _WIN32_WCE -# include -# endif -#endif #ifndef local # define local static @@ -51,10 +36,6 @@ define "local" for the non-static meaning of "static", for readability (compile with -Dlocal if your debugger can't find static symbols) */ -extern const char deflate_copyright[]; -extern const char inflate_copyright[]; -extern const char inflate9_copyright[]; - typedef unsigned char uch; typedef uch FAR uchf; typedef unsigned short ush; @@ -67,8 +48,6 @@ typedef unsigned long ulg; # define Z_U8 unsigned long # elif (ULLONG_MAX == 0xffffffffffffffff) # define Z_U8 unsigned long long -# elif (ULONG_LONG_MAX == 0xffffffffffffffff) -# define Z_U8 unsigned long long # elif (UINT_MAX == 0xffffffffffffffff) # define Z_U8 unsigned # endif @@ -84,9 +63,7 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ /* To be used only when the state is known to be valid */ /* common constants */ -#if MAX_WBITS < 9 || MAX_WBITS > 15 -# error MAX_WBITS must be in 9..15 -#endif + #ifndef DEF_WBITS # define DEF_WBITS MAX_WBITS #endif @@ -164,7 +141,7 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ # define OS_CODE 7 #endif -#if defined(__acorn) || defined(__riscos) +#ifdef __acorn # define OS_CODE 13 #endif @@ -191,10 +168,11 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ #endif /* provide prototypes for these when building zlib without LFS */ -#ifndef Z_LARGE64 - ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off64_t); - ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off64_t); - ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off64_t); +#if !defined(_WIN32) && \ + (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0) + ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off_t); + ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off_t); + ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off_t); #endif /* common defaults */ @@ -233,9 +211,9 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ # define zmemzero(dest, len) memset(dest, 0, len) # endif #else - void ZLIB_INTERNAL zmemcpy(void FAR *, const void FAR *, z_size_t); - int ZLIB_INTERNAL zmemcmp(const void FAR *, const void FAR *, z_size_t); - void ZLIB_INTERNAL zmemzero(void FAR *, z_size_t); + void ZLIB_INTERNAL zmemcpy(Bytef* dest, const Bytef* source, uInt len); + int ZLIB_INTERNAL zmemcmp(const Bytef* s1, const Bytef* s2, uInt len); + void ZLIB_INTERNAL zmemzero(Bytef* dest, uInt len); #endif /* Diagnostic functions */ @@ -273,80 +251,4 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ #define ZSWAP32(q) ((((q) >> 24) & 0xff) + (((q) >> 8) & 0xff00) + \ (((q) & 0xff00) << 8) + (((q) & 0xff) << 24)) -#ifdef _MSC_VER -#define zalign(x) __declspec(align(x)) -#else -#define zalign(x) __attribute__((aligned((x)))) -#endif - -#ifdef Z_ONCE -/* - Create a local z_once() function depending on the availability of atomics. - */ - -/* Check for the availability of atomics. */ -#if defined(__STDC__) && __STDC_VERSION__ >= 201112L && \ - !defined(__STDC_NO_ATOMICS__) - -#include -typedef struct { - atomic_flag begun; - atomic_int done; -} z_once_t; -#define Z_ONCE_INIT {ATOMIC_FLAG_INIT, 0} - -/* - Run the provided init() function exactly once, even if multiple threads - invoke once() at the same time. The state must be a once_t initialized with - Z_ONCE_INIT. - */ -local void z_once(z_once_t *state, void (*init)(void)) { - if (!atomic_load(&state->done)) { - if (atomic_flag_test_and_set(&state->begun)) - while (!atomic_load(&state->done)) - ; - else { - init(); - atomic_store(&state->done, 1); - } - } -} - -#else /* no atomics */ - -#warning zlib not thread-safe - -typedef struct z_once_s { - volatile int begun; - volatile int done; -} z_once_t; -#define Z_ONCE_INIT {0, 0} - -/* Test and set. Alas, not atomic, but tries to limit the period of - vulnerability. */ -local int test_and_set(int volatile *flag) { - int was; - - was = *flag; - *flag = 1; - return was; -} - -/* Run the provided init() function once. This is not thread-safe. */ -local void z_once(z_once_t *state, void (*init)(void)) { - if (!state->done) { - if (test_and_set(&state->begun)) - while (!state->done) - ; - else { - init(); - state->done = 1; - } - } -} - -#endif /* ?atomics */ - -#endif /* Z_ONCE */ - #endif /* ZUTIL_H */ diff --git a/tests/corpus/8405-zlib-compressed-bytes.ts b/tests/corpus/8405-zlib-compressed-bytes.ts deleted file mode 100644 index bfada812d..000000000 --- a/tests/corpus/8405-zlib-compressed-bytes.ts +++ /dev/null @@ -1,96 +0,0 @@ -// Compressed zlib bytes over the vendored zlib, the copy Node bundles: deflate, -// raw deflate and gzip output match Node's for every level, strategy, memLevel, -// windowBits and dictionary, for text, binary and a 1 MiB input that slides the -// window, and for streams that flush and change parameters between writes. -import { createHash } from "node:crypto"; -import { - constants, - createDeflate, - createGzip, - deflateRawSync, - deflateSync, - gunzipSync, - gzipSync, - inflateRawSync, - inflateSync, - type Deflate, - type Gzip, - type ZlibOptions, -} from "node:zlib"; - -const digest = (bytes: Buffer): string => - `${bytes.length} ${createHash("sha256").update(bytes).digest("hex").slice(0, 16)}`; - -const words = ["stream", "pipeline", "émetteur", "π", "buffer", "deflate", "\u0000", "window"]; -const parts: string[] = []; -for (let i = 0; i < 3000; i++) parts.push(`${words[i % words.length]}-${(i * 7919) % 1000}`); -const text = Buffer.from(parts.join(" "), "utf8"); - -let seed = 0x2545f491; -const binary = Buffer.alloc(20000); -for (let i = 0; i < binary.length; i++) { - seed = (seed * 1103515245 + 12345) >>> 0; - binary[i] = i % 3 === 0 ? seed >>> 24 : (i >> 4) & 0xff; -} - -const large = Buffer.alloc(1 << 20); -for (let i = 0; i < large.length; i++) large[i] = text[(i * 31) % text.length]! ^ ((i >> 12) & 7); - -for (const level of [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) { - const deflated = deflateSync(text, { level }); - console.log("deflate", level, digest(deflated), inflateSync(deflated).equals(text)); - console.log("raw", level, digest(deflateRawSync(binary, { level }))); - console.log("gzip", level, digest(gzipSync(text, { level }))); -} - -const variants: [string, ZlibOptions][] = [ - ["filtered", { strategy: constants.Z_FILTERED }], - ["huffman only", { strategy: constants.Z_HUFFMAN_ONLY }], - ["rle", { strategy: constants.Z_RLE }], - ["fixed", { strategy: constants.Z_FIXED }], - ["memLevel 1", { memLevel: 1 }], - ["memLevel 9", { memLevel: 9 }], - ["windowBits 9", { windowBits: 9 }], - ["windowBits 12", { windowBits: 12 }], - ["level 9 memLevel 9", { level: 9, memLevel: 9 }], - ["dictionary", { dictionary: Buffer.from("stream pipeline buffer deflate window") }], -]; -for (const [label, options] of variants) { - const deflated = deflateSync(text, options); - console.log(label, digest(deflated), digest(deflateRawSync(binary, options))); - console.log(label, "inflates", inflateSync(deflated, options).equals(text)); -} - -for (const level of [1, 6, 9]) { - const gz = gzipSync(large, { level }); - console.log("1 MiB gzip", level, digest(gz), gunzipSync(gz).equals(large)); - const raw = deflateRawSync(large, { level, windowBits: 10 }); - console.log("1 MiB raw windowBits 10", level, digest(raw), inflateRawSync(raw, { windowBits: 10 }).equals(large)); -} - -function collect(stream: Deflate | Gzip, label: string, done: () => void): void { - const chunks: Buffer[] = []; - stream.on("data", (chunk: Buffer) => chunks.push(chunk)); - stream.on("end", () => { - console.log(label, digest(Buffer.concat(chunks))); - done(); - }); -} - -const flushed = createDeflate({ level: 6 }); -collect(flushed, "stream sync flush", () => { - const changed = createGzip({ level: 1 }); - collect(changed, "stream params", () => console.log("done")); - changed.write(text.subarray(0, 8000)); - changed.flush(constants.Z_FULL_FLUSH, () => { - changed.params(9, constants.Z_DEFAULT_STRATEGY, () => { - changed.write(text.subarray(8000)); - changed.end(binary); - }); - }); -}); -flushed.write(text.subarray(0, 5000)); -flushed.flush(constants.Z_SYNC_FLUSH, () => { - flushed.write(binary); - flushed.end(text.subarray(5000)); -}); diff --git a/tests/corpus/8406-zlib-inflate-chunks.cjs b/tests/corpus/8406-zlib-inflate-chunks.cjs deleted file mode 100644 index f8fade68f..000000000 --- a/tests/corpus/8406-zlib-inflate-chunks.cjs +++ /dev/null @@ -1,69 +0,0 @@ -// Inflation over the vendored zlib's chunked inflate: inputs fed in pieces of -// 1 to 4096 bytes, output chunks of 64 bytes to 64 KiB, raw windowBits 9 to 15, -// concatenated gzip members, back-references across a 1 MiB window, and a -// truncated input. The output and the error match Node's. -const zlib = require("node:zlib"); -const { createHash } = require("node:crypto"); - -const digest = (bytes) => `${bytes.length} ${createHash("sha256").update(bytes).digest("hex").slice(0, 16)}`; - -const parts = []; -for (let i = 0; i < 20000; i++) parts.push(`row ${i % 977} ${"abcdefgh".slice(i % 8)} ${(i * 2654435761) % 4093}`); -const text = Buffer.from(parts.join("\n")); -const large = Buffer.alloc(1 << 20); -for (let i = 0; i < large.length; i++) large[i] = text[(i * 13) % text.length] ^ ((i >> 15) & 3); - -const gz = zlib.gzipSync(large, { level: 6 }); -for (const chunkSize of [64, 1024, 16384, 65536]) { - console.log("gunzip chunkSize", chunkSize, digest(zlib.gunzipSync(gz, { chunkSize }))); -} -for (const windowBits of [9, 10, 12, 15]) { - const raw = zlib.deflateRawSync(text, { windowBits, level: 9 }); - console.log("raw windowBits", windowBits, digest(zlib.inflateRawSync(raw, { windowBits }))); -} -const members = Buffer.concat([zlib.gzipSync(text.subarray(0, 1000)), zlib.gzipSync(text.subarray(1000, 5000))]); -console.log("members", digest(zlib.gunzipSync(members))); -try { - zlib.inflateSync(zlib.deflateSync(text).subarray(0, 2000)); -} catch (e) { - console.log("truncated", e.code, e.errno, e.message); -} - -function feed(input, pieceSize, outSize, next) { - const inflate = zlib.createGunzip({ chunkSize: outSize }); - const hash = createHash("sha256"); - let length = 0; - inflate.on("data", (chunk) => { - hash.update(chunk); - length += chunk.length; - }); - inflate.on("end", () => { - console.log("stream piece", pieceSize, "chunk", outSize, length, hash.digest("hex").slice(0, 16)); - next(); - }); - let offset = 0; - const pump = () => { - while (offset < input.length) { - const piece = input.subarray(offset, offset + pieceSize); - offset += pieceSize; - if (!inflate.write(piece)) { - inflate.once("drain", pump); - return; - } - } - inflate.end(); - }; - pump(); -} - -const head = zlib.gzipSync(large.subarray(0, 1 << 16), { level: 6 }); -const runs = [ - [head, 1, 64], - [gz, 7, 1024], - [gz, 333, 4096], - [gz, 4096, 65536], -]; -const step = (i) => { - if (i < runs.length) feed(runs[i][0], runs[i][1], runs[i][2], () => step(i + 1)); -}; -step(0); diff --git a/tests/harness/corpus-costs/8405-zlib-compressed-bytes.ts.json b/tests/harness/corpus-costs/8405-zlib-compressed-bytes.ts.json deleted file mode 100644 index 9c291a72c..000000000 --- a/tests/harness/corpus-costs/8405-zlib-compressed-bytes.ts.json +++ /dev/null @@ -1 +0,0 @@ -{ "plain": 5000, "san": 3200 } diff --git a/tests/harness/corpus-costs/8406-zlib-inflate-chunks.cjs.json b/tests/harness/corpus-costs/8406-zlib-inflate-chunks.cjs.json deleted file mode 100644 index 2202e2f02..000000000 --- a/tests/harness/corpus-costs/8406-zlib-inflate-chunks.cjs.json +++ /dev/null @@ -1 +0,0 @@ -{ "plain": 9000, "san": 13300 } diff --git a/tests/harness/wasi-differential.test.ts b/tests/harness/wasi-differential.test.ts index 68d4b1807..66c2934f2 100644 --- a/tests/harness/wasi-differential.test.ts +++ b/tests/harness/wasi-differential.test.ts @@ -316,8 +316,6 @@ describe.skipIf(!zigOnPath())("wasm32-wasi differential", () => { // Weak-collection hashes mix 32-bit pointers in 64 bits. "4591-weak-keys-union-records.ts", "7742-weak-collections-many-keys.ts", - // zlib's portable build (CPU_NO_SIMD) compresses to Node's bytes. - "8405-zlib-compressed-bytes.ts", ])("the LLVM target runs %s byte-identically to Node", async (fixture) => { const entry = join(repoRoot, "tests/corpus", fixture); const outDir = await mkdtemp("/tmp/scriptc-wasi-"); From 580f405727c6bc50d409f5695b7d8c374c1c55af Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 17:33:58 -0500 Subject: [PATCH 26/52] Inline small leaf functions called only from loops A small helper called once per element, such as function pick(list: Gene[], rand: number): number { for (const gene of list) if (rand < gene.c) return gene.sc; return list[list.length - 1]!.sc; } called from a loop over the elements, is often past LLVM's inline cost threshold once its loop versions and checks are emitted (fasta's randomCode costs 430 against a threshold of 225), so every element pays a call, the spills around it, and checks the caller's loop cannot hoist. findLoopCallees (loop-callees.ts) finds functions that are synchronous, non-generator, capture nothing, call nothing (no call, callValue, virtualCall, dynCall, dynInvoke, new, newValue, newPromise, ffiCall or await), have at most 12 statements and one loop, and have one or two direct call sites in the module, each inside a loop of its caller. The emitter marks those calls `alwaysinline` (a call-site attribute, so the function's definition is unchanged). Library modules and debug builds keep LLVM's cost decision. --- packages/compiler/src/backend/llvm/emitter.ts | 14 +++ .../src/backend/llvm/loop-callees.test.ts | 83 +++++++++++++ .../compiler/src/backend/llvm/loop-callees.ts | 110 ++++++++++++++++++ 3 files changed, 207 insertions(+) create mode 100644 packages/compiler/src/backend/llvm/loop-callees.test.ts create mode 100644 packages/compiler/src/backend/llvm/loop-callees.ts diff --git a/packages/compiler/src/backend/llvm/emitter.ts b/packages/compiler/src/backend/llvm/emitter.ts index ff9e24508..00c1aefa9 100644 --- a/packages/compiler/src/backend/llvm/emitter.ts +++ b/packages/compiler/src/backend/llvm/emitter.ts @@ -431,6 +431,7 @@ import { fieldAliasMetadata, isStackUnionSource, } from "./receivers.js"; +import { findLoopCallees } from "./loop-callees.js"; export { LlvmUnsupportedError } from "./unsupported.js"; @@ -1502,6 +1503,9 @@ export class LlEmitter { /** Functions that check the native stack guard on entry * (stackCheckedFunctions); null where the runtime has no guard. */ readonly stackChecks: ReadonlySet | null; + /** Small leaf functions called only from loops, whose direct calls are + * `alwaysinline` (loop-callees.ts). */ + readonly loopCallees: ReadonlySet; /** Static types whose values can be published (@scriptc/threads): their * stores carry the frozen-object guard. Null without publish calls. */ readonly publishedTypes: PublishedTypes | null; @@ -2089,6 +2093,7 @@ export class LlEmitter { : new Set(); this.workerEntryPolls = mt.workerEntryPolls ?? null; this.stackChecks = mt.stackChecks ?? null; + this.loopCallees = findLoopCallees(mod); // A stackless call's eager prefix borrows its caller's stack; the // runtime moves deep prefix nests to a fresh stack using the guard, // which Windows lacks. @@ -3948,6 +3953,15 @@ export class LlEmitter { * calls (unwindAbiFunctions excludes their callees). */ emitDirectCall(line: string, callee: string): boolean { const B = this.B; + // A small leaf called only from loops inlines into each of them, past + // LLVM's cost threshold (loop-callees.ts). Debug builds keep the call. + if (this.debug === null && this.loopCallees.has(callee)) { + const comment = line.indexOf(" ; "); + line = + comment < 0 + ? `${line} alwaysinline` + : `${line.slice(0, comment)} alwaysinline${line.slice(comment)}`; + } if (!this.unwindAbi.has(callee) || this.currentCoro !== null || B.isTerminated()) { B.line(line); return false; diff --git a/packages/compiler/src/backend/llvm/loop-callees.test.ts b/packages/compiler/src/backend/llvm/loop-callees.test.ts new file mode 100644 index 000000000..f918af944 --- /dev/null +++ b/packages/compiler/src/backend/llvm/loop-callees.test.ts @@ -0,0 +1,83 @@ +import { expect, test } from "vitest"; +import { + BOOL, + F64, + VOID, + type IrExpr, + type IrFunction, + type IrModule, + type IrStmt, +} from "../../ir/ir.js"; +import { findLoopCallees } from "./loop-callees.js"; + +const loc = { file: "callees.ts", start: 0, end: 0 }; +const num = (value: number): IrExpr => ({ kind: "numLit", value, type: F64, loc }); +const ref = (localId: string): IrExpr => ({ kind: "varRef", localId, type: F64, loc }); +const call = (callee: string): IrExpr => ({ kind: "call", callee, args: [num(1)], type: F64, loc }); +const run = (e: IrExpr): IrStmt => ({ kind: "exprStmt", expr: e, loc }); +const ret = (e: IrExpr): IrStmt => ({ kind: "return", value: e, loc }); +const loop = (body: IrStmt[]): IrStmt => ({ + kind: "while", + cond: { kind: "bin", op: "<", left: ref("i"), right: num(10), type: BOOL, loc }, + body, + loc, +}); +const fn = (name: string, body: IrStmt[], extra: Partial = {}): IrFunction => ({ + name, + params: [{ localId: "x", name: "x", type: F64 }], + returnType: F64, + locals: [{ id: "x", name: "x", type: F64, mutable: false }], + body, + loc, + ...extra, +}); +const module = (functions: IrFunction[]): IrModule => ({ + irVersion: 17, + sourceFile: loc.file, + entry: "__main", + functions: [ + { name: "__main", params: [], returnType: VOID, locals: [], body: [], loc }, + ...functions, + ], +}); + +test("a small leaf called only from loops is a loop callee", () => { + const callees = findLoopCallees( + module([ + fn("leaf", [loop([run(ref("x"))]), ret(ref("x"))]), + fn("caller", [loop([run(call("leaf"))]), loop([run(call("leaf"))]), ret(num(0))]), + ]), + ); + expect([...callees]).toEqual(["leaf"]); +}); + +test("a call outside a loop, a third call site, an own call or a large body keeps the call", () => { + const leaf = fn("leaf", [ret(ref("x"))]); + // A call site outside any loop. + expect( + findLoopCallees(module([leaf, fn("caller", [run(call("leaf")), loop([run(call("leaf"))])])])) + .size, + ).toBe(0); + // Three call sites. + const three = fn("caller", [loop([run(call("leaf")), run(call("leaf")), run(call("leaf"))])]); + expect(findLoopCallees(module([leaf, three])).size).toBe(0); + // A callee that calls another function. + const calling = fn("calling", [ret(call("leaf"))]); + const caller = fn("caller", [loop([run(call("calling"))])]); + // (leaf is then called outside a loop, from calling.) + expect(findLoopCallees(module([leaf, calling, caller])).size).toBe(0); + // Two loops, or more than 12 statements. + const twoLoops = fn("leaf", [loop([]), loop([]), ret(ref("x"))]); + expect(findLoopCallees(module([twoLoops, fn("caller", [loop([run(call("leaf"))])])])).size).toBe( + 0, + ); + const long = fn("leaf", [...Array.from({ length: 12 }, () => run(ref("x"))), ret(ref("x"))]); + expect(findLoopCallees(module([long, fn("caller", [loop([run(call("leaf"))])])])).size).toBe(0); + // Async functions and library modules. + const asyncLeaf = fn("leaf", [ret(ref("x"))], { async: true }); + expect(findLoopCallees(module([asyncLeaf, fn("caller", [loop([run(call("leaf"))])])])).size).toBe( + 0, + ); + const lib = { ...module([leaf, fn("caller", [loop([run(call("leaf"))])])]), lib: {} } as IrModule; + expect(findLoopCallees(lib).size).toBe(0); +}); diff --git a/packages/compiler/src/backend/llvm/loop-callees.ts b/packages/compiler/src/backend/llvm/loop-callees.ts new file mode 100644 index 000000000..a3d767dae --- /dev/null +++ b/packages/compiler/src/backend/llvm/loop-callees.ts @@ -0,0 +1,110 @@ +import type { IrExpr, IrFunction, IrModule, IrStmt } from "../../ir/ir.js"; +import { everyExprChild, everyStmtChild } from "../../ir/traverse.js"; + +/** Statements a callee may have, counting nested ones. */ +const MAX_STATEMENTS = 12; +/** Direct call sites a callee may have. */ +const MAX_CALL_SITES = 2; + +/** Expressions that run other code: a callee that has none calls nothing, + * so inlining it never inlines a call chain or a recursion. */ +const CALLS = new Set([ + "call", + "callValue", + "virtualCall", + "dynCall", + "dynInvoke", + "new", + "newValue", + "newPromise", + "ffiCall", + "awaitExpr", + "awaitUnionExpr", +]); + +function isLoop(s: IrStmt): boolean { + return s.kind === "for" || s.kind === "while" || s.kind === "doWhile" || s.kind === "forOf"; +} + +/** Small functions that are called only from inside loops: a per-element + * helper such as + * + * function pick(list: Gene[], rand: number): number { + * for (const gene of list) if (rand < gene.c) return gene.sc; + * return list[list.length - 1]!.sc; + * } + * + * called from a loop over the elements. After its loop versions and + * checks, such a function is often past LLVM's inline cost threshold, so + * every element pays a call, the spills around it, and checks that the + * caller's loop could hoist once inlined. + * + * A function qualifies when it is a synchronous, non-generator function + * with no captures and no own call (CALLS), has at most MAX_STATEMENTS + * statements and one loop, and has one to MAX_CALL_SITES direct call sites + * in the module, each inside a loop body of its caller. The emitter marks + * those calls `alwaysinline`. Functions the module exports as a library + * keep the cost model's decision. */ +export function findLoopCallees(mod: IrModule): Set { + const result = new Set(); + if (mod.lib !== undefined) return result; + const candidates = new Map(); + for (const fn of mod.functions) { + if (fn.async || fn.generator || fn.captures !== undefined || fn.classCaptures !== undefined) + continue; + let statements = 0; + let loops = 0; + let calls = false; + const expr = (e: IrExpr): boolean => { + if (CALLS.has(e.kind)) calls = true; + return !calls && everyExprChild(e, expr, stmt); + }; + const stmt = (s: IrStmt): boolean => { + statements++; + if (isLoop(s)) loops++; + return statements <= MAX_STATEMENTS && loops <= 1 && everyStmtChild(s, expr, stmt); + }; + if (!fn.body.every(stmt) || calls) continue; + candidates.set(fn.name, fn); + } + if (candidates.size === 0) return result; + // Call sites of each candidate, and whether every one is inside a loop. + const sites = new Map(); + for (const fn of mod.functions) { + let depth = 0; + const expr = (e: IrExpr): boolean => { + if (e.kind === "call" && candidates.has(e.callee)) { + const site = sites.get(e.callee) ?? { count: 0, inLoops: true }; + site.count++; + if (depth === 0 || e.callee === fn.name) site.inLoops = false; + sites.set(e.callee, site); + } + return everyExprChild(e, expr, stmt); + }; + const stmt = (s: IrStmt): boolean => { + if (!isLoop(s)) return everyStmtChild(s, expr, stmt); + // A loop's header runs per iteration too, except a for's init. + if (s.kind === "for" && s.init) stmt(s.init); + depth++; + if (s.kind === "for") { + if (s.cond) expr(s.cond); + if (s.update) stmt(s.update); + s.body.every(stmt); + } else if (s.kind === "forOf") { + depth--; + expr(s.iterable); + depth++; + s.body.every(stmt); + } else if (s.kind === "while" || s.kind === "doWhile") { + expr(s.cond); + s.body.every(stmt); + } + depth--; + return true; + }; + fn.body.every(stmt); + } + for (const [name, site] of sites) + if (site.inLoops && site.count >= 1 && site.count <= MAX_CALL_SITES) result.add(name); + return result; +} From c75c95d86479126ed18b5ac706b4ef261a8a2e54 Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 17:47:58 -0500 Subject: [PATCH 27/52] Check the native stack guard in one function per call cycle Every unbounded recursion repeats some cycle of the call graph, so a stack check in one function of each cycle bounds it. stackCheckedFunctions now picks a feedback vertex set of the stack-check graph greedily (the function with the most caller-callee pairs first) instead of checking every function on a cycle, and adds a check where a run of unchecked cycle functions would exceed 32 calls, so the stack used between two checks stays of the same order as before. Worker entry polls follow: a synchronous function on a cycle that may throw needs no entry poll, since a descent that never returns ends at a checked function of its cycle. NoThrow contracts keep the model in which every function on a cycle checks, a superset that does not depend on the choice. --- .../compiler/src/backend/may-throw.test.ts | 62 ++++- packages/compiler/src/backend/may-throw.ts | 230 +++++++++++++++--- packages/compiler/src/contracts/check.ts | 6 +- .../8370-stack-overflow-cycles/main.ts.json | 7 + .../corpus/8370-stack-overflow-cycles/main.ts | 69 ++++++ .../8370-stack-overflow-cycles/shapes.ts | 24 ++ .../8370-stack-overflow-cycles/main.ts.json | 1 + 7 files changed, 362 insertions(+), 37 deletions(-) create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8370-stack-overflow-cycles/main.ts.json create mode 100644 tests/corpus/8370-stack-overflow-cycles/main.ts create mode 100644 tests/corpus/8370-stack-overflow-cycles/shapes.ts create mode 100644 tests/harness/corpus-costs/8370-stack-overflow-cycles/main.ts.json diff --git a/packages/compiler/src/backend/may-throw.test.ts b/packages/compiler/src/backend/may-throw.test.ts index 0a950c2cc..1bbbdb299 100644 --- a/packages/compiler/src/backend/may-throw.test.ts +++ b/packages/compiler/src/backend/may-throw.test.ts @@ -406,7 +406,7 @@ test("worker programs poll for termination only where execution can be unbounded expect(computeMayThrow({ ...mod, workers: false }).workerEntryPolls).toBeUndefined(); }); -test("stack checks cover recursive components and recursion through reentrant operations", () => { +test("stack checks cover every recursive cycle, including recursion through reentrant operations", () => { const mod = moduleWith( fn("caller", [call("self"), call("left"), call("leaf"), call("walker")], []), fn("self", [call("self"), call("leaf")], []), @@ -420,7 +420,12 @@ test("stack checks cover recursive components and recursion through reentrant op fn("visitor", [callClosure("leaf")], []), ); const answer = computeMayThrow(mod, { stackChecks: true }); - expect([...answer.stackChecks!].sort()).toEqual(["left", "right", "self", "step", "walker"]); + // One check per cycle: self, one of left and right, and one of walker and + // step (the earlier function on ties). + expect([...answer.stackChecks!].sort()).toEqual(["left", "self", "walker"]); + expect( + [...computeMayThrow(mod, { stackChecks: "everyCycleMember" }).stackChecks!].sort(), + ).toEqual(["left", "right", "self", "step", "walker"]); // Checked functions throw the overflow RangeError, so their callers poll; // a throwing closure target makes every indirect call poll as well. expect(answer.indirect).toBe(true); @@ -437,7 +442,7 @@ test("stack checks cover recursive components and recursion through reentrant op expect(computeMayThrow(mod).fns.size).toBe(0); }); -test("stack-checked synchronous functions skip the worker entry poll", () => { +test("synchronous functions on a checked cycle skip the worker entry poll", () => { const asyncSelf: IrFunction = { ...fn("asyncSelf", [call("asyncSelf")], []), async: true }; const mod: IrModule = { ...moduleWith( @@ -452,10 +457,11 @@ test("stack-checked synchronous functions skip the worker entry poll", () => { workers: true, }; const answer = computeMayThrow(mod, { stackChecks: true }); - expect([...answer.stackChecks!].sort()).toEqual(["asyncSelf", "caller", "left", "right", "self"]); - // Callers test after every call of a stack-checked function, and its - // overflow unwinds through those tests, so only the module entry, async - // bodies and unbounded functions without a stack check poll on entry. + expect([...answer.stackChecks!].sort()).toEqual(["asyncSelf", "caller", "left", "self"]); + // Callers test after every call of a function on a checked cycle (it may + // throw), and an overflow unwinds through those tests, so only the module + // entry, async bodies and unbounded functions off any cycle poll on entry; + // right needs no poll although left holds the cycle's check. expect([...answer.workerEntryPolls!].sort()).toEqual(["asyncSelf", "caller", "walker"]); expect(answer.fns.has("self") && answer.fns.has("left") && answer.fns.has("right")).toBe(true); // Without stack checks (WASI, Windows, libraries) every cycle keeps its poll. @@ -469,6 +475,48 @@ test("stack-checked synchronous functions skip the worker entry poll", () => { ]); }); +test("stack checks meet every cycle once and bound the runs between checks", () => { + // A ring of 80 functions, with a chord from fn10 back to fn0, and a + // separate ring of three whose functions also call each other backwards. + const ring = Array.from({ length: 80 }, (_, i) => + fn(`fn${i}`, i === 10 ? [call("fn11"), call("fn0")] : [call(`fn${(i + 1) % 80}`)], []), + ); + const mod = moduleWith( + ...ring, + fn("a", [call("b"), call("c")], []), + fn("b", [call("c"), call("a")], []), + fn("c", [call("a"), call("b")], []), + ); + const checks = computeMayThrow(mod, { stackChecks: true }).stackChecks!; + // Removing the checked functions leaves no cycle, and no run of more than + // 32 unchecked calls. + const callees = new Map( + mod.functions.map((f) => [ + f.name, + f.body.flatMap((s) => + s.kind === "exprStmt" && s.expr.kind === "call" ? [s.expr.callee] : [], + ), + ]), + ); + const longest = new Map(); + const visiting = new Set(); + const run = (name: string): number => { + if (checks.has(name)) return 0; + expect(visiting.has(name)).toBe(false); + const known = longest.get(name); + if (known !== undefined) return known; + visiting.add(name); + const depth = 1 + Math.max(0, ...callees.get(name)!.map(run)); + visiting.delete(name); + longest.set(name, depth); + return depth; + }; + for (const f of mod.functions) expect(run(f.name)).toBeLessThanOrEqual(32); + // fn0 breaks both ring cycles, fn33 and fn66 bound the run along the + // ring, and two of a, b and c break their four cycles. + expect([...checks].sort()).toEqual(["a", "b", "fn0", "fn33", "fn66"]); +}); + test("class members are reachable from reentrant operations", () => { const mod: IrModule = { ...moduleWith( diff --git a/packages/compiler/src/backend/may-throw.ts b/packages/compiler/src/backend/may-throw.ts index 693d20b3b..53b0e56b4 100644 --- a/packages/compiler/src/backend/may-throw.ts +++ b/packages/compiler/src/backend/may-throw.ts @@ -37,7 +37,11 @@ export type MayThrowReason = export function computeMayThrow( mod: IrModule, options: { - stackChecks?: boolean; + /** Native stack checks: true for the functions that check on entry (one + * per call cycle, see stackCheckedFunctions); "everyCycleMember" for a + * model in which every function on a cycle checks, which answers a + * superset that does not depend on that choice. */ + stackChecks?: boolean | "everyCycleMember"; explain?: boolean; /** computePublishedTypes(mod), when the caller already has it. */ published?: ReturnType; @@ -56,8 +60,16 @@ export function computeMayThrow( stackChecks?: Set; } { const terminations = mod.workers === true ? workerTerminationPolls(mod, options.nodes) : null; + const stackGraph = + options.stackChecks === undefined || options.stackChecks === false + ? null + : stackCheckGraph(mod, options.nodes); const stackChecks = - options.stackChecks === true ? stackCheckedFunctions(mod, options.nodes) : null; + stackGraph === null + ? null + : options.stackChecks === "everyCycleMember" + ? stackGraph.cyclic + : cycleGuards(stackGraph); // Stores that can reach a published object throw the frozen TypeError. const published = options.published !== undefined ? options.published : computePublishedTypes(mod); @@ -488,7 +500,9 @@ export function computeMayThrow( fns: may, ...(why !== null ? { why } : {}), indirect, - ...(terminations ? { workerEntryPolls: entryPolls(mod, terminations.entry, stackChecks) } : {}), + ...(terminations + ? { workerEntryPolls: entryPolls(mod, terminations.entry, stackGraph?.cyclic ?? null, may) } + : {}), ...(stackChecks ? { stackChecks } : {}), }; } @@ -720,28 +734,32 @@ function describeThrowingNode(rec: IrExpr | IrStmt): string { } /** The termination polls a worker program places on function entry. A - * stack-checked synchronous function needs none: it may throw (the stack - * guard seeds the fixpoint), so every caller tests the pending state after - * the call, and a descent that never returns ends at the stack guard, whose - * RangeError unwinds through those tests. An outstanding terminate request - * keeps the alert word nonzero, so the first test that runs afterwards (a - * post-call test, a loop poll or the unwinding) stops the thread; dropping - * the entry poll only delays the stop by bounded work, which Node's - * asynchronous terminate allows. The entry poll's slow path rejoins the - * body, so every polled function kept its arguments live across a call. */ + * synchronous function on a call cycle that may throw needs none: every + * caller tests the pending state after the call, and a descent that never + * returns passes a stack-checked function of each cycle again and again + * (stackCheckedFunctions) and ends at its guard, whose RangeError unwinds + * through those tests. An outstanding terminate request keeps the alert word + * nonzero, so the first test that runs afterwards (a post-call test, a loop + * poll or the unwinding) stops the thread; dropping the entry poll only + * delays the stop by bounded work, which Node's asynchronous terminate + * allows. The entry poll's slow path rejoins the body, so every polled + * function kept its arguments live across a call. */ function entryPolls( mod: IrModule, entry: Set, - stackChecks: Set | null, + cyclic: Set | null, + may: Set, ): Set { - if (stackChecks === null) return entry; + if (cyclic === null) return entry; // Calling an async or generator function never tests the caller's pending // state, and the module entry has no caller: those keep their polls. const keep = new Set( mod.functions.filter((fn) => fn.async || fn.generator !== undefined).map((fn) => fn.name), ); keep.add(mod.entry); - return new Set([...entry].filter((name) => keep.has(name) || !stackChecks.has(name))); + return new Set( + [...entry].filter((name) => keep.has(name) || !cyclic.has(name) || !may.has(name)), + ); } /** Statement and expression kinds that cannot reenter scriptc code except @@ -971,16 +989,31 @@ export function workerTerminationPolls( return { entry, polls }; } -/** The functions that can take part in unbounded recursion, which check the - * native stack guard on entry: every function on a cycle of the call graph. - * Direct edges are calls, constructions and virtual dispatch. A function - * containing any operation that can reenter scriptc code other than through - * those edges (an indirect call, a callback-taking or dynamic operation, a - * library call; see boundedNode) also reaches every function that such an - * operation can invoke: closure targets and class members. Non-recursive - * functions, including leaf callbacks, stay check-free. */ +/** The call graph that bounds recursion, and the functions on its cycles: + * the ones that can take part in unbounded recursion. Direct edges are + * calls, constructions and virtual dispatch. A function containing any + * operation that can reenter scriptc code other than through those edges + * (an indirect call, a callback-taking or dynamic operation, a library call; + * see boundedNode) also reaches every function that such an operation can + * invoke: closure targets and class members, behind one shared `reentry` + * node. */ +interface StackCheckGraph { + edges: Map; + cyclic: Set; +} + +const REENTRY = "\0reentry"; + +/** The functions that check the native stack guard on entry: one function + * of every cycle of the call graph (stackCheckGraph), which bounds every + * unbounded recursion, since its frames repeat the cycle's guarded function + * again and again. Non-recursive functions, including leaf callbacks, stay + * check-free. See cycleGuards for the choice. */ export function stackCheckedFunctions(mod: IrModule, nodes?: IrNodeIndex): Set { - const reentry = "\0reentry"; + return cycleGuards(stackCheckGraph(mod, nodes)); +} + +function stackCheckGraph(mod: IrModule, nodes?: IrNodeIndex): StackCheckGraph { const methodImpls = new Map(); const memberPrefixes = new Set(); for (const cls of mod.classes ?? []) { @@ -1019,16 +1052,157 @@ export function stackCheckedFunctions(mod: IrModule, nodes?: IrNodeIndex): Set names.has(callee)); - if (reenters) callees.push(reentry); + if (reenters) callees.push(REENTRY); edges.set(fn.name, callees); } edges.set( - reentry, + REENTRY, [...targets].filter((name) => names.has(name)), ); const cyclic = cyclicFunctions(edges); - cyclic.delete(reentry); - return cyclic; + cyclic.delete(REENTRY); + return { edges, cyclic }; +} + +/** The longest run of calls between unchecked functions of a cycle that + * cycleGuards allows; deeper runs get a check. Acyclic call chains below a + * check are as deep as the program makes them already, so this keeps the + * stack used between two checks of the same order. */ +const MAX_UNCHECKED_CYCLE_RUN = 32; + +/** A small set of functions that meets every cycle of the stack-check graph + * (a feedback vertex set), chosen greedily: functions that cannot lie on a + * remaining cycle (no caller or no callee left among the candidates) drop + * out, a function that calls itself is chosen, and otherwise the function + * with the most caller-callee pairs, the one that breaks the most cycles, + * is chosen and removed; ties go to the earlier function. The reentry node + * is not a function and is never chosen. A last pass in topological order + * of the unchosen cycle functions adds a check where a run of them would + * exceed MAX_UNCHECKED_CYCLE_RUN calls. */ +function cycleGuards(graph: StackCheckGraph): Set { + const { edges, cyclic } = graph; + const chosen = new Set(); + if (cyclic.size === 0) return chosen; + const order = new Map(); + const callees = new Map>(); + const callers = new Map>(); + const candidates = [...[...edges.keys()].filter((name) => cyclic.has(name)), REENTRY]; + for (const name of candidates) { + order.set(name, order.size); + callees.set(name, new Set()); + callers.set(name, new Set()); + } + for (const name of candidates) + for (const callee of edges.get(name) ?? []) + if (callees.has(callee)) { + callees.get(name)!.add(callee); + callers.get(callee)!.add(name); + } + // Max-heap of [score, order, name]; an entry is stale once its function + // is gone or its score changed, and is skipped when popped. + const heap: [number, number, string][] = []; + const score = (name: string): number => + name === REENTRY ? -1 : callers.get(name)!.size * callees.get(name)!.size; + const above = (x: [number, number, string], y: [number, number, string]): boolean => + x[0] > y[0] || (x[0] === y[0] && x[1] < y[1]); + const push = (name: string): void => { + heap.push([score(name), order.get(name)!, name]); + for (let i = heap.length - 1; i > 0;) { + const parent = (i - 1) >> 1; + if (!above(heap[i]!, heap[parent]!)) break; + [heap[i], heap[parent]] = [heap[parent]!, heap[i]!]; + i = parent; + } + }; + const pop = (): [number, number, string] => { + const top = heap[0]!; + const last = heap.pop()!; + if (heap.length > 0) { + heap[0] = last; + for (let i = 0; ;) { + let best = i; + for (const child of [2 * i + 1, 2 * i + 2]) + if (child < heap.length && above(heap[child]!, heap[best]!)) best = child; + if (best === i) break; + [heap[i], heap[best]] = [heap[best]!, heap[i]!]; + i = best; + } + } + return top; + }; + const doomed: string[] = []; + const remove = (name: string): void => { + const out = callees.get(name)!; + const into = callers.get(name)!; + callees.delete(name); + callers.delete(name); + for (const callee of out) + if (callee !== name) { + const set = callers.get(callee)!; + set.delete(name); + if (set.size === 0) doomed.push(callee); + else push(callee); + } + for (const caller of into) + if (caller !== name) { + const set = callees.get(caller)!; + set.delete(name); + if (set.size === 0) doomed.push(caller); + else push(caller); + } + }; + // Removes the functions that can no longer lie on a cycle, transitively. + const settle = (): void => { + while (doomed.length > 0) { + const name = doomed.pop()!; + if (callees.has(name)) remove(name); + } + }; + for (const name of candidates) { + if (callees.get(name)!.size === 0 || callers.get(name)!.size === 0) doomed.push(name); + else push(name); + } + settle(); + for (const name of candidates) + if (callees.get(name)?.has(name) === true) { + chosen.add(name); + remove(name); + settle(); + } + while (heap.length > 0) { + const [entryScore, , name] = pop(); + if (!callees.has(name) || entryScore !== score(name) || name === REENTRY) continue; + chosen.add(name); + remove(name); + settle(); + } + // Bound the runs of unchecked cycle functions (acyclic once the chosen + // ones are removed; the reentry node takes no frame): the longest run + // ending at each function, in topological order, and a check where it + // would grow too long. + const unchecked = candidates.filter((name) => !chosen.has(name)); + const pending = new Map(unchecked.map((name) => [name, 0])); + for (const name of unchecked) + for (const callee of new Set(edges.get(name))) + if (pending.has(callee)) pending.set(callee, pending.get(callee)! + 1); + const run = new Map(); + const ready = unchecked.filter((name) => pending.get(name) === 0); + for (let i = 0; i < ready.length; i++) { + const name = ready[i]!; + let depth = (run.get(name) ?? 0) + (name === REENTRY ? 0 : 1); + if (depth > MAX_UNCHECKED_CYCLE_RUN && name !== REENTRY) { + chosen.add(name); + depth = 0; + } + for (const callee of new Set(edges.get(name))) { + if (!pending.has(callee)) continue; + run.set(callee, Math.max(run.get(callee) ?? 0, depth)); + const left = pending.get(callee)! - 1; + pending.set(callee, left); + if (left === 0) ready.push(callee); + } + } + return chosen; } /** Functions on a cycle of the call graph (Tarjan's strongly connected diff --git a/packages/compiler/src/contracts/check.ts b/packages/compiler/src/contracts/check.ts index 972d9ea12..6493967b9 100644 --- a/packages/compiler/src/contracts/check.ts +++ b/packages/compiler/src/contracts/check.ts @@ -519,8 +519,10 @@ class ContractChecker { for (const fn of this.fnByLoc.get(key) ?? []) targets.push({ fn, note }); if (targets.length === 0) return; // Target-independent: the native stack guard (Linux, macOS) counts, so a - // contract holds on every platform. - const mt = computeMayThrow(this.mod, { stackChecks: true, explain: true }); + // contract holds on every platform. Every function on a call cycle counts + // as checking it, a superset of the functions the backend picks, so the + // answer does not depend on that choice. + const mt = computeMayThrow(this.mod, { stackChecks: "everyCycleMember", explain: true }); const proven: string[] = []; for (const { fn, note } of targets) { if (fn.async === true || fn.generator !== undefined) { diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8370-stack-overflow-cycles/main.ts.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8370-stack-overflow-cycles/main.ts.json new file mode 100644 index 000000000..7e5125dde --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8370-stack-overflow-cycles/main.ts.json @@ -0,0 +1,7 @@ +{ + "order": [ + "/tests/corpus/8370-stack-overflow-cycles/shapes.ts", + "/tests/corpus/8370-stack-overflow-cycles/main.ts" + ], + "diags": [] +} diff --git a/tests/corpus/8370-stack-overflow-cycles/main.ts b/tests/corpus/8370-stack-overflow-cycles/main.ts new file mode 100644 index 000000000..3b9ef5ddc --- /dev/null +++ b/tests/corpus/8370-stack-overflow-cycles/main.ts @@ -0,0 +1,69 @@ +// Unbounded recursion through each kind of call cycle raises Node's +// RangeError, and the program recovers and recurses again afterwards. +import { Even, Odd, Tree } from "./shapes.ts"; + +function probe(name: string, run: (n: number) => number): void { + try { + console.log(name, "returned", run(10_000_000)); + } catch (e) { + console.log(name, e instanceof RangeError, (e as Error).message); + } + console.log(name, "after", run(100)); +} + +function down(n: number): number { + return n === 0 ? 0 : 1 + down(n - 1); +} +probe("direct", down); + +function ping(n: number): number { + return n === 0 ? 0 : 1 + pong(n - 1); +} +function pong(n: number): number { + return n === 0 ? 0 : 2 + ping(n - 1); +} +probe("mutual", ping); + +function first(n: number): number { + return n === 0 ? 0 : 1 + second(n - 1); +} +function second(n: number): number { + return n === 0 ? 0 : 1 + third(n - 1); +} +function third(n: number): number { + return n === 0 ? 0 : 1 + fourth(n - 1); +} +function fourth(n: number): number { + return n === 0 ? 0 : 1 + fifth(n - 1); +} +function fifth(n: number): number { + return n === 0 ? 0 : 1 + first(n - 1); +} +probe("ring", first); + +function viaValue(n: number, again: (m: number) => number): number { + return n === 0 ? 0 : 1 + again(n - 1); +} +const callback = (m: number): number => viaValue(m, callback); +probe("closure", callback); + +function viaMap(n: number): number { + return n === 0 ? 0 : 1 + [n - 1].map(viaMap)[0]!; +} +probe("library callback", viaMap); + +const even = new Even(); +const odd = new Odd(); +even.next = odd; +odd.next = even; +probe("virtual", (n) => even.depth(n)); + +probe("constructor", (n) => { + let tree: Tree | null = new Tree(n); + let count = 0; + while (tree !== null) { + count++; + tree = tree.child; + } + return count; +}); diff --git a/tests/corpus/8370-stack-overflow-cycles/shapes.ts b/tests/corpus/8370-stack-overflow-cycles/shapes.ts new file mode 100644 index 000000000..6f5f6fada --- /dev/null +++ b/tests/corpus/8370-stack-overflow-cycles/shapes.ts @@ -0,0 +1,24 @@ +// Classes in their own module, so their names carry the module prefix. +export abstract class Link { + next: Link | null = null; + abstract depth(n: number): number; +} + +export class Even extends Link { + depth(n: number): number { + return n === 0 ? 0 : 1 + this.next!.depth(n - 1); + } +} + +export class Odd extends Link { + depth(n: number): number { + return n === 0 ? 0 : 2 + this.next!.depth(n - 1); + } +} + +export class Tree { + child: Tree | null; + constructor(n: number) { + this.child = n === 0 ? null : new Tree(n - 1); + } +} diff --git a/tests/harness/corpus-costs/8370-stack-overflow-cycles/main.ts.json b/tests/harness/corpus-costs/8370-stack-overflow-cycles/main.ts.json new file mode 100644 index 000000000..29769db15 --- /dev/null +++ b/tests/harness/corpus-costs/8370-stack-overflow-cycles/main.ts.json @@ -0,0 +1 @@ +{ "plain": 2780, "san": 53539 } From f003bb4d68384e8db506f07808ca9a14c2188ecf Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 17:58:37 -0500 Subject: [PATCH 28/52] Guard by target in the implicit toolchain probe The implicit toolchain probe includes every system header that the runtime and vendored sources spell, under __has_include. clang ships for every target, and through clang 18 including it without the RISC-V vector extension is an #error. Since the vendored zlib's adler32_simd.c spells it, the probe failed with clang 18, which disabled the native cache and program sharding: a sanitized dev build then compiled the whole program as one translation unit. The probe now includes only where __riscv_vector is defined, and the probe's header test covers it and a riscv64 target. --- .../src/backend/native-toolchain.test.ts | 19 +++++++++++++------ .../backend/native/compiler-fingerprint.ts | 7 +++++-- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/packages/compiler/src/backend/native-toolchain.test.ts b/packages/compiler/src/backend/native-toolchain.test.ts index 1651da083..8fb86d4af 100644 --- a/packages/compiler/src/backend/native-toolchain.test.ts +++ b/packages/compiler/src/backend/native-toolchain.test.ts @@ -630,20 +630,27 @@ test.skipIf(clangExecutable === undefined)( async () => { // clang ships its x86 intrinsic headers (, ...) for every // target, so __has_include finds them on arm64, where including them is - // an #error, and the same holds for the ARM headers on x86. The probe - // must guard them by target. Only the compiler's own freestanding - // headers are visible here, so the result does not depend on the host's - // C library. + // an #error, and the same holds for the ARM headers on x86 and for + // (zlib's RVV code) outside RISC-V with the vector + // extension. The probe must guard them by target. Only the compiler's own + // freestanding headers are visible here, so the result does not depend on + // the host's C library. const includes = (await implicitDependencyProbeIncludes(runtimeSrcDir())).filter( (include) => - include !== "" && /intrin\.h>$|^$|^$/.test(include), + include !== "" && + /intrin\.h>$|^$|^$|^$/.test(include), ); expect(includes).toContain(""); + expect(includes).toContain(""); const resourceDir = execFileSync(clangExecutable!, ["-print-resource-dir"], { encoding: "utf8", }).trim(); const source = includes.map(implicitDependencyIncludeDirective).join(""); - for (const target of ["aarch64-unknown-linux-gnu", "x86_64-unknown-linux-gnu"]) { + for (const target of [ + "aarch64-unknown-linux-gnu", + "riscv64-unknown-linux-gnu", + "x86_64-unknown-linux-gnu", + ]) { const result = spawnSync( clangExecutable!, [ diff --git a/packages/compiler/src/backend/native/compiler-fingerprint.ts b/packages/compiler/src/backend/native/compiler-fingerprint.ts index 00d84c09b..4be20a4d0 100644 --- a/packages/compiler/src/backend/native/compiler-fingerprint.ts +++ b/packages/compiler/src/backend/native/compiler-fingerprint.ts @@ -207,7 +207,8 @@ function x86OnlyHeader(include: string): boolean { /** One guarded line of the implicit-toolchain probe source: the header is * included only when the compiler can find it and it belongs to the target - * being probed. */ + * being probed. clang ships for every target, and through + * clang 18 including it without the RISC-V vector extension is an #error. */ export function implicitDependencyIncludeDirective(include: string): string { const targetCondition = x86OnlyHeader(include) ? " && (defined(__i386__) || defined(__x86_64__) || defined(_M_IX86) || defined(_M_X64))" @@ -215,7 +216,9 @@ export function implicitDependencyIncludeDirective(include: string): string { ? " && defined(_WIN32)" : include === "" || include === "" || include === "" ? " && (defined(__arm__) || defined(__aarch64__) || defined(_M_ARM) || defined(_M_ARM64))" - : ""; + : include === "" + ? " && defined(__riscv_vector)" + : ""; return `#if __has_include(${include})${targetCondition}\n#include ${include}\n#endif\n`; } From 19b0b40486ddd3c38b681f4c4fe1c76f6456b96e Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 18:01:27 -0500 Subject: [PATCH 29/52] Address review feedback --- .../src/frontend/lowering/lower-exprs.ts | 99 ++++++++++++++----- .../7395-non-null-element-dereference.ts | 29 ++++++ 2 files changed, 101 insertions(+), 27 deletions(-) diff --git a/packages/compiler/src/frontend/lowering/lower-exprs.ts b/packages/compiler/src/frontend/lowering/lower-exprs.ts index baa3cf913..76ef8a704 100644 --- a/packages/compiler/src/frontend/lowering/lower-exprs.ts +++ b/packages/compiler/src/frontend/lowering/lower-exprs.ts @@ -83,6 +83,7 @@ import { lowerYield } from "./lower-generators.js"; import { unionWideningTags } from "../../ir/analysis.js"; import { isSafeToDiscard, isSafeToRepeat } from "./expressions/evaluation-safety.js"; import { everyExprChild } from "../../ir/traverse.js"; +import { declareContextLocal } from "./function-context.js"; import { hasOptionalChainGuard, isOptionalChainTail } from "./expressions/optional-chains.js"; import { classToStringConversion, classUnionToString } from "./class-to-primitive.js"; import { lowerCjsTopLevelThis, lowerRequireCacheElement } from "./lower-node-module.js"; @@ -1168,14 +1169,13 @@ function dereferencedElementReceiver( /** The parts of a member access through `xs[i]!` (see * dereferencedElementReceiver): statements that evaluate the array and the * index, whether the element is present, the element read, and Node's - * TypeError message for a missing one. `hold` keeps the array and the - * index in hidden locals, for a write whose value is evaluated before the - * element is read. */ + * TypeError message for a missing one. A `write` holds its key, so its + * message may be left for dereferencedElementWrite to build from the key. */ export function dereferencedElementParts( lowerer: Lowerer, expr: ts.NonNullExpression, loc: SrcLoc, - hold: boolean, + write: boolean, ): { stmts: IrStmt[]; present: IrExpr; element: IrExpr; message: IrExpr | null } | null { let read: ts.Expression = expr.expression; while (ts.isParenthesizedExpression(read)) read = read.expression; @@ -1193,7 +1193,7 @@ export function dereferencedElementParts( // key (dereferencedElementWrite builds it). const message = memberAccessMessage(lowerer, use.access) ?? - (hold && ts.isElementAccessExpression(use.access) && namedKey(lowerer, use.access) + (write && ts.isElementAccessExpression(use.access) && namedKey(lowerer, use.access) ? null : undefined); if (message === undefined) return null; @@ -1219,8 +1219,7 @@ export function dereferencedElementParts( // can replace the array binding or field (`xs[(xs = other, 0)]!`), so the // array is held before it, as JavaScript reads it first. const stmts: IrStmt[] = []; - const plain = (value: IrExpr): boolean => - !hold && (isSafeToRepeat(value) || plainProjection(value)); + const plain = (value: IrExpr): boolean => isSafeToRepeat(value) || plainProjection(value); const held = (value: IrExpr, name: string): IrExpr => { const tmp = lowerer.declareHiddenLocal(name, value.type); stmts.push({ kind: "varDecl", localId: tmp.id, init: value, loc }); @@ -1269,43 +1268,89 @@ export function dereferencedElementWrite( while (ts.isParenthesizedExpression(receiver)) receiver = receiver.expression; if (!ts.isNonNullExpression(receiver)) return null; const loc = locOf(expr); - // The key and the value evaluate before the element is read, so the - // array and the index are held when either can assign one of them. const keyValue = ts.isElementAccessExpression(target) ? lowerer.lowerExpr(target.argumentExpression) : null; const rightValue = lowerer.lowerExpr(expr.right); - const pure = !mayAssign(rightValue) && (keyValue === null || !mayAssign(keyValue)); - const parts = dereferencedElementParts(lowerer, receiver, loc, !pure); + const parts = dereferencedElementParts(lowerer, receiver, loc, true); if (parts === null) return null; const stmts = [...parts.stmts]; - const held = ( - node: ts.Expression, - value: IrExpr, - name: string, - ): { node: ts.Expression; value: IrExpr } => { - // A key or value whose evaluation is unobservable may evaluate in the - // write itself, after the element is tested. - if (isSafeToRepeat(value) || unobservable(value)) return { node, value }; + let present = parts.present; + let element = parts.element; + // JavaScript reads the element before the key and the value. When either + // has an effect, which can replace, remove or add the element, its + // presence and value are read first; otherwise the write tests and reads + // it after them. + if (!unobservable(rightValue) || (keyValue !== null && !unobservable(keyValue))) { + const presentLocal = lowerer.declareHiddenLocal("%elementPresent", BOOL); + // Assigned only when the element is present. + const elementLocal = declareContextLocal( + lowerer.ctx, + "%elementValue", + element.type, + true, + undefined, + undefined, + ); + stmts.push( + { kind: "varDecl", localId: presentLocal.id, init: present, loc }, + { kind: "varDecl", localId: elementLocal.id, init: null, loc }, + ); + present = varRef(presentLocal.id, BOOL, loc); + stmts.push({ + kind: "if", + cond: present, + then: [{ kind: "assign", localId: elementLocal.id, value: element, loc }], + else_: null, + loc, + }); + element = varRef(elementLocal.id, element.type, loc); + } + const overrides: { node: ts.Expression; value: IrExpr }[] = []; + // The write lowers the node with or without its parentheses. + const override = (node: ts.Expression, value: IrExpr): void => { + for (let n: ts.Expression = node; ; n = n.expression) { + overrides.push({ node: n, value }); + if (!ts.isParenthesizedExpression(n)) break; + } + }; + const held = (value: IrExpr, name: string, inline: boolean): IrExpr => { + if (inline) return value; // A call without a result evaluates to undefined. if (value.type.kind === "void") { stmts.push({ kind: "exprStmt", expr: value, loc }); - return { node, value: { kind: "unitLit", unit: "undefined", type: UNDEFINED_T, loc } }; + return { kind: "unitLit", unit: "undefined", type: UNDEFINED_T, loc }; } const tmp = lowerer.declareHiddenLocal(name, value.type); stmts.push({ kind: "varDecl", localId: tmp.id, init: value, loc }); - return { node, value: varRef(tmp.id, value.type, loc) }; + return varRef(tmp.id, value.type, loc); }; - const overrides = [{ node: target.expression, value: parts.element }]; + override(target.expression, element); let message = parts.message; if (ts.isElementAccessExpression(target) && keyValue !== null) { - const key = held(target.argumentExpression, keyValue, "%elementWriteKey"); - overrides.push(key); - message ??= keyMessage(messageHead(target), key.value, loc); + // The key evaluates before the value, which can assign the binding or + // field it reads; a literal, or an unobservable key the value cannot + // change, may evaluate in the write. + const key = held( + keyValue, + "%elementWriteKey", + keyValue.kind === "numLit" || + keyValue.kind === "strLit" || + (unobservable(keyValue) && !mayAssign(rightValue)), + ); + override(target.argumentExpression, key); + // The message names the key's value as the write evaluated it. + if (key !== keyValue || message === null) + message = keyMessage(messageHead(target), key, loc) ?? message; } - overrides.push(held(expr.right, rightValue, "%elementWriteValue")); + // A value whose evaluation is unobservable may evaluate in the write + // itself, after the element is tested. + override( + expr.right, + held(rightValue, "%elementWriteValue", isSafeToRepeat(rightValue) || unobservable(rightValue)), + ); if (message === null) return null; - return { stmts, present: parts.present, message, overrides }; + return { stmts, present, message, overrides }; } /** dereferencedElementWrite in value position (`f(xs[i]!.name = v)`). */ diff --git a/tests/corpus/7395-non-null-element-dereference.ts b/tests/corpus/7395-non-null-element-dereference.ts index 41eb6d1db..67d9249d1 100644 --- a/tests/corpus/7395-non-null-element-dereference.ts +++ b/tests/corpus/7395-non-null-element-dereference.ts @@ -111,3 +111,32 @@ attempt("replaced write", () => { let names = ["kept"]; attempt("replaced string", () => `${names[(names = [], 0)]!}`); console.log(current.length, names.length); + +// The element is read before the key and the value: a value that replaces, +// removes or adds it writes to, or misses, the element the target read, and +// a key the value reassigns is the one read before it. +const slots = [new Cell("p"), new Cell("q")]; +const original = slots[0]!; +attempt("value replaces", () => { + slots[0]!.label = ((slots[0] = new Cell("r")), "set"); + return `${original.label} ${slots[0]!.label}`; +}); +const tail = slots[1]!; +attempt("value removes", () => { + slots[1]!.label = (slots.pop(), "gone"); + return `${tail.label} ${slots.length}`; +}); +attempt("value adds", () => { + slots[1]!.label = (slots.push(new Cell("s")), "added"); +}); +const table: number[][] = [[1, 2]]; +let column = 0; +attempt("value moves key", () => { + table[0]![column] = ((column = 1), 5); + return table[0]!.join(","); +}); +column = 0; +attempt("value moves missing key", () => { + table[4]![column] = ((column = 1), 5); +}); +console.log(slots.length, column); From 1245b184692a2b0fe2313f1ac7dce58ef464547d Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 18:22:22 -0500 Subject: [PATCH 30/52] Search ASCII strings from a start index without index conversion String.prototype.indexOf took its byte-search fast path on a proven-ASCII receiver only when the start index was not positive. A positive start went through the general path: ToIntegerOrInfinity, the surrogate-needle check, and UTF-16 to byte conversions in both directions, although byte offsets are UTF-16 indexes in an ASCII string. The fast path now covers every start index: a positive start truncates and clamps to the length, where only the empty needle is found, and the search runs from that byte offset. --- .../8407-string-index-of-from-ascii.ts.json | 6 +++ packages/runtime/src/scr_string.c | 18 ++++++--- .../corpus/8407-string-index-of-from-ascii.ts | 38 +++++++++++++++++++ .../8407-string-index-of-from-ascii.ts.json | 1 + 4 files changed, 58 insertions(+), 5 deletions(-) create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8407-string-index-of-from-ascii.ts.json create mode 100644 tests/corpus/8407-string-index-of-from-ascii.ts create mode 100644 tests/harness/corpus-costs/8407-string-index-of-from-ascii.ts.json diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8407-string-index-of-from-ascii.ts.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8407-string-index-of-from-ascii.ts.json new file mode 100644 index 000000000..15651f491 --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8407-string-index-of-from-ascii.ts.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/8407-string-index-of-from-ascii.ts" + ], + "diags": [] +} diff --git a/packages/runtime/src/scr_string.c b/packages/runtime/src/scr_string.c index 71d629941..548a04fd5 100644 --- a/packages/runtime/src/scr_string.c +++ b/packages/runtime/src/scr_string.c @@ -2172,11 +2172,19 @@ double scr_str_char_code_at(ScrStr *s, double i) { } double scr_str_index_of(ScrStr *s, ScrStr *needle, double fromIndex) { - /* A search from the start of a proven-ASCII receiver: byte offsets are - * UTF-16 indexes, and a needle with other bytes is never found. A start - * index that is not positive (NaN, -0 or negative) clamps to 0. */ - if (s->ascii && !(fromIndex > 0)) { - const char *found = scr_byte_find(s->data, s->len, needle->data, needle->len); + /* A proven-ASCII receiver: byte offsets are UTF-16 indexes, and a needle + * with other bytes is never found. A start index that is not positive + * (NaN, -0 or negative) clamps to 0, a positive one truncates + * (ToIntegerOrInfinity) and clamps to the length, where only the empty + * needle is found. */ + if (s->ascii) { + size_t start = 0; + if (fromIndex > 0) { + if (fromIndex >= (double)s->len) return needle->len == 0 ? (double)s->len : -1.0; + start = (size_t)fromIndex; + } + const char *found = + scr_byte_find(s->data + start, s->len - start, needle->data, needle->len); return found ? (double)(found - s->data) : -1.0; } double pos = scr_to_integer_or_infinity(fromIndex); diff --git a/tests/corpus/8407-string-index-of-from-ascii.ts b/tests/corpus/8407-string-index-of-from-ascii.ts new file mode 100644 index 000000000..04582b7cd --- /dev/null +++ b/tests/corpus/8407-string-index-of-from-ascii.ts @@ -0,0 +1,38 @@ +// indexOf with a start index on ASCII receivers: integral, fractional, +// negative, -0, NaN, Infinity and out-of-range starts; empty needles, which +// are found at the clamped start; needles longer than the rest; needles with +// non-ASCII characters and lone surrogates, which an ASCII receiver never +// contains; and receivers built at run time (slices, concatenations, readline +// style splits) next to non-ASCII ones. The results match Node's. +const line = `10.1.2.3 - - [24/Oct/2026:10:00:00 +0000] "GET /api/items/7?page=3 HTTP/1.1" 200 5120 "agent"`; +const starts = [0, 1, 2.7, -1, -0, NaN, Infinity, -Infinity, line.length - 1, line.length, line.length + 5, 1e21]; +const needles = ["", '"', " ", "/", "api", "HTTP/1.1", line, line + "x", "é", "\ud83d", "\udca9", "💩"]; + +for (const needle of needles) { + const found = starts.map((start) => line.indexOf(needle, start)); + console.log(JSON.stringify(needle), found.join(" ")); +} + +const quote = line.indexOf('"'); +const space = line.indexOf(" ", quote); +const path = line.slice(space + 1, line.indexOf("/", line.indexOf("/", space) + 1)); +const close = line.indexOf('"', space); +console.log(quote, space, path, close, line.slice(close + 2, close + 5)); + +const built = ["alpha", "beta", "gamma"].join("/") + "/" + String(42); +for (let i = 0; i <= built.length + 1; i++) { + console.log(i, built.indexOf("/", i), built.indexOf("a", i), built.indexOf("", i), built.indexOf("42", i)); +} + +const mixed = "café/naïve/ascii/end"; +const ascii = mixed.slice(mixed.indexOf("ascii")); +console.log(ascii, ascii.indexOf("/", 1), ascii.indexOf("end", 3), mixed.indexOf("/", 5), mixed.indexOf("ascii", 6)); + +let count = 0; +let at = 0; +const csv = Array.from({ length: 200 }, (_, i) => `${i},${i * 3},row${i}`).join(","); +while ((at = csv.indexOf(",", at)) !== -1) { + count++; + at += 1.5; +} +console.log("commas", count); diff --git a/tests/harness/corpus-costs/8407-string-index-of-from-ascii.ts.json b/tests/harness/corpus-costs/8407-string-index-of-from-ascii.ts.json new file mode 100644 index 000000000..054b3c2b4 --- /dev/null +++ b/tests/harness/corpus-costs/8407-string-index-of-from-ascii.ts.json @@ -0,0 +1 @@ +{ "plain": 3900, "san": 5000 } From 7be980307676708f381f0f4b70c7bec4e69ae064 Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 18:40:07 -0500 Subject: [PATCH 31/52] Build node:zlib on the zlib Node bundles Re-lands #2355, reverted in #2358. #2361 fixed the CI failure it exposed. --- .../src/backend/native-toolchain.test.ts | 6 +- .../backend/native/compiler-fingerprint.ts | 10 +- .../compiler/src/backend/native/contracts.ts | 11 +- .../compiler/src/backend/native/executable.ts | 28 +- .../compiler/src/backend/native/library.ts | 5 +- .../compiler/src/backend/vendor-archives.ts | 38 +- .../src/backend/vendor-inputs.test.ts | 80 + .../compiler/src/backend/vendor-inputs.ts | 82 +- packages/compiler/src/native/sanitizer.ts | 7 +- .../corpus/8405-zlib-compressed-bytes.ts.json | 6 + .../corpus/8406-zlib-inflate-chunks.cjs.json | 6 + .../runtime-darwin-arm64/scripts/build.mjs | 21 +- .../runtime-pack-common/scripts/build.mjs | 21 +- .../scripts/zlib-inputs.mjs | 83 + packages/runtime/src/scr_zlib.c | 11 +- packages/runtime/vendor/README.md | 10 +- packages/runtime/vendor/zlib/LICENSE | 2 +- packages/runtime/vendor/zlib/LICENSE.chromium | 27 + packages/runtime/vendor/zlib/README.chromium | 38 + packages/runtime/vendor/zlib/adler32.c | 33 + packages/runtime/vendor/zlib/adler32_simd.c | 459 +++++ packages/runtime/vendor/zlib/adler32_simd.h | 16 + packages/runtime/vendor/zlib/chromeconf.h | 211 +++ packages/runtime/vendor/zlib/compare256.h | 56 + packages/runtime/vendor/zlib/compress.c | 55 +- .../zlib/contrib/optimizations/chunkcopy.h | 564 ++++++ .../contrib/optimizations/inffast_chunk.c | 376 ++++ .../contrib/optimizations/inffast_chunk.h | 42 + .../zlib/contrib/optimizations/inflate.c | 1562 +++++++++++++++++ .../contrib/optimizations/insert_string.h | 80 + packages/runtime/vendor/zlib/cpu_features.c | 218 +++ packages/runtime/vendor/zlib/cpu_features.h | 22 + packages/runtime/vendor/zlib/crc32.c | 325 ++-- packages/runtime/vendor/zlib/crc32_simd.c | 628 +++++++ packages/runtime/vendor/zlib/crc32_simd.h | 57 + packages/runtime/vendor/zlib/crc_folding.c | 513 ++++++ packages/runtime/vendor/zlib/deflate.c | 478 +++-- packages/runtime/vendor/zlib/deflate.h | 48 +- packages/runtime/vendor/zlib/gzguts.h | 69 +- packages/runtime/vendor/zlib/gzlib.c | 106 +- packages/runtime/vendor/zlib/gzread.c | 318 ++-- packages/runtime/vendor/zlib/gzwrite.c | 267 +-- packages/runtime/vendor/zlib/infback.c | 98 +- packages/runtime/vendor/zlib/inffast.c | 36 +- packages/runtime/vendor/zlib/inffast.h | 15 + packages/runtime/vendor/zlib/inffixed.h | 182 +- packages/runtime/vendor/zlib/inflate.c | 199 +-- packages/runtime/vendor/zlib/inflate.h | 2 +- packages/runtime/vendor/zlib/inftrees.c | 143 +- packages/runtime/vendor/zlib/inftrees.h | 14 +- .../runtime/vendor/zlib/slide_hash_simd.h | 116 ++ packages/runtime/vendor/zlib/trees.c | 82 +- packages/runtime/vendor/zlib/uncompr.c | 62 +- packages/runtime/vendor/zlib/zconf.h | 61 +- packages/runtime/vendor/zlib/zlib.h | 344 ++-- packages/runtime/vendor/zlib/zutil.c | 85 +- packages/runtime/vendor/zlib/zutil.h | 120 +- tests/corpus/8405-zlib-compressed-bytes.ts | 96 + tests/corpus/8406-zlib-inflate-chunks.cjs | 69 + .../8405-zlib-compressed-bytes.ts.json | 1 + .../8406-zlib-inflate-chunks.cjs.json | 1 + tests/harness/wasi-differential.test.ts | 2 + 62 files changed, 7506 insertions(+), 1217 deletions(-) create mode 100644 packages/compiler/src/backend/vendor-inputs.test.ts create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8405-zlib-compressed-bytes.ts.json create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8406-zlib-inflate-chunks.cjs.json create mode 100644 packages/runtime-pack-common/scripts/zlib-inputs.mjs create mode 100644 packages/runtime/vendor/zlib/LICENSE.chromium create mode 100644 packages/runtime/vendor/zlib/README.chromium create mode 100644 packages/runtime/vendor/zlib/adler32_simd.c create mode 100644 packages/runtime/vendor/zlib/adler32_simd.h create mode 100644 packages/runtime/vendor/zlib/chromeconf.h create mode 100644 packages/runtime/vendor/zlib/compare256.h create mode 100644 packages/runtime/vendor/zlib/contrib/optimizations/chunkcopy.h create mode 100644 packages/runtime/vendor/zlib/contrib/optimizations/inffast_chunk.c create mode 100644 packages/runtime/vendor/zlib/contrib/optimizations/inffast_chunk.h create mode 100644 packages/runtime/vendor/zlib/contrib/optimizations/inflate.c create mode 100644 packages/runtime/vendor/zlib/contrib/optimizations/insert_string.h create mode 100644 packages/runtime/vendor/zlib/cpu_features.c create mode 100644 packages/runtime/vendor/zlib/cpu_features.h create mode 100644 packages/runtime/vendor/zlib/crc32_simd.c create mode 100644 packages/runtime/vendor/zlib/crc32_simd.h create mode 100644 packages/runtime/vendor/zlib/crc_folding.c create mode 100644 packages/runtime/vendor/zlib/slide_hash_simd.h create mode 100644 tests/corpus/8405-zlib-compressed-bytes.ts create mode 100644 tests/corpus/8406-zlib-inflate-chunks.cjs create mode 100644 tests/harness/corpus-costs/8405-zlib-compressed-bytes.ts.json create mode 100644 tests/harness/corpus-costs/8406-zlib-inflate-chunks.cjs.json diff --git a/packages/compiler/src/backend/native-toolchain.test.ts b/packages/compiler/src/backend/native-toolchain.test.ts index 0fd626c5b..8fb86d4af 100644 --- a/packages/compiler/src/backend/native-toolchain.test.ts +++ b/packages/compiler/src/backend/native-toolchain.test.ts @@ -326,9 +326,9 @@ test.skipIf( let vendorEntries = await readdir(vendorRoot); expect(vendorEntries.filter((name) => name.startsWith("mbedtls-")).length).toBe(2); - // Host clang uses system zlib, so only the Zig build materializes a zlib - // object family in the shared vendor root. - expect(vendorEntries.filter((name) => name.startsWith("zlib-")).length).toBe(1); + // Host clang and Zig each materialize their own vendored zlib object + // family in the shared vendor root. + expect(vendorEntries.filter((name) => name.startsWith("zlib-")).length).toBe(2); // Invalidate the host archive. A targetless Zig rebuild must continue to // use the separately keyed Zig archive instead of repairing or consuming // the host-clang entry. diff --git a/packages/compiler/src/backend/native/compiler-fingerprint.ts b/packages/compiler/src/backend/native/compiler-fingerprint.ts index fca87a8c8..4be20a4d0 100644 --- a/packages/compiler/src/backend/native/compiler-fingerprint.ts +++ b/packages/compiler/src/backend/native/compiler-fingerprint.ts @@ -1,7 +1,7 @@ import { createHash } from "node:crypto"; import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; import { tmpdir } from "node:os"; -import { dirname, join, resolve } from "node:path"; +import { basename, dirname, join, resolve } from "node:path"; import { type CcDriver } from "./driver.js"; import { resolvedToolIdentity, resolvedTool } from "./tool-identity.js"; import { execFileAsync } from "./process.js"; @@ -168,7 +168,7 @@ export function effectiveCompilerInvocationFingerprint( export async function implicitDependencyProbeIncludes(rtDir: string): Promise { const vendor = join(rtDir, "..", "vendor"); const quickjsSources = new Set(LRE_SOURCES); - const zlibSources = new Set(ZLIB_SOURCES); + const zlibSources = new Set(ZLIB_SOURCES.map((source) => basename(source))); const fileGroups = await Promise.all([ nativeSourceFiles(rtDir, false), nativeSourceFiles(join(vendor, "ryu"), false), @@ -181,7 +181,7 @@ export async function implicitDependencyProbeIncludes(rtDir: string): Promise name.endsWith(".h") || zlibSources.has(name), ), ]); @@ -199,8 +199,10 @@ export async function implicitDependencyProbeIncludes(rtDir: string): Promise, * , ...), , and . */ +/** clang's x86 intrinsic headers: every <...intrin.h> but the Windows + * (, , ...), and . */ function x86OnlyHeader(include: string): boolean { - return include === "" || /^<(x86|x86gpr|[a-z]*mm)intrin\.h>$/.test(include); + return include === "" || /^<[a-z0-9_]+intrin\.h>$/.test(include); } /** One guarded line of the implicit-toolchain probe source: the header is diff --git a/packages/compiler/src/backend/native/contracts.ts b/packages/compiler/src/backend/native/contracts.ts index 49fd792ba..03d9ead2a 100644 --- a/packages/compiler/src/backend/native/contracts.ts +++ b/packages/compiler/src/backend/native/contracts.ts @@ -76,14 +76,9 @@ export interface CcOptions { fetch?: boolean; /** The program uses zlib (index.ts detects zlib.* libCalls on the IR): * compiles scr_zlib.c — the regex gating precedent, so zlib-free - * binaries keep their exact link line. The default host-clang build links - * the SYSTEM libz (macOS ships it), byte-identical to the historical line; - * every Zig build compiles the vendored zlib with the selected driver instead - * (ensureZlibObjects — zig has no libz in its sysroots). Compressed bytes may - * differ between the - * system and vendored libraries, which is why the corpus only ever - * compares round-trips and fixed-blob inflation, never raw deflate - * output. */ + * binaries keep their exact link line. Every driver compiles the vendored + * zlib, the copy Node bundles (ensureZlibObjects), so compressed bytes match + * Node's. */ zlib?: boolean; /** The program uses node:zlib's Brotli forms (with zlib): compiles * scr_brotli.c and links the vendored brotli archive. */ diff --git a/packages/compiler/src/backend/native/executable.ts b/packages/compiler/src/backend/native/executable.ts index d940ae604..1b29c6b47 100644 --- a/packages/compiler/src/backend/native/executable.ts +++ b/packages/compiler/src/backend/native/executable.ts @@ -217,18 +217,13 @@ const RUNTIME_UNITS: readonly RuntimeUnit[] = [ // Blob and File (every blob.* call selects dynAsync, whose unit boxes // their reads as dyn promises). unit((u) => u.opts.dynAsync, "scr_blob.c"), - // The zlib UNIT (scr_zlib.c) gates on zlib.* IR use; the LINK (system - // libz on the default host-clang build, vendored objects on Zig builds) - // also serves the native fetch's gzip decoder — spread exactly once. + // The zlib UNIT (scr_zlib.c) gates on zlib.* IR use; the vendored zlib + // objects also serve the native fetch's gzip decoder — spread exactly once. unitArgs((u) => u.opts.zlib - ? isZigDriver(u.driver) - ? ["-I", vendorZlibDir(), u.rt(join(u.rtDir, "scr_zlib.c")), ...u.zlibObjects] - : [u.rt(join(u.rtDir, "scr_zlib.c"))] + ? ["-I", vendorZlibDir(), u.rt(join(u.rtDir, "scr_zlib.c")), ...u.zlibObjects] : u.nativeFetch - ? isZigDriver(u.driver) - ? ["-I", vendorZlibDir(), ...u.zlibObjects] - : [] + ? ["-I", vendorZlibDir(), ...u.zlibObjects] : [], ), // Brotli (scr_brotli.c) plugs into the zlib engine and links the @@ -674,11 +669,11 @@ export async function compileCInternal( let lreObjects = regex ? lreObjectPaths(sanitize, driver, vendorBuildIdentity, vendorCacheRoot) : []; - // Vendored zlib is the Zig story — default host-clang builds keep the exact - // historical `-lz` system link (see CcOptions.zlib). The native fetch's - // gzip decoder rides the same objects/link. + // Every driver links the vendored zlib (the copy Node bundles), so + // compressed bytes match Node's. The native fetch's gzip decoder rides the + // same objects. let zlibObjects = - ((opts.zlib ?? false) || nativeFetch) && isZigDriver(driver) + (opts.zlib ?? false) || nativeFetch ? zlibObjectPaths(sanitize, driver, vendorBuildIdentity, vendorCacheRoot) : []; const materializeVendorPrerequisites = async ( @@ -827,11 +822,6 @@ export async function compileCInternal( ...(opts.linkInputs ?? []), ...(opts.systemLibraries ?? []).map((name) => `-l${name}`), ...(opts.frameworks ?? []).flatMap((name) => ["-framework", name]), - // GNU ld resolves libraries from left to right and commonly enables - // --as-needed: host-clang libz must follow scr_zlib.c/scr_fetch.c and every - // generated/native input that references inflate symbols. Cross - // and targetless Zig builds use vendored zlib objects in the input section above. - ...(((opts.zlib ?? false) || nativeFetch) && !isZigDriver(driver) ? ["-lz"] : []), ...unwinderLinkArgs(driver), // glibc keeps libm separate from libc. This must trail the generated // program and every native FFI input because GNU ld resolves archives @@ -1085,7 +1075,6 @@ export async function compileCInternal( ...(targetPlatform(driver) === "win32" ? ["-ladvapi32", "-liphlpapi", "-lws2_32"] : []), ...(mbedtls && targetPlatform(driver) === "win32" ? ["-lbcrypt"] : []), ...(tlsCa && targetPlatform(driver) === "win32" ? ["-lcrypt32"] : []), - ...(((opts.zlib ?? false) || nativeFetch) && !isZigDriver(driver) ? ["-lz"] : []), ...unwinderLinkArgs(driver), ...driver.linkArgs, ...executableLinkFlags, @@ -1098,7 +1087,6 @@ export async function compileCInternal( ...(targetPlatform(driver) === "win32" ? ["-ladvapi32", "-liphlpapi", "-lws2_32"] : []), ...(mbedtls && targetPlatform(driver) === "win32" ? ["-lbcrypt"] : []), ...(tlsCa && targetPlatform(driver) === "win32" ? ["-lcrypt32"] : []), - ...(((opts.zlib ?? false) || nativeFetch) && !isZigDriver(driver) ? ["-lz"] : []), ...unwinderLinkArgs(driver), ...driver.linkArgs, ...executableLinkFlags, diff --git a/packages/compiler/src/backend/native/library.ts b/packages/compiler/src/backend/native/library.ts index 06b4ce1df..3cf4afa53 100644 --- a/packages/compiler/src/backend/native/library.ts +++ b/packages/compiler/src/backend/native/library.ts @@ -78,9 +78,8 @@ import { CacheInputsChangedError } from "./session.js"; * External-symbol contract: undefined references only to the target's C/math * runtime and system APIs. Windows embedders additionally link advapi32, * iphlpapi, and ws2_32; the platform driver supplies its ordinary CRT and - * kernel imports. Zlib rides the VENDORED per-flavor objects here even on - * hosts because the executable lane's system `-lz` cannot ride inside an - * archive. */ + * kernel imports. Zlib rides the vendored per-flavor objects, as in the + * executable lane. */ export async function compileLibArchive(opts: LibArchiveOptions): Promise { clearCcCaches(); diff --git a/packages/compiler/src/backend/vendor-archives.ts b/packages/compiler/src/backend/vendor-archives.ts index ef63aa4e4..363d14b08 100644 --- a/packages/compiler/src/backend/vendor-archives.ts +++ b/packages/compiler/src/backend/vendor-archives.ts @@ -18,6 +18,12 @@ const execFileAsync = promisify(execFile); * runtime pack's executable_section_elimination flags). */ const LRE_SECTION_FLAGS = ["-ffunction-sections", "-fdata-sections"]; +/** A vendored source's object file name: sources in subdirectories + * (zlib's contrib/optimizations/inflate.c) flatten to one directory. */ +function vendorObjectName(source: string): string { + return source.replaceAll("/", "-").replace(/\.c$/, ".o"); +} + import { QJS_COMMIT, MBEDTLS_VERSION, @@ -25,6 +31,7 @@ import { BROTLI_VERSION, LRE_SOURCES, ZLIB_SOURCES, + zlibInputs, } from "./vendor-inputs.js"; export { QJS_COMMIT, @@ -243,11 +250,18 @@ export function createVendorArchives(context: VendorArchiveContext) { return join(runtimeSrcDir(), "..", "vendor", "zlib"); } - /** The vendored zlib TUs behind Zig zlib support: every root *.c - * except the gzFile file-I/O units (gz*.c — nothing in scr_zlib.c - * references the gzFile API, and those TUs alone want unistd/io headers). - * The default host-clang build links the system libz; Zig builds use this - * list so targetless and explicit-target Zig inputs stay on one toolchain. */ + /** The vendored zlib TUs every C-lane build links (zlibInputs picks them + * per target; the gzFile file-I/O units are never compiled, nothing in + * scr_zlib.c references the gzFile API). */ + + /** The triple zlibInputs reads for a driver: its explicit target, else + * the host. */ + function zlibTriple(driver: Pick): string { + if (driver.target !== null) return driver.target; + const cpu = + process.arch === "x64" ? "x86_64" : process.arch === "arm64" ? "aarch64" : process.arch; + return `${cpu}-${process.platform === "win32" ? "windows" : process.platform}`; + } function zlibObjectPaths( sanitize: boolean, @@ -260,15 +274,15 @@ export function createVendorArchives(context: VendorArchiveContext) { (driver.argv.length === 1 && driver.argv[0] === "clang" ? "" : "-zigcc") + `-${vendorCacheTargetFlavor(driver)}-${buildIdentity}`; const cacheDir = join(cacheRoot, `zlib-${ZLIB_VERSION}-${flavor}`); - return ZLIB_SOURCES.map((f) => join(cacheDir, f.replace(/\.c$/, ".o"))); + return zlibInputs(zlibTriple(driver)).sources.map((f) => join(cacheDir, vendorObjectName(f))); } /** The zlib objects for one flavor, compiled lazily on the first zlib-using - * Zig build (~1s) and cached like the lre objects — + * C-lane build (~1s) and cached like the lre objects — * /vendor/zlib----/*.o — with the same atomic-rename * publish (parallel first builds race safely; losers discard their work). - * Plain is -Os, asan matches the final link so the sanitized lane - * instruments the codec too. The flavor keys the driver and target exactly + * Plain is -O3, as Node builds zlib; asan matches the final link so the + * sanitized lane instruments the codec too. The flavor keys the driver and target exactly * like the lre flavor: the keying * must never hand a zig-built object set to a clang link off a shared * directory. */ @@ -282,6 +296,7 @@ export function createVendorArchives(context: VendorArchiveContext) { (sanitize ? "asan" : "plain") + (driver.argv.length === 1 && driver.argv[0] === "clang" ? "" : "-zigcc") + `-${vendorCacheTargetFlavor(driver)}-${buildIdentity}`; + const inputs = zlibInputs(zlibTriple(driver)); return ensureVendorObjects({ sanitize, driver, @@ -289,8 +304,9 @@ export function createVendorArchives(context: VendorArchiveContext) { flavor, name: "zlib", vendor: vendorZlibDir(), - sources: ZLIB_SOURCES, + sources: inputs.sources, objects: zlibObjectPaths(sanitize, driver, buildIdentity, cacheRoot), + flags: [...(sanitize ? [] : ["-O3"]), ...inputs.defines.map((define) => `-D${define}`)], }); } @@ -327,7 +343,7 @@ export function createVendorArchives(context: VendorArchiveContext) { "-c", join(vendor, f), "-o", - join(buildDir, f.replace(/\.c$/, ".o")), + join(buildDir, vendorObjectName(f)), ], { cwd: buildDir }, ); diff --git a/packages/compiler/src/backend/vendor-inputs.test.ts b/packages/compiler/src/backend/vendor-inputs.test.ts new file mode 100644 index 000000000..53e9b8c22 --- /dev/null +++ b/packages/compiler/src/backend/vendor-inputs.test.ts @@ -0,0 +1,80 @@ +import { existsSync } from "node:fs"; +import { join } from "node:path"; +import { fileURLToPath, pathToFileURL } from "node:url"; +import { expect, test } from "vitest"; +import { ZLIB_SOURCES, zlibInputs } from "./vendor-inputs.js"; + +const repoRoot = fileURLToPath(new URL("../../../..", import.meta.url)); +const zlibDir = join(repoRoot, "packages/runtime/vendor/zlib"); + +const TRIPLES = [ + // The runtime packs' targets. + "x86_64-unknown-linux-gnu", + "x86_64-unknown-linux-musl", + "aarch64-unknown-linux-gnu", + "aarch64-unknown-linux-musl", + "aarch64-unknown-linux-android26", + "arm64-apple-macosx14.0.0", + "x86_64-apple-macosx14.0.0", + "arm64-apple-ios15.0", + "arm64-apple-ios15.0-simulator", + "x86_64-pc-windows-msvc", + "wasm32-unknown-wasi", + // Zig cross targets and host spellings. + "x86_64-linux-gnu", + "aarch64-linux-musl", + "aarch64-macos", + "x86_64-windows-gnu", + "aarch64-windows-gnu", + "wasm32-wasi", + "x86_64-linux", + "aarch64-darwin", +]; + +test("the compiler's zlib inputs match the runtime packs' for every target", async () => { + const packInputs = (await import( + pathToFileURL(join(repoRoot, "packages/runtime-pack-common/scripts/zlib-inputs.mjs")).href + )) as { zlibInputs(triple: string): { sources: string[]; defines: string[] } }; + for (const triple of TRIPLES) { + expect(zlibInputs(triple), triple).toEqual(packInputs.zlibInputs(triple)); + } +}); + +test("every zlib input exists, and ZLIB_SOURCES lists every source a target compiles", () => { + const listed = new Set(ZLIB_SOURCES); + for (const triple of TRIPLES) { + for (const source of zlibInputs(triple).sources) { + expect(listed.has(source), `${triple}: ${source}`).toBe(true); + expect(existsSync(join(zlibDir, source)), source).toBe(true); + } + } +}); + +test("zlib inputs follow Node's deps/zlib/zlib.gyp", () => { + const x64 = zlibInputs("x86_64-unknown-linux-gnu"); + expect(x64.sources).toContain("adler32_simd.c"); + expect(x64.sources).toContain("contrib/optimizations/inflate.c"); + expect(x64.sources).not.toContain("inflate.c"); + expect(x64.defines).toEqual([ + "HAVE_HIDDEN", + "ADLER32_SIMD_SSSE3", + "X86_NOT_WINDOWS", + "INFLATE_CHUNK_SIMD_SSE2", + "INFLATE_CHUNK_READ_64LE", + "DEFLATE_SLIDE_HASH_SSE2", + ]); + expect(zlibInputs("x86_64-pc-windows-msvc").defines).toContain("X86_WINDOWS"); + const mac = zlibInputs("arm64-apple-macosx14.0.0"); + expect(mac.sources).toContain("crc32_simd.c"); + expect(mac.defines).toContain("ARMV8_OS_MACOS"); + expect(mac.defines).toContain("CRC32_ARMV8_CRC32"); + const ios = zlibInputs("arm64-apple-ios15.0"); + expect(ios.sources).not.toContain("crc32_simd.c"); + expect(ios.defines).not.toContain("CRC32_ARMV8_CRC32"); + expect(ios.defines).toContain("INFLATE_CHUNK_SIMD_NEON"); + expect(zlibInputs("aarch64-unknown-linux-android26").defines).toContain("ARMV8_OS_LINUX"); + const wasm = zlibInputs("wasm32-unknown-wasi"); + expect(wasm.sources).toContain("inflate.c"); + expect(wasm.sources).not.toContain("contrib/optimizations/inflate.c"); + expect(wasm.defines).toEqual(["HAVE_HIDDEN", "CPU_NO_SIMD"]); +}); diff --git a/packages/compiler/src/backend/vendor-inputs.ts b/packages/compiler/src/backend/vendor-inputs.ts index a9d13e2f0..270815b00 100644 --- a/packages/compiler/src/backend/vendor-inputs.ts +++ b/packages/compiler/src/backend/vendor-inputs.ts @@ -1,22 +1,98 @@ /** The pinned QuickJS, mbedTLS, zlib, and brotli inputs used by native recipes. */ export const QJS_COMMIT = "3c8f3d68953955950074c41c6e4d999562ae82a7"; export const MBEDTLS_VERSION = "3.6.7"; -export const ZLIB_VERSION = "1.3.1"; +/** The zlib Node v24.22.0 bundles (`process.versions.zlib` there), the + * Chromium fork in Node's deps/zlib (packages/runtime/vendor/zlib). */ +export const ZLIB_VERSION = "1.3.2.1-motley-285e94b"; /** The brotli release Node v24.22.0 bundles (packages/runtime/vendor/brotli). */ export const BROTLI_VERSION = "1.2.0"; /** Exact translation-unit membership shared by cache builds and external * source-pack recipes. */ export const LRE_SOURCES = ["libregexp.c", "libunicode.c"] as const; -export const ZLIB_SOURCES = [ +const ZLIB_COMMON_SOURCES = [ "adler32.c", "compress.c", + "cpu_features.c", "crc32.c", "deflate.c", "infback.c", "inffast.c", - "inflate.c", "inftrees.c", "trees.c", "uncompr.c", "zutil.c", ] as const; + +/** Every zlib translation unit some target compiles (zlibInputs). */ +export const ZLIB_SOURCES = [ + ...ZLIB_COMMON_SOURCES, + "adler32_simd.c", + "crc32_simd.c", + "inflate.c", + "contrib/optimizations/inffast_chunk.c", + "contrib/optimizations/inflate.c", +] as const; + +/** The zlib translation units and defines for a target, chosen the way + * Node's deps/zlib/zlib.gyp chooses them. The SIMD units carry their own + * target attributes and check the CPU at run time, so every unit builds with + * the same flags, and compressed output does not depend on the choice. + * packages/runtime-pack-common/scripts/zlib-inputs.mjs keeps the same table + * for the runtime packs. `triple` is an LLVM or Zig target triple. */ +export function zlibInputs(triple: string): { sources: string[]; defines: string[] } { + const [cpu = "", ...rest] = triple.split("-"); + const system = rest.join("-"); + const architecture = + cpu === "x86_64" || cpu === "amd64" + ? "x64" + : cpu === "aarch64" || cpu === "arm64" + ? "arm64" + : cpu; + const ios = system.includes("ios"); + const windows = + system.includes("windows") || system.includes("win32") || system.includes("mingw"); + // Android reads the CPU features through getauxval, as Linux does: Node's + // ARMV8_OS_ANDROID path needs the NDK's cpu-features library. + const linux = system.includes("linux") || system.includes("android"); + const mac = !ios && (system.includes("darwin") || system.includes("macos")); + const sources: string[] = [...ZLIB_COMMON_SOURCES]; + const defines = windows ? [] : ["HAVE_HIDDEN"]; + if (architecture === "x64" && !ios) { + sources.push( + "adler32_simd.c", + "contrib/optimizations/inffast_chunk.c", + "contrib/optimizations/inflate.c", + ); + defines.push( + "ADLER32_SIMD_SSSE3", + windows ? "X86_WINDOWS" : "X86_NOT_WINDOWS", + "INFLATE_CHUNK_SIMD_SSE2", + "INFLATE_CHUNK_READ_64LE", + "DEFLATE_SLIDE_HASH_SSE2", + ); + } else if (architecture === "arm64") { + sources.push("contrib/optimizations/inffast_chunk.c", "contrib/optimizations/inflate.c"); + defines.push( + "INFLATE_CHUNK_SIMD_NEON", + "INFLATE_CHUNK_READ_64LE", + "__ARM_NEON__", + "DEFLATE_SLIDE_HASH_NEON", + ); + if (windows) { + defines.push("ARMV8_OS_WINDOWS"); + } else if (linux || mac) { + // Node builds the Adler-32 and CRC-32 units for every arm64 target but + // iOS and Windows. + sources.push("adler32_simd.c", "crc32_simd.c"); + defines.push( + "ADLER32_SIMD_NEON", + "CRC32_ARMV8_CRC32", + linux ? "ARMV8_OS_LINUX" : "ARMV8_OS_MACOS", + ); + } + } else { + sources.push("inflate.c"); + defines.push("CPU_NO_SIMD"); + } + return { sources, defines }; +} diff --git a/packages/compiler/src/native/sanitizer.ts b/packages/compiler/src/native/sanitizer.ts index abc15d043..81667b28b 100644 --- a/packages/compiler/src/native/sanitizer.ts +++ b/packages/compiler/src/native/sanitizer.ts @@ -14,7 +14,7 @@ import { selectedRuntimeUnits, type RuntimePackMode, } from "../backend/runtime-pack-core.js"; -import { LRE_SOURCES, ZLIB_SOURCES } from "../backend/vendor-inputs.js"; +import { LRE_SOURCES, zlibInputs } from "../backend/vendor-inputs.js"; import { contentDigest, type NativeCache } from "./cache.js"; import type { NativeToolchain } from "./toolchain.js"; @@ -171,9 +171,10 @@ export function buildSanitizedRuntime( directory = quickjs; args = ["-std=c11", "-I", quickjs]; } else if (name === "zlib") { - sources = ZLIB_SOURCES; + const inputs = zlibInputs(toolchain.target.llvmTriple); + sources = inputs.sources; directory = zlib; - args = ["-std=c11", "-I", zlib]; + args = ["-std=c11", ...inputs.defines.map((define) => "-D" + define), "-I", zlib]; } else if (name === "mbedtls") { directory = join(mbedtls, "library"); sources = readdirSync(directory) diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8405-zlib-compressed-bytes.ts.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8405-zlib-compressed-bytes.ts.json new file mode 100644 index 000000000..509b30d34 --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8405-zlib-compressed-bytes.ts.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/8405-zlib-compressed-bytes.ts" + ], + "diags": [] +} diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8406-zlib-inflate-chunks.cjs.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8406-zlib-inflate-chunks.cjs.json new file mode 100644 index 000000000..772d91511 --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8406-zlib-inflate-chunks.cjs.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/8406-zlib-inflate-chunks.cjs" + ], + "diags": [] +} diff --git a/packages/runtime-darwin-arm64/scripts/build.mjs b/packages/runtime-darwin-arm64/scripts/build.mjs index dc6c24a47..95fe91ab3 100644 --- a/packages/runtime-darwin-arm64/scripts/build.mjs +++ b/packages/runtime-darwin-arm64/scripts/build.mjs @@ -16,6 +16,7 @@ import { import { createDeterministicArchive } from "./archive.mjs"; import { installRuntimePack, withBuildLock } from "./build-state.mjs"; import { shareIdenticalArtifacts } from "../../runtime-pack-common/scripts/share-artifacts.mjs"; +import { zlibInputs } from "../../runtime-pack-common/scripts/zlib-inputs.mjs"; const run = promisify(execFile); const packageRoot = dirname(dirname(fileURLToPath(import.meta.url))); @@ -76,19 +77,7 @@ async function build() { const brotli = join(vendorRoot, "brotli", "c"); const QJS_SOURCES = ["dtoa.c", "libregexp.c", "libunicode.c", "quickjs.c"]; const LRE_SOURCES = ["libregexp.c", "libunicode.c"]; - const ZLIB_SOURCES = [ - "adler32.c", - "compress.c", - "crc32.c", - "deflate.c", - "infback.c", - "inffast.c", - "inflate.c", - "inftrees.c", - "trees.c", - "uncompr.c", - "zutil.c", - ]; + const ZLIB_BUILD = zlibInputs(RUNTIME_PACK_MATRIX.target.llvm_triple); // Speed-flavor executable units are emitted through the host LLVM helper // so their object and import bitcode come from one promoted module. The @@ -309,11 +298,12 @@ async function build() { "-I", quickjs, ]), - await archive("zlib", ZLIB_SOURCES, zlib, [ + await archive("zlib", ZLIB_BUILD.sources, zlib, [ "-target", RUNTIME_PACK_MATRIX.target.llvm_triple, "-std=c11", - "-Os", + "-O3", + ...ZLIB_BUILD.defines.map((define) => `-D${define}`), ...codeAlignment, "-I", zlib, @@ -356,6 +346,7 @@ async function build() { ], [join(vendorRoot, "unicode", "LICENSE"), "artifacts/licenses/unicode.txt", "Unicode-3.0"], [join(zlib, "LICENSE"), "artifacts/licenses/zlib.txt", "Zlib"], + [join(zlib, "LICENSE.chromium"), "artifacts/licenses/zlib-chromium.txt", "BSD-3-Clause"], [join(vendorRoot, "brotli", "LICENSE"), "artifacts/licenses/brotli.txt", "MIT"], [join(mbedtls, "LICENSE"), "artifacts/licenses/mbedtls.txt", "Apache-2.0"], ]; diff --git a/packages/runtime-pack-common/scripts/build.mjs b/packages/runtime-pack-common/scripts/build.mjs index ad9441d67..aebf1b017 100644 --- a/packages/runtime-pack-common/scripts/build.mjs +++ b/packages/runtime-pack-common/scripts/build.mjs @@ -17,6 +17,7 @@ import { buildImportBitcode, buildRuntimeUnit, resolveRuntimeUnitHelper } from " import { installRuntimePack, withBuildLock } from "./build-state.mjs"; import { shareIdenticalArtifacts } from "./share-artifacts.mjs"; import { parallelMap } from "./parallel-map.mjs"; +import { zlibInputs } from "./zlib-inputs.mjs"; const run = promisify(execFile); const packageRoot = process.env.SCRIPTC_RUNTIME_PACK_ROOT; @@ -89,19 +90,7 @@ async function build() { const brotli = join(vendorRoot, "brotli", "c"); const qjsSources = ["dtoa.c", "libregexp.c", "libunicode.c", "quickjs.c"]; const lreSources = ["libregexp.c", "libunicode.c"]; - const zlibSources = [ - "adler32.c", - "compress.c", - "crc32.c", - "deflate.c", - "infback.c", - "inffast.c", - "inflate.c", - "inftrees.c", - "trees.c", - "uncompr.c", - "zutil.c", - ]; + const zlibBuild = zlibInputs(config.target.llvm_triple); const sha256 = async (path) => createHash("sha256") .update(await readFile(path)) @@ -400,10 +389,11 @@ async function build() { : []), ...(requestedArchives.has("zlib") ? [ - await archive("zlib", zlibSources, zlib, [ + await archive("zlib", zlibBuild.sources, zlib, [ ...vendorTarget, "-std=c11", - "-Os", + "-O3", + ...zlibBuild.defines.map((define) => `-D${define}`), "-I", zlib, ]), @@ -454,6 +444,7 @@ async function build() { "BSD-3-Clause", ], [join(zlib, "LICENSE"), "artifacts/licenses/zlib.txt", "Zlib"], + [join(zlib, "LICENSE.chromium"), "artifacts/licenses/zlib-chromium.txt", "BSD-3-Clause"], [join(vendorRoot, "brotli", "LICENSE"), "artifacts/licenses/brotli.txt", "MIT"], [join(mbedtls, "LICENSE"), "artifacts/licenses/mbedtls.txt", "Apache-2.0"], ]; diff --git a/packages/runtime-pack-common/scripts/zlib-inputs.mjs b/packages/runtime-pack-common/scripts/zlib-inputs.mjs new file mode 100644 index 000000000..efb433ff8 --- /dev/null +++ b/packages/runtime-pack-common/scripts/zlib-inputs.mjs @@ -0,0 +1,83 @@ +// The translation units and defines of the vendored zlib (packages/runtime/vendor/zlib, +// the copy Node v24.22.0 bundles in deps/zlib), chosen per target the way Node's +// deps/zlib/zlib.gyp chooses them. The SIMD units carry their own target attributes +// and check the CPU at run time, so every unit builds with the same flags. Compressed +// output does not depend on these choices. packages/compiler/src/backend/vendor-inputs.ts +// keeps the same table for cross builds; a unit test checks that the two agree. + +const COMMON_SOURCES = [ + "adler32.c", + "compress.c", + "cpu_features.c", + "crc32.c", + "deflate.c", + "infback.c", + "inffast.c", + "inftrees.c", + "trees.c", + "uncompr.c", + "zutil.c", +]; + +/** + * @param {string} triple an LLVM or Zig target triple, such as + * "x86_64-unknown-linux-gnu", "arm64-apple-ios15.0" or "aarch64-linux-musl". + * @returns {{ sources: string[], defines: string[] }} + */ +export function zlibInputs(triple) { + const [cpu = "", ...rest] = triple.split("-"); + const system = rest.join("-"); + const architecture = + cpu === "x86_64" || cpu === "amd64" + ? "x64" + : cpu === "aarch64" || cpu === "arm64" + ? "arm64" + : cpu; + const ios = system.includes("ios"); + const windows = + system.includes("windows") || system.includes("win32") || system.includes("mingw"); + // Android reads the CPU features through getauxval, as Linux does: Node's + // ARMV8_OS_ANDROID path needs the NDK's cpu-features library. + const linux = system.includes("linux") || system.includes("android"); + const mac = !ios && (system.includes("darwin") || system.includes("macos")); + const sources = [...COMMON_SOURCES]; + const defines = windows ? [] : ["HAVE_HIDDEN"]; + if (architecture === "x64" && !ios) { + sources.push( + "adler32_simd.c", + "contrib/optimizations/inffast_chunk.c", + "contrib/optimizations/inflate.c", + ); + defines.push( + "ADLER32_SIMD_SSSE3", + windows ? "X86_WINDOWS" : "X86_NOT_WINDOWS", + "INFLATE_CHUNK_SIMD_SSE2", + "INFLATE_CHUNK_READ_64LE", + "DEFLATE_SLIDE_HASH_SSE2", + ); + } else if (architecture === "arm64") { + sources.push("contrib/optimizations/inffast_chunk.c", "contrib/optimizations/inflate.c"); + defines.push( + "INFLATE_CHUNK_SIMD_NEON", + "INFLATE_CHUNK_READ_64LE", + "__ARM_NEON__", + "DEFLATE_SLIDE_HASH_NEON", + ); + if (windows) { + defines.push("ARMV8_OS_WINDOWS"); + } else if (linux || mac) { + // Node builds the Adler-32 and CRC-32 units for every arm64 target but + // iOS and Windows. + sources.push("adler32_simd.c", "crc32_simd.c"); + defines.push( + "ADLER32_SIMD_NEON", + "CRC32_ARMV8_CRC32", + linux ? "ARMV8_OS_LINUX" : "ARMV8_OS_MACOS", + ); + } + } else { + sources.push("inflate.c"); + defines.push("CPU_NO_SIMD"); + } + return { sources, defines }; +} diff --git a/packages/runtime/src/scr_zlib.c b/packages/runtime/src/scr_zlib.c index 8756c3d17..bc1254f29 100644 --- a/packages/runtime/src/scr_zlib.c +++ b/packages/runtime/src/scr_zlib.c @@ -1,13 +1,10 @@ /* node:zlib, the lowered slice: the one-shot zlib/raw-DEFLATE/gzip codecs * over u8 bytes with Node's DEFAULT options. Compiled ONLY when the program * uses zlib (native-toolchain.ts gates it exactly like scr_regex.c/libregexp), - * so zlib-free binaries keep their historical link line. Host builds link - * the system -lz; cross targets link the vendored zlib built per target - * (ensureZlibObjects in native-toolchain.ts). - * - * Compressed OUTPUT bytes are zlib-version-dependent — the differential - * corpus tests round-trips and fixed-blob inflation, never raw deflate - * output. deflate of valid input cannot fail (OOM aborts); inflate of + * so zlib-free binaries keep their historical link line. Every build links + * the vendored zlib (packages/runtime/vendor/zlib), the copy Node bundles, + * so compressed bytes match Node's for the same parameters. deflate of valid + * input cannot fail (OOM aborts); inflate of * corrupt input THROWS Node's catchable Error (zlib's own msg text: * "incorrect header check", ...). */ #include "scr_runtime.h" diff --git a/packages/runtime/vendor/README.md b/packages/runtime/vendor/README.md index 53238410e..cfb0d196f 100644 --- a/packages/runtime/vendor/README.md +++ b/packages/runtime/vendor/README.md @@ -38,13 +38,15 @@ The native runtime pack build produces `libscriptc-quickjs.a` for the compiler b ## zlib/ -- Project: https://github.com/madler/zlib -- Version: 1.3.1 (release tarball zlib-1.3.1.tar.gz, sha256 9a93b2b7dfdac77ceba5a558a580e74667dd6fede4585b91eefb60f03b72df23) +- Project: https://chromium.googlesource.com/chromium/src/third_party/zlib (Chromium's zlib, a fork of https://github.com/madler/zlib) +- Version: 1.3.2.1-motley-285e94b, the copy Node v24.22.0 bundles in `deps/zlib` (`process.versions.zlib`) - License: zlib (see zlib/LICENSE) -The CROSS-target arm of node:zlib (see packages/runtime/src/scr_zlib.c): host builds keep the historical system `-lz` link (macOS ships libz), but zig's cross sysroots have no libz, so SCRIPTC_TARGET builds compile this vendored copy per target instead. Only the flat `*.c`/`*.h` at the distribution root are vendored (LICENSE beside them) — contrib, tests, build machinery, and docs are not. No vendored file is modified; the gz* file-I/O TUs are vendored for faithfulness but never compiled (nothing references the gzFile API — see ZLIB_SOURCES in packages/compiler/src/backend/vendor-archives.ts). To update, re-fetch the release tarball, copy the same flat set, and bump `ZLIB_VERSION` in vendor-archives.ts. +The codec behind node:zlib's gzip, deflate and inflate functions and streams (see packages/runtime/src/scr_zlib.c) and the native fetch's gzip decoder. The flat `*.c`/`*.h` files at the root of Node's `deps/zlib`, `contrib/optimizations/`, `LICENSE` and `README.chromium` are vendored; `contrib/minizip`, the other contrib directories, tests, patches, Chromium's build files and docs are not. No vendored file is modified, and the files match Node's copy. The gz* file-I/O units are vendored but never compiled (nothing references the gzFile API). -The objects build lazily on the first zlib-using cross compile into the per-user build cache's `vendor/zlib----/` directory — one flavor per driver/target and compiler environment/identity (the lre-objects pattern). Zlib-free binaries never compile any of this; compressed OUTPUT bytes are zlib-version-dependent, which is why the corpus only compares round-trips and fixed-blob inflation. +Each target compiles the units and defines Node's `deps/zlib/zlib.gyp` selects for it: the SSSE3 Adler-32 and SSE2 inflate and slide-hash code on x86-64, the NEON code and the ARMv8 CRC-32 code on arm64 Linux, Android and macOS, the NEON inflate and slide-hash code on iOS and Windows arm64, and the portable code (`CPU_NO_SIMD`) elsewhere. The table is `zlibInputs` in packages/runtime-pack-common/scripts/zlib-inputs.mjs (runtime packs) and in packages/compiler/src/backend/vendor-inputs.ts (Zig cross builds and the sanitized runtime), and a unit test keeps the two identical. Android reads CPU features through `getauxval` as Linux does, where Node's Android build uses the NDK's cpu-features library. The SIMD units check the CPU at run time and give the same output as the portable code, so compressed bytes match Node's for the same parameters on every target. To update, copy the same files from the `deps/zlib` of the Node version scriptc follows and bump `ZLIB_VERSION` in vendor-inputs.ts. + +Runtime packs archive zlib at `-O3`, as Node builds it. Zig cross builds compile the objects lazily on the first zlib-using cross compile into the per-user build cache's `vendor/zlib----/` directory, one flavor per driver/target and compiler environment/identity (the lre-objects pattern). Zlib-free binaries compile and link none of it. ## brotli/ diff --git a/packages/runtime/vendor/zlib/LICENSE b/packages/runtime/vendor/zlib/LICENSE index ab8ee6f71..b7a69d058 100644 --- a/packages/runtime/vendor/zlib/LICENSE +++ b/packages/runtime/vendor/zlib/LICENSE @@ -1,6 +1,6 @@ Copyright notice: - (C) 1995-2022 Jean-loup Gailly and Mark Adler + (C) 1995-2026 Jean-loup Gailly and Mark Adler This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/packages/runtime/vendor/zlib/LICENSE.chromium b/packages/runtime/vendor/zlib/LICENSE.chromium new file mode 100644 index 000000000..2249a2865 --- /dev/null +++ b/packages/runtime/vendor/zlib/LICENSE.chromium @@ -0,0 +1,27 @@ +// Copyright 2015 The Chromium Authors +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google LLC nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/packages/runtime/vendor/zlib/README.chromium b/packages/runtime/vendor/zlib/README.chromium new file mode 100644 index 000000000..232ef66ae --- /dev/null +++ b/packages/runtime/vendor/zlib/README.chromium @@ -0,0 +1,38 @@ +Name: zlib +Short Name: zlib +URL: https://github.com/madler/zlib +Version: 1.3.2 +Revision: 09a1572aa624e5ddb6c075dc013880de70b1b9b9 +Update Mechanism: Manual (https://crbug.com/422348588) +CPEPrefix: cpe:/a:zlib:zlib:1.3.2 +Security Critical: yes +Shipped: yes +License: Zlib +License File: LICENSE +License Android Compatible: yes + +Description: +"A massively spiffy yet delicately unobtrusive compression library." + +zlib is a free, general-purpose, legally unencumbered lossless data-compression +library. zlib implements the "deflate" compression algorithm described by RFC +1951, which combines the LZ77 (Lempel-Ziv) algorithm with Huffman coding. zlib +also implements the zlib (RFC 1950) and gzip (RFC 1952) wrapper formats. + +Local Modifications: + - Only source code from the http://zlib.net distribution used to build the zlib + and minizip libraries are present. Many other files have been omitted. Only *.c + and *.h files from the upstream root directory, contrib/minizip and + examples/zpipe.c were imported. + - The files named '*simd*' are original x86/Arm/RISC-V specific optimizations. + - The contents of the google directory are original Chromium-specific + additions. + - The contents of the 'contrib' of directory are either Chromium-specific + additions or heavily patched zlib files (e.g. inffast_chunk*). + - Added chromeconf.h + - Plus the changes in 'patches' folder. + - Code in contrib/ other than contrib/minizip was added to match zlib's + contributor layout. + - In sync with 1.3.2 official release + - ZIP reader modified to allow for progress callbacks during extraction. + - ZIP reader modified to add detection of AES encrypted content. diff --git a/packages/runtime/vendor/zlib/adler32.c b/packages/runtime/vendor/zlib/adler32.c index 04b81d29b..de78b4e56 100644 --- a/packages/runtime/vendor/zlib/adler32.c +++ b/packages/runtime/vendor/zlib/adler32.c @@ -57,10 +57,27 @@ # define MOD63(a) a %= BASE #endif +#include "cpu_features.h" +#if defined(ADLER32_SIMD_SSSE3) || defined(ADLER32_SIMD_NEON) || defined(ADLER32_SIMD_RVV) +#include "adler32_simd.h" +#endif + /* ========================================================================= */ uLong ZEXPORT adler32_z(uLong adler, const Bytef *buf, z_size_t len) { unsigned long sum2; unsigned n; + /* TODO(cavalcantii): verify if this lengths are optimal for current CPUs. */ +#if defined(ADLER32_SIMD_SSSE3) || defined(ADLER32_SIMD_NEON) \ + || defined(ADLER32_SIMD_RVV) +#if defined(ADLER32_SIMD_SSSE3) + if (buf != Z_NULL && len >= 64 && x86_cpu_enable_ssse3) +#elif defined(ADLER32_SIMD_NEON) + if (buf != Z_NULL && len >= 64) +#elif defined(ADLER32_SIMD_RVV) + if (buf != Z_NULL && len >= 32 && riscv_cpu_enable_rvv) +#endif + return adler32_simd_(adler, buf, len); +#endif /* split Adler-32 into component sums */ sum2 = (adler >> 16) & 0xffff; @@ -77,9 +94,25 @@ uLong ZEXPORT adler32_z(uLong adler, const Bytef *buf, z_size_t len) { return adler | (sum2 << 16); } +#if defined(ADLER32_SIMD_SSSE3) || defined(ADLER32_SIMD_NEON) \ + || defined(RISCV_RVV) + /* + * Use SIMD to compute the adler32. Since this function can be + * freely used, check CPU features here. zlib convention is to + * call adler32(0, NULL, 0), before making calls to adler32(). + * So this is a good early (and infrequent) place to cache CPU + * features for those later, more interesting adler32() calls. + */ + if (buf == Z_NULL) { + if (!len) /* Assume user is calling adler32(0, NULL, 0); */ + cpu_check_features(); + return 1L; + } +#else /* initial Adler-32 value (deferred check for len == 1 speed) */ if (buf == Z_NULL) return 1L; +#endif /* in case short lengths are provided, keep it somewhat fast */ if (len < 16) { diff --git a/packages/runtime/vendor/zlib/adler32_simd.c b/packages/runtime/vendor/zlib/adler32_simd.c new file mode 100644 index 000000000..ce4ce7c57 --- /dev/null +++ b/packages/runtime/vendor/zlib/adler32_simd.c @@ -0,0 +1,459 @@ +/* adler32_simd.c + * + * Copyright 2017 The Chromium Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the Chromium source repository LICENSE file. + * + * Per http://en.wikipedia.org/wiki/Adler-32 the adler32 A value (aka s1) is + * the sum of N input data bytes D1 ... DN, + * + * A = A0 + D1 + D2 + ... + DN + * + * where A0 is the initial value. + * + * SSE2 _mm_sad_epu8() can be used for byte sums (see http://bit.ly/2wpUOeD, + * for example) and accumulating the byte sums can use SSE shuffle-adds (see + * the "Integer" section of http://bit.ly/2erPT8t for details). Arm NEON has + * similar instructions. + * + * The adler32 B value (aka s2) sums the A values from each step: + * + * B0 + (A0 + D1) + (A0 + D1 + D2) + ... + (A0 + D1 + D2 + ... + DN) or + * + * B0 + N.A0 + N.D1 + (N-1).D2 + (N-2).D3 + ... + (N-(N-1)).DN + * + * B0 being the initial value. For 32 bytes (ideal for garden-variety SIMD): + * + * B = B0 + 32.A0 + [D1 D2 D3 ... D32] x [32 31 30 ... 1]. + * + * Adjacent blocks of 32 input bytes can be iterated with the expressions to + * compute the adler32 s1 s2 of M >> 32 input bytes [1]. + * + * As M grows, the s1 s2 sums grow. If left unchecked, they would eventually + * overflow the precision of their integer representation (bad). However, s1 + * and s2 also need to be computed modulo the adler BASE value (reduced). If + * at most NMAX bytes are processed before a reduce, s1 s2 _cannot_ overflow + * a uint32_t type (the NMAX constraint) [2]. + * + * [1] the iterative equations for s2 contain constant factors; these can be + * hoisted from the n-blocks do loop of the SIMD code. + * + * [2] zlib adler32_z() uses this fact to implement NMAX-block-based updates + * of the adler s1 s2 of uint32_t type (see adler32.c). + */ + +#include "adler32_simd.h" + +/* Definitions from adler32.c: largest prime smaller than 65536 */ +#define BASE 65521U +/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */ +#define NMAX 5552 + +#if defined(ADLER32_SIMD_SSSE3) + +#include + +#if defined(__GNUC__) || defined(__clang__) +__attribute__((__target__("ssse3"))) +#endif +uint32_t ZLIB_INTERNAL adler32_simd_( /* SSSE3 */ + uint32_t adler, + const unsigned char *buf, + z_size_t len) +{ + /* + * Split Adler-32 into component sums. + */ + uint32_t s1 = adler & 0xffff; + uint32_t s2 = adler >> 16; + + /* + * Process the data in blocks. + */ + const unsigned BLOCK_SIZE = 1 << 5; + + z_size_t blocks = len / BLOCK_SIZE; + len -= blocks * BLOCK_SIZE; + + while (blocks) + { + unsigned n = NMAX / BLOCK_SIZE; /* The NMAX constraint. */ + if (n > blocks) + n = (unsigned) blocks; + blocks -= n; + + const __m128i tap1 = + _mm_setr_epi8(32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17); + const __m128i tap2 = + _mm_setr_epi8(16,15,14,13,12,11,10, 9, 8, 7, 6, 5, 4, 3, 2, 1); + const __m128i zero = + _mm_setr_epi8( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + const __m128i ones = + _mm_set_epi16( 1, 1, 1, 1, 1, 1, 1, 1); + + /* + * Process n blocks of data. At most NMAX data bytes can be + * processed before s2 must be reduced modulo BASE. + */ + __m128i v_ps = _mm_set_epi32(0, 0, 0, s1 * n); + __m128i v_s2 = _mm_set_epi32(0, 0, 0, s2); + __m128i v_s1 = _mm_set_epi32(0, 0, 0, 0); + + do { + /* + * Load 32 input bytes. + */ + const __m128i bytes1 = _mm_loadu_si128((__m128i*)(buf)); + const __m128i bytes2 = _mm_loadu_si128((__m128i*)(buf + 16)); + + /* + * Add previous block byte sum to v_ps. + */ + v_ps = _mm_add_epi32(v_ps, v_s1); + + /* + * Horizontally add the bytes for s1, multiply-adds the + * bytes by [ 32, 31, 30, ... ] for s2. + */ + v_s1 = _mm_add_epi32(v_s1, _mm_sad_epu8(bytes1, zero)); + const __m128i mad1 = _mm_maddubs_epi16(bytes1, tap1); + v_s2 = _mm_add_epi32(v_s2, _mm_madd_epi16(mad1, ones)); + + v_s1 = _mm_add_epi32(v_s1, _mm_sad_epu8(bytes2, zero)); + const __m128i mad2 = _mm_maddubs_epi16(bytes2, tap2); + v_s2 = _mm_add_epi32(v_s2, _mm_madd_epi16(mad2, ones)); + + buf += BLOCK_SIZE; + + } while (--n); + + v_s2 = _mm_add_epi32(v_s2, _mm_slli_epi32(v_ps, 5)); + + /* + * Sum epi32 ints v_s1(s2) and accumulate in s1(s2). + */ + +#define S23O1 _MM_SHUFFLE(2,3,0,1) /* A B C D -> B A D C */ +#define S1O32 _MM_SHUFFLE(1,0,3,2) /* A B C D -> C D A B */ + + v_s1 = _mm_add_epi32(v_s1, _mm_shuffle_epi32(v_s1, S23O1)); + v_s1 = _mm_add_epi32(v_s1, _mm_shuffle_epi32(v_s1, S1O32)); + + s1 += _mm_cvtsi128_si32(v_s1); + + v_s2 = _mm_add_epi32(v_s2, _mm_shuffle_epi32(v_s2, S23O1)); + v_s2 = _mm_add_epi32(v_s2, _mm_shuffle_epi32(v_s2, S1O32)); + + s2 = _mm_cvtsi128_si32(v_s2); + +#undef S23O1 +#undef S1O32 + + /* + * Reduce. + */ + s1 %= BASE; + s2 %= BASE; + } + + /* + * Handle leftover data. + */ + if (len) { + if (len >= 16) { + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + + len -= 16; + } + + while (len--) { + s2 += (s1 += *buf++); + } + + if (s1 >= BASE) + s1 -= BASE; + s2 %= BASE; + } + + /* + * Return the recombined sums. + */ + return s1 | (s2 << 16); +} + +#elif defined(ADLER32_SIMD_NEON) + +#include + +uint32_t ZLIB_INTERNAL adler32_simd_( /* NEON */ + uint32_t adler, + const unsigned char *buf, + z_size_t len) +{ + /* + * Split Adler-32 into component sums. + */ + uint32_t s1 = adler & 0xffff; + uint32_t s2 = adler >> 16; + + /* + * Serially compute s1 & s2, until the data is 16-byte aligned. + */ + if ((uintptr_t)buf & 15) { + while ((uintptr_t)buf & 15) { + s2 += (s1 += *buf++); + --len; + } + + if (s1 >= BASE) + s1 -= BASE; + s2 %= BASE; + } + + /* + * Process the data in blocks. + */ + const unsigned BLOCK_SIZE = 1 << 5; + + z_size_t blocks = len / BLOCK_SIZE; + len -= blocks * BLOCK_SIZE; + + while (blocks) + { + unsigned n = NMAX / BLOCK_SIZE; /* The NMAX constraint. */ + if (n > blocks) + n = (unsigned) blocks; + blocks -= n; + + /* + * Process n blocks of data. At most NMAX data bytes can be + * processed before s2 must be reduced modulo BASE. + */ + uint32x4_t v_s2 = (uint32x4_t) { 0, 0, 0, s1 * n }; + uint32x4_t v_s1 = (uint32x4_t) { 0, 0, 0, 0 }; + + uint16x8_t v_column_sum_1 = vdupq_n_u16(0); + uint16x8_t v_column_sum_2 = vdupq_n_u16(0); + uint16x8_t v_column_sum_3 = vdupq_n_u16(0); + uint16x8_t v_column_sum_4 = vdupq_n_u16(0); + + do { + /* + * Load 32 input bytes. + */ + const uint8x16_t bytes1 = vld1q_u8((uint8_t*)(buf)); + const uint8x16_t bytes2 = vld1q_u8((uint8_t*)(buf + 16)); + + /* + * Add previous block byte sum to v_s2. + */ + v_s2 = vaddq_u32(v_s2, v_s1); + + /* + * Horizontally add the bytes for s1. + */ + v_s1 = vpadalq_u16(v_s1, vpadalq_u8(vpaddlq_u8(bytes1), bytes2)); + + /* + * Vertically add the bytes for s2. + */ + v_column_sum_1 = vaddw_u8(v_column_sum_1, vget_low_u8 (bytes1)); + v_column_sum_2 = vaddw_u8(v_column_sum_2, vget_high_u8(bytes1)); + v_column_sum_3 = vaddw_u8(v_column_sum_3, vget_low_u8 (bytes2)); + v_column_sum_4 = vaddw_u8(v_column_sum_4, vget_high_u8(bytes2)); + + buf += BLOCK_SIZE; + + } while (--n); + + v_s2 = vshlq_n_u32(v_s2, 5); + + /* + * Multiply-add bytes by [ 32, 31, 30, ... ] for s2. + */ + v_s2 = vmlal_u16(v_s2, vget_low_u16 (v_column_sum_1), + (uint16x4_t) { 32, 31, 30, 29 }); + v_s2 = vmlal_u16(v_s2, vget_high_u16(v_column_sum_1), + (uint16x4_t) { 28, 27, 26, 25 }); + v_s2 = vmlal_u16(v_s2, vget_low_u16 (v_column_sum_2), + (uint16x4_t) { 24, 23, 22, 21 }); + v_s2 = vmlal_u16(v_s2, vget_high_u16(v_column_sum_2), + (uint16x4_t) { 20, 19, 18, 17 }); + v_s2 = vmlal_u16(v_s2, vget_low_u16 (v_column_sum_3), + (uint16x4_t) { 16, 15, 14, 13 }); + v_s2 = vmlal_u16(v_s2, vget_high_u16(v_column_sum_3), + (uint16x4_t) { 12, 11, 10, 9 }); + v_s2 = vmlal_u16(v_s2, vget_low_u16 (v_column_sum_4), + (uint16x4_t) { 8, 7, 6, 5 }); + v_s2 = vmlal_u16(v_s2, vget_high_u16(v_column_sum_4), + (uint16x4_t) { 4, 3, 2, 1 }); + + /* + * Sum epi32 ints v_s1(s2) and accumulate in s1(s2). + */ + uint32x2_t sum1 = vpadd_u32(vget_low_u32(v_s1), vget_high_u32(v_s1)); + uint32x2_t sum2 = vpadd_u32(vget_low_u32(v_s2), vget_high_u32(v_s2)); + uint32x2_t s1s2 = vpadd_u32(sum1, sum2); + + s1 += vget_lane_u32(s1s2, 0); + s2 += vget_lane_u32(s1s2, 1); + + /* + * Reduce. + */ + s1 %= BASE; + s2 %= BASE; + } + + /* + * Handle leftover data. + */ + if (len) { + if (len >= 16) { + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + s2 += (s1 += *buf++); + + len -= 16; + } + + while (len--) { + s2 += (s1 += *buf++); + } + + if (s1 >= BASE) + s1 -= BASE; + s2 %= BASE; + } + + /* + * Return the recombined sums. + */ + return s1 | (s2 << 16); +} + +#elif defined(ADLER32_SIMD_RVV) +#include + +/* + * Patch by Simon Hosie, from: + * https://github.com/cloudflare/zlib/pull/55 + */ + +uint32_t ZLIB_INTERNAL adler32_simd_( /* RVV */ + uint32_t adler, + const unsigned char *buf, + unsigned long len) +{ + size_t vl = __riscv_vsetvlmax_e8m2(); + const vuint16m4_t zero16 = __riscv_vmv_v_x_u16m4(0, vl); + vuint16m4_t a_sum = zero16; + vuint32m8_t b_sum = __riscv_vmv_v_x_u32m8(0, vl); + + /* Deal with the part which is not a multiple of vl first; because it's + * easier to zero-stuff the beginning of the checksum than it is to tweak the + * multipliers and sums for odd lengths afterwards. + */ + size_t head = len & (vl - 1); + if (head > 0) { + vuint8m2_t zero8 = __riscv_vmv_v_x_u8m2(0, vl); + vuint8m2_t in = __riscv_vle8_v_u8m2(buf, vl); + in = __riscv_vslideup(zero8, in, vl - head, vl); + vuint16m4_t in16 = __riscv_vwcvtu_x(in, vl); + a_sum = in16; + buf += head; + } + + /* We have a 32-bit accumulator, and in each iteration we add 22-times a + * 16-bit value, plus another 16-bit value. We periodically subtract up to + * 65535 times BASE to avoid overflow. b_overflow estimates how often we + * need to do this subtraction. + */ + const int b_overflow = BASE / 23; + int fixup = b_overflow; + ssize_t iters = (len - head) / vl; + while (iters > 0) { + const vuint16m4_t a_overflow = __riscv_vrsub(a_sum, BASE, vl); + int batch = iters < 22 ? iters : 22; + iters -= batch; + b_sum = __riscv_vwmaccu(b_sum, batch, a_sum, vl); + vuint16m4_t a_batch = zero16, b_batch = zero16; + + /* Do a short batch, where neither a_sum nor b_sum can overflow a 16-bit + * register. Then add them back into the main accumulators. + */ + while (batch-- > 0) { + vuint8m2_t in8 = __riscv_vle8_v_u8m2(buf, vl); + buf += vl; + b_batch = __riscv_vadd(b_batch, a_batch, vl); + a_batch = __riscv_vwaddu_wv(a_batch, in8, vl); + } + vbool4_t ov = __riscv_vmsgeu(a_batch, a_overflow, vl); + a_sum = __riscv_vadd(a_sum, a_batch, vl); + a_sum = __riscv_vadd_mu(ov, a_sum, a_sum, 65536 - BASE, vl); + b_sum = __riscv_vwaddu_wv(b_sum, b_batch, vl); + if (--fixup <= 0) { + b_sum = __riscv_vnmsac(b_sum, BASE, __riscv_vsrl(b_sum, 16, vl), vl); + fixup = b_overflow; + } + } + /* Adjust per-lane sums to have appropriate offsets from the end of the + * buffer. + */ + const vuint16m4_t off = __riscv_vrsub(__riscv_vid_v_u16m4(vl), vl, vl); + vuint16m4_t bsum16 = __riscv_vncvt_x(__riscv_vremu(b_sum, BASE, vl), vl); + b_sum = __riscv_vadd(__riscv_vwmulu(a_sum, off, vl), + __riscv_vwmulu(bsum16, vl, vl), vl); + bsum16 = __riscv_vncvt_x(__riscv_vremu(b_sum, BASE, vl), vl); + + /* And finally, do a horizontal sum across the registers for the final + * result. + */ + uint32_t a = adler & 0xffff; + uint32_t b = ((adler >> 16) + a * (len % BASE)) % BASE; + vuint32m1_t sca = __riscv_vmv_v_x_u32m1(a, 1); + vuint32m1_t scb = __riscv_vmv_v_x_u32m1(b, 1); + sca = __riscv_vwredsumu(a_sum, sca, vl); + scb = __riscv_vwredsumu(bsum16, scb, vl); + a = __riscv_vmv_x(sca); + b = __riscv_vmv_x(scb); + a %= BASE; + b %= BASE; + return (b << 16) | a; +} + +#endif /* ADLER32_SIMD_SSSE3 */ diff --git a/packages/runtime/vendor/zlib/adler32_simd.h b/packages/runtime/vendor/zlib/adler32_simd.h new file mode 100644 index 000000000..0b2361a51 --- /dev/null +++ b/packages/runtime/vendor/zlib/adler32_simd.h @@ -0,0 +1,16 @@ +/* adler32_simd.h + * + * Copyright 2017 The Chromium Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the Chromium source repository LICENSE file. + */ + +#include + +#include "zconf.h" +#include "zutil.h" + +uint32_t ZLIB_INTERNAL adler32_simd_( + uint32_t adler, + const unsigned char *buf, + z_size_t len); diff --git a/packages/runtime/vendor/zlib/chromeconf.h b/packages/runtime/vendor/zlib/chromeconf.h new file mode 100644 index 000000000..77f0e29e0 --- /dev/null +++ b/packages/runtime/vendor/zlib/chromeconf.h @@ -0,0 +1,211 @@ +/* Copyright 2017 The Chromium Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. */ + +#ifndef THIRD_PARTY_ZLIB_CHROMECONF_H_ +#define THIRD_PARTY_ZLIB_CHROMECONF_H_ + +#if defined(COMPONENT_BUILD) +#if defined(WIN32) +#if defined(ZLIB_IMPLEMENTATION) +#define ZEXTERN __declspec(dllexport) +#else +#define ZEXTERN __declspec(dllimport) +#endif +#elif defined(ZLIB_IMPLEMENTATION) +#define ZEXTERN __attribute__((visibility("default"))) +#endif +#endif + +/* Rename all zlib names with a Cr_z_ prefix. This is based on the Z_PREFIX + * option from zconf.h, but with a custom prefix. Where zconf.h would rename + * both a macro and its underscore-suffixed internal implementation (such as + * deflateInit2 and deflateInit2_), only the implementation is renamed here. + * The Byte type is also omitted. + * + * To generate this list, run + * sed -rn -e 's/^# *define +([^ ]+) +(z_[^ ]+)$/#define \1 Cr_\2/p' zconf.h + * (use -E instead of -r on macOS). + * + * gzread is also addressed by modifications in gzread.c and zlib.h. */ + +#define Z_CR_PREFIX_SET + +#define _dist_code Cr_z__dist_code +#define _length_code Cr_z__length_code +#define _tr_align Cr_z__tr_align +#define _tr_flush_bits Cr_z__tr_flush_bits +#define _tr_flush_block Cr_z__tr_flush_block +#define _tr_init Cr_z__tr_init +#define _tr_stored_block Cr_z__tr_stored_block +#define _tr_tally Cr_z__tr_tally +#define adler32 Cr_z_adler32 +#define adler32_combine Cr_z_adler32_combine +#define adler32_combine64 Cr_z_adler32_combine64 +#define adler32_z Cr_z_adler32_z +#define compress Cr_z_compress +#define compress2 Cr_z_compress2 +#define compress_z Cr_z_compress_z +#define compress2_z Cr_z_compress2_z +#define compressBound Cr_z_compressBound +#define compressBound_z Cr_z_compressBound_z +#define crc32 Cr_z_crc32 +#define crc32_combine Cr_z_crc32_combine +#define crc32_combine64 Cr_z_crc32_combine64 +#define crc32_combine_gen Cr_z_crc32_combine_gen +#define crc32_combine_gen64 Cr_z_crc32_combine_gen64 +#define crc32_combine_op Cr_z_crc32_combine_op +#define crc32_z Cr_z_crc32_z +#define deflate Cr_z_deflate +#define deflateBound Cr_z_deflateBound +#define deflateBound_z Cr_z_deflateBound_z +#define deflateCopy Cr_z_deflateCopy +#define deflateEnd Cr_z_deflateEnd +#define deflateGetDictionary Cr_z_deflateGetDictionary +/* #undef deflateInit */ +/* #undef deflateInit2 */ +#define deflateInit2_ Cr_z_deflateInit2_ +#define deflateInit_ Cr_z_deflateInit_ +#define deflateParams Cr_z_deflateParams +#define deflatePending Cr_z_deflatePending +#define deflatePrime Cr_z_deflatePrime +#define deflateReset Cr_z_deflateReset +#define deflateResetKeep Cr_z_deflateResetKeep +#define deflateSetDictionary Cr_z_deflateSetDictionary +#define deflateSetHeader Cr_z_deflateSetHeader +#define deflateTune Cr_z_deflateTune +#define deflateUsed Cr_z_deflateUsed +#define deflate_copyright Cr_z_deflate_copyright +#define get_crc_table Cr_z_get_crc_table +#define gz_error Cr_z_gz_error +#define gz_intmax Cr_z_gz_intmax +#define gz_strwinerror Cr_z_gz_strwinerror +#define gzbuffer Cr_z_gzbuffer +#define gzclearerr Cr_z_gzclearerr +#define gzclose Cr_z_gzclose +#define gzclose_r Cr_z_gzclose_r +#define gzclose_w Cr_z_gzclose_w +#define gzdirect Cr_z_gzdirect +#define gzdopen Cr_z_gzdopen +#define gzeof Cr_z_gzeof +#define gzerror Cr_z_gzerror +#define gzflush Cr_z_gzflush +#define gzfread Cr_z_gzfread +#define gzfwrite Cr_z_gzfwrite +#define gzgetc Cr_z_gzgetc +#define gzgetc_ Cr_z_gzgetc_ +#define gzgets Cr_z_gzgets +#define gzoffset Cr_z_gzoffset +#define gzoffset64 Cr_z_gzoffset64 +#define gzopen Cr_z_gzopen +#define gzopen64 Cr_z_gzopen64 +#define gzopen_w Cr_z_gzopen_w +#define gzprintf Cr_z_gzprintf +#define gzputc Cr_z_gzputc +#define gzputs Cr_z_gzputs +#define gzread Cr_z_gzread +#define gzrewind Cr_z_gzrewind +#define gzseek Cr_z_gzseek +#define gzseek64 Cr_z_gzseek64 +#define gzsetparams Cr_z_gzsetparams +#define gztell Cr_z_gztell +#define gztell64 Cr_z_gztell64 +#define gzungetc Cr_z_gzungetc +#define gzvprintf Cr_z_gzvprintf +#define gzwrite Cr_z_gzwrite +#define inflate Cr_z_inflate +#define inflateBack Cr_z_inflateBack +#define inflateBackEnd Cr_z_inflateBackEnd +/* #undef inflateBackInit */ +#define inflateBackInit_ Cr_z_inflateBackInit_ +#define inflateCodesUsed Cr_z_inflateCodesUsed +#define inflateCopy Cr_z_inflateCopy +#define inflateEnd Cr_z_inflateEnd +#define inflateGetDictionary Cr_z_inflateGetDictionary +#define inflateGetHeader Cr_z_inflateGetHeader +/* #undef inflateInit */ +/* #undef inflateInit2 */ +#define inflateInit2_ Cr_z_inflateInit2_ +#define inflateInit_ Cr_z_inflateInit_ +#define inflateMark Cr_z_inflateMark +#define inflatePrime Cr_z_inflatePrime +#define inflateReset Cr_z_inflateReset +#define inflateReset2 Cr_z_inflateReset2 +#define inflateResetKeep Cr_z_inflateResetKeep +#define inflateSetDictionary Cr_z_inflateSetDictionary +#define inflateSync Cr_z_inflateSync +#define inflateSyncPoint Cr_z_inflateSyncPoint +#define inflateUndermine Cr_z_inflateUndermine +#define inflateValidate Cr_z_inflateValidate +#define inflate_copyright Cr_z_inflate_copyright +#define inflate_fast Cr_z_inflate_fast +#define inflate_table Cr_z_inflate_table +#define inflate_fixed Cr_z_inflate_fixed +#define uncompress Cr_z_uncompress +#define uncompress2 Cr_z_uncompress2 +#define uncompress_z Cr_z_uncompress_z +#define uncompress2_z Cr_z_uncompress2_z +#define zError Cr_z_zError +#define zcalloc Cr_z_zcalloc +#define zcfree Cr_z_zcfree +#define zlibCompileFlags Cr_z_zlibCompileFlags +#define zlibVersion Cr_z_zlibVersion +/* #undef Byte */ +#define Bytef Cr_z_Bytef +#define alloc_func Cr_z_alloc_func +#define charf Cr_z_charf +#define free_func Cr_z_free_func +#define gzFile Cr_z_gzFile +#define gz_header Cr_z_gz_header +#define gz_headerp Cr_z_gz_headerp +#define in_func Cr_z_in_func +#define intf Cr_z_intf +#define out_func Cr_z_out_func +#define uInt Cr_z_uInt +#define uIntf Cr_z_uIntf +#define uLong Cr_z_uLong +#define uLongf Cr_z_uLongf +#define voidp Cr_z_voidp +#define voidpc Cr_z_voidpc +#define voidpf Cr_z_voidpf +#define gz_header_s Cr_z_gz_header_s +/* #undef internal_state */ +/* #undef z_off64_t */ + +/* An exported symbol that isn't handled by Z_PREFIX in zconf.h */ +#define z_errmsg Cr_z_z_errmsg + +/* Symbols added in simd.patch */ +#define copy_with_crc Cr_z_copy_with_crc +#define crc_finalize Cr_z_crc_finalize +#define crc_fold_512to32 Cr_z_crc_fold_512to32 +#define crc_fold_copy Cr_z_crc_fold_copy +#define crc_fold_init Cr_z_crc_fold_init +#define crc_reset Cr_z_crc_reset +#define fill_window_sse Cr_z_fill_window_sse +#define deflate_read_buf Cr_z_deflate_read_buf +#define x86_check_features Cr_z_x86_check_features +#define x86_cpu_enable_simd Cr_z_x86_cpu_enable_simd + +/* Symbols added by adler_simd.c */ +#define adler32_simd_ Cr_z_adler32_simd_ +#define x86_cpu_enable_ssse3 Cr_z_x86_cpu_enable_ssse3 + +/* Symbols added by contrib/optimizations/inffast_chunk */ +#define inflate_fast_chunk_ Cr_z_inflate_fast_chunk_ + +/* Symbols added by crc32_simd.c */ +#define crc32_sse42_simd_ Cr_z_crc32_sse42_simd_ + +/* Symbols added by armv8_crc32 */ +#define arm_cpu_enable_crc32 Cr_z_arm_cpu_enable_crc32 +#define arm_cpu_enable_pmull Cr_z_arm_cpu_enable_pmull +#define arm_check_features Cr_z_arm_check_features +#define armv8_crc32_little Cr_z_armv8_crc32_little +#define armv8_crc32_pmull_little Cr_z_armv8_crc32_pmull_little + +/* Symbols added by cpu_features.c */ +#define cpu_check_features Cr_z_cpu_check_features +#define x86_cpu_enable_sse2 Cr_z_x86_cpu_enable_sse2 + +#endif /* THIRD_PARTY_ZLIB_CHROMECONF_H_ */ diff --git a/packages/runtime/vendor/zlib/compare256.h b/packages/runtime/vendor/zlib/compare256.h new file mode 100644 index 000000000..80061c3fe --- /dev/null +++ b/packages/runtime/vendor/zlib/compare256.h @@ -0,0 +1,56 @@ +/* compare256.h + * + * This does 256-byte match comparison for deflate's longest_match. + * + * Copyright 2026 The Chromium Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the Chromium source repository LICENSE file. + */ +#ifndef COMPARE256_H +#define COMPARE256_H + +#include +#include +#if defined(_MSC_VER) && !defined(__clang__) +#include +#endif + +/* Safe unaligned 16-bit load. Compilers optimize this into a single load + * instruction. */ +static inline uint16_t read16(const void* p) { + uint16_t v; + memcpy(&v, p, sizeof(v)); + return v; +} + +/* Finds the byte offset (0..7) of the first difference in non-zero XOR mask + * `x`: + */ +static inline int compare256_diff(uint64_t x) { +#if defined(_MSC_VER) && !defined(__clang__) + unsigned long i; + _BitScanForward64(&i, x); + return (int)i / 8; +#else + return __builtin_ctzll(x) / 8; +#endif +} + +/* Returns the number of matching leading bytes (0 to 256) between src0 and + * src1. Compares 8 bytes per iteration with early exit. */ +static inline int compare256(const unsigned char* src0, + const unsigned char* src1) { + int len = 0; + do { + uint64_t a, b, x; + memcpy(&a, src0 + len, sizeof(a)); + memcpy(&b, src1 + len, sizeof(b)); + x = a ^ b; + if (x) + return len + compare256_diff(x); + len += (int)sizeof(a); + } while (len < 256); + return 256; +} + +#endif /* COMPARE256_H */ diff --git a/packages/runtime/vendor/zlib/compress.c b/packages/runtime/vendor/zlib/compress.c index f43bacf7a..e3a7516e4 100644 --- a/packages/runtime/vendor/zlib/compress.c +++ b/packages/runtime/vendor/zlib/compress.c @@ -1,5 +1,5 @@ /* compress.c -- compress a memory buffer - * Copyright (C) 1995-2005, 2014, 2016 Jean-loup Gailly, Mark Adler + * Copyright (C) 1995-2026 Jean-loup Gailly, Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -18,13 +18,19 @@ compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_BUF_ERROR if there was not enough room in the output buffer, Z_STREAM_ERROR if the level parameter is invalid. + + The _z versions of the functions take size_t length arguments. */ -int ZEXPORT compress2(Bytef *dest, uLongf *destLen, const Bytef *source, - uLong sourceLen, int level) { +int ZEXPORT compress2_z(Bytef *dest, z_size_t *destLen, const Bytef *source, + z_size_t sourceLen, int level) { z_stream stream; int err; const uInt max = (uInt)-1; - uLong left; + z_size_t left; + + if ((sourceLen > 0 && source == NULL) || + destLen == NULL || (*destLen > 0 && dest == NULL)) + return Z_STREAM_ERROR; left = *destLen; *destLen = 0; @@ -43,23 +49,36 @@ int ZEXPORT compress2(Bytef *dest, uLongf *destLen, const Bytef *source, do { if (stream.avail_out == 0) { - stream.avail_out = left > (uLong)max ? max : (uInt)left; + stream.avail_out = left > (z_size_t)max ? max : (uInt)left; left -= stream.avail_out; } if (stream.avail_in == 0) { - stream.avail_in = sourceLen > (uLong)max ? max : (uInt)sourceLen; + stream.avail_in = sourceLen > (z_size_t)max ? max : + (uInt)sourceLen; sourceLen -= stream.avail_in; } err = deflate(&stream, sourceLen ? Z_NO_FLUSH : Z_FINISH); } while (err == Z_OK); - *destLen = stream.total_out; + *destLen = (z_size_t)(stream.next_out - dest); deflateEnd(&stream); return err == Z_STREAM_END ? Z_OK : err; } - +int ZEXPORT compress2(Bytef *dest, uLongf *destLen, const Bytef *source, + uLong sourceLen, int level) { + int ret; + z_size_t got = *destLen; + ret = compress2_z(dest, &got, source, sourceLen, level); + *destLen = (uLong)got; + return ret; +} /* =========================================================================== */ +int ZEXPORT compress_z(Bytef *dest, z_size_t *destLen, const Bytef *source, + z_size_t sourceLen) { + return compress2_z(dest, destLen, source, sourceLen, + Z_DEFAULT_COMPRESSION); +} int ZEXPORT compress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen) { return compress2(dest, destLen, source, sourceLen, Z_DEFAULT_COMPRESSION); @@ -69,7 +88,23 @@ int ZEXPORT compress(Bytef *dest, uLongf *destLen, const Bytef *source, If the default memLevel or windowBits for deflateInit() is changed, then this function needs to be updated. */ +z_size_t ZEXPORT compressBound_z(z_size_t sourceLen) { + z_size_t bound = sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + + (sourceLen >> 25) + 13; + + /* FIXME(cavalcantii): usage of CRC32 Castagnoli as a hash function + * for the hash table of symbols used for compression has a side effect + * where for compression level [4, 5] it will increase the output buffer size + * by 0.1% (i.e. less than 1%) for a high entropy input (i.e. random data). + * To avoid a scenario where client code would fail, for safety we increase + * the expected output size by 0.8% (i.e. 8x more than the worst scenario). + * See: http://crbug.com/990489 + */ + bound += bound >> 7; // Equivalent to 1.0078125 + + return bound < sourceLen ? (z_size_t)-1 : bound; +} uLong ZEXPORT compressBound(uLong sourceLen) { - return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + - (sourceLen >> 25) + 13; + z_size_t bound = compressBound_z(sourceLen); + return (uLong)bound != bound ? (uLong)-1 : (uLong)bound; } diff --git a/packages/runtime/vendor/zlib/contrib/optimizations/chunkcopy.h b/packages/runtime/vendor/zlib/contrib/optimizations/chunkcopy.h new file mode 100644 index 000000000..97efff3a4 --- /dev/null +++ b/packages/runtime/vendor/zlib/contrib/optimizations/chunkcopy.h @@ -0,0 +1,564 @@ +/* chunkcopy.h -- fast chunk copy and set operations + * Copyright (C) 2017 ARM, Inc. + * Copyright 2017 The Chromium Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the Chromium source repository LICENSE file. + */ + +#ifndef CHUNKCOPY_H +#define CHUNKCOPY_H + +#include +#include "zutil.h" + +#define Z_STATIC_ASSERT(name, assert) typedef char name[(assert) ? 1 : -1] + +#if __STDC_VERSION__ >= 199901L +#define Z_RESTRICT restrict +#else +#define Z_RESTRICT +#endif + +#if defined(__clang__) || defined(__GNUC__) || defined(__llvm__) +#define Z_BUILTIN_MEMCPY __builtin_memcpy +#define Z_BUILTIN_MEMSET __builtin_memset +#else +#define Z_BUILTIN_MEMCPY zmemcpy +#define Z_BUILTIN_MEMSET zmemset +#endif + +#if defined(INFLATE_CHUNK_SIMD_NEON) +#include +typedef uint8x16_t z_vec128i_t; +#elif defined(INFLATE_CHUNK_SIMD_SSE2) +#include +typedef __m128i z_vec128i_t; +#elif defined(INFLATE_CHUNK_GENERIC) +typedef struct { uint8_t x[16]; } z_vec128i_t; +#else +#error chunkcopy.h inflate chunk SIMD is not defined for your build target +#endif + +/* + * Suppress MSan errors about copying uninitialized bytes (crbug.com/1376033). + */ +#define Z_DISABLE_MSAN +#if defined(__has_feature) + #if __has_feature(memory_sanitizer) + #undef Z_DISABLE_MSAN + #define Z_DISABLE_MSAN __attribute__((no_sanitize("memory"))) + #endif +#endif + +/* + * chunk copy type: the z_vec128i_t type size should be exactly 128-bits + * and equal to CHUNKCOPY_CHUNK_SIZE. + */ +#define CHUNKCOPY_CHUNK_SIZE sizeof(z_vec128i_t) + +Z_STATIC_ASSERT(vector_128_bits_wide, + CHUNKCOPY_CHUNK_SIZE == sizeof(int8_t) * 16); + +/* + * Ask the compiler to perform a wide, unaligned load with a machine + * instruction appropriate for the z_vec128i_t type. + */ +static inline z_vec128i_t loadchunk( + const unsigned char FAR* s) Z_DISABLE_MSAN { + z_vec128i_t v; + Z_BUILTIN_MEMCPY(&v, s, sizeof(v)); + return v; +} + +/* + * Ask the compiler to perform a wide, unaligned store with a machine + * instruction appropriate for the z_vec128i_t type. + */ +static inline void storechunk( + unsigned char FAR* d, + const z_vec128i_t v) { + Z_BUILTIN_MEMCPY(d, &v, sizeof(v)); +} + +/* + * Perform a memcpy-like operation, assuming that length is non-zero and that + * it's OK to overwrite at least CHUNKCOPY_CHUNK_SIZE bytes of output even if + * the length is shorter than this. + * + * It also guarantees that it will properly unroll the data if the distance + * between `out` and `from` is at least CHUNKCOPY_CHUNK_SIZE, which we rely on + * in chunkcopy_relaxed(). + * + * Aside from better memory bus utilisation, this means that short copies + * (CHUNKCOPY_CHUNK_SIZE bytes or fewer) will fall straight through the loop + * without iteration, which will hopefully make the branch prediction more + * reliable. + */ +static inline unsigned char FAR* chunkcopy_core( + unsigned char FAR* out, + const unsigned char FAR* from, + unsigned len) Z_DISABLE_MSAN { + const int bump = (--len % CHUNKCOPY_CHUNK_SIZE) + 1; + storechunk(out, loadchunk(from)); + out += bump; + from += bump; + len /= CHUNKCOPY_CHUNK_SIZE; + while (len-- > 0) { + storechunk(out, loadchunk(from)); + out += CHUNKCOPY_CHUNK_SIZE; + from += CHUNKCOPY_CHUNK_SIZE; + } + return out; +} + +/* + * Like chunkcopy_core(), but avoid writing beyond of legal output. + * + * Accepts an additional pointer to the end of safe output. A generic safe + * copy would use (out + len), but it's normally the case that the end of the + * output buffer is beyond the end of the current copy, and this can still be + * exploited. + */ +static inline unsigned char FAR* chunkcopy_core_safe( + unsigned char FAR* out, + const unsigned char FAR* from, + unsigned len, + unsigned char FAR* limit) { + Assert(out + len <= limit, "chunk copy exceeds safety limit"); + if ((limit - out) < (ptrdiff_t)CHUNKCOPY_CHUNK_SIZE) { + const unsigned char FAR* Z_RESTRICT rfrom = from; + Assert((uintptr_t)out - (uintptr_t)from >= len, + "invalid restrict in chunkcopy_core_safe"); + Assert((uintptr_t)from - (uintptr_t)out >= len, + "invalid restrict in chunkcopy_core_safe"); + if (len & 8) { + Z_BUILTIN_MEMCPY(out, rfrom, 8); + out += 8; + rfrom += 8; + } + if (len & 4) { + Z_BUILTIN_MEMCPY(out, rfrom, 4); + out += 4; + rfrom += 4; + } + if (len & 2) { + Z_BUILTIN_MEMCPY(out, rfrom, 2); + out += 2; + rfrom += 2; + } + if (len & 1) { + *out++ = *rfrom++; + } + return out; + } + return chunkcopy_core(out, from, len); +} + +/* + * Perform short copies until distance can be rewritten as being at least + * CHUNKCOPY_CHUNK_SIZE. + * + * Assumes it's OK to overwrite at least the first 2*CHUNKCOPY_CHUNK_SIZE + * bytes of output even if the copy is shorter than this. This assumption + * holds within zlib inflate_fast(), which starts every iteration with at + * least 258 bytes of output space available (258 being the maximum length + * output from a single token; see inffast.c). + */ +static inline unsigned char FAR* chunkunroll_relaxed( + unsigned char FAR* out, + unsigned FAR* dist, + unsigned FAR* len) Z_DISABLE_MSAN { + const unsigned char FAR* from = out - *dist; + while (*dist < *len && *dist < CHUNKCOPY_CHUNK_SIZE) { + storechunk(out, loadchunk(from)); + out += *dist; + *len -= *dist; + *dist += *dist; + } + return out; +} + +#if defined(INFLATE_CHUNK_SIMD_NEON) +/* + * v_load64_dup(): load *src as an unaligned 64-bit int and duplicate it in + * every 64-bit component of the 128-bit result (64-bit int splat). + */ +static inline z_vec128i_t v_load64_dup(const void* src) { + return vcombine_u8(vld1_u8(src), vld1_u8(src)); +} + +/* + * v_load32_dup(): load *src as an unaligned 32-bit int and duplicate it in + * every 32-bit component of the 128-bit result (32-bit int splat). + */ +static inline z_vec128i_t v_load32_dup(const void* src) { + int32_t i32; + Z_BUILTIN_MEMCPY(&i32, src, sizeof(i32)); + return vreinterpretq_u8_s32(vdupq_n_s32(i32)); +} + +/* + * v_load16_dup(): load *src as an unaligned 16-bit int and duplicate it in + * every 16-bit component of the 128-bit result (16-bit int splat). + */ +static inline z_vec128i_t v_load16_dup(const void* src) { + int16_t i16; + Z_BUILTIN_MEMCPY(&i16, src, sizeof(i16)); + return vreinterpretq_u8_s16(vdupq_n_s16(i16)); +} + +/* + * v_load8_dup(): load the 8-bit int *src and duplicate it in every 8-bit + * component of the 128-bit result (8-bit int splat). + */ +static inline z_vec128i_t v_load8_dup(const void* src) { + return vld1q_dup_u8((const uint8_t*)src); +} + +/* + * v_store_128(): store the 128-bit vec in a memory destination (that might + * not be 16-byte aligned) void* out. + */ +static inline void v_store_128(void* out, const z_vec128i_t vec) { + vst1q_u8(out, vec); +} + +#elif defined(INFLATE_CHUNK_SIMD_SSE2) +/* + * v_load64_dup(): load *src as an unaligned 64-bit int and duplicate it in + * every 64-bit component of the 128-bit result (64-bit int splat). + */ +static inline z_vec128i_t v_load64_dup(const void* src) { + int64_t i64; + Z_BUILTIN_MEMCPY(&i64, src, sizeof(i64)); + return _mm_set1_epi64x(i64); +} + +/* + * v_load32_dup(): load *src as an unaligned 32-bit int and duplicate it in + * every 32-bit component of the 128-bit result (32-bit int splat). + */ +static inline z_vec128i_t v_load32_dup(const void* src) { + int32_t i32; + Z_BUILTIN_MEMCPY(&i32, src, sizeof(i32)); + return _mm_set1_epi32(i32); +} + +/* + * v_load16_dup(): load *src as an unaligned 16-bit int and duplicate it in + * every 16-bit component of the 128-bit result (16-bit int splat). + */ +static inline z_vec128i_t v_load16_dup(const void* src) { + int16_t i16; + Z_BUILTIN_MEMCPY(&i16, src, sizeof(i16)); + return _mm_set1_epi16(i16); +} + +/* + * v_load8_dup(): load the 8-bit int *src and duplicate it in every 8-bit + * component of the 128-bit result (8-bit int splat). + */ +static inline z_vec128i_t v_load8_dup(const void* src) { + return _mm_set1_epi8(*(const char*)src); +} + +/* + * v_store_128(): store the 128-bit vec in a memory destination (that might + * not be 16-byte aligned) void* out. + */ +static inline void v_store_128(void* out, const z_vec128i_t vec) { + _mm_storeu_si128((__m128i*)out, vec); +} +#elif defined(INFLATE_CHUNK_GENERIC) +/* + * Default implementations for chunk-copy functions rely on memcpy() being + * inlined by the compiler for best performance. This is most likely to work + * as expected when the length argument is constant (as is the case here) and + * the target supports unaligned loads and stores. Since that's not always a + * safe assumption, this may need extra compiler arguments such as + * `-mno-strict-align` or `-munaligned-access`, or the availability of + * extensions like SIMD. + */ + +/* + * v_load64_dup(): load *src as an unaligned 64-bit int and duplicate it in + * every 64-bit component of the 128-bit result (64-bit int splat). + */ +static inline z_vec128i_t v_load64_dup(const void* src) { + int64_t in; + Z_BUILTIN_MEMCPY(&in, src, sizeof(in)); + z_vec128i_t out; + for (int i = 0; i < sizeof(out); i += sizeof(in)) { + Z_BUILTIN_MEMCPY((uint8_t*)&out + i, &in, sizeof(in)); + } + return out; +} + +/* + * v_load32_dup(): load *src as an unaligned 32-bit int and duplicate it in + * every 32-bit component of the 128-bit result (32-bit int splat). + */ +static inline z_vec128i_t v_load32_dup(const void* src) { + int32_t in; + Z_BUILTIN_MEMCPY(&in, src, sizeof(in)); + z_vec128i_t out; + for (int i = 0; i < sizeof(out); i += sizeof(in)) { + Z_BUILTIN_MEMCPY((uint8_t*)&out + i, &in, sizeof(in)); + } + return out; +} + +/* + * v_load16_dup(): load *src as an unaligned 16-bit int and duplicate it in + * every 16-bit component of the 128-bit result (16-bit int splat). + */ +static inline z_vec128i_t v_load16_dup(const void* src) { + int16_t in; + Z_BUILTIN_MEMCPY(&in, src, sizeof(in)); + z_vec128i_t out; + for (int i = 0; i < sizeof(out); i += sizeof(in)) { + Z_BUILTIN_MEMCPY((uint8_t*)&out + i, &in, sizeof(in)); + } + return out; +} + +/* + * v_load8_dup(): load the 8-bit int *src and duplicate it in every 8-bit + * component of the 128-bit result (8-bit int splat). + */ +static inline z_vec128i_t v_load8_dup(const void* src) { + int8_t in = *(const uint8_t*)src; + z_vec128i_t out; + Z_BUILTIN_MEMSET(&out, in, sizeof(out)); + return out; +} + +/* + * v_store_128(): store the 128-bit vec in a memory destination (that might + * not be 16-byte aligned) void* out. + */ +static inline void v_store_128(void* out, const z_vec128i_t vec) { + Z_BUILTIN_MEMCPY(out, &vec, sizeof(vec)); +} +#endif + +/* + * Perform an overlapping copy which behaves as a memset() operation, but + * supporting periods other than one, and assume that length is non-zero and + * that it's OK to overwrite at least CHUNKCOPY_CHUNK_SIZE*3 bytes of output + * even if the length is shorter than this. + */ +static inline unsigned char FAR* chunkset_core( + unsigned char FAR* out, + unsigned period, + unsigned len) { + z_vec128i_t v; + const int bump = ((len - 1) % sizeof(v)) + 1; + + switch (period) { + case 1: + v = v_load8_dup(out - 1); + v_store_128(out, v); + out += bump; + len -= bump; + while (len > 0) { + v_store_128(out, v); + out += sizeof(v); + len -= sizeof(v); + } + return out; + case 2: + v = v_load16_dup(out - 2); + v_store_128(out, v); + out += bump; + len -= bump; + if (len > 0) { + v = v_load16_dup(out - 2); + do { + v_store_128(out, v); + out += sizeof(v); + len -= sizeof(v); + } while (len > 0); + } + return out; + case 4: + v = v_load32_dup(out - 4); + v_store_128(out, v); + out += bump; + len -= bump; + if (len > 0) { + v = v_load32_dup(out - 4); + do { + v_store_128(out, v); + out += sizeof(v); + len -= sizeof(v); + } while (len > 0); + } + return out; + case 8: + v = v_load64_dup(out - 8); + v_store_128(out, v); + out += bump; + len -= bump; + if (len > 0) { + v = v_load64_dup(out - 8); + do { + v_store_128(out, v); + out += sizeof(v); + len -= sizeof(v); + } while (len > 0); + } + return out; + } + out = chunkunroll_relaxed(out, &period, &len); + return chunkcopy_core(out, out - period, len); +} + +/* + * Perform a memcpy-like operation, but assume that length is non-zero and that + * it's OK to overwrite at least CHUNKCOPY_CHUNK_SIZE bytes of output even if + * the length is shorter than this. + * + * Unlike chunkcopy_core() above, no guarantee is made regarding the behaviour + * of overlapping buffers, regardless of the distance between the pointers. + * This is reflected in the `restrict`-qualified pointers, allowing the + * compiler to re-order loads and stores. + */ +static inline unsigned char FAR* chunkcopy_relaxed( + unsigned char FAR* Z_RESTRICT out, + const unsigned char FAR* Z_RESTRICT from, + unsigned len) { + Assert((uintptr_t)out - (uintptr_t)from >= len, + "invalid restrict in chunkcopy_relaxed"); + Assert((uintptr_t)from - (uintptr_t)out >= len, + "invalid restrict in chunkcopy_relaxed"); + return chunkcopy_core(out, from, len); +} + +/* + * Like chunkcopy_relaxed(), but avoid writing beyond of legal output. + * + * Unlike chunkcopy_core_safe() above, no guarantee is made regarding the + * behaviour of overlapping buffers, regardless of the distance between the + * pointers. This is reflected in the `restrict`-qualified pointers, allowing + * the compiler to re-order loads and stores. + * + * Accepts an additional pointer to the end of safe output. A generic safe + * copy would use (out + len), but it's normally the case that the end of the + * output buffer is beyond the end of the current copy, and this can still be + * exploited. + */ +static inline unsigned char FAR* chunkcopy_safe( + unsigned char FAR* out, + const unsigned char FAR* Z_RESTRICT from, + unsigned len, + unsigned char FAR* limit) { + Assert(out + len <= limit, "chunk copy exceeds safety limit"); + Assert((uintptr_t)out - (uintptr_t)from >= len, + "invalid restrict in chunkcopy_safe"); + Assert((uintptr_t)from - (uintptr_t)out >= len, + "invalid restrict in chunkcopy_safe"); + + return chunkcopy_core_safe(out, from, len, limit); +} + +/* + * Perform chunky copy within the same buffer, where the source and destination + * may potentially overlap. + * + * Assumes that len > 0 on entry, and that it's safe to write at least + * CHUNKCOPY_CHUNK_SIZE*3 bytes to the output. + */ +static inline unsigned char FAR* chunkcopy_lapped_relaxed( + unsigned char FAR* out, + unsigned dist, + unsigned len) { + if (dist < len && dist < CHUNKCOPY_CHUNK_SIZE) { + return chunkset_core(out, dist, len); + } + return chunkcopy_core(out, out - dist, len); +} + +/* + * Behave like chunkcopy_lapped_relaxed(), but avoid writing beyond of legal + * output. + * + * Accepts an additional pointer to the end of safe output. A generic safe + * copy would use (out + len), but it's normally the case that the end of the + * output buffer is beyond the end of the current copy, and this can still be + * exploited. + */ +static inline unsigned char FAR* chunkcopy_lapped_safe( + unsigned char FAR* out, + unsigned dist, + unsigned len, + unsigned char FAR* limit) { + Assert(out + len <= limit, "chunk copy exceeds safety limit"); + if ((limit - out) < (ptrdiff_t)(3 * CHUNKCOPY_CHUNK_SIZE)) { + /* TODO(cavalcantii): try harder to optimise this */ + while (len-- > 0) { + *out = *(out - dist); + out++; + } + return out; + } + return chunkcopy_lapped_relaxed(out, dist, len); +} + +/* TODO(cavalcanti): see crbug.com/1110083. */ +static inline unsigned char FAR* chunkcopy_safe_ugly(unsigned char FAR* out, + unsigned dist, + unsigned len, + unsigned char FAR* limit) { +#if defined(__GNUC__) && !defined(__clang__) + /* Speed is the same as using chunkcopy_safe + w/ GCC on ARM (tested gcc 6.3 and 7.5) and avoids + undefined behavior. + */ + return chunkcopy_core_safe(out, out - dist, len, limit); +#elif defined(__clang__) && defined(ARMV8_OS_ANDROID) && !defined(__aarch64__) + /* Seems to perform better on 32bit (i.e. Android). */ + return chunkcopy_core_safe(out, out - dist, len, limit); +#else + /* Seems to perform better on 64bit. */ + return chunkcopy_lapped_safe(out, dist, len, limit); +#endif +} + +/* + * The chunk-copy code above deals with writing the decoded DEFLATE data to + * the output with SIMD methods to increase decode speed. Reading the input + * to the DEFLATE decoder with a wide, SIMD method can also increase decode + * speed. This option is supported on little endian machines, and reads the + * input data in 64-bit (8 byte) chunks. + */ + +#ifdef INFLATE_CHUNK_READ_64LE +/* + * Buffer the input in a uint64_t (8 bytes) in the wide input reading case. + */ +typedef uint64_t inflate_holder_t; + +/* + * Ask the compiler to perform a wide, unaligned load of a uint64_t using a + * machine instruction appropriate for the uint64_t type. + */ +static inline inflate_holder_t read64le(const unsigned char FAR *in) { + inflate_holder_t input; + Z_BUILTIN_MEMCPY(&input, in, sizeof(input)); + return input; +} +#else +/* + * Otherwise, buffer the input bits using zlib's default input buffer type. + */ +typedef unsigned long inflate_holder_t; + +#endif /* INFLATE_CHUNK_READ_64LE */ + +#undef Z_STATIC_ASSERT +#undef Z_RESTRICT +#undef Z_BUILTIN_MEMCPY +#undef Z_DISABLE_MSAN + +#endif /* CHUNKCOPY_H */ diff --git a/packages/runtime/vendor/zlib/contrib/optimizations/inffast_chunk.c b/packages/runtime/vendor/zlib/contrib/optimizations/inffast_chunk.c new file mode 100644 index 000000000..3c93da051 --- /dev/null +++ b/packages/runtime/vendor/zlib/contrib/optimizations/inffast_chunk.c @@ -0,0 +1,376 @@ +/* inffast_chunk.c -- fast decoding + * Copyright (C) 1995-2026 Mark Adler + * Copyright 2023 The Chromium Authors + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +#include "zutil.h" +#include "inftrees.h" +#include "inflate.h" +#include "contrib/optimizations/inffast_chunk.h" +#include "contrib/optimizations/chunkcopy.h" + +#ifdef ASMINF +# pragma message("Assembler code may have bugs -- use at your own risk") +#else + +/* + Decode literal, length, and distance codes and write out the resulting + literal and match bytes until either not enough input or output is + available, an end-of-block is encountered, or a data error is encountered. + When large enough input and output buffers are supplied to inflate(), for + example, a 16K input buffer and a 64K output buffer, more than 95% of the + inflate() execution time is spent in this routine. + + Entry assumptions: + + state->mode == LEN + strm->avail_in >= INFLATE_FAST_MIN_INPUT (6 or 8 bytes + 7 bytes) + strm->avail_out >= INFLATE_FAST_MIN_OUTPUT (258 bytes + 2 bytes) + start >= strm->avail_out + state->bits < 8 + (state->hold >> state->bits) == 0 + strm->next_out[0..strm->avail_out] does not overlap with + strm->next_in[0..strm->avail_in] + strm->state->window is allocated with an additional + CHUNKCOPY_CHUNK_SIZE-1 bytes of padding beyond strm->state->wsize + + On return, state->mode is one of: + + LEN -- ran out of enough output space or enough available input + TYPE -- reached end of block code, inflate() to interpret next block + BAD -- error in block data + + Notes: + + INFLATE_FAST_MIN_INPUT: 6 or 8 bytes + 7 bytes + + - The maximum input bits used by a length/distance pair is 15 bits for the + length code, 5 bits for the length extra, 15 bits for the distance code, + and 13 bits for the distance extra. This totals 48 bits, or six bytes. + Therefore if strm->avail_in >= 6, then there is enough input to avoid + checking for available input while decoding. + + - The wide input data reading option reads 64 input bits at a time. Thus, + if strm->avail_in >= 8, then there is enough input to avoid checking for + available input while decoding. Reading consumes the input with: + + hold |= read64le(in) << bits; + in += 6; + bits += 48; + + reporting 6 bytes of new input because |bits| is 0..15 (2 bytes rounded + up, worst case) and 6 bytes is enough to decode as noted above. At exit, + hold &= (1U << bits) - 1 drops excess input to keep the invariant: + + (state->hold >> state->bits) == 0 + + INFLATE_FAST_MIN_OUTPUT: 258 bytes + 2 bytes for literals = 260 bytes + + - The maximum bytes that a single length/distance pair can output is 258 + bytes, which is the maximum length that can be coded. inflate_fast() + requires strm->avail_out >= 260 for each loop to avoid checking for + available output space while decoding. + */ +void ZLIB_INTERNAL inflate_fast_chunk_(z_streamp strm, unsigned start) { + struct inflate_state FAR *state; + z_const unsigned char FAR *in; /* local strm->next_in */ + z_const unsigned char FAR *last; /* have enough input while in < last */ + unsigned char FAR *out; /* local strm->next_out */ + unsigned char FAR *beg; /* inflate()'s initial strm->next_out */ + unsigned char FAR *end; /* while out < end, enough space available */ + unsigned char FAR *limit; /* safety limit for chunky copies */ +#ifdef INFLATE_STRICT + unsigned dmax; /* maximum distance from zlib header */ +#endif + unsigned wsize; /* window size or zero if not using window */ + unsigned whave; /* valid bytes in the window */ + unsigned wnext; /* window write index */ + unsigned char FAR *window; /* allocated sliding window, if wsize != 0 */ + inflate_holder_t hold; /* local strm->hold */ + unsigned bits; /* local strm->bits */ + code const FAR *lcode; /* local strm->lencode */ + code const FAR *dcode; /* local strm->distcode */ + unsigned lmask; /* mask for first level of length codes */ + unsigned dmask; /* mask for first level of distance codes */ + code const *here; /* retrieved table entry */ + unsigned op; /* code bits, operation, extra bits, or */ + /* window position, window bytes to copy */ + unsigned len; /* match length, unused bytes */ + unsigned dist; /* match distance */ + unsigned char FAR *from; /* where to copy match from */ + + /* copy state to local variables */ + state = (struct inflate_state FAR *)strm->state; + in = strm->next_in; + last = in + (strm->avail_in - (INFLATE_FAST_MIN_INPUT - 1)); + out = strm->next_out; + beg = out - (start - strm->avail_out); + end = out + (strm->avail_out - (INFLATE_FAST_MIN_OUTPUT - 1)); + limit = out + strm->avail_out; +#ifdef INFLATE_STRICT + dmax = state->dmax; +#endif + wsize = state->wsize; + whave = state->whave; + wnext = (state->wnext == 0 && whave >= wsize) ? wsize : state->wnext; + window = state->window; + hold = state->hold; + bits = state->bits; + lcode = state->lencode; + dcode = state->distcode; + lmask = (1U << state->lenbits) - 1; + dmask = (1U << state->distbits) - 1; + +#ifdef INFLATE_CHUNK_READ_64LE +#define REFILL() do { \ + Assert(bits < 64, "### Too many bits in inflate_fast."); \ + hold |= read64le(in) << bits; \ + in += 7; \ + in -= bits >> 3; \ + bits |= 56; \ + } while (0) +#endif + + /* decode literals and length/distances until end-of-block or not enough + input data or output space */ + do { +#ifdef INFLATE_CHUNK_READ_64LE + REFILL(); +#else + if (bits < 15) { + hold += (unsigned long)(*in++) << bits; + bits += 8; + hold += (unsigned long)(*in++) << bits; + bits += 8; + } +#endif + here = lcode + (hold & lmask); +#ifdef INFLATE_CHUNK_READ_64LE + if (here->op == 0) { /* literal */ + Tracevv((stderr, here->val >= 0x20 && here->val < 0x7f ? + "inflate: literal '%c'\n" : + "inflate: literal 0x%02x\n", here->val)); + *out++ = (unsigned char)(here->val); + hold >>= here->bits; + bits -= here->bits; + here = lcode + (hold & lmask); + if (here->op == 0) { /* literal */ + Tracevv((stderr, here->val >= 0x20 && here->val < 0x7f ? + "inflate: 2nd literal '%c'\n" : + "inflate: 2nd literal 0x%02x\n", here->val)); + *out++ = (unsigned char)(here->val); + hold >>= here->bits; + bits -= here->bits; + here = lcode + (hold & lmask); + } + } +#endif + dolen: + op = (unsigned)(here->bits); + hold >>= op; + bits -= op; + op = (unsigned)(here->op); + if (op == 0) { /* literal */ + Tracevv((stderr, here->val >= 0x20 && here->val < 0x7f ? + "inflate: literal '%c'\n" : + "inflate: literal 0x%02x\n", here->val)); + *out++ = (unsigned char)(here->val); + } + else if (op & 16) { /* length base */ + len = (unsigned)(here->val); + op &= 15; /* number of extra bits */ + if (op) { +#ifndef INFLATE_CHUNK_READ_64LE + if (bits < op) { + hold += (unsigned long)(*in++) << bits; + bits += 8; + } +#endif + len += (unsigned)hold & ((1U << op) - 1); + hold >>= op; + bits -= op; + } + Tracevv((stderr, "inflate: length %u\n", len)); +#ifndef INFLATE_CHUNK_READ_64LE + if (bits < 15) { + hold += (unsigned long)(*in++) << bits; + bits += 8; + hold += (unsigned long)(*in++) << bits; + bits += 8; + } +#endif + here = dcode + (hold & dmask); + dodist: + op = (unsigned)(here->bits); + hold >>= op; + bits -= op; + op = (unsigned)(here->op); + if (op & 16) { /* distance base */ + dist = (unsigned)(here->val); + op &= 15; /* number of extra bits */ + /* we have two fast-path loads: 10+10 + 15+5 + 15 = 55, + but we may need to refill here in the worst case */ + if (bits < op) { +#ifdef INFLATE_CHUNK_READ_64LE + REFILL(); +#else + hold += (unsigned long)(*in++) << bits; + bits += 8; + if (bits < op) { + hold += (unsigned long)(*in++) << bits; + bits += 8; + } +#endif + } + dist += (unsigned)hold & ((1U << op) - 1); +#ifdef INFLATE_STRICT + if (dist > dmax) { + strm->msg = (z_const char *)"invalid distance too far back"; + state->mode = BAD; + break; + } +#endif + hold >>= op; + bits -= op; + Tracevv((stderr, "inflate: distance %u\n", dist)); + op = (unsigned)(out - beg); /* max distance in output */ + if (dist > op) { /* see if copy from window */ + op = dist - op; /* distance back in window */ + if (op > whave) { + if (state->sane) { + strm->msg = + (z_const char *)"invalid distance too far back"; + state->mode = BAD; + break; + } +#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR + if (len <= op - whave) { + do { + *out++ = 0; + } while (--len); + continue; + } + len -= op - whave; + do { + *out++ = 0; + } while (--op > whave); + if (op == 0) { + from = out - dist; + do { + *out++ = *from++; + } while (--len); + continue; + } +#endif + } + from = window; + if (wnext >= op) { /* contiguous in window */ + from += wnext - op; + } + else { /* wrap around window */ + op -= wnext; + from += wsize - op; + if (op < len) { /* some from end of window */ + len -= op; + out = chunkcopy_safe(out, from, op, limit); + from = window; /* more from start of window */ + op = wnext; + /* This (rare) case can create a situation where + the first chunkcopy below must be checked. + */ + } + } + if (op < len) { /* still need some from output */ + out = chunkcopy_safe(out, from, op, limit); + len -= op; + /* When dist is small the amount of data that can be + copied from the window is also small, and progress + towards the dangerous end of the output buffer is + also small. This means that for trivial memsets and + for chunkunroll_relaxed() a safety check is + unnecessary. However, these conditions may not be + entered at all, and in that case it's possible that + the main copy is near the end. + */ + out = chunkunroll_relaxed(out, &dist, &len); + out = chunkcopy_safe_ugly(out, dist, len, limit); + } else { + /* from points to window, so there is no risk of + overlapping pointers requiring memset-like behaviour + */ + out = chunkcopy_safe(out, from, len, limit); + } + } + else { + /* Whole reference is in range of current output. No + range checks are necessary because we start with room + for at least 258 bytes of output, so unroll and roundoff + operations can write beyond `out+len` so long as they + stay within 258 bytes of `out`. + */ + out = chunkcopy_lapped_relaxed(out, dist, len); + } + } + else if ((op & 64) == 0) { /* 2nd level distance code */ + here = dcode + here->val + (hold & ((1U << op) - 1)); + goto dodist; + } + else { + strm->msg = (z_const char *)"invalid distance code"; + state->mode = BAD; + break; + } + } + else if ((op & 64) == 0) { /* 2nd level length code */ + here = lcode + here->val + (hold & ((1U << op) - 1)); + goto dolen; + } + else if (op & 32) { /* end-of-block */ + Tracevv((stderr, "inflate: end of block\n")); + state->mode = TYPE; + break; + } + else { + strm->msg = (z_const char *)"invalid literal/length code"; + state->mode = BAD; + break; + } + } while (in < last && out < end); + + /* return unused bytes (on entry, bits < 8, so in won't go too far back) */ + len = bits >> 3; + in -= len; + bits -= len << 3; + hold &= (1U << bits) - 1; + + /* update state and return */ + strm->next_in = in; + strm->next_out = out; + strm->avail_in = (unsigned)(in < last ? + (INFLATE_FAST_MIN_INPUT - 1) + (last - in) : + (INFLATE_FAST_MIN_INPUT - 1) - (in - last)); + strm->avail_out = (unsigned)(out < end ? + (INFLATE_FAST_MIN_OUTPUT - 1) + (end - out) : + (INFLATE_FAST_MIN_OUTPUT - 1) - (out - end)); + state->hold = hold; + state->bits = bits; + + Assert((state->hold >> state->bits) == 0, "invalid input data state"); +} + +/* + inflate_fast() speedups that turned out slower (on a PowerPC G3 750CXe): + - Using bit fields for code structure + - Different op definition to avoid & for extra bits (do & for table bits) + - Three separate decoding do-loops for direct, window, and wnext == 0 + - Special case for distance > 1 copies to do overlapped load and store copy + - Explicit branch predictions (based on measured branch probabilities) + - Deferring match copy and interspersed it with decoding subsequent codes + - Swapping literal/length else + - Swapping window/direct else + - Larger unrolled copy loops (three is about right) + - Moving len -= 3 statement into middle of loop + */ + +#endif /* !ASMINF */ diff --git a/packages/runtime/vendor/zlib/contrib/optimizations/inffast_chunk.h b/packages/runtime/vendor/zlib/contrib/optimizations/inffast_chunk.h new file mode 100644 index 000000000..e75ee5e91 --- /dev/null +++ b/packages/runtime/vendor/zlib/contrib/optimizations/inffast_chunk.h @@ -0,0 +1,42 @@ +/* inffast_chunk.h -- header to use inffast_chunk.c + * Copyright (C) 1995-2003, 2010 Mark Adler + * Copyright (C) 2017 ARM, Inc. + * Copyright 2023 The Chromium Authors + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* WARNING: this file should *not* be used by applications. It is + part of the implementation of the compression library and is + subject to change. Applications should only use zlib.h. + */ + +#include "inffast.h" + +/* INFLATE_FAST_MIN_INPUT: + The minimum number of input bytes needed so that we can safely call + inflate_fast() with only one up-front bounds check. One + length/distance code pair (15 bits for the length code, 5 bits for length + extra, 15 bits for the distance code, 13 bits for distance extra) requires + reading up to 48 input bits. Additionally, in the same iteraction, we may + decode two literals from the root-table (requiring MIN_OUTPUT = 258 + 2). + + Each root-table entry is up to 10 bits, for a total of 68 input bits each + iteraction. + + The refill variant reads 8 bytes from the buffer at a time, and advances + the input pointer by up to 7 bytes, ensuring there are at least 56-bits + available in the bit-buffer. The technique was documented by Fabian Giesen + on his blog as variant 4 in the article 'Reading bits in far too many ways': + https://fgiesen.wordpress.com/2018/02/20/ + + In the worst case, we may refill twice in the same iteraction, requiring + MIN_INPUT = 8 + 7. +*/ +#ifdef INFLATE_CHUNK_READ_64LE +#undef INFLATE_FAST_MIN_INPUT +#define INFLATE_FAST_MIN_INPUT 15 +#undef INFLATE_FAST_MIN_OUTPUT +#define INFLATE_FAST_MIN_OUTPUT 260 +#endif + +void ZLIB_INTERNAL inflate_fast_chunk_(z_streamp strm, unsigned start); diff --git a/packages/runtime/vendor/zlib/contrib/optimizations/inflate.c b/packages/runtime/vendor/zlib/contrib/optimizations/inflate.c new file mode 100644 index 000000000..3268320e9 --- /dev/null +++ b/packages/runtime/vendor/zlib/contrib/optimizations/inflate.c @@ -0,0 +1,1562 @@ +/* inflate.c -- zlib decompression + * Copyright (C) 1995-2022 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* + * Change history: + * + * 1.2.beta0 24 Nov 2002 + * - First version -- complete rewrite of inflate to simplify code, avoid + * creation of window when not needed, minimize use of window when it is + * needed, make inffast.c even faster, implement gzip decoding, and to + * improve code readability and style over the previous zlib inflate code + * + * 1.2.beta1 25 Nov 2002 + * - Use pointers for available input and output checking in inffast.c + * - Remove input and output counters in inffast.c + * - Change inffast.c entry and loop from avail_in >= 7 to >= 6 + * - Remove unnecessary second byte pull from length extra in inffast.c + * - Unroll direct copy to three copies per loop in inffast.c + * + * 1.2.beta2 4 Dec 2002 + * - Change external routine names to reduce potential conflicts + * - Correct filename to inffixed.h for fixed tables in inflate.c + * - Make hbuf[] unsigned char to match parameter type in inflate.c + * - Change strm->next_out[-state->offset] to *(strm->next_out - state->offset) + * to avoid negation problem on Alphas (64 bit) in inflate.c + * + * 1.2.beta3 22 Dec 2002 + * - Add comments on state->bits assertion in inffast.c + * - Add comments on op field in inftrees.h + * - Fix bug in reuse of allocated window after inflateReset() + * - Remove bit fields--back to byte structure for speed + * - Remove distance extra == 0 check in inflate_fast()--only helps for lengths + * - Change post-increments to pre-increments in inflate_fast(), PPC biased? + * - Add compile time option, POSTINC, to use post-increments instead (Intel?) + * - Make MATCH copy in inflate() much faster for when inflate_fast() not used + * - Use local copies of stream next and avail values, as well as local bit + * buffer and bit count in inflate()--for speed when inflate_fast() not used + * + * 1.2.beta4 1 Jan 2003 + * - Split ptr - 257 statements in inflate_table() to avoid compiler warnings + * - Move a comment on output buffer sizes from inffast.c to inflate.c + * - Add comments in inffast.c to introduce the inflate_fast() routine + * - Rearrange window copies in inflate_fast() for speed and simplification + * - Unroll last copy for window match in inflate_fast() + * - Use local copies of window variables in inflate_fast() for speed + * - Pull out common wnext == 0 case for speed in inflate_fast() + * - Make op and len in inflate_fast() unsigned for consistency + * - Add FAR to lcode and dcode declarations in inflate_fast() + * - Simplified bad distance check in inflate_fast() + * - Added inflateBackInit(), inflateBack(), and inflateBackEnd() in new + * source file infback.c to provide a call-back interface to inflate for + * programs like gzip and unzip -- uses window as output buffer to avoid + * window copying + * + * 1.2.beta5 1 Jan 2003 + * - Improved inflateBack() interface to allow the caller to provide initial + * input in strm. + * - Fixed stored blocks bug in inflateBack() + * + * 1.2.beta6 4 Jan 2003 + * - Added comments in inffast.c on effectiveness of POSTINC + * - Typecasting all around to reduce compiler warnings + * - Changed loops from while (1) or do {} while (1) to for (;;), again to + * make compilers happy + * - Changed type of window in inflateBackInit() to unsigned char * + * + * 1.2.beta7 27 Jan 2003 + * - Changed many types to unsigned or unsigned short to avoid warnings + * - Added inflateCopy() function + * + * 1.2.0 9 Mar 2003 + * - Changed inflateBack() interface to provide separate opaque descriptors + * for the in() and out() functions + * - Changed inflateBack() argument and in_func typedef to swap the length + * and buffer address return values for the input function + * - Check next_in and next_out for Z_NULL on entry to inflate() + * + * The history for versions after 1.2.0 are in ChangeLog in zlib distribution. + */ + +#include "zutil.h" +#include "inftrees.h" +#include "inflate.h" +#include "contrib/optimizations/inffast_chunk.h" +#include "contrib/optimizations/chunkcopy.h" + +#ifdef MAKEFIXED +# ifndef BUILDFIXED +# define BUILDFIXED +# endif +#endif + +local int inflateStateCheck(z_streamp strm) { + struct inflate_state FAR *state; + if (strm == Z_NULL || + strm->zalloc == (alloc_func)0 || strm->zfree == (free_func)0) + return 1; + state = (struct inflate_state FAR *)strm->state; + if (state == Z_NULL || state->strm != strm || + state->mode < HEAD || state->mode > SYNC) + return 1; + return 0; +} + +int ZEXPORT inflateResetKeep(z_streamp strm) { + struct inflate_state FAR *state; + + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + strm->total_in = strm->total_out = state->total = 0; + strm->msg = Z_NULL; + if (state->wrap) /* to support ill-conceived Java test suite */ + strm->adler = state->wrap & 1; + state->mode = HEAD; + state->last = 0; + state->havedict = 0; + state->flags = -1; + state->dmax = 32768U; + state->head = Z_NULL; + state->hold = 0; + state->bits = 0; + state->lencode = state->distcode = state->next = state->codes; + state->sane = 1; + state->back = -1; + Tracev((stderr, "inflate: reset\n")); + return Z_OK; +} + +int ZEXPORT inflateReset(z_streamp strm) { + struct inflate_state FAR *state; + + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + state->wsize = 0; + state->whave = 0; + state->wnext = 0; + return inflateResetKeep(strm); +} + +int ZEXPORT inflateReset2(z_streamp strm, int windowBits) { + int wrap; + struct inflate_state FAR *state; + + /* get the state */ + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + + /* extract wrap request from windowBits parameter */ + if (windowBits < 0) { + if (windowBits < -15) + return Z_STREAM_ERROR; + wrap = 0; + windowBits = -windowBits; + } + else { + wrap = (windowBits >> 4) + 5; +#ifdef GUNZIP + if (windowBits < 48) + windowBits &= 15; +#endif + } + + /* set number of window bits, free window if different */ + if (windowBits && (windowBits < 8 || windowBits > 15)) + return Z_STREAM_ERROR; + if (state->window != Z_NULL && state->wbits != (unsigned)windowBits) { + ZFREE(strm, state->window); + state->window = Z_NULL; + } + + /* update state and reset the rest of it */ + state->wrap = wrap; + state->wbits = (unsigned)windowBits; + return inflateReset(strm); +} + +int ZEXPORT inflateInit2_(z_streamp strm, int windowBits, + const char *version, int stream_size) { + int ret; + struct inflate_state FAR *state; + + if (version == Z_NULL || version[0] != ZLIB_VERSION[0] || + stream_size != (int)(sizeof(z_stream))) + return Z_VERSION_ERROR; + if (strm == Z_NULL) return Z_STREAM_ERROR; + strm->msg = Z_NULL; /* in case we return an error */ + if (strm->zalloc == (alloc_func)0) { +#ifdef Z_SOLO + return Z_STREAM_ERROR; +#else + strm->zalloc = zcalloc; + strm->opaque = (voidpf)0; +#endif + } + if (strm->zfree == (free_func)0) +#ifdef Z_SOLO + return Z_STREAM_ERROR; +#else + strm->zfree = zcfree; +#endif + state = (struct inflate_state FAR *) + ZALLOC(strm, 1, sizeof(struct inflate_state)); + if (state == Z_NULL) return Z_MEM_ERROR; + Tracev((stderr, "inflate: allocated\n")); + strm->state = (struct internal_state FAR *)state; + state->strm = strm; + state->window = Z_NULL; + state->mode = HEAD; /* to pass state test in inflateReset2() */ + state->check = 1L; /* 1L is the result of adler32() zero length data */ + ret = inflateReset2(strm, windowBits); + if (ret != Z_OK) { + ZFREE(strm, state); + strm->state = Z_NULL; + } + return ret; +} + +int ZEXPORT inflateInit_(z_streamp strm, const char *version, + int stream_size) { + return inflateInit2_(strm, DEF_WBITS, version, stream_size); +} + +int ZEXPORT inflatePrime(z_streamp strm, int bits, int value) { + struct inflate_state FAR *state; + + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + if (bits == 0) + return Z_OK; + state = (struct inflate_state FAR *)strm->state; + if (bits < 0) { + state->hold = 0; + state->bits = 0; + return Z_OK; + } + if (bits > 16 || state->bits + (uInt)bits > 32) return Z_STREAM_ERROR; + value &= (1L << bits) - 1; + state->hold += (unsigned)value << state->bits; + state->bits += (uInt)bits; + return Z_OK; +} + +/* + Return state with length and distance decoding tables and index sizes set to + fixed code decoding. Normally this returns fixed tables from inffixed.h. + If BUILDFIXED is defined, then instead this routine builds the tables the + first time it's called, and returns those tables the first time and + thereafter. This reduces the size of the code by about 2K bytes, in + exchange for a little execution time. However, BUILDFIXED should not be + used for threaded applications, since the rewriting of the tables and virgin + may not be thread-safe. + */ +local void fixedtables(struct inflate_state FAR *state) { +#ifdef BUILDFIXED + static int virgin = 1; + static code *lenfix, *distfix; + static code fixed[544]; + + /* build fixed huffman tables if first call (may not be thread safe) */ + if (virgin) { + unsigned sym, bits; + static code *next; + + /* literal/length table */ + sym = 0; + while (sym < 144) state->lens[sym++] = 8; + while (sym < 256) state->lens[sym++] = 9; + while (sym < 280) state->lens[sym++] = 7; + while (sym < 288) state->lens[sym++] = 8; + next = fixed; + lenfix = next; + bits = 9; + inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work); + + /* distance table */ + sym = 0; + while (sym < 32) state->lens[sym++] = 5; + distfix = next; + bits = 5; + inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work); + + /* do this just once */ + virgin = 0; + } +#else /* !BUILDFIXED */ +# include "inffixed.h" +#endif /* BUILDFIXED */ + state->lencode = lenfix; + state->lenbits = 9; + state->distcode = distfix; + state->distbits = 5; +} + +#ifdef MAKEFIXED +#include + +/* + Write out the inffixed.h that is #include'd above. Defining MAKEFIXED also + defines BUILDFIXED, so the tables are built on the fly. makefixed() writes + those tables to stdout, which would be piped to inffixed.h. A small program + can simply call makefixed to do this: + + void makefixed(void); + + int main(void) + { + makefixed(); + return 0; + } + + Then that can be linked with zlib built with MAKEFIXED defined and run: + + a.out > inffixed.h + */ +void makefixed(void) +{ + unsigned low, size; + struct inflate_state state; + + fixedtables(&state); + puts(" /* inffixed.h -- table for decoding fixed codes"); + puts(" * Generated automatically by makefixed()."); + puts(" */"); + puts(""); + puts(" /* WARNING: this file should *not* be used by applications."); + puts(" It is part of the implementation of this library and is"); + puts(" subject to change. Applications should only use zlib.h."); + puts(" */"); + puts(""); + size = 1U << 9; + printf(" static const code lenfix[%u] = {", size); + low = 0; + for (;;) { + if ((low % 7) == 0) printf("\n "); + printf("{%u,%u,%d}", (low & 127) == 99 ? 64 : state.lencode[low].op, + state.lencode[low].bits, state.lencode[low].val); + if (++low == size) break; + putchar(','); + } + puts("\n };"); + size = 1U << 5; + printf("\n static const code distfix[%u] = {", size); + low = 0; + for (;;) { + if ((low % 6) == 0) printf("\n "); + printf("{%u,%u,%d}", state.distcode[low].op, state.distcode[low].bits, + state.distcode[low].val); + if (++low == size) break; + putchar(','); + } + puts("\n };"); +} +#endif /* MAKEFIXED */ + +/* + Update the window with the last wsize (normally 32K) bytes written before + returning. If window does not exist yet, create it. This is only called + when a window is already in use, or when output has been written during this + inflate call, but the end of the deflate stream has not been reached yet. + It is also called to create a window for dictionary data when a dictionary + is loaded. + + Providing output buffers larger than 32K to inflate() should provide a speed + advantage, since only the last 32K of output is copied to the sliding window + upon return from inflate(), and since all distances after the first 32K of + output will fall in the output data, making match copies simpler and faster. + The advantage may be dependent on the size of the processor's data caches. + */ +local int updatewindow(z_streamp strm, const Bytef *end, unsigned copy) { + struct inflate_state FAR *state; + unsigned dist; + + state = (struct inflate_state FAR *)strm->state; + + /* if it hasn't been done already, allocate space for the window */ + if (state->window == Z_NULL) { + unsigned wsize = 1U << state->wbits; + state->window = (unsigned char FAR *) + ZALLOC(strm, wsize + CHUNKCOPY_CHUNK_SIZE, + sizeof(unsigned char)); + if (state->window == Z_NULL) return 1; +#ifdef INFLATE_CLEAR_UNUSED_UNDEFINED + /* Copies from the overflow portion of this buffer are undefined and + may cause analysis tools to raise a warning if we don't initialize + it. However, this undefined data overwrites other undefined data + and is subsequently either overwritten or left deliberately + undefined at the end of decode; so there's really no point. + */ + zmemzero(state->window + wsize, CHUNKCOPY_CHUNK_SIZE); +#endif + } + + /* if window not in use yet, initialize */ + if (state->wsize == 0) { + state->wsize = 1U << state->wbits; + state->wnext = 0; + state->whave = 0; + } + + /* copy state->wsize or less output bytes into the circular window */ + if (copy >= state->wsize) { + zmemcpy(state->window, end - state->wsize, state->wsize); + state->wnext = 0; + state->whave = state->wsize; + } + else { + dist = state->wsize - state->wnext; + if (dist > copy) dist = copy; + zmemcpy(state->window + state->wnext, end - copy, dist); + copy -= dist; + if (copy) { + zmemcpy(state->window, end - copy, copy); + state->wnext = copy; + state->whave = state->wsize; + } + else { + state->wnext += dist; + if (state->wnext == state->wsize) state->wnext = 0; + if (state->whave < state->wsize) state->whave += dist; + } + } + return 0; +} + +/* Macros for inflate(): */ + +/* check function to use adler32() for zlib or crc32() for gzip */ +#ifdef GUNZIP +# define UPDATE_CHECK(check, buf, len) \ + (state->flags ? crc32(check, buf, len) : adler32(check, buf, len)) +#else +# define UPDATE_CHECK(check, buf, len) adler32(check, buf, len) +#endif + +/* check macros for header crc */ +#ifdef GUNZIP +# define CRC2(check, word) \ + do { \ + hbuf[0] = (unsigned char)(word); \ + hbuf[1] = (unsigned char)((word) >> 8); \ + check = crc32(check, hbuf, 2); \ + } while (0) + +# define CRC4(check, word) \ + do { \ + hbuf[0] = (unsigned char)(word); \ + hbuf[1] = (unsigned char)((word) >> 8); \ + hbuf[2] = (unsigned char)((word) >> 16); \ + hbuf[3] = (unsigned char)((word) >> 24); \ + check = crc32(check, hbuf, 4); \ + } while (0) +#endif + +/* Load registers with state in inflate() for speed */ +#define LOAD() \ + do { \ + put = strm->next_out; \ + left = strm->avail_out; \ + next = strm->next_in; \ + have = strm->avail_in; \ + hold = state->hold; \ + bits = state->bits; \ + } while (0) + +/* Restore state from registers in inflate() */ +#define RESTORE() \ + do { \ + strm->next_out = put; \ + strm->avail_out = left; \ + strm->next_in = next; \ + strm->avail_in = have; \ + state->hold = hold; \ + state->bits = bits; \ + } while (0) + +/* Clear the input bit accumulator */ +#define INITBITS() \ + do { \ + hold = 0; \ + bits = 0; \ + } while (0) + +/* Get a byte of input into the bit accumulator, or return from inflate() + if there is no input available. */ +#define PULLBYTE() \ + do { \ + if (have == 0) goto inf_leave; \ + have--; \ + hold += (unsigned long)(*next++) << bits; \ + bits += 8; \ + } while (0) + +/* Assure that there are at least n bits in the bit accumulator. If there is + not enough available input to do that, then return from inflate(). */ +#define NEEDBITS(n) \ + do { \ + while (bits < (unsigned)(n)) \ + PULLBYTE(); \ + } while (0) + +/* Return the low n bits of the bit accumulator (n < 16) */ +#define BITS(n) \ + ((unsigned)hold & ((1U << (n)) - 1)) + +/* Remove n bits from the bit accumulator */ +#define DROPBITS(n) \ + do { \ + hold >>= (n); \ + bits -= (unsigned)(n); \ + } while (0) + +/* Remove zero to seven bits as needed to go to a byte boundary */ +#define BYTEBITS() \ + do { \ + hold >>= bits & 7; \ + bits -= bits & 7; \ + } while (0) + +/* + inflate() uses a state machine to process as much input data and generate as + much output data as possible before returning. The state machine is + structured roughly as follows: + + for (;;) switch (state) { + ... + case STATEn: + if (not enough input data or output space to make progress) + return; + ... make progress ... + state = STATEm; + break; + ... + } + + so when inflate() is called again, the same case is attempted again, and + if the appropriate resources are provided, the machine proceeds to the + next state. The NEEDBITS() macro is usually the way the state evaluates + whether it can proceed or should return. NEEDBITS() does the return if + the requested bits are not available. The typical use of the BITS macros + is: + + NEEDBITS(n); + ... do something with BITS(n) ... + DROPBITS(n); + + where NEEDBITS(n) either returns from inflate() if there isn't enough + input left to load n bits into the accumulator, or it continues. BITS(n) + gives the low n bits in the accumulator. When done, DROPBITS(n) drops + the low n bits off the accumulator. INITBITS() clears the accumulator + and sets the number of available bits to zero. BYTEBITS() discards just + enough bits to put the accumulator on a byte boundary. After BYTEBITS() + and a NEEDBITS(8), then BITS(8) would return the next byte in the stream. + + NEEDBITS(n) uses PULLBYTE() to get an available byte of input, or to return + if there is no input available. The decoding of variable length codes uses + PULLBYTE() directly in order to pull just enough bytes to decode the next + code, and no more. + + Some states loop until they get enough input, making sure that enough + state information is maintained to continue the loop where it left off + if NEEDBITS() returns in the loop. For example, want, need, and keep + would all have to actually be part of the saved state in case NEEDBITS() + returns: + + case STATEw: + while (want < need) { + NEEDBITS(n); + keep[want++] = BITS(n); + DROPBITS(n); + } + state = STATEx; + case STATEx: + + As shown above, if the next state is also the next case, then the break + is omitted. + + A state may also return if there is not enough output space available to + complete that state. Those states are copying stored data, writing a + literal byte, and copying a matching string. + + When returning, a "goto inf_leave" is used to update the total counters, + update the check value, and determine whether any progress has been made + during that inflate() call in order to return the proper return code. + Progress is defined as a change in either strm->avail_in or strm->avail_out. + When there is a window, goto inf_leave will update the window with the last + output written. If a goto inf_leave occurs in the middle of decompression + and there is no window currently, goto inf_leave will create one and copy + output to the window for the next call of inflate(). + + In this implementation, the flush parameter of inflate() only affects the + return code (per zlib.h). inflate() always writes as much as possible to + strm->next_out, given the space available and the provided input--the effect + documented in zlib.h of Z_SYNC_FLUSH. Furthermore, inflate() always defers + the allocation of and copying into a sliding window until necessary, which + provides the effect documented in zlib.h for Z_FINISH when the entire input + stream available. So the only thing the flush parameter actually does is: + when flush is set to Z_FINISH, inflate() cannot return Z_OK. Instead it + will return Z_BUF_ERROR if it has not reached the end of the stream. + */ + +int ZEXPORT inflate(z_streamp strm, int flush) { + struct inflate_state FAR *state; + z_const unsigned char FAR *next; /* next input */ + unsigned char FAR *put; /* next output */ + unsigned have, left; /* available input and output */ + unsigned long hold; /* bit buffer */ + unsigned bits; /* bits in bit buffer */ + unsigned in, out; /* save starting available input and output */ + unsigned copy; /* number of stored or match bytes to copy */ + unsigned char FAR *from; /* where to copy match bytes from */ + code here; /* current decoding table entry */ + code last; /* parent table entry */ + unsigned len; /* length to copy for repeats, bits to drop */ + int ret; /* return code */ +#ifdef GUNZIP + unsigned char hbuf[4]; /* buffer for gzip header crc calculation */ +#endif + static const unsigned short order[19] = /* permutation of code lengths */ + {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15}; + + if (inflateStateCheck(strm) || strm->next_out == Z_NULL || + (strm->next_in == Z_NULL && strm->avail_in != 0)) + return Z_STREAM_ERROR; + + state = (struct inflate_state FAR *)strm->state; + if (state->mode == TYPE) state->mode = TYPEDO; /* skip check */ + LOAD(); + in = have; + out = left; + ret = Z_OK; + for (;;) + switch (state->mode) { + case HEAD: + if (state->wrap == 0) { + state->mode = TYPEDO; + break; + } + NEEDBITS(16); +#ifdef GUNZIP + if ((state->wrap & 2) && hold == 0x8b1f) { /* gzip header */ + if (state->wbits == 0) + state->wbits = 15; + state->check = crc32(0L, Z_NULL, 0); + CRC2(state->check, hold); + INITBITS(); + state->mode = FLAGS; + break; + } + if (state->head != Z_NULL) + state->head->done = -1; + if (!(state->wrap & 1) || /* check if zlib header allowed */ +#else + if ( +#endif + ((BITS(8) << 8) + (hold >> 8)) % 31) { + strm->msg = (char *)"incorrect header check"; + state->mode = BAD; + break; + } + if (BITS(4) != Z_DEFLATED) { + strm->msg = (char *)"unknown compression method"; + state->mode = BAD; + break; + } + DROPBITS(4); + len = BITS(4) + 8; + if (state->wbits == 0) + state->wbits = len; + if (len > 15 || len > state->wbits) { + strm->msg = (char *)"invalid window size"; + state->mode = BAD; + break; + } + state->dmax = 1U << len; + state->flags = 0; /* indicate zlib header */ + Tracev((stderr, "inflate: zlib header ok\n")); + strm->adler = state->check = adler32(0L, Z_NULL, 0); + state->mode = hold & 0x200 ? DICTID : TYPE; + INITBITS(); + break; +#ifdef GUNZIP + case FLAGS: + NEEDBITS(16); + state->flags = (int)(hold); + if ((state->flags & 0xff) != Z_DEFLATED) { + strm->msg = (char *)"unknown compression method"; + state->mode = BAD; + break; + } + if (state->flags & 0xe000) { + strm->msg = (char *)"unknown header flags set"; + state->mode = BAD; + break; + } + if (state->head != Z_NULL) + state->head->text = (int)((hold >> 8) & 1); + if ((state->flags & 0x0200) && (state->wrap & 4)) + CRC2(state->check, hold); + INITBITS(); + state->mode = TIME; + /* fallthrough */ + case TIME: + NEEDBITS(32); + if (state->head != Z_NULL) + state->head->time = hold; + if ((state->flags & 0x0200) && (state->wrap & 4)) + CRC4(state->check, hold); + INITBITS(); + state->mode = OS; + /* fallthrough */ + case OS: + NEEDBITS(16); + if (state->head != Z_NULL) { + state->head->xflags = (int)(hold & 0xff); + state->head->os = (int)(hold >> 8); + } + if ((state->flags & 0x0200) && (state->wrap & 4)) + CRC2(state->check, hold); + INITBITS(); + state->mode = EXLEN; + /* fallthrough */ + case EXLEN: + if (state->flags & 0x0400) { + NEEDBITS(16); + state->length = (unsigned)(hold); + if (state->head != Z_NULL) + state->head->extra_len = (unsigned)hold; + if ((state->flags & 0x0200) && (state->wrap & 4)) + CRC2(state->check, hold); + INITBITS(); + } + else if (state->head != Z_NULL) + state->head->extra = Z_NULL; + state->mode = EXTRA; + /* fallthrough */ + case EXTRA: + if (state->flags & 0x0400) { + copy = state->length; + if (copy > have) copy = have; + if (copy) { + if (state->head != Z_NULL && + state->head->extra != Z_NULL && + (len = state->head->extra_len - state->length) < + state->head->extra_max) { + zmemcpy(state->head->extra + len, next, + len + copy > state->head->extra_max ? + state->head->extra_max - len : copy); + } + if ((state->flags & 0x0200) && (state->wrap & 4)) + state->check = crc32(state->check, next, copy); + have -= copy; + next += copy; + state->length -= copy; + } + if (state->length) goto inf_leave; + } + state->length = 0; + state->mode = NAME; + /* fallthrough */ + case NAME: + if (state->flags & 0x0800) { + if (have == 0) goto inf_leave; + copy = 0; + do { + len = (unsigned)(next[copy++]); + if (state->head != Z_NULL && + state->head->name != Z_NULL && + state->length < state->head->name_max) + state->head->name[state->length++] = (Bytef)len; + } while (len && copy < have); + if ((state->flags & 0x0200) && (state->wrap & 4)) + state->check = crc32(state->check, next, copy); + have -= copy; + next += copy; + if (len) goto inf_leave; + } + else if (state->head != Z_NULL) + state->head->name = Z_NULL; + state->length = 0; + state->mode = COMMENT; + /* fallthrough */ + case COMMENT: + if (state->flags & 0x1000) { + if (have == 0) goto inf_leave; + copy = 0; + do { + len = (unsigned)(next[copy++]); + if (state->head != Z_NULL && + state->head->comment != Z_NULL && + state->length < state->head->comm_max) + state->head->comment[state->length++] = (Bytef)len; + } while (len && copy < have); + if ((state->flags & 0x0200) && (state->wrap & 4)) + state->check = crc32(state->check, next, copy); + have -= copy; + next += copy; + if (len) goto inf_leave; + } + else if (state->head != Z_NULL) + state->head->comment = Z_NULL; + state->mode = HCRC; + /* fallthrough */ + case HCRC: + if (state->flags & 0x0200) { + NEEDBITS(16); + if ((state->wrap & 4) && hold != (state->check & 0xffff)) { + strm->msg = (char *)"header crc mismatch"; + state->mode = BAD; + break; + } + INITBITS(); + } + if (state->head != Z_NULL) { + state->head->hcrc = (int)((state->flags >> 9) & 1); + state->head->done = 1; + } + strm->adler = state->check = crc32(0L, Z_NULL, 0); + state->mode = TYPE; + break; +#endif + case DICTID: + NEEDBITS(32); + strm->adler = state->check = ZSWAP32(hold); + INITBITS(); + state->mode = DICT; + /* fallthrough */ + case DICT: + if (state->havedict == 0) { + RESTORE(); + return Z_NEED_DICT; + } + strm->adler = state->check = adler32(0L, Z_NULL, 0); + state->mode = TYPE; + /* fallthrough */ + case TYPE: + if (flush == Z_BLOCK || flush == Z_TREES) goto inf_leave; + /* fallthrough */ + case TYPEDO: + if (state->last) { + BYTEBITS(); + state->mode = CHECK; + break; + } + NEEDBITS(3); + state->last = BITS(1); + DROPBITS(1); + switch (BITS(2)) { + case 0: /* stored block */ + Tracev((stderr, "inflate: stored block%s\n", + state->last ? " (last)" : "")); + state->mode = STORED; + break; + case 1: /* fixed block */ + fixedtables(state); + Tracev((stderr, "inflate: fixed codes block%s\n", + state->last ? " (last)" : "")); + state->mode = LEN_; /* decode codes */ + if (flush == Z_TREES) { + DROPBITS(2); + goto inf_leave; + } + break; + case 2: /* dynamic block */ + Tracev((stderr, "inflate: dynamic codes block%s\n", + state->last ? " (last)" : "")); + state->mode = TABLE; + break; + case 3: + strm->msg = (char *)"invalid block type"; + state->mode = BAD; + } + DROPBITS(2); + break; + case STORED: + BYTEBITS(); /* go to byte boundary */ + NEEDBITS(32); + if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) { + strm->msg = (char *)"invalid stored block lengths"; + state->mode = BAD; + break; + } + state->length = (unsigned)hold & 0xffff; + Tracev((stderr, "inflate: stored length %u\n", + state->length)); + INITBITS(); + state->mode = COPY_; + if (flush == Z_TREES) goto inf_leave; + /* fallthrough */ + case COPY_: + state->mode = COPY; + /* fallthrough */ + case COPY: + copy = state->length; + if (copy) { + if (copy > have) copy = have; + if (copy > left) copy = left; + if (copy == 0) goto inf_leave; + zmemcpy(put, next, copy); + have -= copy; + next += copy; + left -= copy; + put += copy; + state->length -= copy; + break; + } + Tracev((stderr, "inflate: stored end\n")); + state->mode = TYPE; + break; + case TABLE: + NEEDBITS(14); + state->nlen = BITS(5) + 257; + DROPBITS(5); + state->ndist = BITS(5) + 1; + DROPBITS(5); + state->ncode = BITS(4) + 4; + DROPBITS(4); +#ifndef PKZIP_BUG_WORKAROUND + if (state->nlen > 286 || state->ndist > 30) { + strm->msg = (char *)"too many length or distance symbols"; + state->mode = BAD; + break; + } +#endif + Tracev((stderr, "inflate: table sizes ok\n")); + state->have = 0; + state->mode = LENLENS; + /* fallthrough */ + case LENLENS: + while (state->have < state->ncode) { + NEEDBITS(3); + state->lens[order[state->have++]] = (unsigned short)BITS(3); + DROPBITS(3); + } + while (state->have < 19) + state->lens[order[state->have++]] = 0; + state->next = state->codes; + state->lencode = state->distcode = (const code FAR *)(state->next); + state->lenbits = 7; + ret = inflate_table(CODES, state->lens, 19, &(state->next), + &(state->lenbits), state->work); + if (ret) { + strm->msg = (char *)"invalid code lengths set"; + state->mode = BAD; + break; + } + Tracev((stderr, "inflate: code lengths ok\n")); + state->have = 0; + state->mode = CODELENS; + /* fallthrough */ + case CODELENS: + while (state->have < state->nlen + state->ndist) { + for (;;) { + here = state->lencode[BITS(state->lenbits)]; + if ((unsigned)(here.bits) <= bits) break; + PULLBYTE(); + } + if (here.val < 16) { + DROPBITS(here.bits); + state->lens[state->have++] = here.val; + } + else { + if (here.val == 16) { + NEEDBITS(here.bits + 2); + DROPBITS(here.bits); + if (state->have == 0) { + strm->msg = (char *)"invalid bit length repeat"; + state->mode = BAD; + break; + } + len = state->lens[state->have - 1]; + copy = 3 + BITS(2); + DROPBITS(2); + } + else if (here.val == 17) { + NEEDBITS(here.bits + 3); + DROPBITS(here.bits); + len = 0; + copy = 3 + BITS(3); + DROPBITS(3); + } + else { + NEEDBITS(here.bits + 7); + DROPBITS(here.bits); + len = 0; + copy = 11 + BITS(7); + DROPBITS(7); + } + if (state->have + copy > state->nlen + state->ndist) { + strm->msg = (char *)"invalid bit length repeat"; + state->mode = BAD; + break; + } + while (copy--) + state->lens[state->have++] = (unsigned short)len; + } + } + + /* handle error breaks in while */ + if (state->mode == BAD) break; + + /* check for end-of-block code (better have one) */ + if (state->lens[256] == 0) { + strm->msg = (char *)"invalid code -- missing end-of-block"; + state->mode = BAD; + break; + } + + /* build code tables -- note: do not change the lenbits or distbits + values here (10 and 9) without reading the comments in inftrees.h + concerning the ENOUGH constants, which depend on those values */ + state->next = state->codes; + state->lencode = (const code FAR *)(state->next); + state->lenbits = 10; + ret = inflate_table(LENS, state->lens, state->nlen, &(state->next), + &(state->lenbits), state->work); + if (ret) { + strm->msg = (char *)"invalid literal/lengths set"; + state->mode = BAD; + break; + } + state->distcode = (const code FAR *)(state->next); + state->distbits = 9; + ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist, + &(state->next), &(state->distbits), state->work); + if (ret) { + strm->msg = (char *)"invalid distances set"; + state->mode = BAD; + break; + } + Tracev((stderr, "inflate: codes ok\n")); + state->mode = LEN_; + if (flush == Z_TREES) goto inf_leave; + /* fallthrough */ + case LEN_: + state->mode = LEN; + /* fallthrough */ + case LEN: + if (have >= INFLATE_FAST_MIN_INPUT && + left >= INFLATE_FAST_MIN_OUTPUT) { + RESTORE(); + inflate_fast_chunk_(strm, out); + LOAD(); + if (state->mode == TYPE) + state->back = -1; + break; + } + state->back = 0; + for (;;) { + here = state->lencode[BITS(state->lenbits)]; + if ((unsigned)(here.bits) <= bits) break; + PULLBYTE(); + } + if (here.op && (here.op & 0xf0) == 0) { + last = here; + for (;;) { + here = state->lencode[last.val + + (BITS(last.bits + last.op) >> last.bits)]; + if ((unsigned)(last.bits + here.bits) <= bits) break; + PULLBYTE(); + } + DROPBITS(last.bits); + state->back += last.bits; + } + DROPBITS(here.bits); + state->back += here.bits; + state->length = (unsigned)here.val; + if ((int)(here.op) == 0) { + Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? + "inflate: literal '%c'\n" : + "inflate: literal 0x%02x\n", here.val)); + state->mode = LIT; + break; + } + if (here.op & 32) { + Tracevv((stderr, "inflate: end of block\n")); + state->back = -1; + state->mode = TYPE; + break; + } + if (here.op & 64) { + strm->msg = (char *)"invalid literal/length code"; + state->mode = BAD; + break; + } + state->extra = (unsigned)(here.op) & 15; + state->mode = LENEXT; + /* fallthrough */ + case LENEXT: + if (state->extra) { + NEEDBITS(state->extra); + state->length += BITS(state->extra); + DROPBITS(state->extra); + state->back += state->extra; + } + Tracevv((stderr, "inflate: length %u\n", state->length)); + state->was = state->length; + state->mode = DIST; + /* fallthrough */ + case DIST: + for (;;) { + here = state->distcode[BITS(state->distbits)]; + if ((unsigned)(here.bits) <= bits) break; + PULLBYTE(); + } + if ((here.op & 0xf0) == 0) { + last = here; + for (;;) { + here = state->distcode[last.val + + (BITS(last.bits + last.op) >> last.bits)]; + if ((unsigned)(last.bits + here.bits) <= bits) break; + PULLBYTE(); + } + DROPBITS(last.bits); + state->back += last.bits; + } + DROPBITS(here.bits); + state->back += here.bits; + if (here.op & 64) { + strm->msg = (char *)"invalid distance code"; + state->mode = BAD; + break; + } + state->offset = (unsigned)here.val; + state->extra = (unsigned)(here.op) & 15; + state->mode = DISTEXT; + /* fallthrough */ + case DISTEXT: + if (state->extra) { + NEEDBITS(state->extra); + state->offset += BITS(state->extra); + DROPBITS(state->extra); + state->back += state->extra; + } +#ifdef INFLATE_STRICT + if (state->offset > state->dmax) { + strm->msg = (char *)"invalid distance too far back"; + state->mode = BAD; + break; + } +#endif + Tracevv((stderr, "inflate: distance %u\n", state->offset)); + state->mode = MATCH; + /* fallthrough */ + case MATCH: + if (left == 0) goto inf_leave; + copy = out - left; + if (state->offset > copy) { /* copy from window */ + copy = state->offset - copy; + if (copy > state->whave) { + if (state->sane) { + strm->msg = (char *)"invalid distance too far back"; + state->mode = BAD; + break; + } +#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR + Trace((stderr, "inflate.c too far\n")); + copy -= state->whave; + if (copy > state->length) copy = state->length; + if (copy > left) copy = left; + left -= copy; + state->length -= copy; + do { + *put++ = 0; + } while (--copy); + if (state->length == 0) state->mode = LEN; + break; +#endif + } + if (copy > state->wnext) { + copy -= state->wnext; + from = state->window + (state->wsize - copy); + } + else + from = state->window + (state->wnext - copy); + if (copy > state->length) copy = state->length; + if (copy > left) copy = left; + put = chunkcopy_safe(put, from, copy, put + left); + } + else { /* copy from output */ + copy = state->length; + if (copy > left) copy = left; + put = chunkcopy_lapped_safe(put, state->offset, copy, put + left); + } + left -= copy; + state->length -= copy; + if (state->length == 0) state->mode = LEN; + break; + case LIT: + if (left == 0) goto inf_leave; + *put++ = (unsigned char)(state->length); + left--; + state->mode = LEN; + break; + case CHECK: + if (state->wrap) { + NEEDBITS(32); + out -= left; + strm->total_out += out; + state->total += out; + if ((state->wrap & 4) && out) + strm->adler = state->check = + UPDATE_CHECK(state->check, put - out, out); + out = left; + if ((state->wrap & 4) && ( +#ifdef GUNZIP + state->flags ? hold : +#endif + ZSWAP32(hold)) != state->check) { + strm->msg = (char *)"incorrect data check"; + state->mode = BAD; + break; + } + INITBITS(); + Tracev((stderr, "inflate: check matches trailer\n")); + } +#ifdef GUNZIP + state->mode = LENGTH; + /* fallthrough */ + case LENGTH: + if (state->wrap && state->flags) { + NEEDBITS(32); + if ((state->wrap & 4) && hold != (state->total & 0xffffffff)) { + strm->msg = (char *)"incorrect length check"; + state->mode = BAD; + break; + } + INITBITS(); + Tracev((stderr, "inflate: length matches trailer\n")); + } +#endif + state->mode = DONE; + /* fallthrough */ + case DONE: + ret = Z_STREAM_END; + goto inf_leave; + case BAD: + ret = Z_DATA_ERROR; + goto inf_leave; + case MEM: + return Z_MEM_ERROR; + case SYNC: + /* fallthrough */ + default: + return Z_STREAM_ERROR; + } + + /* + Return from inflate(), updating the total counts and the check value. + If there was no progress during the inflate() call, return a buffer + error. Call updatewindow() to create and/or update the window state. + Note: a memory error from inflate() is non-recoverable. + */ + inf_leave: +#if defined(ZLIB_DEBUG) + /* XXX(cavalcantii): I put this in place back in 2017 to help debug faulty + * client code relying on undefined behavior when chunk_copy first landed. + * + * It is save to say after all these years that Chromium code is well + * behaved and works fine with the optimization, therefore we can enable + * this only for DEBUG builds. + * + * We write a defined value in the unused space to help mark + * where the stream has ended. We don't use zeros as that can + * mislead clients relying on undefined behavior (i.e. assuming + * that the data is over when the buffer has a zero/null value). + * + * The basic idea is that if client code is not relying on the zlib context + * to inform the amount of decompressed data, but instead reads the output + * buffer until a zero/null is found, it will fail faster and harder + * when the remaining of the buffer is marked with a symbol (e.g. 0x55). + */ + if (left >= CHUNKCOPY_CHUNK_SIZE) + memset(put, 0x55, CHUNKCOPY_CHUNK_SIZE); + else + memset(put, 0x55, left); +#endif + RESTORE(); + if (state->wsize || (out != strm->avail_out && state->mode < BAD && + (state->mode < CHECK || flush != Z_FINISH))) + if (updatewindow(strm, strm->next_out, out - strm->avail_out)) { + state->mode = MEM; + return Z_MEM_ERROR; + } + in -= strm->avail_in; + out -= strm->avail_out; + strm->total_in += in; + strm->total_out += out; + state->total += out; + if ((state->wrap & 4) && out) + strm->adler = state->check = + UPDATE_CHECK(state->check, strm->next_out - out, out); + strm->data_type = (int)state->bits + (state->last ? 64 : 0) + + (state->mode == TYPE ? 128 : 0) + + (state->mode == LEN_ || state->mode == COPY_ ? 256 : 0); + if (((in == 0 && out == 0) || flush == Z_FINISH) && ret == Z_OK) + ret = Z_BUF_ERROR; + return ret; +} + +int ZEXPORT inflateEnd(z_streamp strm) { + struct inflate_state FAR *state; + if (inflateStateCheck(strm)) + return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + if (state->window != Z_NULL) ZFREE(strm, state->window); + ZFREE(strm, strm->state); + strm->state = Z_NULL; + Tracev((stderr, "inflate: end\n")); + return Z_OK; +} + +int ZEXPORT inflateGetDictionary(z_streamp strm, Bytef *dictionary, + uInt *dictLength) { + struct inflate_state FAR *state; + + /* check state */ + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + + /* copy dictionary */ + if (state->whave && dictionary != Z_NULL) { + zmemcpy(dictionary, state->window + state->wnext, + state->whave - state->wnext); + zmemcpy(dictionary + state->whave - state->wnext, + state->window, state->wnext); + } + if (dictLength != Z_NULL) + *dictLength = state->whave; + return Z_OK; +} + +int ZEXPORT inflateSetDictionary(z_streamp strm, const Bytef *dictionary, + uInt dictLength) { + struct inflate_state FAR *state; + unsigned long dictid; + int ret; + + /* check state */ + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + if (state->wrap != 0 && state->mode != DICT) + return Z_STREAM_ERROR; + + /* check for correct dictionary identifier */ + if (state->mode == DICT) { + dictid = adler32(0L, Z_NULL, 0); + dictid = adler32(dictid, dictionary, dictLength); + if (dictid != state->check) + return Z_DATA_ERROR; + } + + /* copy dictionary to window using updatewindow(), which will amend the + existing dictionary if appropriate */ + ret = updatewindow(strm, dictionary + dictLength, dictLength); + if (ret) { + state->mode = MEM; + return Z_MEM_ERROR; + } + state->havedict = 1; + Tracev((stderr, "inflate: dictionary set\n")); + return Z_OK; +} + +int ZEXPORT inflateGetHeader(z_streamp strm, gz_headerp head) { + struct inflate_state FAR *state; + + /* check state */ + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + if ((state->wrap & 2) == 0) return Z_STREAM_ERROR; + + /* save header structure */ + state->head = head; + head->done = 0; + return Z_OK; +} + +/* + Search buf[0..len-1] for the pattern: 0, 0, 0xff, 0xff. Return when found + or when out of input. When called, *have is the number of pattern bytes + found in order so far, in 0..3. On return *have is updated to the new + state. If on return *have equals four, then the pattern was found and the + return value is how many bytes were read including the last byte of the + pattern. If *have is less than four, then the pattern has not been found + yet and the return value is len. In the latter case, syncsearch() can be + called again with more data and the *have state. *have is initialized to + zero for the first call. + */ +local unsigned syncsearch(unsigned FAR *have, const unsigned char FAR *buf, + unsigned len) { + unsigned got; + unsigned next; + + got = *have; + next = 0; + while (next < len && got < 4) { + if ((int)(buf[next]) == (got < 2 ? 0 : 0xff)) + got++; + else if (buf[next]) + got = 0; + else + got = 4 - got; + next++; + } + *have = got; + return next; +} + +int ZEXPORT inflateSync(z_streamp strm) { + unsigned len; /* number of bytes to look at or looked at */ + int flags; /* temporary to save header status */ + unsigned long in, out; /* temporary to save total_in and total_out */ + unsigned char buf[4]; /* to restore bit buffer to byte string */ + struct inflate_state FAR *state; + + /* check parameters */ + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + if (strm->avail_in == 0 && state->bits < 8) return Z_BUF_ERROR; + + /* if first time, start search in bit buffer */ + if (state->mode != SYNC) { + state->mode = SYNC; + state->hold >>= state->bits & 7; + state->bits -= state->bits & 7; + len = 0; + while (state->bits >= 8) { + buf[len++] = (unsigned char)(state->hold); + state->hold >>= 8; + state->bits -= 8; + } + state->have = 0; + syncsearch(&(state->have), buf, len); + } + + /* search available input */ + len = syncsearch(&(state->have), strm->next_in, strm->avail_in); + strm->avail_in -= len; + strm->next_in += len; + strm->total_in += len; + + /* return no joy or set up to restart inflate() on a new block */ + if (state->have != 4) return Z_DATA_ERROR; + if (state->flags == -1) + state->wrap = 0; /* if no header yet, treat as raw */ + else + state->wrap &= ~4; /* no point in computing a check value now */ + flags = state->flags; + in = strm->total_in; out = strm->total_out; + inflateReset(strm); + strm->total_in = in; strm->total_out = out; + state->flags = flags; + state->mode = TYPE; + return Z_OK; +} + +/* + Returns true if inflate is currently at the end of a block generated by + Z_SYNC_FLUSH or Z_FULL_FLUSH. This function is used by one PPP + implementation to provide an additional safety check. PPP uses + Z_SYNC_FLUSH but removes the length bytes of the resulting empty stored + block. When decompressing, PPP checks that at the end of input packet, + inflate is waiting for these length bytes. + */ +int ZEXPORT inflateSyncPoint(z_streamp strm) { + struct inflate_state FAR *state; + + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + return state->mode == STORED && state->bits == 0; +} + +int ZEXPORT inflateCopy(z_streamp dest, z_streamp source) { + struct inflate_state FAR *state; + struct inflate_state FAR *copy; + unsigned char FAR *window; + unsigned wsize; + + /* check input */ + if (inflateStateCheck(source) || dest == Z_NULL) + return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)source->state; + + /* allocate space */ + copy = (struct inflate_state FAR *) + ZALLOC(source, 1, sizeof(struct inflate_state)); + if (copy == Z_NULL) return Z_MEM_ERROR; + window = Z_NULL; + if (state->window != Z_NULL) { + window = (unsigned char FAR *)ZALLOC( + source, (1U << state->wbits) + CHUNKCOPY_CHUNK_SIZE, + sizeof(unsigned char)); + if (window == Z_NULL) { + ZFREE(source, copy); + return Z_MEM_ERROR; + } + } + + /* copy state */ + zmemcpy((voidpf)dest, (voidpf)source, sizeof(z_stream)); + zmemcpy((voidpf)copy, (voidpf)state, sizeof(struct inflate_state)); + copy->strm = dest; + if (state->lencode >= state->codes && + state->lencode <= state->codes + ENOUGH - 1) { + copy->lencode = copy->codes + (state->lencode - state->codes); + copy->distcode = copy->codes + (state->distcode - state->codes); + } + copy->next = copy->codes + (state->next - state->codes); + if (window != Z_NULL) { + wsize = 1U << state->wbits; + zmemcpy(window, state->window, wsize); + } + copy->window = window; + dest->state = (struct internal_state FAR *)copy; + return Z_OK; +} + +int ZEXPORT inflateUndermine(z_streamp strm, int subvert) { + struct inflate_state FAR *state; + + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; +#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR + state->sane = !subvert; + return Z_OK; +#else + (void)subvert; + state->sane = 1; + return Z_DATA_ERROR; +#endif +} + +int ZEXPORT inflateValidate(z_streamp strm, int check) { + struct inflate_state FAR *state; + + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + if (check && state->wrap) + state->wrap |= 4; + else + state->wrap &= ~4; + return Z_OK; +} + +long ZEXPORT inflateMark(z_streamp strm) { + struct inflate_state FAR *state; + + if (inflateStateCheck(strm)) + return -(1L << 16); + state = (struct inflate_state FAR *)strm->state; + return (long)(((unsigned long)((long)state->back)) << 16) + + (state->mode == COPY ? state->length : + (state->mode == MATCH ? state->was - state->length : 0)); +} + +unsigned long ZEXPORT inflateCodesUsed(z_streamp strm) { + struct inflate_state FAR *state; + if (inflateStateCheck(strm)) return (unsigned long)-1; + state = (struct inflate_state FAR *)strm->state; + return (unsigned long)(state->next - state->codes); +} diff --git a/packages/runtime/vendor/zlib/contrib/optimizations/insert_string.h b/packages/runtime/vendor/zlib/contrib/optimizations/insert_string.h new file mode 100644 index 000000000..260b82680 --- /dev/null +++ b/packages/runtime/vendor/zlib/contrib/optimizations/insert_string.h @@ -0,0 +1,80 @@ +/* insert_string.h + * + * Copyright 2019 The Chromium Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the Chromium source repository LICENSE file. + */ + +#ifndef INSERT_STRING_H +#define INSERT_STRING_H + +#ifndef INLINE +#if defined(_MSC_VER) && !defined(__clang__) +#define INLINE __inline +#else +#define INLINE inline +#endif +#endif + +#include + +/** + * Some applications need to match zlib DEFLATE output exactly [3]. Use the + * canonical zlib Rabin-Karp rolling hash [1,2] in that case. + * + * [1] For a description of the Rabin and Karp algorithm, see "Algorithms" + * book by R. Sedgewick, Addison-Wesley, p252. + * [2] https://www.euccas.me/zlib/#zlib_rabin_karp and also "rolling hash" + * https://en.wikipedia.org/wiki/Rolling_hash + * [3] crbug.com/1316541 AOSP incremental client APK package OTA upgrades. + */ +#ifdef CHROMIUM_ZLIB_NO_CASTAGNOLI +#define USE_ZLIB_RABIN_KARP_ROLLING_HASH +#endif + +/* =========================================================================== + * Update a hash value with the given input byte (Rabin-Karp rolling hash). + * IN assertion: all calls to UPDATE_HASH are made with consecutive input + * characters, so that a running hash key can be computed from the previous + * key instead of complete recalculation each time. + */ +#define UPDATE_HASH(s, h, c) (h = (((h) << s->hash_shift) ^ (c)) & s->hash_mask) + +/* =========================================================================== + * Insert string str in the dictionary and set match_head to the previous head + * of the hash chain (the most recent string with same hash key). Return + * the previous length of the hash chain. + * If this file is compiled with -DFASTEST, the compression level is forced + * to 1, and no hash chains are maintained. + * IN assertion: all calls to INSERT_STRING are made with consecutive input + * characters and the first MIN_MATCH bytes of str are valid (except for + * the last MIN_MATCH-1 bytes of the input file). + */ +local INLINE Pos insert_string(deflate_state* const s, const Pos str) { + Pos ret; +/* insert_string dictionary insertion: ANZAC++ hasher + * significantly improves data compression speed. + * + * Note: the generated compressed output is a valid DEFLATE stream, but will + * differ from canonical zlib output. + */ +#if defined(USE_ZLIB_RABIN_KARP_ROLLING_HASH) + UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH - 1)]); +#else + uint32_t value; + // Validated for little endian archs (i.e. x86, Arm). YMMV for big endian. + zmemcpy(&value, &s->window[str], sizeof(value)); + s->ins_h = ((value * 66521 + 66521) >> 16) & s->hash_mask; +#endif + +#ifdef FASTEST + ret = s->head[s->ins_h]; +#else + ret = s->prev[str & s->w_mask] = s->head[s->ins_h]; +#endif + s->head[s->ins_h] = str; + + return ret; +} + +#endif /* INSERT_STRING_H */ diff --git a/packages/runtime/vendor/zlib/cpu_features.c b/packages/runtime/vendor/zlib/cpu_features.c new file mode 100644 index 000000000..6613a65e3 --- /dev/null +++ b/packages/runtime/vendor/zlib/cpu_features.c @@ -0,0 +1,218 @@ +/* cpu_features.c -- Processor features detection. + * + * Copyright 2018 The Chromium Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the Chromium source repository LICENSE file. + */ + +#include "cpu_features.h" +#include "zutil.h" + +#include +#if defined(_MSC_VER) +#include +#elif defined(ADLER32_SIMD_SSSE3) +#include +#endif + +/* TODO(cavalcantii): remove checks for x86_flags on deflate. + */ +#if defined(ARMV8_OS_MACOS) +/* Crypto extensions (crc32/pmull) are a baseline feature in ARMv8.1-A, and + * OSX running on arm64 is new enough that these can be assumed without + * runtime detection. + */ +int ZLIB_INTERNAL arm_cpu_enable_crc32 = 1; +int ZLIB_INTERNAL arm_cpu_enable_pmull = 1; +#else +int ZLIB_INTERNAL arm_cpu_enable_crc32 = 0; +int ZLIB_INTERNAL arm_cpu_enable_pmull = 0; +#endif +int ZLIB_INTERNAL x86_cpu_enable_sse2 = 0; +int ZLIB_INTERNAL x86_cpu_enable_ssse3 = 0; +int ZLIB_INTERNAL x86_cpu_enable_simd = 0; +int ZLIB_INTERNAL x86_cpu_enable_avx512 = 0; + +int ZLIB_INTERNAL riscv_cpu_enable_rvv = 0; +int ZLIB_INTERNAL riscv_cpu_enable_vclmul = 0; + +#ifndef CPU_NO_SIMD + +#if defined(ARMV8_OS_ANDROID) || defined(ARMV8_OS_LINUX) || \ + defined(ARMV8_OS_FUCHSIA) || defined(ARMV8_OS_IOS) +#include +#endif + +#if defined(ARMV8_OS_ANDROID) +#include +#elif defined(ARMV8_OS_LINUX) +#include +#include +#elif defined(ARMV8_OS_FUCHSIA) +#include +#include +#include +#elif defined(ARMV8_OS_WINDOWS) || defined(X86_WINDOWS) +#include +#elif defined(ARMV8_OS_IOS) +#include +#elif !defined(_MSC_VER) +#include +#else +#error cpu_features.c CPU feature detection in not defined for your platform +#endif + +#if !defined(CPU_NO_SIMD) && !defined(ARMV8_OS_MACOS) +static void _cpu_check_features(void); +#endif + +#if defined(ARMV8_OS_ANDROID) || defined(ARMV8_OS_LINUX) || \ + defined(ARMV8_OS_MACOS) || defined(ARMV8_OS_FUCHSIA) || \ + defined(X86_NOT_WINDOWS) || defined(ARMV8_OS_IOS) || \ + defined(RISCV_RVV) +#if !defined(ARMV8_OS_MACOS) +// _cpu_check_features() doesn't need to do anything on mac/arm since all +// features are known at build time, so don't call it. +// Do provide cpu_check_features() (with a no-op implementation) so that we +// don't have to make all callers of it check for mac/arm. +static pthread_once_t cpu_check_inited_once = PTHREAD_ONCE_INIT; +#endif +void ZLIB_INTERNAL cpu_check_features(void) +{ +#if !defined(ARMV8_OS_MACOS) + pthread_once(&cpu_check_inited_once, _cpu_check_features); +#endif +} +#elif defined(ARMV8_OS_WINDOWS) || defined(X86_WINDOWS) +static INIT_ONCE cpu_check_inited_once = INIT_ONCE_STATIC_INIT; +static BOOL CALLBACK _cpu_check_features_forwarder(PINIT_ONCE once, PVOID param, PVOID* context) +{ + _cpu_check_features(); + return TRUE; +} +void ZLIB_INTERNAL cpu_check_features(void) +{ + InitOnceExecuteOnce(&cpu_check_inited_once, _cpu_check_features_forwarder, + NULL, NULL); +} +#endif + +#if (defined(__ARM_NEON__) || defined(__ARM_NEON)) +#if !defined(ARMV8_OS_MACOS) +/* + * See http://bit.ly/2CcoEsr for run-time detection of ARM features and also + * crbug.com/931275 for android_getCpuFeatures() use in the Android sandbox. + */ +static void _cpu_check_features(void) +{ +#if defined(ARMV8_OS_ANDROID) && defined(__aarch64__) + uint64_t features = android_getCpuFeatures(); + arm_cpu_enable_crc32 = !!(features & ANDROID_CPU_ARM64_FEATURE_CRC32); + arm_cpu_enable_pmull = !!(features & ANDROID_CPU_ARM64_FEATURE_PMULL); +#elif defined(ARMV8_OS_ANDROID) /* aarch32 */ + uint64_t features = android_getCpuFeatures(); + arm_cpu_enable_crc32 = !!(features & ANDROID_CPU_ARM_FEATURE_CRC32); + arm_cpu_enable_pmull = !!(features & ANDROID_CPU_ARM_FEATURE_PMULL); +#elif defined(ARMV8_OS_LINUX) && defined(__aarch64__) + unsigned long features = getauxval(AT_HWCAP); + arm_cpu_enable_crc32 = !!(features & HWCAP_CRC32); + arm_cpu_enable_pmull = !!(features & HWCAP_PMULL); +#elif defined(ARMV8_OS_LINUX) && (defined(__ARM_NEON) || defined(__ARM_NEON__)) + /* Query HWCAP2 for ARMV8-A SoCs running in aarch32 mode */ + unsigned long features = getauxval(AT_HWCAP2); + arm_cpu_enable_crc32 = !!(features & HWCAP2_CRC32); + arm_cpu_enable_pmull = !!(features & HWCAP2_PMULL); +#elif defined(ARMV8_OS_FUCHSIA) + uint32_t features; + zx_status_t rc = zx_system_get_features(ZX_FEATURE_KIND_CPU, &features); + if (rc != ZX_OK || (features & ZX_ARM64_FEATURE_ISA_ASIMD) == 0) + return; /* Report nothing if ASIMD(NEON) is missing */ + arm_cpu_enable_crc32 = !!(features & ZX_ARM64_FEATURE_ISA_CRC32); + arm_cpu_enable_pmull = !!(features & ZX_ARM64_FEATURE_ISA_PMULL); +#elif defined(ARMV8_OS_WINDOWS) + arm_cpu_enable_crc32 = IsProcessorFeaturePresent(PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE); + arm_cpu_enable_pmull = IsProcessorFeaturePresent(PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE); +#elif defined(ARMV8_OS_IOS) + // Determine what features are supported dynamically. This code is applicable to macOS + // as well if we wish to do that dynamically on that platform in the future. + // See https://developer.apple.com/documentation/kernel/1387446-sysctlbyname/determining_instruction_set_characteristics + int val = 0; + size_t len = sizeof(val); + arm_cpu_enable_crc32 = sysctlbyname("hw.optional.armv8_crc32", &val, &len, 0, 0) == 0 + && val != 0; + val = 0; + len = sizeof(val); + arm_cpu_enable_pmull = sysctlbyname("hw.optional.arm.FEAT_PMULL", &val, &len, 0, 0) == 0 + && val != 0; +#endif +} +#endif +#elif defined(X86_NOT_WINDOWS) || defined(X86_WINDOWS) +/* + * iOS@x86 (i.e. emulator) is another special case where we disable + * SIMD optimizations. + */ +#ifndef CPU_NO_SIMD +/* On x86 we simply use a instruction to check the CPU features. + * (i.e. CPUID). + */ +#ifdef CRC32_SIMD_AVX512_PCLMUL +#include +#include +#endif +/* _xgetbv() below needs the xsave ISA. Annotate it here so the build does not + * need -mxsave. */ +#if defined(CRC32_SIMD_AVX512_PCLMUL) && (defined(__GNUC__) || defined(__clang__)) +__attribute__((__target__("xsave"))) +#endif +static void _cpu_check_features(void) +{ + int x86_cpu_has_sse2; + int x86_cpu_has_ssse3; + int x86_cpu_has_sse42; + int x86_cpu_has_pclmulqdq; + int abcd[4]; + +#ifdef _MSC_VER + __cpuid(abcd, 1); +#else + __cpuid(1, abcd[0], abcd[1], abcd[2], abcd[3]); +#endif + + x86_cpu_has_sse2 = abcd[3] & 0x4000000; + x86_cpu_has_ssse3 = abcd[2] & 0x000200; + x86_cpu_has_sse42 = abcd[2] & 0x100000; + x86_cpu_has_pclmulqdq = abcd[2] & 0x2; + + x86_cpu_enable_sse2 = x86_cpu_has_sse2; + + x86_cpu_enable_ssse3 = x86_cpu_has_ssse3; + + x86_cpu_enable_simd = x86_cpu_has_sse2 && + x86_cpu_has_sse42 && + x86_cpu_has_pclmulqdq; + +#ifdef CRC32_SIMD_AVX512_PCLMUL + x86_cpu_enable_avx512 = _xgetbv(0) & 0x00000040; +#endif +} +#endif // x86 & NO_SIMD + +#elif defined(RISCV_RVV) +#include + +#ifndef ZLIB_HWCAP_RVV +#define ZLIB_HWCAP_RVV (1 << ('v' - 'a')) +#endif + +/* TODO(cavalcantii) + * - add support for Android@RISCV i.e. __riscv_hwprobe(). + * - detect vclmul (crypto extensions). + */ +static void _cpu_check_features(void) +{ + unsigned long features = getauxval(AT_HWCAP); + riscv_cpu_enable_rvv = !!(features & ZLIB_HWCAP_RVV); +} +#endif // ARM | x86 | RISCV +#endif // NO SIMD CPU diff --git a/packages/runtime/vendor/zlib/cpu_features.h b/packages/runtime/vendor/zlib/cpu_features.h new file mode 100644 index 000000000..6092c7e85 --- /dev/null +++ b/packages/runtime/vendor/zlib/cpu_features.h @@ -0,0 +1,22 @@ +/* cpu_features.h -- Processor features detection. + * + * Copyright 2018 The Chromium Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the Chromium source repository LICENSE file. + */ + +#include "zlib.h" + +/* TODO(cavalcantii): remove checks for x86_flags on deflate. + */ +extern int arm_cpu_enable_crc32; +extern int arm_cpu_enable_pmull; +extern int x86_cpu_enable_sse2; +extern int x86_cpu_enable_ssse3; +extern int x86_cpu_enable_simd; +extern int x86_cpu_enable_avx512; + +extern int riscv_cpu_enable_rvv; +extern int riscv_cpu_enable_vclmul; + +void cpu_check_features(void); diff --git a/packages/runtime/vendor/zlib/crc32.c b/packages/runtime/vendor/zlib/crc32.c index 6c38f5c04..2ec5ab5ce 100644 --- a/packages/runtime/vendor/zlib/crc32.c +++ b/packages/runtime/vendor/zlib/crc32.c @@ -1,5 +1,5 @@ /* crc32.c -- compute the CRC-32 of a data stream - * Copyright (C) 1995-2022 Mark Adler + * Copyright (C) 1995-2026 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h * * This interleaved implementation of a CRC makes use of pipelined multiple @@ -24,11 +24,24 @@ # include # ifndef DYNAMIC_CRC_TABLE # define DYNAMIC_CRC_TABLE -# endif /* !DYNAMIC_CRC_TABLE */ -#endif /* MAKECRCH */ +# endif +#endif +#ifdef DYNAMIC_CRC_TABLE +# define Z_ONCE +#endif +#include "deflate.h" +#include "cpu_features.h" #include "zutil.h" /* for Z_U4, Z_U8, z_crc_t, and FAR definitions */ +#ifdef HAVE_S390X_VX +# include "contrib/crc32vx/crc32_vx_hooks.h" +#endif + +#if defined(CRC32_SIMD_SSE42_PCLMUL) || defined(CRC32_ARMV8_CRC32) +#include "crc32_simd.h" +#endif + /* A CRC of a message is computed on N braids of words in the message, where each word consists of W bytes (4 or 8). If N is 3, for example, then three @@ -99,11 +112,12 @@ #endif /* If available, use the ARM processor CRC32 instruction. */ -#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) && W == 8 -# define ARMCRC32 +#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) && \ + defined(W) && W == 8 && defined(USE_CANONICAL_ARMV8_CRC32) +# define ARMCRC32_CANONICAL_ZLIB #endif -#if defined(W) && (!defined(ARMCRC32) || defined(DYNAMIC_CRC_TABLE)) +#if defined(W) && (!defined(ARMCRC32_CANONICAL_ZLIB) || defined(DYNAMIC_CRC_TABLE)) /* Swap the bytes in a z_word_t to convert between little and big endian. Any self-respecting compiler will optimize this to a single machine byte-swap @@ -152,10 +166,10 @@ local z_word_t byte_swap(z_word_t word) { Return a(x) multiplied by b(x) modulo p(x), where p(x) is the CRC polynomial, reflected. For speed, this requires that a not be zero. */ -local z_crc_t multmodp(z_crc_t a, z_crc_t b) { - z_crc_t m, p; +local uLong multmodp(uLong a, uLong b) { + uLong m, p; - m = (z_crc_t)1 << 31; + m = (uLong)1 << 31; p = 0; for (;;) { if (a & m) { @@ -171,12 +185,12 @@ local z_crc_t multmodp(z_crc_t a, z_crc_t b) { /* Return x^(n * 2^k) modulo p(x). Requires that x2n_table[] has been - initialized. + initialized. n must not be negative. */ -local z_crc_t x2nmodp(z_off64_t n, unsigned k) { - z_crc_t p; +local uLong x2nmodp(z_off64_t n, unsigned k) { + uLong p; - p = (z_crc_t)1 << 31; /* x^0 == 1 */ + p = (uLong)1 << 31; /* x^0 == 1 */ while (n) { if (n & 1) p = multmodp(x2n_table[k & 31], p); @@ -204,83 +218,8 @@ local z_crc_t FAR crc_table[256]; local void write_table64(FILE *, const z_word_t FAR *, int); #endif /* MAKECRCH */ -/* - Define a once() function depending on the availability of atomics. If this is - compiled with DYNAMIC_CRC_TABLE defined, and if CRCs will be computed in - multiple threads, and if atomics are not available, then get_crc_table() must - be called to initialize the tables and must return before any threads are - allowed to compute or combine CRCs. - */ - -/* Definition of once functionality. */ -typedef struct once_s once_t; - -/* Check for the availability of atomics. */ -#if defined(__STDC__) && __STDC_VERSION__ >= 201112L && \ - !defined(__STDC_NO_ATOMICS__) - -#include - -/* Structure for once(), which must be initialized with ONCE_INIT. */ -struct once_s { - atomic_flag begun; - atomic_int done; -}; -#define ONCE_INIT {ATOMIC_FLAG_INIT, 0} - -/* - Run the provided init() function exactly once, even if multiple threads - invoke once() at the same time. The state must be a once_t initialized with - ONCE_INIT. - */ -local void once(once_t *state, void (*init)(void)) { - if (!atomic_load(&state->done)) { - if (atomic_flag_test_and_set(&state->begun)) - while (!atomic_load(&state->done)) - ; - else { - init(); - atomic_store(&state->done, 1); - } - } -} - -#else /* no atomics */ - -/* Structure for once(), which must be initialized with ONCE_INIT. */ -struct once_s { - volatile int begun; - volatile int done; -}; -#define ONCE_INIT {0, 0} - -/* Test and set. Alas, not atomic, but tries to minimize the period of - vulnerability. */ -local int test_and_set(int volatile *flag) { - int was; - - was = *flag; - *flag = 1; - return was; -} - -/* Run the provided init() function once. This is not thread-safe. */ -local void once(once_t *state, void (*init)(void)) { - if (!state->done) { - if (test_and_set(&state->begun)) - while (!state->done) - ; - else { - init(); - state->done = 1; - } - } -} - -#endif - /* State for once(). */ -local once_t made = ONCE_INIT; +local z_once_t made = Z_ONCE_INIT; /* Generate tables for a byte-wise 32-bit CRC calculation on the polynomial: @@ -306,8 +245,8 @@ local once_t made = ONCE_INIT; information needed to generate CRCs on data a byte at a time for all combinations of CRC register values and incoming bytes. */ - -local void make_crc_table(void) { +local void make_crc_table(void) +{ unsigned i, j, n; z_crc_t p; @@ -326,7 +265,7 @@ local void make_crc_table(void) { p = (z_crc_t)1 << 30; /* x^1 */ x2n_table[0] = p; for (n = 1; n < 32; n++) - x2n_table[n] = p = multmodp(p, p); + x2n_table[n] = p = (z_crc_t)multmodp(p, p); #ifdef W /* initialize the braiding tables -- needs x2n_table[] */ @@ -529,11 +468,11 @@ local void braid(z_crc_t ltl[][256], z_word_t big[][256], int n, int w) { int k; z_crc_t i, p, q; for (k = 0; k < w; k++) { - p = x2nmodp((n * w + 3 - k) << 3, 0); + p = (z_crc_t)x2nmodp((n * w + 3 - k) << 3, 0); ltl[k][0] = 0; big[w - 1 - k][0] = 0; for (i = 1; i < 256; i++) { - ltl[k][i] = q = multmodp(i << 24, p); + ltl[k][i] = q = (z_crc_t)multmodp(i << 24, p); big[w - 1 - k][i] = byte_swap(q); } } @@ -548,7 +487,7 @@ local void braid(z_crc_t ltl[][256], z_word_t big[][256], int n, int w) { */ const z_crc_t FAR * ZEXPORT get_crc_table(void) { #ifdef DYNAMIC_CRC_TABLE - once(&made, make_crc_table); + z_once(&made, make_crc_table); #endif /* DYNAMIC_CRC_TABLE */ return (const z_crc_t FAR *)crc_table; } @@ -562,7 +501,7 @@ const z_crc_t FAR * ZEXPORT get_crc_table(void) { * -march=armv8-a+crc, or -march=native if the compile machine has the crc32 * instructions. */ -#ifdef ARMCRC32 +#if ARMCRC32_CANONICAL_ZLIB /* Constants empirically determined to maximize speed. These values are from @@ -572,9 +511,8 @@ const z_crc_t FAR * ZEXPORT get_crc_table(void) { #define Z_BATCH_ZEROS 0xa10d3d0c /* computed from Z_BATCH = 3990 */ #define Z_BATCH_MIN 800 /* fewest words in a final batch */ -unsigned long ZEXPORT crc32_z(unsigned long crc, const unsigned char FAR *buf, - z_size_t len) { - z_crc_t val; +uLong ZEXPORT crc32_z(uLong crc, const unsigned char FAR *buf, z_size_t len) { + uLong val; z_word_t crc1, crc2; const z_word_t *word; z_word_t val0, val1, val2; @@ -585,7 +523,7 @@ unsigned long ZEXPORT crc32_z(unsigned long crc, const unsigned char FAR *buf, if (buf == Z_NULL) return 0; #ifdef DYNAMIC_CRC_TABLE - once(&made, make_crc_table); + z_once(&made, make_crc_table); #endif /* DYNAMIC_CRC_TABLE */ /* Pre-condition the CRC */ @@ -640,7 +578,7 @@ unsigned long ZEXPORT crc32_z(unsigned long crc, const unsigned char FAR *buf, } word += 3 * last; num -= 3 * last; - val = x2nmodp(last, 6); + val = x2nmodp((int)last, 6); crc = multmodp(val, crc) ^ crc1; crc = multmodp(val, crc) ^ crc2; } @@ -691,15 +629,79 @@ local z_word_t crc_word_big(z_word_t data) { #endif /* ========================================================================= */ -unsigned long ZEXPORT crc32_z(unsigned long crc, const unsigned char FAR *buf, - z_size_t len) { - /* Return initial CRC, if requested. */ - if (buf == Z_NULL) return 0; +uLong ZEXPORT crc32_z(uLong crc, const unsigned char FAR *buf, z_size_t len) { + + /* If no optimizations are enabled, do it as canonical zlib. */ +#if !defined(CRC32_SIMD_SSE42_PCLMUL) && !defined(CRC32_ARMV8_CRC32) && \ + !defined(RISCV_RVV) && !defined(CRC32_SIMD_AVX512_PCLMUL) + if (buf == Z_NULL) { + return 0UL; + } +#else + /* + * zlib convention is to call crc32(0, NULL, 0); before making + * calls to crc32(). So this is a good, early (and infrequent) + * place to cache CPU features if needed for those later, more + * interesting crc32() calls. + */ + if (buf == Z_NULL) { + if (!len) + cpu_check_features(); + return 0UL; + } +#endif + /* If AVX-512 is enabled, we will use it for longer inputs and fallback + * to SSE4.2 and eventually the portable implementation to handle the tail. + */ +#if defined(CRC32_SIMD_AVX512_PCLMUL) + if (x86_cpu_enable_avx512 && len >= Z_CRC32_AVX512_MINIMUM_LENGTH) { + /* crc32 64-byte chunks */ + z_size_t chunk_size = len & ~Z_CRC32_AVX512_CHUNKSIZE_MASK; + crc = ~crc32_avx512_simd_(buf, chunk_size, ~(uint32_t)crc); + /* check remaining data */ + len -= chunk_size; + if (!len) + return crc; + /* Fall into the default crc32 for the remaining data. */ + buf += chunk_size; + } +#endif +#if defined(CRC32_SIMD_SSE42_PCLMUL) + if (x86_cpu_enable_simd && len >= Z_CRC32_SSE42_MINIMUM_LENGTH) { + /* crc32 16-byte chunks */ + z_size_t chunk_size = len & ~Z_CRC32_SSE42_CHUNKSIZE_MASK; + crc = ~crc32_sse42_simd_(buf, chunk_size, ~(uint32_t)crc); + /* check remaining data */ + len -= chunk_size; + if (!len) + return crc; + /* Fall into the default crc32 for the remaining data. */ + buf += chunk_size; + } +#elif defined(CRC32_ARMV8_CRC32) + if (arm_cpu_enable_crc32) { +#if defined(__aarch64__) + /* PMULL is 64bit only, plus code needs at least a 64 bytes buffer. */ + if (arm_cpu_enable_pmull && (len > Z_CRC32_PMULL_MINIMUM_LENGTH)) { + const size_t chunk_size = len & ~Z_CRC32_PMULL_CHUNKSIZE_MASK; + crc = ~armv8_crc32_pmull_little(buf, chunk_size, ~(uint32_t)crc); + /* Check remaining data. */ + len -= chunk_size; + if (!len) + return crc; + + /* Fall through for the remaining data. */ + buf += chunk_size; + } +#endif + /* This is scalar and self contained, used on Armv8@32bit or tail. */ + return armv8_crc32_little(buf, len, crc); + } +#endif /* CRC32_SIMD */ #ifdef DYNAMIC_CRC_TABLE - once(&made, make_crc_table); + z_once(&made, make_crc_table); #endif /* DYNAMIC_CRC_TABLE */ - /* Pre-condition the CRC */ crc = (~crc) & 0xffffffff; @@ -1012,28 +1014,56 @@ unsigned long ZEXPORT crc32_z(unsigned long crc, const unsigned char FAR *buf, #endif /* ========================================================================= */ -unsigned long ZEXPORT crc32(unsigned long crc, const unsigned char FAR *buf, - uInt len) { - return crc32_z(crc, buf, len); -} +uLong ZEXPORT crc32(uLong crc, const unsigned char FAR *buf, uInt len) { + #ifdef HAVE_S390X_VX + return crc32_z_hook(crc, buf, len); + #endif -/* ========================================================================= */ -uLong ZEXPORT crc32_combine64(uLong crc1, uLong crc2, z_off64_t len2) { -#ifdef DYNAMIC_CRC_TABLE - once(&made, make_crc_table); -#endif /* DYNAMIC_CRC_TABLE */ - return multmodp(x2nmodp(len2, 3), crc1) ^ (crc2 & 0xffffffff); -} + /* Some bots compile with optimizations disabled, others will emulate + * ARM on x86 and other weird combinations. + */ +#if defined(CRC32_SIMD_SSE42_PCLMUL) || defined(CRC32_ARMV8_CRC32) \ + || defined(RISCV_RVV) + /* We got to verify CPU features, so exploit the common usage pattern + * of calling this function with Z_NULL for an initial valid crc value. + * This allows to cache the result of the feature check and avoid extraneous + * function calls. + */ + if (buf == Z_NULL) { + if (!len) /* Assume user is calling crc32(0, NULL, 0); */ + cpu_check_features(); + return 0UL; + } +#endif -/* ========================================================================= */ -uLong ZEXPORT crc32_combine(uLong crc1, uLong crc2, z_off_t len2) { - return crc32_combine64(crc1, crc2, (z_off64_t)len2); +#if defined(CRC32_ARMV8_CRC32) + if (arm_cpu_enable_crc32) { +#if defined(__aarch64__) + /* PMULL is 64bit only, plus code needs at least a 64 bytes buffer. */ + if (arm_cpu_enable_pmull && (len > Z_CRC32_PMULL_MINIMUM_LENGTH)) { + const size_t chunk_size = len & ~Z_CRC32_PMULL_CHUNKSIZE_MASK; + crc = ~armv8_crc32_pmull_little(buf, chunk_size, ~(uint32_t)crc); + /* Check remaining data. */ + len -= chunk_size; + if (!len) + return crc; + + /* Fall through for the remaining data. */ + buf += chunk_size; + } +#endif + return armv8_crc32_little(buf, len, crc); /* Armv8@32bit or tail. */ + } +#endif + return crc32_z(crc, buf, len); /* Armv7 or Armv8 w/o crypto extensions. */ } /* ========================================================================= */ uLong ZEXPORT crc32_combine_gen64(z_off64_t len2) { + if (len2 < 0) + return 0; #ifdef DYNAMIC_CRC_TABLE - once(&made, make_crc_table); + z_once(&made, make_crc_table); #endif /* DYNAMIC_CRC_TABLE */ return x2nmodp(len2, 3); } @@ -1042,8 +1072,55 @@ uLong ZEXPORT crc32_combine_gen64(z_off64_t len2) { uLong ZEXPORT crc32_combine_gen(z_off_t len2) { return crc32_combine_gen64((z_off64_t)len2); } - /* ========================================================================= */ uLong ZEXPORT crc32_combine_op(uLong crc1, uLong crc2, uLong op) { - return multmodp(op, crc1) ^ (crc2 & 0xffffffff); + if (op == 0) + return 0; + return multmodp(op, crc1 & 0xffffffff) ^ (crc2 & 0xffffffff); +} + +/* ========================================================================= */ +uLong ZEXPORT crc32_combine64(uLong crc1, uLong crc2, z_off64_t len2) { + return crc32_combine_op(crc1, crc2, crc32_combine_gen64(len2)); +} + +/* ========================================================================= */ +uLong ZEXPORT crc32_combine(uLong crc1, uLong crc2, z_off_t len2) { + return crc32_combine64(crc1, crc2, (z_off64_t)len2); +} + +ZLIB_INTERNAL void crc_reset(deflate_state *const s) +{ +#ifdef CRC32_SIMD_SSE42_PCLMUL + if (x86_cpu_enable_simd) { + crc_fold_init(s); + return; + } +#endif + s->strm->adler = crc32(0L, Z_NULL, 0); +} + +ZLIB_INTERNAL void crc_finalize(deflate_state *const s) +{ +#ifdef QAT_COMPRESSION_ENABLED + if (s->qat_s) { + return; + } +#endif +#ifdef CRC32_SIMD_SSE42_PCLMUL + if (x86_cpu_enable_simd) + s->strm->adler = crc_fold_512to32(s); +#endif +} + +ZLIB_INTERNAL void copy_with_crc(z_streamp strm, Bytef *dst, long size) +{ +#ifdef CRC32_SIMD_SSE42_PCLMUL + if (x86_cpu_enable_simd) { + crc_fold_copy(strm->state, dst, strm->next_in, size); + return; + } +#endif + zmemcpy(dst, strm->next_in, size); + strm->adler = crc32(strm->adler, dst, size); } diff --git a/packages/runtime/vendor/zlib/crc32_simd.c b/packages/runtime/vendor/zlib/crc32_simd.c new file mode 100644 index 000000000..f9d52a631 --- /dev/null +++ b/packages/runtime/vendor/zlib/crc32_simd.c @@ -0,0 +1,628 @@ +/* crc32_simd.c + * + * Copyright 2017 The Chromium Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the Chromium source repository LICENSE file. + */ + +#include "crc32_simd.h" +#if defined(CRC32_SIMD_AVX512_PCLMUL) + +/* + * crc32_avx512_simd_(): compute the crc32 of the buffer, where the buffer + * length must be at least 256, and a multiple of 64. Based on: + * + * "Fast CRC Computation for Generic Polynomials Using PCLMULQDQ Instruction" + * V. Gopal, E. Ozturk, et al., 2009, http://intel.ly/2ySEwL0 + */ + +#include +#include +#include +#include + +#if defined(__GNUC__) || defined(__clang__) +__attribute__((__target__("avx512f,pclmul,vpclmulqdq"))) +#endif +uint32_t ZLIB_INTERNAL crc32_avx512_simd_( /* AVX512+PCLMUL */ + const unsigned char *buf, + z_size_t len, + uint32_t crc) +{ + /* + * Definitions of the bit-reflected domain constants k1,k2,k3,k4 + * are similar to those given at the end of the paper, and remaining + * constants and CRC32+Barrett polynomials remain unchanged. + * + * Replace the index of x from 128 to 512. As follows: + * k1 = ( x ^ ( 512 * 4 + 32 ) mod P(x) << 32 )' << 1 = 0x011542778a + * k2 = ( x ^ ( 512 * 4 - 32 ) mod P(x) << 32 )' << 1 = 0x01322d1430 + * k3 = ( x ^ ( 512 + 32 ) mod P(x) << 32 )' << 1 = 0x0154442bd4 + * k4 = ( x ^ ( 512 - 32 ) mod P(x) << 32 )' << 1 = 0x01c6e41596 + */ + static const uint64_t zalign(64) k1k2[] = { 0x011542778a, 0x01322d1430, + 0x011542778a, 0x01322d1430, + 0x011542778a, 0x01322d1430, + 0x011542778a, 0x01322d1430 }; + static const uint64_t zalign(64) k3k4[] = { 0x0154442bd4, 0x01c6e41596, + 0x0154442bd4, 0x01c6e41596, + 0x0154442bd4, 0x01c6e41596, + 0x0154442bd4, 0x01c6e41596 }; + static const uint64_t zalign(16) k5k6[] = { 0x01751997d0, 0x00ccaa009e }; + static const uint64_t zalign(16) k7k8[] = { 0x0163cd6124, 0x0000000000 }; + static const uint64_t zalign(16) poly[] = { 0x01db710641, 0x01f7011641 }; + __m512i x0, x1, x2, x3, x4, x5, x6, x7, x8, y5, y6, y7, y8; + __m128i a0, a1, a2, a3; + + /* + * There's at least one block of 256. + */ + x1 = _mm512_loadu_si512((__m512i *)(buf + 0x00)); + x2 = _mm512_loadu_si512((__m512i *)(buf + 0x40)); + x3 = _mm512_loadu_si512((__m512i *)(buf + 0x80)); + x4 = _mm512_loadu_si512((__m512i *)(buf + 0xC0)); + + x1 = _mm512_xor_si512(x1, _mm512_castsi128_si512(_mm_cvtsi32_si128(crc))); + + x0 = _mm512_load_si512((__m512i *)k1k2); + + buf += 256; + len -= 256; + + /* + * Parallel fold blocks of 256, if any. + */ + while (len >= 256) + { + x5 = _mm512_clmulepi64_epi128(x1, x0, 0x00); + x6 = _mm512_clmulepi64_epi128(x2, x0, 0x00); + x7 = _mm512_clmulepi64_epi128(x3, x0, 0x00); + x8 = _mm512_clmulepi64_epi128(x4, x0, 0x00); + + + x1 = _mm512_clmulepi64_epi128(x1, x0, 0x11); + x2 = _mm512_clmulepi64_epi128(x2, x0, 0x11); + x3 = _mm512_clmulepi64_epi128(x3, x0, 0x11); + x4 = _mm512_clmulepi64_epi128(x4, x0, 0x11); + + y5 = _mm512_loadu_si512((__m512i *)(buf + 0x00)); + y6 = _mm512_loadu_si512((__m512i *)(buf + 0x40)); + y7 = _mm512_loadu_si512((__m512i *)(buf + 0x80)); + y8 = _mm512_loadu_si512((__m512i *)(buf + 0xC0)); + + x1 = _mm512_xor_si512(x1, x5); + x2 = _mm512_xor_si512(x2, x6); + x3 = _mm512_xor_si512(x3, x7); + x4 = _mm512_xor_si512(x4, x8); + + x1 = _mm512_xor_si512(x1, y5); + x2 = _mm512_xor_si512(x2, y6); + x3 = _mm512_xor_si512(x3, y7); + x4 = _mm512_xor_si512(x4, y8); + + buf += 256; + len -= 256; + } + + /* + * Fold into 512-bits. + */ + x0 = _mm512_load_si512((__m512i *)k3k4); + + x5 = _mm512_clmulepi64_epi128(x1, x0, 0x00); + x1 = _mm512_clmulepi64_epi128(x1, x0, 0x11); + x1 = _mm512_xor_si512(x1, x2); + x1 = _mm512_xor_si512(x1, x5); + + x5 = _mm512_clmulepi64_epi128(x1, x0, 0x00); + x1 = _mm512_clmulepi64_epi128(x1, x0, 0x11); + x1 = _mm512_xor_si512(x1, x3); + x1 = _mm512_xor_si512(x1, x5); + + x5 = _mm512_clmulepi64_epi128(x1, x0, 0x00); + x1 = _mm512_clmulepi64_epi128(x1, x0, 0x11); + x1 = _mm512_xor_si512(x1, x4); + x1 = _mm512_xor_si512(x1, x5); + + /* + * Single fold blocks of 64, if any. + */ + while (len >= 64) + { + x2 = _mm512_loadu_si512((__m512i *)buf); + + x5 = _mm512_clmulepi64_epi128(x1, x0, 0x00); + x1 = _mm512_clmulepi64_epi128(x1, x0, 0x11); + x1 = _mm512_xor_si512(x1, x2); + x1 = _mm512_xor_si512(x1, x5); + + buf += 64; + len -= 64; + } + + /* + * Fold 512-bits to 384-bits. + */ + a0 = _mm_load_si128((__m128i *)k5k6); + + a1 = _mm512_extracti32x4_epi32(x1, 0); + a2 = _mm512_extracti32x4_epi32(x1, 1); + + a3 = _mm_clmulepi64_si128(a1, a0, 0x00); + a1 = _mm_clmulepi64_si128(a1, a0, 0x11); + + a1 = _mm_xor_si128(a1, a3); + a1 = _mm_xor_si128(a1, a2); + + /* + * Fold 384-bits to 256-bits. + */ + a2 = _mm512_extracti32x4_epi32(x1, 2); + a3 = _mm_clmulepi64_si128(a1, a0, 0x00); + a1 = _mm_clmulepi64_si128(a1, a0, 0x11); + a1 = _mm_xor_si128(a1, a3); + a1 = _mm_xor_si128(a1, a2); + + /* + * Fold 256-bits to 128-bits. + */ + a2 = _mm512_extracti32x4_epi32(x1, 3); + a3 = _mm_clmulepi64_si128(a1, a0, 0x00); + a1 = _mm_clmulepi64_si128(a1, a0, 0x11); + a1 = _mm_xor_si128(a1, a3); + a1 = _mm_xor_si128(a1, a2); + + /* + * Fold 128-bits to 64-bits. + */ + a2 = _mm_clmulepi64_si128(a1, a0, 0x10); + a3 = _mm_setr_epi32(~0, 0, ~0, 0); + a1 = _mm_srli_si128(a1, 8); + a1 = _mm_xor_si128(a1, a2); + + a0 = _mm_loadl_epi64((__m128i*)k7k8); + a2 = _mm_srli_si128(a1, 4); + a1 = _mm_and_si128(a1, a3); + a1 = _mm_clmulepi64_si128(a1, a0, 0x00); + a1 = _mm_xor_si128(a1, a2); + + /* + * Barret reduce to 32-bits. + */ + a0 = _mm_load_si128((__m128i*)poly); + + a2 = _mm_and_si128(a1, a3); + a2 = _mm_clmulepi64_si128(a2, a0, 0x10); + a2 = _mm_and_si128(a2, a3); + a2 = _mm_clmulepi64_si128(a2, a0, 0x00); + a1 = _mm_xor_si128(a1, a2); + + /* + * Return the crc32. + */ + return _mm_extract_epi32(a1, 1); +} + +#endif +#if defined(CRC32_SIMD_SSE42_PCLMUL) + +/* + * crc32_sse42_simd_(): compute the crc32 of the buffer, where the buffer + * length must be at least 64, and a multiple of 16. + */ + +#include +#include +#include + +#if defined(__GNUC__) || defined(__clang__) +__attribute__((__target__("sse4.2,pclmul"))) +#endif +uint32_t ZLIB_INTERNAL crc32_sse42_simd_( /* SSE4.2+PCLMUL */ + const unsigned char *buf, + z_size_t len, + uint32_t crc) +{ + /* + * Definitions of the bit-reflected domain constants k1,k2,k3, etc and + * the CRC32+Barrett polynomials given at the end of the paper. + */ + static const uint64_t zalign(16) k1k2[] = { 0x0154442bd4, 0x01c6e41596 }; + static const uint64_t zalign(16) k3k4[] = { 0x01751997d0, 0x00ccaa009e }; + static const uint64_t zalign(16) k5k0[] = { 0x0163cd6124, 0x0000000000 }; + static const uint64_t zalign(16) poly[] = { 0x01db710641, 0x01f7011641 }; + + __m128i x0, x1, x2, x3, x4, x5, x6, x7, x8, y5, y6, y7, y8; + + /* + * There's at least one block of 64. + */ + x1 = _mm_loadu_si128((__m128i *)(buf + 0x00)); + x2 = _mm_loadu_si128((__m128i *)(buf + 0x10)); + x3 = _mm_loadu_si128((__m128i *)(buf + 0x20)); + x4 = _mm_loadu_si128((__m128i *)(buf + 0x30)); + + x1 = _mm_xor_si128(x1, _mm_cvtsi32_si128(crc)); + + x0 = _mm_load_si128((__m128i *)k1k2); + + buf += 64; + len -= 64; + + /* + * Parallel fold blocks of 64, if any. + */ + while (len >= 64) + { + x5 = _mm_clmulepi64_si128(x1, x0, 0x00); + x6 = _mm_clmulepi64_si128(x2, x0, 0x00); + x7 = _mm_clmulepi64_si128(x3, x0, 0x00); + x8 = _mm_clmulepi64_si128(x4, x0, 0x00); + + x1 = _mm_clmulepi64_si128(x1, x0, 0x11); + x2 = _mm_clmulepi64_si128(x2, x0, 0x11); + x3 = _mm_clmulepi64_si128(x3, x0, 0x11); + x4 = _mm_clmulepi64_si128(x4, x0, 0x11); + + y5 = _mm_loadu_si128((__m128i *)(buf + 0x00)); + y6 = _mm_loadu_si128((__m128i *)(buf + 0x10)); + y7 = _mm_loadu_si128((__m128i *)(buf + 0x20)); + y8 = _mm_loadu_si128((__m128i *)(buf + 0x30)); + + x1 = _mm_xor_si128(x1, x5); + x2 = _mm_xor_si128(x2, x6); + x3 = _mm_xor_si128(x3, x7); + x4 = _mm_xor_si128(x4, x8); + + x1 = _mm_xor_si128(x1, y5); + x2 = _mm_xor_si128(x2, y6); + x3 = _mm_xor_si128(x3, y7); + x4 = _mm_xor_si128(x4, y8); + + buf += 64; + len -= 64; + } + + /* + * Fold into 128-bits. + */ + x0 = _mm_load_si128((__m128i *)k3k4); + + x5 = _mm_clmulepi64_si128(x1, x0, 0x00); + x1 = _mm_clmulepi64_si128(x1, x0, 0x11); + x1 = _mm_xor_si128(x1, x2); + x1 = _mm_xor_si128(x1, x5); + + x5 = _mm_clmulepi64_si128(x1, x0, 0x00); + x1 = _mm_clmulepi64_si128(x1, x0, 0x11); + x1 = _mm_xor_si128(x1, x3); + x1 = _mm_xor_si128(x1, x5); + + x5 = _mm_clmulepi64_si128(x1, x0, 0x00); + x1 = _mm_clmulepi64_si128(x1, x0, 0x11); + x1 = _mm_xor_si128(x1, x4); + x1 = _mm_xor_si128(x1, x5); + + /* + * Single fold blocks of 16, if any. + */ + while (len >= 16) + { + x2 = _mm_loadu_si128((__m128i *)buf); + + x5 = _mm_clmulepi64_si128(x1, x0, 0x00); + x1 = _mm_clmulepi64_si128(x1, x0, 0x11); + x1 = _mm_xor_si128(x1, x2); + x1 = _mm_xor_si128(x1, x5); + + buf += 16; + len -= 16; + } + + /* + * Fold 128-bits to 64-bits. + */ + x2 = _mm_clmulepi64_si128(x1, x0, 0x10); + x3 = _mm_setr_epi32(~0, 0, ~0, 0); + x1 = _mm_srli_si128(x1, 8); + x1 = _mm_xor_si128(x1, x2); + + x0 = _mm_loadl_epi64((__m128i*)k5k0); + + x2 = _mm_srli_si128(x1, 4); + x1 = _mm_and_si128(x1, x3); + x1 = _mm_clmulepi64_si128(x1, x0, 0x00); + x1 = _mm_xor_si128(x1, x2); + + /* + * Barret reduce to 32-bits. + */ + x0 = _mm_load_si128((__m128i*)poly); + + x2 = _mm_and_si128(x1, x3); + x2 = _mm_clmulepi64_si128(x2, x0, 0x10); + x2 = _mm_and_si128(x2, x3); + x2 = _mm_clmulepi64_si128(x2, x0, 0x00); + x1 = _mm_xor_si128(x1, x2); + + /* + * Return the crc32. + */ + return _mm_extract_epi32(x1, 1); +} + +#elif defined(CRC32_ARMV8_CRC32) + +/* CRC32 checksums using ARMv8-a crypto instructions. + */ + +#if defined(__clang__) +/* We need some extra types for using PMULL. + */ +#if defined(__aarch64__) +#include +#include +#endif + +/* CRC32 intrinsics are #ifdef'ed out of arm_acle.h unless we build with an + * armv8 target, which is incompatible with ThinLTO optimizations on Android. + * (Namely, mixing and matching different module-level targets makes ThinLTO + * warn, and Android defaults to armv7-a. This restriction does not apply to + * function-level `target`s, however.) + * + * Since we only need four crc intrinsics, and since clang's implementation of + * those are just wrappers around compiler builtins, it's simplest to #define + * those builtins directly. If this #define list grows too much (or we depend on + * an intrinsic that isn't a trivial wrapper), we may have to find a better way + * to go about this. + * + * NOTE: clang currently complains that "'+soft-float-abi' is not a recognized + * feature for this target (ignoring feature)." This appears to be a harmless + * bug in clang. + * + * These definitions must appear *after* including arm_acle.h otherwise that + * header may end up defining functions named __builtin_arm_crc32* that call + * themselves, creating an infinite loop when the intrinsic is called. + */ +/* XXX: Cannot hook into builtins with XCode for arm64. */ +#if !defined(ARMV8_OS_MACOS) +#define __crc32b __builtin_arm_crc32b +#define __crc32d __builtin_arm_crc32d +#define __crc32w __builtin_arm_crc32w +#define __crc32cw __builtin_arm_crc32cw +#endif + +#if defined(__aarch64__) +#define TARGET_ARMV8_WITH_CRC __attribute__((target("arch=armv8-a+aes+crc"))) +#else // !defined(__aarch64__) +#define TARGET_ARMV8_WITH_CRC __attribute__((target("crc"))) +#endif // defined(__aarch64__) + +#elif defined(__GNUC__) +/* For GCC, we are setting CRC extensions at module level, so ThinLTO is not + * allowed. We can just include arm_acle.h. + */ +#include +#include +#define TARGET_ARMV8_WITH_CRC __attribute__((target("arch=armv8-a+crc+crypto"))) +#else // !defined(__GNUC__) && !defined(_aarch64__) +#error ARM CRC32 SIMD extensions only supported for Clang and GCC +#endif + +TARGET_ARMV8_WITH_CRC +uint32_t ZLIB_INTERNAL armv8_crc32_little( + const unsigned char *buf, + z_size_t len, + uint32_t crc) +{ + uint32_t c = (uint32_t) ~crc; + + while (len && ((uintptr_t)buf & 7)) { + c = __crc32b(c, *buf++); + --len; + } + + const uint64_t *buf8 = (const uint64_t *)buf; + + while (len >= 64) { + c = __crc32d(c, *buf8++); + c = __crc32d(c, *buf8++); + c = __crc32d(c, *buf8++); + c = __crc32d(c, *buf8++); + + c = __crc32d(c, *buf8++); + c = __crc32d(c, *buf8++); + c = __crc32d(c, *buf8++); + c = __crc32d(c, *buf8++); + len -= 64; + } + + while (len >= 8) { + c = __crc32d(c, *buf8++); + len -= 8; + } + + buf = (const unsigned char *)buf8; + + while (len--) { + c = __crc32b(c, *buf++); + } + + return ~c; +} + +#if defined(__aarch64__) || defined(ARMV8_OS_MACOS) /* aarch64 specific code. */ + +/* + * crc32_pmull_simd_(): compute the crc32 of the buffer, where the buffer + * length must be at least 64, and a multiple of 16. Based on: + * + * "Fast CRC Computation for Generic Polynomials Using PCLMULQDQ Instruction" + * V. Gopal, E. Ozturk, et al., 2009, http://intel.ly/2ySEwL0 + */ +TARGET_ARMV8_WITH_CRC +static inline uint8x16_t pmull_lo(const uint64x2_t a, const uint64x2_t b) +{ + uint8x16_t r; + __asm__ __volatile__ ("pmull %0.1q, %1.1d, %2.1d \n\t" + : "=w" (r) : "w" (a), "w" (b) ); + return r; +} + +TARGET_ARMV8_WITH_CRC +static inline uint8x16_t pmull_01(const uint64x2_t a, const uint64x2_t b) +{ + uint8x16_t r; + __asm__ __volatile__ ("pmull %0.1q, %1.1d, %2.1d \n\t" + : "=w" (r) : "w" (a), "w" (vgetq_lane_u64(b, 1)) ); + return r; +} + +TARGET_ARMV8_WITH_CRC +static inline uint8x16_t pmull_hi(const uint64x2_t a, const uint64x2_t b) +{ + uint8x16_t r; + __asm__ __volatile__ ("pmull2 %0.1q, %1.2d, %2.2d \n\t" + : "=w" (r) : "w" (a), "w" (b) ); + return r; +} + +TARGET_ARMV8_WITH_CRC +uint32_t ZLIB_INTERNAL armv8_crc32_pmull_little( + const unsigned char *buf, + z_size_t len, + uint32_t crc) +{ + /* + * Definitions of the bit-reflected domain constants k1,k2,k3, etc and + * the CRC32+Barrett polynomials given at the end of the paper. + */ + static const uint64_t zalign(16) k1k2[] = { 0x0154442bd4, 0x01c6e41596 }; + static const uint64_t zalign(16) k3k4[] = { 0x01751997d0, 0x00ccaa009e }; + static const uint64_t zalign(16) k5k0[] = { 0x0163cd6124, 0x0000000000 }; + static const uint64_t zalign(16) poly[] = { 0x01db710641, 0x01f7011641 }; + + uint64x2_t x0, x1, x2, x3, x4, x5, x6, x7, x8, y5, y6, y7, y8; + + /* + * There's at least one block of 64. + */ + x1 = vld1q_u64((const uint64_t *)(buf + 0x00)); + x2 = vld1q_u64((const uint64_t *)(buf + 0x10)); + x3 = vld1q_u64((const uint64_t *)(buf + 0x20)); + x4 = vld1q_u64((const uint64_t *)(buf + 0x30)); + + x1 = veorq_u64(x1, (uint64x2_t) vsetq_lane_u32(crc, vdupq_n_u32(0), 0)); + + x0 = vld1q_u64(k1k2); + + buf += 64; + len -= 64; + + /* + * Parallel fold blocks of 64, if any. + */ + while (len >= 64) + { + x5 = (uint64x2_t) pmull_lo(x1, x0); + x6 = (uint64x2_t) pmull_lo(x2, x0); + x7 = (uint64x2_t) pmull_lo(x3, x0); + x8 = (uint64x2_t) pmull_lo(x4, x0); + + y5 = vld1q_u64((const uint64_t *)(buf + 0x00)); + y6 = vld1q_u64((const uint64_t *)(buf + 0x10)); + y7 = vld1q_u64((const uint64_t *)(buf + 0x20)); + y8 = vld1q_u64((const uint64_t *)(buf + 0x30)); + + x1 = (uint64x2_t) pmull_hi(x1, x0); + x2 = (uint64x2_t) pmull_hi(x2, x0); + x3 = (uint64x2_t) pmull_hi(x3, x0); + x4 = (uint64x2_t) pmull_hi(x4, x0); + + x1 = veorq_u64(x1, x5); + x2 = veorq_u64(x2, x6); + x3 = veorq_u64(x3, x7); + x4 = veorq_u64(x4, x8); + + x1 = veorq_u64(x1, y5); + x2 = veorq_u64(x2, y6); + x3 = veorq_u64(x3, y7); + x4 = veorq_u64(x4, y8); + + buf += 64; + len -= 64; + } + + /* + * Fold into 128-bits. + */ + x0 = vld1q_u64(k3k4); + + x5 = (uint64x2_t) pmull_lo(x1, x0); + x1 = (uint64x2_t) pmull_hi(x1, x0); + x1 = veorq_u64(x1, x2); + x1 = veorq_u64(x1, x5); + + x5 = (uint64x2_t) pmull_lo(x1, x0); + x1 = (uint64x2_t) pmull_hi(x1, x0); + x1 = veorq_u64(x1, x3); + x1 = veorq_u64(x1, x5); + + x5 = (uint64x2_t) pmull_lo(x1, x0); + x1 = (uint64x2_t) pmull_hi(x1, x0); + x1 = veorq_u64(x1, x4); + x1 = veorq_u64(x1, x5); + + /* + * Single fold blocks of 16, if any. + */ + while (len >= 16) + { + x2 = vld1q_u64((const uint64_t *)buf); + + x5 = (uint64x2_t) pmull_lo(x1, x0); + x1 = (uint64x2_t) pmull_hi(x1, x0); + x1 = veorq_u64(x1, x2); + x1 = veorq_u64(x1, x5); + + buf += 16; + len -= 16; + } + + /* + * Fold 128-bits to 64-bits. + */ + static uint32_t zalign(16) mask[] = { ~0u, 0u, ~0u, 0u }; + + x2 = (uint64x2_t) pmull_01(x1, x0); + x1 = (uint64x2_t) vextq_u8(vreinterpretq_u8_u64(x1), vdupq_n_u8(0), 8); + x3 = (uint64x2_t) vld1q_u32(mask); + x1 = veorq_u64(x1, x2); + + x0 = vld1q_u64(k5k0); + + x2 = (uint64x2_t) pmull_01(x2, x0); + x2 = (uint64x2_t) vextq_u8(vreinterpretq_u8_u64(x1), vdupq_n_u8(0), 4); + x1 = vandq_u64(x1, x3); + x1 = (uint64x2_t) pmull_lo(x1, x0); + x1 = veorq_u64(x1, x2); + + /* + * Barret reduce to 32-bits. + */ + x0 = vld1q_u64(poly); + + x2 = vandq_u64(x1, x3); + x2 = (uint64x2_t) pmull_01(x2, x0); + x2 = vandq_u64(x2, x3); + x2 = (uint64x2_t) pmull_lo(x2, x0); + x1 = veorq_u64(x1, x2); + + /* + * Return the crc32. + */ + return vgetq_lane_u32(vreinterpretq_u32_u64(x1), 1); +} +#endif /* aarch64 specific code. */ + +#endif diff --git a/packages/runtime/vendor/zlib/crc32_simd.h b/packages/runtime/vendor/zlib/crc32_simd.h new file mode 100644 index 000000000..84624647b --- /dev/null +++ b/packages/runtime/vendor/zlib/crc32_simd.h @@ -0,0 +1,57 @@ +/* crc32_simd.h + * + * Copyright 2017 The Chromium Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the Chromium source repository LICENSE file. + */ + +#include + +#include "zconf.h" +#include "zutil.h" +#include "deflate.h" + +/* + * crc32_sse42_simd_(): compute the crc32 of the buffer, where the buffer + * length must be at least 64, and a multiple of 16. + */ +uint32_t ZLIB_INTERNAL crc32_sse42_simd_(const unsigned char* buf, + z_size_t len, + uint32_t crc); + +uint32_t ZLIB_INTERNAL crc32_avx512_simd_(const unsigned char* buf, + z_size_t len, + uint32_t crc); + +/* + * crc32_sse42_simd_ buffer size constraints: see the use in zlib/crc32.c + * for computing the crc32 of an arbitrary length buffer. + */ +#define Z_CRC32_SSE42_MINIMUM_LENGTH 64 +#define Z_CRC32_SSE42_CHUNKSIZE_MASK 15 +#define Z_CRC32_AVX512_MINIMUM_LENGTH 256 +#define Z_CRC32_AVX512_CHUNKSIZE_MASK 63 + +/* + * CRC32 checksums using ARMv8-a crypto instructions. + */ +uint32_t ZLIB_INTERNAL armv8_crc32_little(const unsigned char* buf, + z_size_t len, + uint32_t crc); + +/* aarch64 specific code. */ +#if defined(__aarch64__) + +/* 128 is the sweet spot at the time of coding (late 2020). */ +#define Z_CRC32_PMULL_MINIMUM_LENGTH 128 +#define Z_CRC32_PMULL_CHUNKSIZE_MASK 15 + +/* + * CRC32 checksums using ARMv8-a PMULL instructions, where the buffer + * length must be at least 64, and a multiple of 16. + */ +uint32_t ZLIB_INTERNAL armv8_crc32_pmull_little(const unsigned char* buf, + z_size_t len, + uint32_t crc); + +#endif diff --git a/packages/runtime/vendor/zlib/crc_folding.c b/packages/runtime/vendor/zlib/crc_folding.c new file mode 100644 index 000000000..3e31ae4a7 --- /dev/null +++ b/packages/runtime/vendor/zlib/crc_folding.c @@ -0,0 +1,513 @@ +/* + * Compute the CRC32 using a parallelized folding approach with the PCLMULQDQ + * instruction. + * + * A white paper describing this algorithm can be found at: + * http://www.intel.com/content/dam/www/public/us/en/documents/white-papers/fast-crc-computation-generic-polynomials-pclmulqdq-paper.pdf + * + * Copyright (C) 2013 Intel Corporation. All rights reserved. + * Authors: + * Wajdi Feghali + * Jim Guilford + * Vinodh Gopal + * Erdinc Ozturk + * Jim Kukunas + * + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +#include "deflate.h" + +#ifdef CRC32_SIMD_SSE42_PCLMUL + +#include +#include +#include +#include + +#if defined(__GNUC__) || defined(__clang__) +#define TARGET_SSE42_PCLMUL __attribute__((__target__("sse4.2,pclmul"))) +#else +#define TARGET_SSE42_PCLMUL +#endif + +#define CRC_LOAD(s) \ + do { \ + __m128i xmm_crc0 = _mm_loadu_si128((__m128i *)s->crc0 + 0);\ + __m128i xmm_crc1 = _mm_loadu_si128((__m128i *)s->crc0 + 1);\ + __m128i xmm_crc2 = _mm_loadu_si128((__m128i *)s->crc0 + 2);\ + __m128i xmm_crc3 = _mm_loadu_si128((__m128i *)s->crc0 + 3);\ + __m128i xmm_crc_part = _mm_loadu_si128((__m128i *)s->crc0 + 4); + +#define CRC_SAVE(s) \ + _mm_storeu_si128((__m128i *)s->crc0 + 0, xmm_crc0);\ + _mm_storeu_si128((__m128i *)s->crc0 + 1, xmm_crc1);\ + _mm_storeu_si128((__m128i *)s->crc0 + 2, xmm_crc2);\ + _mm_storeu_si128((__m128i *)s->crc0 + 3, xmm_crc3);\ + _mm_storeu_si128((__m128i *)s->crc0 + 4, xmm_crc_part);\ + } while (0); + +TARGET_SSE42_PCLMUL +ZLIB_INTERNAL void crc_fold_init(deflate_state *const s) +{ + CRC_LOAD(s) + + xmm_crc0 = _mm_cvtsi32_si128(0x9db42487); + xmm_crc1 = _mm_setzero_si128(); + xmm_crc2 = _mm_setzero_si128(); + xmm_crc3 = _mm_setzero_si128(); + + CRC_SAVE(s) + + s->strm->adler = 0; +} + +TARGET_SSE42_PCLMUL +local void fold_1(deflate_state *const s, + __m128i *xmm_crc0, __m128i *xmm_crc1, + __m128i *xmm_crc2, __m128i *xmm_crc3) +{ + const __m128i xmm_fold4 = _mm_set_epi32( + 0x00000001, 0x54442bd4, + 0x00000001, 0xc6e41596); + + __m128i x_tmp3; + __m128 ps_crc0, ps_crc3, ps_res; + + x_tmp3 = *xmm_crc3; + + *xmm_crc3 = *xmm_crc0; + *xmm_crc0 = _mm_clmulepi64_si128(*xmm_crc0, xmm_fold4, 0x01); + *xmm_crc3 = _mm_clmulepi64_si128(*xmm_crc3, xmm_fold4, 0x10); + ps_crc0 = _mm_castsi128_ps(*xmm_crc0); + ps_crc3 = _mm_castsi128_ps(*xmm_crc3); + ps_res = _mm_xor_ps(ps_crc0, ps_crc3); + + *xmm_crc0 = *xmm_crc1; + *xmm_crc1 = *xmm_crc2; + *xmm_crc2 = x_tmp3; + *xmm_crc3 = _mm_castps_si128(ps_res); +} + +TARGET_SSE42_PCLMUL +local void fold_2(deflate_state *const s, + __m128i *xmm_crc0, __m128i *xmm_crc1, + __m128i *xmm_crc2, __m128i *xmm_crc3) +{ + const __m128i xmm_fold4 = _mm_set_epi32( + 0x00000001, 0x54442bd4, + 0x00000001, 0xc6e41596); + + __m128i x_tmp3, x_tmp2; + __m128 ps_crc0, ps_crc1, ps_crc2, ps_crc3, ps_res31, ps_res20; + + x_tmp3 = *xmm_crc3; + x_tmp2 = *xmm_crc2; + + *xmm_crc3 = *xmm_crc1; + *xmm_crc1 = _mm_clmulepi64_si128(*xmm_crc1, xmm_fold4, 0x01); + *xmm_crc3 = _mm_clmulepi64_si128(*xmm_crc3, xmm_fold4, 0x10); + ps_crc3 = _mm_castsi128_ps(*xmm_crc3); + ps_crc1 = _mm_castsi128_ps(*xmm_crc1); + ps_res31= _mm_xor_ps(ps_crc3, ps_crc1); + + *xmm_crc2 = *xmm_crc0; + *xmm_crc0 = _mm_clmulepi64_si128(*xmm_crc0, xmm_fold4, 0x01); + *xmm_crc2 = _mm_clmulepi64_si128(*xmm_crc2, xmm_fold4, 0x10); + ps_crc0 = _mm_castsi128_ps(*xmm_crc0); + ps_crc2 = _mm_castsi128_ps(*xmm_crc2); + ps_res20= _mm_xor_ps(ps_crc0, ps_crc2); + + *xmm_crc0 = x_tmp2; + *xmm_crc1 = x_tmp3; + *xmm_crc2 = _mm_castps_si128(ps_res20); + *xmm_crc3 = _mm_castps_si128(ps_res31); +} + +TARGET_SSE42_PCLMUL +local void fold_3(deflate_state *const s, + __m128i *xmm_crc0, __m128i *xmm_crc1, + __m128i *xmm_crc2, __m128i *xmm_crc3) +{ + const __m128i xmm_fold4 = _mm_set_epi32( + 0x00000001, 0x54442bd4, + 0x00000001, 0xc6e41596); + + __m128i x_tmp3; + __m128 ps_crc0, ps_crc1, ps_crc2, ps_crc3, ps_res32, ps_res21, ps_res10; + + x_tmp3 = *xmm_crc3; + + *xmm_crc3 = *xmm_crc2; + *xmm_crc2 = _mm_clmulepi64_si128(*xmm_crc2, xmm_fold4, 0x01); + *xmm_crc3 = _mm_clmulepi64_si128(*xmm_crc3, xmm_fold4, 0x10); + ps_crc2 = _mm_castsi128_ps(*xmm_crc2); + ps_crc3 = _mm_castsi128_ps(*xmm_crc3); + ps_res32 = _mm_xor_ps(ps_crc2, ps_crc3); + + *xmm_crc2 = *xmm_crc1; + *xmm_crc1 = _mm_clmulepi64_si128(*xmm_crc1, xmm_fold4, 0x01); + *xmm_crc2 = _mm_clmulepi64_si128(*xmm_crc2, xmm_fold4, 0x10); + ps_crc1 = _mm_castsi128_ps(*xmm_crc1); + ps_crc2 = _mm_castsi128_ps(*xmm_crc2); + ps_res21= _mm_xor_ps(ps_crc1, ps_crc2); + + *xmm_crc1 = *xmm_crc0; + *xmm_crc0 = _mm_clmulepi64_si128(*xmm_crc0, xmm_fold4, 0x01); + *xmm_crc1 = _mm_clmulepi64_si128(*xmm_crc1, xmm_fold4, 0x10); + ps_crc0 = _mm_castsi128_ps(*xmm_crc0); + ps_crc1 = _mm_castsi128_ps(*xmm_crc1); + ps_res10= _mm_xor_ps(ps_crc0, ps_crc1); + + *xmm_crc0 = x_tmp3; + *xmm_crc1 = _mm_castps_si128(ps_res10); + *xmm_crc2 = _mm_castps_si128(ps_res21); + *xmm_crc3 = _mm_castps_si128(ps_res32); +} + +TARGET_SSE42_PCLMUL +local void fold_4(deflate_state *const s, + __m128i *xmm_crc0, __m128i *xmm_crc1, + __m128i *xmm_crc2, __m128i *xmm_crc3) +{ + const __m128i xmm_fold4 = _mm_set_epi32( + 0x00000001, 0x54442bd4, + 0x00000001, 0xc6e41596); + + __m128i x_tmp0, x_tmp1, x_tmp2, x_tmp3; + __m128 ps_crc0, ps_crc1, ps_crc2, ps_crc3; + __m128 ps_t0, ps_t1, ps_t2, ps_t3; + __m128 ps_res0, ps_res1, ps_res2, ps_res3; + + x_tmp0 = *xmm_crc0; + x_tmp1 = *xmm_crc1; + x_tmp2 = *xmm_crc2; + x_tmp3 = *xmm_crc3; + + *xmm_crc0 = _mm_clmulepi64_si128(*xmm_crc0, xmm_fold4, 0x01); + x_tmp0 = _mm_clmulepi64_si128(x_tmp0, xmm_fold4, 0x10); + ps_crc0 = _mm_castsi128_ps(*xmm_crc0); + ps_t0 = _mm_castsi128_ps(x_tmp0); + ps_res0 = _mm_xor_ps(ps_crc0, ps_t0); + + *xmm_crc1 = _mm_clmulepi64_si128(*xmm_crc1, xmm_fold4, 0x01); + x_tmp1 = _mm_clmulepi64_si128(x_tmp1, xmm_fold4, 0x10); + ps_crc1 = _mm_castsi128_ps(*xmm_crc1); + ps_t1 = _mm_castsi128_ps(x_tmp1); + ps_res1 = _mm_xor_ps(ps_crc1, ps_t1); + + *xmm_crc2 = _mm_clmulepi64_si128(*xmm_crc2, xmm_fold4, 0x01); + x_tmp2 = _mm_clmulepi64_si128(x_tmp2, xmm_fold4, 0x10); + ps_crc2 = _mm_castsi128_ps(*xmm_crc2); + ps_t2 = _mm_castsi128_ps(x_tmp2); + ps_res2 = _mm_xor_ps(ps_crc2, ps_t2); + + *xmm_crc3 = _mm_clmulepi64_si128(*xmm_crc3, xmm_fold4, 0x01); + x_tmp3 = _mm_clmulepi64_si128(x_tmp3, xmm_fold4, 0x10); + ps_crc3 = _mm_castsi128_ps(*xmm_crc3); + ps_t3 = _mm_castsi128_ps(x_tmp3); + ps_res3 = _mm_xor_ps(ps_crc3, ps_t3); + + *xmm_crc0 = _mm_castps_si128(ps_res0); + *xmm_crc1 = _mm_castps_si128(ps_res1); + *xmm_crc2 = _mm_castps_si128(ps_res2); + *xmm_crc3 = _mm_castps_si128(ps_res3); +} + +local const unsigned zalign(32) pshufb_shf_table[60] = { + 0x84838281,0x88878685,0x8c8b8a89,0x008f8e8d, /* shl 15 (16 - 1)/shr1 */ + 0x85848382,0x89888786,0x8d8c8b8a,0x01008f8e, /* shl 14 (16 - 3)/shr2 */ + 0x86858483,0x8a898887,0x8e8d8c8b,0x0201008f, /* shl 13 (16 - 4)/shr3 */ + 0x87868584,0x8b8a8988,0x8f8e8d8c,0x03020100, /* shl 12 (16 - 4)/shr4 */ + 0x88878685,0x8c8b8a89,0x008f8e8d,0x04030201, /* shl 11 (16 - 5)/shr5 */ + 0x89888786,0x8d8c8b8a,0x01008f8e,0x05040302, /* shl 10 (16 - 6)/shr6 */ + 0x8a898887,0x8e8d8c8b,0x0201008f,0x06050403, /* shl 9 (16 - 7)/shr7 */ + 0x8b8a8988,0x8f8e8d8c,0x03020100,0x07060504, /* shl 8 (16 - 8)/shr8 */ + 0x8c8b8a89,0x008f8e8d,0x04030201,0x08070605, /* shl 7 (16 - 9)/shr9 */ + 0x8d8c8b8a,0x01008f8e,0x05040302,0x09080706, /* shl 6 (16 -10)/shr10*/ + 0x8e8d8c8b,0x0201008f,0x06050403,0x0a090807, /* shl 5 (16 -11)/shr11*/ + 0x8f8e8d8c,0x03020100,0x07060504,0x0b0a0908, /* shl 4 (16 -12)/shr12*/ + 0x008f8e8d,0x04030201,0x08070605,0x0c0b0a09, /* shl 3 (16 -13)/shr13*/ + 0x01008f8e,0x05040302,0x09080706,0x0d0c0b0a, /* shl 2 (16 -14)/shr14*/ + 0x0201008f,0x06050403,0x0a090807,0x0e0d0c0b /* shl 1 (16 -15)/shr15*/ +}; + +TARGET_SSE42_PCLMUL +local void partial_fold(deflate_state *const s, const size_t len, + __m128i *xmm_crc0, __m128i *xmm_crc1, + __m128i *xmm_crc2, __m128i *xmm_crc3, + __m128i *xmm_crc_part) +{ + + const __m128i xmm_fold4 = _mm_set_epi32( + 0x00000001, 0x54442bd4, + 0x00000001, 0xc6e41596); + const __m128i xmm_mask3 = _mm_set1_epi32(0x80808080); + + __m128i xmm_shl, xmm_shr, xmm_tmp1, xmm_tmp2, xmm_tmp3; + __m128i xmm_a0_0, xmm_a0_1; + __m128 ps_crc3, psa0_0, psa0_1, ps_res; + + xmm_shl = _mm_load_si128((__m128i *)pshufb_shf_table + (len - 1)); + xmm_shr = xmm_shl; + xmm_shr = _mm_xor_si128(xmm_shr, xmm_mask3); + + xmm_a0_0 = _mm_shuffle_epi8(*xmm_crc0, xmm_shl); + + *xmm_crc0 = _mm_shuffle_epi8(*xmm_crc0, xmm_shr); + xmm_tmp1 = _mm_shuffle_epi8(*xmm_crc1, xmm_shl); + *xmm_crc0 = _mm_or_si128(*xmm_crc0, xmm_tmp1); + + *xmm_crc1 = _mm_shuffle_epi8(*xmm_crc1, xmm_shr); + xmm_tmp2 = _mm_shuffle_epi8(*xmm_crc2, xmm_shl); + *xmm_crc1 = _mm_or_si128(*xmm_crc1, xmm_tmp2); + + *xmm_crc2 = _mm_shuffle_epi8(*xmm_crc2, xmm_shr); + xmm_tmp3 = _mm_shuffle_epi8(*xmm_crc3, xmm_shl); + *xmm_crc2 = _mm_or_si128(*xmm_crc2, xmm_tmp3); + + *xmm_crc3 = _mm_shuffle_epi8(*xmm_crc3, xmm_shr); + *xmm_crc_part = _mm_shuffle_epi8(*xmm_crc_part, xmm_shl); + *xmm_crc3 = _mm_or_si128(*xmm_crc3, *xmm_crc_part); + + xmm_a0_1 = _mm_clmulepi64_si128(xmm_a0_0, xmm_fold4, 0x10); + xmm_a0_0 = _mm_clmulepi64_si128(xmm_a0_0, xmm_fold4, 0x01); + + ps_crc3 = _mm_castsi128_ps(*xmm_crc3); + psa0_0 = _mm_castsi128_ps(xmm_a0_0); + psa0_1 = _mm_castsi128_ps(xmm_a0_1); + + ps_res = _mm_xor_ps(ps_crc3, psa0_0); + ps_res = _mm_xor_ps(ps_res, psa0_1); + + *xmm_crc3 = _mm_castps_si128(ps_res); +} + +TARGET_SSE42_PCLMUL +ZLIB_INTERNAL void crc_fold_copy(deflate_state *const s, + unsigned char *dst, const unsigned char *src, long len) +{ + unsigned long algn_diff; + __m128i xmm_t0, xmm_t1, xmm_t2, xmm_t3; + + CRC_LOAD(s) + + if (len < 16) { + if (len == 0) + return; + goto partial; + } + + algn_diff = (0 - (uintptr_t)src) & 0xF; + if (algn_diff) { + xmm_crc_part = _mm_loadu_si128((__m128i *)src); + _mm_storeu_si128((__m128i *)dst, xmm_crc_part); + + dst += algn_diff; + src += algn_diff; + len -= algn_diff; + + partial_fold(s, algn_diff, &xmm_crc0, &xmm_crc1, &xmm_crc2, &xmm_crc3, + &xmm_crc_part); + } + + while ((len -= 64) >= 0) { + xmm_t0 = _mm_load_si128((__m128i *)src); + xmm_t1 = _mm_load_si128((__m128i *)src + 1); + xmm_t2 = _mm_load_si128((__m128i *)src + 2); + xmm_t3 = _mm_load_si128((__m128i *)src + 3); + + fold_4(s, &xmm_crc0, &xmm_crc1, &xmm_crc2, &xmm_crc3); + + _mm_storeu_si128((__m128i *)dst, xmm_t0); + _mm_storeu_si128((__m128i *)dst + 1, xmm_t1); + _mm_storeu_si128((__m128i *)dst + 2, xmm_t2); + _mm_storeu_si128((__m128i *)dst + 3, xmm_t3); + + xmm_crc0 = _mm_xor_si128(xmm_crc0, xmm_t0); + xmm_crc1 = _mm_xor_si128(xmm_crc1, xmm_t1); + xmm_crc2 = _mm_xor_si128(xmm_crc2, xmm_t2); + xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_t3); + + src += 64; + dst += 64; + } + + /* + * len = num bytes left - 64 + */ + if (len + 16 >= 0) { + len += 16; + + xmm_t0 = _mm_load_si128((__m128i *)src); + xmm_t1 = _mm_load_si128((__m128i *)src + 1); + xmm_t2 = _mm_load_si128((__m128i *)src + 2); + + fold_3(s, &xmm_crc0, &xmm_crc1, &xmm_crc2, &xmm_crc3); + + _mm_storeu_si128((__m128i *)dst, xmm_t0); + _mm_storeu_si128((__m128i *)dst + 1, xmm_t1); + _mm_storeu_si128((__m128i *)dst + 2, xmm_t2); + + xmm_crc1 = _mm_xor_si128(xmm_crc1, xmm_t0); + xmm_crc2 = _mm_xor_si128(xmm_crc2, xmm_t1); + xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_t2); + + if (len == 0) + goto done; + + dst += 48; + src += 48; + } else if (len + 32 >= 0) { + len += 32; + + xmm_t0 = _mm_load_si128((__m128i *)src); + xmm_t1 = _mm_load_si128((__m128i *)src + 1); + + fold_2(s, &xmm_crc0, &xmm_crc1, &xmm_crc2, &xmm_crc3); + + _mm_storeu_si128((__m128i *)dst, xmm_t0); + _mm_storeu_si128((__m128i *)dst + 1, xmm_t1); + + xmm_crc2 = _mm_xor_si128(xmm_crc2, xmm_t0); + xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_t1); + + if (len == 0) + goto done; + + dst += 32; + src += 32; + } else if (len + 48 >= 0) { + len += 48; + + xmm_t0 = _mm_load_si128((__m128i *)src); + + fold_1(s, &xmm_crc0, &xmm_crc1, &xmm_crc2, &xmm_crc3); + + _mm_storeu_si128((__m128i *)dst, xmm_t0); + + xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_t0); + + if (len == 0) + goto done; + + dst += 16; + src += 16; + } else { + len += 64; + if (len == 0) + goto done; + } + +partial: + +#if defined(_MSC_VER) + /* VS does not permit the use of _mm_set_epi64x in 32-bit builds */ + { + int32_t parts[4] = {0, 0, 0, 0}; + memcpy(&parts, src, len); + xmm_crc_part = _mm_set_epi32(parts[3], parts[2], parts[1], parts[0]); + } +#else + { + int64_t parts[2] = {0, 0}; + memcpy(&parts, src, len); + xmm_crc_part = _mm_set_epi64x(parts[1], parts[0]); + } +#endif + + zmemcpy(dst, src, len); /* TODO: Possibly generate more efficient code. */ + partial_fold(s, len, &xmm_crc0, &xmm_crc1, &xmm_crc2, &xmm_crc3, + &xmm_crc_part); +done: + CRC_SAVE(s) +} + +local const unsigned zalign(16) crc_k[] = { + 0xccaa009e, 0x00000000, /* rk1 */ + 0x751997d0, 0x00000001, /* rk2 */ + 0xccaa009e, 0x00000000, /* rk5 */ + 0x63cd6124, 0x00000001, /* rk6 */ + 0xf7011640, 0x00000001, /* rk7 */ + 0xdb710640, 0x00000001 /* rk8 */ +}; + +local const unsigned zalign(16) crc_mask[4] = { + 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x00000000 +}; + +local const unsigned zalign(16) crc_mask2[4] = { + 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF +}; + +TARGET_SSE42_PCLMUL +unsigned ZLIB_INTERNAL crc_fold_512to32(deflate_state *const s) +{ + const __m128i xmm_mask = _mm_load_si128((__m128i *)crc_mask); + const __m128i xmm_mask2 = _mm_load_si128((__m128i *)crc_mask2); + + unsigned crc; + __m128i x_tmp0, x_tmp1, x_tmp2, crc_fold; + + __m128i xmm_crc0 = _mm_loadu_si128((__m128i *)s->crc0 + 0); + __m128i xmm_crc1 = _mm_loadu_si128((__m128i *)s->crc0 + 1); + __m128i xmm_crc2 = _mm_loadu_si128((__m128i *)s->crc0 + 2); + __m128i xmm_crc3 = _mm_loadu_si128((__m128i *)s->crc0 + 3); + + /* + * k1 + */ + crc_fold = _mm_load_si128((__m128i *)crc_k); + + x_tmp0 = _mm_clmulepi64_si128(xmm_crc0, crc_fold, 0x10); + xmm_crc0 = _mm_clmulepi64_si128(xmm_crc0, crc_fold, 0x01); + xmm_crc1 = _mm_xor_si128(xmm_crc1, x_tmp0); + xmm_crc1 = _mm_xor_si128(xmm_crc1, xmm_crc0); + + x_tmp1 = _mm_clmulepi64_si128(xmm_crc1, crc_fold, 0x10); + xmm_crc1 = _mm_clmulepi64_si128(xmm_crc1, crc_fold, 0x01); + xmm_crc2 = _mm_xor_si128(xmm_crc2, x_tmp1); + xmm_crc2 = _mm_xor_si128(xmm_crc2, xmm_crc1); + + x_tmp2 = _mm_clmulepi64_si128(xmm_crc2, crc_fold, 0x10); + xmm_crc2 = _mm_clmulepi64_si128(xmm_crc2, crc_fold, 0x01); + xmm_crc3 = _mm_xor_si128(xmm_crc3, x_tmp2); + xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_crc2); + + /* + * k5 + */ + crc_fold = _mm_load_si128((__m128i *)crc_k + 1); + + xmm_crc0 = xmm_crc3; + xmm_crc3 = _mm_clmulepi64_si128(xmm_crc3, crc_fold, 0); + xmm_crc0 = _mm_srli_si128(xmm_crc0, 8); + xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_crc0); + + xmm_crc0 = xmm_crc3; + xmm_crc3 = _mm_slli_si128(xmm_crc3, 4); + xmm_crc3 = _mm_clmulepi64_si128(xmm_crc3, crc_fold, 0x10); + xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_crc0); + xmm_crc3 = _mm_and_si128(xmm_crc3, xmm_mask2); + + /* + * k7 + */ + xmm_crc1 = xmm_crc3; + xmm_crc2 = xmm_crc3; + crc_fold = _mm_load_si128((__m128i *)crc_k + 2); + + xmm_crc3 = _mm_clmulepi64_si128(xmm_crc3, crc_fold, 0); + xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_crc2); + xmm_crc3 = _mm_and_si128(xmm_crc3, xmm_mask); + + xmm_crc2 = xmm_crc3; + xmm_crc3 = _mm_clmulepi64_si128(xmm_crc3, crc_fold, 0x10); + xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_crc2); + xmm_crc3 = _mm_xor_si128(xmm_crc3, xmm_crc1); + + crc = _mm_extract_epi32(xmm_crc3, 2); + return ~crc; +} + +#endif /* CRC32_SIMD_SSE42_PCLMUL */ diff --git a/packages/runtime/vendor/zlib/deflate.c b/packages/runtime/vendor/zlib/deflate.c index 012ea8148..b98a985e5 100644 --- a/packages/runtime/vendor/zlib/deflate.c +++ b/packages/runtime/vendor/zlib/deflate.c @@ -1,5 +1,5 @@ /* deflate.c -- compress data using the deflation algorithm - * Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler + * Copyright (C) 1995-2026 Jean-loup Gailly and Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -37,7 +37,7 @@ * REFERENCES * * Deutsch, L.P.,"DEFLATE Compressed Data Format Specification". - * Available in http://tools.ietf.org/html/rfc1951 + * Available at https://datatracker.ietf.org/doc/html/rfc1951 * * A description of the Rabin and Karp algorithm is given in the book * "Algorithms" by R. Sedgewick, Addison-Wesley, p252. @@ -48,11 +48,30 @@ */ /* @(#) $Id$ */ - +#include #include "deflate.h" +#include "cpu_features.h" + +#if defined(DEFLATE_SLIDE_HASH_SSE2) || defined(DEFLATE_SLIDE_HASH_NEON) +#include "slide_hash_simd.h" +#endif + +#include "compare256.h" + +#if defined(QAT_COMPRESSION_ENABLED) +#include "contrib/qat/deflate_qat.h" +#endif + +#include "contrib/optimizations/insert_string.h" + +#ifdef FASTEST +/* See http://crbug.com/1113596 */ +#error "FASTEST is not supported in Chromium's zlib." +#endif + const char deflate_copyright[] = - " deflate 1.3.1 Copyright 1995-2024 Jean-loup Gailly and Mark Adler "; + " deflate 1.3.2.1 Copyright 1995-2026 Jean-loup Gailly and Mark Adler "; /* If you use the zlib library in a product, an acknowledgment is welcome in the documentation of your product. If for some reason you cannot @@ -78,6 +97,11 @@ local block_state deflate_slow(deflate_state *s, int flush); local block_state deflate_rle(deflate_state *s, int flush); local block_state deflate_huff(deflate_state *s, int flush); +/* From crc32.c */ +extern void ZLIB_INTERNAL crc_reset(deflate_state *const s); +extern void ZLIB_INTERNAL crc_finalize(deflate_state *const s); +extern void ZLIB_INTERNAL copy_with_crc(z_streamp strm, Bytef *dst, long size); + /* =========================================================================== * Local data */ @@ -132,46 +156,17 @@ local const config configuration_table[10] = { /* rank Z_BLOCK between Z_NO_FLUSH and Z_PARTIAL_FLUSH */ #define RANK(f) (((f) * 2) - ((f) > 4 ? 9 : 0)) -/* =========================================================================== - * Update a hash value with the given input byte - * IN assertion: all calls to UPDATE_HASH are made with consecutive input - * characters, so that a running hash key can be computed from the previous - * key instead of complete recalculation each time. - */ -#define UPDATE_HASH(s,h,c) (h = (((h) << s->hash_shift) ^ (c)) & s->hash_mask) - - -/* =========================================================================== - * Insert string str in the dictionary and set match_head to the previous head - * of the hash chain (the most recent string with same hash key). Return - * the previous length of the hash chain. - * If this file is compiled with -DFASTEST, the compression level is forced - * to 1, and no hash chains are maintained. - * IN assertion: all calls to INSERT_STRING are made with consecutive input - * characters and the first MIN_MATCH bytes of str are valid (except for - * the last MIN_MATCH-1 bytes of the input file). - */ -#ifdef FASTEST -#define INSERT_STRING(s, str, match_head) \ - (UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]), \ - match_head = s->head[s->ins_h], \ - s->head[s->ins_h] = (Pos)(str)) -#else -#define INSERT_STRING(s, str, match_head) \ - (UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]), \ - match_head = s->prev[(str) & s->w_mask] = s->head[s->ins_h], \ - s->head[s->ins_h] = (Pos)(str)) -#endif - /* =========================================================================== * Initialize the hash table (avoiding 64K overflow for 16 bit systems). * prev[] will be initialized on the fly. + * TODO(cavalcantii): optimization opportunity, check comments on: + * https://chromium-review.googlesource.com/c/chromium/src/+/3561506/ */ #define CLEAR_HASH(s) \ do { \ s->head[s->hash_size - 1] = NIL; \ - zmemzero((Bytef *)s->head, \ - (unsigned)(s->hash_size - 1)*sizeof(*s->head)); \ + zmemzero(s->head, (unsigned)(s->hash_size - 1)*sizeof(*s->head)); \ + s->slid = 0; \ } while (0) /* =========================================================================== @@ -185,6 +180,12 @@ local const config configuration_table[10] = { # endif #endif local void slide_hash(deflate_state *s) { +#if defined(DEFLATE_SLIDE_HASH_SSE2) || defined(DEFLATE_SLIDE_HASH_NEON) + slide_hash_simd(s->head, s->prev, s->w_size, s->hash_size); + s->slid = 1; + return; +#endif + unsigned n, m; Posf *p; uInt wsize = s->w_size; @@ -195,8 +196,8 @@ local void slide_hash(deflate_state *s) { m = *--p; *p = (Pos)(m >= wsize ? m - wsize : NIL); } while (--n); - n = wsize; #ifndef FASTEST + n = wsize; p = &s->prev[n]; do { m = *--p; @@ -206,6 +207,7 @@ local void slide_hash(deflate_state *s) { */ } while (--n); #endif + s->slid = 1; } /* =========================================================================== @@ -223,15 +225,19 @@ local unsigned read_buf(z_streamp strm, Bytef *buf, unsigned size) { strm->avail_in -= len; - zmemcpy(buf, strm->next_in, len); - if (strm->state->wrap == 1) { - strm->adler = adler32(strm->adler, buf, len); - } + /* TODO(cavalcantii): verify if we can remove 'copy_with_crc', it is legacy + * of the Intel optimizations dating back to 2015. + */ #ifdef GZIP - else if (strm->state->wrap == 2) { - strm->adler = crc32(strm->adler, buf, len); - } + if (strm->state->wrap == 2) + copy_with_crc(strm, buf, len); + else #endif + { + zmemcpy(buf, strm->next_in, len); + if (strm->state->wrap == 1) + strm->adler = adler32(strm->adler, buf, len); + } strm->next_in += len; strm->total_in += len; @@ -259,7 +265,14 @@ local void fill_window(deflate_state *s) { more = (unsigned)(s->window_size -(ulg)s->lookahead -(ulg)s->strstart); /* Deal with !@#$% 64K limit: */ +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable: 4127) +#endif if (sizeof(int) <= 2) { +#ifdef _MSC_VER +#pragma warning(pop) +#endif if (more == 0 && s->strstart == 0 && s->lookahead == 0) { more = wsize; @@ -303,6 +316,20 @@ local void fill_window(deflate_state *s) { n = read_buf(s->strm, s->window + s->strstart + s->lookahead, more); s->lookahead += n; + /* Initialize the hash value now that we have some input: */ + if (s->chromium_zlib_hash) { + /* chromium hash reads 4 bytes */ + if (s->lookahead + s->insert > MIN_MATCH) { + uInt str = s->strstart - s->insert; + while (s->insert) { + insert_string(s, str); + str++; + s->insert--; + if (s->lookahead + s->insert <= MIN_MATCH) + break; + } + } + } else /* Initialize the hash value now that we have some input: */ if (s->lookahead + s->insert >= MIN_MATCH) { uInt str = s->strstart - s->insert; @@ -375,6 +402,8 @@ int ZEXPORT deflateInit_(z_streamp strm, int level, const char *version, /* To do: ignore strm->next_in if we use it as window */ } +#define WINDOW_PADDING 8 + /* ========================================================================= */ int ZEXPORT deflateInit2_(z_streamp strm, int level, int method, int windowBits, int memLevel, int strategy, @@ -383,6 +412,15 @@ int ZEXPORT deflateInit2_(z_streamp strm, int level, int method, int wrap = 1; static const char my_version[] = ZLIB_VERSION; + // Needed to activate optimized insert_string() that helps compression + // for all wrapper formats (e.g. RAW, ZLIB, GZIP). + // Feature detection is not triggered while using RAW mode (i.e. we never + // call crc32() with a NULL buffer). +#if defined(CRC32_ARMV8_CRC32) || defined(CRC32_SIMD_SSE42_PCLMUL) \ + || defined(RISCV_RVV) + cpu_check_features(); +#endif + if (version == Z_NULL || version[0] != my_version[0] || stream_size != sizeof(z_stream)) { return Z_VERSION_ERROR; @@ -431,6 +469,7 @@ int ZEXPORT deflateInit2_(z_streamp strm, int level, int method, if (windowBits == 8) windowBits = 9; /* until 256-byte window bug fixed */ s = (deflate_state *) ZALLOC(strm, 1, sizeof(deflate_state)); if (s == Z_NULL) return Z_MEM_ERROR; + zmemzero(s, sizeof(deflate_state)); strm->state = (struct internal_state FAR *)s; s->strm = strm; s->status = INIT_STATE; /* to pass state test in deflateReset() */ @@ -441,12 +480,23 @@ int ZEXPORT deflateInit2_(z_streamp strm, int level, int method, s->w_size = 1 << s->w_bits; s->w_mask = s->w_size - 1; - s->hash_bits = (uInt)memLevel + 7; + s->chromium_zlib_hash = 1; +#if defined(USE_ZLIB_RABIN_KARP_ROLLING_HASH) + s->chromium_zlib_hash = 0; +#endif + + s->hash_bits = memLevel + 7; + if (s->chromium_zlib_hash && s->hash_bits < 15) { + s->hash_bits = 15; + } + s->hash_size = 1 << s->hash_bits; s->hash_mask = s->hash_size - 1; s->hash_shift = ((s->hash_bits + MIN_MATCH-1) / MIN_MATCH); - s->window = (Bytef *) ZALLOC(strm, s->w_size, 2*sizeof(Byte)); + s->window = (Bytef *) ZALLOC(strm, + s->w_size + WINDOW_PADDING, + 2*sizeof(Byte)); s->prev = (Posf *) ZALLOC(strm, s->w_size, sizeof(Pos)); s->head = (Posf *) ZALLOC(strm, s->hash_size, sizeof(Pos)); @@ -492,8 +542,11 @@ int ZEXPORT deflateInit2_(z_streamp strm, int level, int method, * the compressed data for a dynamic block also cannot overwrite the * symbols from which it is being constructed. */ - - s->pending_buf = (uchf *) ZALLOC(strm, s->lit_bufsize, LIT_BUFS); +#ifdef LIT_MEM + s->pending_buf = (uchf *) ZALLOC(strm, s->lit_bufsize, 5); +#else + s->pending_buf = (uchf *) ZALLOC(strm, s->lit_bufsize, 4); +#endif s->pending_buf_size = (ulg)s->lit_bufsize * 4; if (s->window == Z_NULL || s->prev == Z_NULL || s->head == Z_NULL || @@ -503,6 +556,13 @@ int ZEXPORT deflateInit2_(z_streamp strm, int level, int method, deflateEnd (strm); return Z_MEM_ERROR; } + /* Avoid use of unitialized values in the window, see crbug.com/1137613 and + * crbug.com/1144420 */ + zmemzero(s->window, (s->w_size + WINDOW_PADDING) * (2 * sizeof(Byte))); + /* Avoid use of uninitialized value, see: + * https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11360 + */ + zmemzero(s->prev, s->w_size * sizeof(Pos)); #ifdef LIT_MEM s->d_buf = (ushf *)(s->pending_buf + (s->lit_bufsize << 1)); s->l_buf = s->pending_buf + (s->lit_bufsize << 2); @@ -520,6 +580,13 @@ int ZEXPORT deflateInit2_(z_streamp strm, int level, int method, s->strategy = strategy; s->method = (Byte)method; +#if defined(QAT_COMPRESSION_ENABLED) + s->qat_s = NULL; + if (s->level && qat_deflate_init() == Z_OK) { + s->qat_s = qat_deflate_state_init(s->level, s->wrap); + } +#endif + return deflateReset(strm); } @@ -589,11 +656,7 @@ int ZEXPORT deflateSetDictionary(z_streamp strm, const Bytef *dictionary, str = s->strstart; n = s->lookahead - (MIN_MATCH-1); do { - UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); -#ifndef FASTEST - s->prev[str & s->w_mask] = s->head[s->ins_h]; -#endif - s->head[s->ins_h] = (Pos)str; + insert_string(s, str); str++; } while (--n); s->strstart = str; @@ -712,10 +775,23 @@ int ZEXPORT deflateSetHeader(z_streamp strm, gz_headerp head) { /* ========================================================================= */ int ZEXPORT deflatePending(z_streamp strm, unsigned *pending, int *bits) { if (deflateStateCheck(strm)) return Z_STREAM_ERROR; - if (pending != Z_NULL) - *pending = strm->state->pending; if (bits != Z_NULL) *bits = strm->state->bi_valid; + if (pending != Z_NULL) { + *pending = (unsigned)strm->state->pending; + if (*pending != strm->state->pending) { + *pending = (unsigned)-1; + return Z_BUF_ERROR; + } + } + return Z_OK; +} + +/* ========================================================================= */ +int ZEXPORT deflateUsed(z_streamp strm, int *bits) { + if (deflateStateCheck(strm)) return Z_STREAM_ERROR; + if (bits != Z_NULL) + *bits = strm->state->bi_used; return Z_OK; } @@ -739,7 +815,11 @@ int ZEXPORT deflatePrime(z_streamp strm, int bits, int value) { put = Buf_size - s->bi_valid; if (put > bits) put = bits; +#if defined(DEFLATE_CHUNK_WRITE_64LE) + s->bi_buf |= (uint64_t)((value & ((1ULL << put) - 1)) << s->bi_valid); +#else s->bi_buf |= (ush)((value & ((1 << put) - 1)) << s->bi_valid); +#endif /* DEFLATE_CHUNK_WRITE_64LE */ s->bi_valid += put; _tr_flush_bits(s); value >>= put; @@ -831,28 +911,34 @@ int ZEXPORT deflateTune(z_streamp strm, int good_length, int max_lazy, * * Shifts are used to approximate divisions, for speed. */ -uLong ZEXPORT deflateBound(z_streamp strm, uLong sourceLen) { +z_size_t ZEXPORT deflateBound_z(z_streamp strm, z_size_t sourceLen) { deflate_state *s; - uLong fixedlen, storelen, wraplen; + z_size_t fixedlen, storelen, wraplen, bound; /* upper bound for fixed blocks with 9-bit literals and length 255 (memLevel == 2, which is the lowest that may not use stored blocks) -- ~13% overhead plus a small constant */ fixedlen = sourceLen + (sourceLen >> 3) + (sourceLen >> 8) + (sourceLen >> 9) + 4; + if (fixedlen < sourceLen) + fixedlen = (z_size_t)-1; /* upper bound for stored blocks with length 127 (memLevel == 1) -- ~4% overhead plus a small constant */ storelen = sourceLen + (sourceLen >> 5) + (sourceLen >> 7) + (sourceLen >> 11) + 7; + if (storelen < sourceLen) + storelen = (z_size_t)-1; - /* if can't get parameters, return larger bound plus a zlib wrapper */ - if (deflateStateCheck(strm)) - return (fixedlen > storelen ? fixedlen : storelen) + 6; + /* if can't get parameters, return larger bound plus a wrapper */ + if (deflateStateCheck(strm)) { + bound = fixedlen > storelen ? fixedlen : storelen; + return bound + 18 < bound ? (z_size_t)-1 : bound + 18; + } /* compute wrapper length */ s = strm->state; - switch (s->wrap) { + switch (s->wrap < 0 ? -s->wrap : s->wrap) { case 0: /* raw deflate */ wraplen = 0; break; @@ -882,18 +968,33 @@ uLong ZEXPORT deflateBound(z_streamp strm, uLong sourceLen) { break; #endif default: /* for compiler happiness */ - wraplen = 6; + wraplen = 18; + } + + /* With Chromium's hashing, s->hash_bits may not correspond to the + memLevel, making the computations below incorrect. Return the + conservative bound. */ + if (s->chromium_zlib_hash) { + bound = fixedlen > storelen ? fixedlen : storelen; + return bound + wraplen < bound ? (z_size_t)-1 : bound + wraplen; } /* if not default parameters, return one of the conservative bounds */ - if (s->w_bits != 15 || s->hash_bits != 8 + 7) - return (s->w_bits <= s->hash_bits && s->level ? fixedlen : storelen) + - wraplen; + if (s->w_bits != 15 || s->hash_bits != 8 + 7) { + bound = s->w_bits <= s->hash_bits && s->level ? fixedlen : + storelen; + return bound + wraplen < bound ? (z_size_t)-1 : bound + wraplen; + } /* default settings: return tight bound for that case -- ~0.03% overhead plus a small constant */ - return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + - (sourceLen >> 25) + 13 - 6 + wraplen; + bound = sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + + (sourceLen >> 25) + 13 - 6 + wraplen; + return bound < sourceLen ? (z_size_t)-1 : bound; +} +uLong ZEXPORT deflateBound(z_streamp strm, uLong sourceLen) { + z_size_t bound = deflateBound_z(strm, sourceLen); + return (uLong)bound != bound ? (uLong)-1 : (uLong)bound; } /* ========================================================================= @@ -916,9 +1017,15 @@ local void flush_pending(z_streamp strm) { unsigned len; deflate_state *s = strm->state; +#if defined(QAT_COMPRESSION_ENABLED) + if (s->qat_s) { + qat_flush_pending(s); + } +#endif + _tr_flush_bits(s); - len = s->pending; - if (len > strm->avail_out) len = strm->avail_out; + len = s->pending > strm->avail_out ? strm->avail_out : + (unsigned)s->pending; if (len == 0) return; zmemcpy(strm->next_out, s->pending_out, len); @@ -938,8 +1045,8 @@ local void flush_pending(z_streamp strm) { #define HCRC_UPDATE(beg) \ do { \ if (s->gzhead->hcrc && s->pending > (beg)) \ - strm->adler = crc32(strm->adler, s->pending_buf + (beg), \ - s->pending - (beg)); \ + strm->adler = crc32_z(strm->adler, s->pending_buf + (beg), \ + s->pending - (beg)); \ } while (0) /* ========================================================================= */ @@ -1030,7 +1137,7 @@ int ZEXPORT deflate(z_streamp strm, int flush) { #ifdef GZIP if (s->status == GZIP_STATE) { /* gzip header */ - strm->adler = crc32(0L, Z_NULL, 0); + crc_reset(s); put_byte(s, 31); put_byte(s, 139); put_byte(s, 8); @@ -1073,8 +1180,8 @@ int ZEXPORT deflate(z_streamp strm, int flush) { put_byte(s, (s->gzhead->extra_len >> 8) & 0xff); } if (s->gzhead->hcrc) - strm->adler = crc32(strm->adler, s->pending_buf, - s->pending); + strm->adler = crc32_z(strm->adler, s->pending_buf, + s->pending); s->gzindex = 0; s->status = EXTRA_STATE; } @@ -1082,9 +1189,9 @@ int ZEXPORT deflate(z_streamp strm, int flush) { if (s->status == EXTRA_STATE) { if (s->gzhead->extra != Z_NULL) { ulg beg = s->pending; /* start of bytes to update crc */ - uInt left = (s->gzhead->extra_len & 0xffff) - s->gzindex; + ulg left = (s->gzhead->extra_len & 0xffff) - s->gzindex; while (s->pending + left > s->pending_buf_size) { - uInt copy = s->pending_buf_size - s->pending; + ulg copy = s->pending_buf_size - s->pending; zmemcpy(s->pending_buf + s->pending, s->gzhead->extra + s->gzindex, copy); s->pending = s->pending_buf_size; @@ -1231,6 +1338,7 @@ int ZEXPORT deflate(z_streamp strm, int flush) { /* Write the trailer */ #ifdef GZIP if (s->wrap == 2) { + crc_finalize(s); put_byte(s, (Byte)(strm->adler & 0xff)); put_byte(s, (Byte)((strm->adler >> 8) & 0xff)); put_byte(s, (Byte)((strm->adler >> 16) & 0xff)); @@ -1268,6 +1376,12 @@ int ZEXPORT deflateEnd(z_streamp strm) { TRY_FREE(strm, strm->state->prev); TRY_FREE(strm, strm->state->window); +#if defined(QAT_COMPRESSION_ENABLED) + if (strm->state->qat_s) { + qat_deflate_state_free(strm->state); + } +#endif + ZFREE(strm, strm->state); strm->state = Z_NULL; @@ -1295,18 +1409,25 @@ int ZEXPORT deflateCopy(z_streamp dest, z_streamp source) { ss = source->state; - zmemcpy((voidpf)dest, (voidpf)source, sizeof(z_stream)); + zmemcpy(dest, source, sizeof(z_stream)); ds = (deflate_state *) ZALLOC(dest, 1, sizeof(deflate_state)); if (ds == Z_NULL) return Z_MEM_ERROR; + zmemzero(ds, sizeof(deflate_state)); dest->state = (struct internal_state FAR *) ds; - zmemcpy((voidpf)ds, (voidpf)ss, sizeof(deflate_state)); + zmemcpy(ds, ss, sizeof(deflate_state)); ds->strm = dest; - ds->window = (Bytef *) ZALLOC(dest, ds->w_size, 2*sizeof(Byte)); + ds->window = (Bytef *) ZALLOC(dest, + ds->w_size + WINDOW_PADDING, + 2*sizeof(Byte)); ds->prev = (Posf *) ZALLOC(dest, ds->w_size, sizeof(Pos)); ds->head = (Posf *) ZALLOC(dest, ds->hash_size, sizeof(Pos)); - ds->pending_buf = (uchf *) ZALLOC(dest, ds->lit_bufsize, LIT_BUFS); +#ifdef LIT_MEM + ds->pending_buf = (uchf *) ZALLOC(dest, ds->lit_bufsize, 5); +#else + ds->pending_buf = (uchf *) ZALLOC(dest, ds->lit_bufsize, 4); +#endif if (ds->window == Z_NULL || ds->prev == Z_NULL || ds->head == Z_NULL || ds->pending_buf == Z_NULL) { @@ -1314,23 +1435,36 @@ int ZEXPORT deflateCopy(z_streamp dest, z_streamp source) { return Z_MEM_ERROR; } /* following zmemcpy do not work for 16-bit MSDOS */ - zmemcpy(ds->window, ss->window, ds->w_size * 2 * sizeof(Byte)); - zmemcpy((voidpf)ds->prev, (voidpf)ss->prev, ds->w_size * sizeof(Pos)); - zmemcpy((voidpf)ds->head, (voidpf)ss->head, ds->hash_size * sizeof(Pos)); - zmemcpy(ds->pending_buf, ss->pending_buf, ds->lit_bufsize * LIT_BUFS); + zmemcpy(ds->window, ss->window, ss->high_water); + zmemcpy(ds->prev, ss->prev, + (ss->slid || ss->strstart - ss->insert > ds->w_size ? ds->w_size : + ss->strstart - ss->insert) * sizeof(Pos)); + zmemcpy(ds->head, ss->head, ds->hash_size * sizeof(Pos)); ds->pending_out = ds->pending_buf + (ss->pending_out - ss->pending_buf); + zmemcpy(ds->pending_out, ss->pending_out, ss->pending); #ifdef LIT_MEM ds->d_buf = (ushf *)(ds->pending_buf + (ds->lit_bufsize << 1)); ds->l_buf = ds->pending_buf + (ds->lit_bufsize << 2); + zmemcpy(ds->d_buf, ss->d_buf, ss->sym_next * sizeof(ush)); + zmemcpy(ds->l_buf, ss->l_buf, ss->sym_next); #else ds->sym_buf = ds->pending_buf + ds->lit_bufsize; + zmemcpy(ds->sym_buf, ss->sym_buf, ss->sym_next); #endif ds->l_desc.dyn_tree = ds->dyn_ltree; ds->d_desc.dyn_tree = ds->dyn_dtree; ds->bl_desc.dyn_tree = ds->bl_tree; +#if defined(QAT_COMPRESSION_ENABLED) + if(ss->qat_s) { + ds->qat_s = qat_deflate_copy(ss); + if (!ds->qat_s) + return Z_MEM_ERROR; + } +#endif + return Z_OK; #endif /* MAXSEG_64K */ } @@ -1347,9 +1481,9 @@ int ZEXPORT deflateCopy(z_streamp dest, z_streamp source) { */ local uInt longest_match(deflate_state *s, IPos cur_match) { unsigned chain_length = s->max_chain_length;/* max hash chain length */ - register Bytef *scan = s->window + s->strstart; /* current string */ - register Bytef *match; /* matched string */ - register int len; /* length of current match */ + Bytef *scan = s->window + s->strstart; /* current string */ + Bytef *match; /* matched string */ + int len; /* length of current match */ int best_len = (int)s->prev_length; /* best match length so far */ int nice_match = s->nice_match; /* stop if match long enough */ IPos limit = s->strstart > (IPos)MAX_DIST(s) ? @@ -1360,17 +1494,23 @@ local uInt longest_match(deflate_state *s, IPos cur_match) { Posf *prev = s->prev; uInt wmask = s->w_mask; -#ifdef UNALIGNED_OK +#if defined(DEFLATE_COMPARE256_64LE) + /* Quickly reject non-matches with the 2-byte prefilter + * (scan_start/scan_end); candidates that pass are extended 8 bytes at a + * time with compare256(). */ + uInt scan_start = read16(scan); + uInt scan_end = read16(scan + best_len - 1); +#elif defined(UNALIGNED_OK) /* Compare two bytes at a time. Note: this is not always beneficial. * Try with and without -DUNALIGNED_OK to check. */ - register Bytef *strend = s->window + s->strstart + MAX_MATCH - 1; - register ush scan_start = *(ushf*)scan; - register ush scan_end = *(ushf*)(scan + best_len - 1); + Bytef *strend = s->window + s->strstart + MAX_MATCH - 1; + ush scan_start = *(ushf*)scan; + ush scan_end = *(ushf*)(scan + best_len - 1); #else - register Bytef *strend = s->window + s->strstart + MAX_MATCH; - register Byte scan_end1 = scan[best_len - 1]; - register Byte scan_end = scan[best_len]; + Bytef *strend = s->window + s->strstart + MAX_MATCH; + Byte scan_end1 = scan[best_len - 1]; + Byte scan_end = scan[best_len]; #endif /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. @@ -1402,7 +1542,13 @@ local uInt longest_match(deflate_state *s, IPos cur_match) { * However the length of the match is limited to the lookahead, so * the output of deflate is not affected by the uninitialized values. */ -#if (defined(UNALIGNED_OK) && MAX_MATCH == 258) +#if defined(DEFLATE_COMPARE256_64LE) + if (read16(match + best_len - 1) != scan_end || + read16(match) != scan_start) continue; + /* scan_start matched, so bytes 0..1 are equal; compare the remaining + * up to 256 bytes so the length can still reach MAX_MATCH (258). */ + len = 2 + compare256(scan + 2, match + 2); +#elif (defined(UNALIGNED_OK) && MAX_MATCH == 258) /* This code assumes sizeof(unsigned short) == 2. Do not use * UNALIGNED_OK if your compiler uses a different size. */ @@ -1418,7 +1564,16 @@ local uInt longest_match(deflate_state *s, IPos cur_match) { * necessary to put more guard bytes at the end of the window, or * to check more often for insufficient lookahead. */ - Assert(scan[2] == match[2], "scan[2]?"); + if (!s->chromium_zlib_hash) { + Assert(scan[2] == match[2], "scan[2]?"); + } else { + /* When using CRC hashing, scan[2] and match[2] may mismatch, but in + * that case at least one of the other hashed bytes will mismatch + * also. Bytes 0 and 1 were already checked above, and we know there + * are at least four bytes to check otherwise the mismatch would have + * been found by the scan_end comparison above, so: */ + Assert(scan[2] == match[2] || scan[3] != match[3], "scan[2]??"); + } scan++, match++; do { } while (*(ushf*)(scan += 2) == *(ushf*)(match += 2) && @@ -1429,7 +1584,7 @@ local uInt longest_match(deflate_state *s, IPos cur_match) { /* The funny "do {}" generates better code on most compilers */ /* Here, scan <= window + strstart + 257 */ - Assert(scan <= s->window + (unsigned)(s->window_size - 1), + Assert(scan <= s->window+(unsigned)(s->window_size - 1), "wild scan"); if (*scan == *match) scan++; @@ -1438,10 +1593,10 @@ local uInt longest_match(deflate_state *s, IPos cur_match) { #else /* UNALIGNED_OK */ - if (match[best_len] != scan_end || + if (match[best_len] != scan_end || match[best_len - 1] != scan_end1 || - *match != *scan || - *++match != scan[1]) continue; + *match != *scan || + *++match != scan[1]) continue; /* The check at best_len - 1 can be removed because it will be made * again later. (This heuristic is not always a win.) @@ -1450,7 +1605,16 @@ local uInt longest_match(deflate_state *s, IPos cur_match) { * the hash keys are equal and that HASH_BITS >= 8. */ scan += 2, match++; - Assert(*scan == *match, "match[2]?"); + if (!s->chromium_zlib_hash) { + Assert(*scan == *match, "match[2]?"); + } else { + /* When using CRC hashing, scan[2] and match[2] may mismatch, but in + * that case at least one of the other hashed bytes will mismatch + * also. Bytes 0 and 1 were already checked above, and we know there + * are at least four bytes to check otherwise the mismatch would have + * been found by the scan_end comparison above, so: */ + Assert(*scan == *match || scan[1] != match[1], "match[2]??"); + } /* We check for insufficient lookahead only every 8th comparison; * the 256th check will be made at strstart + 258. @@ -1474,7 +1638,9 @@ local uInt longest_match(deflate_state *s, IPos cur_match) { s->match_start = cur_match; best_len = len; if (len >= nice_match) break; -#ifdef UNALIGNED_OK +#if defined(DEFLATE_COMPARE256_64LE) + scan_end = read16(scan + best_len - 1); +#elif defined(UNALIGNED_OK) scan_end = *(ushf*)(scan + best_len - 1); #else scan_end1 = scan[best_len - 1]; @@ -1494,10 +1660,10 @@ local uInt longest_match(deflate_state *s, IPos cur_match) { * Optimized version for FASTEST only */ local uInt longest_match(deflate_state *s, IPos cur_match) { - register Bytef *scan = s->window + s->strstart; /* current string */ - register Bytef *match; /* matched string */ - register int len; /* length of current match */ - register Bytef *strend = s->window + s->strstart + MAX_MATCH; + Bytef *scan = s->window + s->strstart; /* current string */ + Bytef *match; /* matched string */ + int len; /* length of current match */ + Bytef *strend = s->window + s->strstart + MAX_MATCH; /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. * It is easy to get rid of this optimization if necessary. @@ -1557,7 +1723,7 @@ local uInt longest_match(deflate_state *s, IPos cur_match) { local void check_match(deflate_state *s, IPos start, IPos match, int length) { /* check that the match is indeed a match */ Bytef *back = s->window + (int)match, *here = s->window + start; - IPos len = length; + IPos len = (IPos)length; if (match == (IPos)-1) { /* match starts one byte before the current window -- just compare the subsequent length-1 bytes */ @@ -1629,13 +1795,14 @@ local block_state deflate_stored(deflate_state *s, int flush) { * this is 32K. This can be as small as 507 bytes for memLevel == 1. For * large input and output buffers, the stored block size will be larger. */ - unsigned min_block = MIN(s->pending_buf_size - 5, s->w_size); + unsigned min_block = (unsigned)(MIN(s->pending_buf_size - 5, s->w_size)); /* Copy as many min_block or larger stored blocks directly to next_out as * possible. If flushing, copy the remaining available input to next_out as * stored blocks, if there is enough space. */ - unsigned len, left, have, last = 0; + int last = 0; + unsigned len, left, have; unsigned used = s->strm->avail_in; do { /* Set len to the maximum size block that we can copy directly with the @@ -1643,12 +1810,12 @@ local block_state deflate_stored(deflate_state *s, int flush) { * would be copied from what's left in the window. */ len = MAX_STORED; /* maximum deflate stored block length */ - have = (s->bi_valid + 42) >> 3; /* number of header bytes */ + have = ((unsigned)s->bi_valid + 42) >> 3; /* bytes in header */ if (s->strm->avail_out < have) /* need room for header */ break; /* maximum stored block length that will fit in avail_out: */ have = s->strm->avail_out - have; - left = s->strstart - s->block_start; /* bytes left in window */ + left = (unsigned)(s->strstart - s->block_start); /* window bytes */ if (len > (ulg)left + s->strm->avail_in) len = left + s->strm->avail_in; /* limit len to the input */ if (len > have) @@ -1671,10 +1838,10 @@ local block_state deflate_stored(deflate_state *s, int flush) { _tr_stored_block(s, (char *)0, 0L, last); /* Replace the lengths in the dummy stored block with len. */ - s->pending_buf[s->pending - 4] = len; - s->pending_buf[s->pending - 3] = len >> 8; - s->pending_buf[s->pending - 2] = ~len; - s->pending_buf[s->pending - 1] = ~len >> 8; + s->pending_buf[s->pending - 4] = (Bytef)len; + s->pending_buf[s->pending - 3] = (Bytef)(len >> 8); + s->pending_buf[s->pending - 2] = (Bytef)~len; + s->pending_buf[s->pending - 1] = (Bytef)(~len >> 8); /* Write the stored block header bytes. */ flush_pending(s->strm); @@ -1745,8 +1912,10 @@ local block_state deflate_stored(deflate_state *s, int flush) { s->high_water = s->strstart; /* If the last block was written to next_out, then done. */ - if (last) + if (last) { + s->bi_used = 8; return finish_done; + } /* If flushing and all input has been consumed, then done. */ if (flush != Z_NO_FLUSH && flush != Z_FINISH && @@ -1754,7 +1923,7 @@ local block_state deflate_stored(deflate_state *s, int flush) { return block_done; /* Fill the window with any remaining input. */ - have = s->window_size - s->strstart; + have = (unsigned)(s->window_size - s->strstart); if (s->strm->avail_in > have && s->block_start >= (long)s->w_size) { /* Slide the window down. */ s->block_start -= s->w_size; @@ -1781,11 +1950,11 @@ local block_state deflate_stored(deflate_state *s, int flush) { * have enough input for a worthy block, or if flushing and there is enough * room for the remaining input as a stored block in the pending buffer. */ - have = (s->bi_valid + 42) >> 3; /* number of header bytes */ + have = ((unsigned)s->bi_valid + 42) >> 3; /* bytes in header */ /* maximum stored block length that will fit in pending: */ - have = MIN(s->pending_buf_size - have, MAX_STORED); + have = (unsigned)MIN(s->pending_buf_size - have, MAX_STORED); min_block = MIN(have, s->w_size); - left = s->strstart - s->block_start; + left = (unsigned)(s->strstart - s->block_start); if (left >= min_block || ((left || flush == Z_FINISH) && flush != Z_NO_FLUSH && s->strm->avail_in == 0 && left <= have)) { @@ -1798,6 +1967,8 @@ local block_state deflate_stored(deflate_state *s, int flush) { } /* We've done all we can with the available input and output. */ + if (last) + s->bi_used = 8; return last ? finish_started : need_more; } @@ -1812,6 +1983,24 @@ local block_state deflate_fast(deflate_state *s, int flush) { IPos hash_head; /* head of the hash chain */ int bflush; /* set if current block must be flushed */ +#if defined(QAT_COMPRESSION_ENABLED) + if (s->qat_s) { + qat_block_state qat_block = qat_deflate_step(s, flush); + switch (qat_block) { + case qat_block_need_more: + return need_more; + case qat_block_done: + return block_done; + case qat_block_finish_started: + return finish_started; + case qat_block_finish_done: + return finish_done; + case qat_failure: + break; + } + } +#endif + for (;;) { /* Make sure that we always have enough lookahead, except * at the end of the input file. We need MAX_MATCH bytes @@ -1831,7 +2020,7 @@ local block_state deflate_fast(deflate_state *s, int flush) { */ hash_head = NIL; if (s->lookahead >= MIN_MATCH) { - INSERT_STRING(s, s->strstart, hash_head); + hash_head = insert_string(s, s->strstart); } /* Find the longest match, discarding those <= prev_length. @@ -1846,7 +2035,7 @@ local block_state deflate_fast(deflate_state *s, int flush) { /* longest_match() sets match_start */ } if (s->match_length >= MIN_MATCH) { - check_match(s, s->strstart, s->match_start, s->match_length); + check_match(s, s->strstart, s->match_start, (int)s->match_length); _tr_tally_dist(s, s->strstart - s->match_start, s->match_length - MIN_MATCH, bflush); @@ -1862,7 +2051,7 @@ local block_state deflate_fast(deflate_state *s, int flush) { s->match_length--; /* string at strstart already in table */ do { s->strstart++; - INSERT_STRING(s, s->strstart, hash_head); + hash_head = insert_string(s, s->strstart); /* strstart never exceeds WSIZE-MAX_MATCH, so there are * always MIN_MATCH bytes ahead. */ @@ -1873,14 +2062,17 @@ local block_state deflate_fast(deflate_state *s, int flush) { { s->strstart += s->match_length; s->match_length = 0; - s->ins_h = s->window[s->strstart]; - UPDATE_HASH(s, s->ins_h, s->window[s->strstart + 1]); + + if (!s->chromium_zlib_hash) { + s->ins_h = s->window[s->strstart]; + UPDATE_HASH(s, s->ins_h, s->window[s->strstart + 1]); #if MIN_MATCH != 3 - Call UPDATE_HASH() MIN_MATCH-3 more times + Call UPDATE_HASH() MIN_MATCH-3 more times #endif - /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not - * matter since it will be recomputed at next deflate call. - */ + /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not + * matter since it will be recomputed at next deflate call. + */ + } } } else { /* No match, output a literal byte */ @@ -1911,6 +2103,24 @@ local block_state deflate_slow(deflate_state *s, int flush) { IPos hash_head; /* head of hash chain */ int bflush; /* set if current block must be flushed */ +#if defined(QAT_COMPRESSION_ENABLED) + if (s->qat_s) { + qat_block_state qat_block = qat_deflate_step(s, flush); + switch (qat_block) { + case qat_block_need_more: + return need_more; + case qat_block_done: + return block_done; + case qat_block_finish_started: + return finish_started; + case qat_block_finish_done: + return finish_done; + case qat_failure: + break; + } + } +#endif + /* Process the input block. */ for (;;) { /* Make sure that we always have enough lookahead, except @@ -1931,7 +2141,7 @@ local block_state deflate_slow(deflate_state *s, int flush) { */ hash_head = NIL; if (s->lookahead >= MIN_MATCH) { - INSERT_STRING(s, s->strstart, hash_head); + hash_head = insert_string(s, s->strstart); } /* Find the longest match, discarding those <= prev_length. @@ -1968,7 +2178,7 @@ local block_state deflate_slow(deflate_state *s, int flush) { uInt max_insert = s->strstart + s->lookahead - MIN_MATCH; /* Do not insert strings in hash table beyond this. */ - check_match(s, s->strstart - 1, s->prev_match, s->prev_length); + check_match(s, s->strstart - 1, s->prev_match, (int)s->prev_length); _tr_tally_dist(s, s->strstart - 1 - s->prev_match, s->prev_length - MIN_MATCH, bflush); @@ -1982,7 +2192,7 @@ local block_state deflate_slow(deflate_state *s, int flush) { s->prev_length -= 2; do { if (++s->strstart <= max_insert) { - INSERT_STRING(s, s->strstart, hash_head); + hash_head = insert_string(s, s->strstart); } } while (--s->prev_length != 0); s->match_available = 0; @@ -2076,7 +2286,7 @@ local block_state deflate_rle(deflate_state *s, int flush) { /* Emit match if have run of MIN_MATCH or longer, else emit literal */ if (s->match_length >= MIN_MATCH) { - check_match(s, s->strstart, s->strstart - 1, s->match_length); + check_match(s, s->strstart, s->strstart - 1, (int)s->match_length); _tr_tally_dist(s, 1, s->match_length - MIN_MATCH, bflush); diff --git a/packages/runtime/vendor/zlib/deflate.h b/packages/runtime/vendor/zlib/deflate.h index 300c6ada6..c55fd8f6a 100644 --- a/packages/runtime/vendor/zlib/deflate.h +++ b/packages/runtime/vendor/zlib/deflate.h @@ -1,5 +1,5 @@ /* deflate.h -- internal compression state - * Copyright (C) 1995-2024 Jean-loup Gailly + * Copyright (C) 1995-2026 Jean-loup Gailly * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -13,6 +13,10 @@ #ifndef DEFLATE_H #define DEFLATE_H +#if defined(DEFLATE_CHUNK_WRITE_64LE) +#include +#endif + #include "zutil.h" /* define NO_GZIP when compiling if you want to disable gzip header and @@ -25,7 +29,7 @@ /* define LIT_MEM to slightly increase the speed of deflate (order 1% to 2%) at the cost of a larger memory footprint */ -/* #define LIT_MEM */ +#define LIT_MEM /* =========================================================================== * Internal compression state. @@ -52,7 +56,11 @@ #define MAX_BITS 15 /* All codes must not exceed MAX_BITS bits */ +#if defined(DEFLATE_CHUNK_WRITE_64LE) +#define Buf_size 64 +#else #define Buf_size 16 +#endif /* size of bit buffer in bi_buf */ #define INIT_STATE 42 /* zlib header -> BUSY_STATE */ @@ -113,8 +121,8 @@ typedef struct internal_state { ulg gzindex; /* where in extra, name, or comment */ Byte method; /* can only be DEFLATED */ int last_flush; /* value of flush param for previous deflate call */ - - /* used by deflate.c: */ + unsigned crc0[4 * 5]; + /* used by deflate.c: */ uInt w_size; /* LZ77 window size (32K by default) */ uInt w_bits; /* log2(w_size) (8..16) */ @@ -222,11 +230,9 @@ typedef struct internal_state { */ #ifdef LIT_MEM -# define LIT_BUFS 5 ushf *d_buf; /* buffer for distances */ uchf *l_buf; /* buffer for literals/lengths */ #else -# define LIT_BUFS 4 uchf *sym_buf; /* buffer for distances and literals/lengths */ #endif @@ -263,7 +269,11 @@ typedef struct internal_state { ulg bits_sent; /* bit length of compressed data sent mod 2^32 */ #endif +#if defined(DEFLATE_CHUNK_WRITE_64LE) + uint64_t bi_buf; +#else ush bi_buf; +#endif /* Output buffer. bits are inserted starting at the bottom (least * significant bits). */ @@ -271,6 +281,9 @@ typedef struct internal_state { /* Number of valid bits in bi_buf. All bits above the last valid bit * are always zero. */ + int bi_used; + /* Last number of used bits when going to a byte boundary. + */ ulg high_water; /* High water mark offset in window for initialized bytes -- bytes above @@ -279,6 +292,21 @@ typedef struct internal_state { * updated to the new high water mark. */ + uInt chromium_zlib_hash; + /* 0 if Rabin-Karp rolling hash is enabled, non-zero if chromium zlib + * hash is enabled. + */ + +#if defined(QAT_COMPRESSION_ENABLED) + /* Pointer to a struct that contains the current state of the QAT + * stream. + */ + struct qat_deflate *qat_s; +#endif + + int slid; + /* True if the hash table has been slid since it was cleared. */ + } FAR deflate_state; /* Output a byte on the stream. @@ -374,4 +402,12 @@ void ZLIB_INTERNAL _tr_stored_block(deflate_state *s, charf *buf, flush = _tr_tally(s, distance, length) #endif +/* Functions that are SIMD optimised on x86 */ +void ZLIB_INTERNAL crc_fold_init(deflate_state* const s); +void ZLIB_INTERNAL crc_fold_copy(deflate_state* const s, + unsigned char* dst, + const unsigned char* src, + long len); +unsigned ZLIB_INTERNAL crc_fold_512to32(deflate_state* const s); + #endif /* DEFLATE_H */ diff --git a/packages/runtime/vendor/zlib/gzguts.h b/packages/runtime/vendor/zlib/gzguts.h index eba72085b..f7946bdc5 100644 --- a/packages/runtime/vendor/zlib/gzguts.h +++ b/packages/runtime/vendor/zlib/gzguts.h @@ -1,5 +1,5 @@ /* gzguts.h -- zlib internal header definitions for gz* operations - * Copyright (C) 2004-2024 Mark Adler + * Copyright (C) 2004-2026 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -17,6 +17,18 @@ # define ZLIB_INTERNAL #endif +#if defined(_WIN32) +# ifndef WIN32_LEAN_AND_MEAN +# define WIN32_LEAN_AND_MEAN +# endif +# ifndef _CRT_SECURE_NO_WARNINGS +# define _CRT_SECURE_NO_WARNINGS +# endif +# ifndef _CRT_NONSTDC_NO_DEPRECATE +# define _CRT_NONSTDC_NO_DEPRECATE +# endif +#endif + #include #include "zlib.h" #ifdef STDC @@ -25,8 +37,8 @@ # include #endif -#ifndef _POSIX_SOURCE -# define _POSIX_SOURCE +#ifndef _POSIX_C_SOURCE +# define _POSIX_C_SOURCE 200112L #endif #include @@ -36,19 +48,13 @@ #if defined(__TURBOC__) || defined(_MSC_VER) || defined(_WIN32) # include +# include #endif -#if defined(_WIN32) +#if defined(_WIN32) && !defined(WIDECHAR) # define WIDECHAR #endif -#ifdef WINAPI_FAMILY -# define open _open -# define read _read -# define write _write -# define close _close -#endif - #ifdef NO_DEFLATE /* for compatibility with old definition */ # define NO_GZCOMPRESS #endif @@ -72,33 +78,28 @@ #endif #ifndef HAVE_VSNPRINTF -# ifdef MSDOS +# if !defined(NO_vsnprintf) && \ + (defined(MSDOS) || defined(__TURBOC__) || defined(__SASC) || \ + defined(VMS) || defined(__OS400) || defined(__MVS__)) /* vsnprintf may exist on some MS-DOS compilers (DJGPP?), but for now we just assume it doesn't. */ # define NO_vsnprintf # endif -# ifdef __TURBOC__ -# define NO_vsnprintf -# endif # ifdef WIN32 /* In Win32, vsnprintf is available as the "non-ANSI" _vsnprintf. */ -# if !defined(vsnprintf) && !defined(NO_vsnprintf) -# if !defined(_MSC_VER) || ( defined(_MSC_VER) && _MSC_VER < 1500 ) -# define vsnprintf _vsnprintf +# if !defined(_MSC_VER) || ( defined(_MSC_VER) && _MSC_VER < 1500 ) +# ifndef vsnprintf +# define vsnprintf _vsnprintf # endif # endif -# endif -# ifdef __SASC -# define NO_vsnprintf -# endif -# ifdef VMS -# define NO_vsnprintf -# endif -# ifdef __OS400__ -# define NO_vsnprintf -# endif -# ifdef __MVS__ -# define NO_vsnprintf +# elif !defined(__STDC_VERSION__) || __STDC_VERSION__-0 < 199901L +/* Otherwise if C89/90, assume no C99 snprintf() or vsnprintf() */ +# ifndef NO_snprintf +# define NO_snprintf +# endif +# ifndef NO_vsnprintf +# define NO_vsnprintf +# endif # endif #endif @@ -135,6 +136,11 @@ # endif #endif +/* some environments don't define EWOULDBLOCK */ +#ifndef EWOULDBLOCK +# define EWOULDBLOCK EAGAIN +#endif + /* provide prototypes for these when building zlib without LFS */ #if !defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0 ZEXTERN gzFile ZEXPORT gzopen64(const char *, const char *); @@ -182,7 +188,9 @@ typedef struct { unsigned char *out; /* output buffer (double-sized when reading) */ int direct; /* 0 if processing gzip, 1 if transparent */ /* just for reading */ + int junk; /* -1 = start, 1 = junk candidate, 0 = in gzip */ int how; /* 0: get header, 1: copy, 2: decompress */ + int again; /* true if EAGAIN or EWOULDBLOCK on last i/o */ z_off64_t start; /* where the gzip data started, for rewinding */ int eof; /* true if end of input file reached */ int past; /* true if read requested past end */ @@ -192,7 +200,6 @@ typedef struct { int reset; /* true if a reset is pending after a Z_FINISH */ /* seek request */ z_off64_t skip; /* amount to skip (already rewound if backwards) */ - int seek; /* true if seek request pending */ /* error information */ int err; /* error code */ char *msg; /* error message */ diff --git a/packages/runtime/vendor/zlib/gzlib.c b/packages/runtime/vendor/zlib/gzlib.c index 983153cc8..2db29c8f0 100644 --- a/packages/runtime/vendor/zlib/gzlib.c +++ b/packages/runtime/vendor/zlib/gzlib.c @@ -1,18 +1,21 @@ /* gzlib.c -- zlib functions common to reading and writing gzip files - * Copyright (C) 2004-2024 Mark Adler + * Copyright (C) 2004-2026 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ #include "gzguts.h" -#if defined(_WIN32) && !defined(__BORLANDC__) +#if defined(__DJGPP__) +# define LSEEK llseek +#elif defined(_WIN32) && !defined(__BORLANDC__) && !defined(UNDER_CE) # define LSEEK _lseeki64 -#else -#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0 +# define OPEN open +#elif defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0 # define LSEEK lseek64 +# define OPEN open64 #else # define LSEEK lseek -#endif +# define OPEN open #endif #if defined UNDER_CE @@ -52,7 +55,7 @@ char ZLIB_INTERNAL *gz_strwinerror(DWORD error) { msgbuf[chars] = 0; } - wcstombs(buf, msgbuf, chars + 1); + wcstombs(buf, msgbuf, chars + 1); /* assumes buf is big enough */ LocalFree(msgbuf); } else { @@ -72,10 +75,12 @@ local void gz_reset(gz_statep state) { state->eof = 0; /* not at end of file */ state->past = 0; /* have not read past end yet */ state->how = LOOK; /* look for gzip header */ + state->junk = -1; /* mark first member */ } else /* for writing ... */ state->reset = 0; /* no deflateReset pending */ - state->seek = 0; /* no seek request pending */ + state->again = 0; /* no stalled i/o yet */ + state->skip = 0; /* no seek request pending */ gz_error(state, Z_OK, NULL); /* clear error */ state->x.pos = 0; /* no uncompressed data yet */ state->strm.avail_in = 0; /* no input data yet */ @@ -85,16 +90,13 @@ local void gz_reset(gz_statep state) { local gzFile gz_open(const void *path, int fd, const char *mode) { gz_statep state; z_size_t len; - int oflag; -#ifdef O_CLOEXEC - int cloexec = 0; -#endif + int oflag = 0; #ifdef O_EXCL int exclusive = 0; #endif /* check input */ - if (path == NULL) + if (path == NULL || mode == NULL) return NULL; /* allocate gzFile structure to return */ @@ -103,6 +105,7 @@ local gzFile gz_open(const void *path, int fd, const char *mode) { return NULL; state->size = 0; /* no buffers allocated yet */ state->want = GZBUFSIZE; /* requested buffer size */ + state->err = Z_OK; /* no error yet */ state->msg = NULL; /* no error message yet */ /* interpret mode */ @@ -133,7 +136,7 @@ local gzFile gz_open(const void *path, int fd, const char *mode) { break; #ifdef O_CLOEXEC case 'e': - cloexec = 1; + oflag |= O_CLOEXEC; break; #endif #ifdef O_EXCL @@ -153,6 +156,14 @@ local gzFile gz_open(const void *path, int fd, const char *mode) { case 'F': state->strategy = Z_FIXED; break; + case 'G': + state->direct = -1; + break; +#ifdef O_NONBLOCK + case 'N': + oflag |= O_NONBLOCK; + break; +#endif case 'T': state->direct = 1; break; @@ -168,22 +179,30 @@ local gzFile gz_open(const void *path, int fd, const char *mode) { return NULL; } - /* can't force transparent read */ + /* direct is 0, 1 if "T", or -1 if "G" (last "G" or "T" wins) */ if (state->mode == GZ_READ) { - if (state->direct) { + if (state->direct == 1) { + /* can't force a transparent read */ free(state); return NULL; } - state->direct = 1; /* for empty file */ + if (state->direct == 0) + /* default when reading is auto-detect of gzip vs. transparent -- + start with a transparent assumption in case of an empty file */ + state->direct = 1; } + else if (state->direct == -1) { + /* "G" has no meaning when writing -- disallow it */ + free(state); + return NULL; + } + /* if reading, direct == 1 for auto-detect, -1 for gzip only; if writing or + appending, direct == 0 for gzip, 1 for transparent (copy in to out) */ /* save the path name for error messages */ #ifdef WIDECHAR - if (fd == -2) { + if (fd == -2) len = wcstombs(NULL, path, 0); - if (len == (z_size_t)-1) - len = 0; - } else #endif len = strlen((const char *)path); @@ -193,29 +212,29 @@ local gzFile gz_open(const void *path, int fd, const char *mode) { return NULL; } #ifdef WIDECHAR - if (fd == -2) + if (fd == -2) { if (len) wcstombs(state->path, path, len + 1); else *(state->path) = 0; + } else #endif + { #if !defined(NO_snprintf) && !defined(NO_vsnprintf) (void)snprintf(state->path, len + 1, "%s", (const char *)path); #else strcpy(state->path, path); #endif + } /* compute the flags for open() */ - oflag = + oflag |= #ifdef O_LARGEFILE O_LARGEFILE | #endif #ifdef O_BINARY O_BINARY | -#endif -#ifdef O_CLOEXEC - (cloexec ? O_CLOEXEC : 0) | #endif (state->mode == GZ_READ ? O_RDONLY : @@ -228,11 +247,23 @@ local gzFile gz_open(const void *path, int fd, const char *mode) { O_APPEND))); /* open the file with the appropriate flags (or just use fd) */ - state->fd = fd > -1 ? fd : ( + if (fd == -1) + state->fd = OPEN((const char *)path, oflag, 0666); #ifdef WIDECHAR - fd == -2 ? _wopen(path, oflag, 0666) : + else if (fd == -2) + state->fd = _wopen(path, oflag, _S_IREAD | _S_IWRITE); #endif - open((const char *)path, oflag, 0666)); + else { +#ifdef O_NONBLOCK + if (oflag & O_NONBLOCK) + fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) | O_NONBLOCK); +#endif +#ifdef O_CLOEXEC + if (oflag & O_CLOEXEC) + fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | O_CLOEXEC); +#endif + state->fd = fd; + } if (state->fd == -1) { free(state->path); free(state); @@ -359,9 +390,10 @@ z_off64_t ZEXPORT gzseek64(gzFile file, z_off64_t offset, int whence) { /* normalize offset to a SEEK_CUR specification */ if (whence == SEEK_SET) offset -= state->x.pos; - else if (state->seek) - offset += state->skip; - state->seek = 0; + else { + offset += state->past ? 0 : state->skip; + state->skip = 0; + } /* if within raw area while reading, just go there */ if (state->mode == GZ_READ && state->how == COPY && @@ -372,7 +404,7 @@ z_off64_t ZEXPORT gzseek64(gzFile file, z_off64_t offset, int whence) { state->x.have = 0; state->eof = 0; state->past = 0; - state->seek = 0; + state->skip = 0; gz_error(state, Z_OK, NULL); state->strm.avail_in = 0; state->x.pos += offset; @@ -401,10 +433,7 @@ z_off64_t ZEXPORT gzseek64(gzFile file, z_off64_t offset, int whence) { } /* request skip (if not zero) */ - if (offset) { - state->seek = 1; - state->skip = offset; - } + state->skip = offset; return state->x.pos + offset; } @@ -428,7 +457,7 @@ z_off64_t ZEXPORT gztell64(gzFile file) { return -1; /* return position */ - return state->x.pos + (state->seek ? state->skip : 0); + return state->x.pos + (state->past ? 0 : state->skip); } /* -- see zlib.h -- */ @@ -535,7 +564,7 @@ void ZLIB_INTERNAL gz_error(gz_statep state, int err, const char *msg) { } /* if fatal, set state->x.have to 0 so that the gzgetc() macro fails */ - if (err != Z_OK && err != Z_BUF_ERROR) + if (err != Z_OK && err != Z_BUF_ERROR && !state->again) state->x.have = 0; /* set error code, and if no message, then done */ @@ -572,6 +601,7 @@ unsigned ZLIB_INTERNAL gz_intmax(void) { return INT_MAX; #else unsigned p = 1, q; + do { q = p; p <<= 1; diff --git a/packages/runtime/vendor/zlib/gzread.c b/packages/runtime/vendor/zlib/gzread.c index 4168cbc88..bf41d63bc 100644 --- a/packages/runtime/vendor/zlib/gzread.c +++ b/packages/runtime/vendor/zlib/gzread.c @@ -1,5 +1,5 @@ /* gzread.c -- zlib functions for reading gzip files - * Copyright (C) 2004-2017 Mark Adler + * Copyright (C) 2004-2026 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -8,23 +8,36 @@ /* Use read() to load a buffer -- return -1 on error, otherwise 0. Read from state->fd, and update state->eof, state->err, and state->msg as appropriate. This function needs to loop on read(), since read() is not guaranteed to - read the number of bytes requested, depending on the type of descriptor. */ + read the number of bytes requested, depending on the type of descriptor. It + also needs to loop to manage the fact that read() returns an int. If the + descriptor is non-blocking and read() returns with no data in order to avoid + blocking, then gz_load() will return 0 if some data has been read, or -1 if + no data has been read. Either way, state->again is set true to indicate a + non-blocking event. If errno is non-zero on return, then there was an error + signaled from read(). *have is set to the number of bytes read. */ local int gz_load(gz_statep state, unsigned char *buf, unsigned len, unsigned *have) { int ret; unsigned get, max = ((unsigned)-1 >> 2) + 1; + state->again = 0; + errno = 0; *have = 0; do { get = len - *have; if (get > max) get = max; - ret = read(state->fd, buf + *have, get); + ret = (int)read(state->fd, buf + *have, get); if (ret <= 0) break; *have += (unsigned)ret; } while (*have < len); if (ret < 0) { + if (errno == EAGAIN || errno == EWOULDBLOCK) { + state->again = 1; + if (*have != 0) + return 0; + } gz_error(state, Z_ERRNO, zstrerror()); return -1; } @@ -50,10 +63,14 @@ local int gz_avail(gz_statep state) { if (strm->avail_in) { /* copy what's there to the start */ unsigned char *p = state->in; unsigned const char *q = strm->next_in; - unsigned n = strm->avail_in; - do { - *p++ = *q++; - } while (--n); + + if (q != p) { + unsigned n = strm->avail_in; + + do { + *p++ = *q++; + } while (--n); + } } if (gz_load(state, state->in + strm->avail_in, state->size - strm->avail_in, &got) == -1) @@ -104,39 +121,44 @@ local int gz_look(gz_statep state) { } } - /* get at least the magic bytes in the input buffer */ - if (strm->avail_in < 2) { - if (gz_avail(state) == -1) - return -1; - if (strm->avail_in == 0) - return 0; - } - - /* look for gzip magic bytes -- if there, do gzip decoding (note: there is - a logical dilemma here when considering the case of a partially written - gzip file, to wit, if a single 31 byte is written, then we cannot tell - whether this is a single-byte file, or just a partially written gzip - file -- for here we assume that if a gzip file is being written, then - the header will be written in a single operation, so that reading a - single byte is sufficient indication that it is not a gzip file) */ - if (strm->avail_in > 1 && - strm->next_in[0] == 31 && strm->next_in[1] == 139) { + /* if transparent reading is disabled, which would only be at the start, or + if we're looking for a gzip member after the first one, which is not at + the start, then proceed directly to look for a gzip member next */ + if (state->direct == -1 || state->junk == 0) { inflateReset(strm); state->how = GZIP; + state->junk = state->junk != -1; state->direct = 0; return 0; } - /* no gzip header -- if we were decoding gzip before, then this is trailing - garbage. Ignore the trailing garbage and finish. */ - if (state->direct == 0) { - strm->avail_in = 0; - state->eof = 1; - state->x.have = 0; + /* otherwise we're at the start with auto-detect -- we check to see if the + first four bytes could be gzip header in order to decide whether or not + this will be a transparent read */ + + /* load any header bytes into the input buffer -- if the input is empty, + then it's not an error as this is a transparent read of zero bytes */ + if (gz_avail(state) == -1) + return -1; + if (strm->avail_in == 0 || (state->again && strm->avail_in < 4)) + /* if non-blocking input stalled before getting four bytes, then + return and wait until a later call has accumulated enough */ + return 0; + + /* see if this is (likely) gzip input -- if the first four bytes are + consistent with a gzip header, then go look for the first gzip member, + otherwise proceed to copy the input transparently */ + if (strm->avail_in > 3 && + strm->next_in[0] == 31 && strm->next_in[1] == 139 && + strm->next_in[2] == 8 && strm->next_in[3] < 32) { + inflateReset(strm); + state->how = GZIP; + state->junk = 1; + state->direct = 0; return 0; } - /* doing raw i/o, copy any leftover input to output -- this assumes that + /* doing raw i/o: copy any leftover input to output -- this assumes that the output buffer is larger than the input buffer, which also assures space for gzungetc() */ state->x.next = state->out; @@ -144,15 +166,17 @@ local int gz_look(gz_statep state) { state->x.have = strm->avail_in; strm->avail_in = 0; state->how = COPY; - state->direct = 1; return 0; } /* Decompress from input to the provided next_out and avail_out in the state. On return, state->x.have and state->x.next point to the just decompressed - data. If the gzip stream completes, state->how is reset to LOOK to look for - the next gzip stream or raw data, once state->x.have is depleted. Returns 0 - on success, -1 on failure. */ + data. If the gzip stream completes, state->how is reset to LOOK to look for + the next gzip stream or raw data, once state->x.have is depleted. Returns 0 + on success, -1 on failure. If EOF is reached when looking for more input to + complete the gzip member, then an unexpected end of file error is raised. + If there is no more input, but state->again is true, then EOF has not been + reached, and no error is raised. */ local int gz_decomp(gz_statep state) { int ret = Z_OK; unsigned had; @@ -162,28 +186,41 @@ local int gz_decomp(gz_statep state) { had = strm->avail_out; do { /* get more input for inflate() */ - if (strm->avail_in == 0 && gz_avail(state) == -1) - return -1; + if (strm->avail_in == 0 && gz_avail(state) == -1) { + ret = state->err; + break; + } if (strm->avail_in == 0) { - gz_error(state, Z_BUF_ERROR, "unexpected end of file"); + if (!state->again) + gz_error(state, Z_BUF_ERROR, "unexpected end of file"); break; } /* decompress and handle errors */ ret = inflate(strm, Z_NO_FLUSH); + if (strm->avail_out < had) + /* any decompressed data marks this as a real gzip stream */ + state->junk = 0; if (ret == Z_STREAM_ERROR || ret == Z_NEED_DICT) { gz_error(state, Z_STREAM_ERROR, "internal error: inflate stream corrupt"); - return -1; + break; } if (ret == Z_MEM_ERROR) { gz_error(state, Z_MEM_ERROR, "out of memory"); - return -1; + break; } if (ret == Z_DATA_ERROR) { /* deflate stream invalid */ + if (state->junk == 1) { /* trailing garbage is ok */ + strm->avail_in = 0; + state->eof = 1; + state->how = LOOK; + ret = Z_OK; + break; + } gz_error(state, Z_DATA_ERROR, strm->msg == NULL ? "compressed data error" : strm->msg); - return -1; + break; } } while (strm->avail_out && ret != Z_STREAM_END); @@ -192,11 +229,14 @@ local int gz_decomp(gz_statep state) { state->x.next = strm->next_out - state->x.have; /* if the gzip stream completed successfully, look for another */ - if (ret == Z_STREAM_END) + if (ret == Z_STREAM_END) { + state->junk = 0; state->how = LOOK; + return 0; + } - /* good decompression */ - return 0; + /* return decompression status */ + return ret != Z_OK ? -1 : 0; } /* Fetch data and put it in the output buffer. Assumes state->x.have is 0. @@ -227,25 +267,31 @@ local int gz_fetch(gz_statep state) { strm->next_out = state->out; if (gz_decomp(state) == -1) return -1; + break; + default: + gz_error(state, Z_STREAM_ERROR, "state corrupt"); + return -1; } } while (state->x.have == 0 && (!state->eof || strm->avail_in)); return 0; } -/* Skip len uncompressed bytes of output. Return -1 on error, 0 on success. */ -local int gz_skip(gz_statep state, z_off64_t len) { +/* Skip state->skip (> 0) uncompressed bytes of output. Return -1 on error, 0 + on success. */ +local int gz_skip(gz_statep state) { unsigned n; /* skip over len bytes or reach end-of-file, whichever comes first */ - while (len) + do { /* skip over whatever is in output buffer */ if (state->x.have) { - n = GT_OFF(state->x.have) || (z_off64_t)state->x.have > len ? - (unsigned)len : state->x.have; + n = GT_OFF(state->x.have) || + (z_off64_t)state->x.have > state->skip ? + (unsigned)state->skip : state->x.have; state->x.have -= n; state->x.next += n; state->x.pos += n; - len -= n; + state->skip -= n; } /* output buffer empty -- return if we're at the end of the input */ @@ -258,30 +304,32 @@ local int gz_skip(gz_statep state, z_off64_t len) { if (gz_fetch(state) == -1) return -1; } + } while (state->skip); return 0; } /* Read len bytes into buf from file, or less than len up to the end of the - input. Return the number of bytes read. If zero is returned, either the - end of file was reached, or there was an error. state->err must be - consulted in that case to determine which. */ + input. Return the number of bytes read. If zero is returned, either the end + of file was reached, or there was an error. state->err must be consulted in + that case to determine which. If there was an error, but some uncompressed + bytes were read before the error, then that count is returned. The error is + still recorded, and so is deferred until the next call. */ local z_size_t gz_read(gz_statep state, voidp buf, z_size_t len) { z_size_t got; unsigned n; + int err; /* if len is zero, avoid unnecessary operations */ if (len == 0) return 0; /* process a skip request */ - if (state->seek) { - state->seek = 0; - if (gz_skip(state, state->skip) == -1) - return 0; - } + if (state->skip && gz_skip(state) == -1) + return 0; /* get len bytes to buf, or less than len if at the end */ got = 0; + err = 0; do { /* set n to the maximum amount of len that fits in an unsigned int */ n = (unsigned)-1; @@ -295,37 +343,36 @@ local z_size_t gz_read(gz_statep state, voidp buf, z_size_t len) { memcpy(buf, state->x.next, n); state->x.next += n; state->x.have -= n; + if (state->err != Z_OK) + /* caught deferred error from gz_fetch() */ + err = -1; } /* output buffer empty -- return if we're at the end of the input */ - else if (state->eof && state->strm.avail_in == 0) { - state->past = 1; /* tried to read past end */ + else if (state->eof && state->strm.avail_in == 0) break; - } /* need output data -- for small len or new stream load up our output - buffer */ + buffer, so that gzgetc() can be fast */ else if (state->how == LOOK || n < (state->size << 1)) { /* get more output, looking for header if required */ - if (gz_fetch(state) == -1) - return 0; + if (gz_fetch(state) == -1 && state->x.have == 0) + /* if state->x.have != 0, error will be caught after copy */ + err = -1; continue; /* no progress yet -- go back to copy above */ /* the copy above assures that we will leave with space in the output buffer, allowing at least one gzungetc() to succeed */ } /* large len -- read directly into user buffer */ - else if (state->how == COPY) { /* read directly */ - if (gz_load(state, (unsigned char *)buf, n, &n) == -1) - return 0; - } + else if (state->how == COPY) /* read directly */ + err = gz_load(state, (unsigned char *)buf, n, &n); /* large len -- decompress directly into user buffer */ else { /* state->how == GZIP */ state->strm.avail_out = n; state->strm.next_out = (unsigned char *)buf; - if (gz_decomp(state) == -1) - return 0; + err = gz_decomp(state); n = state->x.have; state->x.have = 0; } @@ -335,7 +382,11 @@ local z_size_t gz_read(gz_statep state, voidp buf, z_size_t len) { buf = (char *)buf + n; got += n; state->x.pos += n; - } while (len); + } while (len && !err); + + /* note read past eof */ + if (len && state->eof) + state->past = 1; /* return number of bytes read into user buffer */ return got; @@ -345,16 +396,18 @@ local z_size_t gz_read(gz_statep state, voidp buf, z_size_t len) { int ZEXPORT gzread(gzFile file, voidp buf, unsigned len) { gz_statep state; - /* get internal structure */ + /* get internal structure and check that it's for reading */ if (file == NULL) return -1; state = (gz_statep)file; - - /* check that we're reading and that there's no (serious) error */ - if (state->mode != GZ_READ || - (state->err != Z_OK && state->err != Z_BUF_ERROR)) + if (state->mode != GZ_READ) return -1; + /* check that there was no (serious) error */ + if (state->err != Z_OK && state->err != Z_BUF_ERROR && !state->again) + return -1; + gz_error(state, Z_OK, NULL); + /* since an int is returned, make sure len fits in one, otherwise return with an error (this avoids a flaw in the interface) */ if ((int)len < 0) { @@ -366,28 +419,40 @@ int ZEXPORT gzread(gzFile file, voidp buf, unsigned len) { len = (unsigned)gz_read(state, buf, len); /* check for an error */ - if (len == 0 && state->err != Z_OK && state->err != Z_BUF_ERROR) - return -1; + if (len == 0) { + if (state->err != Z_OK && state->err != Z_BUF_ERROR) + return -1; + if (state->again) { + /* non-blocking input stalled after some input was read, but no + uncompressed bytes were produced -- let the application know + this isn't EOF */ + gz_error(state, Z_ERRNO, zstrerror()); + return -1; + } + } - /* return the number of bytes read (this is assured to fit in an int) */ + /* return the number of bytes read */ return (int)len; } /* -- see zlib.h -- */ -z_size_t ZEXPORT gzfread(voidp buf, z_size_t size, z_size_t nitems, gzFile file) { +z_size_t ZEXPORT gzfread(voidp buf, z_size_t size, z_size_t nitems, + gzFile file) { z_size_t len; gz_statep state; - /* get internal structure */ + /* get internal structure and check that it's for reading */ if (file == NULL) return 0; state = (gz_statep)file; - - /* check that we're reading and that there's no (serious) error */ - if (state->mode != GZ_READ || - (state->err != Z_OK && state->err != Z_BUF_ERROR)) + if (state->mode != GZ_READ) return 0; + /* check that there was no (serious) error */ + if (state->err != Z_OK && state->err != Z_BUF_ERROR && !state->again) + return 0; + gz_error(state, Z_OK, NULL); + /* compute bytes to read -- error on overflow */ len = nitems * size; if (size && len / size != nitems) { @@ -404,21 +469,27 @@ z_size_t ZEXPORT gzfread(voidp buf, z_size_t size, z_size_t nitems, gzFile file) # undef z_gzgetc #else # undef gzgetc +# ifdef Z_CR_PREFIX_SET +# define gzgetc Cr_z_gzgetc +# endif #endif + int ZEXPORT gzgetc(gzFile file) { unsigned char buf[1]; gz_statep state; - /* get internal structure */ + /* get internal structure and check that it's for reading */ if (file == NULL) return -1; state = (gz_statep)file; - - /* check that we're reading and that there's no (serious) error */ - if (state->mode != GZ_READ || - (state->err != Z_OK && state->err != Z_BUF_ERROR)) + if (state->mode != GZ_READ) return -1; + /* check that there was no (serious) error */ + if (state->err != Z_OK && state->err != Z_BUF_ERROR && !state->again) + return -1; + gz_error(state, Z_OK, NULL); + /* try output buffer (no need to check for skip request) */ if (state->x.have) { state->x.have--; @@ -438,26 +509,25 @@ int ZEXPORT gzgetc_(gzFile file) { int ZEXPORT gzungetc(int c, gzFile file) { gz_statep state; - /* get internal structure */ + /* get internal structure and check that it's for reading */ if (file == NULL) return -1; state = (gz_statep)file; - - /* in case this was just opened, set up the input buffer */ - if (state->mode == GZ_READ && state->how == LOOK && state->x.have == 0) - (void)gz_look(state); - - /* check that we're reading and that there's no (serious) error */ - if (state->mode != GZ_READ || - (state->err != Z_OK && state->err != Z_BUF_ERROR)) + if (state->mode != GZ_READ) return -1; + /* in case this was just opened, set up the input buffer */ + if (state->how == LOOK && state->x.have == 0) + (void)gz_look(state); + + /* check that there was no (serious) error */ + if (state->err != Z_OK && state->err != Z_BUF_ERROR && !state->again) + return -1; + gz_error(state, Z_OK, NULL); + /* process a skip request */ - if (state->seek) { - state->seek = 0; - if (gz_skip(state, state->skip) == -1) - return -1; - } + if (state->skip && gz_skip(state) == -1) + return -1; /* can't push EOF */ if (c < 0) @@ -483,6 +553,7 @@ int ZEXPORT gzungetc(int c, gzFile file) { if (state->x.next == state->out) { unsigned char *src = state->out + state->x.have; unsigned char *dest = state->out + (state->size << 1); + while (src > state->out) *--dest = *--src; state->x.next = dest; @@ -502,32 +573,31 @@ char * ZEXPORT gzgets(gzFile file, char *buf, int len) { unsigned char *eol; gz_statep state; - /* check parameters and get internal structure */ + /* check parameters, get internal structure, and check that it's for + reading */ if (file == NULL || buf == NULL || len < 1) return NULL; state = (gz_statep)file; - - /* check that we're reading and that there's no (serious) error */ - if (state->mode != GZ_READ || - (state->err != Z_OK && state->err != Z_BUF_ERROR)) + if (state->mode != GZ_READ) return NULL; - /* process a skip request */ - if (state->seek) { - state->seek = 0; - if (gz_skip(state, state->skip) == -1) - return NULL; - } + /* check that there was no (serious) error */ + if (state->err != Z_OK && state->err != Z_BUF_ERROR && !state->again) + return NULL; + gz_error(state, Z_OK, NULL); - /* copy output bytes up to new line or len - 1, whichever comes first -- - append a terminating zero to the string (we don't check for a zero in - the contents, let the user worry about that) */ + /* process a skip request */ + if (state->skip && gz_skip(state) == -1) + return NULL; + + /* copy output up to a new line, len-1 bytes, or there is no more output, + whichever comes first */ str = buf; left = (unsigned)len - 1; if (left) do { /* assure that something is in the output buffer */ if (state->x.have == 0 && gz_fetch(state) == -1) - return NULL; /* error */ + break; /* error */ if (state->x.have == 0) { /* end of file */ state->past = 1; /* read past end */ break; /* return what we have */ @@ -548,7 +618,9 @@ char * ZEXPORT gzgets(gzFile file, char *buf, int len) { buf += n; } while (left && eol == NULL); - /* return terminated string, or if nothing, end of file */ + /* append a terminating zero to the string (we don't check for a zero in + the contents, let the user worry about that) -- return the terminated + string, or if nothing was read, NULL */ if (buf == str) return NULL; buf[0] = 0; @@ -570,7 +642,7 @@ int ZEXPORT gzdirect(gzFile file) { (void)gz_look(state); /* return 1 if transparent, 0 if processing a gzip stream */ - return state->direct; + return state->direct == 1; } /* -- see zlib.h -- */ @@ -578,12 +650,10 @@ int ZEXPORT gzclose_r(gzFile file) { int ret, err; gz_statep state; - /* get internal structure */ + /* get internal structure and check that it's for reading */ if (file == NULL) return Z_STREAM_ERROR; state = (gz_statep)file; - - /* check that we're reading */ if (state->mode != GZ_READ) return Z_STREAM_ERROR; diff --git a/packages/runtime/vendor/zlib/gzwrite.c b/packages/runtime/vendor/zlib/gzwrite.c index 435b4621b..13a3700a8 100644 --- a/packages/runtime/vendor/zlib/gzwrite.c +++ b/packages/runtime/vendor/zlib/gzwrite.c @@ -1,5 +1,5 @@ /* gzwrite.c -- zlib functions for writing gzip files - * Copyright (C) 2004-2019 Mark Adler + * Copyright (C) 2004-2026 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -74,9 +74,13 @@ local int gz_comp(gz_statep state, int flush) { /* write directly if requested */ if (state->direct) { while (strm->avail_in) { + errno = 0; + state->again = 0; put = strm->avail_in > max ? max : strm->avail_in; - writ = write(state->fd, strm->next_in, put); + writ = (int)write(state->fd, strm->next_in, put); if (writ < 0) { + if (errno == EAGAIN || errno == EWOULDBLOCK) + state->again = 1; gz_error(state, Z_ERRNO, zstrerror()); return -1; } @@ -88,8 +92,9 @@ local int gz_comp(gz_statep state, int flush) { /* check for a pending reset */ if (state->reset) { - /* don't start a new gzip member unless there is data to write */ - if (strm->avail_in == 0) + /* don't start a new gzip member unless there is data to write and + we're not flushing */ + if (strm->avail_in == 0 && flush == Z_NO_FLUSH) return 0; deflateReset(strm); state->reset = 0; @@ -103,10 +108,14 @@ local int gz_comp(gz_statep state, int flush) { if (strm->avail_out == 0 || (flush != Z_NO_FLUSH && (flush != Z_FINISH || ret == Z_STREAM_END))) { while (strm->next_out > state->x.next) { + errno = 0; + state->again = 0; put = strm->next_out - state->x.next > (int)max ? max : (unsigned)(strm->next_out - state->x.next); - writ = write(state->fd, state->x.next, put); + writ = (int)write(state->fd, state->x.next, put); if (writ < 0) { + if (errno == EAGAIN || errno == EWOULDBLOCK) + state->again = 1; gz_error(state, Z_ERRNO, zstrerror()); return -1; } @@ -138,10 +147,12 @@ local int gz_comp(gz_statep state, int flush) { return 0; } -/* Compress len zeros to output. Return -1 on a write error or memory - allocation failure by gz_comp(), or 0 on success. */ -local int gz_zero(gz_statep state, z_off64_t len) { - int first; +/* Compress state->skip (> 0) zeros to output. Return -1 on a write error or + memory allocation failure by gz_comp(), or 0 on success. state->skip is + updated with the number of successfully written zeros, in case there is a + stall on a non-blocking write destination. */ +local int gz_zero(gz_statep state) { + int first, ret; unsigned n; z_streamp strm = &(state->strm); @@ -149,29 +160,34 @@ local int gz_zero(gz_statep state, z_off64_t len) { if (strm->avail_in && gz_comp(state, Z_NO_FLUSH) == -1) return -1; - /* compress len zeros (len guaranteed > 0) */ + /* compress state->skip zeros */ first = 1; - while (len) { - n = GT_OFF(state->size) || (z_off64_t)state->size > len ? - (unsigned)len : state->size; + do { + n = GT_OFF(state->size) || (z_off64_t)state->size > state->skip ? + (unsigned)state->skip : state->size; if (first) { memset(state->in, 0, n); first = 0; } strm->avail_in = n; strm->next_in = state->in; + ret = gz_comp(state, Z_NO_FLUSH); + n -= strm->avail_in; state->x.pos += n; - if (gz_comp(state, Z_NO_FLUSH) == -1) + state->skip -= n; + if (ret == -1) return -1; - len -= n; - } + } while (state->skip); return 0; } /* Write len bytes from buf to file. Return the number of bytes written. If - the returned value is less than len, then there was an error. */ + the returned value is less than len, then there was an error. If the error + was a non-blocking stall, then the number of bytes consumed is returned. + For any other error, 0 is returned. */ local z_size_t gz_write(gz_statep state, voidpc buf, z_size_t len) { z_size_t put = len; + int ret; /* if len is zero, avoid unnecessary operations */ if (len == 0) @@ -182,16 +198,13 @@ local z_size_t gz_write(gz_statep state, voidpc buf, z_size_t len) { return 0; /* check for seek request */ - if (state->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - return 0; - } + if (state->skip && gz_zero(state) == -1) + return 0; /* for small len, copy to input buffer, otherwise compress directly */ if (len < state->size) { /* copy to input buffer, compress when full */ - do { + for (;;) { unsigned have, copy; if (state->strm.avail_in == 0) @@ -206,9 +219,11 @@ local z_size_t gz_write(gz_statep state, voidpc buf, z_size_t len) { state->x.pos += copy; buf = (const char *)buf + copy; len -= copy; - if (len && gz_comp(state, Z_NO_FLUSH) == -1) - return 0; - } while (len); + if (len == 0) + break; + if (gz_comp(state, Z_NO_FLUSH) == -1) + return state->again ? put - len : 0; + } } else { /* consume whatever's left in the input buffer */ @@ -219,13 +234,16 @@ local z_size_t gz_write(gz_statep state, voidpc buf, z_size_t len) { state->strm.next_in = (z_const Bytef *)buf; do { unsigned n = (unsigned)-1; + if (n > len) n = (unsigned)len; state->strm.avail_in = n; + ret = gz_comp(state, Z_NO_FLUSH); + n -= state->strm.avail_in; state->x.pos += n; - if (gz_comp(state, Z_NO_FLUSH) == -1) - return 0; len -= n; + if (ret == -1) + return state->again ? put - len : 0; } while (len); } @@ -242,9 +260,10 @@ int ZEXPORT gzwrite(gzFile file, voidpc buf, unsigned len) { return 0; state = (gz_statep)file; - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) + /* check that we're writing and that there's no (serious) error */ + if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) return 0; + gz_error(state, Z_OK, NULL); /* since an int is returned, make sure len fits in one, otherwise return with an error (this avoids a flaw in the interface) */ @@ -268,9 +287,10 @@ z_size_t ZEXPORT gzfwrite(voidpc buf, z_size_t size, z_size_t nitems, return 0; state = (gz_statep)file; - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) + /* check that we're writing and that there's no (serious) error */ + if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) return 0; + gz_error(state, Z_OK, NULL); /* compute bytes to read -- error on overflow */ len = nitems * size; @@ -296,16 +316,14 @@ int ZEXPORT gzputc(gzFile file, int c) { state = (gz_statep)file; strm = &(state->strm); - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) + /* check that we're writing and that there's no (serious) error */ + if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) return -1; + gz_error(state, Z_OK, NULL); /* check for seek request */ - if (state->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - return -1; - } + if (state->skip && gz_zero(state) == -1) + return -1; /* try writing to input buffer for speed (state->size == 0 if buffer not initialized) */ @@ -338,9 +356,10 @@ int ZEXPORT gzputs(gzFile file, const char *s) { return -1; state = (gz_statep)file; - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) + /* check that we're writing and that there's no (serious) error */ + if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) return -1; + gz_error(state, Z_OK, NULL); /* write string */ len = strlen(s); @@ -349,16 +368,47 @@ int ZEXPORT gzputs(gzFile file, const char *s) { return -1; } put = gz_write(state, s, len); - return put < len ? -1 : (int)len; + return len && put == 0 ? -1 : (int)put; } +#if (((!defined(STDC) && !defined(Z_HAVE_STDARG_H)) || !defined(NO_vsnprintf)) && \ + (defined(STDC) || defined(Z_HAVE_STDARG_H) || !defined(NO_snprintf))) || \ + defined(ZLIB_INSECURE) +/* If the second half of the input buffer is occupied, write out the contents. + If there is any input remaining due to a non-blocking stall on write, move + it to the start of the buffer. Return true if this did not open up the + second half of the buffer. state->err should be checked after this to + handle a gz_comp() error. */ +local int gz_vacate(gz_statep state) { + z_streamp strm; + + strm = &(state->strm); + if (strm->next_in + strm->avail_in <= state->in + state->size) + return 0; + (void)gz_comp(state, Z_NO_FLUSH); + if (strm->avail_in == 0) { + strm->next_in = state->in; + return 0; + } + memmove(state->in, strm->next_in, strm->avail_in); + strm->next_in = state->in; + return strm->avail_in > state->size; +} +#endif + #if defined(STDC) || defined(Z_HAVE_STDARG_H) #include /* -- see zlib.h -- */ int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va) { - int len; - unsigned left; +#if defined(NO_vsnprintf) && !defined(ZLIB_INSECURE) +#warning "vsnprintf() not available -- gzprintf() stub returns Z_STREAM_ERROR" +#warning "you can recompile with ZLIB_INSECURE defined to use vsprintf()" + /* prevent use of insecure vsprintf(), unless purposefully requested */ + (void)file, (void)format, (void)va; + return Z_STREAM_ERROR; +#else + int len, ret; char *next; gz_statep state; z_streamp strm; @@ -369,24 +419,34 @@ int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va) { state = (gz_statep)file; strm = &(state->strm); - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) + /* check that we're writing and that there's no (serious) error */ + if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) return Z_STREAM_ERROR; + gz_error(state, Z_OK, NULL); /* make sure we have some buffer space */ if (state->size == 0 && gz_init(state) == -1) return state->err; /* check for seek request */ - if (state->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - return state->err; - } + if (state->skip && gz_zero(state) == -1) + return state->err; /* do the printf() into the input buffer, put length in len -- the input - buffer is double-sized just for this function, so there is guaranteed to - be state->size bytes available after the current contents */ + buffer is double-sized just for this function, so there should be + state->size bytes available after the current contents */ + ret = gz_vacate(state); + if (state->err) { + if (ret && state->again) { + /* There was a non-blocking stall on write, resulting in the part + of the second half of the output buffer being occupied. Return + a Z_BUF_ERROR to let the application know that this gzprintf() + needs to be retried. */ + gz_error(state, Z_BUF_ERROR, "stalled write on gzprintf"); + } + if (!state->again) + return state->err; + } if (strm->avail_in == 0) strm->next_in = state->in; next = (char *)(state->in + (strm->next_in - state->in) + strm->avail_in); @@ -412,19 +472,16 @@ int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va) { if (len == 0 || (unsigned)len >= state->size || next[state->size - 1] != 0) return 0; - /* update buffer and position, compress first half if past that */ + /* update buffer and position */ strm->avail_in += (unsigned)len; state->x.pos += len; - if (strm->avail_in >= state->size) { - left = strm->avail_in - state->size; - strm->avail_in = state->size; - if (gz_comp(state, Z_NO_FLUSH) == -1) - return state->err; - memmove(state->in, state->in + state->size, left); - strm->next_in = state->in; - strm->avail_in = left; - } + + /* write out buffer if more than half is occupied */ + ret = gz_vacate(state); + if (state->err && !state->again) + return state->err; return len; +#endif } int ZEXPORTVA gzprintf(gzFile file, const char *format, ...) { @@ -444,6 +501,17 @@ int ZEXPORTVA gzprintf(gzFile file, const char *format, int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12, int a13, int a14, int a15, int a16, int a17, int a18, int a19, int a20) { +#if defined(NO_snprintf) && !defined(ZLIB_INSECURE) +#warning "snprintf() not available -- gzprintf() stub returns Z_STREAM_ERROR" +#warning "you can recompile with ZLIB_INSECURE defined to use sprintf()" + /* prevent use of insecure sprintf(), unless purposefully requested */ + (void)file, (void)format, (void)a1, (void)a2, (void)a3, (void)a4, (void)a5, + (void)a6, (void)a7, (void)a8, (void)a9, (void)a10, (void)a11, (void)a12, + (void)a13, (void)a14, (void)a15, (void)a16, (void)a17, (void)a18, + (void)a19, (void)a20; + return Z_STREAM_ERROR; +#else + int ret; unsigned len, left; char *next; gz_statep state; @@ -459,24 +527,34 @@ int ZEXPORTVA gzprintf(gzFile file, const char *format, int a1, int a2, int a3, if (sizeof(int) != sizeof(void *)) return Z_STREAM_ERROR; - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) + /* check that we're writing and that there's no (serious) error */ + if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) return Z_STREAM_ERROR; + gz_error(state, Z_OK, NULL); /* make sure we have some buffer space */ if (state->size == 0 && gz_init(state) == -1) - return state->error; + return state->err; /* check for seek request */ - if (state->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - return state->error; - } + if (state->skip && gz_zero(state) == -1) + return state->err; /* do the printf() into the input buffer, put length in len -- the input buffer is double-sized just for this function, so there is guaranteed to be state->size bytes available after the current contents */ + ret = gz_vacate(state); + if (state->err) { + if (ret && state->again) { + /* There was a non-blocking stall on write, resulting in the part + of the second half of the output buffer being occupied. Return + a Z_BUF_ERROR to let the application know that this gzprintf() + needs to be retried. */ + gz_error(state, Z_BUF_ERROR, "stalled write on gzprintf"); + } + if (!state->again) + return state->err; + } if (strm->avail_in == 0) strm->next_in = state->in; next = (char *)(strm->next_in + strm->avail_in); @@ -510,16 +588,13 @@ int ZEXPORTVA gzprintf(gzFile file, const char *format, int a1, int a2, int a3, /* update buffer and position, compress first half if past that */ strm->avail_in += len; state->x.pos += len; - if (strm->avail_in >= state->size) { - left = strm->avail_in - state->size; - strm->avail_in = state->size; - if (gz_comp(state, Z_NO_FLUSH) == -1) - return state->err; - memmove(state->in, state->in + state->size, left); - strm->next_in = state->in; - strm->avail_in = left; - } + + /* write out buffer if more than half is occupied */ + ret = gz_vacate(state); + if (state->err && !state->again) + return state->err; return (int)len; +#endif } #endif @@ -533,20 +608,18 @@ int ZEXPORT gzflush(gzFile file, int flush) { return Z_STREAM_ERROR; state = (gz_statep)file; - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) + /* check that we're writing and that there's no (serious) error */ + if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) return Z_STREAM_ERROR; + gz_error(state, Z_OK, NULL); /* check flush parameter */ if (flush < 0 || flush > Z_FINISH) return Z_STREAM_ERROR; /* check for seek request */ - if (state->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - return state->err; - } + if (state->skip && gz_zero(state) == -1) + return state->err; /* compress remaining data with requested flush */ (void)gz_comp(state, flush); @@ -564,20 +637,19 @@ int ZEXPORT gzsetparams(gzFile file, int level, int strategy) { state = (gz_statep)file; strm = &(state->strm); - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK || state->direct) + /* check that we're compressing and that there's no (serious) error */ + if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again) || + state->direct) return Z_STREAM_ERROR; + gz_error(state, Z_OK, NULL); /* if no change is requested, then do nothing */ if (level == state->level && strategy == state->strategy) return Z_OK; /* check for seek request */ - if (state->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - return state->err; - } + if (state->skip && gz_zero(state) == -1) + return state->err; /* change compression parameters for subsequent input */ if (state->size) { @@ -606,11 +678,8 @@ int ZEXPORT gzclose_w(gzFile file) { return Z_STREAM_ERROR; /* check for seek request */ - if (state->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - ret = state->err; - } + if (state->skip && gz_zero(state) == -1) + ret = state->err; /* flush, free memory, and close file */ if (gz_comp(state, Z_FINISH) == -1) diff --git a/packages/runtime/vendor/zlib/infback.c b/packages/runtime/vendor/zlib/infback.c index e7b25b307..7ffb7b044 100644 --- a/packages/runtime/vendor/zlib/infback.c +++ b/packages/runtime/vendor/zlib/infback.c @@ -1,5 +1,5 @@ /* infback.c -- inflate using a call-back interface - * Copyright (C) 1995-2022 Mark Adler + * Copyright (C) 1995-2026 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -46,7 +46,7 @@ int ZEXPORT inflateBackInit_(z_streamp strm, int windowBits, #ifdef Z_SOLO return Z_STREAM_ERROR; #else - strm->zfree = zcfree; + strm->zfree = zcfree; #endif state = (struct inflate_state FAR *)ZALLOC(strm, 1, sizeof(struct inflate_state)); @@ -63,57 +63,6 @@ int ZEXPORT inflateBackInit_(z_streamp strm, int windowBits, return Z_OK; } -/* - Return state with length and distance decoding tables and index sizes set to - fixed code decoding. Normally this returns fixed tables from inffixed.h. - If BUILDFIXED is defined, then instead this routine builds the tables the - first time it's called, and returns those tables the first time and - thereafter. This reduces the size of the code by about 2K bytes, in - exchange for a little execution time. However, BUILDFIXED should not be - used for threaded applications, since the rewriting of the tables and virgin - may not be thread-safe. - */ -local void fixedtables(struct inflate_state FAR *state) { -#ifdef BUILDFIXED - static int virgin = 1; - static code *lenfix, *distfix; - static code fixed[544]; - - /* build fixed huffman tables if first call (may not be thread safe) */ - if (virgin) { - unsigned sym, bits; - static code *next; - - /* literal/length table */ - sym = 0; - while (sym < 144) state->lens[sym++] = 8; - while (sym < 256) state->lens[sym++] = 9; - while (sym < 280) state->lens[sym++] = 7; - while (sym < 288) state->lens[sym++] = 8; - next = fixed; - lenfix = next; - bits = 9; - inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work); - - /* distance table */ - sym = 0; - while (sym < 32) state->lens[sym++] = 5; - distfix = next; - bits = 5; - inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work); - - /* do this just once */ - virgin = 0; - } -#else /* !BUILDFIXED */ -# include "inffixed.h" -#endif /* BUILDFIXED */ - state->lencode = lenfix; - state->lenbits = 9; - state->distcode = distfix; - state->distbits = 5; -} - /* Macros for inflateBack(): */ /* Load returned state from inflate_fast() */ @@ -293,7 +242,7 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, state->mode = STORED; break; case 1: /* fixed block */ - fixedtables(state); + inflate_fixed(state); Tracev((stderr, "inflate: fixed codes block%s\n", state->last ? " (last)" : "")); state->mode = LEN; /* decode codes */ @@ -303,8 +252,8 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, state->last ? " (last)" : "")); state->mode = TABLE; break; - case 3: - strm->msg = (char *)"invalid block type"; + default: + strm->msg = (z_const char *)"invalid block type"; state->mode = BAD; } DROPBITS(2); @@ -315,7 +264,7 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, BYTEBITS(); /* go to byte boundary */ NEEDBITS(32); if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) { - strm->msg = (char *)"invalid stored block lengths"; + strm->msg = (z_const char *)"invalid stored block lengths"; state->mode = BAD; break; } @@ -353,7 +302,8 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, DROPBITS(4); #ifndef PKZIP_BUG_WORKAROUND if (state->nlen > 286 || state->ndist > 30) { - strm->msg = (char *)"too many length or distance symbols"; + strm->msg = (z_const char *) + "too many length or distance symbols"; state->mode = BAD; break; } @@ -375,7 +325,7 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, ret = inflate_table(CODES, state->lens, 19, &(state->next), &(state->lenbits), state->work); if (ret) { - strm->msg = (char *)"invalid code lengths set"; + strm->msg = (z_const char *)"invalid code lengths set"; state->mode = BAD; break; } @@ -398,7 +348,8 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, NEEDBITS(here.bits + 2); DROPBITS(here.bits); if (state->have == 0) { - strm->msg = (char *)"invalid bit length repeat"; + strm->msg = (z_const char *) + "invalid bit length repeat"; state->mode = BAD; break; } @@ -421,7 +372,8 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, DROPBITS(7); } if (state->have + copy > state->nlen + state->ndist) { - strm->msg = (char *)"invalid bit length repeat"; + strm->msg = (z_const char *) + "invalid bit length repeat"; state->mode = BAD; break; } @@ -435,30 +387,31 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, /* check for end-of-block code (better have one) */ if (state->lens[256] == 0) { - strm->msg = (char *)"invalid code -- missing end-of-block"; + strm->msg = (z_const char *) + "invalid code -- missing end-of-block"; state->mode = BAD; break; } /* build code tables -- note: do not change the lenbits or distbits - values here (9 and 6) without reading the comments in inftrees.h + values here (10 and 9) without reading the comments in inftrees.h concerning the ENOUGH constants, which depend on those values */ state->next = state->codes; state->lencode = (code const FAR *)(state->next); - state->lenbits = 9; + state->lenbits = 10; ret = inflate_table(LENS, state->lens, state->nlen, &(state->next), &(state->lenbits), state->work); if (ret) { - strm->msg = (char *)"invalid literal/lengths set"; + strm->msg = (z_const char *)"invalid literal/lengths set"; state->mode = BAD; break; } state->distcode = (code const FAR *)(state->next); - state->distbits = 6; + state->distbits = 9; ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist, &(state->next), &(state->distbits), state->work); if (ret) { - strm->msg = (char *)"invalid distances set"; + strm->msg = (z_const char *)"invalid distances set"; state->mode = BAD; break; } @@ -468,10 +421,9 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, case LEN: /* use inflate_fast() if we have enough input and output */ - if (have >= 6 && left >= 258) { + if (have >= INFLATE_FAST_MIN_INPUT && + left >= INFLATE_FAST_MIN_OUTPUT) { RESTORE(); - if (state->whave < state->wsize) - state->whave = state->wsize - left; inflate_fast(strm, state->wsize); LOAD(); break; @@ -517,7 +469,7 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, /* invalid code */ if (here.op & 64) { - strm->msg = (char *)"invalid literal/length code"; + strm->msg = (z_const char *)"invalid literal/length code"; state->mode = BAD; break; } @@ -549,7 +501,7 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, } DROPBITS(here.bits); if (here.op & 64) { - strm->msg = (char *)"invalid distance code"; + strm->msg = (z_const char *)"invalid distance code"; state->mode = BAD; break; } @@ -564,7 +516,7 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, } if (state->offset > state->wsize - (state->whave < state->wsize ? left : 0)) { - strm->msg = (char *)"invalid distance too far back"; + strm->msg = (z_const char *)"invalid distance too far back"; state->mode = BAD; break; } diff --git a/packages/runtime/vendor/zlib/inffast.c b/packages/runtime/vendor/zlib/inffast.c index 9354676e7..58fc5afc0 100644 --- a/packages/runtime/vendor/zlib/inffast.c +++ b/packages/runtime/vendor/zlib/inffast.c @@ -1,5 +1,5 @@ /* inffast.c -- fast decoding - * Copyright (C) 1995-2017 Mark Adler + * Copyright (C) 1995-2026 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -18,13 +18,13 @@ available, an end-of-block is encountered, or a data error is encountered. When large enough input and output buffers are supplied to inflate(), for example, a 16K input buffer and a 64K output buffer, more than 95% of the - inflate execution time is spent in this routine. + inflate() execution time is spent in this routine. Entry assumptions: state->mode == LEN - strm->avail_in >= 6 - strm->avail_out >= 258 + strm->avail_in >= INFLATE_FAST_MIN_INPUT (6 bytes) + strm->avail_out >= INFLATE_FAST_MIN_OUTPUT (258 bytes) start >= strm->avail_out state->bits < 8 @@ -36,16 +36,20 @@ Notes: + INFLATE_FAST_MIN_INPUT: 6 bytes + - The maximum input bits used by a length/distance pair is 15 bits for the length code, 5 bits for the length extra, 15 bits for the distance code, and 13 bits for the distance extra. This totals 48 bits, or six bytes. Therefore if strm->avail_in >= 6, then there is enough input to avoid checking for available input while decoding. + INFLATE_FAST_MIN_OUTPUT: 258 bytes + - The maximum bytes that a single length/distance pair can output is 258 bytes, which is the maximum length that can be coded. inflate_fast() requires strm->avail_out >= 258 for each loop to avoid checking for - output space. + available output space while decoding. */ void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start) { struct inflate_state FAR *state; @@ -77,10 +81,10 @@ void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start) { /* copy state to local variables */ state = (struct inflate_state FAR *)strm->state; in = strm->next_in; - last = in + (strm->avail_in - 5); + last = in + (strm->avail_in - (INFLATE_FAST_MIN_INPUT - 1)); out = strm->next_out; beg = out - (start - strm->avail_out); - end = out + (strm->avail_out - 257); + end = out + (strm->avail_out - (INFLATE_FAST_MIN_OUTPUT - 1)); #ifdef INFLATE_STRICT dmax = state->dmax; #endif @@ -155,7 +159,8 @@ void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start) { dist += (unsigned)hold & ((1U << op) - 1); #ifdef INFLATE_STRICT if (dist > dmax) { - strm->msg = (char *)"invalid distance too far back"; + strm->msg = (z_const char *) + "invalid distance too far back"; state->mode = BAD; break; } @@ -168,8 +173,8 @@ void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start) { op = dist - op; /* distance back in window */ if (op > whave) { if (state->sane) { - strm->msg = - (char *)"invalid distance too far back"; + strm->msg = (z_const char *) + "invalid distance too far back"; state->mode = BAD; break; } @@ -265,7 +270,7 @@ void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start) { goto dodist; } else { - strm->msg = (char *)"invalid distance code"; + strm->msg = (z_const char *)"invalid distance code"; state->mode = BAD; break; } @@ -280,7 +285,7 @@ void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start) { break; } else { - strm->msg = (char *)"invalid literal/length code"; + strm->msg = (z_const char *)"invalid literal/length code"; state->mode = BAD; break; } @@ -295,9 +300,12 @@ void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start) { /* update state and return */ strm->next_in = in; strm->next_out = out; - strm->avail_in = (unsigned)(in < last ? 5 + (last - in) : 5 - (in - last)); + strm->avail_in = (unsigned)(in < last ? + (INFLATE_FAST_MIN_INPUT - 1) + (last - in) : + (INFLATE_FAST_MIN_INPUT - 1) - (in - last)); strm->avail_out = (unsigned)(out < end ? - 257 + (end - out) : 257 - (out - end)); + (INFLATE_FAST_MIN_OUTPUT - 1) + (end - out) : + (INFLATE_FAST_MIN_OUTPUT - 1) - (out - end)); state->hold = hold; state->bits = bits; return; diff --git a/packages/runtime/vendor/zlib/inffast.h b/packages/runtime/vendor/zlib/inffast.h index 49c6d156c..9ff6ce3b6 100644 --- a/packages/runtime/vendor/zlib/inffast.h +++ b/packages/runtime/vendor/zlib/inffast.h @@ -8,4 +8,19 @@ subject to change. Applications should only use zlib.h. */ +/* INFLATE_FAST_MIN_INPUT: the minimum number of input bytes needed so that + we can safely call inflate_fast() with only one up-front bounds check. One + length/distance code pair (15 bits for the length code, 5 bits for length + extra, 15 bits for the distance code, 13 bits for distance extra) requires + reading up to 48 input bits (6 bytes). +*/ +#define INFLATE_FAST_MIN_INPUT 6 + +/* INFLATE_FAST_MIN_OUTPUT: the minimum number of output bytes needed so that + we can safely call inflate_fast() with only one up-front bounds check. One + length/distance code pair can output up to 258 bytes, which is the maximum + length that can be coded. + */ +#define INFLATE_FAST_MIN_OUTPUT 258 + void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start); diff --git a/packages/runtime/vendor/zlib/inffixed.h b/packages/runtime/vendor/zlib/inffixed.h index d62832776..05ce88e4f 100644 --- a/packages/runtime/vendor/zlib/inffixed.h +++ b/packages/runtime/vendor/zlib/inffixed.h @@ -1,94 +1,94 @@ - /* inffixed.h -- table for decoding fixed codes - * Generated automatically by makefixed(). - */ +/* inffixed.h -- table for decoding fixed codes + * Generated automatically by makefixed(). + */ - /* WARNING: this file should *not* be used by applications. - It is part of the implementation of this library and is - subject to change. Applications should only use zlib.h. - */ +/* WARNING: this file should *not* be used by applications. + It is part of the implementation of this library and is + subject to change. Applications should only use zlib.h. + */ - static const code lenfix[512] = { - {96,7,0},{0,8,80},{0,8,16},{20,8,115},{18,7,31},{0,8,112},{0,8,48}, - {0,9,192},{16,7,10},{0,8,96},{0,8,32},{0,9,160},{0,8,0},{0,8,128}, - {0,8,64},{0,9,224},{16,7,6},{0,8,88},{0,8,24},{0,9,144},{19,7,59}, - {0,8,120},{0,8,56},{0,9,208},{17,7,17},{0,8,104},{0,8,40},{0,9,176}, - {0,8,8},{0,8,136},{0,8,72},{0,9,240},{16,7,4},{0,8,84},{0,8,20}, - {21,8,227},{19,7,43},{0,8,116},{0,8,52},{0,9,200},{17,7,13},{0,8,100}, - {0,8,36},{0,9,168},{0,8,4},{0,8,132},{0,8,68},{0,9,232},{16,7,8}, - {0,8,92},{0,8,28},{0,9,152},{20,7,83},{0,8,124},{0,8,60},{0,9,216}, - {18,7,23},{0,8,108},{0,8,44},{0,9,184},{0,8,12},{0,8,140},{0,8,76}, - {0,9,248},{16,7,3},{0,8,82},{0,8,18},{21,8,163},{19,7,35},{0,8,114}, - {0,8,50},{0,9,196},{17,7,11},{0,8,98},{0,8,34},{0,9,164},{0,8,2}, - {0,8,130},{0,8,66},{0,9,228},{16,7,7},{0,8,90},{0,8,26},{0,9,148}, - {20,7,67},{0,8,122},{0,8,58},{0,9,212},{18,7,19},{0,8,106},{0,8,42}, - {0,9,180},{0,8,10},{0,8,138},{0,8,74},{0,9,244},{16,7,5},{0,8,86}, - {0,8,22},{64,8,0},{19,7,51},{0,8,118},{0,8,54},{0,9,204},{17,7,15}, - {0,8,102},{0,8,38},{0,9,172},{0,8,6},{0,8,134},{0,8,70},{0,9,236}, - {16,7,9},{0,8,94},{0,8,30},{0,9,156},{20,7,99},{0,8,126},{0,8,62}, - {0,9,220},{18,7,27},{0,8,110},{0,8,46},{0,9,188},{0,8,14},{0,8,142}, - {0,8,78},{0,9,252},{96,7,0},{0,8,81},{0,8,17},{21,8,131},{18,7,31}, - {0,8,113},{0,8,49},{0,9,194},{16,7,10},{0,8,97},{0,8,33},{0,9,162}, - {0,8,1},{0,8,129},{0,8,65},{0,9,226},{16,7,6},{0,8,89},{0,8,25}, - {0,9,146},{19,7,59},{0,8,121},{0,8,57},{0,9,210},{17,7,17},{0,8,105}, - {0,8,41},{0,9,178},{0,8,9},{0,8,137},{0,8,73},{0,9,242},{16,7,4}, - {0,8,85},{0,8,21},{16,8,258},{19,7,43},{0,8,117},{0,8,53},{0,9,202}, - {17,7,13},{0,8,101},{0,8,37},{0,9,170},{0,8,5},{0,8,133},{0,8,69}, - {0,9,234},{16,7,8},{0,8,93},{0,8,29},{0,9,154},{20,7,83},{0,8,125}, - {0,8,61},{0,9,218},{18,7,23},{0,8,109},{0,8,45},{0,9,186},{0,8,13}, - {0,8,141},{0,8,77},{0,9,250},{16,7,3},{0,8,83},{0,8,19},{21,8,195}, - {19,7,35},{0,8,115},{0,8,51},{0,9,198},{17,7,11},{0,8,99},{0,8,35}, - {0,9,166},{0,8,3},{0,8,131},{0,8,67},{0,9,230},{16,7,7},{0,8,91}, - {0,8,27},{0,9,150},{20,7,67},{0,8,123},{0,8,59},{0,9,214},{18,7,19}, - {0,8,107},{0,8,43},{0,9,182},{0,8,11},{0,8,139},{0,8,75},{0,9,246}, - {16,7,5},{0,8,87},{0,8,23},{64,8,0},{19,7,51},{0,8,119},{0,8,55}, - {0,9,206},{17,7,15},{0,8,103},{0,8,39},{0,9,174},{0,8,7},{0,8,135}, - {0,8,71},{0,9,238},{16,7,9},{0,8,95},{0,8,31},{0,9,158},{20,7,99}, - {0,8,127},{0,8,63},{0,9,222},{18,7,27},{0,8,111},{0,8,47},{0,9,190}, - {0,8,15},{0,8,143},{0,8,79},{0,9,254},{96,7,0},{0,8,80},{0,8,16}, - {20,8,115},{18,7,31},{0,8,112},{0,8,48},{0,9,193},{16,7,10},{0,8,96}, - {0,8,32},{0,9,161},{0,8,0},{0,8,128},{0,8,64},{0,9,225},{16,7,6}, - {0,8,88},{0,8,24},{0,9,145},{19,7,59},{0,8,120},{0,8,56},{0,9,209}, - {17,7,17},{0,8,104},{0,8,40},{0,9,177},{0,8,8},{0,8,136},{0,8,72}, - {0,9,241},{16,7,4},{0,8,84},{0,8,20},{21,8,227},{19,7,43},{0,8,116}, - {0,8,52},{0,9,201},{17,7,13},{0,8,100},{0,8,36},{0,9,169},{0,8,4}, - {0,8,132},{0,8,68},{0,9,233},{16,7,8},{0,8,92},{0,8,28},{0,9,153}, - {20,7,83},{0,8,124},{0,8,60},{0,9,217},{18,7,23},{0,8,108},{0,8,44}, - {0,9,185},{0,8,12},{0,8,140},{0,8,76},{0,9,249},{16,7,3},{0,8,82}, - {0,8,18},{21,8,163},{19,7,35},{0,8,114},{0,8,50},{0,9,197},{17,7,11}, - {0,8,98},{0,8,34},{0,9,165},{0,8,2},{0,8,130},{0,8,66},{0,9,229}, - {16,7,7},{0,8,90},{0,8,26},{0,9,149},{20,7,67},{0,8,122},{0,8,58}, - {0,9,213},{18,7,19},{0,8,106},{0,8,42},{0,9,181},{0,8,10},{0,8,138}, - {0,8,74},{0,9,245},{16,7,5},{0,8,86},{0,8,22},{64,8,0},{19,7,51}, - {0,8,118},{0,8,54},{0,9,205},{17,7,15},{0,8,102},{0,8,38},{0,9,173}, - {0,8,6},{0,8,134},{0,8,70},{0,9,237},{16,7,9},{0,8,94},{0,8,30}, - {0,9,157},{20,7,99},{0,8,126},{0,8,62},{0,9,221},{18,7,27},{0,8,110}, - {0,8,46},{0,9,189},{0,8,14},{0,8,142},{0,8,78},{0,9,253},{96,7,0}, - {0,8,81},{0,8,17},{21,8,131},{18,7,31},{0,8,113},{0,8,49},{0,9,195}, - {16,7,10},{0,8,97},{0,8,33},{0,9,163},{0,8,1},{0,8,129},{0,8,65}, - {0,9,227},{16,7,6},{0,8,89},{0,8,25},{0,9,147},{19,7,59},{0,8,121}, - {0,8,57},{0,9,211},{17,7,17},{0,8,105},{0,8,41},{0,9,179},{0,8,9}, - {0,8,137},{0,8,73},{0,9,243},{16,7,4},{0,8,85},{0,8,21},{16,8,258}, - {19,7,43},{0,8,117},{0,8,53},{0,9,203},{17,7,13},{0,8,101},{0,8,37}, - {0,9,171},{0,8,5},{0,8,133},{0,8,69},{0,9,235},{16,7,8},{0,8,93}, - {0,8,29},{0,9,155},{20,7,83},{0,8,125},{0,8,61},{0,9,219},{18,7,23}, - {0,8,109},{0,8,45},{0,9,187},{0,8,13},{0,8,141},{0,8,77},{0,9,251}, - {16,7,3},{0,8,83},{0,8,19},{21,8,195},{19,7,35},{0,8,115},{0,8,51}, - {0,9,199},{17,7,11},{0,8,99},{0,8,35},{0,9,167},{0,8,3},{0,8,131}, - {0,8,67},{0,9,231},{16,7,7},{0,8,91},{0,8,27},{0,9,151},{20,7,67}, - {0,8,123},{0,8,59},{0,9,215},{18,7,19},{0,8,107},{0,8,43},{0,9,183}, - {0,8,11},{0,8,139},{0,8,75},{0,9,247},{16,7,5},{0,8,87},{0,8,23}, - {64,8,0},{19,7,51},{0,8,119},{0,8,55},{0,9,207},{17,7,15},{0,8,103}, - {0,8,39},{0,9,175},{0,8,7},{0,8,135},{0,8,71},{0,9,239},{16,7,9}, - {0,8,95},{0,8,31},{0,9,159},{20,7,99},{0,8,127},{0,8,63},{0,9,223}, - {18,7,27},{0,8,111},{0,8,47},{0,9,191},{0,8,15},{0,8,143},{0,8,79}, - {0,9,255} - }; +static const code lenfix[512] = { + {96,7,0},{0,8,80},{0,8,16},{20,8,115},{18,7,31},{0,8,112},{0,8,48}, + {0,9,192},{16,7,10},{0,8,96},{0,8,32},{0,9,160},{0,8,0},{0,8,128}, + {0,8,64},{0,9,224},{16,7,6},{0,8,88},{0,8,24},{0,9,144},{19,7,59}, + {0,8,120},{0,8,56},{0,9,208},{17,7,17},{0,8,104},{0,8,40},{0,9,176}, + {0,8,8},{0,8,136},{0,8,72},{0,9,240},{16,7,4},{0,8,84},{0,8,20}, + {21,8,227},{19,7,43},{0,8,116},{0,8,52},{0,9,200},{17,7,13},{0,8,100}, + {0,8,36},{0,9,168},{0,8,4},{0,8,132},{0,8,68},{0,9,232},{16,7,8}, + {0,8,92},{0,8,28},{0,9,152},{20,7,83},{0,8,124},{0,8,60},{0,9,216}, + {18,7,23},{0,8,108},{0,8,44},{0,9,184},{0,8,12},{0,8,140},{0,8,76}, + {0,9,248},{16,7,3},{0,8,82},{0,8,18},{21,8,163},{19,7,35},{0,8,114}, + {0,8,50},{0,9,196},{17,7,11},{0,8,98},{0,8,34},{0,9,164},{0,8,2}, + {0,8,130},{0,8,66},{0,9,228},{16,7,7},{0,8,90},{0,8,26},{0,9,148}, + {20,7,67},{0,8,122},{0,8,58},{0,9,212},{18,7,19},{0,8,106},{0,8,42}, + {0,9,180},{0,8,10},{0,8,138},{0,8,74},{0,9,244},{16,7,5},{0,8,86}, + {0,8,22},{64,8,0},{19,7,51},{0,8,118},{0,8,54},{0,9,204},{17,7,15}, + {0,8,102},{0,8,38},{0,9,172},{0,8,6},{0,8,134},{0,8,70},{0,9,236}, + {16,7,9},{0,8,94},{0,8,30},{0,9,156},{20,7,99},{0,8,126},{0,8,62}, + {0,9,220},{18,7,27},{0,8,110},{0,8,46},{0,9,188},{0,8,14},{0,8,142}, + {0,8,78},{0,9,252},{96,7,0},{0,8,81},{0,8,17},{21,8,131},{18,7,31}, + {0,8,113},{0,8,49},{0,9,194},{16,7,10},{0,8,97},{0,8,33},{0,9,162}, + {0,8,1},{0,8,129},{0,8,65},{0,9,226},{16,7,6},{0,8,89},{0,8,25}, + {0,9,146},{19,7,59},{0,8,121},{0,8,57},{0,9,210},{17,7,17},{0,8,105}, + {0,8,41},{0,9,178},{0,8,9},{0,8,137},{0,8,73},{0,9,242},{16,7,4}, + {0,8,85},{0,8,21},{16,8,258},{19,7,43},{0,8,117},{0,8,53},{0,9,202}, + {17,7,13},{0,8,101},{0,8,37},{0,9,170},{0,8,5},{0,8,133},{0,8,69}, + {0,9,234},{16,7,8},{0,8,93},{0,8,29},{0,9,154},{20,7,83},{0,8,125}, + {0,8,61},{0,9,218},{18,7,23},{0,8,109},{0,8,45},{0,9,186},{0,8,13}, + {0,8,141},{0,8,77},{0,9,250},{16,7,3},{0,8,83},{0,8,19},{21,8,195}, + {19,7,35},{0,8,115},{0,8,51},{0,9,198},{17,7,11},{0,8,99},{0,8,35}, + {0,9,166},{0,8,3},{0,8,131},{0,8,67},{0,9,230},{16,7,7},{0,8,91}, + {0,8,27},{0,9,150},{20,7,67},{0,8,123},{0,8,59},{0,9,214},{18,7,19}, + {0,8,107},{0,8,43},{0,9,182},{0,8,11},{0,8,139},{0,8,75},{0,9,246}, + {16,7,5},{0,8,87},{0,8,23},{64,8,0},{19,7,51},{0,8,119},{0,8,55}, + {0,9,206},{17,7,15},{0,8,103},{0,8,39},{0,9,174},{0,8,7},{0,8,135}, + {0,8,71},{0,9,238},{16,7,9},{0,8,95},{0,8,31},{0,9,158},{20,7,99}, + {0,8,127},{0,8,63},{0,9,222},{18,7,27},{0,8,111},{0,8,47},{0,9,190}, + {0,8,15},{0,8,143},{0,8,79},{0,9,254},{96,7,0},{0,8,80},{0,8,16}, + {20,8,115},{18,7,31},{0,8,112},{0,8,48},{0,9,193},{16,7,10},{0,8,96}, + {0,8,32},{0,9,161},{0,8,0},{0,8,128},{0,8,64},{0,9,225},{16,7,6}, + {0,8,88},{0,8,24},{0,9,145},{19,7,59},{0,8,120},{0,8,56},{0,9,209}, + {17,7,17},{0,8,104},{0,8,40},{0,9,177},{0,8,8},{0,8,136},{0,8,72}, + {0,9,241},{16,7,4},{0,8,84},{0,8,20},{21,8,227},{19,7,43},{0,8,116}, + {0,8,52},{0,9,201},{17,7,13},{0,8,100},{0,8,36},{0,9,169},{0,8,4}, + {0,8,132},{0,8,68},{0,9,233},{16,7,8},{0,8,92},{0,8,28},{0,9,153}, + {20,7,83},{0,8,124},{0,8,60},{0,9,217},{18,7,23},{0,8,108},{0,8,44}, + {0,9,185},{0,8,12},{0,8,140},{0,8,76},{0,9,249},{16,7,3},{0,8,82}, + {0,8,18},{21,8,163},{19,7,35},{0,8,114},{0,8,50},{0,9,197},{17,7,11}, + {0,8,98},{0,8,34},{0,9,165},{0,8,2},{0,8,130},{0,8,66},{0,9,229}, + {16,7,7},{0,8,90},{0,8,26},{0,9,149},{20,7,67},{0,8,122},{0,8,58}, + {0,9,213},{18,7,19},{0,8,106},{0,8,42},{0,9,181},{0,8,10},{0,8,138}, + {0,8,74},{0,9,245},{16,7,5},{0,8,86},{0,8,22},{64,8,0},{19,7,51}, + {0,8,118},{0,8,54},{0,9,205},{17,7,15},{0,8,102},{0,8,38},{0,9,173}, + {0,8,6},{0,8,134},{0,8,70},{0,9,237},{16,7,9},{0,8,94},{0,8,30}, + {0,9,157},{20,7,99},{0,8,126},{0,8,62},{0,9,221},{18,7,27},{0,8,110}, + {0,8,46},{0,9,189},{0,8,14},{0,8,142},{0,8,78},{0,9,253},{96,7,0}, + {0,8,81},{0,8,17},{21,8,131},{18,7,31},{0,8,113},{0,8,49},{0,9,195}, + {16,7,10},{0,8,97},{0,8,33},{0,9,163},{0,8,1},{0,8,129},{0,8,65}, + {0,9,227},{16,7,6},{0,8,89},{0,8,25},{0,9,147},{19,7,59},{0,8,121}, + {0,8,57},{0,9,211},{17,7,17},{0,8,105},{0,8,41},{0,9,179},{0,8,9}, + {0,8,137},{0,8,73},{0,9,243},{16,7,4},{0,8,85},{0,8,21},{16,8,258}, + {19,7,43},{0,8,117},{0,8,53},{0,9,203},{17,7,13},{0,8,101},{0,8,37}, + {0,9,171},{0,8,5},{0,8,133},{0,8,69},{0,9,235},{16,7,8},{0,8,93}, + {0,8,29},{0,9,155},{20,7,83},{0,8,125},{0,8,61},{0,9,219},{18,7,23}, + {0,8,109},{0,8,45},{0,9,187},{0,8,13},{0,8,141},{0,8,77},{0,9,251}, + {16,7,3},{0,8,83},{0,8,19},{21,8,195},{19,7,35},{0,8,115},{0,8,51}, + {0,9,199},{17,7,11},{0,8,99},{0,8,35},{0,9,167},{0,8,3},{0,8,131}, + {0,8,67},{0,9,231},{16,7,7},{0,8,91},{0,8,27},{0,9,151},{20,7,67}, + {0,8,123},{0,8,59},{0,9,215},{18,7,19},{0,8,107},{0,8,43},{0,9,183}, + {0,8,11},{0,8,139},{0,8,75},{0,9,247},{16,7,5},{0,8,87},{0,8,23}, + {64,8,0},{19,7,51},{0,8,119},{0,8,55},{0,9,207},{17,7,15},{0,8,103}, + {0,8,39},{0,9,175},{0,8,7},{0,8,135},{0,8,71},{0,9,239},{16,7,9}, + {0,8,95},{0,8,31},{0,9,159},{20,7,99},{0,8,127},{0,8,63},{0,9,223}, + {18,7,27},{0,8,111},{0,8,47},{0,9,191},{0,8,15},{0,8,143},{0,8,79}, + {0,9,255} +}; - static const code distfix[32] = { - {16,5,1},{23,5,257},{19,5,17},{27,5,4097},{17,5,5},{25,5,1025}, - {21,5,65},{29,5,16385},{16,5,3},{24,5,513},{20,5,33},{28,5,8193}, - {18,5,9},{26,5,2049},{22,5,129},{64,5,0},{16,5,2},{23,5,385}, - {19,5,25},{27,5,6145},{17,5,7},{25,5,1537},{21,5,97},{29,5,24577}, - {16,5,4},{24,5,769},{20,5,49},{28,5,12289},{18,5,13},{26,5,3073}, - {22,5,193},{64,5,0} - }; +static const code distfix[32] = { + {16,5,1},{23,5,257},{19,5,17},{27,5,4097},{17,5,5},{25,5,1025}, + {21,5,65},{29,5,16385},{16,5,3},{24,5,513},{20,5,33},{28,5,8193}, + {18,5,9},{26,5,2049},{22,5,129},{64,5,0},{16,5,2},{23,5,385}, + {19,5,25},{27,5,6145},{17,5,7},{25,5,1537},{21,5,97},{29,5,24577}, + {16,5,4},{24,5,769},{20,5,49},{28,5,12289},{18,5,13},{26,5,3073}, + {22,5,193},{64,5,0} +}; diff --git a/packages/runtime/vendor/zlib/inflate.c b/packages/runtime/vendor/zlib/inflate.c index 94ecff015..0742ce10e 100644 --- a/packages/runtime/vendor/zlib/inflate.c +++ b/packages/runtime/vendor/zlib/inflate.c @@ -1,5 +1,5 @@ /* inflate.c -- zlib decompression - * Copyright (C) 1995-2022 Mark Adler + * Copyright (C) 1995-2026 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -85,12 +85,6 @@ #include "inflate.h" #include "inffast.h" -#ifdef MAKEFIXED -# ifndef BUILDFIXED -# define BUILDFIXED -# endif -#endif - local int inflateStateCheck(z_streamp strm) { struct inflate_state FAR *state; if (strm == Z_NULL || @@ -110,6 +104,7 @@ int ZEXPORT inflateResetKeep(z_streamp strm) { state = (struct inflate_state FAR *)strm->state; strm->total_in = strm->total_out = state->total = 0; strm->msg = Z_NULL; + strm->data_type = 0; if (state->wrap) /* to support ill-conceived Java test suite */ strm->adler = state->wrap & 1; state->mode = HEAD; @@ -202,11 +197,13 @@ int ZEXPORT inflateInit2_(z_streamp strm, int windowBits, state = (struct inflate_state FAR *) ZALLOC(strm, 1, sizeof(struct inflate_state)); if (state == Z_NULL) return Z_MEM_ERROR; + zmemzero(state, sizeof(struct inflate_state)); Tracev((stderr, "inflate: allocated\n")); strm->state = (struct internal_state FAR *)state; state->strm = strm; state->window = Z_NULL; state->mode = HEAD; /* to pass state test in inflateReset2() */ + state->check = 1L; /* 1L is the result of adler32() zero length data */ ret = inflateReset2(strm, windowBits); if (ret != Z_OK) { ZFREE(strm, state); @@ -234,123 +231,11 @@ int ZEXPORT inflatePrime(z_streamp strm, int bits, int value) { } if (bits > 16 || state->bits + (uInt)bits > 32) return Z_STREAM_ERROR; value &= (1L << bits) - 1; - state->hold += (unsigned)value << state->bits; + state->hold += (unsigned long)value << state->bits; state->bits += (uInt)bits; return Z_OK; } -/* - Return state with length and distance decoding tables and index sizes set to - fixed code decoding. Normally this returns fixed tables from inffixed.h. - If BUILDFIXED is defined, then instead this routine builds the tables the - first time it's called, and returns those tables the first time and - thereafter. This reduces the size of the code by about 2K bytes, in - exchange for a little execution time. However, BUILDFIXED should not be - used for threaded applications, since the rewriting of the tables and virgin - may not be thread-safe. - */ -local void fixedtables(struct inflate_state FAR *state) { -#ifdef BUILDFIXED - static int virgin = 1; - static code *lenfix, *distfix; - static code fixed[544]; - - /* build fixed huffman tables if first call (may not be thread safe) */ - if (virgin) { - unsigned sym, bits; - static code *next; - - /* literal/length table */ - sym = 0; - while (sym < 144) state->lens[sym++] = 8; - while (sym < 256) state->lens[sym++] = 9; - while (sym < 280) state->lens[sym++] = 7; - while (sym < 288) state->lens[sym++] = 8; - next = fixed; - lenfix = next; - bits = 9; - inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work); - - /* distance table */ - sym = 0; - while (sym < 32) state->lens[sym++] = 5; - distfix = next; - bits = 5; - inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work); - - /* do this just once */ - virgin = 0; - } -#else /* !BUILDFIXED */ -# include "inffixed.h" -#endif /* BUILDFIXED */ - state->lencode = lenfix; - state->lenbits = 9; - state->distcode = distfix; - state->distbits = 5; -} - -#ifdef MAKEFIXED -#include - -/* - Write out the inffixed.h that is #include'd above. Defining MAKEFIXED also - defines BUILDFIXED, so the tables are built on the fly. makefixed() writes - those tables to stdout, which would be piped to inffixed.h. A small program - can simply call makefixed to do this: - - void makefixed(void); - - int main(void) - { - makefixed(); - return 0; - } - - Then that can be linked with zlib built with MAKEFIXED defined and run: - - a.out > inffixed.h - */ -void makefixed(void) -{ - unsigned low, size; - struct inflate_state state; - - fixedtables(&state); - puts(" /* inffixed.h -- table for decoding fixed codes"); - puts(" * Generated automatically by makefixed()."); - puts(" */"); - puts(""); - puts(" /* WARNING: this file should *not* be used by applications."); - puts(" It is part of the implementation of this library and is"); - puts(" subject to change. Applications should only use zlib.h."); - puts(" */"); - puts(""); - size = 1U << 9; - printf(" static const code lenfix[%u] = {", size); - low = 0; - for (;;) { - if ((low % 7) == 0) printf("\n "); - printf("{%u,%u,%d}", (low & 127) == 99 ? 64 : state.lencode[low].op, - state.lencode[low].bits, state.lencode[low].val); - if (++low == size) break; - putchar(','); - } - puts("\n };"); - size = 1U << 5; - printf("\n static const code distfix[%u] = {", size); - low = 0; - for (;;) { - if ((low % 6) == 0) printf("\n "); - printf("{%u,%u,%d}", state.distcode[low].op, state.distcode[low].bits, - state.distcode[low].val); - if (++low == size) break; - putchar(','); - } - puts("\n };"); -} -#endif /* MAKEFIXED */ - /* Update the window with the last wsize (normally 32K) bytes written before returning. If window does not exist yet, create it. This is only called @@ -642,12 +527,12 @@ int ZEXPORT inflate(z_streamp strm, int flush) { if ( #endif ((BITS(8) << 8) + (hold >> 8)) % 31) { - strm->msg = (char *)"incorrect header check"; + strm->msg = (z_const char *)"incorrect header check"; state->mode = BAD; break; } if (BITS(4) != Z_DEFLATED) { - strm->msg = (char *)"unknown compression method"; + strm->msg = (z_const char *)"unknown compression method"; state->mode = BAD; break; } @@ -656,7 +541,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { if (state->wbits == 0) state->wbits = len; if (len > 15 || len > state->wbits) { - strm->msg = (char *)"invalid window size"; + strm->msg = (z_const char *)"invalid window size"; state->mode = BAD; break; } @@ -672,12 +557,12 @@ int ZEXPORT inflate(z_streamp strm, int flush) { NEEDBITS(16); state->flags = (int)(hold); if ((state->flags & 0xff) != Z_DEFLATED) { - strm->msg = (char *)"unknown compression method"; + strm->msg = (z_const char *)"unknown compression method"; state->mode = BAD; break; } if (state->flags & 0xe000) { - strm->msg = (char *)"unknown header flags set"; + strm->msg = (z_const char *)"unknown header flags set"; state->mode = BAD; break; } @@ -793,7 +678,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { if (state->flags & 0x0200) { NEEDBITS(16); if ((state->wrap & 4) && hold != (state->check & 0xffff)) { - strm->msg = (char *)"header crc mismatch"; + strm->msg = (z_const char *)"header crc mismatch"; state->mode = BAD; break; } @@ -840,7 +725,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { state->mode = STORED; break; case 1: /* fixed block */ - fixedtables(state); + inflate_fixed(state); Tracev((stderr, "inflate: fixed codes block%s\n", state->last ? " (last)" : "")); state->mode = LEN_; /* decode codes */ @@ -854,8 +739,8 @@ int ZEXPORT inflate(z_streamp strm, int flush) { state->last ? " (last)" : "")); state->mode = TABLE; break; - case 3: - strm->msg = (char *)"invalid block type"; + default: + strm->msg = (z_const char *)"invalid block type"; state->mode = BAD; } DROPBITS(2); @@ -864,7 +749,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { BYTEBITS(); /* go to byte boundary */ NEEDBITS(32); if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) { - strm->msg = (char *)"invalid stored block lengths"; + strm->msg = (z_const char *)"invalid stored block lengths"; state->mode = BAD; break; } @@ -905,7 +790,8 @@ int ZEXPORT inflate(z_streamp strm, int flush) { DROPBITS(4); #ifndef PKZIP_BUG_WORKAROUND if (state->nlen > 286 || state->ndist > 30) { - strm->msg = (char *)"too many length or distance symbols"; + strm->msg = (z_const char *) + "too many length or distance symbols"; state->mode = BAD; break; } @@ -923,12 +809,12 @@ int ZEXPORT inflate(z_streamp strm, int flush) { while (state->have < 19) state->lens[order[state->have++]] = 0; state->next = state->codes; - state->lencode = (const code FAR *)(state->next); + state->lencode = state->distcode = (const code FAR *)(state->next); state->lenbits = 7; ret = inflate_table(CODES, state->lens, 19, &(state->next), &(state->lenbits), state->work); if (ret) { - strm->msg = (char *)"invalid code lengths set"; + strm->msg = (z_const char *)"invalid code lengths set"; state->mode = BAD; break; } @@ -952,7 +838,8 @@ int ZEXPORT inflate(z_streamp strm, int flush) { NEEDBITS(here.bits + 2); DROPBITS(here.bits); if (state->have == 0) { - strm->msg = (char *)"invalid bit length repeat"; + strm->msg = (z_const char *) + "invalid bit length repeat"; state->mode = BAD; break; } @@ -975,7 +862,8 @@ int ZEXPORT inflate(z_streamp strm, int flush) { DROPBITS(7); } if (state->have + copy > state->nlen + state->ndist) { - strm->msg = (char *)"invalid bit length repeat"; + strm->msg = (z_const char *) + "invalid bit length repeat"; state->mode = BAD; break; } @@ -989,30 +877,31 @@ int ZEXPORT inflate(z_streamp strm, int flush) { /* check for end-of-block code (better have one) */ if (state->lens[256] == 0) { - strm->msg = (char *)"invalid code -- missing end-of-block"; + strm->msg = (z_const char *) + "invalid code -- missing end-of-block"; state->mode = BAD; break; } /* build code tables -- note: do not change the lenbits or distbits - values here (9 and 6) without reading the comments in inftrees.h + values here (10 and 9) without reading the comments in inftrees.h concerning the ENOUGH constants, which depend on those values */ state->next = state->codes; state->lencode = (const code FAR *)(state->next); - state->lenbits = 9; + state->lenbits = 10; ret = inflate_table(LENS, state->lens, state->nlen, &(state->next), &(state->lenbits), state->work); if (ret) { - strm->msg = (char *)"invalid literal/lengths set"; + strm->msg = (z_const char *)"invalid literal/lengths set"; state->mode = BAD; break; } state->distcode = (const code FAR *)(state->next); - state->distbits = 6; + state->distbits = 9; ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist, &(state->next), &(state->distbits), state->work); if (ret) { - strm->msg = (char *)"invalid distances set"; + strm->msg = (z_const char *)"invalid distances set"; state->mode = BAD; break; } @@ -1024,7 +913,8 @@ int ZEXPORT inflate(z_streamp strm, int flush) { state->mode = LEN; /* fallthrough */ case LEN: - if (have >= 6 && left >= 258) { + if (have >= INFLATE_FAST_MIN_INPUT && + left >= INFLATE_FAST_MIN_OUTPUT) { RESTORE(); inflate_fast(strm, out); LOAD(); @@ -1066,7 +956,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { break; } if (here.op & 64) { - strm->msg = (char *)"invalid literal/length code"; + strm->msg = (z_const char *)"invalid literal/length code"; state->mode = BAD; break; } @@ -1104,7 +994,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { DROPBITS(here.bits); state->back += here.bits; if (here.op & 64) { - strm->msg = (char *)"invalid distance code"; + strm->msg = (z_const char *)"invalid distance code"; state->mode = BAD; break; } @@ -1121,7 +1011,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { } #ifdef INFLATE_STRICT if (state->offset > state->dmax) { - strm->msg = (char *)"invalid distance too far back"; + strm->msg = (z_const char *)"invalid distance too far back"; state->mode = BAD; break; } @@ -1136,7 +1026,8 @@ int ZEXPORT inflate(z_streamp strm, int flush) { copy = state->offset - copy; if (copy > state->whave) { if (state->sane) { - strm->msg = (char *)"invalid distance too far back"; + strm->msg = (z_const char *) + "invalid distance too far back"; state->mode = BAD; break; } @@ -1195,7 +1086,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { state->flags ? hold : #endif ZSWAP32(hold)) != state->check) { - strm->msg = (char *)"incorrect data check"; + strm->msg = (z_const char *)"incorrect data check"; state->mode = BAD; break; } @@ -1209,7 +1100,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { if (state->wrap && state->flags) { NEEDBITS(32); if ((state->wrap & 4) && hold != (state->total & 0xffffffff)) { - strm->msg = (char *)"incorrect length check"; + strm->msg = (z_const char *)"incorrect length check"; state->mode = BAD; break; } @@ -1440,7 +1331,6 @@ int ZEXPORT inflateCopy(z_streamp dest, z_streamp source) { struct inflate_state FAR *state; struct inflate_state FAR *copy; unsigned char FAR *window; - unsigned wsize; /* check input */ if (inflateStateCheck(source) || dest == Z_NULL) @@ -1451,6 +1341,7 @@ int ZEXPORT inflateCopy(z_streamp dest, z_streamp source) { copy = (struct inflate_state FAR *) ZALLOC(source, 1, sizeof(struct inflate_state)); if (copy == Z_NULL) return Z_MEM_ERROR; + zmemzero(copy, sizeof(struct inflate_state)); window = Z_NULL; if (state->window != Z_NULL) { window = (unsigned char FAR *) @@ -1462,8 +1353,8 @@ int ZEXPORT inflateCopy(z_streamp dest, z_streamp source) { } /* copy state */ - zmemcpy((voidpf)dest, (voidpf)source, sizeof(z_stream)); - zmemcpy((voidpf)copy, (voidpf)state, sizeof(struct inflate_state)); + zmemcpy(dest, source, sizeof(z_stream)); + zmemcpy(copy, state, sizeof(struct inflate_state)); copy->strm = dest; if (state->lencode >= state->codes && state->lencode <= state->codes + ENOUGH - 1) { @@ -1471,10 +1362,8 @@ int ZEXPORT inflateCopy(z_streamp dest, z_streamp source) { copy->distcode = copy->codes + (state->distcode - state->codes); } copy->next = copy->codes + (state->next - state->codes); - if (window != Z_NULL) { - wsize = 1U << state->wbits; - zmemcpy(window, state->window, wsize); - } + if (window != Z_NULL) + zmemcpy(window, state->window, state->whave); copy->window = window; dest->state = (struct internal_state FAR *)copy; return Z_OK; diff --git a/packages/runtime/vendor/zlib/inflate.h b/packages/runtime/vendor/zlib/inflate.h index f127b6b1f..f758e0dcc 100644 --- a/packages/runtime/vendor/zlib/inflate.h +++ b/packages/runtime/vendor/zlib/inflate.h @@ -100,7 +100,7 @@ struct inflate_state { unsigned char FAR *window; /* allocated sliding window, if needed */ /* bit accumulator */ unsigned long hold; /* input bit accumulator */ - unsigned bits; /* number of bits in "in" */ + unsigned bits; /* number of bits in hold */ /* for string and stored block copying */ unsigned length; /* literal or length of data to copy */ unsigned offset; /* distance back to copy string from */ diff --git a/packages/runtime/vendor/zlib/inftrees.c b/packages/runtime/vendor/zlib/inftrees.c index 98cfe1644..99d8d7730 100644 --- a/packages/runtime/vendor/zlib/inftrees.c +++ b/packages/runtime/vendor/zlib/inftrees.c @@ -1,15 +1,29 @@ /* inftrees.c -- generate Huffman trees for efficient decoding - * Copyright (C) 1995-2024 Mark Adler + * Copyright (C) 1995-2026 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ +#ifdef MAKEFIXED +# ifndef BUILDFIXED +# define BUILDFIXED +# endif +#endif +#ifdef BUILDFIXED +# define Z_ONCE +#endif + #include "zutil.h" #include "inftrees.h" +#include "inflate.h" + +#ifndef NULL +# define NULL 0 +#endif #define MAXBITS 15 const char inflate_copyright[] = - " inflate 1.3.1 Copyright 1995-2024 Mark Adler "; + " inflate 1.3.2.1 Copyright 1995-2026 Mark Adler "; /* If you use the zlib library in a product, an acknowledgment is welcome in the documentation of your product. If for some reason you cannot @@ -47,9 +61,9 @@ int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens, unsigned mask; /* mask for low root bits */ code here; /* table entry for duplication */ code FAR *next; /* next available space in table */ - const unsigned short FAR *base; /* base value table to use */ - const unsigned short FAR *extra; /* extra bits table to use */ - unsigned match; /* use base and extra for symbol >= match */ + const unsigned short FAR *base = NULL; /* base value table to use */ + const unsigned short FAR *extra = NULL; /* extra bits table to use */ + unsigned match = 0; /* use base and extra for symbol >= match */ unsigned short count[MAXBITS+1]; /* number of codes of each length */ unsigned short offs[MAXBITS+1]; /* offsets in table for each length */ static const unsigned short lbase[31] = { /* Length codes 257..285 base */ @@ -57,7 +71,7 @@ int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0}; static const unsigned short lext[31] = { /* Length codes 257..285 extra */ 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, - 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 203, 77}; + 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 68, 193}; static const unsigned short dbase[32] = { /* Distance codes 0..29 base */ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, @@ -175,7 +189,6 @@ int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens, /* set up for code type */ switch (type) { case CODES: - base = extra = work; /* dummy value--not used */ match = 20; break; case LENS: @@ -183,10 +196,9 @@ int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens, extra = lext; match = 257; break; - default: /* DISTS */ + case DISTS: base = dbase; extra = dext; - match = 0; } /* initialize state for loop */ @@ -297,3 +309,116 @@ int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens, *bits = root; return 0; } + +#ifdef BUILDFIXED +/* + If this is compiled with BUILDFIXED defined, and if inflate will be used in + multiple threads, and if atomics are not available, then inflate() must be + called with a fixed block (e.g. 0x03 0x00) to initialize the tables and must + return before any other threads are allowed to call inflate. + */ + +static code *lenfix, *distfix; +static code fixed[544]; + +/* State for z_once(). */ +local z_once_t built = Z_ONCE_INIT; + +local void buildtables(void) { + unsigned sym, bits; + static code *next; + unsigned short lens[288], work[288]; + + /* literal/length table */ + sym = 0; + while (sym < 144) lens[sym++] = 8; + while (sym < 256) lens[sym++] = 9; + while (sym < 280) lens[sym++] = 7; + while (sym < 288) lens[sym++] = 8; + next = fixed; + lenfix = next; + bits = 9; + inflate_table(LENS, lens, 288, &(next), &(bits), work); + + /* distance table */ + sym = 0; + while (sym < 32) lens[sym++] = 5; + distfix = next; + bits = 5; + inflate_table(DISTS, lens, 32, &(next), &(bits), work); +} +#else /* !BUILDFIXED */ +# include "inffixed.h" +#endif /* BUILDFIXED */ + +/* + Return state with length and distance decoding tables and index sizes set to + fixed code decoding. Normally this returns fixed tables from inffixed.h. + If BUILDFIXED is defined, then instead this routine builds the tables the + first time it's called, and returns those tables the first time and + thereafter. This reduces the size of the code by about 2K bytes, in + exchange for a little execution time. However, BUILDFIXED should not be + used for threaded applications if atomics are not available, as it will + not be thread-safe. + */ +void inflate_fixed(struct inflate_state FAR *state) { +#ifdef BUILDFIXED + z_once(&built, buildtables); +#endif /* BUILDFIXED */ + state->lencode = lenfix; + state->lenbits = 9; + state->distcode = distfix; + state->distbits = 5; +} + +#ifdef MAKEFIXED +#include + +/* + Write out the inffixed.h that will be #include'd above. Defining MAKEFIXED + also defines BUILDFIXED, so the tables are built on the fly. main() writes + those tables to stdout, which would directed to inffixed.h. Compile this + along with zutil.c: + + cc -DMAKEFIXED -o fix inftrees.c zutil.c + ./fix > inffixed.h + */ +int main(void) { + unsigned low, size; + struct inflate_state state; + + inflate_fixed(&state); + puts("/* inffixed.h -- table for decoding fixed codes"); + puts(" * Generated automatically by makefixed()."); + puts(" */"); + puts(""); + puts("/* WARNING: this file should *not* be used by applications."); + puts(" It is part of the implementation of this library and is"); + puts(" subject to change. Applications should only use zlib.h."); + puts(" */"); + puts(""); + size = 1U << 9; + printf("static const code lenfix[%u] = {", size); + low = 0; + for (;;) { + if ((low % 7) == 0) printf("\n "); + printf("{%u,%u,%d}", (low & 127) == 99 ? 64 : state.lencode[low].op, + state.lencode[low].bits, state.lencode[low].val); + if (++low == size) break; + putchar(','); + } + puts("\n};"); + size = 1U << 5; + printf("\nstatic const code distfix[%u] = {", size); + low = 0; + for (;;) { + if ((low % 6) == 0) printf("\n "); + printf("{%u,%u,%d}", state.distcode[low].op, state.distcode[low].bits, + state.distcode[low].val); + if (++low == size) break; + putchar(','); + } + puts("\n};"); + return 0; +} +#endif /* MAKEFIXED */ diff --git a/packages/runtime/vendor/zlib/inftrees.h b/packages/runtime/vendor/zlib/inftrees.h index 396f74b5d..c572f49d5 100644 --- a/packages/runtime/vendor/zlib/inftrees.h +++ b/packages/runtime/vendor/zlib/inftrees.h @@ -1,5 +1,5 @@ /* inftrees.h -- header to use inftrees.c - * Copyright (C) 1995-2005, 2010 Mark Adler + * Copyright (C) 1995-2026 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -36,17 +36,17 @@ typedef struct { */ /* Maximum size of the dynamic table. The maximum number of code structures is - 1444, which is the sum of 852 for literal/length codes and 592 for distance + 1924, which is the sum of 1332 for literal/length codes and 592 for distance codes. These values were found by exhaustive searches using the program examples/enough.c found in the zlib distribution. The arguments to that program are the number of symbols, the initial root table size, and the - maximum bit length of a code. "enough 286 9 15" for literal/length codes - returns 852, and "enough 30 6 15" for distance codes returns 592. The - initial root table size (9 or 6) is found in the fifth argument of the + maximum bit length of a code. "enough 286 10 15" for literal/length codes + returns 1332, and "enough 30 9 15" for distance codes returns 592. + The initial root table size (10 or 9) is found in the fifth argument of the inflate_table() calls in inflate.c and infback.c. If the root table size is changed, then these maximum sizes would be need to be recalculated and updated. */ -#define ENOUGH_LENS 852 +#define ENOUGH_LENS 1332 #define ENOUGH_DISTS 592 #define ENOUGH (ENOUGH_LENS+ENOUGH_DISTS) @@ -60,3 +60,5 @@ typedef enum { int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens, unsigned codes, code FAR * FAR *table, unsigned FAR *bits, unsigned short FAR *work); +struct inflate_state; +void ZLIB_INTERNAL inflate_fixed(struct inflate_state FAR *state); diff --git a/packages/runtime/vendor/zlib/slide_hash_simd.h b/packages/runtime/vendor/zlib/slide_hash_simd.h new file mode 100644 index 000000000..1000b774c --- /dev/null +++ b/packages/runtime/vendor/zlib/slide_hash_simd.h @@ -0,0 +1,116 @@ +/* slide_hash_simd.h + * + * Copyright 2022 The Chromium Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the Chromium source repository LICENSE file. + */ + +#ifndef SLIDE_HASH_SIMD_H +#define SLIDE_HASH_SIMD_H + +#include "deflate.h" + +#ifndef INLINE +#if defined(_MSC_VER) && !defined(__clang__) +#define INLINE __inline +#else +#define INLINE inline +#endif +#endif + +#if defined(CPU_NO_SIMD) + +#error SIMD has been disabled for your build target + +#elif defined(DEFLATE_SLIDE_HASH_SSE2) + +#include /* SSE2 */ + +#define Z_SLIDE_INIT_SIMD(wsize) _mm_set1_epi16((ush)(wsize)) + +#define Z_SLIDE_HASH_SIMD(table, size, vector_wsize) \ + for (const Posf* const end = table + size; table != end;) { \ + __m128i vO = _mm_loadu_si128((__m128i *)(table + 0)); \ + vO = _mm_subs_epu16(vO, vector_wsize); \ + _mm_storeu_si128((__m128i *)(table + 0), vO); \ + table += 8; \ + } + +typedef __m128i z_vec128i_u16x8_t; + +#elif defined(DEFLATE_SLIDE_HASH_NEON) + +#include /* NEON */ + +#define Z_SLIDE_INIT_SIMD(wsize) vdupq_n_u16((ush)(wsize)) + +#define Z_SLIDE_HASH_SIMD(table, size, vector_wsize) \ + for (const Posf* const end = table + size; table != end;) { \ + uint16x8_t vO = vld1q_u16(table + 0); \ + uint16x8_t v8 = vld1q_u16(table + 8); \ + vO = vqsubq_u16(vO, vector_wsize); \ + v8 = vqsubq_u16(v8, vector_wsize); \ + vst1q_u16(table + 0, vO); \ + vst1q_u16(table + 8, v8); \ + table += 8 + 8; \ + } + +typedef uint16x8_t z_vec128i_u16x8_t; + +#else + +#error slide_hash_simd is not defined for your build target + +#endif + +/* =========================================================================== + * Slide the hash table when sliding the window down (could be avoided with 32 + * bit values at the expense of memory usage). We slide even when level == 0 to + * keep the hash table consistent if we switch back to level > 0 later. + */ +local INLINE void slide_hash_simd( + Posf *head, Posf *prev, const uInt w_size, const uInt hash_size) { + /* + * The SIMD implementation of the hash table slider assumes: + * + * 1. hash chain offset is 2 bytes. Should be true as Pos is "ush" type. + */ + Assert(sizeof(Pos) == 2, "Pos type size error: should be 2 bytes"); + Assert(sizeof(ush) == 2, "ush type size error: should be 2 bytes"); + + Assert(hash_size <= (1 << 16), "Hash table maximum size error"); + Assert(hash_size >= (1 << 8), "Hash table minimum size error"); + Assert(w_size == (ush)w_size, "Prev table size error"); + + /* + * 2. The hash & prev table sizes are a multiple of 32 bytes (256 bits), + * since the NEON table slider moves two 128-bit items per loop (loop is + * unrolled on NEON for performance, see http://crbug.com/863257). + */ + Assert(!((hash_size * sizeof(head[0])) & (32 - 1)), + "Hash table size error: should be a multiple of 32 bytes"); + Assert(!((w_size * sizeof(prev[0])) & (32 - 1)), + "Prev table size error: should be a multiple of 32 bytes"); + + /* + * Duplicate (ush)w_size in each uint16_t component of a 128-bit vector. + */ + const z_vec128i_u16x8_t vec_wsize = Z_SLIDE_INIT_SIMD(w_size); + + /* + * Slide {head,prev} hash chain values: subtracts (ush)w_size from every + * value with a saturating SIMD subtract, to clamp the result to 0(NIL), + * to implement slide_hash() `(m >= wsize ? m - wsize : NIL);` code. + */ + Z_SLIDE_HASH_SIMD(head, hash_size, vec_wsize); +#ifndef FASTEST + Z_SLIDE_HASH_SIMD(prev, w_size, vec_wsize); +#endif + +} + +#undef z_vec128i_u16x8_t +#undef Z_SLIDE_HASH_SIMD +#undef Z_SLIDE_INIT_SIMD + +#endif /* SLIDE_HASH_SIMD_H */ diff --git a/packages/runtime/vendor/zlib/trees.c b/packages/runtime/vendor/zlib/trees.c index 6a523ef34..1aa155102 100644 --- a/packages/runtime/vendor/zlib/trees.c +++ b/packages/runtime/vendor/zlib/trees.c @@ -1,5 +1,5 @@ /* trees.c -- output deflated data using Huffman coding - * Copyright (C) 1995-2024 Jean-loup Gailly + * Copyright (C) 1995-2026 Jean-loup Gailly * detect_data_type() function provided freely by Cosmin Truta, 2006 * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -112,7 +112,7 @@ local int base_dist[D_CODES]; #else # include "trees.h" -#endif /* GEN_TREES_H */ +#endif /* defined(GEN_TREES_H) || !defined(STDC) */ struct static_tree_desc_s { const ct_data *static_tree; /* static tree or NULL */ @@ -141,18 +141,25 @@ local TCONST static_tree_desc static_bl_desc = * Output a short LSB first on the stream. * IN assertion: there is enough room in pendingBuf. */ +#if defined(DEFLATE_CHUNK_WRITE_64LE) +#define put_short(s, w) { \ + uint16_t data = (uint16_t)(w); \ + zmemcpy(&s->pending_buf[s->pending], &data, sizeof(data)); \ + s->pending += 2; \ + } +#else #define put_short(s, w) { \ put_byte(s, (uch)((w) & 0xff)); \ put_byte(s, (uch)((ush)(w) >> 8)); \ } - +#endif /* DEFLATE_CHUNK_WRITE_64LE */ /* =========================================================================== * Reverse the first len bits of a code, using straightforward code (a faster * method would use a table) * IN assertion: 1 <= len <= 15 */ local unsigned bi_reverse(unsigned code, int len) { - register unsigned res = 0; + unsigned res = 0; do { res |= code & 1; code >>= 1, res <<= 1; @@ -164,6 +171,13 @@ local unsigned bi_reverse(unsigned code, int len) { * Flush the bit buffer, keeping at most 7 bits in it. */ local void bi_flush(deflate_state *s) { +#if defined(DEFLATE_CHUNK_WRITE_64LE) + while (s->bi_valid >= 16) { + put_short(s, s->bi_buf); + s->bi_buf >>= 16; + s->bi_valid -= 16; + } +#endif /* DEFLATE_CHUNK_WRITE_64LE */ if (s->bi_valid == 16) { put_short(s, s->bi_buf); s->bi_buf = 0; @@ -173,21 +187,31 @@ local void bi_flush(deflate_state *s) { s->bi_buf >>= 8; s->bi_valid -= 8; } + + Assert(s->bi_valid >= 0 && s->bi_valid <= 7, "bad bi_flush"); } /* =========================================================================== * Flush the bit buffer and align the output on a byte boundary */ local void bi_windup(deflate_state *s) { +#if defined(DEFLATE_CHUNK_WRITE_64LE) + while (s->bi_valid >= 16) { + put_short(s, s->bi_buf); + s->bi_buf >>= 16; + s->bi_valid -= 16; + } +#endif /* DEFLATE_CHUNK_WRITE_64LE */ if (s->bi_valid > 8) { put_short(s, s->bi_buf); } else if (s->bi_valid > 0) { put_byte(s, (Byte)s->bi_buf); } + s->bi_used = ((s->bi_valid - 1) & 7) + 1; s->bi_buf = 0; s->bi_valid = 0; #ifdef ZLIB_DEBUG - s->bits_sent = (s->bits_sent + 7) & ~7; + s->bits_sent = (s->bits_sent + 7) & ~(ulg)7; #endif } @@ -248,7 +272,28 @@ local void gen_trees_header(void); * Send a value on a given number of bits. * IN assertion: length <= 16 and value fits in length bits. */ +#if defined(DEFLATE_CHUNK_WRITE_64LE) +local void send_bits(deflate_state *s, uint64_t value, int length) +{ + Tracevv((stderr," l %2d v %4llx ", length, (unsigned long long)value)); + Assert(s->bi_valid >= 0 && s->bi_valid <= 63, "invalid bi_valid"); + Assert(length > 0 && length <= 15, "invalid length"); #ifdef ZLIB_DEBUG + s->bits_sent += (ulg)length; +#endif + + s->bi_buf |= (value << s->bi_valid); + s->bi_valid += length; + + if (s->bi_valid >= Buf_size) { + zmemcpy(&s->pending_buf[s->pending], &s->bi_buf, sizeof(s->bi_buf)); + s->pending += 8; + s->bi_valid -= Buf_size; + s->bi_buf = value >> (length - s->bi_valid); + } + Assert(s->bi_valid >= 0 && s->bi_valid <= 63, "invalid bi_valid"); +} +#elif defined(ZLIB_DEBUG) local void send_bits(deflate_state *s, int value, int length) { Tracevv((stderr," l %2d v %4x ", length, value)); Assert(length > 0 && length <= 15, "invalid length"); @@ -268,8 +313,7 @@ local void send_bits(deflate_state *s, int value, int length) { s->bi_valid += length; } } -#else /* !ZLIB_DEBUG */ - +#else /* !ZLIB_DEBUG && !DEFLATE_CHUNK_WRITE_64LE */ #define send_bits(s, value, length) \ { int len = length;\ if (s->bi_valid > (int)Buf_size - len) {\ @@ -283,7 +327,7 @@ local void send_bits(deflate_state *s, int value, int length) { s->bi_valid += len;\ }\ } -#endif /* ZLIB_DEBUG */ +#endif /* DEFLATE_CHUNK_WRITE_64LE */ /* the arguments must not have side effects */ @@ -466,6 +510,7 @@ void ZLIB_INTERNAL _tr_init(deflate_state *s) { s->bi_buf = 0; s->bi_valid = 0; + s->bi_used = 0; #ifdef ZLIB_DEBUG s->compressed_len = 0L; s->bits_sent = 0L; @@ -724,7 +769,7 @@ local void scan_tree(deflate_state *s, ct_data *tree, int max_code) { if (++count < max_count && curlen == nextlen) { continue; } else if (count < min_count) { - s->bl_tree[curlen].Freq += count; + s->bl_tree[curlen].Freq += (ush)count; } else if (curlen != 0) { if (curlen != prevlen) s->bl_tree[curlen].Freq++; s->bl_tree[REP_3_6].Freq++; @@ -817,7 +862,7 @@ local int build_bl_tree(deflate_state *s) { } /* Update opt_len to include the bit length tree and counts */ s->opt_len += 3*((ulg)max_blindex + 1) + 5 + 5 + 4; - Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld", + Tracev((stderr, "\ndyn trees: dyn %lu, stat %lu", s->opt_len, s->static_len)); return max_blindex; @@ -843,13 +888,13 @@ local void send_all_trees(deflate_state *s, int lcodes, int dcodes, Tracev((stderr, "\nbl code %2d ", bl_order[rank])); send_bits(s, s->bl_tree[bl_order[rank]].Len, 3); } - Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent)); + Tracev((stderr, "\nbl tree: sent %lu", s->bits_sent)); send_tree(s, (ct_data *)s->dyn_ltree, lcodes - 1); /* literal tree */ - Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent)); + Tracev((stderr, "\nlit tree: sent %lu", s->bits_sent)); send_tree(s, (ct_data *)s->dyn_dtree, dcodes - 1); /* distance tree */ - Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent)); + Tracev((stderr, "\ndist tree: sent %lu", s->bits_sent)); } /* =========================================================================== @@ -932,13 +977,14 @@ local void compress_block(deflate_state *s, const ct_data *ltree, extra = extra_dbits[code]; if (extra != 0) { dist -= (unsigned)base_dist[code]; - send_bits(s, dist, extra); /* send the extra distance bits */ + send_bits(s, (int)dist, extra); /* send the extra bits */ } } /* literal or match pair ? */ /* Check for no overlay of pending_buf on needed symbols */ #ifdef LIT_MEM - Assert(s->pending < 2 * (s->lit_bufsize + sx), "pendingBuf overflow"); + Assert(s->pending < (s->lit_bufsize << 1) + (sx << 1), + "pendingBuf overflow"); #else Assert(s->pending < s->lit_bufsize + sx, "pendingBuf overflow"); #endif @@ -1006,11 +1052,11 @@ void ZLIB_INTERNAL _tr_flush_block(deflate_state *s, charf *buf, /* Construct the literal and distance trees */ build_tree(s, (tree_desc *)(&(s->l_desc))); - Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len, + Tracev((stderr, "\nlit data: dyn %lu, stat %lu", s->opt_len, s->static_len)); build_tree(s, (tree_desc *)(&(s->d_desc))); - Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len, + Tracev((stderr, "\ndist data: dyn %lu, stat %lu", s->opt_len, s->static_len)); /* At this point, opt_len and static_len are the total bit lengths of * the compressed block data, excluding the tree representations. @@ -1083,7 +1129,7 @@ void ZLIB_INTERNAL _tr_flush_block(deflate_state *s, charf *buf, #endif } Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len >> 3, - s->compressed_len - 7*last)); + s->compressed_len - 7*(ulg)last)); } /* =========================================================================== diff --git a/packages/runtime/vendor/zlib/uncompr.c b/packages/runtime/vendor/zlib/uncompr.c index 5e256663b..2195e7855 100644 --- a/packages/runtime/vendor/zlib/uncompr.c +++ b/packages/runtime/vendor/zlib/uncompr.c @@ -1,5 +1,5 @@ /* uncompr.c -- decompress a memory buffer - * Copyright (C) 1995-2003, 2010, 2014, 2016 Jean-loup Gailly, Mark Adler + * Copyright (C) 1995-2026 Jean-loup Gailly, Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -23,24 +23,24 @@ memory, Z_BUF_ERROR if there was not enough room in the output buffer, or Z_DATA_ERROR if the input data was corrupted, including if the input data is an incomplete zlib stream. + + The _z versions of the functions take size_t length arguments. */ -int ZEXPORT uncompress2(Bytef *dest, uLongf *destLen, const Bytef *source, - uLong *sourceLen) { +int ZEXPORT uncompress2_z(Bytef *dest, z_size_t *destLen, const Bytef *source, + z_size_t *sourceLen) { z_stream stream; int err; const uInt max = (uInt)-1; - uLong len, left; - Byte buf[1]; /* for detection of incomplete stream when *destLen == 0 */ + z_size_t len, left; + + if (sourceLen == NULL || (*sourceLen > 0 && source == NULL) || + destLen == NULL || (*destLen > 0 && dest == NULL)) + return Z_STREAM_ERROR; len = *sourceLen; - if (*destLen) { - left = *destLen; - *destLen = 0; - } - else { - left = 1; - dest = buf; - } + left = *destLen; + if (left == 0 && dest == Z_NULL) + dest = (Bytef *)&stream.reserved; /* next_out cannot be NULL */ stream.next_in = (z_const Bytef *)source; stream.avail_in = 0; @@ -56,30 +56,46 @@ int ZEXPORT uncompress2(Bytef *dest, uLongf *destLen, const Bytef *source, do { if (stream.avail_out == 0) { - stream.avail_out = left > (uLong)max ? max : (uInt)left; + stream.avail_out = left > (z_size_t)max ? max : (uInt)left; left -= stream.avail_out; } if (stream.avail_in == 0) { - stream.avail_in = len > (uLong)max ? max : (uInt)len; + stream.avail_in = len > (z_size_t)max ? max : (uInt)len; len -= stream.avail_in; } err = inflate(&stream, Z_NO_FLUSH); } while (err == Z_OK); - *sourceLen -= len + stream.avail_in; - if (dest != buf) - *destLen = stream.total_out; - else if (stream.total_out && err == Z_BUF_ERROR) - left = 1; + /* Set len and left to the unused input data and unused output space. Set + *sourceLen to the amount of input consumed. Set *destLen to the amount + of data produced. */ + len += stream.avail_in; + left += stream.avail_out; + *sourceLen -= len; + *destLen -= left; inflateEnd(&stream); return err == Z_STREAM_END ? Z_OK : err == Z_NEED_DICT ? Z_DATA_ERROR : - err == Z_BUF_ERROR && left + stream.avail_out ? Z_DATA_ERROR : + err == Z_BUF_ERROR && len == 0 ? Z_DATA_ERROR : err; } - +int ZEXPORT uncompress2(Bytef *dest, uLongf *destLen, const Bytef *source, + uLong *sourceLen) { + int ret; + z_size_t got = *destLen, used = *sourceLen; + ret = uncompress2_z(dest, &got, source, &used); + *sourceLen = (uLong)used; + *destLen = (uLong)got; + return ret; +} +int ZEXPORT uncompress_z(Bytef *dest, z_size_t *destLen, const Bytef *source, + z_size_t sourceLen) { + z_size_t used = sourceLen; + return uncompress2_z(dest, destLen, source, &used); +} int ZEXPORT uncompress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen) { - return uncompress2(dest, destLen, source, &sourceLen); + uLong used = sourceLen; + return uncompress2(dest, destLen, source, &used); } diff --git a/packages/runtime/vendor/zlib/zconf.h b/packages/runtime/vendor/zlib/zconf.h index 62adc8d84..4d64a6530 100644 --- a/packages/runtime/vendor/zlib/zconf.h +++ b/packages/runtime/vendor/zlib/zconf.h @@ -1,5 +1,5 @@ /* zconf.h -- configuration of the zlib compression library - * Copyright (C) 1995-2024 Jean-loup Gailly, Mark Adler + * Copyright (C) 1995-2026 Jean-loup Gailly, Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -8,6 +8,18 @@ #ifndef ZCONF_H #define ZCONF_H +/* + * This library is also built as a part of AOSP, which does not need to include + * chromeconf.h. This config does not want chromeconf.h, so it can set this + * macro to opt out. While this works today, there's no guarantee that building + * zlib outside of Chromium keeps working in the future. + */ +#if !defined(CHROMIUM_ZLIB_NO_CHROMECONF) +/* This include does prefixing as below, but with an updated set of names. Also + * sets up export macros in component builds. */ +//#include "chromeconf.h" +#endif + /* * If you *really* need a unique prefix for all types and library functions, * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. @@ -33,7 +45,10 @@ # ifndef Z_SOLO # define compress z_compress # define compress2 z_compress2 +# define compress_z z_compress_z +# define compress2_z z_compress2_z # define compressBound z_compressBound +# define compressBound_z z_compressBound_z # endif # define crc32 z_crc32 # define crc32_combine z_crc32_combine @@ -44,6 +59,7 @@ # define crc32_z z_crc32_z # define deflate z_deflate # define deflateBound z_deflateBound +# define deflateBound_z z_deflateBound_z # define deflateCopy z_deflateCopy # define deflateEnd z_deflateEnd # define deflateGetDictionary z_deflateGetDictionary @@ -59,6 +75,7 @@ # define deflateSetDictionary z_deflateSetDictionary # define deflateSetHeader z_deflateSetHeader # define deflateTune z_deflateTune +# define deflateUsed z_deflateUsed # define deflate_copyright z_deflate_copyright # define get_crc_table z_get_crc_table # ifndef Z_SOLO @@ -128,9 +145,12 @@ # define inflate_copyright z_inflate_copyright # define inflate_fast z_inflate_fast # define inflate_table z_inflate_table +# define inflate_fixed z_inflate_fixed # ifndef Z_SOLO # define uncompress z_uncompress # define uncompress2 z_uncompress2 +# define uncompress_z z_uncompress_z +# define uncompress2_z z_uncompress2_z # endif # define zError z_zError # ifndef Z_SOLO @@ -234,10 +254,12 @@ # endif #endif -#if defined(ZLIB_CONST) && !defined(z_const) -# define z_const const -#else -# define z_const +#ifndef z_const +# ifdef ZLIB_CONST +# define z_const const +# else +# define z_const +# endif #endif #ifdef Z_SOLO @@ -388,6 +410,9 @@ #ifndef FAR # define FAR #endif +#ifndef far +# define far +#endif #if !defined(__MACTYPES__) typedef unsigned char Byte; /* 8 bits */ @@ -433,11 +458,11 @@ typedef uLong FAR uLongf; typedef unsigned long z_crc_t; #endif -#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ +#if !defined(_WIN32) # define Z_HAVE_UNISTD_H #endif -#ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */ +#if defined(HAVE_STDARG_H) && HAVE_STDARG_H-0 # define Z_HAVE_STDARG_H #endif @@ -470,12 +495,8 @@ typedef uLong FAR uLongf; #endif #ifndef Z_HAVE_UNISTD_H -# ifdef __WATCOMC__ -# define Z_HAVE_UNISTD_H -# endif -#endif -#ifndef Z_HAVE_UNISTD_H -# if defined(_LARGEFILE64_SOURCE) && !defined(_WIN32) +# if defined(__WATCOMC__) || defined(__GO32__) || \ + (defined(_LARGEFILE64_SOURCE) && !defined(_WIN32)) # define Z_HAVE_UNISTD_H # endif #endif @@ -510,17 +531,19 @@ typedef uLong FAR uLongf; #endif #ifndef z_off_t -# define z_off_t long +# define z_off_t long long #endif #if !defined(_WIN32) && defined(Z_LARGE64) # define z_off64_t off64_t +#elif defined(__MINGW32__) +# define z_off64_t long long +#elif defined(_WIN32) && !defined(__GNUC__) +# define z_off64_t __int64 +#elif defined(__GO32__) +# define z_off64_t offset_t #else -# if defined(_WIN32) && !defined(__GNUC__) -# define z_off64_t __int64 -# else -# define z_off64_t z_off_t -# endif +# define z_off64_t z_off_t #endif /* MVS linker does not support external names larger than 8 bytes */ diff --git a/packages/runtime/vendor/zlib/zlib.h b/packages/runtime/vendor/zlib/zlib.h index 8d4b932ea..13909f2f8 100644 --- a/packages/runtime/vendor/zlib/zlib.h +++ b/packages/runtime/vendor/zlib/zlib.h @@ -1,7 +1,7 @@ /* zlib.h -- interface of the 'zlib' general purpose compression library - version 1.3.1, January 22nd, 2024 + version 1.3.2.1, February xxth, 2026 - Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler + Copyright (C) 1995-2026 Jean-loup Gailly and Mark Adler This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -24,25 +24,29 @@ The data format used by the zlib library is described by RFCs (Request for - Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950 + Comments) 1950 to 1952 at https://datatracker.ietf.org/doc/html/rfc1950 (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format). */ #ifndef ZLIB_H #define ZLIB_H -#include "zconf.h" +#ifdef ZLIB_BUILD +# include +#else +# include "zconf.h" +#endif #ifdef __cplusplus extern "C" { #endif -#define ZLIB_VERSION "1.3.1" -#define ZLIB_VERNUM 0x1310 +#define ZLIB_VERSION "1.3.2.1-motley" +#define ZLIB_VERNUM 0x1321 #define ZLIB_VER_MAJOR 1 #define ZLIB_VER_MINOR 3 -#define ZLIB_VER_REVISION 1 -#define ZLIB_VER_SUBREVISION 0 +#define ZLIB_VER_REVISION 2 +#define ZLIB_VER_SUBREVISION 1 /* The 'zlib' compression library provides in-memory compression and @@ -359,7 +363,6 @@ ZEXTERN int ZEXPORT deflate(z_streamp strm, int flush); continue compressing. */ - ZEXTERN int ZEXPORT deflateEnd(z_streamp strm); /* All dynamically allocated data structures for this stream are freed. @@ -441,7 +444,7 @@ ZEXTERN int ZEXPORT inflate(z_streamp strm, int flush); The Z_BLOCK option assists in appending to or combining deflate streams. To assist in this, on return inflate() always sets strm->data_type to the - number of unused bits in the last byte taken from strm->next_in, plus 64 if + number of unused bits in the input taken from strm->next_in, plus 64 if inflate() is currently decoding the last block in the deflate stream, plus 128 if inflate() returned immediately after decoding an end-of-block code or decoding the complete header up to just before the first byte of the deflate @@ -587,18 +590,21 @@ ZEXTERN int ZEXPORT deflateInit2(z_streamp strm, The strategy parameter is used to tune the compression algorithm. Use the value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a - filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no - string match), or Z_RLE to limit match distances to one (run-length - encoding). Filtered data consists mostly of small values with a somewhat - random distribution. In this case, the compression algorithm is tuned to - compress them better. The effect of Z_FILTERED is to force more Huffman - coding and less string matching; it is somewhat intermediate between - Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as - fast as Z_HUFFMAN_ONLY, but give better compression for PNG image data. The - strategy parameter only affects the compression ratio but not the - correctness of the compressed output even if it is not set appropriately. - Z_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler - decoder for special applications. + filter (or predictor), Z_RLE to limit match distances to one (run-length + encoding), or Z_HUFFMAN_ONLY to force Huffman encoding only (no string + matching). Filtered data consists mostly of small values with a somewhat + random distribution, as produced by the PNG filters. In this case, the + compression algorithm is tuned to compress them better. The effect of + Z_FILTERED is to force more Huffman coding and less string matching than the + default; it is intermediate between Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY. + Z_RLE is almost as fast as Z_HUFFMAN_ONLY, but should give better + compression for PNG image data than Huffman only. The degree of string + matching from most to none is: Z_DEFAULT_STRATEGY, Z_FILTERED, Z_RLE, then + Z_HUFFMAN_ONLY. The strategy parameter affects the compression ratio but + never the correctness of the compressed output, even if it is not set + optimally for the given data. Z_FIXED uses the default string matching, but + prevents the use of dynamic Huffman codes, allowing for a simpler decoder + for special applications. deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_STREAM_ERROR if any parameter is invalid (such as an invalid @@ -758,8 +764,8 @@ ZEXTERN int ZEXPORT deflateTune(z_streamp strm, returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream. */ -ZEXTERN uLong ZEXPORT deflateBound(z_streamp strm, - uLong sourceLen); +ZEXTERN uLong ZEXPORT deflateBound(z_streamp strm, uLong sourceLen); +ZEXTERN z_size_t ZEXPORT deflateBound_z(z_streamp strm, z_size_t sourceLen); /* deflateBound() returns an upper bound on the compressed size after deflation of sourceLen bytes. It must be called after deflateInit() or @@ -771,6 +777,9 @@ ZEXTERN uLong ZEXPORT deflateBound(z_streamp strm, to return Z_STREAM_END. Note that it is possible for the compressed size to be larger than the value returned by deflateBound() if flush options other than Z_FINISH or Z_NO_FLUSH are used. + + delfateBound_z() is the same, but takes and returns a size_t length. Note + that a long is 32 bits on Windows. */ ZEXTERN int ZEXPORT deflatePending(z_streamp strm, @@ -785,6 +794,21 @@ ZEXTERN int ZEXPORT deflatePending(z_streamp strm, or bits are Z_NULL, then those values are not set. deflatePending returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. If an int is 16 bits and memLevel is 9, then + it is possible for the number of pending bytes to not fit in an unsigned. In + that case Z_BUF_ERROR is returned and *pending is set to the maximum value + of an unsigned. + */ + +ZEXTERN int ZEXPORT deflateUsed(z_streamp strm, + int *bits); +/* + deflateUsed() returns in *bits the most recent number of deflate bits used + in the last byte when flushing to a byte boundary. The result is in 1..8, or + 0 if there has not yet been a flush. This helps determine the location of + the last bit of a deflate stream. + + deflateUsed returns Z_OK if success, or Z_STREAM_ERROR if the source stream state was inconsistent. */ @@ -987,13 +1011,15 @@ ZEXTERN int ZEXPORT inflatePrime(z_streamp strm, int bits, int value); /* - This function inserts bits in the inflate input stream. The intent is - that this function is used to start inflating at a bit position in the - middle of a byte. The provided bits will be used before any bytes are used - from next_in. This function should only be used with raw inflate, and - should be used before the first inflate() call after inflateInit2() or - inflateReset(). bits must be less than or equal to 16, and that many of the - least significant bits of value will be inserted in the input. + This function inserts bits in the inflate input stream. The intent is to + use inflatePrime() to start inflating at a bit position in the middle of a + byte. The provided bits will be used before any bytes are used from + next_in. This function should be used with raw inflate, before the first + inflate() call, after inflateInit2() or inflateReset(). It can also be used + after an inflate() return indicates the end of a deflate block or header + when using Z_BLOCK. bits must be less than or equal to 16, and that many of + the least significant bits of value will be inserted in the input. The + other bits in value can be non-zero, and will be ignored. If bits is negative, then the input stream bit buffer is emptied. Then inflatePrime() can be called again to put bits in the buffer. This is used @@ -1001,7 +1027,15 @@ ZEXTERN int ZEXPORT inflatePrime(z_streamp strm, to feeding inflate codes. inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. + stream state was inconsistent, or if bits is out of range. If inflate was + in the middle of processing a header, trailer, or stored block lengths, then + it is possible for there to be only eight bits available in the bit buffer. + In that case, bits > 8 is considered out of range. However, when used as + outlined above, there will always be 16 bits available in the buffer for + insertion. As noted in its documentation above, inflate records the number + of bits in the bit buffer on return in data_type. 32 minus that is the + number of bits available for insertion. inflatePrime does not update + data_type with the new number of bits in buffer. */ ZEXTERN long ZEXPORT inflateMark(z_streamp strm); @@ -1047,20 +1081,22 @@ ZEXTERN int ZEXPORT inflateGetHeader(z_streamp strm, The text, time, xflags, and os fields are filled in with the gzip header contents. hcrc is set to true if there is a header CRC. (The header CRC - was valid if done is set to one.) If extra is not Z_NULL, then extra_max - contains the maximum number of bytes to write to extra. Once done is true, - extra_len contains the actual extra field length, and extra contains the - extra field, or that field truncated if extra_max is less than extra_len. - If name is not Z_NULL, then up to name_max characters are written there, - terminated with a zero unless the length is greater than name_max. If - comment is not Z_NULL, then up to comm_max characters are written there, - terminated with a zero unless the length is greater than comm_max. When any - of extra, name, or comment are not Z_NULL and the respective field is not - present in the header, then that field is set to Z_NULL to signal its - absence. This allows the use of deflateSetHeader() with the returned - structure to duplicate the header. However if those fields are set to - allocated memory, then the application will need to save those pointers - elsewhere so that they can be eventually freed. + was valid if done is set to one.) The extra, name, and comment pointers + much each be either Z_NULL or point to space to store that information from + the header. If extra is not Z_NULL, then extra_max contains the maximum + number of bytes that can be written to extra. Once done is true, extra_len + contains the actual extra field length, and extra contains the extra field, + or that field truncated if extra_max is less than extra_len. If name is not + Z_NULL, then up to name_max characters, including the terminating zero, are + written there. If comment is not Z_NULL, then up to comm_max characters, + including the terminating zero, are written there. The application can tell + that the name or comment did not fit in the provided space by the absence of + a terminating zero. If any of extra, name, or comment are not present in + the header, then that field's pointer is set to Z_NULL. This allows the use + of deflateSetHeader() with the returned structure to duplicate the header. + Note that if those fields initially pointed to allocated memory, then the + application will need to save them elsewhere so that they can be eventually + freed. If inflateGetHeader is not used, then the header information is simply discarded. The header is always checked for validity, including the header @@ -1208,13 +1244,14 @@ ZEXTERN uLong ZEXPORT zlibCompileFlags(void); 21: FASTEST -- deflate algorithm with only one, lowest compression level 22,23: 0 (reserved) - The sprintf variant used by gzprintf (zero is best): + The sprintf variant used by gzprintf (all zeros is best): 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format - 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure! + 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() is not secure! 26: 0 = returns value, 1 = void -- 1 means inferred string length returned + 27: 0 = gzprintf() present, 1 = not -- 1 means gzprintf() returns an error Remainder: - 27-31: 0 (reserved) + 28-31: 0 (reserved) */ #ifndef Z_SOLO @@ -1226,11 +1263,14 @@ ZEXTERN uLong ZEXPORT zlibCompileFlags(void); stream-oriented functions. To simplify the interface, some default options are assumed (compression level and memory usage, standard memory allocation functions). The source code of these utility functions can be modified if - you need special options. + you need special options. The _z versions of the functions use the size_t + type for lengths. Note that a long is 32 bits on Windows. */ -ZEXTERN int ZEXPORT compress(Bytef *dest, uLongf *destLen, +ZEXTERN int ZEXPORT compress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen); +ZEXTERN int ZEXPORT compress_z(Bytef *dest, z_size_t *destLen, + const Bytef *source, z_size_t sourceLen); /* Compresses the source buffer into the destination buffer. sourceLen is the byte length of the source buffer. Upon entry, destLen is the total size @@ -1244,9 +1284,12 @@ ZEXTERN int ZEXPORT compress(Bytef *dest, uLongf *destLen, buffer. */ -ZEXTERN int ZEXPORT compress2(Bytef *dest, uLongf *destLen, +ZEXTERN int ZEXPORT compress2(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen, int level); +ZEXTERN int ZEXPORT compress2_z(Bytef *dest, z_size_t *destLen, + const Bytef *source, z_size_t sourceLen, + int level); /* Compresses the source buffer into the destination buffer. The level parameter has the same meaning as in deflateInit. sourceLen is the byte @@ -1261,21 +1304,24 @@ ZEXTERN int ZEXPORT compress2(Bytef *dest, uLongf *destLen, */ ZEXTERN uLong ZEXPORT compressBound(uLong sourceLen); +ZEXTERN z_size_t ZEXPORT compressBound_z(z_size_t sourceLen); /* compressBound() returns an upper bound on the compressed size after compress() or compress2() on sourceLen bytes. It would be used before a compress() or compress2() call to allocate the destination buffer. */ -ZEXTERN int ZEXPORT uncompress(Bytef *dest, uLongf *destLen, +ZEXTERN int ZEXPORT uncompress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen); +ZEXTERN int ZEXPORT uncompress_z(Bytef *dest, z_size_t *destLen, + const Bytef *source, z_size_t sourceLen); /* Decompresses the source buffer into the destination buffer. sourceLen is - the byte length of the source buffer. Upon entry, destLen is the total size + the byte length of the source buffer. On entry, *destLen is the total size of the destination buffer, which must be large enough to hold the entire uncompressed data. (The size of the uncompressed data must have been saved previously by the compressor and transmitted to the decompressor by some - mechanism outside the scope of this compression library.) Upon exit, destLen + mechanism outside the scope of this compression library.) On exit, *destLen is the actual size of the uncompressed data. uncompress returns Z_OK if success, Z_MEM_ERROR if there was not @@ -1285,8 +1331,10 @@ ZEXTERN int ZEXPORT uncompress(Bytef *dest, uLongf *destLen, buffer with the uncompressed data up to that point. */ -ZEXTERN int ZEXPORT uncompress2(Bytef *dest, uLongf *destLen, +ZEXTERN int ZEXPORT uncompress2(Bytef *dest, uLongf *destLen, const Bytef *source, uLong *sourceLen); +ZEXTERN int ZEXPORT uncompress2_z(Bytef *dest, z_size_t *destLen, + const Bytef *source, z_size_t *sourceLen); /* Same as uncompress, except that sourceLen is a pointer, where the length of the source is *sourceLen. On return, *sourceLen is the number of @@ -1314,13 +1362,17 @@ ZEXTERN gzFile ZEXPORT gzopen(const char *path, const char *mode); 'R' for run-length encoding as in "wb1R", or 'F' for fixed code compression as in "wb9F". (See the description of deflateInit2 for more information about the strategy parameter.) 'T' will request transparent writing or - appending with no compression and not using the gzip format. + appending with no compression and not using the gzip format. 'T' cannot be + used to force transparent reading. Transparent reading is automatically + performed if there is no gzip header at the start. Transparent reading can + be disabled with the 'G' option, which will instead return an error if there + is no gzip header. 'N' will open the file in non-blocking mode. - "a" can be used instead of "w" to request that the gzip stream that will - be written be appended to the file. "+" will result in an error, since + 'a' can be used instead of 'w' to request that the gzip stream that will + be written be appended to the file. '+' will result in an error, since reading and writing to the same gzip file is not supported. The addition of - "x" when writing will create the file exclusively, which fails if the file - already exists. On systems that support it, the addition of "e" when + 'x' when writing will create the file exclusively, which fails if the file + already exists. On systems that support it, the addition of 'e' when reading or writing will set the flag to close the file on an execve() call. These functions, as well as gzip, will read and decode a sequence of gzip @@ -1339,14 +1391,22 @@ ZEXTERN gzFile ZEXPORT gzopen(const char *path, const char *mode); insufficient memory to allocate the gzFile state, or if an invalid mode was specified (an 'r', 'w', or 'a' was not provided, or '+' was provided). errno can be checked to determine if the reason gzopen failed was that the - file could not be opened. + file could not be opened. Note that if 'N' is in mode for non-blocking, the + open() itself can fail in order to not block. In that case gzopen() will + return NULL and errno will be EAGAIN or ENONBLOCK. The call to gzopen() can + then be re-tried. If the application would like to block on opening the + file, then it can use open() without O_NONBLOCK, and then gzdopen() with the + resulting file descriptor and 'N' in the mode, which will set it to non- + blocking. */ ZEXTERN gzFile ZEXPORT gzdopen(int fd, const char *mode); /* Associate a gzFile with the file descriptor fd. File descriptors are obtained from calls like open, dup, creat, pipe or fileno (if the file has - been previously opened with fopen). The mode parameter is as in gzopen. + been previously opened with fopen). The mode parameter is as in gzopen. An + 'e' in mode will set fd's flag to close the file on an execve() call. An 'N' + in mode will set fd's non-blocking flag. The next call of gzclose on the returned gzFile will also close the file descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor @@ -1416,10 +1476,16 @@ ZEXTERN int ZEXPORT gzread(gzFile file, voidp buf, unsigned len); stream. Alternatively, gzerror can be used before gzclose to detect this case. + gzread can be used to read a gzip file on a non-blocking device. If the + input stalls and there is no uncompressed data to return, then gzread() will + return -1, and errno will be EAGAIN or EWOULDBLOCK. gzread() can then be + called again. + gzread returns the number of uncompressed bytes actually read, less than len for end of file, or -1 for error. If len is too large to fit in an int, then nothing is read, -1 is returned, and the error state is set to - Z_STREAM_ERROR. + Z_STREAM_ERROR. If some data was read before an error, then that data is + returned until exhausted, after which the next call will signal the error. */ ZEXTERN z_size_t ZEXPORT gzfread(voidp buf, z_size_t size, z_size_t nitems, @@ -1443,15 +1509,20 @@ ZEXTERN z_size_t ZEXPORT gzfread(voidp buf, z_size_t size, z_size_t nitems, multiple of size, then the final partial item is nevertheless read into buf and the end-of-file flag is set. The length of the partial item read is not provided, but could be inferred from the result of gztell(). This behavior - is the same as the behavior of fread() implementations in common libraries, - but it prevents the direct use of gzfread() to read a concurrently written - file, resetting and retrying on end-of-file, when size is not 1. + is the same as that of fread() implementations in common libraries. This + could result in data loss if used with size != 1 when reading a concurrently + written file or a non-blocking file. In that case, use size == 1 or gzread() + instead. */ ZEXTERN int ZEXPORT gzwrite(gzFile file, voidpc buf, unsigned len); /* Compress and write the len uncompressed bytes at buf to file. gzwrite - returns the number of uncompressed bytes written or 0 in case of error. + returns the number of uncompressed bytes written, or 0 in case of error or + if len is 0. If the write destination is non-blocking, then gzwrite() may + return a number of bytes written that is not 0 and less than len. + + If len does not fit in an int, then 0 is returned and nothing is written. */ ZEXTERN z_size_t ZEXPORT gzfwrite(voidpc buf, z_size_t size, @@ -1466,9 +1537,18 @@ ZEXTERN z_size_t ZEXPORT gzfwrite(voidpc buf, z_size_t size, if there was an error. If the multiplication of size and nitems overflows, i.e. the product does not fit in a z_size_t, then nothing is written, zero is returned, and the error state is set to Z_STREAM_ERROR. + + If writing a concurrently read file or a non-blocking file with size != 1, + a partial item could be written, with no way of knowing how much of it was + not written, resulting in data loss. In that case, use size == 1 or + gzwrite() instead. */ +#if defined(STDC) || defined(Z_HAVE_STDARG_H) ZEXTERN int ZEXPORTVA gzprintf(gzFile file, const char *format, ...); +#else +ZEXTERN int ZEXPORTVA gzprintf(); +#endif /* Convert, format, compress, and write the arguments (...) to file under control of the string format, as in fprintf. gzprintf returns the number of @@ -1476,11 +1556,19 @@ ZEXTERN int ZEXPORTVA gzprintf(gzFile file, const char *format, ...); of error. The number of uncompressed bytes written is limited to 8191, or one less than the buffer size given to gzbuffer(). The caller should assure that this limit is not exceeded. If it is exceeded, then gzprintf() will - return an error (0) with nothing written. In this case, there may also be a - buffer overflow with unpredictable consequences, which is possible only if - zlib was compiled with the insecure functions sprintf() or vsprintf(), - because the secure snprintf() or vsnprintf() functions were not available. - This can be determined using zlibCompileFlags(). + return an error (0) with nothing written. + + In that last case, there may also be a buffer overflow with unpredictable + consequences, which is possible only if zlib was compiled with the insecure + functions sprintf() or vsprintf(), because the secure snprintf() and + vsnprintf() functions were not available. That would only be the case for + a non-ANSI C compiler. zlib may have been built without gzprintf() because + secure functions were not available and having gzprintf() be insecure was + not an option, in which case, gzprintf() returns Z_STREAM_ERROR. All of + these possibilities can be determined using zlibCompileFlags(). + + If a Z_BUF_ERROR is returned, then nothing was written due to a stall on + the non-blocking write destination. */ ZEXTERN int ZEXPORT gzputs(gzFile file, const char *s); @@ -1489,6 +1577,11 @@ ZEXTERN int ZEXPORT gzputs(gzFile file, const char *s); the terminating null character. gzputs returns the number of characters written, or -1 in case of error. + The number of characters written may be less than the length of the string + if the write destination is non-blocking. + + If the length of the string does not fit in an int, then -1 is returned + and nothing is written. */ ZEXTERN char * ZEXPORT gzgets(gzFile file, char *buf, int len); @@ -1501,8 +1594,13 @@ ZEXTERN char * ZEXPORT gzgets(gzFile file, char *buf, int len); left untouched. gzgets returns buf which is a null-terminated string, or it returns NULL - for end-of-file or in case of error. If there was an error, the contents at - buf are indeterminate. + for end-of-file or in case of error. If some data was read before an error, + then that data is returned until exhausted, after which the next call will + return NULL to signal the error. + + gzgets can be used on a file being concurrently written, and on a non- + blocking device, both as for gzread(). However lines may be broken in the + middle, leaving it up to the application to reassemble them as needed. */ ZEXTERN int ZEXPORT gzputc(gzFile file, int c); @@ -1513,11 +1611,19 @@ ZEXTERN int ZEXPORT gzputc(gzFile file, int c); ZEXTERN int ZEXPORT gzgetc(gzFile file); /* - Read and decompress one byte from file. gzgetc returns this byte or -1 - in case of end of file or error. This is implemented as a macro for speed. - As such, it does not do all of the checking the other functions do. I.e. - it does not check to see if file is NULL, nor whether the structure file - points to has been clobbered or not. + Read and decompress one byte from file. gzgetc returns this byte or -1 in + case of end of file or error. If some data was read before an error, then + that data is returned until exhausted, after which the next call will return + -1 to signal the error. + + This is implemented as a macro for speed. As such, it does not do all of + the checking the other functions do. I.e. it does not check to see if file + is NULL, nor whether the structure file points to has been clobbered or not. + + gzgetc can be used to read a gzip file on a non-blocking device. If the + input stalls and there is no uncompressed data to return, then gzgetc() will + return -1, and errno will be EAGAIN or EWOULDBLOCK. gzread() can then be + called again. */ ZEXTERN int ZEXPORT gzungetc(int c, gzFile file); @@ -1530,6 +1636,11 @@ ZEXTERN int ZEXPORT gzungetc(int c, gzFile file); output buffer size of pushed characters is allowed. (See gzbuffer above.) The pushed character will be discarded if the stream is repositioned with gzseek() or gzrewind(). + + gzungetc(-1, file) will force any pending seek to execute. Then gztell() + will report the position, even if the requested seek reached end of file. + This can be used to determine the number of uncompressed bytes in a gzip + file without having to read it into a buffer. */ ZEXTERN int ZEXPORT gzflush(gzFile file, int flush); @@ -1559,7 +1670,8 @@ ZEXTERN z_off_t ZEXPORT gzseek(gzFile file, If the file is opened for reading, this function is emulated but can be extremely slow. If the file is opened for writing, only forward seeks are supported; gzseek then compresses a sequence of zeroes up to the new - starting position. + starting position. For reading or writing, any actual seeking is deferred + until the next read or write operation, or close operation when writing. gzseek returns the resulting offset location as measured in bytes from the beginning of the uncompressed stream, or -1 in case of error, in @@ -1567,7 +1679,7 @@ ZEXTERN z_off_t ZEXPORT gzseek(gzFile file, would be before the current position. */ -ZEXTERN int ZEXPORT gzrewind(gzFile file); +ZEXTERN int ZEXPORT gzrewind(gzFile file); /* Rewind file. This function is supported only for reading. @@ -1575,7 +1687,7 @@ ZEXTERN int ZEXPORT gzrewind(gzFile file); */ /* -ZEXTERN z_off_t ZEXPORT gztell(gzFile file); +ZEXTERN z_off_t ZEXPORT gztell(gzFile file); Return the starting position for the next gzread or gzwrite on file. This position represents a number of bytes in the uncompressed data stream, @@ -1620,8 +1732,11 @@ ZEXTERN int ZEXPORT gzdirect(gzFile file); If gzdirect() is used immediately after gzopen() or gzdopen() it will cause buffers to be allocated to allow reading the file to determine if it - is a gzip file. Therefore if gzbuffer() is used, it should be called before - gzdirect(). + is a gzip file. Therefore if gzbuffer() is used, it should be called before + gzdirect(). If the input is being written concurrently or the device is non- + blocking, then gzdirect() may give a different answer once four bytes of + input have been accumulated, which is what is needed to confirm or deny a + gzip header. Before this, gzdirect() will return true (1). When writing, gzdirect() returns true (1) if transparent writing was requested ("wT" for the gzopen() mode), or false (0) otherwise. (Note: @@ -1631,7 +1746,7 @@ ZEXTERN int ZEXPORT gzdirect(gzFile file); gzip file reading and decompression, which may not be desired.) */ -ZEXTERN int ZEXPORT gzclose(gzFile file); +ZEXTERN int ZEXPORT gzclose(gzFile file); /* Flush all pending output for file, if necessary, close file and deallocate the (de)compression state. Note that once file is closed, you @@ -1659,9 +1774,10 @@ ZEXTERN int ZEXPORT gzclose_w(gzFile file); ZEXTERN const char * ZEXPORT gzerror(gzFile file, int *errnum); /* Return the error message for the last error which occurred on file. - errnum is set to zlib error number. If an error occurred in the file system - and not in the compression library, errnum is set to Z_ERRNO and the - application may consult errno to get the exact error code. + If errnum is not NULL, *errnum is set to zlib error number. If an error + occurred in the file system and not in the compression library, *errnum is + set to Z_ERRNO and the application may consult errno to get the exact error + code. The application must not modify the returned string. Future calls to this function may invalidate the previously returned string. If file is @@ -1712,7 +1828,8 @@ ZEXTERN uLong ZEXPORT adler32(uLong adler, const Bytef *buf, uInt len); ZEXTERN uLong ZEXPORT adler32_z(uLong adler, const Bytef *buf, z_size_t len); /* - Same as adler32(), but with a size_t length. + Same as adler32(), but with a size_t length. Note that a long is 32 bits + on Windows. */ /* @@ -1748,7 +1865,8 @@ ZEXTERN uLong ZEXPORT crc32(uLong crc, const Bytef *buf, uInt len); ZEXTERN uLong ZEXPORT crc32_z(uLong crc, const Bytef *buf, z_size_t len); /* - Same as crc32(), but with a size_t length. + Same as crc32(), but with a size_t length. Note that a long is 32 bits on + Windows. */ /* @@ -1758,14 +1876,14 @@ ZEXTERN uLong ZEXPORT crc32_combine(uLong crc1, uLong crc2, z_off_t len2); seq1 and seq2 with lengths len1 and len2, CRC-32 check values were calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32 check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and - len2. len2 must be non-negative. + len2. len2 must be non-negative, otherwise zero is returned. */ /* ZEXTERN uLong ZEXPORT crc32_combine_gen(z_off_t len2); Return the operator corresponding to length len2, to be used with - crc32_combine_op(). len2 must be non-negative. + crc32_combine_op(). len2 must be non-negative, otherwise zero is returned. */ ZEXTERN uLong ZEXPORT crc32_combine_op(uLong crc1, uLong crc2, uLong op); @@ -1844,6 +1962,11 @@ ZEXTERN int ZEXPORT gzgetc_(gzFile file); /* backward compatibility */ # undef z_gzgetc # define z_gzgetc(g) \ ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : (gzgetc)(g)) +#elif defined(Z_CR_PREFIX_SET) +# undef gzgetc +# define gzgetc(g) \ + ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) \ + : (Cr_z_gzgetc)(g)) #else # define gzgetc(g) \ ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : (gzgetc)(g)) @@ -1875,22 +1998,47 @@ ZEXTERN int ZEXPORT gzgetc_(gzFile file); /* backward compatibility */ # define z_crc32_combine z_crc32_combine64 # define z_crc32_combine_gen z_crc32_combine_gen64 # else +# ifdef gzopen +# undef gzopen +# endif # define gzopen gzopen64 +# ifdef gzseek +# undef gzseek +# endif # define gzseek gzseek64 +# ifdef gztell +# undef gztell +# endif # define gztell gztell64 +# ifdef gzoffset +# undef gzoffset +# endif # define gzoffset gzoffset64 +# ifdef adler32_combine +# undef adler32_combine +# endif # define adler32_combine adler32_combine64 -# define crc32_combine crc32_combine64 -# define crc32_combine_gen crc32_combine_gen64 +# ifdef crc32_combine +# undef crc32_combine +# endif +# ifdef crc32_combine64 +# undef crc32_combine64 +# endif +# ifdef crc32_combine_gen +# undef crc32_combine_gen +# endif +# ifdef crc32_combine_op +# undef crc32_combine_op +# endif # endif # ifndef Z_LARGE64 ZEXTERN gzFile ZEXPORT gzopen64(const char *, const char *); ZEXTERN z_off_t ZEXPORT gzseek64(gzFile, z_off_t, int); ZEXTERN z_off_t ZEXPORT gztell64(gzFile); ZEXTERN z_off_t ZEXPORT gzoffset64(gzFile); - ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off_t); - ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off_t); - ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off_t); + ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off64_t); + ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off64_t); + ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off64_t); # endif #else ZEXTERN gzFile ZEXPORT gzopen(const char *, const char *); diff --git a/packages/runtime/vendor/zlib/zutil.c b/packages/runtime/vendor/zlib/zutil.c index b1c5d2d3c..0e30c5664 100644 --- a/packages/runtime/vendor/zlib/zutil.c +++ b/packages/runtime/vendor/zlib/zutil.c @@ -1,5 +1,5 @@ /* zutil.c -- target dependent utility functions for the compression library - * Copyright (C) 1995-2017 Jean-loup Gailly + * Copyright (C) 1995-2026 Jean-loup Gailly * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -86,28 +86,36 @@ uLong ZEXPORT zlibCompileFlags(void) { flags += 1L << 21; #endif #if defined(STDC) || defined(Z_HAVE_STDARG_H) -# ifdef NO_vsnprintf - flags += 1L << 25; -# ifdef HAS_vsprintf_void - flags += 1L << 26; -# endif -# else -# ifdef HAS_vsnprintf_void - flags += 1L << 26; -# endif -# endif +# ifdef NO_vsnprintf +# ifdef ZLIB_INSECURE + flags += 1L << 25; +# else + flags += 1L << 27; +# endif +# ifdef HAS_vsprintf_void + flags += 1L << 26; +# endif +# else +# ifdef HAS_vsnprintf_void + flags += 1L << 26; +# endif +# endif #else flags += 1L << 24; -# ifdef NO_snprintf - flags += 1L << 25; -# ifdef HAS_sprintf_void - flags += 1L << 26; -# endif -# else -# ifdef HAS_snprintf_void - flags += 1L << 26; -# endif -# endif +# ifdef NO_snprintf +# ifdef ZLIB_INSECURE + flags += 1L << 25; +# else + flags += 1L << 27; +# endif +# ifdef HAS_sprintf_void + flags += 1L << 26; +# endif +# else +# ifdef HAS_snprintf_void + flags += 1L << 26; +# endif +# endif #endif return flags; } @@ -142,28 +150,33 @@ const char * ZEXPORT zError(int err) { #ifndef HAVE_MEMCPY -void ZLIB_INTERNAL zmemcpy(Bytef* dest, const Bytef* source, uInt len) { - if (len == 0) return; - do { - *dest++ = *source++; /* ??? to be unrolled */ - } while (--len != 0); +void ZLIB_INTERNAL zmemcpy(void FAR *dst, const void FAR *src, z_size_t n) { + uchf *p = dst; + const uchf *q = src; + while (n) { + *p++ = *q++; + n--; + } } -int ZLIB_INTERNAL zmemcmp(const Bytef* s1, const Bytef* s2, uInt len) { - uInt j; - - for (j = 0; j < len; j++) { - if (s1[j] != s2[j]) return 2*(s1[j] > s2[j])-1; +int ZLIB_INTERNAL zmemcmp(const void FAR *s1, const void FAR *s2, z_size_t n) { + const uchf *p = s1, *q = s2; + while (n) { + if (*p++ != *q++) + return (int)p[-1] - (int)q[-1]; + n--; } return 0; } -void ZLIB_INTERNAL zmemzero(Bytef* dest, uInt len) { - if (len == 0) return; - do { - *dest++ = 0; /* ??? to be unrolled */ - } while (--len != 0); +void ZLIB_INTERNAL zmemzero(void FAR *b, z_size_t len) { + uchf *p = b; + while (len) { + *p++ = 0; + len--; + } } + #endif #ifndef Z_SOLO diff --git a/packages/runtime/vendor/zlib/zutil.h b/packages/runtime/vendor/zlib/zutil.h index 48dd7feba..64cd7a41e 100644 --- a/packages/runtime/vendor/zlib/zutil.h +++ b/packages/runtime/vendor/zlib/zutil.h @@ -1,5 +1,5 @@ /* zutil.h -- internal interface and configuration of the compression library - * Copyright (C) 1995-2024 Jean-loup Gailly, Mark Adler + * Copyright (C) 1995-2026 Jean-loup Gailly, Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -28,6 +28,21 @@ # include # include #endif +#ifdef NO_ERRNO_H +# ifdef _WIN32_WCE + /* The Microsoft C Run-Time Library for Windows CE doesn't have + * errno. We define it as a global variable to simplify porting. + * Its value is always 0 and should not be used. We rename it to + * avoid conflict with other libraries that use the same workaround. + */ +# define errno z_errno +# endif + extern int errno; +#else +# ifndef _WIN32_WCE +# include +# endif +#endif #ifndef local # define local static @@ -36,6 +51,10 @@ define "local" for the non-static meaning of "static", for readability (compile with -Dlocal if your debugger can't find static symbols) */ +extern const char deflate_copyright[]; +extern const char inflate_copyright[]; +extern const char inflate9_copyright[]; + typedef unsigned char uch; typedef uch FAR uchf; typedef unsigned short ush; @@ -48,6 +67,8 @@ typedef unsigned long ulg; # define Z_U8 unsigned long # elif (ULLONG_MAX == 0xffffffffffffffff) # define Z_U8 unsigned long long +# elif (ULONG_LONG_MAX == 0xffffffffffffffff) +# define Z_U8 unsigned long long # elif (UINT_MAX == 0xffffffffffffffff) # define Z_U8 unsigned # endif @@ -63,7 +84,9 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ /* To be used only when the state is known to be valid */ /* common constants */ - +#if MAX_WBITS < 9 || MAX_WBITS > 15 +# error MAX_WBITS must be in 9..15 +#endif #ifndef DEF_WBITS # define DEF_WBITS MAX_WBITS #endif @@ -141,7 +164,7 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ # define OS_CODE 7 #endif -#ifdef __acorn +#if defined(__acorn) || defined(__riscos) # define OS_CODE 13 #endif @@ -168,11 +191,10 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ #endif /* provide prototypes for these when building zlib without LFS */ -#if !defined(_WIN32) && \ - (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0) - ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off_t); - ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off_t); - ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off_t); +#ifndef Z_LARGE64 + ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off64_t); + ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off64_t); + ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off64_t); #endif /* common defaults */ @@ -211,9 +233,9 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ # define zmemzero(dest, len) memset(dest, 0, len) # endif #else - void ZLIB_INTERNAL zmemcpy(Bytef* dest, const Bytef* source, uInt len); - int ZLIB_INTERNAL zmemcmp(const Bytef* s1, const Bytef* s2, uInt len); - void ZLIB_INTERNAL zmemzero(Bytef* dest, uInt len); + void ZLIB_INTERNAL zmemcpy(void FAR *, const void FAR *, z_size_t); + int ZLIB_INTERNAL zmemcmp(const void FAR *, const void FAR *, z_size_t); + void ZLIB_INTERNAL zmemzero(void FAR *, z_size_t); #endif /* Diagnostic functions */ @@ -251,4 +273,80 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ #define ZSWAP32(q) ((((q) >> 24) & 0xff) + (((q) >> 8) & 0xff00) + \ (((q) & 0xff00) << 8) + (((q) & 0xff) << 24)) +#ifdef _MSC_VER +#define zalign(x) __declspec(align(x)) +#else +#define zalign(x) __attribute__((aligned((x)))) +#endif + +#ifdef Z_ONCE +/* + Create a local z_once() function depending on the availability of atomics. + */ + +/* Check for the availability of atomics. */ +#if defined(__STDC__) && __STDC_VERSION__ >= 201112L && \ + !defined(__STDC_NO_ATOMICS__) + +#include +typedef struct { + atomic_flag begun; + atomic_int done; +} z_once_t; +#define Z_ONCE_INIT {ATOMIC_FLAG_INIT, 0} + +/* + Run the provided init() function exactly once, even if multiple threads + invoke once() at the same time. The state must be a once_t initialized with + Z_ONCE_INIT. + */ +local void z_once(z_once_t *state, void (*init)(void)) { + if (!atomic_load(&state->done)) { + if (atomic_flag_test_and_set(&state->begun)) + while (!atomic_load(&state->done)) + ; + else { + init(); + atomic_store(&state->done, 1); + } + } +} + +#else /* no atomics */ + +#warning zlib not thread-safe + +typedef struct z_once_s { + volatile int begun; + volatile int done; +} z_once_t; +#define Z_ONCE_INIT {0, 0} + +/* Test and set. Alas, not atomic, but tries to limit the period of + vulnerability. */ +local int test_and_set(int volatile *flag) { + int was; + + was = *flag; + *flag = 1; + return was; +} + +/* Run the provided init() function once. This is not thread-safe. */ +local void z_once(z_once_t *state, void (*init)(void)) { + if (!state->done) { + if (test_and_set(&state->begun)) + while (!state->done) + ; + else { + init(); + state->done = 1; + } + } +} + +#endif /* ?atomics */ + +#endif /* Z_ONCE */ + #endif /* ZUTIL_H */ diff --git a/tests/corpus/8405-zlib-compressed-bytes.ts b/tests/corpus/8405-zlib-compressed-bytes.ts new file mode 100644 index 000000000..bfada812d --- /dev/null +++ b/tests/corpus/8405-zlib-compressed-bytes.ts @@ -0,0 +1,96 @@ +// Compressed zlib bytes over the vendored zlib, the copy Node bundles: deflate, +// raw deflate and gzip output match Node's for every level, strategy, memLevel, +// windowBits and dictionary, for text, binary and a 1 MiB input that slides the +// window, and for streams that flush and change parameters between writes. +import { createHash } from "node:crypto"; +import { + constants, + createDeflate, + createGzip, + deflateRawSync, + deflateSync, + gunzipSync, + gzipSync, + inflateRawSync, + inflateSync, + type Deflate, + type Gzip, + type ZlibOptions, +} from "node:zlib"; + +const digest = (bytes: Buffer): string => + `${bytes.length} ${createHash("sha256").update(bytes).digest("hex").slice(0, 16)}`; + +const words = ["stream", "pipeline", "émetteur", "π", "buffer", "deflate", "\u0000", "window"]; +const parts: string[] = []; +for (let i = 0; i < 3000; i++) parts.push(`${words[i % words.length]}-${(i * 7919) % 1000}`); +const text = Buffer.from(parts.join(" "), "utf8"); + +let seed = 0x2545f491; +const binary = Buffer.alloc(20000); +for (let i = 0; i < binary.length; i++) { + seed = (seed * 1103515245 + 12345) >>> 0; + binary[i] = i % 3 === 0 ? seed >>> 24 : (i >> 4) & 0xff; +} + +const large = Buffer.alloc(1 << 20); +for (let i = 0; i < large.length; i++) large[i] = text[(i * 31) % text.length]! ^ ((i >> 12) & 7); + +for (const level of [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) { + const deflated = deflateSync(text, { level }); + console.log("deflate", level, digest(deflated), inflateSync(deflated).equals(text)); + console.log("raw", level, digest(deflateRawSync(binary, { level }))); + console.log("gzip", level, digest(gzipSync(text, { level }))); +} + +const variants: [string, ZlibOptions][] = [ + ["filtered", { strategy: constants.Z_FILTERED }], + ["huffman only", { strategy: constants.Z_HUFFMAN_ONLY }], + ["rle", { strategy: constants.Z_RLE }], + ["fixed", { strategy: constants.Z_FIXED }], + ["memLevel 1", { memLevel: 1 }], + ["memLevel 9", { memLevel: 9 }], + ["windowBits 9", { windowBits: 9 }], + ["windowBits 12", { windowBits: 12 }], + ["level 9 memLevel 9", { level: 9, memLevel: 9 }], + ["dictionary", { dictionary: Buffer.from("stream pipeline buffer deflate window") }], +]; +for (const [label, options] of variants) { + const deflated = deflateSync(text, options); + console.log(label, digest(deflated), digest(deflateRawSync(binary, options))); + console.log(label, "inflates", inflateSync(deflated, options).equals(text)); +} + +for (const level of [1, 6, 9]) { + const gz = gzipSync(large, { level }); + console.log("1 MiB gzip", level, digest(gz), gunzipSync(gz).equals(large)); + const raw = deflateRawSync(large, { level, windowBits: 10 }); + console.log("1 MiB raw windowBits 10", level, digest(raw), inflateRawSync(raw, { windowBits: 10 }).equals(large)); +} + +function collect(stream: Deflate | Gzip, label: string, done: () => void): void { + const chunks: Buffer[] = []; + stream.on("data", (chunk: Buffer) => chunks.push(chunk)); + stream.on("end", () => { + console.log(label, digest(Buffer.concat(chunks))); + done(); + }); +} + +const flushed = createDeflate({ level: 6 }); +collect(flushed, "stream sync flush", () => { + const changed = createGzip({ level: 1 }); + collect(changed, "stream params", () => console.log("done")); + changed.write(text.subarray(0, 8000)); + changed.flush(constants.Z_FULL_FLUSH, () => { + changed.params(9, constants.Z_DEFAULT_STRATEGY, () => { + changed.write(text.subarray(8000)); + changed.end(binary); + }); + }); +}); +flushed.write(text.subarray(0, 5000)); +flushed.flush(constants.Z_SYNC_FLUSH, () => { + flushed.write(binary); + flushed.end(text.subarray(5000)); +}); diff --git a/tests/corpus/8406-zlib-inflate-chunks.cjs b/tests/corpus/8406-zlib-inflate-chunks.cjs new file mode 100644 index 000000000..f8fade68f --- /dev/null +++ b/tests/corpus/8406-zlib-inflate-chunks.cjs @@ -0,0 +1,69 @@ +// Inflation over the vendored zlib's chunked inflate: inputs fed in pieces of +// 1 to 4096 bytes, output chunks of 64 bytes to 64 KiB, raw windowBits 9 to 15, +// concatenated gzip members, back-references across a 1 MiB window, and a +// truncated input. The output and the error match Node's. +const zlib = require("node:zlib"); +const { createHash } = require("node:crypto"); + +const digest = (bytes) => `${bytes.length} ${createHash("sha256").update(bytes).digest("hex").slice(0, 16)}`; + +const parts = []; +for (let i = 0; i < 20000; i++) parts.push(`row ${i % 977} ${"abcdefgh".slice(i % 8)} ${(i * 2654435761) % 4093}`); +const text = Buffer.from(parts.join("\n")); +const large = Buffer.alloc(1 << 20); +for (let i = 0; i < large.length; i++) large[i] = text[(i * 13) % text.length] ^ ((i >> 15) & 3); + +const gz = zlib.gzipSync(large, { level: 6 }); +for (const chunkSize of [64, 1024, 16384, 65536]) { + console.log("gunzip chunkSize", chunkSize, digest(zlib.gunzipSync(gz, { chunkSize }))); +} +for (const windowBits of [9, 10, 12, 15]) { + const raw = zlib.deflateRawSync(text, { windowBits, level: 9 }); + console.log("raw windowBits", windowBits, digest(zlib.inflateRawSync(raw, { windowBits }))); +} +const members = Buffer.concat([zlib.gzipSync(text.subarray(0, 1000)), zlib.gzipSync(text.subarray(1000, 5000))]); +console.log("members", digest(zlib.gunzipSync(members))); +try { + zlib.inflateSync(zlib.deflateSync(text).subarray(0, 2000)); +} catch (e) { + console.log("truncated", e.code, e.errno, e.message); +} + +function feed(input, pieceSize, outSize, next) { + const inflate = zlib.createGunzip({ chunkSize: outSize }); + const hash = createHash("sha256"); + let length = 0; + inflate.on("data", (chunk) => { + hash.update(chunk); + length += chunk.length; + }); + inflate.on("end", () => { + console.log("stream piece", pieceSize, "chunk", outSize, length, hash.digest("hex").slice(0, 16)); + next(); + }); + let offset = 0; + const pump = () => { + while (offset < input.length) { + const piece = input.subarray(offset, offset + pieceSize); + offset += pieceSize; + if (!inflate.write(piece)) { + inflate.once("drain", pump); + return; + } + } + inflate.end(); + }; + pump(); +} + +const head = zlib.gzipSync(large.subarray(0, 1 << 16), { level: 6 }); +const runs = [ + [head, 1, 64], + [gz, 7, 1024], + [gz, 333, 4096], + [gz, 4096, 65536], +]; +const step = (i) => { + if (i < runs.length) feed(runs[i][0], runs[i][1], runs[i][2], () => step(i + 1)); +}; +step(0); diff --git a/tests/harness/corpus-costs/8405-zlib-compressed-bytes.ts.json b/tests/harness/corpus-costs/8405-zlib-compressed-bytes.ts.json new file mode 100644 index 000000000..9c291a72c --- /dev/null +++ b/tests/harness/corpus-costs/8405-zlib-compressed-bytes.ts.json @@ -0,0 +1 @@ +{ "plain": 5000, "san": 3200 } diff --git a/tests/harness/corpus-costs/8406-zlib-inflate-chunks.cjs.json b/tests/harness/corpus-costs/8406-zlib-inflate-chunks.cjs.json new file mode 100644 index 000000000..2202e2f02 --- /dev/null +++ b/tests/harness/corpus-costs/8406-zlib-inflate-chunks.cjs.json @@ -0,0 +1 @@ +{ "plain": 9000, "san": 13300 } diff --git a/tests/harness/wasi-differential.test.ts b/tests/harness/wasi-differential.test.ts index 66c2934f2..68d4b1807 100644 --- a/tests/harness/wasi-differential.test.ts +++ b/tests/harness/wasi-differential.test.ts @@ -316,6 +316,8 @@ describe.skipIf(!zigOnPath())("wasm32-wasi differential", () => { // Weak-collection hashes mix 32-bit pointers in 64 bits. "4591-weak-keys-union-records.ts", "7742-weak-collections-many-keys.ts", + // zlib's portable build (CPU_NO_SIMD) compresses to Node's bytes. + "8405-zlib-compressed-bytes.ts", ])("the LLVM target runs %s byte-identically to Node", async (fixture) => { const entry = join(repoRoot, "tests/corpus", fixture); const outDir = await mkdtemp("/tmp/scriptc-wasi-"); From 90b971fbb2a22b51dc93e7671fa61aabb9a8c20c Mon Sep 17 00:00:00 2001 From: Malte Ubl Date: Mon, 26 Oct 2026 16:56:04 -0700 Subject: [PATCH 32/52] Match the record-ops table with its store hook in the live-capsule test Co-Authored-By: Claude Opus 5.5 --- packages/compiler/src/backend/llvm/expr-stream-bridges.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/compiler/src/backend/llvm/expr-stream-bridges.test.ts b/packages/compiler/src/backend/llvm/expr-stream-bridges.test.ts index 244b3afea..4649056e1 100644 --- a/packages/compiler/src/backend/llvm/expr-stream-bridges.test.ts +++ b/packages/compiler/src/backend/llvm/expr-stream-bridges.test.ts @@ -141,7 +141,7 @@ test("live record capsules bind field hooks in snapshot order", () => { const llvm = emitLlvmModule(module, { pointerBits: 64 }); const tables = [ ...llvm.matchAll( - /^@(\S+)_rops = internal global \{ i64, ptr, ptr, ptr, i8, ptr, ptr \} \{ i64 (\d+), /gm, + /^@(\S+)_rops = internal global \{ i64, ptr, ptr, ptr, i8, ptr, ptr, ptr \} \{ i64 (\d+), /gm, ), ]; // root and leaf get field hooks; the record with an index-like field name From 73335a51308628c01e514c065cb8e2a73382ae48 Mon Sep 17 00:00:00 2001 From: Malte Ubl Date: Mon, 26 Oct 2026 16:59:12 -0700 Subject: [PATCH 33/52] Benchmark typed records written through untyped views Co-Authored-By: Claude Opus 5.5 --- benchmarks/runtime/README.md | 1 + .../workloads/record-untyped-writes.json | 6 +++ .../workloads/record-untyped-writes.ts | 49 +++++++++++++++++++ 3 files changed, 56 insertions(+) create mode 100644 benchmarks/runtime/workloads/record-untyped-writes.json create mode 100644 benchmarks/runtime/workloads/record-untyped-writes.ts diff --git a/benchmarks/runtime/README.md b/benchmarks/runtime/README.md index 9af4ace00..f3a444ea9 100644 --- a/benchmarks/runtime/README.md +++ b/benchmarks/runtime/README.md @@ -28,6 +28,7 @@ Application-shaped workloads for measuring the speed of compiled executables. Ea | `numeric-kernels` | cpu | sieve, hashing, `number[][]` matmul, `Float64Array` | | `optional-fields` | cpu | records and class instances with `number \| undefined` and other scalar-union fields | | `published-graphs` | cpu | syntax trees with parent links and a symbol table, published with `@scriptc/threads` and then read | +| `record-untyped-writes` | cpu | typed records written through untyped views: a counter helper taking `unknown` bumps fields of a stats record, and `Object.assign` merges patches into a settings record, with typed reads in between | | `record-boundaries` | cpu | records built from unchecked array reads passed to and returned from annotated functions | | `records-sort` | cpu | comparator sorts, group-by, `reduce`/`filter` | | `regex-logs` | cpu | regex `exec` with groups, `test`, global `replace` | diff --git a/benchmarks/runtime/workloads/record-untyped-writes.json b/benchmarks/runtime/workloads/record-untyped-writes.json new file mode 100644 index 000000000..35f8e53fc --- /dev/null +++ b/benchmarks/runtime/workloads/record-untyped-writes.json @@ -0,0 +1,6 @@ +{ + "entry": "workloads/record-untyped-writes.ts", + "args": [ + "4" + ] +} diff --git a/benchmarks/runtime/workloads/record-untyped-writes.ts b/benchmarks/runtime/workloads/record-untyped-writes.ts new file mode 100644 index 000000000..956f7955b --- /dev/null +++ b/benchmarks/runtime/workloads/record-untyped-writes.ts @@ -0,0 +1,49 @@ +// Typed records updated through untyped views: a stats record written by a +// generic counter helper that takes `unknown`, settings merged with +// Object.assign, and typed reads in between. Each write stores into the +// native record; typed code reads the same object. +type Stats = { hits: number; misses: number; bytes: number; name: string; ok: boolean }; +type Settings = { host: string; port: number; debug: boolean; retries: number }; + +const scale = Number(process.argv[2] ?? "1"); + +function bump(target: unknown, key: string, by: number): void { + const record = target as Record; + record[key] = record[key]! + by; +} + +const stats: Stats[] = []; +for (let i = 0; i < 16; i++) stats.push({ hits: 0, misses: 0, bytes: 0, name: "s" + i, ok: true }); + +let seed = 12345; +let checksum = 0; +const rounds = Math.floor(1_000_000 * scale); +for (let i = 0; i < rounds; i++) { + seed = (Math.imul(seed, 1103515245) + 12345) >>> 0; + const s = stats[seed & 15]!; + if ((seed >>> 8) % 5 === 0) bump(s, "misses", 1); + else bump(s, "hits", 1); + bump(s, "bytes", (seed >>> 12) & 1023); + checksum += s.hits - s.misses; +} + +const settings: Settings = { host: "localhost", port: 80, debug: false, retries: 0 }; +const view: object = settings; +const patches: object[] = [ + { port: 8080 }, + { debug: true, retries: 3 }, + { host: "example.test" }, + { port: 443, debug: false }, +]; +for (let i = 0; i < Math.floor(200_000 * scale); i++) { + Object.assign(view, patches[i & 3]!); + checksum += settings.port + settings.retries; +} + +let hits = 0; +let bytes = 0; +for (const s of stats) { + hits += s.hits; + bytes += s.bytes; +} +console.log("hits", hits, "bytes", bytes, "settings", JSON.stringify(settings), "checksum", checksum); From ca1a6b5bed3ffd8c195e7d7c525b589f6e2b1a2c Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 19:05:12 -0500 Subject: [PATCH 34/52] Version loops around nested loops only for accesses inside them A typed-array loop version runs a checked copy and one or two fast copies of the loop, and each copy repeats every nested loop together with the nested loop's own version. A loop whose guard proves only accesses outside its nested loops, which run once per pass, now runs as written when a nested loop accesses typed arrays; the nested loops still version their own accesses. The loop versions as before when the guard proves the bounds of an access inside a nested loop, or, in a worker program, the ownership of an access inside a nested while loop, which never versions for ownership alone. Spectral-norm's paired row sums no longer copy their column loop for the row loop's two stores. The worker program's au and atu functions are 102 KB of LLVM text instead of 236 KB each, and the program 519 KB instead of 786 KB. Corpus typed-array-nested-loop-versions covers row loops that store past the end or at negative, fractional and NaN rows, views the nested loop writes, and a nested while loop. --- .../backend/llvm/bytes-loop-versions.test.ts | 49 +++++++++++++ .../src/backend/llvm/bytes-loop-versions.ts | 37 ++++++++-- .../typed-array-nested-loop-versions.ts.json | 6 ++ .../typed-array-nested-loop-versions.ts | 68 +++++++++++++++++++ .../typed-array-nested-loop-versions.ts.json | 1 + 5 files changed, 157 insertions(+), 4 deletions(-) create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/typed-array-nested-loop-versions.ts.json create mode 100644 tests/corpus/typed-array-nested-loop-versions.ts create mode 100644 tests/harness/corpus-costs/typed-array-nested-loop-versions.ts.json diff --git a/packages/compiler/src/backend/llvm/bytes-loop-versions.test.ts b/packages/compiler/src/backend/llvm/bytes-loop-versions.test.ts index 742d256b7..76f229215 100644 --- a/packages/compiler/src/backend/llvm/bytes-loop-versions.test.ts +++ b/packages/compiler/src/backend/llvm/bytes-loop-versions.test.ts @@ -222,6 +222,55 @@ test("negative factors, rebinding, captures and outer loops are not versioned", expect(match(fn([outer]), inner)).not.toBeNull(); }); +test("loops with nested loops version only for accesses inside them", () => { + // for (let i = 0; i < 64; i++) { + // let t = 0; + // for (let j = 0; j < n; j++) t = t + src[j]; + // out[i] = t; + // } + const sum = (): IrStmt[] => [ + { kind: "varDecl", localId: "t", init: num(0), loc }, + counted( + [ + { + kind: "assign", + localId: "t", + value: bin("+", ref("t"), get(ref("src", f64s), ref("j"))), + loc, + }, + ], + ref("n"), + "j", + ), + ]; + const extra = [local("t", F64, true)]; + // The guard would prove only `out[i]`, which runs once per row. + const rows = counted([...sum(), set(ref("out", f64s), ref("i"), ref("t"))], num(64)); + expect(match(fn([rows], extra), rows)).toBeNull(); + expect(match(fn([rows], extra), rows.body[1] as IrStmt & { kind: "for" })).not.toBeNull(); + // The guard proves `out[i]` inside a nested loop too. + const inside = counted( + [...sum(), counted([set(ref("out", f64s), ref("i"), ref("t"))], num(2), "j")], + num(64), + ); + expect(match(fn([inside], extra), inside)?.bounds.size).toBe(1); + // A loop whose nested loops access no typed array versions for its own + // accesses. + const scalar = counted( + [ + { kind: "varDecl", localId: "t", init: num(0), loc }, + counted( + [{ kind: "assign", localId: "t", value: bin("+", ref("t"), ref("j")), loc }], + ref("n"), + "j", + ), + set(ref("out", f64s), ref("i"), ref("t")), + ], + num(64), + ); + expect(match(fn([scalar], extra), scalar)?.bounds.size).toBe(1); +}); + test("emitted loops version the body and tag typed-array memory", () => { const loop = counted([ set(ref("out", f64s), ref("i"), bin("*", get(ref("src", f64s), ref("i")), num(2))), diff --git a/packages/compiler/src/backend/llvm/bytes-loop-versions.ts b/packages/compiler/src/backend/llvm/bytes-loop-versions.ts index ccf217f9f..d0bef7fd6 100644 --- a/packages/compiler/src/backend/llvm/bytes-loop-versions.ts +++ b/packages/compiler/src/backend/llvm/bytes-loop-versions.ts @@ -196,9 +196,10 @@ const INVARIANT_OPS = new Set(["+", "-", "*", "&", "|", "^", "<<", ">>", ">>>"]) * and writes thread-owned views directly. * * Only small synchronous loops are versioned (nested loops included), and - * the emitter bounds how deeply versions nest. The checked loop runs - * whenever the guard fails, and keeps every out-of-bounds read, ignored - * write and NaN-index behavior. */ + * the emitter bounds how deeply versions nest. A loop whose nested loops + * access typed arrays versions only for an access inside them. The checked + * loop runs whenever the guard fails, and keeps every out-of-bounds read, + * ignored write and NaN-index behavior. */ export function matchBytesLoopVersion( loop: IrStmt & { kind: "for" | "while" }, counted: IntegerCountedForLoop | null, @@ -492,7 +493,15 @@ export function matchBytesLoopVersion( const pairedCounters = paired !== null && counted === null ? new Set([paired.low.localId, paired.high.localId]) : null; const pairedNodes = new Map(); + // Accesses inside the loop's nested loops, and inside its nested while + // loops. + const nested = new Set(); + const nestedWhile = new Set(); + let loops = 0, + whiles = 0; const access = (node: Node, array: IrExpr, index: IrExpr, width: number): void => { + if (loops > 0) nested.add(node); + if (whiles > 0) nestedWhile.add(node); const ref = root(array); if (!ref) return; if (facts.workers && ref.type.kind === "bytes" && !facts.owned.has(node)) { @@ -603,7 +612,15 @@ export function matchBytesLoopVersion( access(s, s.arr, s.index, 1); scope(s, s.arr, true); } - return everyStmtChild(s, visitExpr, visitStmt); + const isLoop = + s.kind === "for" || s.kind === "forOf" || s.kind === "while" || s.kind === "doWhile"; + const isWhile = s.kind === "while" || s.kind === "doWhile"; + if (isLoop) loops++; + if (isWhile) whiles++; + const result = everyStmtChild(s, visitExpr, visitStmt); + if (isLoop) loops--; + if (isWhile) whiles--; + return result; }; loop.body.every(visitStmt); if (loop.kind === "while") visitExpr(loop.cond); @@ -714,6 +731,18 @@ export function matchBytesLoopVersion( used.add(receiver); for (const node of nodes) bounds.add(node); } + // A loop whose nested loops access typed arrays versions only when the + // guard proves the bounds of one of those accesses (or, in a worker + // program, the ownership of one inside a nested while loop, which never + // versions for ownership alone). Otherwise the guard covers accesses that + // run once per pass, while each copy of the body repeats every nested + // loop and each nested loop's own version. + if ( + nested.size > 0 && + ![...bounds].some((node) => nested.has(node)) && + ![...ownedNodes].some((node) => nestedWhile.has(node)) + ) + return null; const counterChecks: CounterCheck[] = []; for (const [id, min] of counterMins) { const info = whileAccesses!.counters.get(id)!; diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/typed-array-nested-loop-versions.ts.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/typed-array-nested-loop-versions.ts.json new file mode 100644 index 000000000..66c967b58 --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/typed-array-nested-loop-versions.ts.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/typed-array-nested-loop-versions.ts" + ], + "diags": [] +} diff --git a/tests/corpus/typed-array-nested-loop-versions.ts b/tests/corpus/typed-array-nested-loop-versions.ts new file mode 100644 index 000000000..19e408d30 --- /dev/null +++ b/tests/corpus/typed-array-nested-loop-versions.ts @@ -0,0 +1,68 @@ +// Loops whose own typed-array accesses run once per pass around nested +// loops that read typed arrays: row stores past the end, reads at NaN, +// negative and fractional rows, rows that read a typed array the nested +// loop writes, and a nested loop that reads the row's own result. +function rowSums(u: Float64Array, out: Float64Array, start: number, end: number): void { + for (let i = start; i < end; i++) { + let t = out[i] ?? -1; + for (let j = 0; j < u.length; j++) t += u[j]! * (i + 1); + out[i] = t; + } +} + +function scaled(u: Float64Array, scale: Float64Array, out: Float64Array, rows: number): void { + for (let i = 0; i < rows; i++) { + const s = scale[i * 2] ?? 0.5; + for (let j = 0; j < u.length; j++) out[j] = out[j]! + u[j]! * s; + out[i] = out[i]! - 1; + } +} + +function chained(v: Int32Array, rows: number): number { + let total = 0; + for (let i = 0; i < rows; i++) { + let k = 0; + while (k < v.length) { + v[k] = v[k]! + (v[i] ?? 7); + k++; + } + total += v[i + 1] ?? -3; + } + return total; +} + +const show = (label: string, v: Float64Array | Int32Array): void => { + const parts: string[] = []; + for (let k = 0; k < v.length; k++) parts.push(Object.is(v[k], -0) ? "-0" : String(v[k])); + console.log(label, parts.join(" ")); +}; + +const u = new Float64Array([0.5, -1.25, 3, 7.75]); +for (const [start, end] of [ + [0, 4], + [0, 7], + [2, 9], + [-2, 3], + [0.5, 3.5], + [NaN, 3], + [3, 1], +]) { + const out = new Float64Array(5).fill(2); + rowSums(u, out, start!, end!); + show(`rows ${start} ${end}`, out); +} + +for (const rows of [0, 1, 3, 6]) { + const out = new Float64Array(4).fill(1); + scaled(u, new Float64Array([2, -1, 0.25, 4, 8]), out, rows); + show(`scaled ${rows}`, out); + const same = new Float64Array([1, 2, 3, 4]); + scaled(same, same, same, rows); + show(`aliased ${rows}`, same); +} + +for (const rows of [0, 2, 4, 9]) { + const v = new Int32Array([1, -2, 3, 2147483647]); + const total = chained(v, rows); + show(`chained ${rows} ${total}`, v); +} diff --git a/tests/harness/corpus-costs/typed-array-nested-loop-versions.ts.json b/tests/harness/corpus-costs/typed-array-nested-loop-versions.ts.json new file mode 100644 index 000000000..1bee89d1a --- /dev/null +++ b/tests/harness/corpus-costs/typed-array-nested-loop-versions.ts.json @@ -0,0 +1 @@ +{ "plain": 6500, "san": 8800 } From d0047c813f4542e28e608819178e682019aa79c7 Mon Sep 17 00:00:00 2001 From: Malte Ubl Date: Mon, 26 Oct 2026 16:42:43 -0700 Subject: [PATCH 35/52] Shard the zero-cost gate and reuse baseline work across runs The full gate takes 30 to 75 minutes on one Sandbox, which made it the longest step of a validation round. It can now be split and merged: - --shard=i/n splits the bench and corpus programs (the self-hosted compiler runs in shard 1, or alone with --set=self), and scripts/zero-cost-merge.mjs merges the shards' --json reports into one verdict, recomputing the compile-time intervals over every shard. - --record-baseline-cache records the baseline's artifact hashes once; --baseline-cache skips the baseline build of every program whose candidate artifacts hash the same. The record is tied to the built baseline checkout, toolchain and paths. - The candidate-source self build overlaps the comparison builds on hosts with room for it. pnpm test:sandbox can reuse a prepared snapshot's LLVM helper and runtime pack (SCRIPTC_SANDBOX_NATIVE_REFERENCE) when their inputs are identical, and retries rate-limited Sandbox creation with backoff. Co-Authored-By: Claude Opus 5.5 --- AGENTS.md | 4 + scripts/sandbox-config.mjs | 19 ++ scripts/sandbox-test.mjs | 101 ++++++++-- scripts/zero-cost-compare.mjs | 169 ++++++++++++++++ scripts/zero-cost-gate.mjs | 283 ++++++++++++++++++--------- scripts/zero-cost-merge.mjs | 52 +++++ tests/harness/sandbox-config.test.ts | 19 ++ tests/harness/zero-cost-gate.test.ts | 82 ++++++++ 8 files changed, 625 insertions(+), 104 deletions(-) create mode 100644 scripts/zero-cost-merge.mjs diff --git a/AGENTS.md b/AGENTS.md index 00ce6bfd1..65c1b6e89 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -25,6 +25,8 @@ their supported native-clang contracts locally; other hosts retain those checks in the Sandboxes. Both lanes green is the bar before shipping any change. +`SCRIPTC_SANDBOX_NATIVE_REFERENCE` names a built checkout inside a prepared `SCRIPTC_SANDBOX_SNAPSHOT` or image: each lane copies that checkout's LLVM helper and runtime pack instead of rebuilding them when their source inputs are identical. Sandbox creation is rate limited per team in vCPUs per minute, so the runner retries a rate-limited creation with backoff. Larger Sandboxes (`SCRIPTC_SANDBOX_VCPUS` up to 32, with `SCRIPTC_TEST_WORKERS` at half the vCPUs) shorten the lanes most. + `VERCEL_OIDC_TOKEN` is the preferred credential. `VERCEL_TOKEN` remains supported with explicit `VERCEL_TEAM_ID` and `VERCEL_PROJECT_ID`. The custom `SCRIPTC_SANDBOX_IMAGE` is optional: without it, the gate starts from @@ -58,6 +60,8 @@ A change that must not cost good code anything, such as a compatibility fix that node scripts/zero-cost-gate.mjs --baseline=/vercel/sandbox/prev --candidate=. --allow='\barguments\b' ``` +The whole gate takes 30 to 75 minutes on one 8-vCPU Sandbox, so shard it across Sandboxes. `--shard=i/n` splits the bench and corpus programs; the self-hosted compiler runs in shard 1, or alone with `--set=self`, and its candidate-source build overlaps its comparison build on hosts with 40 GB or more. Each shard writes `--json`, and `node scripts/zero-cost-merge.mjs ...` merges them into one verdict, recomputing the compile-time intervals over every shard. `--record-baseline-cache=` builds only the baseline and records each program's artifact hashes; `--baseline-cache=` then skips the baseline build of every program whose candidate artifacts hash the same, which halves the work for a change that leaves most programs identical. A record applies only to the built baseline checkout, toolchain, and paths it was made with, and is ignored otherwise. + Test location follows scope: - Co-locate white-box unit tests with implementation files under diff --git a/scripts/sandbox-config.mjs b/scripts/sandbox-config.mjs index 9ab1f6fa1..9b64eba57 100644 --- a/scripts/sandbox-config.mjs +++ b/scripts/sandbox-config.mjs @@ -291,3 +291,22 @@ export function sandboxTestSourceConfig(env) { createArgs: ["--image", image.sandboxImage], }; } + +/** A built checkout inside a prepared snapshot whose native artifacts a + * lane may reuse when their inputs match (SCRIPTC_SANDBOX_NATIVE_REFERENCE). + * It needs the snapshot's tools, so it is ignored for the managed image. */ +export function sandboxNativeReference(env) { + loadLocalEnv(); + const source = env ?? process.env; + const reference = source.SCRIPTC_SANDBOX_NATIVE_REFERENCE?.trim(); + if (!reference) return undefined; + if (!sandboxTestSourceConfig(source).prepared) { + throw new Error( + "SCRIPTC_SANDBOX_NATIVE_REFERENCE needs SCRIPTC_SANDBOX_SNAPSHOT or SCRIPTC_SANDBOX_IMAGE", + ); + } + if (!/^\/[\w./-]+$/.test(reference) || reference.split("/").includes("..")) { + throw new Error("SCRIPTC_SANDBOX_NATIVE_REFERENCE must be an absolute path without '..'"); + } + return reference.replace(/\/+$/, ""); +} diff --git a/scripts/sandbox-test.mjs b/scripts/sandbox-test.mjs index 602ef033e..3fe063075 100644 --- a/scripts/sandbox-test.mjs +++ b/scripts/sandbox-test.mjs @@ -9,6 +9,7 @@ import { parseArgs } from "node:util"; import { fileURLToPath } from "node:url"; import { sandboxBootstrapCommand, + sandboxNativeReference, sandboxTestSourceConfig, sandboxRunnerConfig, sandboxEffectWorkerAllocation, @@ -112,6 +113,38 @@ const hostInvariantFiles = [ "packages/runtime/test/tonumber.test.ts", "packages/runtime/test/url.test.ts", ]; +// Native artifacts a lane needs and every source path their builds read. +// Output paths are excluded from the input comparison by these names. +const NATIVE_OUTPUT_NAMES = [ + "bin", + "artifacts", + "runtime-pack.json", + ".runtime-pack-*", + "node_modules", + "dist", + "build", + ".cache", +]; +const LLVM_HELPER_INPUTS = ["native/llvm-codegen", "packages/llvm-linux-x64-gnu"]; +const NATIVE_ARTIFACTS = { + llvm: { + inputs: LLVM_HELPER_INPUTS, + outputs: ["packages/llvm-linux-x64-gnu/bin/scriptc-llvm-codegen"], + }, + runtime: { + inputs: [ + ...LLVM_HELPER_INPUTS, + "packages/runtime", + "packages/runtime-pack-common", + "packages/runtime-linux-x64-gnu", + "packages/runtime-darwin-arm64/scripts", + ], + outputs: [ + "packages/runtime-linux-x64-gnu/artifacts", + "packages/runtime-linux-x64-gnu/runtime-pack.json", + ], + }, +}; const hostSchedule = sandboxHostSchedule(process.platform, hostInvariantFiles); const nativeHostInvariantFiles = hostSchedule.localInvariantFiles; const remoteWorkspaceReset = workspaceResetCommand("/workspace"); @@ -188,6 +221,8 @@ Environment: VERCEL_TOKEN Access-token fallback; also set VERCEL_TEAM_ID + VERCEL_PROJECT_ID SCRIPTC_SANDBOX_IMAGE Optional fully qualified VCR image (default: vercel/sandbox/universal) SCRIPTC_SANDBOX_SNAPSHOT Optional prepared snapshot with the pinned toolchain (exclusive with IMAGE) + SCRIPTC_SANDBOX_NATIVE_REFERENCE Optional built checkout inside the snapshot; its LLVM helper + and runtime pack are reused when their inputs are identical SCRIPTC_SANDBOX_VCPUS vCPUs per sandbox (default: 8) SCRIPTC_SANDBOX_TIMEOUT sandbox and command timeout (default: 45m) SCRIPTC_TEST_WORKERS Vitest workers per sandbox (default: 4) @@ -197,6 +232,7 @@ Environment: } const sourceConfig = sandboxTestSourceConfig(); +const nativeReference = sandboxNativeReference(); const bootstrapCommand = sandboxBootstrapCommand(sourceConfig.prepared); const vercelConfig = sandboxVercelConfig(); const vercelProcessEnv = sandboxVercelEnvironment(vercelConfig); @@ -496,6 +532,42 @@ const execIn = async ( } }; +/** The command that provides one native artifact (`llvm`: the Linux LLVM + * helper, `runtime`: the Linux runtime pack). It builds the artifact unless + * SCRIPTC_SANDBOX_NATIVE_REFERENCE names a built checkout inside the Sandbox + * (a prepared snapshot's) whose inputs for that artifact are identical; then + * it copies the reference's artifact. The runtime build runs the helper, so + * its inputs include the helper's. */ +function nativeArtifactCommand(artifact) { + const pkg = + artifact === "llvm" ? "@scriptc/llvm-linux-x64-gnu" : "@scriptc/runtime-linux-x64-gnu"; + if (nativeReference === undefined) return ["pnpm", ["--filter", pkg, "build:native"]]; + const build = `pnpm --filter ${pkg} build:native`; + const { inputs, outputs } = NATIVE_ARTIFACTS[artifact]; + const excludes = NATIVE_OUTPUT_NAMES.map((name) => `-x '${name}'`).join(" "); + const ref = nativeReference; + const script = [ + "set -eu", + `ref='${ref}'`, + "same=1", + ...outputs.map((output) => `[ -e "$ref/${output}" ] || same=0`), + ...inputs.map( + (input) => + `[ "$same" = 0 ] || diff -rq ${excludes} "$ref/${input}" "${input}" >/dev/null 2>&1 || same=0`, + ), + 'if [ "$same" = 1 ]; then', + ...outputs.map( + (output) => + ` rm -rf "${output}" && mkdir -p "$(dirname "${output}")" && cp -R "$ref/${output}" "${output}"`, + ), + ` echo "reused the ${artifact} artifact from $ref: identical inputs"`, + "else", + ` ${build}`, + "fi", + ].join("\n"); + return ["sh", ["-c", script]]; +} + async function preflight() { console.log("Sandbox preflight:"); console.log(` auth: ${vercelConfig.authSource}`); @@ -582,7 +654,10 @@ async function createWorker(worker) { vcpus, "--non-persistent", ]; - for (let attempt = 1; attempt <= 2; attempt++) { + // Sandbox creation is rate limited per team in vCPUs per minute, so a + // large fan-out (many shards, large Sandboxes) retries with backoff. + const attempts = 6; + for (let attempt = 1; attempt <= attempts; attempt++) { try { await vercel(args, { idleTimeoutMs: 60_000, @@ -598,8 +673,12 @@ async function createWorker(worker) { await execIn(worker, "true", [], {}, "create status", 60_000, "/"); return; } catch (error) { - if (attempt === 2) throw error; - console.warn(`[${worker.label}] Sandbox is not reachable; retrying creation once...`); + if (attempt === attempts) throw error; + const delay = 15_000 * attempt; + console.warn( + `[${worker.label}] Sandbox is not reachable; retrying creation in ${delay / 1000}s...`, + ); + await new Promise((resolve) => setTimeout(resolve, delay)); } } } @@ -781,19 +860,13 @@ try { // including TypeScript's incremental metadata. Rebuild both together. await execIn(worker, "pnpm", ["build:fresh"], {}, "", 2 * 60_000); // Workspace builds deliberately do not rebuild packaged native artifacts. - // Every remote lane needs the Linux helper and runtime from this worktree. + // Every remote lane needs the Linux helper and runtime from this worktree, + // built from its sources or reused from a reference checkout whose + // native inputs are identical. + await execIn(worker, ...nativeArtifactCommand("llvm"), {}, "LLVM helper", 5 * 60_000); await execIn( worker, - "pnpm", - ["--filter", "@scriptc/llvm-linux-x64-gnu", "build:native"], - {}, - "LLVM helper", - 5 * 60_000, - ); - await execIn( - worker, - "pnpm", - ["--filter", "@scriptc/runtime-linux-x64-gnu", "build:native"], + ...nativeArtifactCommand("runtime"), { CC: "zig", AR: "zig" }, "runtime pack", 5 * 60_000, diff --git a/scripts/zero-cost-compare.mjs b/scripts/zero-cost-compare.mjs index df407bbb7..a8e531aed 100644 --- a/scripts/zero-cost-compare.mjs +++ b/scripts/zero-cost-compare.mjs @@ -6,6 +6,7 @@ * the first unit that differs. The self-hosted compiler's IR and LLVM exceed * V8's maximum string length, so splitting works on Buffers and hashes each * unit instead of decoding the artifact. */ +import assert from "node:assert/strict"; import { createHash } from "node:crypto"; const hash = (bytes) => createHash("sha1").update(bytes).digest("hex"); @@ -487,6 +488,57 @@ export function compareCounts(baseline, candidate) { }; } +/** The report lines the gate prints for one program. */ +export function programLines(entry) { + const lines = []; + const pct = (ratio) => `${ratio >= 1 ? "+" : ""}${((ratio - 1) * 100).toFixed(2)}%`; + const label = { + identical: "identical", + allowed: "allowed ", + differs: "DIFFERS ", + "build-error": "ERROR ", + "both-fail": "both-fail", + }[entry.verdict]; + const notes = []; + for (const [kind, result] of Object.entries(entry.artifacts)) + if (!result.identical) { + const counts = result.changed + ? ` (${result.changed.length} changed, ${result.added.length} added, ${result.removed.length} removed)` + : ""; + notes.push(`${kind}: ${result.first}${counts}`); + } + const size = entry.artifacts.exe?.bytes; + if (size && size.baseline !== size.candidate) + notes.push( + `size ${size.baseline} -> ${size.candidate} B (${pct(size.candidate / size.baseline)})`, + ); + if (entry.cachegrind?.total) { + const { total, deltas } = entry.cachegrind; + notes.push( + `Ir ${total.baseline} -> ${total.candidate} (${pct(total.candidate / Math.max(1, total.baseline))})` + + (deltas[0] + ? `, largest ${deltas[0].name} ${deltas[0].delta > 0 ? "+" : ""}${deltas[0].delta}` + : ""), + ); + } else if (entry.cachegrind?.skipped) + notes.push(`cachegrind skipped: ${entry.cachegrind.skipped}`); + for (const failure of entry.dynamicTier?.failures ?? []) notes.push(`SYMBOLS: ${failure}`); + lines.push(`${label} ${entry.id}${notes.length ? ` ${notes.join("; ")}` : ""}`); + // A build error's first line is often a warning; print all of it. + const errors = + entry.baselineError !== undefined && entry.baselineError === entry.candidateError + ? [["baseline and candidate", entry.baselineError]] + : [ + ["baseline", entry.baselineError], + ["candidate", entry.candidateError], + ].filter(([, error]) => error !== undefined); + for (const [side, error] of errors) { + lines.push(` ${side}:`); + for (const line of error.split("\n")) lines.push(` ${line}`); + } + return lines; +} + /* ── verdicts ──────────────────────────────────────────────────────────── */ /** One program's verdict from its build results and artifact comparisons. @@ -539,3 +591,120 @@ export function timeRatio(rows, resamples = 2000) { high: ratios[Math.floor(resamples * 0.975)], }; } + +/** The compile-time verdict for one group of timing rows (`bench` or + * `self`): it fails when the 95% interval lies entirely above the allowed + * growth, and is inconclusive when the interval straddles it. */ +export function timingVerdict(name, rows, maxGrowth) { + const result = timeRatio(rows); + const fails = result.low > 1 + maxGrowth; + const verdict = fails + ? "SLOWER" + : result.high > 1 + maxGrowth + ? "inconclusive (rerun with more runs)" + : "within tolerance"; + const pct = (ratio) => `${ratio >= 1 ? "+" : ""}${((ratio - 1) * 100).toFixed(2)}%`; + return { + result, + fails, + line: + `time ${name} ${rows.length > 1 ? "geomean " : ""}${pct(result.ratio)} ` + + `[95% CI ${pct(result.low)}, ${pct(result.high)}]: ${verdict}`, + failure: fails + ? `${name} compile time grew ${pct(result.ratio)} (CI low ${pct(result.low)})` + : null, + }; +} + +/** Timing rows grouped as the gate judges them. */ +export function timingGroups(rows) { + return { + bench: rows.filter((r) => r.id.startsWith("bench/")), + self: rows.filter((r) => r.id === "self/cli"), + }; +} + +/* ── baseline cache ────────────────────────────────────────────────────── */ + +/** A content hash of one artifact file, as the baseline cache records it. */ +export const artifactHash = hash; + +/** The comparison a cached baseline entry settles without building the + * baseline, or null when the baseline must be built: identical artifacts + * (every recorded hash equals the candidate's) or the same build error on + * both sides. `candidate` holds the candidate's build result and `hashes` + * its artifact hashes. */ +export function cachedComparison(entry, candidate, hashes) { + if (entry === undefined) return null; + if (!entry.ok || !candidate.ok) + return !entry.ok && !candidate.ok && entry.error === candidate.error + ? { + baseline: { ok: false, error: entry.error, ms: entry.ms ?? null, cached: true }, + artifacts: {}, + } + : null; + const kinds = Object.keys(entry.hashes); + const differs = (kind) => entry.hashes[kind] === null || entry.hashes[kind] !== hashes[kind]; + if (kinds.length === 0 || kinds.some(differs)) return null; + const artifacts = {}; + for (const kind of kinds) artifacts[kind] = { identical: true }; + if (artifacts.exe) artifacts.exe.bytes = { baseline: entry.exeBytes, candidate: entry.exeBytes }; + return { baseline: { ok: true, ms: entry.ms ?? null }, artifacts }; +} + +/* ── sharded runs ──────────────────────────────────────────────────────── */ + +/** Merge the --json reports of gate shards that split one good-code set + * (--shard, --set) into a single report with one verdict. Program entries + * and their failures are concatenated; the compile-time groups and the + * "nothing was compared" check are recomputed over all shards. */ +export function mergeReports(reports) { + assert(reports.length > 0, "no gate reports to merge"); + const [first] = reports; + for (const report of reports) { + assert(report.schema === first.schema, "gate reports have different schemas"); + for (const label of ["baseline", "candidate"]) + assert( + report.trees[label].revision === first.trees[label].revision, + `gate reports compare different ${label} revisions`, + ); + } + const globals = new Set(reports.flatMap((r) => r.globalFailures ?? [])); + const merged = { + ...first, + shards: reports.length, + programs: reports.flatMap((r) => r.programs), + failures: reports.flatMap((r) => r.failures.filter((f) => !globals.has(f))), + globalFailures: [], + timing: null, + candidateSelf: reports.find((r) => r.candidateSelf)?.candidateSelf, + elapsedMs: Math.max(...reports.map((r) => r.elapsedMs ?? 0)), + }; + const ids = new Set(); + for (const p of merged.programs) { + assert(!ids.has(p.id), `program ${p.id} appears in more than one gate report`); + ids.add(p.id); + } + const timed = reports.filter((r) => r.timing !== null); + const lines = []; + if (timed.length > 0) { + const rows = timed.flatMap((r) => r.timing.rows); + const maxGrowth = timed[0].timing.maxGrowth; + merged.timing = { runs: timed[0].timing.runs, maxGrowth, rows, groups: {} }; + for (const [name, group] of Object.entries(timingGroups(rows))) { + if (group.length === 0) continue; + const { result, line, failure } = timingVerdict(name, group, maxGrowth); + merged.timing.groups[name] = result; + lines.push(line); + if (failure !== null) merged.globalFailures.push(failure); + } + } + const counts = {}; + for (const p of merged.programs) counts[p.verdict] = (counts[p.verdict] ?? 0) + 1; + if (!merged.programs.some((p) => ["identical", "allowed", "differs"].includes(p.verdict))) + merged.globalFailures.push("no program built with both checkouts, so nothing was compared"); + merged.failures.push(...merged.globalFailures); + merged.counts = counts; + merged.verdict = merged.failures.length > 0 ? "fail" : "pass"; + return { report: merged, timingLines: lines }; +} diff --git a/scripts/zero-cost-gate.mjs b/scripts/zero-cost-gate.mjs index a4427f7e8..746727366 100644 --- a/scripts/zero-cost-gate.mjs +++ b/scripts/zero-cost-gate.mjs @@ -13,6 +13,7 @@ * pattern signature) may differ; any other difference fails the gate. */ import assert from "node:assert/strict"; import { spawn, spawnSync } from "node:child_process"; +import { createHash } from "node:crypto"; import { existsSync, mkdirSync, @@ -23,12 +24,14 @@ import { statSync, writeFileSync, } from "node:fs"; -import { availableParallelism } from "node:os"; +import { availableParallelism, totalmem } from "node:os"; import { dirname, join, relative, resolve } from "node:path"; import { fileURLToPath } from "node:url"; import { parseArgs } from "node:util"; import { readWorkloads } from "../benchmarks/runtime/workloads.mjs"; import { + artifactHash, + cachedComparison, cachegrindCounts, compareArtifact, compareCounts, @@ -38,8 +41,10 @@ import { dynamicTierSymbols, median, nmOutput, + programLines, programVerdict, - timeRatio, + timingGroups, + timingVerdict, } from "./zero-cost-compare.mjs"; const repoRoot = fileURLToPath(new URL("..", import.meta.url)); @@ -61,6 +66,8 @@ const { values } = parseArgs({ cachegrind: { type: "boolean", default: false }, jobs: { type: "string", default: String(Math.max(1, availableParallelism())) }, json: { type: "string" }, + "baseline-cache": { type: "string" }, + "record-baseline-cache": { type: "string" }, keep: { type: "boolean", default: false }, help: { type: "boolean", default: false }, }, @@ -72,6 +79,7 @@ if (values.help || values.baseline === undefined) { [--timing-runs=N] [--self-timing-runs=N] [--max-time-growth=2] [--max-size-growth=0] [--cachegrind] [--jobs=N] [--json=] [--keep] + [--baseline-cache=] [--record-baseline-cache=] Each checkout must be built (packages/cli/dist/bootstrap.js and this host's runtime pack). Both compile the same program files, taken from --programs @@ -82,7 +90,9 @@ benchmarks/builds applications), self (packages/compiler/src/native/cli.ts, LLVM only; the candidate's own compiler source must also build with the candidate), corpus (tests/corpus TypeScript programs; --corpus=all adds JavaScript entries). --quick is --set=bench --timing-runs=0, for CI. ---shard=i/n keeps every n-th corpus program; --only filters program ids. +--shard=i/n keeps every n-th bench and corpus program; the self program runs +in shard 1. scripts/zero-cost-merge.mjs merges the shards' --json reports +into one verdict. --only filters program ids. --allow= is the change's pattern signature: programs whose source files match it may differ (reported as "allowed"). Any other difference in @@ -106,6 +116,15 @@ cachegrind (bench workloads with their arguments, corpus programs without) and compares instruction counts per function of the executable's own symbols, excluding the allocator's prefault thread. +--record-baseline-cache= builds only the baseline and records each +program's artifact hashes (or build error) in , then exits. +--baseline-cache= reads such a record: a program whose candidate +artifacts hash the same as the recorded baseline's is identical without a +baseline build, and the same build error on both sides is both-fail; any +other program builds the baseline as usual. The record applies only to the +baseline revision and toolchain it was made with; otherwise it is ignored. +The self program always builds both sides, since its builds are timed. + Exit status: 0 when the gate passes, 1 when it fails.`); process.exit(values.help ? 0 : 2); } @@ -200,13 +219,7 @@ function goodCodeSet() { if (main !== undefined) entries.push(main); } else if (exts.some((ext) => name.endsWith(`.${ext}`))) entries.push(path); } - let selected = entries; - if (values.shard) { - const [index, count] = values.shard.split("/").map(Number); - assert.ok(index >= 1 && index <= count, "--shard must be i/n with 1 <= i <= n"); - selected = entries.filter((_, k) => k % count === index - 1); - } - for (const entry of selected) { + for (const entry of entries) { const head = readFileSync(entry, "utf8").split("\n", 2); const speed = head.some((line) => /^\/\/ @optimization:\s*speed\s*$/.test(line)); programs.push({ @@ -217,7 +230,17 @@ function goodCodeSet() { }); } } - return programs.filter((p) => only === null || only.test(p.id)); + const selected = programs.filter((p) => only === null || only.test(p.id)); + if (!values.shard) return selected; + const [index, count] = values.shard.split("/").map(Number); + assert.ok( + Number.isInteger(index) && Number.isInteger(count) && index >= 1 && index <= count, + "--shard must be i/n with 1 <= i <= n", + ); + // The self program takes minutes and pairs its own timing: shard 1 owns it. + const self = selected.filter((p) => p.kind === "source"); + const rest = selected.filter((p) => p.kind !== "source"); + return [...(index === 1 ? self : []), ...rest.filter((_, k) => k % count === index - 1)]; } /* ── builds ────────────────────────────────────────────────────────────── */ @@ -415,7 +438,64 @@ function revision(root) { const fmtMs = (ms) => `${(ms / 1000).toFixed(2)}s`; const pct = (ratio) => `${ratio >= 1 ? "+" : ""}${((ratio - 1) * 100).toFixed(2)}%`; -const programs = goodCodeSet(); +/* ── baseline cache ────────────────────────────────────────────────────── */ + +/** Every file under `dir`, recursively, in a stable order. */ +function filesUnder(dir) { + if (!existsSync(dir)) return []; + return readdirSync(dir, { recursive: true, withFileTypes: true }) + .filter((d) => d.isFile()) + .map((d) => join(d.parentPath, d.name)) + .sort(); +} + +/** What a baseline build depends on besides the program: the checkout's + * built compiler and CLI, its runtime packs and LLVM helpers, Node, the + * host and the program and checkout paths that reach the artifacts. */ +function toolchainFingerprint(root) { + const h = createHash("sha1"); + h.update(JSON.stringify([process.platform, process.arch, process.version, root, programsRoot])); + const clang = spawnSync("clang", ["--version"], { encoding: "utf8" }); + h.update(clang.stdout ?? ""); + const packages = join(root, "packages"); + for (const name of readdirSync(packages).sort()) { + const dir = join(packages, name); + const files = [ + ...filesUnder(join(dir, "dist")), + ...(name.startsWith("runtime-") + ? [join(dir, "runtime-pack.json"), ...filesUnder(join(dir, "artifacts"))] + : []), + ...(name.startsWith("llvm-") ? filesUnder(join(dir, "bin")) : []), + ]; + for (const file of files) + if (existsSync(file)) h.update(relative(root, file)).update(readFileSync(file)); + } + return h.digest("hex"); +} + +/** The content hashes of one build's artifacts (null for a missing one). */ +function buildHashes(build) { + const hashes = {}; + for (const kind of ["ir", "llvm", "exe"]) + if (kind in build) + hashes[kind] = build[kind] === null ? null : artifactHash(readFileSync(build[kind])); + return hashes; +} + +const recordPath = values["record-baseline-cache"]; +let baselineCache = null; +if (recordPath === undefined && values["baseline-cache"] !== undefined) { + const file = resolve(values["baseline-cache"]); + const cache = existsSync(file) ? JSON.parse(readFileSync(file, "utf8")) : null; + const fingerprint = cache === null ? null : toolchainFingerprint(trees.baseline); + if (cache?.schema === 1 && cache.fingerprint === fingerprint) baselineCache = cache; + else + console.log( + `baseline cache ${file} ${cache === null ? "is missing" : "was made with another baseline or toolchain"}; building every baseline`, + ); +} + +const programs = goodCodeSet().filter((p) => recordPath === undefined || p.kind !== "source"); assert.ok(programs.length > 0, "the selected good-code set is empty"); const report = { schema: 1, @@ -429,6 +509,13 @@ const report = { programs: [], timing: null, failures: [], + // Failures judged over the whole good-code set (compile time, nothing + // compared); scripts/zero-cost-merge.mjs recomputes them across shards. + globalFailures: [], + baselineCache: + baselineCache === null + ? null + : { programs: Object.keys(baselineCache.programs).length, used: 0 }, }; console.log( `zero-cost gate: ${programs.length} programs (${[...sets].join(", ")}), ` + @@ -437,18 +524,90 @@ console.log( let failed = false; const started = Date.now(); + +if (recordPath !== undefined) { + const record = { + schema: 1, + date: report.date, + fingerprint: toolchainFingerprint(trees.baseline), + baseline: report.trees.baseline, + programs: {}, + }; + await pool( + programs.map((program) => ({ + run: async () => { + const build = await buildProgram(program, "baseline"); + record.programs[program.id] = build.ok + ? { + ok: true, + ms: build.ms, + hashes: buildHashes(build), + ...(build.exe ? { exeBytes: statSync(build.exe).size } : {}), + } + : { ok: false, ms: build.ms ?? null, error: build.error }; + if (build.dir) rmSync(build.dir, { recursive: true, force: true }); + }, + })), + ); + mkdirSync(dirname(resolve(recordPath)), { recursive: true }); + writeFileSync(recordPath, JSON.stringify(record) + "\n"); + rmSync(work, { recursive: true, force: true }); + const failures = Object.values(record.programs).filter((p) => !p.ok).length; + console.log( + `zero-cost gate: recorded ${programs.length} baseline programs (${failures} build errors) ` + + `in ${recordPath} in ${fmtMs(Date.now() - started)}`, + ); + process.exit(0); +} + +/** The candidate's own compiler source must still build with the candidate + * (see below). On a host with room for a third self-hosted build it runs + * alongside the comparison builds instead of after them. */ +const checkCandidateSelf = + sets.has("self") && programsRoot !== trees.candidate && programs.some((p) => p.kind === "source"); +const buildCandidateSelf = () => + buildProgram( + { + id: "self/candidate-source", + entry: join(trees.candidate, "packages/compiler/src/native/cli.ts"), + kind: "source", + }, + "candidate", + ); +const earlyCandidateSelf = + checkCandidateSelf && totalmem() >= 40 * 1024 ** 3 ? buildCandidateSelf() : null; + await pool( programs.map((program) => ({ heavy: program.kind === "source", run: async () => { - const [baseline, candidate] = await Promise.all([ - buildProgram(program, "baseline"), - buildProgram(program, "candidate"), - ]); + const recorded = program.kind === "source" ? undefined : baselineCache?.programs[program.id]; + let baseline; + let candidate; + let settled = null; + if (recorded === undefined) + [baseline, candidate] = await Promise.all([ + buildProgram(program, "baseline"), + buildProgram(program, "candidate"), + ]); + else { + candidate = await buildProgram(program, "candidate"); + settled = cachedComparison(recorded, candidate, candidate.ok ? buildHashes(candidate) : {}); + // A cached identical baseline is byte for byte the candidate's build. + baseline = + settled === null + ? await buildProgram(program, "baseline") + : settled.baseline.ok + ? { ...candidate, ms: settled.baseline.ms, cached: true } + : settled.baseline; + if (settled !== null) report.baselineCache.used++; + } const allowed = allow !== null && programInputs(program.entry).some((f) => allow.test(readFileSync(f, "utf8"))); - const artifacts = baseline.ok && candidate.ok ? compareBuilds(baseline, candidate) : {}; + const artifacts = + settled?.artifacts ?? + (baseline.ok && candidate.ok ? compareBuilds(baseline, candidate) : {}); // The benchmark workloads and the self-hosted compiler always build. const required = !program.id.startsWith("corpus/"); const { verdict, fails } = programVerdict({ @@ -465,6 +624,7 @@ await pool( buildMs: { baseline: baseline.ms ?? null, candidate: candidate.ms ?? null }, artifacts, }; + if (settled !== null) entry.cachedBaseline = true; if (!baseline.ok) entry.baselineError = baseline.error; if (!candidate.ok) entry.candidateError = candidate.error; const size = artifacts.exe?.bytes; @@ -506,7 +666,8 @@ await pool( nmCache.delete(baseline.exe); nmCache.delete(candidate.exe); if (!values.keep) { - if (baseline.dir) rmSync(baseline.dir, { recursive: true, force: true }); + if (baseline.dir && !baseline.cached) + rmSync(baseline.dir, { recursive: true, force: true }); if (candidate.dir) rmSync(candidate.dir, { recursive: true, force: true }); } }, @@ -514,50 +675,7 @@ await pool( ); function printProgram(entry) { - const label = { - identical: "identical", - allowed: "allowed ", - differs: "DIFFERS ", - "build-error": "ERROR ", - "both-fail": "both-fail", - }[entry.verdict]; - const notes = []; - for (const [kind, result] of Object.entries(entry.artifacts)) - if (!result.identical) { - const counts = result.changed - ? ` (${result.changed.length} changed, ${result.added.length} added, ${result.removed.length} removed)` - : ""; - notes.push(`${kind}: ${result.first}${counts}`); - } - const size = entry.artifacts.exe?.bytes; - if (size && size.baseline !== size.candidate) - notes.push( - `size ${size.baseline} -> ${size.candidate} B (${pct(size.candidate / size.baseline)})`, - ); - if (entry.cachegrind?.total) { - const { total, deltas } = entry.cachegrind; - notes.push( - `Ir ${total.baseline} -> ${total.candidate} (${pct(total.candidate / Math.max(1, total.baseline))})` + - (deltas[0] - ? `, largest ${deltas[0].name} ${deltas[0].delta > 0 ? "+" : ""}${deltas[0].delta}` - : ""), - ); - } else if (entry.cachegrind?.skipped) - notes.push(`cachegrind skipped: ${entry.cachegrind.skipped}`); - for (const failure of entry.dynamicTier?.failures ?? []) notes.push(`SYMBOLS: ${failure}`); - console.log(`${label} ${entry.id}${notes.length ? ` ${notes.join("; ")}` : ""}`); - // A build error's first line is often a warning; print all of it. - const errors = - entry.baselineError !== undefined && entry.baselineError === entry.candidateError - ? [["baseline and candidate", entry.baselineError]] - : [ - ["baseline", entry.baselineError], - ["candidate", entry.candidateError], - ].filter(([, error]) => error !== undefined); - for (const [side, error] of errors) { - console.log(` ${side}:`); - for (const line of error.split("\n")) console.log(` ${line}`); - } + for (const line of programLines(entry)) console.log(line); } /* Compile time: paired --emit=llvm builds, the baseline and the candidate @@ -603,29 +721,15 @@ if (timingRuns > 0) { ); } report.timing = { runs: timingRuns, maxGrowth: maxTimeGrowth, rows, groups: {} }; - const groups = { - bench: rows.filter((r) => r.id.startsWith("bench/")), - self: rows.filter((r) => r.id === "self/cli"), - }; - for (const [name, group] of Object.entries(groups)) { + for (const [name, group] of Object.entries(timingGroups(rows))) { if (group.length === 0) continue; - const result = timeRatio(group); + const { result, line, failure } = timingVerdict(name, group, maxTimeGrowth); report.timing.groups[name] = result; - const verdict = - result.low > 1 + maxTimeGrowth - ? "SLOWER" - : result.high > 1 + maxTimeGrowth - ? "inconclusive (rerun with more runs)" - : "within tolerance"; - console.log( - `time ${name} ${group.length > 1 ? "geomean " : ""}${pct(result.ratio)} ` + - `[95% CI ${pct(result.low)}, ${pct(result.high)}]: ${verdict}`, - ); - if (result.low > 1 + maxTimeGrowth) { + console.log(line); + if (failure !== null) { failed = true; - report.failures.push( - `${name} compile time grew ${pct(result.ratio)} (CI low ${pct(result.low)})`, - ); + report.failures.push(failure); + report.globalFailures.push(failure); } } } @@ -634,12 +738,8 @@ if (timingRuns > 0) { // from one checkout), so a change that adds compiler code the self-hosted // frontend cannot lower would pass unnoticed. The candidate's own compiler // source must still build with the candidate (LLVM only, not compared). -if (sets.has("self") && programsRoot !== trees.candidate) { - const entry = join(trees.candidate, "packages/compiler/src/native/cli.ts"); - const result = await buildProgram( - { id: "self/candidate-source", entry, kind: "source" }, - "candidate", - ); +if (checkCandidateSelf) { + const result = await (earlyCandidateSelf ?? buildCandidateSelf()); report.candidateSelf = result.ok ? { ok: true, buildMs: result.ms } : { ok: false, error: result.error }; @@ -658,7 +758,9 @@ const counts = {}; for (const p of report.programs) counts[p.verdict] = (counts[p.verdict] ?? 0) + 1; if (!report.programs.some((p) => ["identical", "allowed", "differs"].includes(p.verdict))) { failed = true; - report.failures.push("no program built with both checkouts, so nothing was compared"); + const failure = "no program built with both checkouts, so nothing was compared"; + report.failures.push(failure); + report.globalFailures.push(failure); } report.counts = counts; report.verdict = failed ? "fail" : "pass"; @@ -672,7 +774,8 @@ else console.log(`artifacts kept in ${work}`); console.log( `zero-cost gate: ${failed ? "FAIL" : "PASS"} — ${Object.entries(counts) .map(([k, v]) => `${v} ${k}`) - .join(", ")} in ${fmtMs(report.elapsedMs)}`, + .join(", ")} in ${fmtMs(report.elapsedMs)}` + + (report.baselineCache ? ` (${report.baselineCache.used} baselines from the cache)` : ""), ); for (const failure of report.failures) console.log(` ${failure}`); process.exit(failed ? 1 : 0); diff --git a/scripts/zero-cost-merge.mjs b/scripts/zero-cost-merge.mjs new file mode 100644 index 000000000..d32022dd9 --- /dev/null +++ b/scripts/zero-cost-merge.mjs @@ -0,0 +1,52 @@ +/* Merge zero-cost gate shards into one verdict. + * + * A sharded gate runs scripts/zero-cost-gate.mjs several times over one + * good-code set (--shard=i/n for the bench and corpus programs, the self + * program in shard 1 or its own --set=self run), each with --json. This + * script merges those reports: program verdicts and failures are + * concatenated, and the compile-time verdicts and the "nothing was + * compared" check are recomputed over every shard's rows. */ +import { readFileSync, writeFileSync } from "node:fs"; +import { parseArgs } from "node:util"; +import { mergeReports, programLines } from "./zero-cost-compare.mjs"; + +const { values, positionals } = parseArgs({ + allowPositionals: true, + options: { + json: { type: "string" }, + quiet: { type: "boolean", default: false }, + help: { type: "boolean", default: false }, + }, +}); +if (values.help || positionals.length === 0) { + console.log(`Usage: node scripts/zero-cost-merge.mjs [--json=] [--quiet] ... + +Merges the --json reports of zero-cost gate shards and prints one summary: +every program that is not identical, the compile-time verdicts and the +failures. --quiet prints only the summary and failures. --json writes the +merged report. Exit status: 0 when the merged gate passes, 1 when it fails.`); + process.exit(values.help ? 0 : 2); +} + +const reports = positionals.map((file) => JSON.parse(readFileSync(file, "utf8"))); +const { report, timingLines } = mergeReports(reports); +if (!values.quiet) + for (const entry of report.programs) + if (entry.verdict !== "identical") for (const line of programLines(entry)) console.log(line); +for (const line of timingLines) console.log(line); +if (report.candidateSelf) + console.log( + report.candidateSelf.ok + ? `self candidate compiler source builds with the candidate (${(report.candidateSelf.buildMs / 1000).toFixed(2)}s)` + : "self candidate compiler source FAILS to build with the candidate", + ); +const cached = report.programs.filter((p) => p.cachedBaseline).length; +console.log( + `zero-cost gate: ${report.verdict === "pass" ? "PASS" : "FAIL"} — ${Object.entries(report.counts) + .map(([k, v]) => `${v} ${k}`) + .join(", ")} over ${report.shards} shards (longest ${(report.elapsedMs / 1000).toFixed(2)}s` + + `${cached ? `, ${cached} baselines from the cache` : ""})`, +); +for (const failure of report.failures) console.log(` ${failure}`); +if (values.json) writeFileSync(values.json, JSON.stringify(report, null, 2) + "\n"); +process.exit(report.verdict === "pass" ? 0 : 1); diff --git a/tests/harness/sandbox-config.test.ts b/tests/harness/sandbox-config.test.ts index cedaef600..9a330f746 100644 --- a/tests/harness/sandbox-config.test.ts +++ b/tests/harness/sandbox-config.test.ts @@ -5,6 +5,7 @@ import { sandboxBootstrapCommand, sandboxEffectWorkerAllocation, sandboxImageConfig, + sandboxNativeReference, sandboxRunnerConfig, sandboxTestSourceConfig, sandboxTestWorkerAllocation, @@ -154,6 +155,24 @@ test("ambiguous or malformed snapshot sources fail before creating workers", () ); }); +test("a native reference checkout needs a prepared source and an absolute path", () => { + const snapshot = { SCRIPTC_SANDBOX_SNAPSHOT: "snap_ABC123" }; + expect(sandboxNativeReference(snapshot)).toBeUndefined(); + expect( + sandboxNativeReference({ + ...snapshot, + SCRIPTC_SANDBOX_NATIVE_REFERENCE: " /vercel/sandbox/prev/ ", + }), + ).toBe("/vercel/sandbox/prev"); + expect(() => + sandboxNativeReference({ SCRIPTC_SANDBOX_NATIVE_REFERENCE: "/vercel/sandbox/prev" }), + ).toThrow("needs SCRIPTC_SANDBOX_SNAPSHOT"); + for (const path of ["prev", "/a/../b", "/a b", "/a;rm"]) + expect(() => + sandboxNativeReference({ ...snapshot, SCRIPTC_SANDBOX_NATIVE_REFERENCE: path }), + ).toThrow("absolute path"); +}); + test("OIDC authentication wins and supplies its own Sandbox scope", () => { const config = sandboxVercelConfig({ VERCEL_OIDC_TOKEN: "header.payload.signature", diff --git a/tests/harness/zero-cost-gate.test.ts b/tests/harness/zero-cost-gate.test.ts index 565f8ba71..4a9372078 100644 --- a/tests/harness/zero-cost-gate.test.ts +++ b/tests/harness/zero-cost-gate.test.ts @@ -1,14 +1,18 @@ import { spawnSync } from "node:child_process"; import { expect, test } from "vitest"; import { + cachedComparison, cachegrindCounts, compareArtifact, compareCounts, compareExecutables, definedFunctionNames, dynamicTierSymbols, + mergeReports, nmOutput, + programLines, programVerdict, + timingVerdict, } from "../../scripts/zero-cost-compare.mjs"; const ir = (functions: object[], globals: object[]) => @@ -191,3 +195,81 @@ test("the zero-cost gate fails differing programs unless they match the signatur expect(verdict({}, false, failed, failed, true)).toEqual({ verdict: "both-fail", fails: true }); expect(verdict({}, true, ok, failed)).toEqual({ verdict: "build-error", fails: true }); }); + +test("a recorded baseline settles identical programs and shared build errors", () => { + const hashes = { ir: "a", llvm: "b", exe: "c" }; + const entry = { ok: true, ms: 12, hashes, exeBytes: 100 }; + expect(cachedComparison(entry, { ok: true }, { ...hashes })).toEqual({ + baseline: { ok: true, ms: 12 }, + artifacts: { + ir: { identical: true }, + llvm: { identical: true }, + exe: { identical: true, bytes: { baseline: 100, candidate: 100 } }, + }, + }); + // Any other hash, a missing artifact or no record builds the baseline. + expect(cachedComparison(entry, { ok: true }, { ...hashes, exe: "d" })).toBeNull(); + expect( + cachedComparison({ ...entry, hashes: { ...hashes, ir: null } }, { ok: true }, hashes), + ).toBeNull(); + expect(cachedComparison(undefined, { ok: true }, hashes)).toBeNull(); + expect(cachedComparison(entry, { ok: false, error: "SC1090" }, {})).toBeNull(); + const failed = { ok: false, ms: 3, error: "SC1090" }; + expect(cachedComparison(failed, { ok: false, error: "SC1090" }, {})).toEqual({ + baseline: { ok: false, error: "SC1090", ms: 3, cached: true }, + artifacts: {}, + }); + expect(cachedComparison(failed, { ok: false, error: "SC1091" }, {})).toBeNull(); + expect(cachedComparison(failed, { ok: true }, hashes)).toBeNull(); +}); + +test("merged gate shards judge compile time and comparisons over every shard", () => { + const trees = { baseline: { revision: "a" }, candidate: { revision: "b" } }; + const row = (id: string, ratio: number) => ({ + id, + baselineMs: [100, 100, 100], + candidateMs: [100 * ratio, 100 * ratio, 100 * ratio], + ratios: [ratio, ratio, ratio], + }); + const shard = ( + programs: object[], + rows: object[], + failures: string[] = [], + globals: string[] = [], + ) => ({ + schema: 1, + trees, + programs, + failures: [...failures, ...globals], + globalFailures: globals, + timing: { runs: 3, maxGrowth: 0.02, rows, groups: {} }, + elapsedMs: 10, + }); + const identical = (id: string) => ({ id, verdict: "identical", artifacts: {} }); + const fast = shard([identical("bench/a")], [row("bench/a", 1.0)]); + // Alone, this shard's bench is slower; with the other shard it is not. + const slow = shard( + [ + { + id: "corpus/x.ts", + verdict: "differs", + artifacts: { exe: { identical: false, first: "resized f" } }, + }, + ], + [row("bench/b", 1.03)], + ["corpus/x.ts: differs"], + ["bench compile time grew +3.00% (CI low +3.00%)"], + ); + const { report, timingLines } = mergeReports([fast, slow]); + expect(report.counts).toEqual({ identical: 1, differs: 1 }); + expect(report.failures).toEqual(["corpus/x.ts: differs"]); + expect(report.verdict).toBe("fail"); + expect(timingLines).toEqual([timingVerdict("bench", report.timing.rows, 0.02).line]); + expect(timingVerdict("bench", report.timing.rows, 0.02).fails).toBe(false); + expect(programLines(report.programs[1])).toEqual(["DIFFERS corpus/x.ts exe: resized f"]); + expect(mergeReports([fast]).report.verdict).toBe("pass"); + expect(mergeReports([shard([], [])]).report.failures).toEqual([ + "no program built with both checkouts, so nothing was compared", + ]); + expect(() => mergeReports([fast, fast])).toThrow(/more than one gate report/); +}); From cd606e96ff3c6a1bb116aee98ec78ded42218c1e Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 19:53:49 -0500 Subject: [PATCH 36/52] Key baseline cache entries by their program's inputs A recorded baseline entry now holds a hash of its program's inputs: the entry file and its relative imports (paths and contents) and the optimization level. --baseline-cache uses an entry only when the program still hashes the same, so a program or an import that changed since the record builds its baseline, instead of a recorded build error or artifact hash of the old sources settling the comparison as both-fail or identical. Records take schema 2; older records are ignored. --- AGENTS.md | 2 +- scripts/zero-cost-compare.mjs | 22 ++++++++++++++++++ scripts/zero-cost-gate.mjs | 34 ++++++++++++++++++++++------ tests/harness/zero-cost-gate.test.ts | 26 +++++++++++++++++++++ 4 files changed, 76 insertions(+), 8 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 65c1b6e89..3e631a92f 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -60,7 +60,7 @@ A change that must not cost good code anything, such as a compatibility fix that node scripts/zero-cost-gate.mjs --baseline=/vercel/sandbox/prev --candidate=. --allow='\barguments\b' ``` -The whole gate takes 30 to 75 minutes on one 8-vCPU Sandbox, so shard it across Sandboxes. `--shard=i/n` splits the bench and corpus programs; the self-hosted compiler runs in shard 1, or alone with `--set=self`, and its candidate-source build overlaps its comparison build on hosts with 40 GB or more. Each shard writes `--json`, and `node scripts/zero-cost-merge.mjs ...` merges them into one verdict, recomputing the compile-time intervals over every shard. `--record-baseline-cache=` builds only the baseline and records each program's artifact hashes; `--baseline-cache=` then skips the baseline build of every program whose candidate artifacts hash the same, which halves the work for a change that leaves most programs identical. A record applies only to the built baseline checkout, toolchain, and paths it was made with, and is ignored otherwise. +The whole gate takes 30 to 75 minutes on one 8-vCPU Sandbox, so shard it across Sandboxes. `--shard=i/n` splits the bench and corpus programs; the self-hosted compiler runs in shard 1, or alone with `--set=self`, and its candidate-source build overlaps its comparison build on hosts with 40 GB or more. Each shard writes `--json`, and `node scripts/zero-cost-merge.mjs ...` merges them into one verdict, recomputing the compile-time intervals over every shard. `--record-baseline-cache=` builds only the baseline and records each program's artifact hashes; `--baseline-cache=` then skips the baseline build of every program whose candidate artifacts hash the same, which halves the work for a change that leaves most programs identical. A record applies only to the built baseline checkout, toolchain, and paths it was made with, and is ignored otherwise; a program whose entry, relative imports, or optimization level changed since the record builds its baseline. Test location follows scope: diff --git a/scripts/zero-cost-compare.mjs b/scripts/zero-cost-compare.mjs index a8e531aed..15d638e15 100644 --- a/scripts/zero-cost-compare.mjs +++ b/scripts/zero-cost-compare.mjs @@ -629,6 +629,28 @@ export function timingGroups(rows) { /** A content hash of one artifact file, as the baseline cache records it. */ export const artifactHash = hash; +/** The hash of what a program's build reads, as the baseline cache records + * it: `files` (the entry and its relative imports) by path relative to + * `root` and content, read through `read`, and the optimization level. */ +export function programInputsHash(root, files, optimization, read) { + const h = createHash("sha1").update(`${optimization}\0`); + for (const file of [...files].sort()) + h.update(`${file.startsWith(root + "/") ? file.slice(root.length + 1) : file}\0`) + .update(read(file)) + .update("\0"); + return h.digest("hex"); +} + +/** The baseline cache entry recorded for program `id`, or undefined when the + * cache has none or recorded it for other inputs (`programInputsHash`): a + * program or an import that changed since the record must build its + * baseline, or a recorded build error or artifact hash of the old sources + * would settle the new sources' comparison. */ +export function recordedBaseline(cache, id, inputs) { + const entry = cache?.programs[id]; + return entry !== undefined && entry.inputs === inputs ? entry : undefined; +} + /** The comparison a cached baseline entry settles without building the * baseline, or null when the baseline must be built: identical artifacts * (every recorded hash equals the candidate's) or the same build error on diff --git a/scripts/zero-cost-gate.mjs b/scripts/zero-cost-gate.mjs index 746727366..bc312f2a6 100644 --- a/scripts/zero-cost-gate.mjs +++ b/scripts/zero-cost-gate.mjs @@ -41,8 +41,10 @@ import { dynamicTierSymbols, median, nmOutput, + programInputsHash, programLines, programVerdict, + recordedBaseline, timingGroups, timingVerdict, } from "./zero-cost-compare.mjs"; @@ -117,11 +119,14 @@ and compares instruction counts per function of the executable's own symbols, excluding the allocator's prefault thread. --record-baseline-cache= builds only the baseline and records each -program's artifact hashes (or build error) in , then exits. +program's artifact hashes (or build error) in , with a hash of the +program's inputs (its entry, its relative imports and its optimization +level), then exits. --baseline-cache= reads such a record: a program whose candidate artifacts hash the same as the recorded baseline's is identical without a baseline build, and the same build error on both sides is both-fail; any -other program builds the baseline as usual. The record applies only to the +other program builds the baseline as usual, and so does a program whose +inputs changed since the record. The record applies only to the baseline revision and toolchain it was made with; otherwise it is ignored. The self program always builds both sides, since its builds are timed. @@ -473,6 +478,16 @@ function toolchainFingerprint(root) { return h.digest("hex"); } +/** The hash of `program`'s inputs, which its baseline cache entry records. */ +function inputsHash(program) { + return programInputsHash( + programsRoot, + programInputs(program.entry), + program.kind === "source" ? "source" : (program.optimization ?? "release"), + (file) => readFileSync(file), + ); +} + /** The content hashes of one build's artifacts (null for a missing one). */ function buildHashes(build) { const hashes = {}; @@ -488,7 +503,7 @@ if (recordPath === undefined && values["baseline-cache"] !== undefined) { const file = resolve(values["baseline-cache"]); const cache = existsSync(file) ? JSON.parse(readFileSync(file, "utf8")) : null; const fingerprint = cache === null ? null : toolchainFingerprint(trees.baseline); - if (cache?.schema === 1 && cache.fingerprint === fingerprint) baselineCache = cache; + if (cache?.schema === 2 && cache.fingerprint === fingerprint) baselineCache = cache; else console.log( `baseline cache ${file} ${cache === null ? "is missing" : "was made with another baseline or toolchain"}; building every baseline`, @@ -527,7 +542,7 @@ const started = Date.now(); if (recordPath !== undefined) { const record = { - schema: 1, + schema: 2, date: report.date, fingerprint: toolchainFingerprint(trees.baseline), baseline: report.trees.baseline, @@ -537,14 +552,16 @@ if (recordPath !== undefined) { programs.map((program) => ({ run: async () => { const build = await buildProgram(program, "baseline"); + const inputs = inputsHash(program); record.programs[program.id] = build.ok ? { + inputs, ok: true, ms: build.ms, hashes: buildHashes(build), ...(build.exe ? { exeBytes: statSync(build.exe).size } : {}), } - : { ok: false, ms: build.ms ?? null, error: build.error }; + : { inputs, ok: false, ms: build.ms ?? null, error: build.error }; if (build.dir) rmSync(build.dir, { recursive: true, force: true }); }, })), @@ -581,7 +598,10 @@ await pool( programs.map((program) => ({ heavy: program.kind === "source", run: async () => { - const recorded = program.kind === "source" ? undefined : baselineCache?.programs[program.id]; + const recorded = + program.kind === "source" || baselineCache === null + ? undefined + : recordedBaseline(baselineCache, program.id, inputsHash(program)); let baseline; let candidate; let settled = null; @@ -593,7 +613,7 @@ await pool( else { candidate = await buildProgram(program, "candidate"); settled = cachedComparison(recorded, candidate, candidate.ok ? buildHashes(candidate) : {}); - // A cached identical baseline is byte for byte the candidate's build. + // A cached identical baseline has the candidate's artifacts. baseline = settled === null ? await buildProgram(program, "baseline") diff --git a/tests/harness/zero-cost-gate.test.ts b/tests/harness/zero-cost-gate.test.ts index 4a9372078..e99eca8d1 100644 --- a/tests/harness/zero-cost-gate.test.ts +++ b/tests/harness/zero-cost-gate.test.ts @@ -10,8 +10,10 @@ import { dynamicTierSymbols, mergeReports, nmOutput, + programInputsHash, programLines, programVerdict, + recordedBaseline, timingVerdict, } from "../../scripts/zero-cost-compare.mjs"; @@ -223,6 +225,30 @@ test("a recorded baseline settles identical programs and shared build errors", ( expect(cachedComparison(failed, { ok: true }, hashes)).toBeNull(); }); +test("a recorded baseline applies only to the program inputs it was recorded for", () => { + const files: Record = { + "/p/tests/corpus/a/main.ts": 'import { f } from "./lib.ts";', + "/p/tests/corpus/a/lib.ts": "export const f = 1;", + }; + const read = (file: string) => Buffer.from(files[file]!); + const paths = Object.keys(files); + const inputs = programInputsHash("/p", paths, "release", read); + expect(programInputsHash("/p", [...paths].reverse(), "release", read)).toBe(inputs); + expect(programInputsHash("/p", paths, "speed", read)).not.toBe(inputs); + expect(programInputsHash("/q", paths, "release", read)).not.toBe(inputs); + // An edit to an import changes the hash as an edit to the entry does. + files["/p/tests/corpus/a/lib.ts"] = "export const f = 2;"; + const edited = programInputsHash("/p", paths, "release", read); + expect(edited).not.toBe(inputs); + const entry = { inputs, ok: false, ms: 3, error: "SC1090" }; + const cache = { programs: { "corpus/a/main.ts": entry } }; + expect(recordedBaseline(cache, "corpus/a/main.ts", inputs)).toBe(entry); + // A record of the old sources must not settle the new sources as both-fail or identical. + expect(recordedBaseline(cache, "corpus/a/main.ts", edited)).toBeUndefined(); + expect(recordedBaseline(cache, "corpus/b/main.ts", inputs)).toBeUndefined(); + expect(recordedBaseline(null, "corpus/a/main.ts", inputs)).toBeUndefined(); +}); + test("merged gate shards judge compile time and comparisons over every shard", () => { const trees = { baseline: { revision: "a" }, candidate: { revision: "b" } }; const row = (id: string, ratio: number) => ({ From 6beed6cb018288ec02e5762f6a7e2e74615b1af7 Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 20:47:23 -0500 Subject: [PATCH 37/52] Test two inline-cache entries inline at dynamic-tier property sites A dynamic-tier property site tested only the first entry of its cache inline and called scr_js_get_probe (or scr_js_store_probe) for anything else. A site that sees two layouts, such as object literals of one record built in two key orders, then took the out-of-line probe on every access to objects of its second layout. Sites now test the first two entries inline, own or prototype, for reads and replacing writes. The probe still answers the third and fourth entries, misses and everything that is not plain data. --- packages/compiler/src/backend/llvm/js-ic.ts | 11 +++++++---- packages/compiler/test/js-ic-emission.test.ts | 4 ++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/packages/compiler/src/backend/llvm/js-ic.ts b/packages/compiler/src/backend/llvm/js-ic.ts index dc1aeab16..dbd11c155 100644 --- a/packages/compiler/src/backend/llvm/js-ic.ts +++ b/packages/compiler/src/backend/llvm/js-ic.ts @@ -84,10 +84,13 @@ function kindIs(host: Host, d: string, kind: number, yes: string, no: string): v * inline made polymorphic reads 7-10% faster (the design prototype's W2/W3) * and monomorphic method code no faster, for 65-225 more bytes per site; * the prototype hit made method-heavy code 3-6% faster for 15-90 bytes. - * So a site tests entry 0, own or prototype, and its probe does the rest. - * (0 makes every access probe: with a runtime built with SCR_JS_VERIFY, - * that probes every access.) */ -const INLINE_WAYS: number = 1; + * Two entries cover the common two-layout site (object literals of one + * record built in two key orders): on bench:runtime's dynamic-properties + * they made the run 13% faster than one entry, and 26% faster without its + * class instances; four were no faster than two. So a site tests entries + * 0 and 1, own or prototype, and its probe does the rest. (0 makes every access probe: with a runtime + * built with SCR_JS_VERIFY, that probes every access.) */ +const INLINE_WAYS: number = 2; const INLINE_PROTO = true; /** The address of slot `slot` of layout-mode object `d`. */ diff --git a/packages/compiler/test/js-ic-emission.test.ts b/packages/compiler/test/js-ic-emission.test.ts index b350c743d..e0ad8e329 100644 --- a/packages/compiler/test/js-ic-emission.test.ts +++ b/packages/compiler/test/js-ic-emission.test.ts @@ -50,6 +50,10 @@ console.log(read(o), at(dyn([5, 6]), 1), call(o), o.n); ); expect(body(llvm, "read")).toContain("@scr_js_get_probe("); expect(body(llvm, "write")).toContain("@scr_js_store_probe("); + // Reads and writes test the first two entries inline: the second + // starts 40 bytes into the record. + for (const site of ["read", "write"]) + expect(body(llvm, site)).toMatch(/getelementptr inbounds i8, ptr @sc_js_ic_\d+, i64 40$/m); expect(body(llvm, "at")).toContain("@scr_js_keyed_probe("); expect(body(llvm, "call")).toContain("@scr_js_load_probe("); // A compound assignment stores its number result from the jsval: an From 9d0ca5f641547b49fb05625aa9ead0115b8bda97 Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 20:50:23 -0500 Subject: [PATCH 38/52] Give the native layout and metadata emission test 600 seconds The sanitized run of "native LLVM layout and metadata emission (llvm)" takes 170 to 300 seconds in its CI shard beside the shard's other tests, against the suite's 300-second test timeout. On a quiet 8-vCPU machine it takes 130 to 160 seconds. --- tests/harness/self-hosting-emission.test.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/harness/self-hosting-emission.test.ts b/tests/harness/self-hosting-emission.test.ts index 3977ede29..e6364b855 100644 --- a/tests/harness/self-hosting-emission.test.ts +++ b/tests/harness/self-hosting-emission.test.ts @@ -59,7 +59,9 @@ test("the production layout and metadata stage lowers statically", async () => { }); for (const backend of ["llvm"] as const) { - test(`native LLVM layout and metadata emission (${backend})`, async () => { + // The sanitized dev build of the stage takes 170 to 300 s of CI time beside + // its shard's other tests. + test(`native LLVM layout and metadata emission (${backend})`, { timeout: 600_000 }, async () => { const dir = mkdtempSync( join(process.platform === "win32" ? tmpdir() : "/tmp", "scriptc-native-emission-"), ); From 48ccee523e8a96fb2f8e4e30a4d49f2d6141f4ea Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 21:01:36 -0500 Subject: [PATCH 39/52] Allocate template literals at their exact length A template literal of strings and numbers reserved 32 bytes for each number, the longest number text, and kept that capacity for the result's lifetime: an 8-byte name built from two numbers used a 96-byte block. The numbers now format into a stack buffer first, so the result is allocated once at its exact length. --- packages/runtime/src/scr_string.c | 33 +++++++++++++++++--------- packages/runtime/test/string.test.ts | 7 ++++++ packages/runtime/test/test_string.c | 35 ++++++++++++++++++++++++++++ 3 files changed, 64 insertions(+), 11 deletions(-) diff --git a/packages/runtime/src/scr_string.c b/packages/runtime/src/scr_string.c index 548a04fd5..62a155bd1 100644 --- a/packages/runtime/src/scr_string.c +++ b/packages/runtime/src/scr_string.c @@ -706,31 +706,42 @@ static inline size_t scr_utf16_units_short(const char *data, size_t len) { } /* A fresh concatenation (no head, the template-literal shape): numbers - * format straight into the result, which reserves scr_f64_to_str's whole - * 32-byte buffer for each. */ + * format into a stack buffer first, so the result is allocated at its exact + * length. */ #define SCR_F64_TEXT_MAX 32 static __attribute__((noinline)) ScrStr *scr_str_concat_fresh(ScrStr *const *parts, const double *nums, size_t count) { - size_t reserve = 0; + char texts[SCR_STR_MIXED_MAX * SCR_F64_TEXT_MAX]; + size_t text_len[SCR_STR_MIXED_MAX]; + size_t len = 0, used = 0; bool ascii = true; for (size_t i = 0; i < count; i++) { - size_t n = parts[i] ? parts[i]->len : SCR_F64_TEXT_MAX; - if (n > SCR_STR_MAX_CAP - reserve) scr_oom(); - reserve += n; - if (parts[i]) ascii &= parts[i]->ascii; + size_t n; + if (parts[i]) { + n = parts[i]->len; + ascii &= parts[i]->ascii; + } else { + n = scr_f64_to_str(nums[i], texts + used); + text_len[i] = n; + used += n; + } + if (n > SCR_STR_MAX_CAP - len) scr_oom(); + len += n; } - ScrStr *out = scr_str_take_spare(reserve); - if (!out) out = scr_str_alloc(reserve, reserve); + ScrStr *out = scr_str_take_spare(len); + if (!out) out = scr_str_alloc(len, len); char *w = out->data; + const char *text = texts; for (size_t i = 0; i < count; i++) { if (parts[i]) { scr_copy_bytes(w, parts[i]->data, parts[i]->len); w += parts[i]->len; } else { - w += scr_f64_to_str(nums[i], w); + scr_copy_bytes(w, text, text_len[i]); + w += text_len[i]; + text += text_len[i]; } } - size_t len = (size_t)(w - out->data); out->len = len; out->data[len] = '\0'; out->ascii = ascii; diff --git a/packages/runtime/test/string.test.ts b/packages/runtime/test/string.test.ts index 0ca58aaf4..cc6d4fbb6 100644 --- a/packages/runtime/test/string.test.ts +++ b/packages/runtime/test/string.test.ts @@ -88,6 +88,13 @@ test("string methods match Node on committed oracle cases", async () => { expect(r.stderr.trim()).toMatch(/^(\d+)\/\1 cases passed$/); }); +// A template literal of strings and numbers allocates exactly its length: +// numbers format before the result is sized, not into a reserved maximum. +test("template-literal concatenation allocates its exact length", async () => { + const { stderr } = await execFileAsync(bin, ["--concat-capacity"]); + expect(stderr.trim()).toBe("0 concat capacity failures"); +}); + // repeat(count) with count < 0 or Infinity is Node's catchable RangeError // ("Invalid count value: -1"); the runtime leaves it pending. test.each([ diff --git a/packages/runtime/test/test_string.c b/packages/runtime/test/test_string.c index f41c2de50..d0dbebf0d 100644 --- a/packages/runtime/test/test_string.c +++ b/packages/runtime/test/test_string.c @@ -982,7 +982,42 @@ static void ordering_asserts(void) { } } +/* Template-literal concatenations (no head) of strings and numbers: the + * result holds exactly its bytes, whatever the numbers format to. */ +static int check_concat_capacity(void) { + ScrStr *a = scr_str_new("f", 1), *b = scr_str_new("_d", 2), *c = scr_str_new("", 0); + struct { + ScrStr *parts[4]; + double nums[4]; + size_t count; + const char *expected; + } cases[] = { + {{a, NULL, b, NULL}, {0, 7, 0, 2230}, 4, "f7_d2230"}, + {{NULL, a}, {-1.5e-7, 0}, 2, "-1.5e-7f"}, + {{NULL, NULL, NULL}, {1.7976931348623157e308, 0.1, -0.0}, 3, "1.7976931348623157e+3080.10"}, + {{c, NULL, c}, {0, 42, 0}, 3, "42"}, + }; + int failed = 0; + for (size_t i = 0; i < sizeof cases / sizeof cases[0]; i++) { + ScrStr *r = scr_str_concat_mixed(NULL, cases[i].parts, cases[i].nums, cases[i].count); + size_t want = strlen(cases[i].expected); + if (r->len != want || memcmp(r->data, cases[i].expected, want) != 0 || r->data[want] != '\0' || + r->cap != r->len) { + fprintf(stderr, "concat case %zu: got \"%.*s\" len %zu cap %zu, want \"%s\" len %zu\n", i, + (int)r->len, r->data, r->len, (size_t)r->cap, cases[i].expected, want); + failed++; + } + scr_str_release(r); + } + scr_str_release(a); + scr_str_release(b); + scr_str_release(c); + fprintf(stderr, "%d concat capacity failures\n", failed); + return failed != 0; +} + int main(int argc, char **argv) { + if (argc > 1 && strcmp(argv[1], "--concat-capacity") == 0) return check_concat_capacity(); if (argc > 1 && strncmp(argv[1], "--crash-repeat", 14) == 0) { ScrStr *s = scr_str_new("ab", 2); double count = strcmp(argv[1], "--crash-repeat-inf") == 0 From e58def02992880a3a2ee971bd507a42d59a4a9a3 Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 21:04:31 -0500 Subject: [PATCH 40/52] Update tests for the record-ops store hook and the untyped-writes benchmark - forin-keys.test.ts matches the record-ops table with its eighth field, the store hook, which is null for a record no untyped code writes. - bench/record-untyped-writes writes typed records through `unknown` and `Object.assign` views, so it links dynamic-tier symbols; DYNAMIC_WORKLOADS lists it. - The sanitized self-hosting emission test gets a 600 s timeout. It takes about half of the default 300 s on an idle 16-core host, with or without these changes, and exceeded the default on a loaded CI shard. --- packages/compiler/test/forin-keys.test.ts | 2 +- scripts/zero-cost-compare.mjs | 5 ++++- tests/harness/self-hosting-emission.test.ts | 4 +++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/compiler/test/forin-keys.test.ts b/packages/compiler/test/forin-keys.test.ts index b35ff2154..4a8d24c7e 100644 --- a/packages/compiler/test/forin-keys.test.ts +++ b/packages/compiler/test/forin-keys.test.ts @@ -36,7 +36,7 @@ console.log(count(row), count(JSON.parse('{"b":1}'))); expect(llvm).not.toContain("@scr_dyn_for_in_keys("); // Fully required record shapes are marked fixed for the stable walk. expect(llvm).toMatch( - /_rops = internal global \{ i64, ptr, ptr, ptr, i8, ptr, ptr \} \{[^}]*i8 1, ptr null, ptr null \}/, + /_rops = internal global \{ i64, ptr, ptr, ptr, i8, ptr, ptr, ptr \} \{[^}]*i8 1, ptr null, ptr null, ptr null \}/, ); }); diff --git a/scripts/zero-cost-compare.mjs b/scripts/zero-cost-compare.mjs index df407bbb7..b412fa72a 100644 --- a/scripts/zero-cost-compare.mjs +++ b/scripts/zero-cost-compare.mjs @@ -401,7 +401,9 @@ export function dynamicTierSymbols(names) { * bench/dynamic-properties are untyped JavaScript. bench/regex-replacers, * also added later, passes checked-dynamic values to replace callbacks * whose parameters the lib types `any`: captures a match can leave unset - * and results the checker types `any`. Every other bench workload is fully typed and must link none. The gate and + * and results the checker types `any`. bench/record-untyped-writes, also + * added later, writes typed records through `unknown` and `Object.assign` + * views. Every other bench workload is fully typed and must link none. The gate and * tests/harness/bench-dynamic-tier.test.ts enforce that, and the test also * fails when a listed workload stops linking them, so remove a workload here * when a leak fix makes its binary clean. */ @@ -425,6 +427,7 @@ export const DYNAMIC_WORKLOADS = new Set([ "bench/json-unions", "bench/throw-chains", "bench/regex-replacers", + "bench/record-untyped-writes", ]); /** Names of the functions (text and weak symbols) in `nm` output. Mach-O diff --git a/tests/harness/self-hosting-emission.test.ts b/tests/harness/self-hosting-emission.test.ts index 3977ede29..6d27b7851 100644 --- a/tests/harness/self-hosting-emission.test.ts +++ b/tests/harness/self-hosting-emission.test.ts @@ -59,6 +59,8 @@ test("the production layout and metadata stage lowers statically", async () => { }); for (const backend of ["llvm"] as const) { + // A sanitized build of the fixture and its emission cases take about half + // the default 300 s budget on an idle 16-core host. test(`native LLVM layout and metadata emission (${backend})`, async () => { const dir = mkdtempSync( join(process.platform === "win32" ? tmpdir() : "/tmp", "scriptc-native-emission-"), @@ -268,5 +270,5 @@ for (const backend of ["llvm"] as const) { } finally { rmSync(dir, { recursive: true, force: true }); } - }); + }, 600_000); } From 07f159accd4929cbb035f2f8b0bb5a95f05c3600 Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 21:06:07 -0500 Subject: [PATCH 41/52] Fail type checking when the generated IR field readers miss a field fields.generated.ts reads IR nodes' fields by name, so a field ir.ts gains after the last `pnpm generate:ir-fields` is skipped by the walkers until someone regenerates the file; `--check` in CI reports it, but only on the run that looks. The generator now ends the file with type-level checks, one per node kind and per nested record the walkers enumerate: a field outside the list the file was generated from fails type checking with the field's name, and so does a field read as a scalar (no string, no object) that can now hold a string or an object. Fields the file reads already fail type checking when they are removed or change type. The checks are types only and emit no code. --- packages/compiler/src/ir/fields.generated.ts | 249 +++++++++++++++++++ scripts/generate-ir-fields.mjs | 67 ++++- 2 files changed, 309 insertions(+), 7 deletions(-) diff --git a/packages/compiler/src/ir/fields.generated.ts b/packages/compiler/src/ir/fields.generated.ts index e9f5efaa3..86c6a15e5 100644 --- a/packages/compiler/src/ir/fields.generated.ts +++ b/packages/compiler/src/ir/fields.generated.ts @@ -2069,3 +2069,252 @@ export function walkTypeFields(node: IrType, walker: IrFieldWalker, skipType: bo } } } + +/** A field ir.ts declares that this file does not read. */ +type FieldsNotRead = Exclude; +/** The string or object values a field read as a scalar can hold. */ +type ValuesNotRead = Extract, string | object>; +/** Fails type checking unless `T` is never: run `pnpm generate:ir-fields`. */ +type Unread = T; + +/** Every walked object type's fields as ir.ts declared them when this file + * was generated. */ +export type IrFieldsCurrent = [ + Unread, "kind" | "method" | "receiver" | "args" | "type" | "loc">>, + Unread, "kind" | "arr" | "index" | "type" | "loc">>, + Unread, "kind" | "arr" | "index" | "type" | "loc">>, + Unread, "kind" | "elems" | "spreads" | "capacity" | "type" | "loc">>, + Unread["capacity"]>>, + Unread, "kind" | "length" | "type" | "loc">>, + Unread, "kind" | "arr" | "index" | "type" | "loc">>, + Unread, "kind" | "localId" | "value" | "type" | "loc">>, + Unread, "kind" | "value" | "type" | "adopt" | "loc">>, + Unread["adopt"]>>, + Unread, "kind" | "value" | "promiseTag" | "type" | "loc">>, + Unread["promiseTag"]>>, + Unread, "kind" | "op" | "left" | "right" | "type" | "loc">>, + Unread, "kind" | "value" | "type" | "loc">>, + Unread["value"]>>, + Unread, "kind" | "method" | "receiver" | "args" | "type" | "loc" | "invalidNaN">>, + Unread["invalidNaN"]>>, + Unread, "kind" | "source" | "from" | "type" | "loc">>, + Unread["from"]>>, + Unread, "kind" | "callee" | "args" | "type" | "loc">>, + Unread, "kind" | "callee" | "receiver" | "args" | "type" | "loc">>, + Unread, "kind" | "value" | "className" | "type" | "loc">>, + Unread, "kind" | "value" | "type" | "loc">>, + Unread, "kind" | "value" | "test" | "className" | "negated" | "type" | "loc">>, + Unread["negated"]>>, + Unread, "kind" | "value" | "type" | "loc">>, + Unread, "kind" | "id" | "type" | "loc">>, + Unread, "kind" | "className" | "captures" | "type" | "loc">>, + Unread, "kind" | "fnName" | "captures" | "adapts" | "type" | "loc">>, + Unread["adapts"]>>, + Unread, "kind" | "value" | "type" | "loc">>, + Unread, "kind" | "elems" | "type" | "loc">>, + Unread["spreads"]>, readonly unknown[]>[number]>, object>, "arg" | "what">>, + Unread["spreads"]>, readonly unknown[]>[number]>, object>["arg"]>>, + Unread, "kind" | "callee" | "receiver" | "calleeName" | "calleeNameValue" | "args" | "spreads" | "type" | "loc">>, + Unread, "kind" | "value" | "preserveRefs" | "adopt" | "exact" | "inferredSite" | "origin" | "type" | "loc">>, + Unread["preserveRefs"]>>, + Unread["adopt"]>>, + Unread["exact"]>>, + Unread["origin"]>>, + Unread, "kind" | "value" | "spelling" | "firstProp" | "type" | "loc">>, + Unread, "kind" | "value" | "fnName" | "fnLength" | "liveRef" | "type" | "loc">>, + Unread["fnLength"]>>, + Unread["liveRef"]>>, + Unread, "kind" | "key" | "negated" | "value" | "type" | "loc">>, + Unread["negated"]>>, + Unread, "kind" | "recv" | "method" | "calleeName" | "calleeNameValue" | "args" | "type" | "loc">>, + Unread, "kind" | "value" | "count" | "notIterableMessage" | "type" | "loc">>, + Unread["count"]>>, + Unread, "kind" | "key" | "optional" | "value" | "type" | "loc">>, + Unread["optional"]>>, + Unread["fields"]>, readonly unknown[]>[number]>, object>, "key" | "value">>, + Unread, "kind" | "fields" | "type" | "loc">>, + Unread, "kind" | "left" | "right" | "negated" | "type" | "loc">>, + Unread["negated"]>>, + Unread, "kind" | "test" | "bytesElem" | "negated" | "value" | "type" | "loc">>, + Unread["negated"]>>, + Unread, "kind" | "import" | "args" | "type" | "loc">>, + Unread, "kind" | "unionId" | "type" | "loc">>, + Unread, "kind" | "obj" | "className" | "field" | "type" | "loc">>, + Unread, "kind" | "op" | "prefix" | "obj" | "className" | "field" | "fieldDyn" | "type" | "loc">>, + Unread["prefix"]>>, + Unread["fieldDyn"]>>, + Unread, "kind" | "mode" | "gen" | "arg" | "type" | "loc">>, + Unread, "kind" | "op" | "prefix" | "localId" | "type" | "loc">>, + Unread["prefix"]>>, + Unread, "kind" | "value" | "className" | "type" | "loc">>, + Unread, "kind" | "value" | "classValue" | "type" | "loc">>, + Unread, "kind" | "name" | "args" | "type" | "loc">>, + Unread, "kind" | "value" | "indent" | "circular" | "type" | "loc">>, + Unread["circular"]>>, + Unread["assertOptions"]>, object>, "diff" | "skipPrototype">>, + Unread["assertOptions"]>, object>["skipPrototype"]>>, + Unread, "kind" | "fn" | "args" | "type" | "loc" | "prototypeIdentityOnly" | "realTimer" | "assertOptions">>, + Unread["prototypeIdentityOnly"]>>, + Unread["realTimer"]>>, + Unread, "kind" | "op" | "left" | "right" | "type" | "loc">>, + Unread, "kind" | "method" | "receiver" | "args" | "type" | "loc">>, + Unread["seed"]>, readonly unknown[]>[number]>, object>, "key" | "value">>, + Unread, "kind" | "seed" | "type" | "loc">>, + Unread, "kind" | "moduleId" | "type" | "loc">>, + Unread, "kind" | "className" | "args" | "type" | "loc">>, + Unread, "kind" | "executor" | "type" | "loc">>, + Unread, "kind" | "callee" | "args" | "type" | "loc">>, + Unread, "kind" | "left" | "right" | "type" | "loc">>, + Unread, "kind" | "value" | "spelling" | "type" | "loc">>, + Unread["value"]>>, + Unread, "kind" | "id" | "receiver" | "body" | "type" | "loc">>, + Unread, "kind" | "left" | "right" | "retag" | "type" | "loc">>, + Unread, "kind" | "value" | "type" | "loc">>, + Unread, "kind" | "type" | "loc">>, + Unread["overrides"]>, readonly unknown[]>[number]>, object>, "name" | "value">>, + Unread, "kind" | "source" | "overrides" | "type" | "loc">>, + Unread, "kind" | "obj" | "shapeId" | "field" | "type" | "loc">>, + Unread, "kind" | "obj" | "shapeId" | "field" | "type" | "loc">>, + Unread, "kind" | "obj" | "shapeId" | "key" | "overflowOnly" | "missNaN" | "type" | "loc">>, + Unread["overflowOnly"]>>, + Unread["missNaN"]>>, + Unread["fields"]>, readonly unknown[]>[number]>, object>, "name" | "value" | "overflow">>, + Unread["fields"]>, readonly unknown[]>[number]>, object>["overflow"]>>, + Unread, "kind" | "fields" | "nullProto" | "type" | "loc">>, + Unread["nullProto"]>>, + Unread, "kind" | "obj" | "shapeId" | "type" | "loc">>, + Unread, "kind" | "obj" | "shapeId" | "key" | "type" | "loc">>, + Unread, "kind" | "obj" | "shapeId" | "type" | "loc">>, + Unread, "kind" | "method" | "receiver" | "args" | "type" | "loc">>, + Unread, "kind" | "pattern" | "flags" | "type" | "loc">>, + Unread, "kind" | "type" | "loc">>, + Unread, "kind" | "stmts" | "result" | "generatorDelegate" | "diverges" | "type" | "loc">>, + Unread["generatorDelegate"]>>, + Unread["diverges"]>>, + Unread, "kind" | "method" | "receiver" | "args" | "type" | "loc">>, + Unread, "kind" | "seed" | "type" | "loc">>, + Unread, "kind" | "op" | "left" | "right" | "type" | "loc">>, + Unread, "kind" | "left" | "right" | "type" | "loc">>, + Unread, "kind" | "negated" | "left" | "right" | "type" | "loc">>, + Unread["negated"]>>, + Unread, "kind" | "method" | "receiver" | "args" | "type" | "loc">>, + Unread, "kind" | "value" | "type" | "loc">>, + Unread, "kind" | "key" | "cooked" | "type" | "loc">>, + Unread, "kind" | "cond" | "then" | "else_" | "type" | "loc">>, + Unread, "kind" | "operand" | "type" | "loc">>, + Unread, "kind" | "operand" | "type" | "loc">>, + Unread, "kind" | "op" | "operand" | "type" | "loc">>, + Unread, "kind" | "unionId" | "field" | "value" | "type" | "loc">>, + Unread, "kind" | "unionId" | "negated" | "sameValue" | "left" | "right" | "type" | "loc">>, + Unread["negated"]>>, + Unread["sameValue"]>>, + Unread, "kind" | "unionId" | "tag" | "union" | "func" | "negated" | "type" | "loc">>, + Unread["tag"]>>, + Unread["negated"]>>, + Unread, "kind" | "unionId" | "tag" | "negated" | "value" | "type" | "loc">>, + Unread["tag"]>>, + Unread["negated"]>>, + Unread, "kind" | "unionId" | "key" | "value" | "type" | "loc">>, + Unread, "kind" | "unionId" | "tag" | "value" | "type" | "loc">>, + Unread["tag"]>>, + Unread, "kind" | "fromId" | "unionId" | "tags" | "value" | "type" | "loc">>, + Unread, "kind" | "unionId" | "tag" | "value" | "type" | "loc">>, + Unread["tag"]>>, + Unread, "kind" | "unit" | "type" | "loc">>, + Unread, "kind" | "value" | "type" | "loc">>, + Unread, "kind" | "localId" | "type" | "loc">>, + Unread, "kind" | "className" | "method" | "args" | "type" | "loc" | "targets">>, + Unread["captureCompletion"]>, object>, "returnType">>, + Unread, "kind" | "value" | "awaited" | "delegated" | "captureCompletion" | "type" | "loc">>, + Unread["awaited"]>>, + Unread["delegated"]>>, + Unread, "kind" | "arr" | "index" | "loc">>, + Unread, "kind" | "arr" | "index" | "value" | "loc">>, + Unread, "kind" | "arr" | "length" | "loc" | "pop" | "reserve">>, + Unread["pop"]>>, + Unread["reserve"]>>, + Unread, "kind" | "arr" | "index" | "loc">>, + Unread, "kind" | "localId" | "value" | "initializes" | "loc">>, + Unread["initializes"]>>, + Unread, "kind" | "body" | "labels" | "loc">>, + Unread, "kind" | "label" | "loc">>, + Unread, "kind" | "arr" | "index" | "value" | "loc">>, + Unread, "kind" | "label" | "loc">>, + Unread, "kind" | "body" | "cond" | "labels" | "loc">>, + Unread, "kind" | "expr" | "loc">>, + Unread, "kind" | "obj" | "className" | "field" | "value" | "sloppy" | "define" | "attributesChecked" | "loc">>, + Unread["sloppy"]>>, + Unread["define"]>>, + Unread["attributesChecked"]>>, + Unread, "kind" | "init" | "cond" | "update" | "body" | "labels" | "loc">>, + Unread, "kind" | "localId" | "iterable" | "body" | "labels" | "loc">>, + Unread, "kind" | "cond" | "then" | "else_" | "loc">>, + Unread, "kind" | "obj" | "shapeId" | "key" | "loc">>, + Unread, "kind" | "obj" | "shapeId" | "key" | "value" | "overflowOnly" | "loc">>, + Unread["overflowOnly"]>>, + Unread, "kind" | "obj" | "shapeId" | "field" | "value" | "loc">>, + Unread, "kind" | "localId" | "loc">>, + Unread, "kind" | "value" | "awaited" | "loc">>, + Unread["awaited"]>>, + Unread, "kind" | "code" | "message" | "loc">>, + Unread["cases"]>, readonly unknown[]>[number]>, object>, "test" | "body">>, + Unread, "kind" | "disc" | "cases" | "labels" | "loc">>, + Unread, "kind" | "value" | "loc">>, + Unread, "kind" | "tryBody" | "catchBody" | "catchLocalId" | "finallyBody" | "suppressFinallyErrors" | "dropFinallyErrors" | "loc">>, + Unread["suppressFinallyErrors"]>>, + Unread["dropFinallyErrors"]>>, + Unread, "kind" | "localId" | "init" | "loc">>, + Unread, "kind" | "cond" | "body" | "labels" | "loc">>, + Unread, "kind" | "elem" | "optionalElements">>, + Unread["optionalElements"]>>, + Unread, "kind">>, + Unread, "kind">>, + Unread, "kind" | "elem">>, + Unread, "kind">>, + Unread, "kind">>, + Unread, "kind">>, + Unread, "kind">>, + Unread, "kind" | "className">>, + Unread, "kind">>, + Unread, "kind">>, + Unread, "kind">>, + Unread, "kind">>, + Unread, "kind">>, + Unread, "kind">>, + Unread, "kind">>, + Unread, "kind">>, + Unread, "kind">>, + Unread, "kind" | "params" | "ret" | "rest" | "restAbi" | "argumentsAll">>, + Unread["rest"]>>, + Unread["argumentsAll"]>>, + Unread, "kind" | "async" | "yieldT" | "retT" | "nextT">>, + Unread["async"]>>, + Unread, "kind">>, + Unread, "kind">>, + Unread, "kind">>, + Unread, "kind">>, + Unread, "kind">>, + Unread, "kind">>, + Unread, "kind" | "key" | "value">>, + Unread, "kind" | "moduleId">>, + Unread, "kind">>, + Unread, "kind">>, + Unread, "kind">>, + Unread, "kind" | "className">>, + Unread, "kind">>, + Unread, "kind" | "inner">>, + Unread, "kind" | "shapeId">>, + Unread, "kind">>, + Unread, "kind">>, + Unread, "kind">>, + Unread, "kind" | "elem">>, + Unread, "kind">>, + Unread, "kind">>, + Unread, "kind">>, + Unread, "kind">>, + Unread, "kind">>, + Unread, "kind">>, + Unread, "kind" | "unionId">>, + Unread, "kind">>, + Unread, "kind">>, +]; diff --git a/scripts/generate-ir-fields.mjs b/scripts/generate-ir-fields.mjs index 5b5ad011a..037cb615d 100644 --- a/scripts/generate-ir-fields.mjs +++ b/scripts/generate-ir-fields.mjs @@ -105,9 +105,23 @@ function irKind(type) { } let temp = 0; -/** Lines that walk `expr` of `type`: strings to `walker.string`, IR nodes to - * their walkers, arrays by element and other objects by field. */ -function walkLines(expr, type, indent, depth) { +/** The fields each walked object type declares, for the type-level check at + * the end of the file: `typeExpr` names the object type, `fields` every + * field it had when the file was generated and `scalars` the fields that held + * no string and no object then. */ +const checks = []; +/** Records `property list` of `object` (named `typeExpr`) for the check. */ +function noteFields(typeExpr, properties, scalarNames) { + checks.push({ + typeExpr, + fields: properties.map((property) => property.name), + scalars: scalarNames, + }); +} +/** Lines that walk `expr` of `type` (named `typeExpr` in the generated file): + * strings to `walker.string`, IR nodes to their walkers, arrays by element and + * other objects by field. */ +function walkLines(expr, type, typeExpr, indent, depth) { if (depth > 12) throw new Error(`field type nests too deep at ${expr}`); const parts = type.isUnion() ? type.types : [type]; const present = parts.filter((part) => (part.flags & nullish) === 0); @@ -127,19 +141,28 @@ function walkLines(expr, type, indent, depth) { if (objects.length !== 1) throw new Error(`several array types at ${expr}`); const item = `item${temp++}`; body.push(`for (const ${item} of ${expr}) {`); - body.push(...walkLines(item, checker.getTypeArguments(objects[0])[0], " ", depth + 1)); + const itemType = `Extract, readonly unknown[]>[number]`; + body.push( + ...walkLines(item, checker.getTypeArguments(objects[0])[0], itemType, " ", depth + 1), + ); body.push("}"); } else if (kinds.has(null) && objects.length === 1) { - for (const property of checker.getPropertiesOfType(objects[0])) { + const recordType = `Extract, object>`; + const properties = checker.getPropertiesOfType(objects[0]); + const scalarNames = []; + for (const property of properties) { if (property.name === "loc") continue; const fieldType = checker.getTypeOfSymbol(property); const field = `${expr}.${property.name}`; - const lines = walkLines(field, fieldType, "", depth + 1); + const fieldTypeExpr = `${recordType}[${JSON.stringify(property.name)}]`; + const lines = walkLines(field, fieldType, fieldTypeExpr, "", depth + 1); + if (lines.length === 0) scalarNames.push(property.name); if (lines.length === 0) continue; if (property.name === "type") body.push("if (!skipType) {", ...lines.map((l) => ` ${l}`), "}"); else body.push(...lines); } + noteFields(recordType, properties, scalarNames); } else throw new Error(`mixed object types at ${expr}: ${checker.typeToString(type)}`); } let lines = body; @@ -193,20 +216,50 @@ for (const name of ["IrExpr", "IrStmt", "IrType"]) { } for (const [kind, member] of [...byKind].sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0))) { lines.push(` case ${JSON.stringify(kind)}: {`); + const memberType = `Extract<${name}, { kind: ${JSON.stringify(kind)} }>`; + const scalarNames = []; for (const property of member.getProperties()) { if (property.name === "loc") continue; const fieldType = checker.getTypeOfSymbol(property); const field = `node.${property.name}`; - const walk = walkLines(field, fieldType, "", 0); + const fieldTypeExpr = `${memberType}[${JSON.stringify(property.name)}]`; + const walk = walkLines(field, fieldType, fieldTypeExpr, "", 0); + if (walk.length === 0) scalarNames.push(property.name); if (walk.length === 0) continue; if (property.name === "type") lines.push(" if (!skipType) {", ...walk.map((l) => ` ${l}`), " }"); else lines.push(...walk.map((l) => ` ${l}`)); } lines.push(" return;", " }"); + noteFields(memberType, member.getProperties(), scalarNames); } lines.push(" }", "}", ""); } + +// Type checking fails below when ir.ts gives a walked object a field this +// file does not know, or lets a field that held no string and no object hold +// one before this file is regenerated. +const quoted = (names) => names.map((name) => JSON.stringify(name)).join(" | "); +lines.push( + "/** A field ir.ts declares that this file does not read. */", + "type FieldsNotRead = Exclude;", + "/** The string or object values a field read as a scalar can hold. */", + "type ValuesNotRead = Extract, string | object>;", + "/** Fails type checking unless `T` is never: run `pnpm generate:ir-fields`. */", + "type Unread = T;", + "", + "/** Every walked object type's fields as ir.ts declared them when this file", + " * was generated. */", + "export type IrFieldsCurrent = [", +); +for (const { typeExpr, fields, scalars } of checks) { + lines.push( + ` Unread 0 ? quoted(fields) : "never"}>>,`, + ); + for (const scalarName of scalars) + lines.push(` Unread>,`); +} +lines.push("];", ""); const text = lines.join("\n"); if (process.argv.includes("--check")) { From e4fe30e08446700fe21983937b6570744ee52d4b Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 21:16:15 -0500 Subject: [PATCH 42/52] Leave out a header the compiler rejects in the implicit toolchain probe The implicit toolchain probe preprocesses every system header that the runtime and vendored sources spell in one source file. When the compiler rejected one of them, the whole probe failed, and the build continued without the native cache and without program sharding. When the compiler rejects the probe source, each header is now preprocessed on its own, and a header that the compiler rejects on its own is left out of the dependency set, as an absent header is. The probe still fails when the compiler rejects every header. --- .../src/backend/native-toolchain.test.ts | 25 ++++++++ .../backend/native/compiler-fingerprint.ts | 61 +++++++++++++++---- 2 files changed, 73 insertions(+), 13 deletions(-) diff --git a/packages/compiler/src/backend/native-toolchain.test.ts b/packages/compiler/src/backend/native-toolchain.test.ts index 8fb86d4af..699847a2a 100644 --- a/packages/compiler/src/backend/native-toolchain.test.ts +++ b/packages/compiler/src/backend/native-toolchain.test.ts @@ -39,6 +39,8 @@ import { warmNativeCaches, } from "./native-toolchain.js"; import { splitLlvmProgram } from "./llvm/split.js"; +import { implicitToolchainFingerprints } from "./native/compiler-fingerprint.js"; +import { fingerprintDependencyPaths } from "./native/dependency-files.js"; const scratch: string[] = []; const TEST_CACHE_IDENTITY = "cc-cache-tests-v1"; @@ -672,6 +674,29 @@ test.skipIf(clangExecutable === undefined)( }, ); +test.skipIf(clangExecutable === undefined)( + "the implicit toolchain probe leaves out a header the compiler rejects", + async () => { + // A system header that the runtime spells, shadowed by one that is an + // #error, as clang 18's is outside RISC-V. The probe + // still covers the other headers. + const dir = await mkdtemp(join(tmpdir(), "scriptc-probe-header-")); + scratch.push(dir); + await mkdir(join(dir, "sys")); + const rejected = join(dir, "sys", "auxv.h"); + await writeFile(rejected, '#error "not for this target"\n'); + const includes = await implicitDependencyProbeIncludes(runtimeSrcDir()); + expect(includes).toContain(""); + const fingerprints = await implicitToolchainFingerprints( + { argv: [clangExecutable!, "-isystem", dir], targetArgs: [], target: null }, + "probe-rejected-header", + ); + const dependencies = fingerprintDependencyPaths(fingerprints.complete); + expect(dependencies).not.toContain(rejected); + expect(dependencies.some((path) => path.endsWith("/stdatomic.h"))).toBe(true); + }, +); + test.skipIf( process.platform === "win32" || clangExecutable === undefined || diff --git a/packages/compiler/src/backend/native/compiler-fingerprint.ts b/packages/compiler/src/backend/native/compiler-fingerprint.ts index 4be20a4d0..3df6cb449 100644 --- a/packages/compiler/src/backend/native/compiler-fingerprint.ts +++ b/packages/compiler/src/backend/native/compiler-fingerprint.ts @@ -399,11 +399,8 @@ async function implicitToolchainFingerprintsFresh( ]; const [dependencyResults, linker, assembler, compilerInvocation] = await Promise.all([ Promise.all( - sources.map((source) => - execFileAsync(compiler, [...probeArgs, source], { - cwd: probeDir, - maxBuffer: 16 * 1024 * 1024, - }), + sources.map((source, index) => + probeIncludeDependencies(compiler, probeArgs, probeDir, source, sourceGroups[index]!), ), ), execFileAsync(compiler, [...prefix, "-print-prog-name=ld"], { cwd: probeDir }), @@ -423,14 +420,7 @@ async function implicitToolchainFingerprintsFresh( const toolSpellings = [linker.stdout.trim(), assemblerSpelling].filter( (value, index, all) => value !== "" && all.indexOf(value) === index, ); - const sourceSet = new Set(sources); - const dependencyPaths = [ - ...new Set( - dependencyResults - .flatMap((dependencies) => parseMakeDependencies(dependencies.stdout)) - .filter((path) => !sourceSet.has(path)), - ), - ].sort(); + const dependencyPaths = [...new Set(dependencyResults.flat())].sort(); probe = { compilerIdentity: compilerIdentity ?? `\0${compiler}`, compilerInvocation: normalizedProbeInvocation(compilerInvocation, probeDir), @@ -513,6 +503,51 @@ async function implicitToolchainFingerprintsFresh( }; } +/** Headers the dependency probe preprocesses at a time when it probes them + * one by one. */ +const SINGLE_HEADER_PROBES = 8; + +/** The files the compiler reads to preprocess `source`, a probe source that + * includes `includes`, apart from the probe's own sources. When the compiler + * rejects `source`, for example for a header it finds that is an #error + * outside its target ( through clang 18 without the RISC-V + * vector extension), each header is preprocessed on its own, and a header + * that the compiler rejects on its own is left out, as an absent one is. + * Throws the compiler's error when it rejects every header. */ +async function probeIncludeDependencies( + compiler: string, + probeArgs: readonly string[], + probeDir: string, + source: string, + includes: readonly string[], +): Promise { + const dependencies = async (path: string): Promise => { + const result = await execFileAsync(compiler, [...probeArgs, path], { + cwd: probeDir, + maxBuffer: 16 * 1024 * 1024, + }); + return parseMakeDependencies(result.stdout).filter((dependency) => dependency !== path); + }; + try { + return await dependencies(source); + } catch (error) { + const found: string[][] = []; + for (let start = 0; start < includes.length; start += SINGLE_HEADER_PROBES) { + const batch = includes.slice(start, start + SINGLE_HEADER_PROBES); + const results = await Promise.all( + batch.map(async (include, offset) => { + const single = `${source.slice(0, -2)}-${start + offset}.c`; + await writeFile(single, implicitDependencyIncludeDirective(include)); + return dependencies(single).catch(() => null); + }), + ); + for (const result of results) if (result !== null) found.push(result); + } + if (found.length === 0) throw error; + return found.flat(); + } +} + const stableImplicitToolchainMemos = new Map>(); export function implicitToolchainFingerprints( driver: Pick, From 2c09b499b25394ee3a6f04c8246f798b09344020 Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 21:18:38 -0500 Subject: [PATCH 43/52] Check a nested record of scalar fields by its own fields The generator listed a field as a scalar when its walk read nothing, so a nested record holding only numbers and booleans got a ValuesNotRead check on the record itself, which fails because the record is an object, even after regenerating. A field is now listed as a scalar only when its type holds no string and no object; such a record is checked through its own fields, so a field added to it or a scalar in it that starts to hold a string still fails type checking with its name. The generator exports generateIrFields(irText) for the new test, which generates the readers for an ir.ts with such a record and type-checks them. The generated file for the current ir.ts is unchanged. --- scripts/generate-ir-fields.mjs | 506 ++++++++++++---------- tests/harness/ir-fields-generator.test.ts | 60 +++ 2 files changed, 327 insertions(+), 239 deletions(-) create mode 100644 tests/harness/ir-fields-generator.test.ts diff --git a/scripts/generate-ir-fields.mjs b/scripts/generate-ir-fields.mjs index 037cb615d..95ce5d217 100644 --- a/scripts/generate-ir-fields.mjs +++ b/scripts/generate-ir-fields.mjs @@ -14,255 +14,283 @@ const require = createRequire(join(root, "package.json")); const ts = require("typescript"); const irPath = join(root, "packages/compiler/src/ir/ir.ts"); const target = join(root, "packages/compiler/src/ir/fields.generated.ts"); +const samePath = (a, b) => a.replace(/\\/g, "/") === b.replace(/\\/g, "/"); -const program = ts.createProgram([irPath], { strict: true, target: ts.ScriptTarget.ES2022 }); -const checker = program.getTypeChecker(); -const source = program.getSourceFile(irPath); -const aliases = new Map(); -ts.forEachChild(source, (node) => { - if (ts.isTypeAliasDeclaration(node)) aliases.set(node.name.text, node); -}); - -/** Whether a value of `type` can be a string. */ -function holdsString(type) { - if (type.isUnion()) return type.types.some(holdsString); - return (type.flags & (ts.TypeFlags.StringLike | ts.TypeFlags.Any | ts.TypeFlags.Unknown)) !== 0; -} - -/** Whether every value of `type` is a string. */ -function onlyString(type) { - if (type.isUnion()) return type.types.every(onlyString); - return (type.flags & ts.TypeFlags.StringLike) !== 0; -} - -/** Each kind's string fields, in declaration order, merged over the unions: - * a kind both unions declare lists the fields of both. */ -const kinds = new Map(); -for (const name of ["IrExpr", "IrStmt"]) { - const alias = aliases.get(name); - const union = checker.getTypeAtLocation(alias.name); - for (const member of union.isUnion() ? union.types : [union]) { - const kindSymbol = member.getProperty("kind"); - const kindType = checker.getTypeOfSymbolAtLocation(kindSymbol, alias); - if (!kindType.isStringLiteral()) throw new Error(`${name} member without a literal kind`); - const fields = kinds.get(kindType.value) ?? []; - for (const property of member.getProperties()) { - const type = checker.getTypeOfSymbolAtLocation(property, alias); - if (!holdsString(type)) continue; - const known = fields.find((field) => field.name === property.name); - const always = onlyString(type) && (property.flags & ts.SymbolFlags.Optional) === 0; - if (known === undefined) fields.push({ name: property.name, always }); - else known.always &&= always; - } - kinds.set(kindType.value, fields); - } -} - -const lines = [ - "// Generated from packages/compiler/src/ir/ir.ts by scripts/generate-ir-fields.mjs.", - "// Run `pnpm generate:ir-fields` after changing the fields of an IR node.", - 'import type { IrExpr, IrStmt, IrType } from "./ir.js";', - "", - "/** Calls `visit` with each string field of `node` (including `kind`) and its", - " * name: the string values `for (const key in node)` finds on a node, read", - " * by name in the order ir.ts declares them. */", - "export function eachStringField(", - " node: IrExpr | IrStmt,", - " visit: (value: string, field: string) => void,", - "): void {", - " switch (node.kind) {", -]; -for (const [kind, fields] of [...kinds].sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0))) { - lines.push(` case ${JSON.stringify(kind)}: {`); - for (const { name, always } of fields) { - const read = `node.${name}`; - if (always) lines.push(` visit(${read}, ${JSON.stringify(name)});`); - else - lines.push(` if (typeof ${read} === "string") visit(${read}, ${JSON.stringify(name)});`); - } - lines.push(" return;", " }"); -} -lines.push(" }", "}", ""); - -// The deep walkers: every field of every object under an IR node, as a -// recursive key walk finds them, read by name. -const members = new Map(); -for (const name of ["IrExpr", "IrStmt", "IrType"]) { - const union = checker.getTypeAtLocation(aliases.get(name).name); - members.set(name, new Set(union.isUnion() ? union.types : [union])); -} -const nullish = ts.TypeFlags.Null | ts.TypeFlags.Undefined | ts.TypeFlags.Void; -const scalar = - ts.TypeFlags.NumberLike | - ts.TypeFlags.BooleanLike | - ts.TypeFlags.BigIntLike | - ts.TypeFlags.ESSymbolLike; - -/** The walker an IR union member belongs to, or null. */ -function irKind(type) { - for (const [name, set] of members) if (set.has(type)) return name; - return null; -} - -let temp = 0; -/** The fields each walked object type declares, for the type-level check at - * the end of the file: `typeExpr` names the object type, `fields` every - * field it had when the file was generated and `scalars` the fields that held - * no string and no object then. */ -const checks = []; -/** Records `property list` of `object` (named `typeExpr`) for the check. */ -function noteFields(typeExpr, properties, scalarNames) { - checks.push({ - typeExpr, - fields: properties.map((property) => property.name), - scalars: scalarNames, +/** The text of fields.generated.ts for `irText`, the source of ir.ts. */ +export function generateIrFields(irText = readFileSync(irPath, "utf8")) { + const options = { strict: true, target: ts.ScriptTarget.ES2022 }; + const host = ts.createCompilerHost(options); + const readSourceFile = host.getSourceFile; + // ir.ts is read from `irText`; the files it imports from disk. + host.getSourceFile = (file, languageVersion, ...rest) => + samePath(file, irPath) + ? ts.createSourceFile(file, irText, languageVersion) + : readSourceFile.call(host, file, languageVersion, ...rest); + const program = ts.createProgram([irPath], options, host); + const checker = program.getTypeChecker(); + const source = program.getSourceFile(irPath); + const aliases = new Map(); + ts.forEachChild(source, (node) => { + if (ts.isTypeAliasDeclaration(node)) aliases.set(node.name.text, node); }); -} -/** Lines that walk `expr` of `type` (named `typeExpr` in the generated file): - * strings to `walker.string`, IR nodes to their walkers, arrays by element and - * other objects by field. */ -function walkLines(expr, type, typeExpr, indent, depth) { - if (depth > 12) throw new Error(`field type nests too deep at ${expr}`); - const parts = type.isUnion() ? type.types : [type]; - const present = parts.filter((part) => (part.flags & nullish) === 0); - const optional = present.length !== parts.length; - const strings = present.filter((part) => (part.flags & ts.TypeFlags.StringLike) !== 0); - const objects = present.filter((part) => (part.flags & (ts.TypeFlags.StringLike | scalar)) === 0); - for (const part of present) - if ((part.flags & (ts.TypeFlags.Any | ts.TypeFlags.Unknown)) !== 0) - throw new Error(`untyped field ${expr}`); - const body = []; - if (objects.length > 0) { - const kinds = new Set(objects.map(irKind)); - if (kinds.size === 1 && !kinds.has(null)) { - const [kind] = kinds; - body.push(`walk${kind.slice(2)}Fields(${expr}, walker, skipType);`); - } else if (objects.every((part) => checker.isArrayType(part))) { - if (objects.length !== 1) throw new Error(`several array types at ${expr}`); - const item = `item${temp++}`; - body.push(`for (const ${item} of ${expr}) {`); - const itemType = `Extract, readonly unknown[]>[number]`; - body.push( - ...walkLines(item, checker.getTypeArguments(objects[0])[0], itemType, " ", depth + 1), - ); - body.push("}"); - } else if (kinds.has(null) && objects.length === 1) { - const recordType = `Extract, object>`; - const properties = checker.getPropertiesOfType(objects[0]); - const scalarNames = []; - for (const property of properties) { - if (property.name === "loc") continue; - const fieldType = checker.getTypeOfSymbol(property); - const field = `${expr}.${property.name}`; - const fieldTypeExpr = `${recordType}[${JSON.stringify(property.name)}]`; - const lines = walkLines(field, fieldType, fieldTypeExpr, "", depth + 1); - if (lines.length === 0) scalarNames.push(property.name); - if (lines.length === 0) continue; - if (property.name === "type") - body.push("if (!skipType) {", ...lines.map((l) => ` ${l}`), "}"); - else body.push(...lines); - } - noteFields(recordType, properties, scalarNames); - } else throw new Error(`mixed object types at ${expr}: ${checker.typeToString(type)}`); - } - let lines = body; - if (strings.length > 0 && objects.length > 0) - lines = [ - `if (typeof ${expr} === "string") walker.string(${expr});`, - ...(body.length > 0 ? [`else {`, ...body.map((l) => ` ${l}`), "}"] : []), - ]; - else if (strings.length > 0) lines = [`walker.string(${expr});`]; - if (lines.length > 0 && optional && !(strings.length > 0 && objects.length > 0)) - lines = [ - `if (${expr} !== undefined && ${expr} !== null) {`, - ...lines.map((l) => ` ${l}`), - "}", - ]; - else if (lines.length > 0 && optional) - lines = [ - `if (${expr} !== undefined && ${expr} !== null) {`, - ...lines.map((l) => ` ${l}`), - "}", - ]; - return lines.map((line) => indent + line); -} -lines.push( - "/** What a field walk reports (walkExprFields): each expression and", - " * statement node before its fields, and each string a field holds. */", - "export interface IrFieldWalker {", - " node(node: IrExpr | IrStmt): void;", - " string(value: string): void;", - "}", - "", -); -for (const name of ["IrExpr", "IrStmt", "IrType"]) { - const short = name.slice(2); - const nodeCall = name === "IrType" ? [] : [" walker.node(node);"]; - lines.push( - `/** Walks every field of \`node\` but \`loc\` (and \`type\` with \`skipType\`), and`, - " * every field of each object under it: the strings and nodes a recursive", - " * `for (const key in value)` walk with the same skips finds, read by name in", - " * the order ir.ts declares the fields. */", - `export function walk${short}Fields(node: ${name}, walker: IrFieldWalker, skipType: boolean): void {`, - ...nodeCall, - " switch (node.kind) {", - ); - const byKind = new Map(); - for (const member of members.get(name)) { - const kind = checker.getTypeOfSymbol(member.getProperty("kind")).value; - if (byKind.has(kind)) throw new Error(`${name} kind ${kind} declared twice`); - byKind.set(kind, member); + /** Whether a value of `type` can be a string. */ + function holdsString(type) { + if (type.isUnion()) return type.types.some(holdsString); + return (type.flags & (ts.TypeFlags.StringLike | ts.TypeFlags.Any | ts.TypeFlags.Unknown)) !== 0; } - for (const [kind, member] of [...byKind].sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0))) { + + /** Whether every value of `type` is a string. */ + function onlyString(type) { + if (type.isUnion()) return type.types.every(onlyString); + return (type.flags & ts.TypeFlags.StringLike) !== 0; + } + + /** Each kind's string fields, in declaration order, merged over the unions: + * a kind both unions declare lists the fields of both. */ + const kinds = new Map(); + for (const name of ["IrExpr", "IrStmt"]) { + const alias = aliases.get(name); + const union = checker.getTypeAtLocation(alias.name); + for (const member of union.isUnion() ? union.types : [union]) { + const kindSymbol = member.getProperty("kind"); + const kindType = checker.getTypeOfSymbolAtLocation(kindSymbol, alias); + if (!kindType.isStringLiteral()) throw new Error(`${name} member without a literal kind`); + const fields = kinds.get(kindType.value) ?? []; + for (const property of member.getProperties()) { + const type = checker.getTypeOfSymbolAtLocation(property, alias); + if (!holdsString(type)) continue; + const known = fields.find((field) => field.name === property.name); + const always = onlyString(type) && (property.flags & ts.SymbolFlags.Optional) === 0; + if (known === undefined) fields.push({ name: property.name, always }); + else known.always &&= always; + } + kinds.set(kindType.value, fields); + } + } + + const lines = [ + "// Generated from packages/compiler/src/ir/ir.ts by scripts/generate-ir-fields.mjs.", + "// Run `pnpm generate:ir-fields` after changing the fields of an IR node.", + 'import type { IrExpr, IrStmt, IrType } from "./ir.js";', + "", + "/** Calls `visit` with each string field of `node` (including `kind`) and its", + " * name: the string values `for (const key in node)` finds on a node, read", + " * by name in the order ir.ts declares them. */", + "export function eachStringField(", + " node: IrExpr | IrStmt,", + " visit: (value: string, field: string) => void,", + "): void {", + " switch (node.kind) {", + ]; + for (const [kind, fields] of [...kinds].sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0))) { lines.push(` case ${JSON.stringify(kind)}: {`); - const memberType = `Extract<${name}, { kind: ${JSON.stringify(kind)} }>`; - const scalarNames = []; - for (const property of member.getProperties()) { - if (property.name === "loc") continue; - const fieldType = checker.getTypeOfSymbol(property); - const field = `node.${property.name}`; - const fieldTypeExpr = `${memberType}[${JSON.stringify(property.name)}]`; - const walk = walkLines(field, fieldType, fieldTypeExpr, "", 0); - if (walk.length === 0) scalarNames.push(property.name); - if (walk.length === 0) continue; - if (property.name === "type") - lines.push(" if (!skipType) {", ...walk.map((l) => ` ${l}`), " }"); - else lines.push(...walk.map((l) => ` ${l}`)); + for (const { name, always } of fields) { + const read = `node.${name}`; + if (always) lines.push(` visit(${read}, ${JSON.stringify(name)});`); + else + lines.push( + ` if (typeof ${read} === "string") visit(${read}, ${JSON.stringify(name)});`, + ); } lines.push(" return;", " }"); - noteFields(memberType, member.getProperties(), scalarNames); } lines.push(" }", "}", ""); -} -// Type checking fails below when ir.ts gives a walked object a field this -// file does not know, or lets a field that held no string and no object hold -// one before this file is regenerated. -const quoted = (names) => names.map((name) => JSON.stringify(name)).join(" | "); -lines.push( - "/** A field ir.ts declares that this file does not read. */", - "type FieldsNotRead = Exclude;", - "/** The string or object values a field read as a scalar can hold. */", - "type ValuesNotRead = Extract, string | object>;", - "/** Fails type checking unless `T` is never: run `pnpm generate:ir-fields`. */", - "type Unread = T;", - "", - "/** Every walked object type's fields as ir.ts declared them when this file", - " * was generated. */", - "export type IrFieldsCurrent = [", -); -for (const { typeExpr, fields, scalars } of checks) { + // The deep walkers: every field of every object under an IR node, as a + // recursive key walk finds them, read by name. + const members = new Map(); + for (const name of ["IrExpr", "IrStmt", "IrType"]) { + const union = checker.getTypeAtLocation(aliases.get(name).name); + members.set(name, new Set(union.isUnion() ? union.types : [union])); + } + const nullish = ts.TypeFlags.Null | ts.TypeFlags.Undefined | ts.TypeFlags.Void; + const scalar = + ts.TypeFlags.NumberLike | + ts.TypeFlags.BooleanLike | + ts.TypeFlags.BigIntLike | + ts.TypeFlags.ESSymbolLike; + + /** Whether every value of `type` is a number, boolean, bigint, symbol, null + * or undefined. A record of such fields walks to nothing too, but it is an + * object: its own fields are checked instead. */ + function onlyScalar(type) { + const parts = type.isUnion() ? type.types : [type]; + return parts.every((part) => (part.flags & (scalar | nullish)) !== 0); + } + + /** The walker an IR union member belongs to, or null. */ + function irKind(type) { + for (const [name, set] of members) if (set.has(type)) return name; + return null; + } + + let temp = 0; + /** The fields each walked object type declares, for the type-level check at + * the end of the file: `typeExpr` names the object type, `fields` every + * field it had when the file was generated and `scalars` the fields that held + * no string and no object then. */ + const checks = []; + /** Records `property list` of `object` (named `typeExpr`) for the check. */ + function noteFields(typeExpr, properties, scalarNames) { + checks.push({ + typeExpr, + fields: properties.map((property) => property.name), + scalars: scalarNames, + }); + } + /** Lines that walk `expr` of `type` (named `typeExpr` in the generated file): + * strings to `walker.string`, IR nodes to their walkers, arrays by element and + * other objects by field. */ + function walkLines(expr, type, typeExpr, indent, depth) { + if (depth > 12) throw new Error(`field type nests too deep at ${expr}`); + const parts = type.isUnion() ? type.types : [type]; + const present = parts.filter((part) => (part.flags & nullish) === 0); + const optional = present.length !== parts.length; + const strings = present.filter((part) => (part.flags & ts.TypeFlags.StringLike) !== 0); + const objects = present.filter( + (part) => (part.flags & (ts.TypeFlags.StringLike | scalar)) === 0, + ); + for (const part of present) + if ((part.flags & (ts.TypeFlags.Any | ts.TypeFlags.Unknown)) !== 0) + throw new Error(`untyped field ${expr}`); + const body = []; + if (objects.length > 0) { + const kinds = new Set(objects.map(irKind)); + if (kinds.size === 1 && !kinds.has(null)) { + const [kind] = kinds; + body.push(`walk${kind.slice(2)}Fields(${expr}, walker, skipType);`); + } else if (objects.every((part) => checker.isArrayType(part))) { + if (objects.length !== 1) throw new Error(`several array types at ${expr}`); + const item = `item${temp++}`; + body.push(`for (const ${item} of ${expr}) {`); + const itemType = `Extract, readonly unknown[]>[number]`; + body.push( + ...walkLines(item, checker.getTypeArguments(objects[0])[0], itemType, " ", depth + 1), + ); + body.push("}"); + } else if (kinds.has(null) && objects.length === 1) { + const recordType = `Extract, object>`; + const properties = checker.getPropertiesOfType(objects[0]); + const scalarNames = []; + for (const property of properties) { + if (property.name === "loc") continue; + const fieldType = checker.getTypeOfSymbol(property); + const field = `${expr}.${property.name}`; + const fieldTypeExpr = `${recordType}[${JSON.stringify(property.name)}]`; + const lines = walkLines(field, fieldType, fieldTypeExpr, "", depth + 1); + if (onlyScalar(fieldType)) scalarNames.push(property.name); + if (lines.length === 0) continue; + if (property.name === "type") + body.push("if (!skipType) {", ...lines.map((l) => ` ${l}`), "}"); + else body.push(...lines); + } + noteFields(recordType, properties, scalarNames); + } else throw new Error(`mixed object types at ${expr}: ${checker.typeToString(type)}`); + } + let lines = body; + if (strings.length > 0 && objects.length > 0) + lines = [ + `if (typeof ${expr} === "string") walker.string(${expr});`, + ...(body.length > 0 ? [`else {`, ...body.map((l) => ` ${l}`), "}"] : []), + ]; + else if (strings.length > 0) lines = [`walker.string(${expr});`]; + if (lines.length > 0 && optional && !(strings.length > 0 && objects.length > 0)) + lines = [ + `if (${expr} !== undefined && ${expr} !== null) {`, + ...lines.map((l) => ` ${l}`), + "}", + ]; + else if (lines.length > 0 && optional) + lines = [ + `if (${expr} !== undefined && ${expr} !== null) {`, + ...lines.map((l) => ` ${l}`), + "}", + ]; + return lines.map((line) => indent + line); + } + lines.push( - ` Unread 0 ? quoted(fields) : "never"}>>,`, + "/** What a field walk reports (walkExprFields): each expression and", + " * statement node before its fields, and each string a field holds. */", + "export interface IrFieldWalker {", + " node(node: IrExpr | IrStmt): void;", + " string(value: string): void;", + "}", + "", ); - for (const scalarName of scalars) - lines.push(` Unread>,`); -} -lines.push("];", ""); -const text = lines.join("\n"); + for (const name of ["IrExpr", "IrStmt", "IrType"]) { + const short = name.slice(2); + const nodeCall = name === "IrType" ? [] : [" walker.node(node);"]; + lines.push( + `/** Walks every field of \`node\` but \`loc\` (and \`type\` with \`skipType\`), and`, + " * every field of each object under it: the strings and nodes a recursive", + " * `for (const key in value)` walk with the same skips finds, read by name in", + " * the order ir.ts declares the fields. */", + `export function walk${short}Fields(node: ${name}, walker: IrFieldWalker, skipType: boolean): void {`, + ...nodeCall, + " switch (node.kind) {", + ); + const byKind = new Map(); + for (const member of members.get(name)) { + const kind = checker.getTypeOfSymbol(member.getProperty("kind")).value; + if (byKind.has(kind)) throw new Error(`${name} kind ${kind} declared twice`); + byKind.set(kind, member); + } + for (const [kind, member] of [...byKind].sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0))) { + lines.push(` case ${JSON.stringify(kind)}: {`); + const memberType = `Extract<${name}, { kind: ${JSON.stringify(kind)} }>`; + const scalarNames = []; + for (const property of member.getProperties()) { + if (property.name === "loc") continue; + const fieldType = checker.getTypeOfSymbol(property); + const field = `node.${property.name}`; + const fieldTypeExpr = `${memberType}[${JSON.stringify(property.name)}]`; + const walk = walkLines(field, fieldType, fieldTypeExpr, "", 0); + if (onlyScalar(fieldType)) scalarNames.push(property.name); + if (walk.length === 0) continue; + if (property.name === "type") + lines.push(" if (!skipType) {", ...walk.map((l) => ` ${l}`), " }"); + else lines.push(...walk.map((l) => ` ${l}`)); + } + lines.push(" return;", " }"); + noteFields(memberType, member.getProperties(), scalarNames); + } + lines.push(" }", "}", ""); + } -if (process.argv.includes("--check")) { - if (readFileSync(target, "utf8") !== text) - throw new Error("fields.generated.ts is stale; run node scripts/generate-ir-fields.mjs"); -} else writeFileSync(target, text); + // Type checking fails below when ir.ts gives a walked object a field this + // file does not know, or lets a field that held no string and no object hold + // one before this file is regenerated. + const quoted = (names) => names.map((name) => JSON.stringify(name)).join(" | "); + lines.push( + "/** A field ir.ts declares that this file does not read. */", + "type FieldsNotRead = Exclude;", + "/** The string or object values a field read as a scalar can hold. */", + "type ValuesNotRead = Extract, string | object>;", + "/** Fails type checking unless `T` is never: run `pnpm generate:ir-fields`. */", + "type Unread = T;", + "", + "/** Every walked object type's fields as ir.ts declared them when this file", + " * was generated. */", + "export type IrFieldsCurrent = [", + ); + for (const { typeExpr, fields, scalars } of checks) { + lines.push( + ` Unread 0 ? quoted(fields) : "never"}>>,`, + ); + for (const scalarName of scalars) + lines.push(` Unread>,`); + } + lines.push("];", ""); + return lines.join("\n"); +} + +if (process.argv[1] !== undefined && samePath(process.argv[1], fileURLToPath(import.meta.url))) { + const text = generateIrFields(); + + if (process.argv.includes("--check")) { + if (readFileSync(target, "utf8") !== text) + throw new Error("fields.generated.ts is stale; run node scripts/generate-ir-fields.mjs"); + } else writeFileSync(target, text); +} diff --git a/tests/harness/ir-fields-generator.test.ts b/tests/harness/ir-fields-generator.test.ts new file mode 100644 index 000000000..f3cba57a1 --- /dev/null +++ b/tests/harness/ir-fields-generator.test.ts @@ -0,0 +1,60 @@ +import { readFileSync } from "node:fs"; +import { join } from "node:path"; +import ts from "typescript"; +import { expect, test } from "vitest"; +import { generateIrFields } from "../../scripts/generate-ir-fields.mjs"; + +const compilerDir = join(import.meta.dirname, "../../packages/compiler"); +const irPath = join(compilerDir, "src/ir/ir.ts"); +const generatedPath = join(compilerDir, "src/ir/fields.generated.ts"); +const irText = readFileSync(irPath, "utf8"); +const arrayGet = '{ kind: "arrayGet"; arr: IrExpr; index: IrExpr; type: IrType; loc: SrcLoc }'; + +/** ir.ts with `field` added to the arrayGet node. */ +function withArrayGetField(field: string): string { + expect(irText).toContain(arrayGet); + return irText.replace(arrayGet, arrayGet.replace("loc: SrcLoc }", `loc: SrcLoc; ${field} }`)); +} + +/** The type errors of `generated` as fields.generated.ts, with `ir` as ir.ts, + * under the compiler package's options. */ +function generatedErrors(ir: string, generated: string): string[] { + const parsed = ts.getParsedCommandLineOfConfigFile( + join(compilerDir, "tsconfig.json"), + { noEmit: true, incremental: false }, + { ...ts.sys, onUnRecoverableConfigFileDiagnostic: () => {} }, + )!; + const host = ts.createCompilerHost(parsed.options); + const readSourceFile = host.getSourceFile; + host.getSourceFile = (file, languageVersion, ...rest) => + file === irPath + ? ts.createSourceFile(file, ir, languageVersion) + : file === generatedPath + ? ts.createSourceFile(file, generated, languageVersion) + : readSourceFile.call(host, file, languageVersion, ...rest); + const program = ts.createProgram([generatedPath], parsed.options, host); + return ts + .getPreEmitDiagnostics(program, program.getSourceFile(generatedPath)) + .map((d) => ts.flattenDiagnosticMessageText(d.messageText, "\n")); +} + +test("a nested record of scalar fields passes the checks once the readers are regenerated", () => { + const ir = withArrayGetField("counts?: { hits: number; misses: number | undefined }"); + expect(generatedErrors(ir, generateIrFields(ir))).toEqual([]); +}); + +test("the record's own fields are checked: an added field or a widened scalar fails with its name", () => { + const generated = generateIrFields( + withArrayGetField("counts?: { hits: number; misses: number | undefined }"), + ); + const added = generatedErrors( + withArrayGetField("counts?: { hits: number; misses: number | undefined; label: string }"), + generated, + ); + expect(added).toEqual([`Type '"label"' does not satisfy the constraint 'never'.`]); + const widened = generatedErrors( + withArrayGetField("counts?: { hits: number | string; misses: number | undefined }"), + generated, + ); + expect(widened).toEqual([`Type 'string' does not satisfy the constraint 'never'.`]); +}); From e3bd44d65bc23edd06a4e33675b4b2f3ed6fde3e Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 21:28:56 -0500 Subject: [PATCH 44/52] Trace Array subclass instances held in array-typed slots and test their class on element reads An Array subclass's type maps to its element array type, so a field such as TreeNode.kids holds a Kids instance in a slot typed as an array of TreeNode. The collector visits such a slot as an array, which has a collector header when its element ops trace, but the class only got a header when its own class unit was on a cycle, and the collector read a header the instance did not have. An Array subclass now carries a header whenever an array of its element type does, and its collector descriptor visits its elements instead of naming no children. An element read of an array of Array subclass instances is a union with undefined, and 'instanceof' against the class answered false for it. A union now tests its array arms' class at run time. --- packages/compiler/src/backend/llvm/classes.ts | 10 +++- packages/compiler/src/backend/llvm/emitter.ts | 33 ++++++++++ .../lowering/builtins/array-classes.ts | 58 ++++++++++++++++++ .../lowering/expressions/relational.ts | 7 ++- .../array-subclass-element-cycles.ts.json | 6 ++ .../array-subclass-element-instanceof.ts.json | 6 ++ tests/corpus/array-subclass-element-cycles.ts | 60 +++++++++++++++++++ .../array-subclass-element-instanceof.ts | 37 ++++++++++++ .../array-subclass-element-cycles.ts.json | 1 + .../array-subclass-element-instanceof.ts.json | 1 + 10 files changed, 214 insertions(+), 5 deletions(-) create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/array-subclass-element-cycles.ts.json create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/array-subclass-element-instanceof.ts.json create mode 100644 tests/corpus/array-subclass-element-cycles.ts create mode 100644 tests/corpus/array-subclass-element-instanceof.ts create mode 100644 tests/harness/corpus-costs/array-subclass-element-cycles.ts.json create mode 100644 tests/harness/corpus-costs/array-subclass-element-instanceof.ts.json diff --git a/packages/compiler/src/backend/llvm/classes.ts b/packages/compiler/src/backend/llvm/classes.ts index 30265c66c..695acc273 100644 --- a/packages/compiler/src/backend/llvm/classes.ts +++ b/packages/compiler/src/backend/llvm/classes.ts @@ -1097,9 +1097,15 @@ export function emitClassShapes( // A traced class whose trace visits nothing carries the collector header // only because its hierarchy is traced: it is never on a cycle. Its // descriptor names scr_cyc_no_children and its objects start out - // SCR_CYC_ACYCLIC, so releases never buffer them. + // SCR_CYC_ACYCLIC, so releases never buffer them. An Array subclass's + // trace also visits its elements by their current element ops + // (scr_arr_subclass_trace), so it is never acyclic. const acyclic = - traced && runtimePrefix === null && !isStreamRooted && tracedFields.length === 0; + traced && + runtimePrefix === null && + !isStreamRooted && + tracedFields.length === 0 && + cls.arrayElem === undefined; const bounded = runtimePrefix !== null || isStreamRooted || diff --git a/packages/compiler/src/backend/llvm/emitter.ts b/packages/compiler/src/backend/llvm/emitter.ts index 8ece55841..14e2e9d6c 100644 --- a/packages/compiler/src/backend/llvm/emitter.ts +++ b/packages/compiler/src/backend/llvm/emitter.ts @@ -2355,6 +2355,39 @@ export class LlEmitter { programLifetime: this.programLifetime, regionAliasTag: (word) => this.memoryAliasAttachment(`region.${word}`), }; + // An instance of a class that extends Array is an array: a slot of its + // element array type can hold it, and the collector visits it there as + // an array, which has a collector header when its element ops trace + // (scr_arr_make_ops_kind). Such a class carries a header too, and so + // does the rest of its hierarchy. A class whose elements are instances + // of another such class follows that class, so repeat until no class + // adds one. + const arrayClasses = (mod.classes ?? []).filter((c) => c.arrayElem !== undefined); + if (arrayClasses.length > 0) { + const baseOf = new Map((mod.classes ?? []).map((c) => [c.name, c.base] as const)); + const rootOf = (name: string): string => { + let root = name; + for ( + let base = baseOf.get(root); + base !== undefined && baseOf.has(base); + base = baseOf.get(root) + ) + root = base; + return root; + }; + for (let changed = true; changed;) { + changed = false; + for (const cls of arrayClasses) { + if (this.tracedShapes.has(`object:${cls.name}`)) continue; + if (traceAdapter(this.shapeHost, { kind: "array", elem: cls.arrayElem! }) === null) + continue; + const root = rootOf(cls.name); + for (const member of mod.classes ?? []) + if (rootOf(member.name) === root) this.tracedShapes.add(`object:${member.name}`); + changed = true; + } + } + } this.walkers = new LlWalkers(this.shapeHost); this.dyn = new LlDyn(this.shapeHost); for (const g of mod.globals ?? []) { diff --git a/packages/compiler/src/frontend/lowering/builtins/array-classes.ts b/packages/compiler/src/frontend/lowering/builtins/array-classes.ts index 4ed92faa7..1922be0af 100644 --- a/packages/compiler/src/frontend/lowering/builtins/array-classes.ts +++ b/packages/compiler/src/frontend/lowering/builtins/array-classes.ts @@ -10,6 +10,7 @@ import * as ts from "../../ts7/adapter.js"; import { type Lowerer } from "../lowerer.js"; import { isJsSourceFile, locOf } from "../../program.js"; import { stripTypeWrappers } from "../typed-arguments.js"; +import { keyedHelperName } from "../stable-names.js"; import { dynUndefinedExpr, nodeThrowExpr } from "../../../ir/build.js"; import { lowerArrayFromCall, lowerArrayOfCall } from "../containers/array-construction.js"; import { boundedArrayHofHelper } from "../containers/array-callbacks.js"; @@ -305,6 +306,7 @@ export function lowerArrayClassInstanceOf( const value = lowerer.lowerExpr(expr.left); if (value.type.kind === "array") return { kind: "instanceOf", value, className: info.def.name, type: BOOL, loc }; + if (value.type.kind === "union") return arrayClassUnionInstanceOf(lowerer, value, info, loc); if (value.type.kind === "dyn") return { kind: "libCall", @@ -324,6 +326,62 @@ export function lowerArrayClassInstanceOf( return null; } +/** `x instanceof X` for a class X declared `extends Array` on a union (an + * element read of an array of X instances is `X | undefined`): an array arm + * tests the array's class at run time, a checked-dynamic arm asks the + * runtime, and every other arm is no instance. */ +function arrayClassUnionInstanceOf( + lowerer: Lowerer, + value: IrExpr, + info: ClassInfo, + loc: SrcLoc, +): IrExpr | null { + if (value.type.kind !== "union") return null; + const unionId = value.type.unionId; + const arms = lowerer.unions.get(unionId)?.arms; + if (arms === undefined) return null; + const className = info.def.name; + const key = `instanceof.arrayClass:${unionId}:${className}`; + let helper = lowerer.valueHelpers.get(key); + if (!helper) { + helper = keyedHelperName(lowerer, "%instanceof.arrayClass", key); + lowerer.valueHelpers.set(key, helper); + const param: IrExpr = { kind: "varRef", localId: "value.0", type: value.type, loc }; + const body: IrStmt[] = []; + arms.forEach((arm, tag) => { + if (arm.kind !== "array" && arm.kind !== "dyn") return; + const narrowed: IrExpr = { kind: "unionNarrow", unionId, tag, value: param, type: arm, loc }; + const test: IrExpr = + arm.kind === "array" + ? { kind: "instanceOf", value: narrowed, className, type: BOOL, loc } + : { + kind: "libCall", + fn: "array.dynIsClass", + args: [narrowed, { kind: "strLit", value: className, type: STRING, loc }], + type: BOOL, + loc, + }; + body.push({ + kind: "if", + cond: { kind: "unionIsTag", unionId, tag, negated: false, value: param, type: BOOL, loc }, + then: [{ kind: "return", value: test, loc }], + else_: null, + loc, + }); + }); + body.push({ kind: "return", value: { kind: "boolLit", value: false, type: BOOL, loc }, loc }); + lowerer.liftedFns.push({ + name: helper, + params: [{ localId: "value.0", name: "value", type: value.type }], + returnType: BOOL, + locals: [{ id: "value.0", name: "value", type: value.type, mutable: false }], + body, + loc, + }); + } + return { kind: "call", callee: helper, args: [value], type: BOOL, loc }; +} + /** The class declared `extends Array` that a value of `type` is an instance * of, or null. */ export function arrayClassOfType(lowerer: Lowerer, type: ts.Type): ClassInfo | null { diff --git a/packages/compiler/src/frontend/lowering/expressions/relational.ts b/packages/compiler/src/frontend/lowering/expressions/relational.ts index 51d48b127..d29226685 100644 --- a/packages/compiler/src/frontend/lowering/expressions/relational.ts +++ b/packages/compiler/src/frontend/lowering/expressions/relational.ts @@ -840,9 +840,10 @@ export function lowerInstanceOf(lowerer: Lowerer, expr: ts.BinaryExpression, loc if (left.type.kind === "union") { const unionId = left.type.unionId; const arms = lowerer.unions.get(unionId)?.arms; - // Ordinary records, arrays and scalar values do not carry a class - // prototype (no program class extends Array). Dynamic/opaque runtime - // objects keep their existing instanceof fences. + // Records, arrays and scalar values are no instances of a class that + // does not extend Array (lowerArrayClassInstanceOf tests the classes + // that do). Dynamic/opaque runtime objects keep their existing + // instanceof fences. if ( arms?.every( (arm) => diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/array-subclass-element-cycles.ts.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/array-subclass-element-cycles.ts.json new file mode 100644 index 000000000..136c92da1 --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/array-subclass-element-cycles.ts.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/array-subclass-element-cycles.ts" + ], + "diags": [] +} diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/array-subclass-element-instanceof.ts.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/array-subclass-element-instanceof.ts.json new file mode 100644 index 000000000..0a542048a --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/array-subclass-element-instanceof.ts.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/array-subclass-element-instanceof.ts" + ], + "diags": [] +} diff --git a/tests/corpus/array-subclass-element-cycles.ts b/tests/corpus/array-subclass-element-cycles.ts new file mode 100644 index 000000000..375fe6faf --- /dev/null +++ b/tests/corpus/array-subclass-element-cycles.ts @@ -0,0 +1,60 @@ +// A class that extends Array whose elements can lead back to it only +// through a field of plain array type (TreeNode.kids holds a Kids, typed as +// an array of TreeNode): its instances carry the collector header that +// arrays of its element type carry, so the collector can visit them through +// that field. Forest's elements are Kids instances, which carry one too. +class Kids extends Array { + label = "kids"; + total(): number { + let sum = 0; + for (const kid of this) sum += kid.size(); + return sum; + } +} + +class TreeNode { + kids = new Kids(); + value: number; + constructor(value: number) { + this.value = value; + } + size(): number { + return 1 + this.kids.total(); + } +} + +class Forest extends Array { + name = "forest"; +} + +function grow(depth: number): TreeNode { + const node = new TreeNode(depth); + if (depth > 0) for (let i = 0; i < 3; i++) node.kids.push(grow(depth - 1)); + return node; +} + +// Garbage cycles through the field of array type make the collector run +// while the trees are alive. +function churn(rounds: number): number { + let made = 0; + for (let i = 0; i < rounds; i++) { + const node = new TreeNode(i); + node.kids.push(node); + made++; + } + return made; +} + +let checks = 0; +for (let round = 0; round < 20; round++) { + checks += grow(4).size(); + churn(500); +} +console.log(checks); + +const forest = new Forest(); +for (let i = 0; i < 4; i++) forest.push(grow(2).kids); +churn(5000); +let leaves = 0; +for (const kids of forest) leaves += kids.total(); +console.log(forest.name, forest.length, leaves, forest[0]!.label, forest[0] instanceof Kids); diff --git a/tests/corpus/array-subclass-element-instanceof.ts b/tests/corpus/array-subclass-element-instanceof.ts new file mode 100644 index 000000000..f520e55a1 --- /dev/null +++ b/tests/corpus/array-subclass-element-instanceof.ts @@ -0,0 +1,37 @@ +// Instances of classes that extend Array read back from an array of them +// (an element read is `Row | undefined`) still answer instanceof for their +// own class and Array, false for another Array subclass, and plain arrays +// answer false. +class Row extends Array { + sum(): number { + let s = 0; + for (const v of this) s += v; + return s; + } +} +class Column extends Array {} + +function rows(n: number): Row[] { + const out: Row[] = []; + for (let i = 0; i < n; i++) { + const row = new Row(); + for (let j = 0; j <= i; j++) row.push(j); + out.push(row); + } + return out; +} + +const lines: number[][] = [new Row(), new Column(), [1, 2]]; + +const table = rows(6); +console.log(table.length, table[5]!.sum(), table[5] instanceof Row, table[5] instanceof Column); +console.log(table[4] instanceof Row, table[4] instanceof Array); +console.log(table.at(-1) instanceof Row, table.at(10) instanceof Row); +const plain: number[][] = [[1, 2]]; +console.log(plain[0] instanceof Row, plain[0] instanceof Array); +const kinds = lines.map((r) => (r instanceof Column ? "column" : r instanceof Row ? "row" : "plain")); +console.log(kinds.join(",")); +let checks = 0; +for (let round = 0; round < 20; round++) + checks += rows(6).reduce((s, r) => s + (r instanceof Row ? r.sum() : 0), 0); +console.log(checks); diff --git a/tests/harness/corpus-costs/array-subclass-element-cycles.ts.json b/tests/harness/corpus-costs/array-subclass-element-cycles.ts.json new file mode 100644 index 000000000..371d0c7d1 --- /dev/null +++ b/tests/harness/corpus-costs/array-subclass-element-cycles.ts.json @@ -0,0 +1 @@ +{ "plain": 3200, "san": 4800 } diff --git a/tests/harness/corpus-costs/array-subclass-element-instanceof.ts.json b/tests/harness/corpus-costs/array-subclass-element-instanceof.ts.json new file mode 100644 index 000000000..d2c83f967 --- /dev/null +++ b/tests/harness/corpus-costs/array-subclass-element-instanceof.ts.json @@ -0,0 +1 @@ +{ "plain": 2500, "san": 3300 } From 019fc51e3137fb7424df5e89dcd8f52fbda551a2 Mon Sep 17 00:00:00 2001 From: Malte Ubl Date: Mon, 26 Oct 2026 19:33:49 -0700 Subject: [PATCH 45/52] Keep the generator tag reader and the glibc math unit out of hello The static hello binary grew past the 96 KiB ceiling of the runtime tree-shaking test on Linux hosts that link with GNU ld (99,040 B). CI does not see it: its pinned LLVM ships ld.lld, which the compiler prefers, and hello links to about 65 KB there. The Sandbox gate installs Ubuntu's clang-22 without lld, so it links with GNU ld. dd418b067 crossed the ceiling (98,032 -> 98,960 B). Its scr_glibc_math.c defines floor, fmod, frexp and other glibc names as hidden functions so a program can start without libm. With GNU ld that cannot work: ld decides --as-needed before section GC, so the runtime's unreachable code keeps libm needed, and it keeps every regular definition of a name a needed shared library defines, hidden or not. Every executable carried the whole unit (about 2.5 KB of code and unwind data) and still loaded libm. Links without lld now leave the unit out; its functions answer what glibc's do. 192ea3247 installed scr_gen_tag_reader from a load-time constructor in scr_async.c. A constructor is a link root on every format, so each executable kept scr_gen_tag and, with GNU ld, all of scr_async.c's string literals (about 1.1 KB). The generator runtime now installs the reader when it creates a generator, the only time a reader can be needed. Hello is now 93,928 B with GNU ld and 65,472 B with lld. Co-Authored-By: Claude Opus 5.5 --- .../compiler/src/backend/link-plan-core.ts | 2 +- packages/compiler/src/backend/linker.ts | 29 ++++++++++--------- packages/compiler/src/backend/lld.test.ts | 9 +++++- packages/compiler/src/backend/lld.ts | 20 ++++++++++++- packages/compiler/src/native/compiler.ts | 14 ++++----- packages/runtime/src/scr_async.c | 9 +++--- packages/runtime/src/scr_generator.h | 5 ++-- packages/runtime/src/scr_inspect.c | 2 +- packages/runtime/src/scr_json.c | 2 +- tests/harness/runtime-tree-shaking.test.ts | 9 ++++-- 10 files changed, 66 insertions(+), 35 deletions(-) diff --git a/packages/compiler/src/backend/link-plan-core.ts b/packages/compiler/src/backend/link-plan-core.ts index fc05d2961..f8ad20e6f 100644 --- a/packages/compiler/src/backend/link-plan-core.ts +++ b/packages/compiler/src/backend/link-plan-core.ts @@ -75,7 +75,7 @@ export function executableLinkInputs(options: { * links as needed: the runtime defines the libm functions most programs * reach (scr_glibc_math.c) and Math's transcendentals (scr_ieee754.c), so a * program that calls no other libm function, such as pow, starts without - * loading libm.so. */ + * loading libm.so when it links with lld (see inputsWithoutLld). */ export function systemLibraryLinkerArgs( target: Pick, names: readonly string[], diff --git a/packages/compiler/src/backend/linker.ts b/packages/compiler/src/backend/linker.ts index c4f04133e..a29a7c947 100644 --- a/packages/compiler/src/backend/linker.ts +++ b/packages/compiler/src/backend/linker.ts @@ -21,7 +21,7 @@ import { import { type NativeArtifactDependency } from "./native/contracts.js"; import { RuntimePackError, stageRuntimePackArtifacts } from "./runtime-pack.js"; import type { NativeLinkPlan } from "./link-plan.js"; -import { lldLinkerArgs } from "./lld.js"; +import { inputsWithoutLld, lldLinkerArgs } from "./lld.js"; import { systemLibraryLinkerArgs } from "./link-plan-core.js"; import { createDarwinDebugSymbols, @@ -244,15 +244,19 @@ export async function linkNativeExecutable( stagedRoot = staged.root; // Linux links with lld when the default driver finds it. const lld = explicitLinker === undefined ? lldLinkerArgs(plan.target.platform, linker) : []; - const args = [ - ...(explicitLinker === undefined ? plan.target.defaultLinkerArgs : []), - ...lld, - ...plan.driverFlags, - ...plan.inputs.map((input) => staged.replacements.get(input) ?? input), - ...systemLibraryLinkerArgs(plan.target, plan.systemLibraries), - "-o", - privateOut, - ]; + const linkArgs = (withLld: boolean): string[] => { + const inputs = plan.inputs.map((input) => staged.replacements.get(input) ?? input); + return [ + ...(explicitLinker === undefined ? plan.target.defaultLinkerArgs : []), + ...(withLld ? lld : []), + ...plan.driverFlags, + ...(withLld ? inputs : inputsWithoutLld(plan.target.platform, inputs)), + ...systemLibraryLinkerArgs(plan.target, plan.systemLibraries), + "-o", + privateOut, + ]; + }; + const args = linkArgs(lld.length !== 0); // The pack snapshots bracket both verification passes and private staging; // the program-object snapshot begins before helper emission. Snapshot the // remaining cache-bearing inputs before the linker consumes them, then @@ -285,10 +289,7 @@ export async function linkNativeExecutable( // A failed link with lld runs again with the driver's default linker, // whose error (if any) is the one reported. if (lld.length === 0) throw error; - await execFileAsync( - linker, - args.filter((arg) => !lld.includes(arg)), - ); + await execFileAsync(linker, linkArgs(false)); }); const output = await stat(privateOut); if (!output.isFile() || output.size === 0) throw new Error("linker produced no executable"); diff --git a/packages/compiler/src/backend/lld.test.ts b/packages/compiler/src/backend/lld.test.ts index b0a466cf6..048f2ab94 100644 --- a/packages/compiler/src/backend/lld.test.ts +++ b/packages/compiler/src/backend/lld.test.ts @@ -2,7 +2,7 @@ import { chmodSync, mkdirSync, mkdtempSync, rmSync, symlinkSync, writeFileSync } import { tmpdir } from "node:os"; import { join } from "node:path"; import { afterEach, expect, test } from "vitest"; -import { driverFindsLld, lldLinkerArgs } from "./lld.js"; +import { driverFindsLld, inputsWithoutLld, lldLinkerArgs } from "./lld.js"; const directories: string[] = []; afterEach(() => { @@ -59,3 +59,10 @@ test.skipIf(process.platform === "win32")( expect(lldLinkerArgs("linux", clang, { ...env, SCRIPTC_LINKER: clang })).toEqual([]); }, ); + +test("Linux links without lld leave out the glibc math unit", () => { + const inputs = ["/pack/scr_lib.o", "/pack/scr_glibc_math.o", "/tmp/program.o"]; + expect(inputsWithoutLld("linux", inputs)).toEqual(["/pack/scr_lib.o", "/tmp/program.o"]); + expect(inputsWithoutLld("darwin", inputs)).toEqual(inputs); + expect(inputsWithoutLld("windows", inputs)).toEqual(inputs); +}); diff --git a/packages/compiler/src/backend/lld.ts b/packages/compiler/src/backend/lld.ts index 790e07062..7a9210407 100644 --- a/packages/compiler/src/backend/lld.ts +++ b/packages/compiler/src/backend/lld.ts @@ -1,5 +1,5 @@ import { realpathSync, statSync } from "node:fs"; -import { delimiter, dirname, isAbsolute, join, resolve } from "node:path"; +import { basename, delimiter, dirname, isAbsolute, join, resolve } from "node:path"; function isFile(path: string): boolean { try { @@ -47,3 +47,21 @@ export function lldLinkerArgs( ? ["-fuse-ld=lld"] : []; } + +/** + * The link inputs for a Linux link without lld. The runtime's + * scr_glibc_math.c defines glibc's floor, fmod, frexp and a few others as + * hidden functions so that a program calling no other libm function starts + * without libm.so. That works with lld, which garbage-collects the unused + * definitions and decides `--as-needed` from the live code. GNU ld decides + * `--as-needed` before section GC, so the runtime's unreachable code keeps + * libm needed, and it keeps every regular definition of a name that a needed + * shared library also defines, hidden or not: the unit would add all of its + * code to every executable and save nothing. Its functions answer what + * glibc's do, so linking glibc's own instead is equivalent. + */ +export function inputsWithoutLld(platform: string, inputs: readonly string[]): string[] { + return platform === "linux" + ? inputs.filter((input) => basename(input) !== "scr_glibc_math.o") + : [...inputs]; +} diff --git a/packages/compiler/src/native/compiler.ts b/packages/compiler/src/native/compiler.ts index ea3772db3..942565327 100644 --- a/packages/compiler/src/native/compiler.ts +++ b/packages/compiler/src/native/compiler.ts @@ -70,7 +70,7 @@ import { import { splitLlvmLibraryProgram } from "../backend/llvm/split.js"; import { prepareNativeExecutable, prepareNativeLibrary } from "./prepare.js"; import { buildSanitizedRuntime, sanitizerDriver, sanitizerFlags } from "./sanitizer.js"; -import { lldLinkerArgs } from "../backend/lld.js"; +import { inputsWithoutLld, lldLinkerArgs } from "../backend/lld.js"; import { openNativeExecutableCache } from "./executable-cache.js"; import { LinkerJobs } from "./linker-job.js"; import { nativeFileIdentity } from "./file-identity.js"; @@ -569,15 +569,16 @@ export class NativeCompiler { }); // Linux links with lld when the driver finds it. const lld = options.sanitize ? [] : lldLinkerArgs(target.platform, toolchain.linker); - const linkArgs = [ + const linkArgsWith = (withLld: boolean): string[] => [ ...(options.sanitize ? ["-fsanitize=address"] : toolchain.linkerArgs), - ...lld, + ...(withLld ? lld : []), ...plan.driverFlags, - ...plan.inputs, + ...(withLld ? plan.inputs : inputsWithoutLld(target.platform, plan.inputs)), ...systemLibraryLinkerArgs(target, plan.systemLibraries), "-o", stagedOutput, ]; + const linkArgs = linkArgsWith(lld.length !== 0); // Host Linux links with lld run the linker job the driver would. const jobs = LinkerJobs.open(this.cache, toolchain, lld, options.sanitize ?? false); const job = jobs?.link([...plan.inputs, stagedOutput], stage); @@ -593,10 +594,7 @@ export class NativeCompiler { // A failed link with lld runs again with the driver's default // linker, whose error (if any) is the one reported. if (lld.length === 0) throw error; - runNativeTool( - driver, - linkArgs.filter((arg) => !lld.includes(arg)), - ); + runNativeTool(driver, linkArgsWith(false)); } } timing("native-link"); diff --git a/packages/runtime/src/scr_async.c b/packages/runtime/src/scr_async.c index aed974892..ec799a4b8 100644 --- a/packages/runtime/src/scr_async.c +++ b/packages/runtime/src/scr_async.c @@ -5385,6 +5385,11 @@ static ScrGen *scr_gen_new_common(void (*entry)(ScrFiber *, void *), void *argpa bool stackless) { ScrGen *g = scr_mem_calloc(sizeof *g); if (!g) scr_oom(); + /* Install the tag reader with each generator rather than in a constructor: + * a constructor is a link root, so it would keep scr_gen_tag and this + * unit's string literals in every executable, generators or not. Threads + * store the same value, relaxed. */ + __atomic_store_n(&scr_gen_tag_reader, scr_gen_tag, __ATOMIC_RELAXED); g->rc = 1; g->receiver = scr_dyn_this_get(); g->state = SCR_GEN_UNSTARTED; @@ -5959,10 +5964,6 @@ const char *scr_gen_tag(const ScrGen *g) { return g->tag ? g->tag : g->is_async ? "AsyncGenerator" : "Generator"; } -__attribute__((constructor)) static void scr_gen_tag_reader_init(void) { - scr_gen_tag_reader = scr_gen_tag; -} - void scr_gen_close(ScrGen *g) { scr_gen_slot_reset(&g->ret); scr_gen_resume_return(g); diff --git a/packages/runtime/src/scr_generator.h b/packages/runtime/src/scr_generator.h index cb61d93e4..4f43892b4 100644 --- a/packages/runtime/src/scr_generator.h +++ b/packages/runtime/src/scr_generator.h @@ -82,8 +82,9 @@ void scr_gen_set_tag(ScrGen *g, const char *tag); void scr_gen_copy_tag(ScrGen *g, const ScrGen *from); const char *scr_gen_tag(const ScrGen *g); /* scr_gen_tag for units that also link without the generator runtime (a - * library links none): the generator runtime sets it at startup, and only - * then can a generator capsule exist. */ + * library links none): the generator runtime sets it when it creates a + * generator, so it is set whenever a generator capsule exists. Read it with + * a relaxed atomic load. */ extern const char *(*scr_gen_tag_reader)(const ScrGen *g); ScrGen *scr_gen_retain(ScrGen *g); void scr_gen_release(ScrGen *g); /* NULL-tolerant */ diff --git a/packages/runtime/src/scr_inspect.c b/packages/runtime/src/scr_inspect.c index b4994cd32..e6df0f4cf 100644 --- a/packages/runtime/src/scr_inspect.c +++ b/packages/runtime/src/scr_inspect.c @@ -1613,7 +1613,7 @@ static bool scr_insp_is_generator(const ScrDyn *d) { } static ScrStr *scr_insp_generator(const ScrDyn *d) { - const char *tag = scr_gen_tag_reader(d->v.typed_ref.ptr); + const char *tag = __atomic_load_n(&scr_gen_tag_reader, __ATOMIC_RELAXED)(d->v.typed_ref.ptr); if (tag[0] == '!') { static const char message[] = "util.inspect of this iterator object is not supported yet"; scr_throw_error_msg(SCR_ERR_ERROR, message, sizeof message - 1); diff --git a/packages/runtime/src/scr_json.c b/packages/runtime/src/scr_json.c index 7b0d44069..d1f2af6cc 100644 --- a/packages/runtime/src/scr_json.c +++ b/packages/runtime/src/scr_json.c @@ -9633,7 +9633,7 @@ ScrStr *scr_dyn_object_tag(const ScrDyn *d) { if (d->kind == SCR_DYN_TYPED_REF) { if (scr_dyn_ref_is_error(d)) return scr_str_new("[object Error]", 14); if (scr_dyn_generator(d)) { - const char *gen_tag = scr_gen_tag_reader(d->v.typed_ref.ptr); + const char *gen_tag = __atomic_load_n(&scr_gen_tag_reader, __ATOMIC_RELAXED)(d->v.typed_ref.ptr); if (gen_tag[0] == '!') { static const char message[] = "Object.prototype.toString of this iterator is not supported yet"; scr_throw_error_msg(SCR_ERR_ERROR, message, sizeof message - 1); diff --git a/tests/harness/runtime-tree-shaking.test.ts b/tests/harness/runtime-tree-shaking.test.ts index b33a0d2f9..92584a59e 100644 --- a/tests/harness/runtime-tree-shaking.test.ts +++ b/tests/harness/runtime-tree-shaking.test.ts @@ -142,6 +142,9 @@ nativeToolchainTest( "scr_url_", "scr_json_parse", "scr_date_", + // The generator runtime installs its tag reader with its first + // generator; a load-time constructor would retain it everywhere. + "scr_gen_tag", ]) { expect(helloSymbols, `hello retains ${family}`).not.toContain(family); } @@ -159,8 +162,10 @@ nativeToolchainTest( // Symbol absence is the primary reachability contract. Keep a deliberately // roomy, platform-specific hello-world ceiling too: it catches losing - // section GC without pinning an exact linker/SDK byte count. The canonical - // Linux build is about 84KB and current Mach-O builds are about 70KB. Most + // section GC without pinning an exact linker/SDK byte count. The Linux + // build is about 65KB with lld (CI's pinned LLVM provides it) and about + // 94KB with GNU ld, which keeps a unit's string literals whole once any of + // them is reachable; current Mach-O builds are about 70KB. Most // of Linux hello's runtime code is the cycle collector, which its exit // path reaches (scr_lib_cleanup releases an array). ELF segments are page // aligned, so the Linux size moves in 4 KiB steps whenever .text crosses From 2cbce33cd3c6ef45ba982fad588c6f1d1c17fa1a Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 21:39:18 -0500 Subject: [PATCH 46/52] Read class instance fields inline at dynamic-tier property sites An instance of a compiled class reaches untyped code as a capsule, which a property site sent to its helper on every read: the helper normalizes the capsule, tests each class's key in turn, and loads the field. A read site now emits the helper's plain field branches inline. A capsule whose key pointer is one of those classes' keys loads the field from its instance and shares the inline hits' conversion. A branch is emitted only when its field holds a plain dyn cell and every subclass the helper's normalization can rebox the key to reads the same field from the same slot. Getters, bag properties, unset fields and other capsules keep the helper. --- packages/compiler/src/backend/llvm/js-ic.ts | 228 +++++++++++++++++- packages/compiler/test/js-ic-emission.test.ts | 44 ++++ .../8410-dynamic-class-instance-reads.js.json | 6 + .../main.ts.json | 7 + .../8410-dynamic-class-instance-reads.js | 62 +++++ .../8411-dynamic-base-keyed-instances/main.ts | 32 +++ .../package.json | 1 + .../reader.cjs | 11 + 8 files changed, 389 insertions(+), 2 deletions(-) create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8410-dynamic-class-instance-reads.js.json create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8411-dynamic-base-keyed-instances/main.ts.json create mode 100644 tests/corpus/8410-dynamic-class-instance-reads.js create mode 100644 tests/corpus/8411-dynamic-base-keyed-instances/main.ts create mode 100644 tests/corpus/8411-dynamic-base-keyed-instances/package.json create mode 100644 tests/corpus/8411-dynamic-base-keyed-instances/reader.cjs diff --git a/packages/compiler/src/backend/llvm/js-ic.ts b/packages/compiler/src/backend/llvm/js-ic.ts index dbd11c155..c9786c9f2 100644 --- a/packages/compiler/src/backend/llvm/js-ic.ts +++ b/packages/compiler/src/backend/llvm/js-ic.ts @@ -26,12 +26,14 @@ * v.num +16. Every property of an object with a layout is * a writable data property (scr_dyn.h's layout mode); * dictionary-mode objects have a null layout. + * v.typed_ref {ptr +16, type_key +40}. * ScrJsIc entries of 40 bytes {layout, target, holder, * holder_layout, slot}; 168 bytes in all */ -import { BOOL, DYN, F64, STRING, type IrExpr, type IrFunction } from "../../ir/ir.js"; +import { BOOL, DYN, F64, STRING, type IrExpr, type IrFunction, type IrStmt } from "../../ir/ir.js"; import { jsIcMethodSites, type JsIcSite } from "../../ir/js-ic.js"; import { mangleBorrowedFunction } from "../mangle.js"; import { emitBorrowedInput } from "./borrowed-inputs.js"; +import { classFieldBase, classFieldIndex } from "./classes.js"; import { DYN_KIND } from "./dyn.js"; import type { ExprOf, LlValue, LlvmEmitterContext } from "./expr-context.js"; import { JS_BITS } from "./jsval-encoding.js"; @@ -317,6 +319,222 @@ function keyString(host: Host, key: string, e: IrExpr): string { return host.emitExpr({ kind: "strLit", value: key, type: STRING, loc: e.loc }).name; } +/** A class instance's answer that a read helper gives by loading one + * declared field: the branch `if (dyn.typedRefIs(p, KEY)) { r = + * dynCheck(p); return [js.fromDyn](fieldGet C.f(r)) }`. */ +interface CapsuleRead { + key: string; + className: string; + field: string; +} + +/** The class branches of a read helper that a site can answer inline for + * capsules (class instances boxed as dyn values), or none. + * + * The helper first normalizes its receiver (`%dyn.class.normalize` + * reboxes a capsule keyed with a base class whose instance belongs to a + * subclass), then tests each class branch in turn. The site loads the + * field of a capsule whose key is a branch's key without normalizing, so + * a branch qualifies only when every subclass the normalization can + * rebox its key to has a branch that loads the same field from the same + * slot of a layout that extends the class's. Every other capsule, and + * every helper or normalization of another form, keeps the helper. */ +function capsuleReads(host: Host, helper: IrFunction): CapsuleRead[] { + const receiver = helper.params[0]?.localId; + if (receiver === undefined || helper.params.length !== 1) return []; + const reads = new Map(); + for (const stmt of helper.body) { + if (normalizes(stmt, receiver)) continue; + if (stmt.kind !== "if" || stmt.else_ !== null) break; + if (notCapsule(stmt.cond, receiver)) continue; + const key = brandKey(stmt.cond, receiver); + if (key === null) return []; + if (!reads.has(key)) reads.set(key, capsuleRead(stmt, receiver, key)); + } + const reboxes = normalizationTargets(host); + if (reboxes === null) return []; + const out: CapsuleRead[] = []; + for (const read of reads.values()) { + if (read === null || !plainField(host, read.className, read.field)) continue; + const targets = reboxes.get(read.key) ?? []; + const same = targets.every((target) => { + const other = reads.get(`object:${target}`); + return ( + other != null && + other.field === read.field && + plainField(host, target, read.field) && + extendsLayout(host, target, read.className, read.field) + ); + }); + if (same) out.push(read); + } + return out; +} + +/** `p = %dyn.class.normalize(p)`. */ +function normalizes(stmt: IrStmt, receiver: string): boolean { + return ( + stmt.kind === "assign" && + stmt.localId === receiver && + stmt.value.kind === "call" && + stmt.value.callee === "%dyn.class.normalize" && + stmt.value.args.length === 1 && + isLocal(stmt.value.args[0]!, receiver) + ); +} + +/** `!classCapsule(p)`: false for every capsule of a compiled class, so a + * capsule never enters the branch it guards. */ +function notCapsule(cond: IrExpr, receiver: string): boolean { + return ( + cond.kind === "dynTest" && + cond.test === "classCapsule" && + cond.negated === true && + isLocal(cond.value, receiver) + ); +} + +function isLocal(e: IrExpr, id: string): boolean { + return e.kind === "varRef" && e.localId === id; +} + +/** The capsule key `dyn.typedRefIs(p, "object:C")` tests, or null. */ +function brandKey(cond: IrExpr, receiver: string): string | null { + if (cond.kind !== "libCall" || cond.fn !== "dyn.typedRefIs" || cond.args.length !== 2) + return null; + const [value, key] = cond.args; + if (!isLocal(value!, receiver) || key?.kind !== "strLit" || !key.value.startsWith("object:")) + return null; + return key.value; +} + +/** The field a class branch loads, or null for a branch of another form. */ +function capsuleRead( + branch: IrStmt & { kind: "if" }, + receiver: string, + key: string, +): CapsuleRead | null { + const [decl, ret] = branch.then; + if (branch.then.length !== 2 || decl?.kind !== "varDecl" || ret?.kind !== "return") return null; + if (decl.init?.kind !== "dynCheck" || !isLocal(decl.init.value, receiver)) return null; + let value = ret.value; + if (value?.kind === "libCall" && value.fn === "js.fromDyn" && value.args.length === 1) + value = value.args[0]!; + if (value?.kind !== "fieldGet" || !isLocal(value.obj, decl.localId)) return null; + if (key !== `object:${value.className}`) return null; + return { key, className: value.className, field: value.field }; +} + +/** For each capsule key `%dyn.class.normalize` reboxes, the classes it + * may rebox to; null when the normalization has another form. */ +function normalizationTargets(host: Host): Map | null { + const targets = new Map(); + const normalize = host.fnByName.get("%dyn.class.normalize"); + if (normalize === undefined) return targets; + const value = normalize.params[0]?.localId; + if (value === undefined) return null; + for (const stmt of normalize.body) { + if (stmt.kind === "return") { + if (stmt.value !== null && isLocal(stmt.value, value)) continue; + return null; + } + if (stmt.kind !== "if" || stmt.else_ !== null) return null; + if (notCapsule(stmt.cond, value)) continue; + const key = brandKey(stmt.cond, value); + if (key === null) return null; + const [decl, ...checks] = stmt.then; + if (decl?.kind !== "varDecl" || decl.init?.kind !== "dynCheck") return null; + const into = targets.get(key) ?? []; + for (const check of checks) { + if ( + check.kind !== "if" || + check.else_ !== null || + check.cond.kind !== "instanceOf" || + !isLocal(check.cond.value, decl.localId) + ) + return null; + into.push(check.cond.className); + } + targets.set(key, into); + } + return targets; +} + +/** A declared field of a compiled class that holds a plain dyn cell + * pointer: not compact, compressed, int32 or an inline union. */ +function plainField(host: Host, className: string, field: string): boolean { + const meta = host.classMeta.get(className); + if (meta === undefined || meta.compact) return false; + const decl = meta.def.fields.find((f) => f.name === field); + if (decl === undefined || decl.type.kind !== "dyn") return false; + if (classFieldIndex(meta, field, "compressed").compressed) return false; + return ( + !host.int32Slots.isField(className, field) && !host.inlineUnions.classField(className, field) + ); +} + +/** Whether `sub`'s layout starts with `base`'s through `field`: the same + * header and the same fields in the same slots, so a load through + * `base`'s struct reads `sub`'s field. */ +function extendsLayout(host: Host, sub: string, base: string, field: string): boolean { + const a = host.classMeta.get(base); + const b = host.classMeta.get(sub); + if (a === undefined || b === undefined || b.compact) return false; + if (classFieldBase(a) !== classFieldBase(b)) return false; + const end = a.def.fields.findIndex((f) => f.name === field); + if (end < 0 || end >= b.def.fields.length) return false; + for (let i = 0; i <= end; i++) { + const x = a.def.fields[i]!; + const y = b.def.fields[i]!; + if (x.name !== y.name || x.type.kind !== y.type.kind) return false; + } + return ( + classFieldIndex(a, field, "compressed").index === classFieldIndex(b, field, "compressed").index + ); +} + +/** The inline part of a read site for a capsule `d`: a capsule whose key + * is one of `reads`' keys answers with the (borrowed) field cell, branching + * to `join` and recording its phi input; anything else, including a field + * not yet set, branches to `miss`. */ +function inlineCapsuleLoad( + host: Host, + d: string, + reads: readonly CapsuleRead[], + incoming: string[], + join: string, + miss: string, +): void { + const B = host.B; + const capsule = B.newLabel("icc.cap"); + kindIs(host, d, DYN_KIND.TYPED_REF, capsule, miss); + B.startBlock(capsule); + // Capsules boxed by this program share its key constants. + const key = load(host, "ptr", d, 40); + let next = B.newLabel("icc.k"); + B.br(next); + reads.forEach((read, i) => { + B.startBlock(next); + next = i + 1 < reads.length ? B.newLabel("icc.k") : miss; + const same = B.tmp(); + B.line(`${same} = icmp eq ptr ${key}, ${host.cstr(read.key)}`); + const matched = B.newLabel("icc.m"); + B.condBr(same, matched, next); + B.startBlock(matched); + const instance = load(host, "ptr", d, 16); + const { ptr } = host.classFieldPtr(instance, read.className, read.field); + const cell = B.tmp(); + B.line(`${cell} = load ptr, ptr ${ptr}`); + const set = B.tmp(); + B.line(`${set} = icmp ne ptr ${cell}, null`); + const hit = B.newLabel("icc.hit"); + B.condBr(set, hit, miss); + B.startBlock(hit); + incoming.push(`[ ${cell}, %${B.currentLabel()} ]`); + B.br(join); + }); +} + /** Emits a call to a classified helper as a cache site. */ export function emitJsIcCall( host: Host, @@ -371,9 +589,15 @@ function emitGet(host: Host, e: ExprOf<"call">, callee: IrFunction, key: string) // conversion to the result type. const hit = B.newLabel("icg.hit"); const hits: string[] = []; - kindIs(host, receiver.name, DYN_KIND.OBJ, object, probe); + const reads = capsuleReads(host, callee); + const other = reads.length > 0 ? B.newLabel("icg.other") : probe; + kindIs(host, receiver.name, DYN_KIND.OBJ, object, other); B.startBlock(object); inlineLoad(host, receiver.name, ic, INLINE_WAYS, INLINE_PROTO, (cell) => cell, hits, hit, probe); + if (reads.length > 0) { + B.startBlock(other); + inlineCapsuleLoad(host, receiver.name, reads, hits, hit, probe); + } B.startBlock(probe); // The read's probe also answers keys the receiver's plain chain lacks. // Only `length` and `next` reads can be answered for a native array or diff --git a/packages/compiler/test/js-ic-emission.test.ts b/packages/compiler/test/js-ic-emission.test.ts index e0ad8e329..aa4d83959 100644 --- a/packages/compiler/test/js-ic-emission.test.ts +++ b/packages/compiler/test/js-ic-emission.test.ts @@ -143,6 +143,50 @@ console.log(read(o), read(p), read(t), at(dyn([5, 6]), 1), at(p, "x"), at(t, "ta } }); +test("property reads answer class instances' declared fields inline", async () => { + const dir = await mkdtemp(join(tmpdir(), "scriptc-js-ic-capsule-")); + try { + const entry = join(dir, "main.js"); + const outPath = join(dir, "main.ir.json"); + await writeFile( + entry, + ` +class Point { + constructor(x) { this.x = x; } +} +class Tagged extends Point { + constructor(x, tag) { super(x); this.tag = tag; } +} +class Gauge { + get x() { return 9; } +} +function dyn(v) { return v; } +function read(o) { return o.x; } +function tag(o) { return o.tag; } +var p = dyn(new Point(4)); +var t = dyn(new Tagged(6, "t")); +console.log(read(p), read(t), read(dyn(new Gauge())), read({ x: 1 }), tag(t)); +`, + ); + const result = await compile(entry, { outDir: dir, outPath, outputKind: "ir" }); + if (!result.ok) + throw new Error(result.diagnostics.map((d) => `${d.code}: ${d.message}`).join("\n")); + const mod = deserializeModule(await readFile(outPath, "utf8")); + expect(validateModule(mod)).toEqual([]); + const llvm = emitLlvmModule(mod); + const read = body(llvm, "read"); + // Point and Tagged instances load the field after one key compare + // each; Gauge's getter, and every other receiver, keeps the probe and + // the helper. + expect(read.match(/^icc\.m\d+:/gm)).toHaveLength(2); + expect(read).toContain("@scr_js_get_probe("); + expect(read).toMatch(/@sc_b?f__x25_dyn_class_property_\d+\(ptr %t\d+\) noinline cold/); + expect(body(llvm, "tag").match(/^icc\.m\d+:/gm)).toHaveLength(1); + } finally { + await rm(dir, { recursive: true, force: true }); + } +}); + test("typed programs have no cache sites and keep the ordinary runtime", async () => { const dir = await mkdtemp(join(tmpdir(), "scriptc-js-ic-typed-")); try { diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8410-dynamic-class-instance-reads.js.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8410-dynamic-class-instance-reads.js.json new file mode 100644 index 000000000..cec5ee64b --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8410-dynamic-class-instance-reads.js.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/8410-dynamic-class-instance-reads.js" + ], + "diags": [] +} diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8411-dynamic-base-keyed-instances/main.ts.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8411-dynamic-base-keyed-instances/main.ts.json new file mode 100644 index 000000000..5d15c0479 --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/8411-dynamic-base-keyed-instances/main.ts.json @@ -0,0 +1,7 @@ +{ + "order": [ + "/tests/corpus/8411-dynamic-base-keyed-instances/reader.cjs", + "/tests/corpus/8411-dynamic-base-keyed-instances/main.ts" + ], + "diags": [] +} diff --git a/tests/corpus/8410-dynamic-class-instance-reads.js b/tests/corpus/8410-dynamic-class-instance-reads.js new file mode 100644 index 000000000..83b9cad9b --- /dev/null +++ b/tests/corpus/8410-dynamic-class-instance-reads.js @@ -0,0 +1,62 @@ +// Untyped reads and writes of class instances at property sites: base and +// subclass instances, subclass instances returned where the base class is +// the inferred type, a subclass that redeclares an inherited field, a +// getter, fields set after construction and fields never set. +class Point { + constructor(x, y) { + this.x = x; + this.y = y; + } +} +class Tagged extends Point { + constructor(x, y, tag) { + super(x, y); + this.tag = tag; + } +} +class Shifted extends Point { + label = "s"; + x = 100; +} +class Gauge { + get x() { + return 9; + } +} +class Late { + constructor(set) { + if (set) this.x = "late"; + } +} +function make(i) { + if (i % 3 === 0) return new Point(i, -i); + if (i % 3 === 1) return new Tagged(i, i * 2, "t" + i); + return new Shifted(i, 0); +} +function readX(o) { + return o.x; +} +function readY(o) { + return o.y; +} +function writeX(o, v) { + o.x = v; +} +const values = []; +for (let i = 0; i < 9; i++) values.push(make(i)); +values.push(new Gauge(), new Late(true), new Late(false), { x: "plain", y: 1 }, { y: 2, x: "swapped" }); +let sum = 0; +for (let round = 0; round < 3; round++) { + for (const v of values) { + const x = readX(v); + sum += typeof x === "number" ? x : x === undefined ? 1000 : x.length; + const y = readY(v); + if (typeof y === "number") sum += y; + } + for (let i = 0; i < 9; i++) writeX(values[i], round * 10 + i); +} +console.log(sum); +console.log(values.map((v) => String(readX(v))).join(" ")); +console.log(values.map((v) => String(readY(v))).join(" ")); +writeX(values[1], "changed"); +console.log(readX(values[1]), readX(values[2]), values[2].label, values[1].tag); diff --git a/tests/corpus/8411-dynamic-base-keyed-instances/main.ts b/tests/corpus/8411-dynamic-base-keyed-instances/main.ts new file mode 100644 index 000000000..5c0caa936 --- /dev/null +++ b/tests/corpus/8411-dynamic-base-keyed-instances/main.ts @@ -0,0 +1,32 @@ +// Untyped property reads of class instances that typed code passes as their +// base class: subclass instances in a Point[] read their inherited field and +// their own field through an untyped module. +import { createRequire } from "node:module"; +const require = createRequire(import.meta.url); +const reader: { + readX(o: unknown): unknown; + readTag(o: unknown): unknown; + sum(list: unknown[]): number; +} = require("./reader.cjs"); + +class Point { + x: any; + constructor(x: any) { + this.x = x; + } +} +class Tagged extends Point { + tag: any; + constructor(x: any, tag: any) { + super(x); + this.tag = tag; + } +} +function make(i: number): Point { + return i % 2 === 0 ? new Point(i) : new Tagged(i * 10, "t" + i); +} +const list: Point[] = []; +for (let i = 0; i < 6; i++) list.push(make(i)); +console.log(list.map((p) => String(reader.readX(p))).join(" ")); +console.log(list.map((p) => String(reader.readTag(p))).join(" ")); +console.log(reader.sum(list)); diff --git a/tests/corpus/8411-dynamic-base-keyed-instances/package.json b/tests/corpus/8411-dynamic-base-keyed-instances/package.json new file mode 100644 index 000000000..5ffd9800b --- /dev/null +++ b/tests/corpus/8411-dynamic-base-keyed-instances/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/tests/corpus/8411-dynamic-base-keyed-instances/reader.cjs b/tests/corpus/8411-dynamic-base-keyed-instances/reader.cjs new file mode 100644 index 000000000..941299ed5 --- /dev/null +++ b/tests/corpus/8411-dynamic-base-keyed-instances/reader.cjs @@ -0,0 +1,11 @@ +exports.readX = function (o) { + return o.x; +}; +exports.readTag = function (o) { + return o.tag; +}; +exports.sum = function (list) { + let s = 0; + for (let i = 0; i < list.length; i++) s += list[i].x; + return s; +}; From 9c42c8d74b5eab5160e9201510d9d58c74574a0a Mon Sep 17 00:00:00 2001 From: Malte Ubl Date: Mon, 26 Oct 2026 19:40:54 -0700 Subject: [PATCH 47/52] Install ld.lld in the Sandbox toolchain so Sandbox links match CI CI's pinned LLVM ships ld.lld, and the compiler links Linux executables with it whenever clang finds it. The Sandbox image and the managed-image bootstrap installed clang-22 without lld-22, so Sandbox builds linked with GNU ld: static hello came out at 99 KB instead of 65 KB, and runtime-tree-shaking failed only in Sandboxes. Install lld-22 in both and check that clang finds it. Co-Authored-By: Claude Opus 5.5 --- Dockerfile.sandbox | 2 ++ scripts/sandbox-bootstrap.sh | 4 ++++ tests/harness/sandbox-config.test.ts | 4 ++++ 3 files changed, 10 insertions(+) diff --git a/Dockerfile.sandbox b/Dockerfile.sandbox index 61f5d8ad9..7a943a85f 100644 --- a/Dockerfile.sandbox +++ b/Dockerfile.sandbox @@ -26,6 +26,7 @@ RUN apt-get update \ libclang-rt-22-dev \ libpolly-22-dev \ libzstd-dev \ + lld-22 \ llvm-22-dev \ ninja-build \ xz-utils \ @@ -33,6 +34,7 @@ RUN apt-get update \ && ln -sf clang-22 /usr/bin/clang \ && ln -sf clang++-22 /usr/bin/clang++ \ && test "$(llvm-config-22 --version)" = 22.1.8 \ + && test -x "$(dirname "$(readlink -f /usr/bin/clang)")/ld.lld" \ && rm -rf /var/lib/apt/lists/* RUN curl --fail --silent --show-error --location \ diff --git a/scripts/sandbox-bootstrap.sh b/scripts/sandbox-bootstrap.sh index ac0a4558a..ea50a7574 100644 --- a/scripts/sandbox-bootstrap.sh +++ b/scripts/sandbox-bootstrap.sh @@ -32,6 +32,7 @@ sudo env DEBIAN_FRONTEND=noninteractive apt-get install --quiet=2 --yes --no-ins libclang-rt-22-dev \ libpolly-22-dev \ libzstd-dev \ + lld-22 \ llvm-22-dev \ ninja-build \ xz-utils \ @@ -40,6 +41,9 @@ sudo rm -f /usr/local/bin/clang /usr/local/bin/clang++ sudo ln -sf clang-22 /usr/bin/clang sudo ln -sf clang++-22 /usr/bin/clang++ test "$(llvm-config-22 --version)" = 22.1.8 +# CI's pinned LLVM ships ld.lld and the compiler links with it when the +# driver finds it (beside clang's real executable): match that here. +test -x "$(dirname "$(readlink -f "$(command -v clang)")")/ld.lld" node_archive="node-v${node_version}-linux-x64.tar.xz" curl --fail --silent --show-error --location \ diff --git a/tests/harness/sandbox-config.test.ts b/tests/harness/sandbox-config.test.ts index 9a330f746..532fb5c4e 100644 --- a/tests/harness/sandbox-config.test.ts +++ b/tests/harness/sandbox-config.test.ts @@ -98,6 +98,10 @@ test("the managed-image bootstrap pins the custom image's Node, pnpm, and LLVM", expect(bootstrap).toContain("libclang-rt-22-dev"); expect(bootstrap).toContain("llvm-22-dev"); expect(bootstrap).toContain("ninja-build"); + // CI links with ld.lld; without it Sandbox binaries link with GNU ld. + expect(bootstrap).toContain("lld-22"); + const dockerfile = readFileSync(new URL("../../Dockerfile.sandbox", import.meta.url), "utf8"); + expect(dockerfile).toContain("lld-22"); }); test("a custom image does not select the Sandbox team or project", () => { From b4ba4d38ac9f821f96523f14d83898c2c20500bd Mon Sep 17 00:00:00 2001 From: Malte Ubl Date: Mon, 26 Oct 2026 19:42:44 -0700 Subject: [PATCH 48/52] Key the gate's baseline cache on the linker clang finds Linux links use ld.lld when clang finds it and the system linker otherwise, and the two produce different executables. A baseline record made with one must not settle candidates linked with the other. Co-Authored-By: Claude Opus 5.5 --- scripts/zero-cost-gate.mjs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/scripts/zero-cost-gate.mjs b/scripts/zero-cost-gate.mjs index bc312f2a6..b2d4c877a 100644 --- a/scripts/zero-cost-gate.mjs +++ b/scripts/zero-cost-gate.mjs @@ -462,6 +462,12 @@ function toolchainFingerprint(root) { h.update(JSON.stringify([process.platform, process.arch, process.version, root, programsRoot])); const clang = spawnSync("clang", ["--version"], { encoding: "utf8" }); h.update(clang.stdout ?? ""); + // Linux links use ld.lld when the driver finds it, else the system linker. + const lld = spawnSync("clang", ["-print-prog-name=ld.lld"], { encoding: "utf8" }); + const lldPath = (lld.stdout ?? "").trim(); + h.update(lldPath); + if (lldPath.startsWith("/") && existsSync(lldPath)) + h.update(spawnSync(lldPath, ["--version"], { encoding: "utf8" }).stdout ?? ""); const packages = join(root, "packages"); for (const name of readdirSync(packages).sort()) { const dir = join(packages, name); From e1eead091f76cacd758907dc421c09d56e174b88 Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 21:49:14 -0500 Subject: [PATCH 49/52] Give every native function an unwind table entry LLVM emits an unwind table entry for a function that may unwind or that has the uwtable attribute. Functions it infers nounwind, such as the number-key Map probe sc_map_entry_f64_hashed, got none, so profilers and debuggers could not unwind past them. The function attribute groups now carry uwtable on native targets; wasm32-wasi modules are unchanged. --- .../compiler/src/backend/llvm/cpu-dispatch.ts | 6 +++--- .../compiler/src/backend/llvm/emit-module.ts | 19 +++++++++++-------- .../compiler/src/backend/llvm/emitter.test.ts | 18 +++++++++++++----- .../test/bytes-element-emission.test.ts | 2 +- .../test/cpu-dispatch-emission.test.ts | 4 ++-- .../compiler/test/generator-emission.test.ts | 2 +- 6 files changed, 31 insertions(+), 20 deletions(-) diff --git a/packages/compiler/src/backend/llvm/cpu-dispatch.ts b/packages/compiler/src/backend/llvm/cpu-dispatch.ts index f24fc8674..ced356cca 100644 --- a/packages/compiler/src/backend/llvm/cpu-dispatch.ts +++ b/packages/compiler/src/backend/llvm/cpu-dispatch.ts @@ -18,10 +18,10 @@ const COPY_GROUPS: ReadonlyMap = new Map([ ["2", "4"], ]); -export function cpuDispatchAttributes(asan: string): string[] { +export function cpuDispatchAttributes(common: string): string[] { return [ - `attributes #3 = {${asan} "target-cpu"="x86-64-v3" }`, - `attributes #4 = { noinline${asan} "target-cpu"="x86-64-v3" }`, + `attributes #3 = {${common} "target-cpu"="x86-64-v3" }`, + `attributes #4 = { noinline${common} "target-cpu"="x86-64-v3" }`, ]; } diff --git a/packages/compiler/src/backend/llvm/emit-module.ts b/packages/compiler/src/backend/llvm/emit-module.ts index 15efa88c7..bb4d2421d 100644 --- a/packages/compiler/src/backend/llvm/emit-module.ts +++ b/packages/compiler/src/backend/llvm/emit-module.ts @@ -199,19 +199,22 @@ function readRange(dir: string, range: number): { result: ChunkResult; texts: st /** The attribute groups of the emitted functions: #0 for every function, * #1 for coroutine bodies and #2 for out-of-line record clones. Each carries - * the build's `--target-cpu` level, and `sanitize_address` in sanitized - * builds. A group needs one attribute: without either, #0 holds a string - * attribute that LLVM ignores. Dispatching builds add the x86-64-v3 copies' - * #3 and #4 (cpu-dispatch.ts). */ + * the build's `--target-cpu` level, `sanitize_address` in sanitized builds, + * and `uwtable` on native targets, so every function has an unwind table + * entry, including those LLVM infers `nounwind` (profilers and debuggers + * unwind through them). A group needs one attribute: without any, #0 holds a + * string attribute that LLVM ignores. Dispatching builds add the x86-64-v3 + * copies' #3 and #4 (cpu-dispatch.ts). */ function functionAttributes(emitter: LlEmitter, hasNoInlineRecordClone: boolean): string[] { const cpu = targetCpuAttribute(emitter.targetCpu); const asan = emitter.sanitizeAttributes ? " sanitize_address" : ""; - const base = `${asan}${cpu}` || ` "scriptc-function"`; + const common = `${asan}${emitter.wasi ? "" : " uwtable"}`; + const base = `${common}${cpu}` || ` "scriptc-function"`; return [ `attributes #0 = {${base} }`, - ...(emitter.usesCoroutines ? [`attributes #1 = {${asan} presplitcoroutine${cpu} }`] : []), - ...(hasNoInlineRecordClone ? [`attributes #2 = { noinline${asan}${cpu} }`] : []), - ...(emitter.cpuDispatch ? cpuDispatchAttributes(asan) : []), + ...(emitter.usesCoroutines ? [`attributes #1 = {${common} presplitcoroutine${cpu} }`] : []), + ...(hasNoInlineRecordClone ? [`attributes #2 = { noinline${common}${cpu} }`] : []), + ...(emitter.cpuDispatch ? cpuDispatchAttributes(common) : []), ]; } diff --git a/packages/compiler/src/backend/llvm/emitter.test.ts b/packages/compiler/src/backend/llvm/emitter.test.ts index 880685bf2..8e3aae24d 100644 --- a/packages/compiler/src/backend/llvm/emitter.test.ts +++ b/packages/compiler/src/backend/llvm/emitter.test.ts @@ -206,7 +206,7 @@ test("a target CPU level reaches every function attribute group and nothing else const plain = emitLlvmModule(module); expect(plain).not.toContain("target-cpu"); const v3 = emitLlvmModule(module, { targetCpu: "x86-64-v3" }); - expect(v3).toMatch(/^attributes #0 = \{ sanitize_address "target-cpu"="x86-64-v3" \}$/m); + expect(v3).toMatch(/^attributes #0 = \{ sanitize_address uwtable "target-cpu"="x86-64-v3" \}$/m); expect(v3.replaceAll(' "target-cpu"="x86-64-v3"', "")).toBe(plain); expect(emitLlvmModule(module, { targetCpu: "baseline" })).toBe(plain); }); @@ -215,13 +215,21 @@ test("only sanitized builds mark the emitted functions sanitize_address", () => const module = moduleFor([call()]); const sanitized = emitLlvmModule(module); expect(emitLlvmModule(module, { sanitizeAttributes: true })).toBe(sanitized); - expect(sanitized).toMatch(/^attributes #0 = \{ sanitize_address \}$/m); + expect(sanitized).toMatch(/^attributes #0 = \{ sanitize_address uwtable \}$/m); const plain = emitLlvmModule(module, { sanitizeAttributes: false }); expect(plain).not.toContain("sanitize_address"); - // A group needs an attribute: an ignored string attribute stands in. - expect(plain).toMatch(/^attributes #0 = \{ "scriptc-function" \}$/m); + expect(plain).toMatch(/^attributes #0 = \{ uwtable \}$/m); const v3 = emitLlvmModule(module, { sanitizeAttributes: false, targetCpu: "x86-64-v3" }); - expect(v3).toMatch(/^attributes #0 = \{ "target-cpu"="x86-64-v3" \}$/m); + expect(v3).toMatch(/^attributes #0 = \{ uwtable "target-cpu"="x86-64-v3" \}$/m); +}); + +test("native functions get unwind tables and wasm32-wasi functions do not", () => { + const module = moduleFor([call()]); + expect(emitLlvmModule(module)).toMatch(/^attributes #0 = \{ sanitize_address uwtable \}$/m); + const wasi = emitLlvmModule(module, { wasi: true, pointerBits: 32, sanitizeAttributes: false }); + expect(wasi).not.toContain("uwtable"); + // A group needs an attribute: an ignored string attribute stands in. + expect(wasi).toMatch(/^attributes #0 = \{ "scriptc-function" \}$/m); }); test("inline RC inlines every fast path at speed and keeps box releases as calls in release", () => { diff --git a/packages/compiler/test/bytes-element-emission.test.ts b/packages/compiler/test/bytes-element-emission.test.ts index c0a78a898..1998ff0af 100644 --- a/packages/compiler/test/bytes-element-emission.test.ts +++ b/packages/compiler/test/bytes-element-emission.test.ts @@ -404,7 +404,7 @@ test("large record clones stay outlined while small clones remain inlineable", ( expect(small).toContain("define internal ptr @sc_rclone_small(ptr %src) #0"); expect(small).not.toContain("attributes #2"); expect(large).toContain("define internal ptr @sc_rclone_large(ptr %src) #2"); - expect(large).toContain("attributes #2 = { noinline sanitize_address }"); + expect(large).toContain("attributes #2 = { noinline sanitize_address uwtable }"); }); test("Uint8ClampedArray stores clamp and round without a runtime call", () => { diff --git a/packages/compiler/test/cpu-dispatch-emission.test.ts b/packages/compiler/test/cpu-dispatch-emission.test.ts index 170c28ede..43d80b335 100644 --- a/packages/compiler/test/cpu-dispatch-emission.test.ts +++ b/packages/compiler/test/cpu-dispatch-emission.test.ts @@ -119,10 +119,10 @@ test("a dispatching x86-64 build gives each program function a baseline and an x for (const [name] of coroutines) expect(defs.has(`${name}.v3`), name).toBe(false); // Functions used as values are referenced by their dispatching name. expect(ll).not.toMatch(/ptr @[\w.$-]+\.(v3|base)(?!\()/); - expect(ll).toMatch(/^attributes #3 = \{ sanitize_address "target-cpu"="x86-64-v3" \}$/m); + expect(ll).toMatch(/^attributes #3 = \{ sanitize_address uwtable "target-cpu"="x86-64-v3" \}$/m); // Unsanitized builds leave sanitize_address out of the copies' groups too. expect(emit({ ...x86, cpuDispatch: true, sanitizeAttributes: false })).toMatch( - /^attributes #3 = \{ "target-cpu"="x86-64-v3" \}$/m, + /^attributes #3 = \{ uwtable "target-cpu"="x86-64-v3" \}$/m, ); // main sets the level before anything else runs. expect(defs.get("main")).toMatch( diff --git a/packages/compiler/test/generator-emission.test.ts b/packages/compiler/test/generator-emission.test.ts index 6601813bd..2442c5e09 100644 --- a/packages/compiler/test/generator-emission.test.ts +++ b/packages/compiler/test/generator-emission.test.ts @@ -56,7 +56,7 @@ console.log(sum); expect(definition(llvm, "sc_f_range")).not.toContain("@scr_coro_yield_f64("); expect(llvm).not.toContain("@scr_gen_take_out_f64("); expect(llvm).toContain("%ScrGenHead = type { i64, ptr, ptr, i32, %ScrGenSlot }"); - expect(llvm).toContain("attributes #1 = { presplitcoroutine }"); + expect(llvm).toContain("attributes #1 = { uwtable presplitcoroutine }"); expect(definition(llvm, "sc_gs_range")).toContain("call ptr @scr_gen_new_stackless("); expect(llvm).not.toContain("@scr_gen_yield_f64("); }); From 70c39cca493a9a5ed9dfe049fbf65f873b130c8c Mon Sep 17 00:00:00 2001 From: Malte Ubl Date: Mon, 26 Oct 2026 18:19:46 -0700 Subject: [PATCH 50/52] Keep frozen records frozen for untyped code and ignore refused sloppy writes Object.freeze of a fresh record or array literal now sets the native frozen bit instead of compiling to the literal, so an untyped reference to the value sees it frozen: Object.isFrozen answers true and strict-mode writes throw Node's TypeErrors. Untyped property writes in sloppy-mode code (IrModule.sloppyDynWrites, decided per write by isStrictCode) call scr_dyn_key_set_sloppy and its computed form, which drop exactly the TypeError a refused assignment raises (a read-only or frozen property, a non-extensible object, a frozen array element) while a setter's exception still propagates. Computed-write dispatch helpers are shared only by writes of the same mode. Co-Authored-By: Claude Opus 5.5 --- packages/compiler/src/backend/llvm/emitter.ts | 3 ++ .../compiler/src/backend/llvm/lib-dispatch.ts | 5 ++- .../lowering/class-dynamic-dispatch.ts | 7 +++ .../src/frontend/lowering/frozen-records.ts | 34 +++++++++++++++ .../src/frontend/lowering/lower-calls.ts | 8 +++- .../compiler/src/frontend/lowering/lowerer.ts | 3 ++ .../src/ir/function-references.test.ts | 1 + packages/compiler/src/ir/ir.ts | 5 +++ .../frozen-record-untyped-writes.ts.json | 6 +++ .../frozen-untyped-writes-sloppy.cjs.json | 6 +++ packages/runtime/src/scr_dyn.h | 4 ++ packages/runtime/src/scr_json.c | 38 ++++++++++++++++ tests/corpus/frozen-record-untyped-writes.ts | 35 +++++++++++++++ tests/corpus/frozen-untyped-writes-sloppy.cjs | 43 +++++++++++++++++++ .../frozen-record-untyped-writes.ts.json | 1 + .../frozen-untyped-writes-sloppy.cjs.json | 1 + 16 files changed, 198 insertions(+), 2 deletions(-) create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/frozen-record-untyped-writes.ts.json create mode 100644 packages/compiler/test/ts7/baselines/order-parity/tests/corpus/frozen-untyped-writes-sloppy.cjs.json create mode 100644 tests/corpus/frozen-record-untyped-writes.ts create mode 100644 tests/corpus/frozen-untyped-writes-sloppy.cjs create mode 100644 tests/harness/corpus-costs/frozen-record-untyped-writes.ts.json create mode 100644 tests/harness/corpus-costs/frozen-untyped-writes-sloppy.cjs.json diff --git a/packages/compiler/src/backend/llvm/emitter.ts b/packages/compiler/src/backend/llvm/emitter.ts index 8ece55841..4eeb37a08 100644 --- a/packages/compiler/src/backend/llvm/emitter.ts +++ b/packages/compiler/src/backend/llvm/emitter.ts @@ -1701,6 +1701,8 @@ export class LlEmitter { * commit back into their objects. Library builds keep their commits: * their values cross a native boundary. */ readonly liveViewsReadOnly: boolean; + /** IrModule.sloppyDynWrites: untyped writes in sloppy-mode code. */ + readonly sloppyDynWrites: ReadonlySet; /** IrModule.foreignElementKeys: element keys whose arrays can hold * SCR_ARR_FOREIGN elements. */ readonly foreignElementKeys: ReadonlySet; @@ -2012,6 +2014,7 @@ export class LlEmitter { ); this.constantNumericTables = findConstantNumericTables(mod); this.untypedIntegrity = mod.untypedIntegrity === true; + this.sloppyDynWrites = new Set(mod.sloppyDynWrites ?? []); this.liveViewsReadOnly = mod.lib === undefined && !this.untypedIntegrity && diff --git a/packages/compiler/src/backend/llvm/lib-dispatch.ts b/packages/compiler/src/backend/llvm/lib-dispatch.ts index ee2ee154b..c3acf766f 100644 --- a/packages/compiler/src/backend/llvm/lib-dispatch.ts +++ b/packages/compiler/src/backend/llvm/lib-dispatch.ts @@ -756,7 +756,10 @@ export function emitGenericLibCall(host: LlvmEmitterContext, e: LibCallExpr): Ll // stream behind it (scr_dyn_for_await_stream.c) e.fn === "dyn.asyncIteratorOpen" && host.dynForAwaitStreams ? "scr_stream_dyn_async_iterator_open" - : LIB_FN_SYMS[e.fn]); + : (e.fn === "dyn.keySet" || e.fn === "dyn.keySetComputed") && + host.sloppyDynWrites.has(`${e.loc.file}\0${e.loc.start}\0${e.loc.end}`) + ? `${LIB_FN_SYMS[e.fn]}_sloppy` + : LIB_FN_SYMS[e.fn]); if (sym === undefined) throw new LlvmUnsupportedError(`libCall:${e.fn}`, e.loc); // The runtime's Date functions take and answer time values: a Date // operand passes its time value, read at once from the borrowed object, diff --git a/packages/compiler/src/frontend/lowering/class-dynamic-dispatch.ts b/packages/compiler/src/frontend/lowering/class-dynamic-dispatch.ts index 1c6df3d5c..c19763e8d 100644 --- a/packages/compiler/src/frontend/lowering/class-dynamic-dispatch.ts +++ b/packages/compiler/src/frontend/lowering/class-dynamic-dispatch.ts @@ -38,6 +38,7 @@ import { import { streamTypedRefEligible } from "../../ir/analysis.js"; import { everyStmtList, transformExpr, transformStmtList } from "../../ir/traverse.js"; import { PoisonError, type Lowerer } from "./lowerer.js"; +import { isSloppyAt } from "./frozen-records.js"; import { erasedGenericInstance, implicitDefaultInstance } from "./generic-functions.js"; import { type ParamShape } from "./call-signatures.js"; import { @@ -2418,6 +2419,11 @@ export class ClassDynamicDispatch { computedRead.key.operand.type.kind === "f64" ? computedRead.key : null; + // A sloppy-mode write ignores a refused assignment + // (sloppyDynamicWrites), so its sites share their own helper, + // whose write takes the first such site's source range. + const sloppyWrite = + !!computedWrite && !reflect && isSloppyAt(lowerer, computedWrite.loc); const key = JSON.stringify([ !!computedWrite, computedRead?.optional ?? false, @@ -2426,6 +2432,7 @@ export class ClassDynamicDispatch { numericKey, reflect, !!indexKey, + ...(sloppyWrite ? ["sloppy"] : []), ]); let dispatch = this.computed.get(key); if (!dispatch) { diff --git a/packages/compiler/src/frontend/lowering/frozen-records.ts b/packages/compiler/src/frontend/lowering/frozen-records.ts index fc770a0cb..3700b57ff 100644 --- a/packages/compiler/src/frontend/lowering/frozen-records.ts +++ b/packages/compiler/src/frontend/lowering/frozen-records.ts @@ -362,3 +362,37 @@ export function freezableRecordType(lowerer: Lowerer, type: IrType): type is Rec const shape = lowerer.shapes.get(type.shapeId); return shape !== undefined && !shapeHasAccessorSlots(shape); } + +/** The source ranges (writeKey) of untyped property writes in sloppy-mode + * code (IrModule.sloppyDynWrites): an assignment there that strict mode + * refuses with a TypeError (a frozen or non-extensible object, a read-only + * property) leaves the object unchanged instead. Only programs with such + * writes list any; the backend calls the sloppy entry points for them. */ +export function sloppyDynamicWrites(lowerer: Lowerer, functions: readonly IrFunction[]): string[] { + const keys = new Set(); + const strictness = new Map(); + for (const fn of functions) { + everyStmtList(fn.body, { + stmt: () => true, + expr: (e) => { + if (e.kind !== "libCall" || (e.fn !== "dyn.keySet" && e.fn !== "dyn.keySetComputed")) + return true; + const key = writeKey(e.loc); + let sloppy = strictness.get(key); + if (sloppy === undefined) { + sloppy = isSloppyAt(lowerer, e.loc); + strictness.set(key, sloppy); + } + if (sloppy) keys.add(key); + return true; + }, + }); + } + return [...keys].sort(); +} + +/** Whether the source at `loc` is sloppy-mode code (isStrictCode). */ +export function isSloppyAt(lowerer: Lowerer, loc: SrcLoc): boolean { + const node = lowerer.nodeAtLoc(loc); + return node !== null && !isStrictCode(node); +} diff --git a/packages/compiler/src/frontend/lowering/lower-calls.ts b/packages/compiler/src/frontend/lowering/lower-calls.ts index 7dc178f03..5f151c7a9 100644 --- a/packages/compiler/src/frontend/lowering/lower-calls.ts +++ b/packages/compiler/src/frontend/lowering/lower-calls.ts @@ -8724,7 +8724,13 @@ function lowerObjectStaticCall( return { kind: "libCall", fn: "dyn.freeze", args: [value], type: DYN, loc: locOf(call) }; } if (ts.isObjectLiteralExpression(inner) || ts.isArrayLiteralExpression(inner)) { - return value; // fresh — freeze is identity here, honestly + // A fresh literal can still reach untyped code, which observes and + // must honor its frozen state: records and arrays keep the bit. + if (freezableRecordType(lowerer, value.type)) + return lowerNativeFreeze(lowerer, "record.freeze", value, locOf(call)); + if (value.type.kind === "array") + return lowerNativeFreeze(lowerer, "array.freeze", value, locOf(call)); + return value; } if ( value.type.kind === "string" || diff --git a/packages/compiler/src/frontend/lowering/lowerer.ts b/packages/compiler/src/frontend/lowering/lowerer.ts index 3d10d1982..0c63997df 100644 --- a/packages/compiler/src/frontend/lowering/lowerer.ts +++ b/packages/compiler/src/frontend/lowering/lowerer.ts @@ -181,6 +181,7 @@ import { } from "./class-dynamic-dispatch.js"; import { addUntypedIntegrityWords, guardClassAttributeWrites } from "./class-attributes.js"; import { inferredCollectionType } from "./js-collection-types.js"; +import { sloppyDynamicWrites } from "./frozen-records.js"; import { guardFrozenWrites, markSloppyRecordWrites } from "./frozen-records.js"; import { applyHandleProperties } from "./handle-properties.js"; import { installBufferValue } from "./containers/bytes.js"; @@ -8848,6 +8849,7 @@ export class Lowerer { checkRequireBindingAccesses(this, functions); refuseX509DynValues(this, functions); markInferredFactChecks(functions, this.program); + const sloppyDynWrites = sloppyDynamicWrites(this, functions); const module: IrModule | null = this.diags.length > 0 ? null @@ -8881,6 +8883,7 @@ export class Lowerer { ? { freezableArrays: [...this.freezableArrays].sort() } : {}), ...(this.untypedIntegrity ? { untypedIntegrity: true as const } : {}), + ...(sloppyDynWrites.length > 0 ? { sloppyDynWrites } : {}), ...(isNodeEsmFile(this.entry, this.program) ? {} : { commonJsEntry: true }), ...(this.ffiImports.length > 0 ? { ffiImports: [...this.ffiImports] } : {}), }; diff --git a/packages/compiler/src/ir/function-references.test.ts b/packages/compiler/src/ir/function-references.test.ts index 450810368..d54fc3967 100644 --- a/packages/compiler/src/ir/function-references.test.ts +++ b/packages/compiler/src/ir/function-references.test.ts @@ -226,6 +226,7 @@ const MODULE_FIELDS: Record>, Role> = { "threadSlotKeys[]": "other", "foreignElementKeys[]": "other", "freezableArrays[]": "other", + "sloppyDynWrites[]": "other", "inferredFactFiles[].file": "other", "inferredFactFiles[].pkg": "other", "declOrigins[]": "other", diff --git a/packages/compiler/src/ir/ir.ts b/packages/compiler/src/ir/ir.ts index 9e28f6f7a..5a6967168 100644 --- a/packages/compiler/src/ir/ir.ts +++ b/packages/compiler/src/ir/ir.ts @@ -1089,6 +1089,11 @@ export interface IrModule { * (frontend frozen-records.ts): their writes test the array's frozen bit * (SCR_ARR_FROZEN) and throw Node's TypeError when it is set. */ freezableArrays?: string[]; + /** Source ranges ("file\0start\0end") of untyped property writes in + * sloppy-mode code (frontend frozen-records.ts sloppyDynamicWrites): + * their dyn.keySet/keySetComputed calls ignore an assignment that strict + * mode refuses with a TypeError. */ + sloppyDynWrites?: string[]; /** The program freezes, seals or prevents extensions of untyped values * (frontend frozen-records.ts noteUntypedIntegrity). Class hierarchies * that can be held there carry an integrity word, which the runtime sets diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/frozen-record-untyped-writes.ts.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/frozen-record-untyped-writes.ts.json new file mode 100644 index 000000000..800f25e9e --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/frozen-record-untyped-writes.ts.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/frozen-record-untyped-writes.ts" + ], + "diags": [] +} diff --git a/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/frozen-untyped-writes-sloppy.cjs.json b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/frozen-untyped-writes-sloppy.cjs.json new file mode 100644 index 000000000..e8af9b305 --- /dev/null +++ b/packages/compiler/test/ts7/baselines/order-parity/tests/corpus/frozen-untyped-writes-sloppy.cjs.json @@ -0,0 +1,6 @@ +{ + "order": [ + "/tests/corpus/frozen-untyped-writes-sloppy.cjs" + ], + "diags": [] +} diff --git a/packages/runtime/src/scr_dyn.h b/packages/runtime/src/scr_dyn.h index 6ab146652..3a1e83308 100644 --- a/packages/runtime/src/scr_dyn.h +++ b/packages/runtime/src/scr_dyn.h @@ -1506,6 +1506,10 @@ bool scr_dyn_is_array_prototype(const ScrDyn *d); * non-object kinds throw Node's catchable TypeErrors (strict-mode * wording). All three operands BORROWED (the value is retained in). */ void scr_dyn_key_set(ScrDyn *recv, ScrStr *key, ScrDyn *value); +/* The same in sloppy-mode code: an assignment strict mode refuses with a + * TypeError is ignored. */ +void scr_dyn_key_set_sloppy(ScrDyn *recv, ScrStr *key, ScrDyn *value); +void scr_dyn_key_set_computed_sloppy(ScrDyn *recv, ScrDyn *key, ScrDyn *value); /* A named (non-index) property of an extensible, unfrozen ARR, stored as * scr_dyn_key_set stores it. Takes ownership of value. */ void scr_dyn_arr_named_put(ScrDyn *arr, const char *key, size_t key_len, ScrDyn *value); diff --git a/packages/runtime/src/scr_json.c b/packages/runtime/src/scr_json.c index e2194c03c..0ca2e2099 100644 --- a/packages/runtime/src/scr_json.c +++ b/packages/runtime/src/scr_json.c @@ -11830,6 +11830,25 @@ bool scr_dyn_in(const ScrDyn *v, const ScrStr *key) { /* Node's TypeErrors for assigning a read-only property and deleting a * non-configurable one of a checked object: the object reads as * #, or [object Object] without a prototype. */ +/* Failed assignments. Sloppy-mode code ignores an assignment that strict + * mode refuses with a TypeError (a read-only or getter-only property, a + * non-extensible object, a frozen array element). The write paths raise + * the strict TypeError and note its payload here; the sloppy entry points + * (scr_dyn_key_set_sloppy) drop exactly that exception when it reaches + * them, while any other exception (a setter's) keeps propagating. */ +static SCR_TL void *scr_dyn_assign_failure; + +static void scr_dyn_note_assign_failure(void) { + if (scr_exc_pending()) scr_dyn_assign_failure = scr_exc_current_cell()->payload; +} + +static void scr_dyn_sloppy_settle(void) { + if (scr_dyn_assign_failure && scr_exc_pending() && + scr_exc_current_cell()->payload == scr_dyn_assign_failure) + scr_exc_clear(); + scr_dyn_assign_failure = NULL; +} + static void scr_dyn_throw_property(const ScrDyn *object, const char *key, size_t key_len, bool deleting) { const char *name = scr_dyn_class_name(object); ScrJsonBuf buffer; @@ -11851,6 +11870,7 @@ static void scr_dyn_throw_property(const ScrDyn *object, const char *key, size_t } if (!deleting) scr_jb_puts(&buffer, "'"); scr_throw_error(SCR_ERR_TYPE, scr_jb_finish(&buffer)); + if (!deleting) scr_dyn_note_assign_failure(); } /* One lookup of the own property decides the assignment: an own property @@ -11940,6 +11960,7 @@ static void scr_dyn_object_key_set(ScrDyn *recv, ScrStr *key, ScrDyn *value, con scr_jb_write(&buffer, key->data, key->len); scr_jb_puts(&buffer, ", object is not extensible"); scr_throw_error(SCR_ERR_TYPE, scr_jb_finish(&buffer)); + scr_dyn_note_assign_failure(); return; } scr_dyn_obj_set(recv, key->data, key->len, scr_dyn_retain(value)); @@ -12006,6 +12027,7 @@ void scr_dyn_key_set(ScrDyn *recv, ScrStr *key, ScrDyn *value) { if (key->len == 6 && memcmp(key->data, "length", 6) == 0) { if (recv->v.arr.frozen) { scr_array_frozen_error(3, recv->v.arr.len, 0, 0, 0); + scr_dyn_note_assign_failure(); return; } double number; @@ -12025,6 +12047,7 @@ void scr_dyn_key_set(ScrDyn *recv, ScrStr *key, ScrDyn *value) { while (recv->v.arr.len > length) { if (recv->v.arr.sealed && scr_dyn_arr_has_index(recv, recv->v.arr.len - 1)) { scr_array_frozen_error(5, recv->v.arr.len, (double)(recv->v.arr.len - 1), 0, 0); + scr_dyn_note_assign_failure(); return; } scr_dyn_release(recv->v.arr.items[--recv->v.arr.len]); @@ -12044,11 +12067,13 @@ void scr_dyn_key_set(ScrDyn *recv, ScrStr *key, ScrDyn *value) { if (scr_dyn_array_prototype_element_fence(recv)) return; if (recv->v.arr.frozen && idx < recv->v.arr.len && scr_dyn_arr_has_index(recv, idx)) { scr_array_frozen_error(0, recv->v.arr.len, (double)idx, 0, 0); + scr_dyn_note_assign_failure(); return; } if (recv->non_extensible && !scr_dyn_arr_has_index(recv, idx)) { /* An absent index, a hole included, is a property to add. */ scr_array_frozen_error(0, 0, (double)idx, 0, 0); + scr_dyn_note_assign_failure(); return; } if (idx > recv->v.arr.len + 1000000) { @@ -12145,6 +12170,19 @@ void scr_dyn_key_set(ScrDyn *recv, ScrStr *key, ScrDyn *value) { scr_throw_error(SCR_ERR_TYPE, scr_jb_finish(&b)); } +/* Sloppy-mode assignments (the compiler's IrModule.sloppyDynWrites). */ +void scr_dyn_key_set_sloppy(ScrDyn *recv, ScrStr *key, ScrDyn *value) { + scr_dyn_assign_failure = NULL; + scr_dyn_key_set(recv, key, value); + scr_dyn_sloppy_settle(); +} + +void scr_dyn_key_set_computed_sloppy(ScrDyn *recv, ScrDyn *key, ScrDyn *value) { + scr_dyn_assign_failure = NULL; + scr_dyn_key_set_computed(recv, key, value); + scr_dyn_sloppy_settle(); +} + void scr_dyn_key_set_computed(ScrDyn *recv, ScrDyn *key, ScrDyn *value) { if (key->kind == SCR_DYN_SYMBOL) { scr_dyn_symbol_key_set(recv, key, value); diff --git a/tests/corpus/frozen-record-untyped-writes.ts b/tests/corpus/frozen-record-untyped-writes.ts new file mode 100644 index 000000000..02ed6b5c6 --- /dev/null +++ b/tests/corpus/frozen-record-untyped-writes.ts @@ -0,0 +1,35 @@ +// A frozen native record or array seen through an untyped reference keeps +// its frozen state: strict-mode writes throw Node's TypeErrors and leave +// the value unchanged, and Object.isFrozen answers true through any name. +export {}; + +function write(target: unknown, key: string, value: unknown): void { + try { + (target as Record)[key] = value; + console.log("wrote", key); + } catch (e) { + console.log("threw", (e as Error).message); + } +} + +const literal = Object.freeze({ a: 1, b: "x" }); +function make(n: number) { + return Object.freeze({ a: n, tags: ["t"] }); +} +const made = make(2); +write(literal, "a", 5); +write(literal, "z", 5); +write(made, "a", 7); +write(made, "tags", []); +made.tags.push("u"); +console.log(literal.a, made.a, JSON.stringify(literal), JSON.stringify(made)); +console.log(Object.isFrozen(literal), Object.isFrozen(made), Object.isFrozen(made.tags)); + +const list = Object.freeze([1, 2]); +write(list, "0", 9); +write(list, "5", 9); +console.log(list[0], list.length, Object.isFrozen(list)); + +const open = { a: 1 }; +write(open, "a", 3); +console.log(open.a); diff --git a/tests/corpus/frozen-untyped-writes-sloppy.cjs b/tests/corpus/frozen-untyped-writes-sloppy.cjs new file mode 100644 index 000000000..c80f185a7 --- /dev/null +++ b/tests/corpus/frozen-untyped-writes-sloppy.cjs @@ -0,0 +1,43 @@ +// Sloppy-mode code ignores writes that strict mode refuses: assignments to +// frozen objects and arrays and to non-extensible objects leave them +// unchanged without an error, while strict functions still throw. +function write(target, key, value) { + target[key] = value; + console.log("after", key, JSON.stringify(target)); +} +function strictWrite(target, key, value) { + "use strict"; + try { + target[key] = value; + console.log("wrote", key); + } catch (e) { + console.log("threw", e.message); + } +} +const frozen = Object.freeze({ a: 1, b: "x" }); +write(frozen, "a", 5); +write(frozen, "z", 5); +strictWrite(frozen, "a", 5); +const closed = Object.preventExtensions(JSON.parse('{"a":1}')); +write(closed, "a", 2); +write(closed, "b", 2); +strictWrite(closed, "b", 2); +const list = Object.freeze([1, 2]); +write(list, "0", 9); +strictWrite(list, "0", 9); +const holder = {}; +Object.defineProperty(holder, "fixed", { value: 1, writable: false, enumerable: true }); +write(holder, "fixed", 2); +strictWrite(holder, "fixed", 2); +const withSetter = { + /** @param {number} x */ + set v(x) { + throw new Error("setter " + x); + }, +}; +try { + write(withSetter, "v", 1); +} catch (e) { + console.log("setter threw", e.message); +} +console.log(frozen.a, closed.b, list[0], holder.fixed); diff --git a/tests/harness/corpus-costs/frozen-record-untyped-writes.ts.json b/tests/harness/corpus-costs/frozen-record-untyped-writes.ts.json new file mode 100644 index 000000000..8c0e66c3c --- /dev/null +++ b/tests/harness/corpus-costs/frozen-record-untyped-writes.ts.json @@ -0,0 +1 @@ +{ "plain": 3000, "san": 3600 } diff --git a/tests/harness/corpus-costs/frozen-untyped-writes-sloppy.cjs.json b/tests/harness/corpus-costs/frozen-untyped-writes-sloppy.cjs.json new file mode 100644 index 000000000..8c0e66c3c --- /dev/null +++ b/tests/harness/corpus-costs/frozen-untyped-writes-sloppy.cjs.json @@ -0,0 +1 @@ +{ "plain": 3000, "san": 3600 } From d2abf522c8a645207d40f4e5a063d0bf737c1f70 Mon Sep 17 00:00:00 2001 From: Malte Ubl Date: Mon, 26 Oct 2026 19:48:26 -0700 Subject: [PATCH 51/52] Give the dynamic-dispatch test lowerer a source lookup Co-Authored-By: Claude Opus 5.5 --- .../src/frontend/lowering/class-dynamic-dispatch.test.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/compiler/src/frontend/lowering/class-dynamic-dispatch.test.ts b/packages/compiler/src/frontend/lowering/class-dynamic-dispatch.test.ts index bbdf271c0..3e7b7783e 100644 --- a/packages/compiler/src/frontend/lowering/class-dynamic-dispatch.test.ts +++ b/packages/compiler/src/frontend/lowering/class-dynamic-dispatch.test.ts @@ -41,6 +41,7 @@ function context() { protocolDispatches: new Map(), classMethodValueSelections: new Map(), isSubclassOf: () => false, + nodeAtLoc: () => null, } as unknown as Lowerer; const boxed = fn("box", [ statement({ From 47fd3973953f7358f4d3ba2cf0ee8732a26c807f Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 26 Oct 2026 22:24:00 -0500 Subject: [PATCH 52/52] Expect the unwind table attribute in the --target-cpu test's attribute group --- packages/cli/test/target-cpu.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/test/target-cpu.test.ts b/packages/cli/test/target-cpu.test.ts index 5bc6717c3..dec7de15b 100644 --- a/packages/cli/test/target-cpu.test.ts +++ b/packages/cli/test/target-cpu.test.ts @@ -54,7 +54,7 @@ test.runIf(process.platform === "linux" && process.arch === "x64")( expect(baseline).not.toContain("sanitize_address"); expect(await build(["--target-cpu=baseline"])).toBe(baseline); const v3 = await build(["--target-cpu=x86-64-v3"]); - expect(v3).toMatch(/^attributes #0 = \{ "target-cpu"="x86-64-v3" \}$/m); + expect(v3).toMatch(/^attributes #0 = \{ uwtable "target-cpu"="x86-64-v3" \}$/m); if (runsV3) expect((await execFileAsync(outPath)).stdout).toBe(expected); // The bootstrap's cached route builds without a level. expect(await build([], true)).toBe(baseline);

    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 %!!-sel)E{ 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%0DE=Av^&k=WY~q_kL31M*+h>3Dd80?6C_9%{5X8o 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

tfcd?(goQ$ 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 #$tk4o&(f1Ovx17 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¥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 &{#r>S-vyPp6JYGX>Q+`$&cQ8 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

9L;~`FQi7rOOJ^TUir0 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