Skip to content

Commit

Permalink
string_decoder: fix performance regression
Browse files Browse the repository at this point in the history
This commit reverts the const usage introduced by 68a6abc
because v8 currently cannot optimize functions that contain
these uses of const (unsupported phi use of const variable).
The performance difference in this case can be up to ~130%
for non-ascii/binary string encodings.

PR-URL: #5134
Reviewed-By: Ben Noordhuis <[email protected]>
Reviewed-By: James M Snell <[email protected]>
  • Loading branch information
mscdex authored and Myles Borins committed Mar 21, 2016
1 parent 242a65e commit cc0e36f
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions lib/string_decoder.js
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ StringDecoder.prototype.write = function(buffer) {
var charReceived = this.charReceived;
var surrogateSize = this.surrogateSize;
var encoding = this.encoding;
var charCode;
// if our last write ended with an incomplete multibyte character
while (charLength) {
// determine how many remaining bytes this buffer has to offer for this char
Expand Down Expand Up @@ -96,7 +97,7 @@ StringDecoder.prototype.write = function(buffer) {
charStr = charBuffer.toString(encoding, 0, charLength);

// CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
const charCode = charStr.charCodeAt(charStr.length - 1);
charCode = charStr.charCodeAt(charStr.length - 1);
if (charCode >= 0xD800 && charCode <= 0xDBFF) {
charLength += surrogateSize;
charStr = '';
Expand Down Expand Up @@ -129,7 +130,7 @@ StringDecoder.prototype.write = function(buffer) {
charStr += buffer.toString(encoding, 0, end);

end = charStr.length - 1;
const charCode = charStr.charCodeAt(end);
charCode = charStr.charCodeAt(end);
// CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
if (charCode >= 0xD800 && charCode <= 0xDBFF) {
charLength += surrogateSize;
Expand Down

0 comments on commit cc0e36f

Please sign in to comment.