mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-23 17:24:48 +00:00
add a mechanism for the JIT to invoke a function to lazily create functions as they are referenced.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43210 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -33,13 +33,13 @@ STATISTIC(NumGlobals , "Number of global vars initialized");
|
||||
ExecutionEngine::EECtorFn ExecutionEngine::JITCtor = 0;
|
||||
ExecutionEngine::EECtorFn ExecutionEngine::InterpCtor = 0;
|
||||
|
||||
ExecutionEngine::ExecutionEngine(ModuleProvider *P) {
|
||||
ExecutionEngine::ExecutionEngine(ModuleProvider *P) : LazyFunctionCreator(0) {
|
||||
LazyCompilationDisabled = false;
|
||||
Modules.push_back(P);
|
||||
assert(P && "ModuleProvider is null?");
|
||||
}
|
||||
|
||||
ExecutionEngine::ExecutionEngine(Module *M) {
|
||||
ExecutionEngine::ExecutionEngine(Module *M) : LazyFunctionCreator(0) {
|
||||
LazyCompilationDisabled = false;
|
||||
assert(M && "Module is null?");
|
||||
Modules.push_back(new ExistingModuleProvider(M));
|
||||
|
@ -101,6 +101,11 @@ void *JIT::getPointerToNamedFunction(const std::string &Name) {
|
||||
Ptr = sys::DynamicLibrary::SearchForAddressOfSymbol(NameStr+1);
|
||||
if (Ptr) return Ptr;
|
||||
}
|
||||
|
||||
/// If a LazyFunctionCreator is installed, use it to get/create the function.
|
||||
if (LazyFunctionCreator)
|
||||
if (void *RP = LazyFunctionCreator(Name))
|
||||
return RP;
|
||||
|
||||
cerr << "ERROR: Program used external function '" << Name
|
||||
<< "' which could not be resolved!\n";
|
||||
|
Reference in New Issue
Block a user