- Revision
- 279449
- Author
- sbar...@apple.com
- Date
- 2021-06-30 23:07:33 -0700 (Wed, 30 Jun 2021)
Log Message
Turn off data ICs by default
https://bugs.webkit.org/show_bug.cgi?id=227334
<rdar://problem/79802812>
Reviewed by Yusuke Suzuki.
JSTests:
* microbenchmarks/deltablue-varargs.js:
* microbenchmarks/richards-try-catch.js:
Source/_javascript_Core:
There are GC crashes that are caused by access data IC sharing. This
patch is both turning off data IC sharing by default, and turning off data
ICs by default.
We should re-enable this once we figure out the issue:
https://bugs.webkit.org/show_bug.cgi?id=227551
Some of our testing modes are still running with data ICs on, so the code doesn't
bit rot. And a select few tests are running with data IC sharing on, for
similar reasons, even though we know it has issues. If those tests start
crashing, we'll just disable sharing completely until the issue is resolved.
* bytecode/PolymorphicAccess.cpp:
(JSC::PolymorphicAccess::regenerate):
* runtime/OptionsList.h:
Tools:
* Scripts/run-jsc-stress-tests:
Modified Paths
Diff
Modified: trunk/JSTests/ChangeLog (279448 => 279449)
--- trunk/JSTests/ChangeLog 2021-07-01 02:12:20 UTC (rev 279448)
+++ trunk/JSTests/ChangeLog 2021-07-01 06:07:33 UTC (rev 279449)
@@ -1,3 +1,14 @@
+2021-06-30 Saam Barati <sbar...@apple.com>
+
+ Turn off data ICs by default
+ https://bugs.webkit.org/show_bug.cgi?id=227334
+ <rdar://problem/79802812>
+
+ Reviewed by Yusuke Suzuki.
+
+ * microbenchmarks/deltablue-varargs.js:
+ * microbenchmarks/richards-try-catch.js:
+
2021-06-30 Yusuke Suzuki <ysuz...@apple.com>
[JSC] Stop generating default parameter code if class constructor is called without 'new'
Modified: trunk/JSTests/microbenchmarks/deltablue-varargs.js (279448 => 279449)
--- trunk/JSTests/microbenchmarks/deltablue-varargs.js 2021-07-01 02:12:20 UTC (rev 279448)
+++ trunk/JSTests/microbenchmarks/deltablue-varargs.js 2021-07-01 06:07:33 UTC (rev 279449)
@@ -1,4 +1,6 @@
//@ skip if $model == "Apple Watch Series 3" # added by mark-jsc-stress-test.py
+//@ requireOptions("--useDataIC=true", "--useDataICSharing=true")
+
// Copyright 2008 the V8 project authors. All rights reserved.
// Copyright 1996 John Maloney and Mario Wolczko.
Modified: trunk/JSTests/microbenchmarks/richards-try-catch.js (279448 => 279449)
--- trunk/JSTests/microbenchmarks/richards-try-catch.js 2021-07-01 02:12:20 UTC (rev 279448)
+++ trunk/JSTests/microbenchmarks/richards-try-catch.js 2021-07-01 06:07:33 UTC (rev 279449)
@@ -1,4 +1,6 @@
//@ skip if $model == "Apple Watch Series 3" # added by mark-jsc-stress-test.py
+//@ requireOptions("--useDataIC=true", "--useDataICSharing=true")
+
// Copyright 2006-2008 the V8 project authors. All rights reserved.
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
Modified: trunk/Source/_javascript_Core/ChangeLog (279448 => 279449)
--- trunk/Source/_javascript_Core/ChangeLog 2021-07-01 02:12:20 UTC (rev 279448)
+++ trunk/Source/_javascript_Core/ChangeLog 2021-07-01 06:07:33 UTC (rev 279449)
@@ -1,3 +1,27 @@
+2021-06-30 Saam Barati <sbar...@apple.com>
+
+ Turn off data ICs by default
+ https://bugs.webkit.org/show_bug.cgi?id=227334
+ <rdar://problem/79802812>
+
+ Reviewed by Yusuke Suzuki.
+
+ There are GC crashes that are caused by access data IC sharing. This
+ patch is both turning off data IC sharing by default, and turning off data
+ ICs by default.
+
+ We should re-enable this once we figure out the issue:
+ https://bugs.webkit.org/show_bug.cgi?id=227551
+
+ Some of our testing modes are still running with data ICs on, so the code doesn't
+ bit rot. And a select few tests are running with data IC sharing on, for
+ similar reasons, even though we know it has issues. If those tests start
+ crashing, we'll just disable sharing completely until the issue is resolved.
+
+ * bytecode/PolymorphicAccess.cpp:
+ (JSC::PolymorphicAccess::regenerate):
+ * runtime/OptionsList.h:
+
2021-06-30 Yusuke Suzuki <ysuz...@apple.com>
[JSC] Stop generating default parameter code if class constructor is called without 'new'
Modified: trunk/Source/_javascript_Core/bytecode/PolymorphicAccess.cpp (279448 => 279449)
--- trunk/Source/_javascript_Core/bytecode/PolymorphicAccess.cpp 2021-07-01 02:12:20 UTC (rev 279448)
+++ trunk/Source/_javascript_Core/bytecode/PolymorphicAccess.cpp 2021-07-01 06:07:33 UTC (rev 279449)
@@ -522,7 +522,7 @@
bool doesCalls = false;
bool doesJSGetterSetterCalls = false;
- bool canBeShared = true;
+ bool canBeShared = Options::useDataICSharing();
Vector<JSCell*> cellsToMark;
FixedVector<RefPtr<AccessCase>> keys(cases.size());
unsigned index = 0;
Modified: trunk/Source/_javascript_Core/runtime/OptionsList.h (279448 => 279449)
--- trunk/Source/_javascript_Core/runtime/OptionsList.h 2021-07-01 02:12:20 UTC (rev 279448)
+++ trunk/Source/_javascript_Core/runtime/OptionsList.h 2021-07-01 06:07:33 UTC (rev 279449)
@@ -546,8 +546,9 @@
v(Bool, useSharedArrayBuffer, false, Normal, nullptr) \
v(Bool, useTopLevelAwait, true, Normal, "allow the await keyword at the top level of a module.") \
v(Bool, verboseExecutablePoolAllocation, false, Normal, nullptr) \
- v(Bool, useDataIC, isARM64(), Normal, nullptr) \
+ v(Bool, useDataIC, false, Normal, nullptr) \
v(Bool, useDataICInOptimizingJIT, false, Normal, nullptr) \
+ v(Bool, useDataICSharing, false, Normal, nullptr) \
v(Bool, useBFI, false, Normal, "Allow ARM64 instruction selection of BFI") \
Modified: trunk/Tools/ChangeLog (279448 => 279449)
--- trunk/Tools/ChangeLog 2021-07-01 02:12:20 UTC (rev 279448)
+++ trunk/Tools/ChangeLog 2021-07-01 06:07:33 UTC (rev 279449)
@@ -1,3 +1,13 @@
+2021-06-30 Saam Barati <sbar...@apple.com>
+
+ Turn off data ICs by default
+ https://bugs.webkit.org/show_bug.cgi?id=227334
+ <rdar://problem/79802812>
+
+ Reviewed by Yusuke Suzuki.
+
+ * Scripts/run-jsc-stress-tests:
+
2021-06-30 Jonathan Bedard <jbed...@apple.com>
[webkitscmpy] Cache identifiers in Git checkouts
Modified: trunk/Tools/Scripts/run-jsc-stress-tests (279448 => 279449)
--- trunk/Tools/Scripts/run-jsc-stress-tests 2021-07-01 02:12:20 UTC (rev 279448)
+++ trunk/Tools/Scripts/run-jsc-stress-tests 2021-07-01 06:07:33 UTC (rev 279449)
@@ -788,7 +788,7 @@
end
def runFTLNoCJIT(*optionalTestSpecificOptions)
- run("misc-ftl-no-cjit", *(FTL_OPTIONS + NO_CJIT_OPTIONS + optionalTestSpecificOptions))
+ run("misc-ftl-no-cjit", "--useDataIC=true", *(FTL_OPTIONS + NO_CJIT_OPTIONS + optionalTestSpecificOptions))
end
def runFTLNoCJITB3O0(*optionalTestSpecificOptions)
@@ -796,7 +796,7 @@
end
def runFTLNoCJITValidate(*optionalTestSpecificOptions)
- run("ftl-no-cjit-validate-sampling-profiler", "--validateGraph=true", "--validateBCE=true", "--useSamplingProfiler=true", "--airForceIRCAllocator=true", *(FTL_OPTIONS + NO_CJIT_OPTIONS + optionalTestSpecificOptions))
+ run("ftl-no-cjit-validate-sampling-profiler", "--validateGraph=true", "--validateBCE=true", "--useSamplingProfiler=true", "--airForceIRCAllocator=true", "--useDataIC=true", *(FTL_OPTIONS + NO_CJIT_OPTIONS + optionalTestSpecificOptions))
end
def runFTLNoCJITNoPutStackValidate(*optionalTestSpecificOptions)
@@ -820,7 +820,7 @@
end
def runFTLEager(*optionalTestSpecificOptions)
- run("ftl-eager", "--airForceBriggsAllocator=true", "--useRandomizingExecutableIslandAllocation=true", "--forcePolyProto=true", *(FTL_OPTIONS + EAGER_OPTIONS + COLLECT_CONTINUOUSLY_OPTIONS + optionalTestSpecificOptions))
+ run("ftl-eager", "--airForceBriggsAllocator=true", "--useRandomizingExecutableIslandAllocation=true", "--forcePolyProto=true", "--useDataIC=true", *(FTL_OPTIONS + EAGER_OPTIONS + COLLECT_CONTINUOUSLY_OPTIONS + optionalTestSpecificOptions))
end
def runFTLEagerWatchdog(*optionalTestSpecificOptions)