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