Use const AbstractLocker& (instead of const LockHolder&) in more places.
authormark.lam@apple.com <mark.lam@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 9 Mar 2017 21:05:41 +0000 (21:05 +0000)
committermark.lam@apple.com <mark.lam@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 9 Mar 2017 21:05:41 +0000 (21:05 +0000)
https://bugs.webkit.org/show_bug.cgi?id=169424

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

* heap/CodeBlockSet.cpp:
(JSC::CodeBlockSet::promoteYoungCodeBlocks):
* heap/CodeBlockSet.h:
* heap/CodeBlockSetInlines.h:
(JSC::CodeBlockSet::mark):
* heap/ConservativeRoots.cpp:
(JSC::CompositeMarkHook::CompositeMarkHook):
* heap/MachineStackMarker.cpp:
(JSC::MachineThreads::tryCopyOtherThreadStacks):
* heap/MachineStackMarker.h:
* profiler/ProfilerDatabase.cpp:
(JSC::Profiler::Database::ensureBytecodesFor):
* profiler/ProfilerDatabase.h:
* runtime/SamplingProfiler.cpp:
(JSC::FrameWalker::FrameWalker):
(JSC::CFrameWalker::CFrameWalker):
(JSC::SamplingProfiler::createThreadIfNecessary):
(JSC::SamplingProfiler::takeSample):
(JSC::SamplingProfiler::start):
(JSC::SamplingProfiler::pause):
(JSC::SamplingProfiler::noticeCurrentThreadAsJSCExecutionThread):
(JSC::SamplingProfiler::clearData):
(JSC::SamplingProfiler::releaseStackTraces):
* runtime/SamplingProfiler.h:
(JSC::SamplingProfiler::setStopWatch):
* wasm/WasmMemory.cpp:
(JSC::Wasm::availableFastMemories):
(JSC::Wasm::activeFastMemories):
(JSC::Wasm::viewActiveFastMemories):
* wasm/WasmMemory.h:

Source/WTF:

* wtf/RunLoop.h:
* wtf/generic/RunLoopGeneric.cpp:
(WTF::RunLoop::wakeUp):
(WTF::RunLoop::schedule):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@213657 268f45cc-cd09-0410-ab3c-d52691b4dbfc

16 files changed:
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/heap/CodeBlockSet.cpp
Source/JavaScriptCore/heap/CodeBlockSet.h
Source/JavaScriptCore/heap/CodeBlockSetInlines.h
Source/JavaScriptCore/heap/ConservativeRoots.cpp
Source/JavaScriptCore/heap/MachineStackMarker.cpp
Source/JavaScriptCore/heap/MachineStackMarker.h
Source/JavaScriptCore/profiler/ProfilerDatabase.cpp
Source/JavaScriptCore/profiler/ProfilerDatabase.h
Source/JavaScriptCore/runtime/SamplingProfiler.cpp
Source/JavaScriptCore/runtime/SamplingProfiler.h
Source/JavaScriptCore/wasm/WasmMemory.cpp
Source/JavaScriptCore/wasm/WasmMemory.h
Source/WTF/ChangeLog
Source/WTF/wtf/RunLoop.h
Source/WTF/wtf/generic/RunLoopGeneric.cpp

index 86db152..b73e483 100644 (file)
@@ -1,3 +1,41 @@
+2017-03-09  Mark Lam  <mark.lam@apple.com>
+
+        Use const AbstractLocker& (instead of const LockHolder&) in more places.
+        https://bugs.webkit.org/show_bug.cgi?id=169424
+
+        Reviewed by Filip Pizlo.
+
+        * heap/CodeBlockSet.cpp:
+        (JSC::CodeBlockSet::promoteYoungCodeBlocks):
+        * heap/CodeBlockSet.h:
+        * heap/CodeBlockSetInlines.h:
+        (JSC::CodeBlockSet::mark):
+        * heap/ConservativeRoots.cpp:
+        (JSC::CompositeMarkHook::CompositeMarkHook):
+        * heap/MachineStackMarker.cpp:
+        (JSC::MachineThreads::tryCopyOtherThreadStacks):
+        * heap/MachineStackMarker.h:
+        * profiler/ProfilerDatabase.cpp:
+        (JSC::Profiler::Database::ensureBytecodesFor):
+        * profiler/ProfilerDatabase.h:
+        * runtime/SamplingProfiler.cpp:
+        (JSC::FrameWalker::FrameWalker):
+        (JSC::CFrameWalker::CFrameWalker):
+        (JSC::SamplingProfiler::createThreadIfNecessary):
+        (JSC::SamplingProfiler::takeSample):
+        (JSC::SamplingProfiler::start):
+        (JSC::SamplingProfiler::pause):
+        (JSC::SamplingProfiler::noticeCurrentThreadAsJSCExecutionThread):
+        (JSC::SamplingProfiler::clearData):
+        (JSC::SamplingProfiler::releaseStackTraces):
+        * runtime/SamplingProfiler.h:
+        (JSC::SamplingProfiler::setStopWatch):
+        * wasm/WasmMemory.cpp:
+        (JSC::Wasm::availableFastMemories):
+        (JSC::Wasm::activeFastMemories):
+        (JSC::Wasm::viewActiveFastMemories):
+        * wasm/WasmMemory.h:
+
 2017-03-09  Saam Barati  <sbarati@apple.com>
 
         WebAssembly: Make the Unity AngryBots demo run
