Title: [244348] tags/Safari-607.2.4.1/Source

Diff

Modified: tags/Safari-607.2.4.1/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj (244347 => 244348)


--- tags/Safari-607.2.4.1/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj	2019-04-16 18:27:36 UTC (rev 244347)
+++ tags/Safari-607.2.4.1/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj	2019-04-16 18:32:19 UTC (rev 244348)
@@ -1077,7 +1077,6 @@
 		5DBB151B131D0B310056AD36 /* testapi.js in Copy Support Script */ = {isa = PBXBuildFile; fileRef = 14D857740A4696C80032146C /* testapi.js */; };
 		5DBB1525131D0BD70056AD36 /* minidom.js in Copy Support Script */ = {isa = PBXBuildFile; fileRef = 1412110D0A48788700480255 /* minidom.js */; };
 		5DE6E5B30E1728EC00180407 /* create_hash_table in Headers */ = {isa = PBXBuildFile; fileRef = F692A8540255597D01FF60F7 /* create_hash_table */; settings = {ATTRIBUTES = (); }; };
-		5E158AC350BC4EC7877DC0F4 /* ObjectPrototypeInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D0CC9E1CBC149AB8F403434 /* ObjectPrototypeInlines.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		623A37EC1B87A7C000754209 /* RegisterMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 623A37EB1B87A7BD00754209 /* RegisterMap.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		627673241B680C1E00FD9F2E /* CallMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 627673221B680C1E00FD9F2E /* CallMode.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		62D2D3901ADF103F000206C1 /* FunctionRareData.h in Headers */ = {isa = PBXBuildFile; fileRef = 62D2D38E1ADF103F000206C1 /* FunctionRareData.h */; settings = {ATTRIBUTES = (Private, ); }; };
@@ -3331,6 +3330,7 @@
 		526AC4B41E977C5D003500E1 /* WasmCodeBlock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WasmCodeBlock.cpp; sourceTree = "<group>"; };
 		526AC4B51E977C5D003500E1 /* WasmCodeBlock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WasmCodeBlock.h; sourceTree = "<group>"; };
 		527773DD1AAF83AC00BDE7E8 /* RuntimeType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RuntimeType.cpp; sourceTree = "<group>"; };
+		528D8EBC226156FD00E75699 /* CPU.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CPU.cpp; sourceTree = "<group>"; };
 		52B310FA1974AE610080857C /* FunctionHasExecutedCache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FunctionHasExecutedCache.h; sourceTree = "<group>"; };
 		52B310FC1974AE870080857C /* FunctionHasExecutedCache.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FunctionHasExecutedCache.cpp; sourceTree = "<group>"; };
 		52B310FE1975B4240080857C /* TypeLocationCache.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TypeLocationCache.cpp; sourceTree = "<group>"; };
@@ -3650,7 +3650,6 @@
 		6A38CFA81E32B58B0060206F /* AsyncStackTrace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AsyncStackTrace.h; sourceTree = "<group>"; };
 		6AD2CB4C19B9140100065719 /* DebuggerEvalEnabler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DebuggerEvalEnabler.h; sourceTree = "<group>"; };
 		6BA93C9590484C5BAD9316EA /* JSScriptFetcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSScriptFetcher.h; sourceTree = "<group>"; };
-		6D0CC9E1CBC149AB8F403434 /* ObjectPrototypeInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjectPrototypeInlines.h; sourceTree = "<group>"; };
 		70113D491A8DB093003848C4 /* IteratorOperations.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IteratorOperations.cpp; sourceTree = "<group>"; };
 		70113D4A1A8DB093003848C4 /* IteratorOperations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IteratorOperations.h; sourceTree = "<group>"; };
 		7013CA891B491A9400CAE613 /* JSMicrotask.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMicrotask.cpp; sourceTree = "<group>"; };
@@ -7610,6 +7609,7 @@
 				43C392AA1C3BEB0000241F53 /* AssemblerCommon.h */,
 				86E116B00FE75AC800B512BC /* CodeLocation.h */,
 				0F30D7BF1D95D62F0053089D /* CPU.h */,
+				528D8EBC226156FD00E75699 /* CPU.cpp */,
 				0F37308E1C0CD68500052BFA /* DisallowMacroScratchRegisterUsage.h */,
 				0FF4275615914A20004CB9FF /* LinkBuffer.cpp */,
 				86D3B3C110159D7F002865E7 /* LinkBuffer.h */,

Modified: tags/Safari-607.2.4.1/Source/_javascript_Core/Sources.txt (244347 => 244348)


--- tags/Safari-607.2.4.1/Source/_javascript_Core/Sources.txt	2019-04-16 18:27:36 UTC (rev 244347)
+++ tags/Safari-607.2.4.1/Source/_javascript_Core/Sources.txt	2019-04-16 18:32:19 UTC (rev 244348)
@@ -42,6 +42,7 @@
 API/OpaqueJSString.cpp
 
 assembler/AbstractMacroAssembler.cpp
