1diff --git a/harness/atomicsHelper.js b/harness/atomicsHelper.js 2index 9c1217351e..3c24755558 100644 3--- a/harness/atomicsHelper.js 4+++ b/harness/atomicsHelper.js 5@@ -227,10 +227,14 @@ $262.agent.waitUntil = function(typedArray, index, expected) { 6 * } 7 */ 8 $262.agent.timeouts = { 9- yield: 100, 10- small: 200, 11- long: 1000, 12- huge: 10000, 13+// yield: 100, 14+// small: 200, 15+// long: 1000, 16+// huge: 10000, 17+ yield: 20, 18+ small: 20, 19+ long: 100, 20+ huge: 1000, 21 }; 22 23 /** 24diff --git a/harness/regExpUtils.js b/harness/regExpUtils.js 25index be7039fda0..7b38abf8df 100644 26--- a/harness/regExpUtils.js 27+++ b/harness/regExpUtils.js 28@@ -6,24 +6,27 @@ description: | 29 defines: [buildString, testPropertyEscapes, matchValidator] 30 ---*/ 31 32+if ($262 && typeof $262.codePointRange === "function") { 33+ /* use C function to build the codePointRange (much faster with 34+ slow JS engines) */ 35+ codePointRange = $262.codePointRange; 36+} else { 37+ codePointRange = function codePointRange(start, end) { 38+ const codePoints = []; 39+ let length = 0; 40+ for (codePoint = start; codePoint < end; codePoint++) { 41+ codePoints[length++] = codePoint; 42+ } 43+ return String.fromCodePoint.apply(null, codePoints); 44+ } 45+} 46+ 47 function buildString({ loneCodePoints, ranges }) { 48- const CHUNK_SIZE = 10000; 49- let result = Reflect.apply(String.fromCodePoint, null, loneCodePoints); 50- for (let i = 0; i < ranges.length; i++) { 51- const range = ranges[i]; 52- const start = range[0]; 53- const end = range[1]; 54- const codePoints = []; 55- for (let length = 0, codePoint = start; codePoint <= end; codePoint++) { 56- codePoints[length++] = codePoint; 57- if (length === CHUNK_SIZE) { 58- result += Reflect.apply(String.fromCodePoint, null, codePoints); 59- codePoints.length = length = 0; 60- } 61+ let result = String.fromCodePoint.apply(null, loneCodePoints); 62+ for (const [start, end] of ranges) { 63+ result += codePointRange(start, end + 1); 64 } 65- result += Reflect.apply(String.fromCodePoint, null, codePoints); 66- } 67- return result; 68+ return result; 69 } 70 71 function testPropertyEscapes(regex, string, expression) { 72