summaryrefslogtreecommitdiffstats
path: root/chromium/base/profiler/thread_delegate.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/base/profiler/thread_delegate.h')
-rw-r--r--chromium/base/profiler/thread_delegate.h37
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.