Initial checkin
authorChris Lattner <sabre@nondot.org>
Tue, 24 Dec 2002 00:01:22 +0000 (00:01 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 24 Dec 2002 00:01:22 +0000 (00:01 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5127 91177308-0d34-0410-b5e6-96231b3b80d8

lib/ExecutionEngine/JIT/JIT.h [new file with mode: 0644]
lib/ExecutionEngine/JIT/VM.h [new file with mode: 0644]

diff --git a/lib/ExecutionEngine/JIT/JIT.h b/lib/ExecutionEngine/JIT/JIT.h
new file mode 100644 (file)
index 0000000..d3745e5
--- /dev/null
@@ -0,0 +1,54 @@
+//===-- VM.h - Definitions for Virtual Machine ------------------*- C++ -*-===//
+//
+// This file defines the top-level Virtual Machine data structure.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef VM_H
+#define VM_H
+
+#include "../ExecutionEngine.h"
+#include "llvm/PassManager.h"
+#include <map>
+
+class Function;
+class GlobalValue;
+class Constant;
+class TargetMachine;
+class MachineCodeEmitter;
+
+class VM : public ExecutionEngine {
+  TargetMachine &TM;       // The current target we are compiling to
+  PassManager PM;          // Passes to compile a function
+  MachineCodeEmitter *MCE; // MCE object
+
+  // FunctionRefs - A mapping between addresses that refer to unresolved
+  // functions and the LLVM function object itself.  This is used by the fault
+  // handler to lazily patch up references...
+  //
+  std::map<void*, Function*> FunctionRefs;
+public:
+  VM(Module *M, TargetMachine *tm);
+  ~VM();
+
+  /// run - Start execution with the specified function and arguments.
+  ///
+  virtual int run(const std::string &FnName,
+                 const std::vector<std::string> &Args);
+
+  void addFunctionRef(void *Ref, Function *F) {
+    FunctionRefs[Ref] = F;
+  }
+
+  const std::string &getFunctionReferencedName(void *RefAddr);
+
+  void *resolveFunctionReference(void *RefAddr);
+
+private:
+  static MachineCodeEmitter *createEmitter(VM &V);
+  void setupPassManager();
+  void *getPointerToFunction(const Function *F);
+  void registerCallback();
+};
+
+#endif
diff --git a/lib/ExecutionEngine/JIT/VM.h b/lib/ExecutionEngine/JIT/VM.h
new file mode 100644 (file)
index 0000000..d3745e5
--- /dev/null
@@ -0,0 +1,54 @@
+//===-- VM.h - Definitions for Virtual Machine ------------------*- C++ -*-===//
+//
+// This file defines the top-level Virtual Machine data structure.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef VM_H
+#define VM_H
+
+#include "../ExecutionEngine.h"
+#include "llvm/PassManager.h"
+#include <map>
+
+class Function;
+class GlobalValue;
+class Constant;
+class TargetMachine;
+class MachineCodeEmitter;
+
+class VM : public ExecutionEngine {
+  TargetMachine &TM;       // The current target we are compiling to
+  PassManager PM;          // Passes to compile a function
+  MachineCodeEmitter *MCE; // MCE object
+
+  // FunctionRefs - A mapping between addresses that refer to unresolved
+  // functions and the LLVM function object itself.  This is used by the fault
+  // handler to lazily patch up references...
+  //
+  std::map<void*, Function*> FunctionRefs;
+public:
+  VM(Module *M, TargetMachine *tm);
+  ~VM();
+
+  /// run - Start execution with the specified function and arguments.
+  ///
+  virtual int run(const std::string &FnName,
+                 const std::vector<std::string> &Args);
+
+  void addFunctionRef(void *Ref, Function *F) {
+    FunctionRefs[Ref] = F;
+  }
+
+  const std::string &getFunctionReferencedName(void *RefAddr);
+
+  void *resolveFunctionReference(void *RefAddr);
+
+private:
+  static MachineCodeEmitter *createEmitter(VM &V);
+  void setupPassManager();
+  void *getPointerToFunction(const Function *F);
+  void registerCallback();
+};
+
+#endif