Title: [279449] trunk
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)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to