From a3a7247366a57e127a078edacc80d2bd078635ce Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Wed, 15 Jul 2026 13:31:26 +0200 Subject: [PATCH] Add a `makeSet` helper, to reduce function creation This replaces inline `() => new Set()` statements, and also makes some `getOrInsertComputed` calls slightly shorter. --- src/core/glyf.js | 10 +++------- src/core/image_utils.js | 4 ++-- src/pdf.js | 3 +++ src/shared/util.js | 2 ++ test/unit/pdf_spec.js | 2 ++ web/debugger.mjs | 4 ++-- web/pdfjs.js | 2 ++ 7 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/core/glyf.js b/src/core/glyf.js index 6b973fc0c..98add9ef8 100644 --- a/src/core/glyf.js +++ b/src/core/glyf.js @@ -13,6 +13,8 @@ * limitations under the License. */ +import { makeSet } from "../shared/util.js"; + const ON_CURVE_POINT = 1 << 0; const X_SHORT_VECTOR = 1 << 1; const Y_SHORT_VECTOR = 1 << 2; @@ -756,13 +758,7 @@ function pruneCompositeGlyphCycles(glyfTable, locaEntries, numGlyphs) { stack.push({ node: next, idx: 0 }); continue; } - - let removeSet = backEdges.get(top.node); - if (!removeSet) { - removeSet = new Set(); - backEdges.set(top.node, removeSet); - } - removeSet.add(compIdx); + backEdges.getOrInsertComputed(top.node, makeSet).add(compIdx); } } diff --git a/src/core/image_utils.js b/src/core/image_utils.js index 42089251b..6068f55d8 100644 --- a/src/core/image_utils.js +++ b/src/core/image_utils.js @@ -13,7 +13,7 @@ * limitations under the License. */ -import { assert, unreachable, warn } from "../shared/util.js"; +import { assert, makeSet, unreachable, warn } from "../shared/util.js"; import { RefSet, RefSetCache } from "./primitives.js"; class BaseLocalCache { @@ -228,7 +228,7 @@ class GlobalImageCache { } shouldCache(ref, pageIndex) { - const pageIndexSet = this._refCache.getOrPutComputed(ref, () => new Set()); + const pageIndexSet = this._refCache.getOrPutComputed(ref, makeSet); pageIndexSet.add(pageIndex); if (pageIndexSet.size < GlobalImageCache.NUM_PAGES_THRESHOLD) { diff --git a/src/pdf.js b/src/pdf.js index 067649c4d..6be3e8a62 100644 --- a/src/pdf.js +++ b/src/pdf.js @@ -36,6 +36,7 @@ import { makeArr, makeMap, makeObj, + makeSet, normalizeUnicode, OPS, PasswordException, @@ -131,6 +132,7 @@ globalThis.pdfjsLib = { makeArr, makeMap, makeObj, + makeSet, MathClamp, noContextMenu, normalizeUnicode, @@ -195,6 +197,7 @@ export { makeArr, makeMap, makeObj, + makeSet, MathClamp, noContextMenu, normalizeUnicode, diff --git a/src/shared/util.js b/src/shared/util.js index 34784ee00..18c0c533c 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -1135,6 +1135,7 @@ function _isValidExplicitDest(validRef, validName, dest) { const makeArr = () => []; const makeMap = () => new Map(); const makeObj = () => Object.create(null); +const makeSet = () => new Set(); // See https://developer.mozilla.org/en-US/docs/Web/API/Blob/bytes#browser_compatibility if ( @@ -1197,6 +1198,7 @@ export { makeArr, makeMap, makeObj, + makeSet, MeshFigureType, normalizeUnicode, objectSize, diff --git a/test/unit/pdf_spec.js b/test/unit/pdf_spec.js index 4140ca38f..57295541c 100644 --- a/test/unit/pdf_spec.js +++ b/test/unit/pdf_spec.js @@ -27,6 +27,7 @@ import { makeArr, makeMap, makeObj, + makeSet, normalizeUnicode, OPS, PasswordException, @@ -115,6 +116,7 @@ const expectedAPI = Object.freeze({ makeArr, makeMap, makeObj, + makeSet, MathClamp, noContextMenu, normalizeUnicode, diff --git a/web/debugger.mjs b/web/debugger.mjs index 273b35b43..16ebd141e 100644 --- a/web/debugger.mjs +++ b/web/debugger.mjs @@ -13,7 +13,7 @@ * limitations under the License. */ -const { OPS } = globalThis.pdfjsLib || (await import("pdfjs-lib")); +const { makeSet, OPS } = globalThis.pdfjsLib || (await import("pdfjs-lib")); const opMap = Object.create(null); for (const key in OPS) { @@ -460,7 +460,7 @@ class Stepper { for (const [dependentIdx, { dependencies: ownDependencies }] of metadata) { for (const dependencyIdx of ownDependencies) { dependents - .getOrInsertComputed(dependencyIdx, () => new Set()) + .getOrInsertComputed(dependencyIdx, makeSet) .add(dependentIdx); } } diff --git a/web/pdfjs.js b/web/pdfjs.js index cbf203601..d4e541166 100644 --- a/web/pdfjs.js +++ b/web/pdfjs.js @@ -47,6 +47,7 @@ const { makeArr, makeMap, makeObj, + makeSet, MathClamp, noContextMenu, normalizeUnicode, @@ -111,6 +112,7 @@ export { makeArr, makeMap, makeObj, + makeSet, MathClamp, noContextMenu, normalizeUnicode,