diff --git a/src/core/postscript/js_evaluator.js b/src/core/postscript/js_evaluator.js index ecef299cd..9d71c5380 100644 --- a/src/core/postscript/js_evaluator.js +++ b/src/core/postscript/js_evaluator.js @@ -795,9 +795,15 @@ class PSStackBasedInterpreter { * @param {number[]} range – flat [min0,max0, …] * @returns {Function} – `(src, srcOffset, dest, destOffset) => void` */ -function buildPostScriptJsFunction(source, domain, range) { +function buildPostScriptJsFunction( + source, + domain, + range, + forceInterpreter = false +) { const program = parsePostScriptFunction(source); - const ir = new PsJsCompiler(domain, range).compile(program); + const ir = + !forceInterpreter && new PsJsCompiler(domain, range).compile(program); if (ir) { return (src, srcOffset, dest, destOffset) => { PsJsCompiler.execute(ir, src, srcOffset, dest, destOffset); @@ -807,14 +813,4 @@ function buildPostScriptJsFunction(source, domain, range) { return PSStackBasedInterpreter.build(program, domain, range); } -/** - * @param {import("./ast.js").PsProgram} program - * @param {number[]} domain – flat [min0,max0, …] - * @param {number[]} range – flat [min0,max0, …] - * @returns {Function} – `(src, srcOffset, dest, destOffset) => void` - */ -function buildPostScriptProgramFunction(program, domain, range) { - return PSStackBasedInterpreter.build(program, domain, range); -} - -export { buildPostScriptJsFunction, buildPostScriptProgramFunction }; +export { buildPostScriptJsFunction }; diff --git a/test/unit/postscript_spec.js b/test/unit/postscript_spec.js index 5ad7d69e9..cdfdcc0b5 100644 --- a/test/unit/postscript_spec.js +++ b/test/unit/postscript_spec.js @@ -13,10 +13,6 @@ * limitations under the License. */ -import { - buildPostScriptJsFunction, - buildPostScriptProgramFunction, -} from "../../src/core/postscript/js_evaluator.js"; import { buildPostScriptWasmFunction, compilePostScriptToWasm, @@ -39,6 +35,7 @@ import { PsTernaryNode, PsUnaryNode, } from "../../src/core/postscript/ast.js"; +import { buildPostScriptJsFunction } from "../../src/core/postscript/js_evaluator.js"; // Precision argument for toBeCloseTo() in trigonometric tests. const TRIGONOMETRY_EPS = 1e-10; @@ -209,10 +206,11 @@ describe("PostScript Type 4 lexer, parser, and Wasm compiler", function () { // direct program interpreter otherwise. const jsFn = buildPostScriptJsFunction(src, domain, range); // Direct interpreter: always available, never uses PSStackToTree. - const interpFn = buildPostScriptProgramFunction( - parsePostScriptFunction(src), + const interpFn = buildPostScriptJsFunction( + src, domain, - range + range, + /* forceInterpreter = */ true ); if (!wasmFn) {