Minor speedup by avoiding callbacks to functions already generated

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6052 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2003-05-08 21:44:21 +00:00
parent c309a7627c
commit eb5a93b86b
2 changed files with 8 additions and 5 deletions

View File

@ -46,7 +46,6 @@ void VM::CompilationCallback() {
#endif #endif
} }
void VM::registerCallback() { void VM::registerCallback() {
TheVM = this; TheVM = this;
} }

View File

@ -131,11 +131,15 @@ void Emitter::emitAddress(void *Addr, bool isPCRelative) {
void Emitter::emitGlobalAddress(GlobalValue *V, bool isPCRelative) { void Emitter::emitGlobalAddress(GlobalValue *V, bool isPCRelative) {
if (isPCRelative) { // must be a call, this is a major hack! if (isPCRelative) { // must be a call, this is a major hack!
// FIXME: Try looking up the function to see if it is already compiled! // Try looking up the function to see if it is already compiled!
TheVM.addFunctionRef(CurByte, cast<Function>(V)); if (void *Addr = TheVM.getPointerToGlobalIfAvailable(V)) {
emitAddress(Addr, isPCRelative);
} else { // Function has not yet been code generated!
TheVM.addFunctionRef(CurByte, cast<Function>(V));
// Delayed resolution... // Delayed resolution...
emitAddress((void*)VM::CompilationCallback, isPCRelative); emitAddress((void*)VM::CompilationCallback, isPCRelative);
}
} else { } else {
emitAddress(TheVM.getPointerToGlobal(V), isPCRelative); emitAddress(TheVM.getPointerToGlobal(V), isPCRelative);
} }