This revision was automatically updated to reflect the committed changes.
Closed by commit rL333143: Break dependency from Core to ObjectFileJIT. 
(authored by zturner, committed by ).
Herald added a subscriber: llvm-commits.

Changed prior to commit:
  https://reviews.llvm.org/D47228?vs=148100&id=148322#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D47228

Files:
  lldb/trunk/include/lldb/Core/Module.h
  lldb/trunk/source/Core/CMakeLists.txt
  lldb/trunk/source/Core/Module.cpp
  lldb/trunk/source/Expression/CMakeLists.txt
  lldb/trunk/source/Expression/IRExecutionUnit.cpp

Index: lldb/trunk/source/Core/CMakeLists.txt
===================================================================
--- lldb/trunk/source/Core/CMakeLists.txt
+++ lldb/trunk/source/Core/CMakeLists.txt
@@ -69,7 +69,6 @@
     lldbPluginProcessUtility
     lldbPluginCPlusPlusLanguage
     lldbPluginObjCLanguage
-    lldbPluginObjectFileJIT
     ${LLDB_CURSES_LIBS}
 
   LINK_COMPONENTS
Index: lldb/trunk/source/Core/Module.cpp
===================================================================
--- lldb/trunk/source/Core/Module.cpp
+++ lldb/trunk/source/Core/Module.cpp
@@ -53,7 +53,6 @@
 
 #include "Plugins/Language/CPlusPlus/CPlusPlusLanguage.h"
 #include "Plugins/Language/ObjC/ObjCLanguage.h"
-#include "Plugins/ObjectFile/JIT/ObjectFileJIT.h"
 
 #include "llvm/ADT/STLExtras.h"    // for make_unique
 #include "llvm/Support/Compiler.h" // for LLVM_PRETT...
@@ -1652,26 +1651,6 @@
   return 0;
 }
 
-ModuleSP
-Module::CreateJITModule(const lldb::ObjectFileJITDelegateSP &delegate_sp) {
-  if (delegate_sp) {
-    // Must create a module and place it into a shared pointer before we can
-    // create an object file since it has a std::weak_ptr back to the module,
-    // so we need to control the creation carefully in this static function
-    ModuleSP module_sp(new Module());
-    module_sp->m_objfile_sp =
-        std::make_shared<ObjectFileJIT>(module_sp, delegate_sp);
-    if (module_sp->m_objfile_sp) {
-      // Once we get the object file, update our module with the object file's
-      // architecture since it might differ in vendor/os if some parts were
-      // unknown.
-      module_sp->m_objfile_sp->GetArchitecture(module_sp->m_arch);
-    }
-    return module_sp;
-  }
-  return ModuleSP();
-}
-
 bool Module::GetIsDynamicLinkEditor() {
   ObjectFile *obj_file = GetObjectFile();
 
Index: lldb/trunk/source/Expression/IRExecutionUnit.cpp
===================================================================
--- lldb/trunk/source/Expression/IRExecutionUnit.cpp
+++ lldb/trunk/source/Expression/IRExecutionUnit.cpp
@@ -33,6 +33,7 @@
 #include "lldb/Utility/Log.h"
 
 #include "lldb/../../source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h"
+#include "lldb/../../source/Plugins/ObjectFile/JIT/ObjectFileJIT.h"
 
 using namespace lldb_private;
 
@@ -1225,15 +1226,18 @@
 lldb::ModuleSP IRExecutionUnit::GetJITModule() {
   ExecutionContext exe_ctx(GetBestExecutionContextScope());
   Target *target = exe_ctx.GetTargetPtr();
-  if (target) {
-    lldb::ModuleSP jit_module_sp = lldb_private::Module::CreateJITModule(
-        std::static_pointer_cast<lldb_private::ObjectFileJITDelegate>(
-            shared_from_this()));
-    if (jit_module_sp) {
-      bool changed = false;
-      jit_module_sp->SetLoadAddress(*target, 0, true, changed);
-    }
-    return jit_module_sp;
-  }
-  return lldb::ModuleSP();
+  if (!target)
+    return nullptr;
+
+  auto Delegate = std::static_pointer_cast<lldb_private::ObjectFileJITDelegate>(
+      shared_from_this());
+
+  lldb::ModuleSP jit_module_sp =
+      lldb_private::Module::CreateModuleFromObjectFile<ObjectFileJIT>(Delegate);
+  if (!jit_module_sp)
+    return nullptr;
+
+  bool changed = false;
+  jit_module_sp->SetLoadAddress(*target, 0, true, changed);
+  return jit_module_sp;
 }
Index: lldb/trunk/source/Expression/CMakeLists.txt
===================================================================
--- lldb/trunk/source/Expression/CMakeLists.txt
+++ lldb/trunk/source/Expression/CMakeLists.txt
@@ -30,6 +30,7 @@
     lldbTarget
     lldbUtility
     lldbPluginExpressionParserClang
+    lldbPluginObjectFileJIT
 
   LINK_COMPONENTS
     Core
Index: lldb/trunk/include/lldb/Core/Module.h
===================================================================
--- lldb/trunk/include/lldb/Core/Module.h
+++ lldb/trunk/include/lldb/Core/Module.h
@@ -155,8 +155,23 @@
 
   Module(const ModuleSpec &module_spec);
 
-  static lldb::ModuleSP
-  CreateJITModule(const lldb::ObjectFileJITDelegateSP &delegate_sp);
+  template <typename ObjFilePlugin, typename... Args>
+  static lldb::ModuleSP CreateModuleFromObjectFile(Args &&... args) {
+    // Must create a module and place it into a shared pointer before we can
+    // create an object file since it has a std::weak_ptr back to the module,
+    // so we need to control the creation carefully in this static function
+    lldb::ModuleSP module_sp(new Module());
+    module_sp->m_objfile_sp =
+        std::make_shared<ObjFilePlugin>(module_sp, std::forward<Args>(args)...);
+
+    // Once we get the object file, update our module with the object file's
+    // architecture since it might differ in vendor/os if some parts were
+    // unknown.
+    if (!module_sp->m_objfile_sp->GetArchitecture(module_sp->m_arch))
+      return nullptr;
+
+    return module_sp;
+  }
 
   //------------------------------------------------------------------
   /// Destructor.
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to