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;
 }
