Bug 1081175 - Replace vector instead of appending to it in ChoiceNode::FilterASCII to fix a bad performance issue. r=bhackett

This commit is contained in:
Jan de Mooij 2014-10-11 16:38:57 +02:00
parent 38a5145346
commit 2c8ec11d7f
2 changed files with 21 additions and 1 deletions

View File

@ -1001,7 +1001,7 @@ ChoiceNode::FilterASCII(int depth, bool ignore_case)
}
}
alternatives_.appendAll(new_alternatives);
alternatives_ = Move(new_alternatives);
return this;
}

View File

@ -0,0 +1,20 @@
var input = "webkit-search-cancel-button-aaaaaaa-bbbbb-ccccccc-dddddddd,"
var bad_regex = '([a-u-]|\\u0080|\\u0100)*[d]';
function forceUnicode(s) {
return ('\uffff' + s).replace(/^\uffff/, '');
}
function testRegex(input) {
for (var i = 0; i < input.length; i++) {
var sub = input.substring(0, i + 1);
var res = sub.match(bad_regex);
if (i >= 50) {
assertEq(res.length, 2);
assertEq(res[1], sub.substr(-2, 1));
} else {
assertEq(res, null);
}
}
}
testRegex(input);
testRegex(forceUnicode(input));