| diff --git a/harness/atomicsHelper.js b/harness/atomicsHelper.js |
| index 9828b15..9e24d64 100644 |
| --- a/harness/atomicsHelper.js |
| +++ b/harness/atomicsHelper.js |
| @@ -272,10 +272,14 @@ $262.agent.waitUntil = function(typedArray, index, expected) { |
| * } |
| */ |
| $262.agent.timeouts = { |
| - yield: 100, |
| - small: 200, |
| - long: 1000, |
| - huge: 10000, |
| +// yield: 100, |
| +// small: 200, |
| +// long: 1000, |
| +// huge: 10000, |
| + yield: 40, |
| + small: 40, |
| + long: 200, |
| + huge: 1000, |
| }; |
| |
| /** |
| diff --git a/harness/regExpUtils.js b/harness/regExpUtils.js |
| index b397be0..c197ddc 100644 |
| --- a/harness/regExpUtils.js |
| +++ b/harness/regExpUtils.js |
| @@ -6,27 +6,30 @@ description: | |
| defines: [buildString, testPropertyEscapes, testPropertyOfStrings, testExtendedCharacterClass, matchValidator] |
| ---*/ |
| |
| +if ($262 && typeof $262.codePointRange === "function") { |
| + /* use C function to build the codePointRange (much faster with |
| + slow JS engines) */ |
| + codePointRange = $262.codePointRange; |
| +} else { |
| + codePointRange = function codePointRange(start, end) { |
| + const codePoints = []; |
| + let length = 0; |
| + for (codePoint = start; codePoint < end; codePoint++) { |
| + codePoints[length++] = codePoint; |
| + } |
| + return String.fromCodePoint.apply(null, codePoints); |
| + } |
| +} |
| + |
| function buildString(args) { |
| // Use member expressions rather than destructuring `args` for improved |
| // compatibility with engines that only implement assignment patterns |
| // partially or not at all. |
| const loneCodePoints = args.loneCodePoints; |
| const ranges = args.ranges; |
| - const CHUNK_SIZE = 10000; |
| let result = String.fromCodePoint.apply(null, loneCodePoints); |
| - for (let i = 0; i < ranges.length; i++) { |
| - let range = ranges[i]; |
| - let start = range[0]; |
| - let end = range[1]; |
| - let codePoints = []; |
| - for (let length = 0, codePoint = start; codePoint <= end; codePoint++) { |
| - codePoints[length++] = codePoint; |
| - if (length === CHUNK_SIZE) { |
| - result += String.fromCodePoint.apply(null, codePoints); |
| - codePoints.length = length = 0; |
| - } |
| - } |
| - result += String.fromCodePoint.apply(null, codePoints); |
| + for (const [start, end] of ranges) { |
| + result += codePointRange(start, end + 1); |
| } |
| return result; |
| } |