Title: [234180] trunk/Source/_javascript_Core
- Revision
- 234180
- Author
- [email protected]
- Date
- 2018-07-24 16:42:23 -0700 (Tue, 24 Jul 2018)
Log Message
Don't modify Options when setting JIT thread limits
https://bugs.webkit.org/show_bug.cgi?id=187886
Reviewed by Filip Pizlo.
Previously, when setting the JIT thread limit prior to the worklist
initialization, it'd be set via Options, which didn't work if Options
hadn't been initialized yet. Change it to use a static variable in the
Worklist instead.
* API/JSVirtualMachine.mm:
(+[JSVirtualMachine setNumberOfDFGCompilerThreads:]):
(+[JSVirtualMachine setNumberOfFTLCompilerThreads:]):
* API/tests/testapi.mm:
(testObjectiveCAPIMain):
* dfg/DFGWorklist.cpp:
(JSC::DFG::getNumberOfDFGCompilerThreads):
(JSC::DFG::getNumberOfFTLCompilerThreads):
(JSC::DFG::setNumberOfDFGCompilerThreads):
(JSC::DFG::setNumberOfFTLCompilerThreads):
(JSC::DFG::ensureGlobalDFGWorklist):
(JSC::DFG::ensureGlobalFTLWorklist):
* dfg/DFGWorklist.h:
Modified Paths
Diff
Modified: trunk/Source/_javascript_Core/API/JSVirtualMachine.mm (234179 => 234180)
--- trunk/Source/_javascript_Core/API/JSVirtualMachine.mm 2018-07-24 23:29:50 UTC (rev 234179)
+++ trunk/Source/_javascript_Core/API/JSVirtualMachine.mm 2018-07-24 23:42:23 UTC (rev 234180)
@@ -282,10 +282,8 @@
JSC::DFG::Worklist* worklist = JSC::DFG::existingGlobalDFGWorklistOrNull();
if (worklist)
return worklist->setNumberOfThreads(numberOfThreads, JSC::Options::priorityDeltaOfDFGCompilerThreads());
-
- auto currentNumberOfThreads = JSC::Options::numberOfDFGCompilerThreads();
- JSC::Options::numberOfDFGCompilerThreads() = numberOfThreads;
- return currentNumberOfThreads;
+ else
+ return JSC::DFG::setNumberOfDFGCompilerThreads(numberOfThreads);
}
+ (NSUInteger)setNumberOfFTLCompilerThreads:(NSUInteger)numberOfThreads
@@ -293,10 +291,8 @@
JSC::DFG::Worklist* worklist = JSC::DFG::existingGlobalFTLWorklistOrNull();
if (worklist)
return worklist->setNumberOfThreads(numberOfThreads, JSC::Options::priorityDeltaOfFTLCompilerThreads());
-
- auto currentNumberOfThreads = JSC::Options::numberOfFTLCompilerThreads();
- JSC::Options::numberOfFTLCompilerThreads() = numberOfThreads;
- return currentNumberOfThreads;
+ else
+ return JSC::DFG::setNumberOfFTLCompilerThreads(numberOfThreads);
}
#endif // ENABLE(DFG_JIT)
Modified: trunk/Source/_javascript_Core/API/tests/testapi.mm (234179 => 234180)
--- trunk/Source/_javascript_Core/API/tests/testapi.mm 2018-07-24 23:29:50 UTC (rev 234179)
+++ trunk/Source/_javascript_Core/API/tests/testapi.mm 2018-07-24 23:42:23 UTC (rev 234180)
@@ -554,10 +554,7 @@
static void testObjectiveCAPIMain()
{
- // FIXME: Make this work again.
- // https://bugs.webkit.org/show_bug.cgi?id=187886
- if (false)
- runJITThreadLimitTests();
+ runJITThreadLimitTests();
@autoreleasepool {
JSVirtualMachine* vm = [[JSVirtualMachine alloc] init];
Modified: trunk/Source/_javascript_Core/ChangeLog (234179 => 234180)
--- trunk/Source/_javascript_Core/ChangeLog 2018-07-24 23:29:50 UTC (rev 234179)
+++ trunk/Source/_javascript_Core/ChangeLog 2018-07-24 23:42:23 UTC (rev 234180)
@@ -1,3 +1,29 @@
+2018-07-24 Tadeu Zagallo <[email protected]>
+
+ Don't modify Options when setting JIT thread limits
+ https://bugs.webkit.org/show_bug.cgi?id=187886
+
+ Reviewed by Filip Pizlo.
+
+ Previously, when setting the JIT thread limit prior to the worklist
+ initialization, it'd be set via Options, which didn't work if Options
+ hadn't been initialized yet. Change it to use a static variable in the
+ Worklist instead.
+
+ * API/JSVirtualMachine.mm:
+ (+[JSVirtualMachine setNumberOfDFGCompilerThreads:]):
+ (+[JSVirtualMachine setNumberOfFTLCompilerThreads:]):
+ * API/tests/testapi.mm:
+ (testObjectiveCAPIMain):
+ * dfg/DFGWorklist.cpp:
+ (JSC::DFG::getNumberOfDFGCompilerThreads):
+ (JSC::DFG::getNumberOfFTLCompilerThreads):
+ (JSC::DFG::setNumberOfDFGCompilerThreads):
+ (JSC::DFG::setNumberOfFTLCompilerThreads):
+ (JSC::DFG::ensureGlobalDFGWorklist):
+ (JSC::DFG::ensureGlobalFTLWorklist):
+ * dfg/DFGWorklist.h:
+
2018-07-24 Mark Lam <[email protected]>
Refactoring: make DFG::Plan a class.
Modified: trunk/Source/_javascript_Core/dfg/DFGWorklist.cpp (234179 => 234180)
--- trunk/Source/_javascript_Core/dfg/DFGWorklist.cpp 2018-07-24 23:29:50 UTC (rev 234179)
+++ trunk/Source/_javascript_Core/dfg/DFGWorklist.cpp 2018-07-24 23:42:23 UTC (rev 234180)
@@ -530,12 +530,38 @@
}
static Worklist* theGlobalDFGWorklist;
+static unsigned numberOfDFGCompilerThreads;
+static unsigned numberOfFTLCompilerThreads;
+static unsigned getNumberOfDFGCompilerThreads()
+{
+ return numberOfDFGCompilerThreads ?: Options::numberOfDFGCompilerThreads();
+}
+
+static unsigned getNumberOfFTLCompilerThreads()
+{
+ return numberOfFTLCompilerThreads ?: Options::numberOfFTLCompilerThreads();
+}
+
+unsigned setNumberOfDFGCompilerThreads(unsigned numberOfThreads)
+{
+ auto previousNumberOfThreads = getNumberOfDFGCompilerThreads();
+ numberOfDFGCompilerThreads = numberOfThreads;
+ return previousNumberOfThreads;
+}
+
+unsigned setNumberOfFTLCompilerThreads(unsigned numberOfThreads)
+{
+ auto previousNumberOfThreads = getNumberOfFTLCompilerThreads();
+ numberOfFTLCompilerThreads = numberOfThreads;
+ return previousNumberOfThreads;
+}
+
Worklist& ensureGlobalDFGWorklist()
{
static std::once_flag initializeGlobalWorklistOnceFlag;
std::call_once(initializeGlobalWorklistOnceFlag, [] {
- theGlobalDFGWorklist = &Worklist::create("DFG Worklist", Options::numberOfDFGCompilerThreads(), Options::priorityDeltaOfDFGCompilerThreads()).leakRef();
+ theGlobalDFGWorklist = &Worklist::create("DFG Worklist", getNumberOfDFGCompilerThreads(), Options::priorityDeltaOfDFGCompilerThreads()).leakRef();
});
return *theGlobalDFGWorklist;
}
@@ -551,7 +577,7 @@
{
static std::once_flag initializeGlobalWorklistOnceFlag;
std::call_once(initializeGlobalWorklistOnceFlag, [] {
- theGlobalFTLWorklist = &Worklist::create("FTL Worklist", Options::numberOfFTLCompilerThreads(), Options::priorityDeltaOfFTLCompilerThreads()).leakRef();
+ theGlobalFTLWorklist = &Worklist::create("FTL Worklist", getNumberOfFTLCompilerThreads(), Options::priorityDeltaOfFTLCompilerThreads()).leakRef();
});
return *theGlobalFTLWorklist;
}
Modified: trunk/Source/_javascript_Core/dfg/DFGWorklist.h (234179 => 234180)
--- trunk/Source/_javascript_Core/dfg/DFGWorklist.h 2018-07-24 23:29:50 UTC (rev 234179)
+++ trunk/Source/_javascript_Core/dfg/DFGWorklist.h 2018-07-24 23:42:23 UTC (rev 234180)
@@ -122,6 +122,9 @@
unsigned m_numberOfActiveThreads;
};
+JS_EXPORT_PRIVATE unsigned setNumberOfDFGCompilerThreads(unsigned);
+JS_EXPORT_PRIVATE unsigned setNumberOfFTLCompilerThreads(unsigned);
+
// For DFGMode compilations.
JS_EXPORT_PRIVATE Worklist& ensureGlobalDFGWorklist();
JS_EXPORT_PRIVATE Worklist* existingGlobalDFGWorklistOrNull();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes