aboutsummaryrefslogtreecommitdiff
path: root/contrib/llvm-project/lldb/source/Target/TraceCursor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm-project/lldb/source/Target/TraceCursor.cpp')
-rw-r--r--contrib/llvm-project/lldb/source/Target/TraceCursor.cpp59
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");
+}