OSDN Git Service

After obtaining the lock, look if the function has been codegen'd by
authorNicolas Geoffray <nicolas.geoffray@lip6.fr>
Fri, 12 Jun 2009 14:11:08 +0000 (14:11 +0000)
committerNicolas Geoffray <nicolas.geoffray@lip6.fr>
Fri, 12 Jun 2009 14:11:08 +0000 (14:11 +0000)
another thread.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73227 91177308-0d34-0410-b5e6-96231b3b80d8

lib/ExecutionEngine/JIT/JIT.cpp

index f8ae884..43995cb 100644 (file)
@@ -563,6 +563,11 @@ void *JIT::getPointerToFunction(Function *F) {
     return Addr;   // Check if function already code gen'd
 
   MutexGuard locked(lock);
+  
+  // Now that this thread owns the lock, check if another thread has already
+  // code gen'd the function.
+  if (void *Addr = getPointerToGlobalIfAvailable(F))
+    return Addr;  
 
   // Make sure we read in the function if it exists in this Module.
   if (F->hasNotBeenReadFromBitcode()) {