[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