Merge pull request #959 from jviereck/cache_cmds
Cache Cmd object to reduce number of created objects
This commit is contained in:
commit
eaba65b5dc
11
src/obj.js
11
src/obj.js
@ -22,6 +22,17 @@ var Cmd = (function CmdClosure() {
|
||||
Cmd.prototype = {
|
||||
};
|
||||
|
||||
|
||||
var cmdCache = {};
|
||||
|
||||
Cmd.get = function cmdGet(cmd) {
|
||||
var cmdValue = cmdCache[cmd];
|
||||
if (cmdValue)
|
||||
return cmdValue;
|
||||
|
||||
return cmdCache[cmd] = new Cmd(cmd);
|
||||
};
|
||||
|
||||
return Cmd;
|
||||
})();
|
||||
|
||||
|
@ -157,7 +157,7 @@ var Parser = (function ParserClosure() {
|
||||
imageStream = this.filter(imageStream, dict, length);
|
||||
imageStream.parameters = dict;
|
||||
|
||||
this.buf2 = new Cmd('EI');
|
||||
this.buf2 = Cmd.get('EI');
|
||||
this.shift();
|
||||
|
||||
return imageStream;
|
||||
@ -496,14 +496,14 @@ var Lexer = (function LexerClosure() {
|
||||
// array punctuation
|
||||
case '[':
|
||||
case ']':
|
||||
return new Cmd(ch);
|
||||
return Cmd.get(ch);
|
||||
// hex string or dict punctuation
|
||||
case '<':
|
||||
ch = stream.lookChar();
|
||||
if (ch == '<') {
|
||||
// dict punctuation
|
||||
stream.skip();
|
||||
return new Cmd('<<');
|
||||
return Cmd.get('<<');
|
||||
}
|
||||
return this.getHexString(ch);
|
||||
// dict punctuation
|
||||
@ -511,11 +511,11 @@ var Lexer = (function LexerClosure() {
|
||||
ch = stream.lookChar();
|
||||
if (ch == '>') {
|
||||
stream.skip();
|
||||
return new Cmd('>>');
|
||||
return Cmd.get('>>');
|
||||
}
|
||||
case '{':
|
||||
case '}':
|
||||
return new Cmd(ch);
|
||||
return Cmd.get(ch);
|
||||
// fall through
|
||||
case ')':
|
||||
error('Illegal character: ' + ch);
|
||||
@ -538,7 +538,7 @@ var Lexer = (function LexerClosure() {
|
||||
return false;
|
||||
if (str == 'null')
|
||||
return null;
|
||||
return new Cmd(str);
|
||||
return Cmd.get(str);
|
||||
},
|
||||
skipToNextLine: function lexerSkipToNextLine() {
|
||||
var stream = this.stream;
|
||||
|
Loading…
Reference in New Issue
Block a user