mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-02 16:56:39 +00:00
Enabling incremental bytecode loading in the JIT:
* ExecutionEngine can be constructed from a ModuleProvider * Alphabetized order of forward-declared classes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9123 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
deb1740615
commit
b6c54ed8f5
@ -8,23 +8,25 @@
|
||||
#ifndef EXECUTION_ENGINE_H
|
||||
#define EXECUTION_ENGINE_H
|
||||
|
||||
#include "llvm/ModuleProvider.h"
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include <cassert>
|
||||
class Constant;
|
||||
class Type;
|
||||
class GlobalValue;
|
||||
class Function;
|
||||
union GenericValue;
|
||||
class GlobalValue;
|
||||
class Module;
|
||||
class TargetData;
|
||||
union GenericValue;
|
||||
class Type;
|
||||
|
||||
class ExecutionEngine {
|
||||
Module &CurMod;
|
||||
const TargetData *TD;
|
||||
|
||||
protected:
|
||||
ModuleProvider *MP;
|
||||
// GlobalAddress - A mapping between LLVM global values and their actualized
|
||||
// version...
|
||||
std::map<const GlobalValue*, void *> GlobalAddress;
|
||||
@ -32,9 +34,13 @@ protected:
|
||||
void setTargetData(const TargetData &td) {
|
||||
TD = &td;
|
||||
}
|
||||
|
||||
public:
|
||||
ExecutionEngine(Module *M) : CurMod(*M) {
|
||||
assert(M && "Module is null?");
|
||||
ExecutionEngine(ModuleProvider *P) : CurMod(*(P->getModule())), MP(P) {
|
||||
assert(P && "ModuleProvider is null?");
|
||||
}
|
||||
ExecutionEngine(Module *M) : CurMod(*M), MP(0) {
|
||||
assert(M && "Module is null?");
|
||||
}
|
||||
virtual ~ExecutionEngine();
|
||||
|
||||
@ -47,8 +53,8 @@ public:
|
||||
virtual GenericValue run(Function *F,
|
||||
const std::vector<GenericValue> &ArgValues) = 0;
|
||||
|
||||
static ExecutionEngine *create (Module *M, bool ForceInterpreter,
|
||||
bool TraceMode);
|
||||
static ExecutionEngine *create(ModuleProvider *MP, bool ForceInterpreter,
|
||||
bool TraceMode);
|
||||
|
||||
void addGlobalMapping(const Function *F, void *Addr) {
|
||||
void *&CurVal = GlobalAddress[(const GlobalValue*)F];
|
||||
|
Loading…
Reference in New Issue
Block a user