index 5cc7745..866dc8a 100644 (file)
@@ -47,7 +47,7 @@ void CodeBlockSet::add(CodeBlock* codeBlock)
     ASSERT_UNUSED(isNewEntry, isNewEntry);
 }
 
-void CodeBlockSet::promoteYoungCodeBlocks(const LockHolder&)
+void CodeBlockSet::promoteYoungCodeBlocks(const AbstractLocker&)
 {
     ASSERT(m_lock.isLocked());
     m_oldCodeBlocks.add(m_newCodeBlocks.begin(), m_newCodeBlocks.end());
index f6c46ec..633653c 100644 (file)
@@ -62,9 +62,9 @@ public:
     // Mark a pointer that may be a CodeBlock that belongs to the set of DFG
     // blocks. This is defined in CodeBlock.h.
 private:
-    void mark(const LockHolder&, CodeBlock* candidateCodeBlock);
+    void mark(const AbstractLocker&, CodeBlock* candidateCodeBlock);
 public:
-    void mark(const LockHolder&, void* candidateCodeBlock);
+    void mark(const AbstractLocker&, void* candidateCodeBlock);
     
     // Delete all code blocks that are only referenced by this set (i.e. owned
     // by this set), and that have not been marked.
@@ -86,7 +86,7 @@ public:
     void dump(PrintStream&) const;
 
 private:
-    void promoteYoungCodeBlocks(const LockHolder&);
+    void promoteYoungCodeBlocks(const AbstractLocker&);
 
     HashSet<CodeBlock*> m_oldCodeBlocks;
     HashSet<CodeBlock*> m_newCodeBlocks;
index 80a9bef..c3d8c0b 100644 (file)
@@ -33,7 +33,7 @@
 
 namespace JSC {
 
-inline void CodeBlockSet::mark(const LockHolder& locker, void* candidateCodeBlock)
+inline void CodeBlockSet::mark(const AbstractLocker& locker, void* candidateCodeBlock)
 {
     ASSERT(m_lock.isLocked());
     // We have to check for 0 and -1 because those are used by the HashMap as markers.
@@ -52,7 +52,7 @@ inline void CodeBlockSet::mark(const LockHolder& locker, void* candidateCodeBloc
     mark(locker, codeBlock);
 }
 
-inline void CodeBlockSet::mark(const LockHolder&, CodeBlock* codeBlock)
+inline void CodeBlockSet::mark(const AbstractLocker&, CodeBlock* codeBlock)
 {
     if (!codeBlock)
         return;
index 554c9c2..595330a 100644 (file)
@@ -117,7 +117,7 @@ void ConservativeRoots::add(void* begin, void* end, JITStubRoutineSet& jitStubRo
 
 class CompositeMarkHook {
 public:
-    CompositeMarkHook(JITStubRoutineSet& stubRoutines, CodeBlockSet& codeBlocks, const LockHolder& locker)
+    CompositeMarkHook(JITStubRoutineSet& stubRoutines, CodeBlockSet& codeBlocks, const AbstractLocker& locker)
         : m_stubRoutines(stubRoutines)
         , m_codeBlocks(codeBlocks)
         , m_codeBlocksLocker(locker)
@@ -133,7 +133,7 @@ public:
 private:
     JITStubRoutineSet& m_stubRoutines;
     CodeBlockSet& m_codeBlocks;
-    const LockHolder& m_codeBlocksLocker;
+    const AbstractLocker& m_codeBlocksLocker;
 };
 
 void ConservativeRoots::add(
index 2a969c4..f2d8cb1 100644 (file)
@@ -928,7 +928,7 @@ void MachineThreads::tryCopyOtherThreadStack(Thread* thread, void* buffer, size_
     thread->freeRegisters(registers);
 }
 
-bool MachineThreads::tryCopyOtherThreadStacks(LockHolder&, void* buffer, size_t capacity, size_t* size)
+bool MachineThreads::tryCopyOtherThreadStacks(const AbstractLocker&, void* buffer, size_t capacity, size_t* size)
 {
     // Prevent two VMs from suspending each other's threads at the same time,
     // which can cause deadlock: <rdar://problem/20300842>.
index 6b04a62..7978412 100644 (file)
@@ -142,7 +142,7 @@ private:
     void gatherFromCurrentThread(ConservativeRoots&, JITStubRoutineSet&, CodeBlockSet&, CurrentThreadState&);
 
     void tryCopyOtherThreadStack(Thread*, void*, size_t capacity, size_t*);
-    bool tryCopyOtherThreadStacks(LockHolder&, void*, size_t capacity, size_t*);
+    bool tryCopyOtherThreadStacks(const AbstractLocker&, void*, size_t capacity, size_t*);
 
     static void THREAD_SPECIFIC_CALL removeThread(void*);
 
index 01cefc4..708c8ed 100644 (file)
@@ -62,7 +62,7 @@ Bytecodes* Database::ensureBytecodesFor(CodeBlock* codeBlock)
     return ensureBytecodesFor(locker, codeBlock);
 }
 
-Bytecodes* Database::ensureBytecodesFor(const LockHolder&, CodeBlock* codeBlock)
+Bytecodes* Database::ensureBytecodesFor(const AbstractLocker&, CodeBlock* codeBlock)
 {
     codeBlock = codeBlock->baselineAlternative();
     
index b9ef36c..60f437f 100644 (file)
@@ -72,7 +72,7 @@ public:
     JS_EXPORT_PRIVATE void logEvent(CodeBlock* codeBlock, const char* summary, const CString& detail);
     
 private:
-    Bytecodes* ensureBytecodesFor(const LockHolder&, CodeBlock*);
+    Bytecodes* ensureBytecodesFor(const AbstractLocker&, CodeBlock*);
     
     void addDatabaseToAtExit();
     void removeDatabaseFromAtExit();
index a8d953d..799fe94 100644 (file)
@@ -81,7 +81,7 @@ ALWAYS_INLINE static void reportStats()
 
 class FrameWalker {
 public:
-    FrameWalker(VM& vm, ExecState* callFrame, const LockHolder& codeBlockSetLocker, const LockHolder& machineThreadsLocker)
+    FrameWalker(VM& vm, ExecState* callFrame, const AbstractLocker& codeBlockSetLocker, const AbstractLocker& machineThreadsLocker)
         : m_vm(vm)
         , m_callFrame(callFrame)
         , m_vmEntryFrame(vm.topVMEntryFrame)
@@ -190,8 +190,8 @@ protected:
     VM& m_vm;
     ExecState* m_callFrame;
     VMEntryFrame* m_vmEntryFrame;
-    const LockHolder& m_codeBlockSetLocker;
-    const LockHolder& m_machineThreadsLocker;
+    const AbstractLocker& m_codeBlockSetLocker;
+    const AbstractLocker& m_machineThreadsLocker;
     bool m_bailingOut { false };
     size_t m_depth { 0 };
 };
@@ -200,7 +200,7 @@ class CFrameWalker : public FrameWalker {
 public:
     typedef FrameWalker Base;
 
-    CFrameWalker(VM& vm, void* machineFrame, ExecState* callFrame, const LockHolder& codeBlockSetLocker, const LockHolder& machineThreadsLocker)
+    CFrameWalker(VM& vm, void* machineFrame, ExecState* callFrame, const AbstractLocker& codeBlockSetLocker, const AbstractLocker& machineThreadsLocker)
         : Base(vm, callFrame, codeBlockSetLocker, machineThreadsLocker)
         , m_machineFrame(machineFrame)
     {
@@ -296,7 +296,7 @@ SamplingProfiler::~SamplingProfiler()
 {
 }
 
-void SamplingProfiler::createThreadIfNecessary(const LockHolder&)
+void SamplingProfiler::createThreadIfNecessary(const AbstractLocker&)
 {
     ASSERT(m_lock.isLocked());
 
@@ -334,7 +334,7 @@ void SamplingProfiler::timerLoop()
     }
 }
 
-void SamplingProfiler::takeSample(const LockHolder&, std::chrono::microseconds& stackTraceProcessingTime)
+void SamplingProfiler::takeSample(const AbstractLocker&, std::chrono::microseconds& stackTraceProcessingTime)
 {
     ASSERT(m_lock.isLocked());
     if (m_vm.entryScope) {
@@ -659,21 +659,21 @@ void SamplingProfiler::start()
     start(locker);
 }
 
-void SamplingProfiler::start(const LockHolder& locker)
+void SamplingProfiler::start(const AbstractLocker& locker)
 {
     ASSERT(m_lock.isLocked());
     m_isPaused = false;
     createThreadIfNecessary(locker);
 }
 
-void SamplingProfiler::pause(const LockHolder&)
+void SamplingProfiler::pause(const AbstractLocker&)
 {
     ASSERT(m_lock.isLocked());
     m_isPaused = true;
     reportStats();
 }
 
-void SamplingProfiler::noticeCurrentThreadAsJSCExecutionThread(const LockHolder&)
+void SamplingProfiler::noticeCurrentThreadAsJSCExecutionThread(const AbstractLocker&)
 {
     ASSERT(m_lock.isLocked());
     m_jscExecutionThread = m_vm.heap.machineThreads().machineThreadForCurrentThread();
@@ -700,7 +700,7 @@ void SamplingProfiler::noticeVMEntry()
     createThreadIfNecessary(locker);
 }
 
-void SamplingProfiler::clearData(const LockHolder&)
+void SamplingProfiler::clearData(const AbstractLocker&)
 {
     ASSERT(m_lock.isLocked());
     m_stackTraces.clear();
@@ -858,7 +858,7 @@ String SamplingProfiler::StackFrame::url()
     return url;
 }
 
-Vector<SamplingProfiler::StackTrace> SamplingProfiler::releaseStackTraces(const LockHolder& locker)
+Vector<SamplingProfiler::StackTrace> SamplingProfiler::releaseStackTraces(const AbstractLocker& locker)
 {
     ASSERT(m_lock.isLocked());
     {
index 899e550..d44b998 100644 (file)
@@ -166,15 +166,15 @@ public:
     Lock& getLock() { return m_lock; }
     void setTimingInterval(std::chrono::microseconds interval) { m_timingInterval = interval; }
     JS_EXPORT_PRIVATE void start();
-    void start(const LockHolder&);
-    Vector<StackTrace> releaseStackTraces(const LockHolder&);
+    void start(const AbstractLocker&);
+    Vector<StackTrace> releaseStackTraces(const AbstractLocker&);
     JS_EXPORT_PRIVATE String stackTracesAsJSON();
     JS_EXPORT_PRIVATE void noticeCurrentThreadAsJSCExecutionThread();
-    void noticeCurrentThreadAsJSCExecutionThread(const LockHolder&);
+    void noticeCurrentThreadAsJSCExecutionThread(const AbstractLocker&);
     void processUnverifiedStackTraces(); // You should call this only after acquiring the lock.
-    void setStopWatch(const LockHolder&, Ref<Stopwatch>&& stopwatch) { m_stopwatch = WTFMove(stopwatch); }
-    void pause(const LockHolder&);
-    void clearData(const LockHolder&);
+    void setStopWatch(const AbstractLocker&, Ref<Stopwatch>&& stopwatch) { m_stopwatch = WTFMove(stopwatch); }
+    void pause(const AbstractLocker&);
+    void clearData(const AbstractLocker&);
 
     // Used for debugging in the JSC shell/DRT.
     void registerForReportAtExit();
@@ -185,9 +185,9 @@ public:
     JS_EXPORT_PRIVATE void reportTopBytecodes(PrintStream&);
 
 private:
-    void createThreadIfNecessary(const LockHolder&);
+    void createThreadIfNecessary(const AbstractLocker&);
     void timerLoop();
-    void takeSample(const LockHolder&, std::chrono::microseconds& stackTraceProcessingTime);
+    void takeSample(const AbstractLocker&, std::chrono::microseconds& stackTraceProcessingTime);
 
     VM& m_vm;
     RefPtr<Stopwatch> m_stopwatch;
index 30e9f30..9434d3f 100644 (file)
@@ -68,19 +68,19 @@ Memory::Mode Memory::lastAllocatedMode()
 static const unsigned maxFastMemories = 4;
 static unsigned allocatedFastMemories { 0 };
 StaticLock memoryLock;
-inline Deque<void*, maxFastMemories>& availableFastMemories(const LockHolder&)
+inline Deque<void*, maxFastMemories>& availableFastMemories(const AbstractLocker&)
 {
     static NeverDestroyed<Deque<void*, maxFastMemories>> availableFastMemories;
     return availableFastMemories;
 }
 
-inline HashSet<void*>& activeFastMemories(const LockHolder&)
+inline HashSet<void*>& activeFastMemories(const AbstractLocker&)
 {
     static NeverDestroyed<HashSet<void*>> activeFastMemories;
     return activeFastMemories;
 }
 
-const HashSet<void*>& viewActiveFastMemories(const LockHolder& locker)
+const HashSet<void*>& viewActiveFastMemories(const AbstractLocker& locker)
 {
     return activeFastMemories(locker);
 }
index a447bd8..6300a59 100644 (file)
@@ -98,7 +98,7 @@ static_assert(sizeof(uint64_t) == sizeof(size_t), "We rely on allowing the maxim
 
 const size_t fastMemoryMappedBytes = (static_cast<size_t>(std::numeric_limits<uint32_t>::max()) + 1) * 2; // pointer max + offset max. This is all we need since a load straddling readable memory will trap.
 extern StaticLock memoryLock;
-const HashSet<void*>& viewActiveFastMemories(const LockHolder&);
+const HashSet<void*>& viewActiveFastMemories(const AbstractLocker&);
 
 } } // namespace JSC::Wasm
 
index c0d5784..4c981f8 100644 (file)
@@ -1,5 +1,17 @@
 2017-03-09  Mark Lam  <mark.lam@apple.com>
 
+        Use const AbstractLocker& (instead of const LockHolder&) in more places.
+        https://bugs.webkit.org/show_bug.cgi?id=169424
+
+        Reviewed by Filip Pizlo.
+
+        * wtf/RunLoop.h:
+        * wtf/generic/RunLoopGeneric.cpp:
+        (WTF::RunLoop::wakeUp):
+        (WTF::RunLoop::schedule):
+
+2017-03-09  Mark Lam  <mark.lam@apple.com>
+
         Make the VM Traps mechanism non-polling for the DFG and FTL.
         https://bugs.webkit.org/show_bug.cgi?id=168920
         <rdar://problem/30738588>
index e924527..98c1229 100644 (file)
@@ -167,8 +167,8 @@ private:
     GRefPtr<GSource> m_source;
 #elif USE(GENERIC_EVENT_LOOP)
     void schedule(RefPtr<TimerBase::ScheduledTask>&&);
-    void schedule(const LockHolder&, RefPtr<TimerBase::ScheduledTask>&&);
-    void wakeUp(const LockHolder&);
+    void schedule(const AbstractLocker&, RefPtr<TimerBase::ScheduledTask>&&);
+    void wakeUp(const AbstractLocker&);
     void scheduleAndWakeUp(RefPtr<TimerBase::ScheduledTask>);
 
     enum class RunMode {
index 9a3c09a..1fd9a92 100644 (file)
@@ -206,7 +206,7 @@ void RunLoop::stop()
     }
 }
 
-void RunLoop::wakeUp(const LockHolder&)
+void RunLoop::wakeUp(const AbstractLocker&)
 {
     m_pendingTasks = true;
     m_readyToRun.notifyOne();
@@ -218,7 +218,7 @@ void RunLoop::wakeUp()
     wakeUp(locker);
 }
 
-void RunLoop::schedule(const LockHolder&, RefPtr<TimerBase::ScheduledTask>&& task)
+void RunLoop::schedule(const AbstractLocker&, RefPtr<TimerBase::ScheduledTask>&& task)
 {
     m_schedules.append(WTFMove(task));
     std::push_heap(m_schedules.begin(), m_schedules.end(), TimerBase::ScheduledTask::EarliestSchedule());