blob: c2be5fac99f7139c3140f14bd6f10f0d118cf9e6 [file] [edit]
(function() {
var result = 0;
var n = 3000;
function buildPattern(groupCount) {
var parts = [];
for (var i = 0; i < groupCount; ++i)
parts.push("(x" + i + "|y" + i + ")+");
return parts.join("") + "z";
}
function buildMatchingInput(groupCount) {
var s = "";
for (var i = 0; i < groupCount; ++i)
s += (i % 2 === 0 ? "x" : "y") + i;
return s + "z";
}
var groupCount = 250;
var re = new RegExp(buildPattern(groupCount));
var matchInput = buildMatchingInput(groupCount);
// Missing the trailing "z" forces a backtrack back out through every group's ParenContext
// (restoreParenContext) before the match finally fails.
var failInput = matchInput.slice(0, -1);
for (var i = 0; i < n; ++i) {
if (re.exec(matchInput) !== null)
++result;
if (re.exec(failInput) === null)
++result;
}
if (result != n * 2)
throw "Error: bad result: " + result;
})();