Handrolling and checking char by char is no longer faster than just
using toLowerCase and strict comparison.

PR-URL: https://github.com/nodejs/node/pull/20131
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Yuta Hiroto <hello@hiroppy.me>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
This commit is contained in:
Anatoli Papirovski 2018-04-18 14:57:28 +02:00 коммит произвёл James M Snell
Родитель f4a559b240
Коммит c449eb5e8a
1 изменённых файлов: 3 добавлений и 17 удалений

Просмотреть файл

@ -58,24 +58,10 @@ var RE_CONN_VALUES = /(?:^|\W)close|upgrade(?:$|\W)/ig;
var RE_TE_CHUNKED = common.chunkExpression; var RE_TE_CHUNKED = common.chunkExpression;
// isCookieField performs a case-insensitive comparison of a provided string // isCookieField performs a case-insensitive comparison of a provided string
// against the word "cookie." This method (at least as of V8 5.4) is faster than // against the word "cookie." As of V8 6.6 this is faster than handrolling or
// the equivalent case-insensitive regexp, even if isCookieField does not get // using a case-insensitive RegExp.
// inlined.
function isCookieField(s) { function isCookieField(s) {
if (s.length !== 6) return false; return s.length === 6 && s.toLowerCase() === 'cookie';
var ch = s.charCodeAt(0);
if (ch !== 99 && ch !== 67) return false;
ch = s.charCodeAt(1);
if (ch !== 111 && ch !== 79) return false;
ch = s.charCodeAt(2);
if (ch !== 111 && ch !== 79) return false;
ch = s.charCodeAt(3);
if (ch !== 107 && ch !== 75) return false;
ch = s.charCodeAt(4);
if (ch !== 105 && ch !== 73) return false;
ch = s.charCodeAt(5);
if (ch !== 101 && ch !== 69) return false;
return true;
} }
function noopPendingOutput(amount) {} function noopPendingOutput(amount) {}