summaryrefslogtreecommitdiff
path: root/lldb/source/API/SBReproducerPrivate.h
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/API/SBReproducerPrivate.h')
-rw-r--r--lldb/source/API/SBReproducerPrivate.h28
1 files changed, 15 insertions, 13 deletions
diff --git a/lldb/source/API/SBReproducerPrivate.h b/lldb/source/API/SBReproducerPrivate.h
index edd06941398f..a4c6eb94627b 100644
--- a/lldb/source/API/SBReproducerPrivate.h
+++ b/lldb/source/API/SBReproducerPrivate.h
@@ -7,8 +7,8 @@
//
//===----------------------------------------------------------------------===//
-#ifndef LLDB_API_SBREPRODUCER_PRIVATE_H
-#define LLDB_API_SBREPRODUCER_PRIVATE_H
+#ifndef LLDB_SOURCE_API_SBREPRODUCERPRIVATE_H
+#define LLDB_SOURCE_API_SBREPRODUCERPRIVATE_H
#include "lldb/API/SBReproducer.h"
@@ -20,7 +20,7 @@
#include "llvm/ADT/DenseMap.h"
#define LLDB_GET_INSTRUMENTATION_DATA() \
- lldb_private::repro::GetInstrumentationData()
+ lldb_private::repro::InstrumentationData::Instance()
namespace lldb_private {
namespace repro {
@@ -55,17 +55,19 @@ private:
SBRegistry m_registry;
};
-inline InstrumentationData GetInstrumentationData() {
- if (!lldb_private::repro::Reproducer::Initialized())
- return {};
-
- if (auto *g = lldb_private::repro::Reproducer::Instance().GetGenerator()) {
- auto &p = g->GetOrCreate<SBProvider>();
- return {p.GetSerializer(), p.GetRegistry()};
- }
+class ReplayData {
+public:
+ ReplayData(std::unique_ptr<llvm::MemoryBuffer> memory_buffer)
+ : m_memory_buffer(std::move(memory_buffer)), m_registry(),
+ m_deserializer(m_memory_buffer->getBuffer()) {}
+ Deserializer &GetDeserializer() { return m_deserializer; }
+ Registry &GetRegistry() { return m_registry; }
- return {};
-}
+private:
+ std::unique_ptr<llvm::MemoryBuffer> m_memory_buffer;
+ SBRegistry m_registry;
+ Deserializer m_deserializer;
+};
template <typename T> void RegisterMethods(Registry &R);