+assembler/CPU.cpp
 assembler/LinkBuffer.cpp
 assembler/MacroAssembler.cpp
 assembler/MacroAssemblerARM64.cpp

Added: tags/Safari-607.2.4.1/Source/_javascript_Core/assembler/CPU.cpp (0 => 244348)


--- tags/Safari-607.2.4.1/Source/_javascript_Core/assembler/CPU.cpp	                        (rev 0)
+++ tags/Safari-607.2.4.1/Source/_javascript_Core/assembler/CPU.cpp	2019-04-16 18:32:19 UTC (rev 244348)
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2019 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#include "config.h"
+#include "CPU.h"
+
+#if (CPU(X86) || CPU(X86_64)) && OS(DARWIN)
+#include <mutex>
+#include <sys/sysctl.h>
+#endif
+
+namespace JSC {
+
+#if (CPU(X86) || CPU(X86_64)) && OS(DARWIN)
+bool isKernTCSMAvailable()
+{
+    uint32_t val = 0;
+    size_t valSize = sizeof(val);
+    int rc = sysctlbyname("kern.tcsm_available", &val, &valSize, NULL, 0);
+    if (rc < 0)
+        return false;
+    return !!val;
+}
+
+bool enableKernTCSM()
+{
+    uint32_t val = 1;
+    int rc = sysctlbyname("kern.tcsm_enable", NULL, 0, &val, sizeof(val));
+    if (rc < 0)
+        return false;
+    return true;
+}
+
+int kernTCSMAwareNumberOfProcessorCores()
+{
+    static std::once_flag onceFlag;
+    static int result;
+    std::call_once(onceFlag, [] {
+        result = WTF::numberOfProcessorCores();
+        if (result <= 1)
+            return;
+        if (isKernTCSMAvailable())
+            --result;
+    });
+    return result;
+}
+#endif // #if (CPU(X86) || CPU(X86_64)) && OS(DARWIN)
+
+} // namespace JSC

Modified: tags/Safari-607.2.4.1/Source/_javascript_Core/assembler/CPU.h (244347 => 244348)


--- tags/Safari-607.2.4.1/Source/_javascript_Core/assembler/CPU.h	2019-04-16 18:27:36 UTC (rev 244347)
+++ tags/Safari-607.2.4.1/Source/_javascript_Core/assembler/CPU.h	2019-04-16 18:32:19 UTC (rev 244348)
@@ -26,6 +26,7 @@
 #pragma once
 
 #include "Options.h"
+#include <wtf/NumberOfCores.h>
 
 namespace JSC {
 
@@ -131,5 +132,15 @@
     return optimizeForX86();
 }
 
+#if (CPU(X86) || CPU(X86_64)) && OS(DARWIN)
+bool isKernTCSMAvailable();
+bool enableKernTCSM();
+int kernTCSMAwareNumberOfProcessorCores();
+#else
+ALWAYS_INLINE bool isKernTCSMAvailable() { return false; }
+ALWAYS_INLINE bool enableKernTCSM() { return false; }
+ALWAYS_INLINE int kernTCSMAwareNumberOfProcessorCores() { return WTF::numberOfProcessorCores(); }
+#endif
+
 } // namespace JSC
 

Modified: tags/Safari-607.2.4.1/Source/_javascript_Core/heap/MachineStackMarker.h (244347 => 244348)


--- tags/Safari-607.2.4.1/Source/_javascript_Core/heap/MachineStackMarker.h	2019-04-16 18:27:36 UTC (rev 244347)
+++ tags/Safari-607.2.4.1/Source/_javascript_Core/heap/MachineStackMarker.h	2019-04-16 18:32:19 UTC (rev 244348)
@@ -48,7 +48,7 @@
     void gatherConservativeRoots(ConservativeRoots&, JITStubRoutineSet&, CodeBlockSet&, CurrentThreadState*, Thread*);
 
     // Only needs to be called by clients that can use the same heap from multiple threads.
-    void addCurrentThread() { m_threadGroup->addCurrentThread(); }
+    bool addCurrentThread() { return m_threadGroup->addCurrentThread() == ThreadGroupAddResult::NewlyAdded; }
 
     WordLock& getLock() { return m_threadGroup->getLock(); }
     const ListHashSet<Ref<Thread>>& threads(const AbstractLocker& locker) const { return m_threadGroup->threads(locker); }

Modified: tags/Safari-607.2.4.1/Source/_javascript_Core/runtime/JSLock.cpp (244347 => 244348)


--- tags/Safari-607.2.4.1/Source/_javascript_Core/runtime/JSLock.cpp	2019-04-16 18:27:36 UTC (rev 244347)
+++ tags/Safari-607.2.4.1/Source/_javascript_Core/runtime/JSLock.cpp	2019-04-16 18:32:19 UTC (rev 244348)
@@ -147,7 +147,11 @@
     void* p = currentStackPointer();
     m_vm->setStackPointerAtVMEntry(p);
 
