[Pkg-javascript-commits] [pdf.js] 167/414: Lazify OP_MAP.
David Prévot
taffit at moszumanska.debian.org
Tue Jun 28 17:12:18 UTC 2016
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository pdf.js.
commit d6adf8415998ee7cf85013bf973bed65f6c37874
Author: Yury Delendik <ydelendik at mozilla.com>
Date: Thu Jan 21 16:43:27 2016 -0600
Lazify OP_MAP.
---
src/core/evaluator.js | 183 +++++++++++++++++++++++++-------------------------
1 file changed, 93 insertions(+), 90 deletions(-)
diff --git a/src/core/evaluator.js b/src/core/evaluator.js
index b0f56ac..22ab870 100644
--- a/src/core/evaluator.js
+++ b/src/core/evaluator.js
@@ -61,6 +61,7 @@ var info = sharedUtil.info;
var isArray = sharedUtil.isArray;
var isNum = sharedUtil.isNum;
var isString = sharedUtil.isString;
+var getLookupTableFactory = sharedUtil.getLookupTableFactory;
var warn = sharedUtil.warn;
var Dict = corePrimitives.Dict;
var Name = corePrimitives.Name;
@@ -2336,119 +2337,121 @@ var EvaluatorPreprocessor = (function EvaluatorPreprocessorClosure() {
//
// If variableArgs === true: [0, `numArgs`] expected
// If variableArgs === false: exactly `numArgs` expected
- var OP_MAP = {
+ var getOPMap = getLookupTableFactory(function (t) {
// Graphic state
- w: { id: OPS.setLineWidth, numArgs: 1, variableArgs: false },
- J: { id: OPS.setLineCap, numArgs: 1, variableArgs: false },
- j: { id: OPS.setLineJoin, numArgs: 1, variableArgs: false },
- M: { id: OPS.setMiterLimit, numArgs: 1, variableArgs: false },
- d: { id: OPS.setDash, numArgs: 2, variableArgs: false },
- ri: { id: OPS.setRenderingIntent, numArgs: 1, variableArgs: false },
- i: { id: OPS.setFlatness, numArgs: 1, variableArgs: false },
- gs: { id: OPS.setGState, numArgs: 1, variableArgs: false },
- q: { id: OPS.save, numArgs: 0, variableArgs: false },
- Q: { id: OPS.restore, numArgs: 0, variableArgs: false },
- cm: { id: OPS.transform, numArgs: 6, variableArgs: false },
+ t['w'] = { id: OPS.setLineWidth, numArgs: 1, variableArgs: false };
+ t['J'] = { id: OPS.setLineCap, numArgs: 1, variableArgs: false };
+ t['j'] = { id: OPS.setLineJoin, numArgs: 1, variableArgs: false };
+ t['M'] = { id: OPS.setMiterLimit, numArgs: 1, variableArgs: false };
+ t['d'] = { id: OPS.setDash, numArgs: 2, variableArgs: false };
+ t['ri'] = { id: OPS.setRenderingIntent, numArgs: 1, variableArgs: false };
+ t['i'] = { id: OPS.setFlatness, numArgs: 1, variableArgs: false };
+ t['gs'] = { id: OPS.setGState, numArgs: 1, variableArgs: false };
+ t['q'] = { id: OPS.save, numArgs: 0, variableArgs: false };
+ t['Q'] = { id: OPS.restore, numArgs: 0, variableArgs: false };
+ t['cm'] = { id: OPS.transform, numArgs: 6, variableArgs: false };
// Path
- m: { id: OPS.moveTo, numArgs: 2, variableArgs: false },
- l: { id: OPS.lineTo, numArgs: 2, variableArgs: false },
- c: { id: OPS.curveTo, numArgs: 6, variableArgs: false },
- v: { id: OPS.curveTo2, numArgs: 4, variableArgs: false },
- y: { id: OPS.curveTo3, numArgs: 4, variableArgs: false },
- h: { id: OPS.closePath, numArgs: 0, variableArgs: false },
- re: { id: OPS.rectangle, numArgs: 4, variableArgs: false },
- S: { id: OPS.stroke, numArgs: 0, variableArgs: false },
- s: { id: OPS.closeStroke, numArgs: 0, variableArgs: false },
- f: { id: OPS.fill, numArgs: 0, variableArgs: false },
- F: { id: OPS.fill, numArgs: 0, variableArgs: false },
- 'f*': { id: OPS.eoFill, numArgs: 0, variableArgs: false },
- B: { id: OPS.fillStroke, numArgs: 0, variableArgs: false },
- 'B*': { id: OPS.eoFillStroke, numArgs: 0, variableArgs: false },
- b: { id: OPS.closeFillStroke, numArgs: 0, variableArgs: false },
- 'b*': { id: OPS.closeEOFillStroke, numArgs: 0, variableArgs: false },
- n: { id: OPS.endPath, numArgs: 0, variableArgs: false },
+ t['m'] = { id: OPS.moveTo, numArgs: 2, variableArgs: false };
+ t['l'] = { id: OPS.lineTo, numArgs: 2, variableArgs: false };
+ t['c'] = { id: OPS.curveTo, numArgs: 6, variableArgs: false };
+ t['v'] = { id: OPS.curveTo2, numArgs: 4, variableArgs: false };
+ t['y'] = { id: OPS.curveTo3, numArgs: 4, variableArgs: false };
+ t['h'] = { id: OPS.closePath, numArgs: 0, variableArgs: false };
+ t['re'] = { id: OPS.rectangle, numArgs: 4, variableArgs: false };
+ t['S'] = { id: OPS.stroke, numArgs: 0, variableArgs: false };
+ t['s'] = { id: OPS.closeStroke, numArgs: 0, variableArgs: false };
+ t['f'] = { id: OPS.fill, numArgs: 0, variableArgs: false };
+ t['F'] = { id: OPS.fill, numArgs: 0, variableArgs: false };
+ t['f*'] = { id: OPS.eoFill, numArgs: 0, variableArgs: false };
+ t['B'] = { id: OPS.fillStroke, numArgs: 0, variableArgs: false };
+ t['B*'] = { id: OPS.eoFillStroke, numArgs: 0, variableArgs: false };
+ t['b'] = { id: OPS.closeFillStroke, numArgs: 0, variableArgs: false };
+ t['b*'] = { id: OPS.closeEOFillStroke, numArgs: 0, variableArgs: false };
+ t['n'] = { id: OPS.endPath, numArgs: 0, variableArgs: false };
// Clipping
- W: { id: OPS.clip, numArgs: 0, variableArgs: false },
- 'W*': { id: OPS.eoClip, numArgs: 0, variableArgs: false },
+ t['W'] = { id: OPS.clip, numArgs: 0, variableArgs: false };
+ t['W*'] = { id: OPS.eoClip, numArgs: 0, variableArgs: false };
// Text
- BT: { id: OPS.beginText, numArgs: 0, variableArgs: false },
- ET: { id: OPS.endText, numArgs: 0, variableArgs: false },
- Tc: { id: OPS.setCharSpacing, numArgs: 1, variableArgs: false },
- Tw: { id: OPS.setWordSpacing, numArgs: 1, variableArgs: false },
- Tz: { id: OPS.setHScale, numArgs: 1, variableArgs: false },
- TL: { id: OPS.setLeading, numArgs: 1, variableArgs: false },
- Tf: { id: OPS.setFont, numArgs: 2, variableArgs: false },
- Tr: { id: OPS.setTextRenderingMode, numArgs: 1, variableArgs: false },
- Ts: { id: OPS.setTextRise, numArgs: 1, variableArgs: false },
- Td: { id: OPS.moveText, numArgs: 2, variableArgs: false },
- TD: { id: OPS.setLeadingMoveText, numArgs: 2, variableArgs: false },
- Tm: { id: OPS.setTextMatrix, numArgs: 6, variableArgs: false },
- 'T*': { id: OPS.nextLine, numArgs: 0, variableArgs: false },
- Tj: { id: OPS.showText, numArgs: 1, variableArgs: false },
- TJ: { id: OPS.showSpacedText, numArgs: 1, variableArgs: false },
- '\'': { id: OPS.nextLineShowText, numArgs: 1, variableArgs: false },
- '"': { id: OPS.nextLineSetSpacingShowText, numArgs: 3,
- variableArgs: false },
+ t['BT'] = { id: OPS.beginText, numArgs: 0, variableArgs: false };
+ t['ET'] = { id: OPS.endText, numArgs: 0, variableArgs: false };
+ t['Tc'] = { id: OPS.setCharSpacing, numArgs: 1, variableArgs: false };
+ t['Tw'] = { id: OPS.setWordSpacing, numArgs: 1, variableArgs: false };
+ t['Tz'] = { id: OPS.setHScale, numArgs: 1, variableArgs: false };
+ t['TL'] = { id: OPS.setLeading, numArgs: 1, variableArgs: false };
+ t['Tf'] = { id: OPS.setFont, numArgs: 2, variableArgs: false };
+ t['Tr'] = { id: OPS.setTextRenderingMode, numArgs: 1, variableArgs: false };
+ t['Ts'] = { id: OPS.setTextRise, numArgs: 1, variableArgs: false };
+ t['Td'] = { id: OPS.moveText, numArgs: 2, variableArgs: false };
+ t['TD'] = { id: OPS.setLeadingMoveText, numArgs: 2, variableArgs: false };
+ t['Tm'] = { id: OPS.setTextMatrix, numArgs: 6, variableArgs: false };
+ t['T*'] = { id: OPS.nextLine, numArgs: 0, variableArgs: false };
+ t['Tj'] = { id: OPS.showText, numArgs: 1, variableArgs: false };
+ t['TJ'] = { id: OPS.showSpacedText, numArgs: 1, variableArgs: false };
+ t['\''] = { id: OPS.nextLineShowText, numArgs: 1, variableArgs: false };
+ t['"'] = { id: OPS.nextLineSetSpacingShowText, numArgs: 3,
+ variableArgs: false };
// Type3 fonts
- d0: { id: OPS.setCharWidth, numArgs: 2, variableArgs: false },
- d1: { id: OPS.setCharWidthAndBounds, numArgs: 6, variableArgs: false },
+ t['d0'] = { id: OPS.setCharWidth, numArgs: 2, variableArgs: false };
+ t['d1'] = { id: OPS.setCharWidthAndBounds, numArgs: 6,
+ variableArgs: false };
// Color
- CS: { id: OPS.setStrokeColorSpace, numArgs: 1, variableArgs: false },
- cs: { id: OPS.setFillColorSpace, numArgs: 1, variableArgs: false },
- SC: { id: OPS.setStrokeColor, numArgs: 4, variableArgs: true },
- SCN: { id: OPS.setStrokeColorN, numArgs: 33, variableArgs: true },
- sc: { id: OPS.setFillColor, numArgs: 4, variableArgs: true },
- scn: { id: OPS.setFillColorN, numArgs: 33, variableArgs: true },
- G: { id: OPS.setStrokeGray, numArgs: 1, variableArgs: false },
- g: { id: OPS.setFillGray, numArgs: 1, variableArgs: false },
- RG: { id: OPS.setStrokeRGBColor, numArgs: 3, variableArgs: false },
- rg: { id: OPS.setFillRGBColor, numArgs: 3, variableArgs: false },
- K: { id: OPS.setStrokeCMYKColor, numArgs: 4, variableArgs: false },
- k: { id: OPS.setFillCMYKColor, numArgs: 4, variableArgs: false },
+ t['CS'] = { id: OPS.setStrokeColorSpace, numArgs: 1, variableArgs: false };
+ t['cs'] = { id: OPS.setFillColorSpace, numArgs: 1, variableArgs: false };
+ t['SC'] = { id: OPS.setStrokeColor, numArgs: 4, variableArgs: true };
+ t['SCN'] = { id: OPS.setStrokeColorN, numArgs: 33, variableArgs: true };
+ t['sc'] = { id: OPS.setFillColor, numArgs: 4, variableArgs: true };
+ t['scn'] = { id: OPS.setFillColorN, numArgs: 33, variableArgs: true };
+ t['G'] = { id: OPS.setStrokeGray, numArgs: 1, variableArgs: false };
+ t['g'] = { id: OPS.setFillGray, numArgs: 1, variableArgs: false };
+ t['RG'] = { id: OPS.setStrokeRGBColor, numArgs: 3, variableArgs: false };
+ t['rg'] = { id: OPS.setFillRGBColor, numArgs: 3, variableArgs: false };
+ t['K'] = { id: OPS.setStrokeCMYKColor, numArgs: 4, variableArgs: false };
+ t['k'] = { id: OPS.setFillCMYKColor, numArgs: 4, variableArgs: false };
// Shading
- sh: { id: OPS.shadingFill, numArgs: 1, variableArgs: false },
+ t['sh'] = { id: OPS.shadingFill, numArgs: 1, variableArgs: false };
// Images
- BI: { id: OPS.beginInlineImage, numArgs: 0, variableArgs: false },
- ID: { id: OPS.beginImageData, numArgs: 0, variableArgs: false },
- EI: { id: OPS.endInlineImage, numArgs: 1, variableArgs: false },
+ t['BI'] = { id: OPS.beginInlineImage, numArgs: 0, variableArgs: false };
+ t['ID'] = { id: OPS.beginImageData, numArgs: 0, variableArgs: false };
+ t['EI'] = { id: OPS.endInlineImage, numArgs: 1, variableArgs: false };
// XObjects
- Do: { id: OPS.paintXObject, numArgs: 1, variableArgs: false },
- MP: { id: OPS.markPoint, numArgs: 1, variableArgs: false },
- DP: { id: OPS.markPointProps, numArgs: 2, variableArgs: false },
- BMC: { id: OPS.beginMarkedContent, numArgs: 1, variableArgs: false },
- BDC: { id: OPS.beginMarkedContentProps, numArgs: 2,
- variableArgs: false },
- EMC: { id: OPS.endMarkedContent, numArgs: 0, variableArgs: false },
+ t['Do'] = { id: OPS.paintXObject, numArgs: 1, variableArgs: false };
+ t['MP'] = { id: OPS.markPoint, numArgs: 1, variableArgs: false };
+ t['DP'] = { id: OPS.markPointProps, numArgs: 2, variableArgs: false };
+ t['BMC'] = { id: OPS.beginMarkedContent, numArgs: 1, variableArgs: false };
+ t['BDC'] = { id: OPS.beginMarkedContentProps, numArgs: 2,
+ variableArgs: false };
+ t['EMC'] = { id: OPS.endMarkedContent, numArgs: 0, variableArgs: false };
// Compatibility
- BX: { id: OPS.beginCompat, numArgs: 0, variableArgs: false },
- EX: { id: OPS.endCompat, numArgs: 0, variableArgs: false },
+ t['BX'] = { id: OPS.beginCompat, numArgs: 0, variableArgs: false };
+ t['EX'] = { id: OPS.endCompat, numArgs: 0, variableArgs: false };
// (reserved partial commands for the lexer)
- BM: null,
- BD: null,
- 'true': null,
- fa: null,
- fal: null,
- fals: null,
- 'false': null,
- nu: null,
- nul: null,
- 'null': null
- };
+ t['BM'] = null;
+ t['BD'] = null;
+ t['true'] = null;
+ t['fa'] = null;
+ t['fal'] = null;
+ t['fals'] = null;
+ t['false'] = null;
+ t['nu'] = null;
+ t['nul'] = null;
+ t['null'] = null;
+ });
function EvaluatorPreprocessor(stream, xref, stateManager) {
- // TODO(mduan): pass array of knownCommands rather than OP_MAP
+ this.opMap = getOPMap();
+ // TODO(mduan): pass array of knownCommands rather than this.opMap
// dictionary
- this.parser = new Parser(new Lexer(stream, OP_MAP), false, xref);
+ this.parser = new Parser(new Lexer(stream, this.opMap), false, xref);
this.stateManager = stateManager;
this.nonProcessedArgs = [];
}
@@ -2486,7 +2489,7 @@ var EvaluatorPreprocessor = (function EvaluatorPreprocessorClosure() {
if (isCmd(obj)) {
var cmd = obj.cmd;
// Check that the command is valid
- var opSpec = OP_MAP[cmd];
+ var opSpec = this.opMap[cmd];
if (!opSpec) {
warn('Unknown command "' + cmd + '"');
continue;
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/pdf.js.git
More information about the Pkg-javascript-commits
mailing list