diff options
Diffstat (limited to 'contrib/llvm-project/lldb/source/Target/TraceCursor.cpp')
-rw-r--r-- | contrib/llvm-project/lldb/source/Target/TraceCursor.cpp | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/contrib/llvm-project/lldb/source/Target/TraceCursor.cpp b/contrib/llvm-project/lldb/source/Target/TraceCursor.cpp new file mode 100644 index 000000000000..b85cc750a8a4 --- /dev/null +++ b/contrib/llvm-project/lldb/source/Target/TraceCursor.cpp @@ -0,0 +1,59 @@ +//===-- TraceCursor.cpp -----------------------------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "lldb/Target/TraceCursor.h" + +#include "lldb/Target/ExecutionContext.h" +#include "lldb/Target/Trace.h" + +using namespace lldb; +using namespace lldb_private; +using namespace llvm; + +TraceCursor::TraceCursor(lldb::ThreadSP thread_sp) + : m_exe_ctx_ref(ExecutionContext(thread_sp)) {} + +ExecutionContextRef &TraceCursor::GetExecutionContextRef() { + return m_exe_ctx_ref; +} + +void TraceCursor::SetForwards(bool forwards) { m_forwards = forwards; } + +bool TraceCursor::IsForwards() const { return m_forwards; } + +bool TraceCursor::IsError() const { + return GetItemKind() == lldb::eTraceItemKindError; +} + +bool TraceCursor::IsEvent() const { + return GetItemKind() == lldb::eTraceItemKindEvent; +} + +bool TraceCursor::IsInstruction() const { + return GetItemKind() == lldb::eTraceItemKindInstruction; +} + +const char *TraceCursor::GetEventTypeAsString() const { + return EventKindToString(GetEventType()); +} + +const char *TraceCursor::EventKindToString(lldb::TraceEvent event_kind) { + switch (event_kind) { + case lldb::eTraceEventDisabledHW: + return "hardware disabled tracing"; + case lldb::eTraceEventDisabledSW: + return "software disabled tracing"; + case lldb::eTraceEventCPUChanged: + return "CPU core changed"; + case lldb::eTraceEventHWClockTick: + return "HW clock tick"; + case lldb::eTraceEventSyncPoint: + return "trace synchronization point"; + } + llvm_unreachable("Fully covered switch above"); +} |