diff options
Diffstat (limited to 'chromium/base/profiler/thread_delegate.h')
-rw-r--r-- | chromium/base/profiler/thread_delegate.h | 37 |
1 files changed, 2 insertions, 35 deletions
diff --git a/chromium/base/profiler/thread_delegate.h b/chromium/base/profiler/thread_delegate.h index d0f0f028405..bb8b50b6354 100644 --- a/chromium/base/profiler/thread_delegate.h +++ b/chromium/base/profiler/thread_delegate.h @@ -8,58 +8,25 @@ #include <vector> #include "base/base_export.h" -#include "base/profiler/frame.h" #include "base/profiler/register_context.h" namespace base { // Platform-specific thread and stack manipulation delegate, for use by the // platform-independent stack copying/walking implementation in -// StackSamplerImpl. -// -// IMPORTANT NOTE: Most methods in this interface are invoked while the target -// thread is suspended so must not do any allocation from the heap, including -// indirectly via use of DCHECK/CHECK or other logging statements. Otherwise the -// implementation can deadlock on heap locks acquired by the target thread -// before it was suspended. These functions are commented with "NO HEAP -// ALLOCATIONS". +// StackSamplerImpl. Provides the common interface across signal- and +// suspend-based stack copy implementations. class BASE_EXPORT ThreadDelegate { public: - // Implementations of this interface should suspend the thread for the - // object's lifetime. NO HEAP ALLOCATIONS between the time the thread is - // suspended and resumed. - class BASE_EXPORT ScopedSuspendThread { - public: - ScopedSuspendThread() = default; - virtual ~ScopedSuspendThread() = default; - - ScopedSuspendThread(const ScopedSuspendThread&) = delete; - ScopedSuspendThread& operator=(const ScopedSuspendThread&) = delete; - - virtual bool WasSuccessful() const = 0; - }; - ThreadDelegate() = default; virtual ~ThreadDelegate() = default; ThreadDelegate(const ThreadDelegate&) = delete; ThreadDelegate& operator=(const ThreadDelegate&) = delete; - // Creates an object that holds the thread suspended for its lifetime. - virtual std::unique_ptr<ScopedSuspendThread> CreateScopedSuspendThread() = 0; - - // Gets the register context for the thread. - // NO HEAP ALLOCATIONS. - virtual bool GetThreadContext(RegisterContext* thread_context) = 0; - // Gets the base address of the thread's stack. virtual uintptr_t GetStackBaseAddress() const = 0; - // Returns true if the thread's stack can be copied, where the bottom address - // of the thread is at |stack_pointer|. - // NO HEAP ALLOCATIONS. - virtual bool CanCopyStack(uintptr_t stack_pointer) = 0; - // Returns a list of registers that should be rewritten to point into the // stack copy, if they originally pointed into the original stack. // May heap allocate. |