From 3759c11f424ed74315ea660b96e861db5fb4350a Mon Sep 17 00:00:00 2001 From: Nicholas Nethercote Date: Wed, 12 Mar 2014 20:17:57 -0700 Subject: [PATCH] Avoid more allocations in bidi(). --- src/core/bidi.js | 14 ++++++++------ src/core/evaluator.js | 6 +----- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/core/bidi.js b/src/core/bidi.js index 566ed6cb1..39a15bd8a 100644 --- a/src/core/bidi.js +++ b/src/core/bidi.js @@ -140,9 +140,11 @@ var bidi = PDFJS.bidi = (function bidiClosure() { } } - function BidiResult(str, isLTR, vertical) { - this.str = str; - this.dir = (vertical ? 'ttb' : (isLTR ? 'ltr' : 'rtl')); + function createBidiText(str, isLTR, vertical) { + return { + str: str, + dir: (vertical ? 'ttb' : (isLTR ? 'ltr' : 'rtl')) + }; } // These are used in bidi(), which is called frequently. We re-use them on @@ -154,7 +156,7 @@ var bidi = PDFJS.bidi = (function bidiClosure() { var isLTR = true; var strLength = str.length; if (strLength === 0 || vertical) { - return new BidiResult(str, isLTR, vertical); + return createBidiText(str, isLTR, vertical); } // Get types and fill arrays @@ -188,7 +190,7 @@ var bidi = PDFJS.bidi = (function bidiClosure() { // - If more than 30% chars are rtl then string is primarily rtl if (numBidi === 0) { isLTR = true; - return new BidiResult(str, isLTR); + return createBidiText(str, isLTR); } if (startLevel == -1) { @@ -453,7 +455,7 @@ var bidi = PDFJS.bidi = (function bidiClosure() { result += ch; } } - return new BidiResult(result, isLTR); + return createBidiText(result, isLTR); } return bidi; diff --git a/src/core/evaluator.js b/src/core/evaluator.js index 226532187..f9d877a37 100644 --- a/src/core/evaluator.js +++ b/src/core/evaluator.js @@ -812,11 +812,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() { if (chunkBuf.length > 0) { var chunk = chunkBuf.join(''); - var bidiResult = PDFJS.bidi(chunk, -1, font.vertical); - var bidiText = { - str: bidiResult.str, - dir: bidiResult.dir - }; + var bidiText = PDFJS.bidi(chunk, -1, font.vertical); var renderParams = textState.calcRenderParams(preprocessor.ctm); var fontHeight = textState.fontSize * renderParams.vScale; var fontAscent = font.ascent ? font.ascent * fontHeight :