Diff
Modified: trunk/JSTests/ChangeLog (263311 => 263312)
--- trunk/JSTests/ChangeLog 2020-06-20 02:44:55 UTC (rev 263311)
+++ trunk/JSTests/ChangeLog 2020-06-20 03:17:41 UTC (rev 263312)
@@ -1,3 +1,28 @@
+2020-06-19 Yusuke Suzuki <ysuz...@apple.com>
+
+ [JSC] Attempt to reduce timeout failures on Apple Watch Series 3
+ https://bugs.webkit.org/show_bug.cgi?id=213419
+
+ Reviewed by Mark Lam.
+
+ Look into timeout tests, and
+
+ 1. If the test is using too many iterations, decrease the count.
+ 2. If the test is still useful while iteration count is not so much, try attaching `slow!` to see the effect on the bot.
+
+ * stress/memcpy-typed-loops.js:
+ * stress/op_bitand.js:
+ * stress/op_bitor.js:
+ * stress/op_bitxor.js:
+ * stress/op_mul-ConstVar.js:
+ * stress/op_mul-VarConst.js:
+ * stress/op_mul-VarVar.js:
+ * stress/op_sub-ConstVar.js:
+ * stress/op_sub-VarConst.js:
+ * stress/op_sub-VarVar.js:
+ * stress/set-iteration-oas.js:
+ * stress/value-to-boolean.js:
+
2020-06-19 Mark Lam <mark....@apple.com>
Make $vm properties non-configurable, non-enumerable, and non-writable.
Modified: trunk/JSTests/stress/memcpy-typed-loops.js (263311 => 263312)
--- trunk/JSTests/stress/memcpy-typed-loops.js 2020-06-20 02:44:55 UTC (rev 263311)
+++ trunk/JSTests/stress/memcpy-typed-loops.js 2020-06-20 03:17:41 UTC (rev 263312)
@@ -27,8 +27,9 @@
arr1[i] = i
}
-for (let i=0; i<10000000; ++i) noLoop(arr1, arr2)
-for (let i=0; i<10000000; ++i) invalidStart(arr1, arr2)
+const iterationCount = $vm.useJIT() ? 10000000 : 100000;
+for (let i=0; i<iterationCount; ++i) noLoop(arr1, arr2)
+for (let i=0; i<iterationCount; ++i) invalidStart(arr1, arr2)
arr2 = new Int32Array(arr1.length)
invalidStart(arr1, arr2)
Modified: trunk/JSTests/stress/op_bitand.js (263311 => 263312)
--- trunk/JSTests/stress/op_bitand.js 2020-06-20 02:44:55 UTC (rev 263311)
+++ trunk/JSTests/stress/op_bitand.js 2020-06-20 03:17:41 UTC (rev 263312)
@@ -1,4 +1,5 @@
//@ runFTLNoCJIT
+//@ slow! if $model == "Apple Watch Series 3"
// If all goes well, this test module will terminate silently. If not, it will print
// errors. See binary-op-test.js for debugging options if needed.
Modified: trunk/JSTests/stress/op_bitor.js (263311 => 263312)
--- trunk/JSTests/stress/op_bitor.js 2020-06-20 02:44:55 UTC (rev 263311)
+++ trunk/JSTests/stress/op_bitor.js 2020-06-20 03:17:41 UTC (rev 263312)
@@ -1,4 +1,5 @@
//@ runFTLNoCJIT
+//@ slow! if $model == "Apple Watch Series 3"
// If all goes well, this test module will terminate silently. If not, it will print
// errors. See binary-op-test.js for debugging options if needed.
Modified: trunk/JSTests/stress/op_bitxor.js (263311 => 263312)
--- trunk/JSTests/stress/op_bitxor.js 2020-06-20 02:44:55 UTC (rev 263311)
+++ trunk/JSTests/stress/op_bitxor.js 2020-06-20 03:17:41 UTC (rev 263312)
@@ -1,4 +1,5 @@
//@ runFTLNoCJIT
+//@ slow! if $model == "Apple Watch Series 3"
// If all goes well, this test module will terminate silently. If not, it will print
// errors. See binary-op-test.js for debugging options if needed.
Modified: trunk/JSTests/stress/op_mul-ConstVar.js (263311 => 263312)
--- trunk/JSTests/stress/op_mul-ConstVar.js 2020-06-20 02:44:55 UTC (rev 263311)
+++ trunk/JSTests/stress/op_mul-ConstVar.js 2020-06-20 03:17:41 UTC (rev 263312)
@@ -1,4 +1,5 @@
//@ runFTLNoCJIT
+//@ slow! if $model == "Apple Watch Series 3"
// If all goes well, this test module will terminate silently. If not, it will print
// errors. See binary-op-test.js for debugging options if needed.
Modified: trunk/JSTests/stress/op_mul-VarConst.js (263311 => 263312)
--- trunk/JSTests/stress/op_mul-VarConst.js 2020-06-20 02:44:55 UTC (rev 263311)
+++ trunk/JSTests/stress/op_mul-VarConst.js 2020-06-20 03:17:41 UTC (rev 263312)
@@ -1,4 +1,5 @@
//@ runFTLNoCJIT
+//@ slow! if $model == "Apple Watch Series 3"
// If all goes well, this test module will terminate silently. If not, it will print
// errors. See binary-op-test.js for debugging options if needed.
Modified: trunk/JSTests/stress/op_mul-VarVar.js (263311 => 263312)
--- trunk/JSTests/stress/op_mul-VarVar.js 2020-06-20 02:44:55 UTC (rev 263311)
+++ trunk/JSTests/stress/op_mul-VarVar.js 2020-06-20 03:17:41 UTC (rev 263312)
@@ -1,4 +1,5 @@
//@ runFTLNoCJIT
+//@ slow! if $model == "Apple Watch Series 3"
// If all goes well, this test module will terminate silently. If not, it will print
// errors. See binary-op-test.js for debugging options if needed.
Modified: trunk/JSTests/stress/op_sub-ConstVar.js (263311 => 263312)
--- trunk/JSTests/stress/op_sub-ConstVar.js 2020-06-20 02:44:55 UTC (rev 263311)
+++ trunk/JSTests/stress/op_sub-ConstVar.js 2020-06-20 03:17:41 UTC (rev 263312)
@@ -1,4 +1,5 @@
//@ runFTLNoCJIT
+//@ slow! if $model == "Apple Watch Series 3"
// If all goes well, this test module will terminate silently. If not, it will print
// errors. See binary-op-test.js for debugging options if needed.
Modified: trunk/JSTests/stress/op_sub-VarConst.js (263311 => 263312)
--- trunk/JSTests/stress/op_sub-VarConst.js 2020-06-20 02:44:55 UTC (rev 263311)
+++ trunk/JSTests/stress/op_sub-VarConst.js 2020-06-20 03:17:41 UTC (rev 263312)
@@ -1,4 +1,5 @@
//@ runFTLNoCJIT
+//@ slow! if $model == "Apple Watch Series 3"
// If all goes well, this test module will terminate silently. If not, it will print
// errors. See binary-op-test.js for debugging options if needed.
Modified: trunk/JSTests/stress/op_sub-VarVar.js (263311 => 263312)
--- trunk/JSTests/stress/op_sub-VarVar.js 2020-06-20 02:44:55 UTC (rev 263311)
+++ trunk/JSTests/stress/op_sub-VarVar.js 2020-06-20 03:17:41 UTC (rev 263312)
@@ -1,4 +1,5 @@
//@ runFTLNoCJIT
+//@ slow! if $model == "Apple Watch Series 3"
// If all goes well, this test module will terminate silently. If not, it will print
// errors. See binary-op-test.js for debugging options if needed.
Modified: trunk/JSTests/stress/set-iteration-oas.js (263311 => 263312)
--- trunk/JSTests/stress/set-iteration-oas.js 2020-06-20 02:44:55 UTC (rev 263311)
+++ trunk/JSTests/stress/set-iteration-oas.js 2020-06-20 03:17:41 UTC (rev 263312)
@@ -17,5 +17,6 @@
}
noInline(test);
-for (var i = 0; i < 1e6; ++i)
+const iterationCount = $vm.useJIT() ? 1e6 : 1e4;
+for (var i = 0; i < iterationCount; ++i)
shouldBe(test(set), 4950);
Modified: trunk/JSTests/stress/value-to-boolean.js (263311 => 263312)
--- trunk/JSTests/stress/value-to-boolean.js 2020-06-20 02:44:55 UTC (rev 263311)
+++ trunk/JSTests/stress/value-to-boolean.js 2020-06-20 03:17:41 UTC (rev 263312)
@@ -60,8 +60,6 @@
let masquerader = makeMasquerader();
for (let testFunction of testFunctions) {
for (let i = 0; i < 10000; i++) {
- for (let i = 0; i < 10000; i++) {
- assert(testFunction(masquerader) === false);
- }
+ assert(testFunction(masquerader) === false);
}
}
Modified: trunk/Source/_javascript_Core/ChangeLog (263311 => 263312)
--- trunk/Source/_javascript_Core/ChangeLog 2020-06-20 02:44:55 UTC (rev 263311)
+++ trunk/Source/_javascript_Core/ChangeLog 2020-06-20 03:17:41 UTC (rev 263312)
@@ -1,3 +1,14 @@
+2020-06-19 Yusuke Suzuki <ysuz...@apple.com>
+
+ [JSC] Attempt to reduce timeout failures on Apple Watch Series 3
+ https://bugs.webkit.org/show_bug.cgi?id=213419
+
+ Reviewed by Mark Lam.
+
+ * tools/JSDollarVM.cpp:
+ (JSC::functionUseJIT):
+ (JSC::JSDollarVM::finishCreation):
+
2020-06-19 Mark Lam <mark....@apple.com>
toString of String doesn't check integrity of structureID in one path.
Modified: trunk/Source/_javascript_Core/tools/JSDollarVM.cpp (263311 => 263312)
--- trunk/Source/_javascript_Core/tools/JSDollarVM.cpp 2020-06-20 02:44:55 UTC (rev 263311)
+++ trunk/Source/_javascript_Core/tools/JSDollarVM.cpp 2020-06-20 03:17:41 UTC (rev 263312)
@@ -3094,6 +3094,11 @@
#endif
}
+static EncodedJSValue JSC_HOST_CALL functionUseJIT(JSGlobalObject*, CallFrame*)
+{
+ return JSValue::encode(jsBoolean(Options::useJIT()));
+}
+
constexpr unsigned jsDollarVMPropertyAttributes = PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum | PropertyAttribute::DontDelete;
void JSDollarVM::finishCreation(VM& vm)
@@ -3237,6 +3242,7 @@
addFunction(vm, "assertEnabled", functionAssertEnabled, 0);
addFunction(vm, "isMemoryLimited", functionIsMemoryLimited, 0);
+ addFunction(vm, "useJIT", functionUseJIT, 0);
m_objectDoingSideEffectPutWithoutCorrectSlotStatusStructure.set(vm, this, ObjectDoingSideEffectPutWithoutCorrectSlotStatus::createStructure(vm, globalObject, jsNull()));
}