[llvm-commits] CVS: llvm/lib/ExecutionEngine/Interpreter/Interpreter.cpp Interpreter.h

Chris Lattner lattner at cs.uiuc.edu
Tue Mar 21 22:08:03 PST 2006



Changes in directory llvm/lib/ExecutionEngine/Interpreter:

Interpreter.cpp updated: 1.26 -> 1.27
Interpreter.h updated: 1.72 -> 1.73
---
Log message:

Eliminate the dependency of ExecutionEngine on the JIT/Interpreter libraries.

Now you can build a tool with just the JIT or just the interpreter.


---
Diffs of the changes:  (+19 -2)

 Interpreter.cpp |   15 ++++++++++++++-
 Interpreter.h   |    6 +++++-
 2 files changed, 19 insertions(+), 2 deletions(-)


Index: llvm/lib/ExecutionEngine/Interpreter/Interpreter.cpp
diff -u llvm/lib/ExecutionEngine/Interpreter/Interpreter.cpp:1.26 llvm/lib/ExecutionEngine/Interpreter/Interpreter.cpp:1.27
--- llvm/lib/ExecutionEngine/Interpreter/Interpreter.cpp:1.26	Mon Feb  6 23:29:44 2006
+++ llvm/lib/ExecutionEngine/Interpreter/Interpreter.cpp	Wed Mar 22 00:07:50 2006
@@ -17,11 +17,24 @@
 #include "llvm/CodeGen/IntrinsicLowering.h"
 #include "llvm/DerivedTypes.h"
 #include "llvm/Module.h"
+#include "llvm/ModuleProvider.h"
 using namespace llvm;
 
+static struct RegisterInterp {
+  RegisterInterp() { Interpreter::Register(); }
+} InterpRegistrator;
+
 /// create - Create a new interpreter object.  This can never fail.
 ///
-ExecutionEngine *Interpreter::create(Module *M, IntrinsicLowering *IL) {
+ExecutionEngine *Interpreter::create(ModuleProvider *MP,
+                                     IntrinsicLowering *IL) {
+  Module *M;
+  try {
+    M = MP->materializeModule();
+  } catch (...) {
+    return 0;  // error materializing the module.
+  }
+  
   bool isLittleEndian = false;
   switch (M->getEndianness()) {
   case Module::LittleEndian: isLittleEndian = true; break;


Index: llvm/lib/ExecutionEngine/Interpreter/Interpreter.h
diff -u llvm/lib/ExecutionEngine/Interpreter/Interpreter.h:1.72 llvm/lib/ExecutionEngine/Interpreter/Interpreter.h:1.73
--- llvm/lib/ExecutionEngine/Interpreter/Interpreter.h:1.72	Mon Feb  6 23:29:44 2006
+++ llvm/lib/ExecutionEngine/Interpreter/Interpreter.h	Wed Mar 22 00:07:50 2006
@@ -102,11 +102,15 @@
   ///
   void runAtExitHandlers();
 
+  static void Register() {
+    InterpCtor = create;
+  }
+  
   /// create - Create an interpreter ExecutionEngine. This can never fail.  The
   /// specified IntrinsicLowering implementation will be deleted when the
   /// Interpreter execution engine is destroyed.
   ///
-  static ExecutionEngine *create(Module *M, IntrinsicLowering *IL);
+  static ExecutionEngine *create(ModuleProvider *M, IntrinsicLowering *IL);
 
   /// run - Start execution with the specified function and arguments.
   ///






More information about the llvm-commits mailing list