mirror of
https://github.com/bellard/quickjs.git
synced 2024-11-23 06:08:13 +08:00
74 lines
2.3 KiB
Diff
74 lines
2.3 KiB
Diff
diff --git a/harness/atomicsHelper.js b/harness/atomicsHelper.js
|
|
index 9828b15..4a5919d 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: 20,
|
|
+ small: 20,
|
|
+ long: 100,
|
|
+ huge: 1000,
|
|
};
|
|
|
|
/**
|
|
diff --git a/harness/regExpUtils.js b/harness/regExpUtils.js
|
|
index b55f3c6..396bad4 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 = Reflect.apply(String.fromCodePoint, null, loneCodePoints);
|
|
- for (let i = 0; i < ranges.length; i++) {
|
|
- const range = ranges[i];
|
|
- const start = range[0];
|
|
- const end = range[1];
|
|
- const codePoints = [];
|
|
- for (let length = 0, codePoint = start; codePoint <= end; codePoint++) {
|
|
- codePoints[length++] = codePoint;
|
|
- if (length === CHUNK_SIZE) {
|
|
- result += Reflect.apply(String.fromCodePoint, null, codePoints);
|
|
- codePoints.length = length = 0;
|
|
- }
|
|
- }
|
|
- result += Reflect.apply(String.fromCodePoint, null, codePoints);
|
|
+ let result = String.fromCodePoint.apply(null, loneCodePoints);
|
|
+ for (const [start, end] of ranges) {
|
|
+ result += codePointRange(start, end + 1);
|
|
}
|
|
return result;
|
|
}
|