-    m_vm->heap.machineThreads().addCurrentThread();
+    if (m_vm->heap.machineThreads().addCurrentThread()) {
+        if (isKernTCSMAvailable())
+            enableKernTCSM();
+    }
+
 #if ENABLE(WEBASSEMBLY)
     Wasm::startTrackingCurrentThread();
 #endif

Modified: tags/Safari-607.2.4.1/Source/_javascript_Core/runtime/Options.cpp (244347 => 244348)


--- tags/Safari-607.2.4.1/Source/_javascript_Core/runtime/Options.cpp	2019-04-16 18:27:36 UTC (rev 244347)
+++ tags/Safari-607.2.4.1/Source/_javascript_Core/runtime/Options.cpp	2019-04-16 18:32:19 UTC (rev 244348)
@@ -27,6 +27,7 @@
 #include "Options.h"
 
 #include "AssemblerCommon.h"
+#include "CPU.h"
 #include "LLIntCommon.h"
 #include "MinimumReservedZoneSize.h"
 #include "SigillCrashAnalyzer.h"
@@ -204,7 +205,7 @@
 
 static unsigned computeNumberOfWorkerThreads(int maxNumberOfWorkerThreads, int minimum = 1)
 {
-    int cpusToUse = std::min(WTF::numberOfProcessorCores(), maxNumberOfWorkerThreads);
+    int cpusToUse = std::min(kernTCSMAwareNumberOfProcessorCores(), maxNumberOfWorkerThreads);
 
     // Be paranoid, it is the OS we're dealing with, after all.
     ASSERT(cpusToUse >= 1);
@@ -213,7 +214,7 @@
 
 static int32_t computePriorityDeltaOfWorkerThreads(int32_t twoCorePriorityDelta, int32_t multiCorePriorityDelta)
 {
-    if (WTF::numberOfProcessorCores() <= 2)
+    if (kernTCSMAwareNumberOfProcessorCores() <= 2)
         return twoCorePriorityDelta;
 
     return multiCorePriorityDelta;

Modified: tags/Safari-607.2.4.1/Source/_javascript_Core/wasm/WasmWorklist.cpp (244347 => 244348)


--- tags/Safari-607.2.4.1/Source/_javascript_Core/wasm/WasmWorklist.cpp	2019-04-16 18:27:36 UTC (rev 244347)
+++ tags/Safari-607.2.4.1/Source/_javascript_Core/wasm/WasmWorklist.cpp	2019-04-16 18:32:19 UTC (rev 244348)
@@ -28,10 +28,9 @@
 
 #if ENABLE(WEBASSEMBLY)
 
+#include "CPU.h"
 #include "WasmPlan.h"
 
-#include <wtf/NumberOfCores.h>
-
 namespace JSC { namespace Wasm {
 
 namespace WasmWorklistInternal {
@@ -207,7 +206,7 @@
     : m_lock(Box<Lock>::create())
     , m_planEnqueued(AutomaticThreadCondition::create())
 {
-    unsigned numberOfCompilationThreads = Options::useConcurrentJIT() ? WTF::numberOfProcessorCores() : 1;
+    unsigned numberOfCompilationThreads = Options::useConcurrentJIT() ? kernTCSMAwareNumberOfProcessorCores() : 1;
     m_threads.reserveCapacity(numberOfCompilationThreads);
     LockHolder locker(*m_lock);
     for (unsigned i = 0; i < numberOfCompilationThreads; i++)

Modified: tags/Safari-607.2.4.1/Source/WebKit/WebProcess/com.apple.WebProcess.sb.in (244347 => 244348)


--- tags/Safari-607.2.4.1/Source/WebKit/WebProcess/com.apple.WebProcess.sb.in	2019-04-16 18:27:36 UTC (rev 244347)
+++ tags/Safari-607.2.4.1/Source/WebKit/WebProcess/com.apple.WebProcess.sb.in	2019-04-16 18:32:19 UTC (rev 244348)
@@ -171,6 +171,8 @@
         "kern.version"
         "machdep.cpu.brand_string"
         "security.mac.sandbox.sentinel"
+        "kern.tcsm_enable"
+        "kern.tcsm_available"
         "vm.footprint_suspend")
     (sysctl-name-regex #"^hw.(active|avail)cpu")
     (sysctl-name-regex #"^hw.(busfrequency|cachelinesize|cpufrequency(|_max)|pagesize|tbfrequency)(|_compat)")
@@ -181,6 +183,10 @@
     (sysctl-name-regex #"^net.routetable")
 )
 
+(allow sysctl-write
+    (sysctl-name
+        "kern.tcsm_enable"))
+
 (deny iokit-get-properties)
 (allow iokit-get-properties
     (iokit-property "AGCInfo")
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to