Right-size the array in getSampleArray().

This allows the JS engine to do a better job of allocating the right
number of elements for the array, avoiding some resizings. For the PDF
in #2504, this avoids 100s of MiBs of allocations in Firefox.
This commit is contained in:
Nicholas Nethercote 2014-08-11 21:26:09 -07:00
parent 0e4d9061b2
commit bcc31b666f

View File

@ -35,7 +35,7 @@ var PDFFunction = (function PDFFunctionClosure() {
} }
length *= outputSize; length *= outputSize;
var array = []; var array = new Array(length);
var codeSize = 0; var codeSize = 0;
var codeBuf = 0; var codeBuf = 0;
// 32 is a valid bps so shifting won't work // 32 is a valid bps so shifting won't work
@ -50,7 +50,7 @@ var PDFFunction = (function PDFFunctionClosure() {
codeSize += 8; codeSize += 8;
} }
codeSize -= bps; codeSize -= bps;
array.push((codeBuf >> codeSize) * sampleMul); array[i] = (codeBuf >> codeSize) * sampleMul;
codeBuf &= (1 << codeSize) - 1; codeBuf &= (1 << codeSize) - 1;
} }
return array; return array;