« Return to Thread: RFC: shark + llvm2.6svn LLVMContext api change

RFC: shark + llvm2.6svn LLVMContext api change

by Xerxes RÄnby :: Rate this Message:

Reply to Author | View in Thread

LLVM 2.6svn trunk now require the passing of a LLVMContext while
creating a LLVM Module in order for LLVM clients to use the LLVM JIT  
multithreaded. [1]
Fortunate for us LLVM have also provided a new backward compatible API,
by using getGlobalContext() a LLVMContext are returned that can be used
by current singlethreaded compiler clients to quickly fullfill this
change. [2]

I have added some comments to help future shark hackers find what needs
to change if someone wants to make the shark compiler multi-threaded.

I have tested this patch using llvm r74781 and icedtea6
http://icedtea.classpath.org/hg/icedtea6/rev/308c172cd230 on ia32 / F11

[1] http://lists.cs.uiuc.edu/pipermail/llvmdev/2009-June/023505.html -
[LLVMdev] MAJOR API CHANGE: LLVMContext
[2] http://lists.cs.uiuc.edu/pipermail/llvmdev/2009-June/023507.html

Cheers
Xerxes




Index: icedtea6/ports/hotspot/src/share/vm/shark/sharkCompiler.cpp
===================================================================
--- icedtea6.orig/ports/hotspot/src/share/vm/shark/sharkCompiler.cpp
+++ icedtea6/ports/hotspot/src/share/vm/shark/sharkCompiler.cpp
@@ -43,7 +43,15 @@ SharkCompiler::SharkCompiler()
 #endif
 
   // Create a module to build our functions into
+#if SHARK_LLVM_VERSION >= 26
+  // LLVM 2.6 and later requires passing a LLVMContext during module
+  // creation. The LLVM API getGlobalContext() returns a LLVMContext that
+  // can be used safely as long as the shark compiler stays single threaded
+  // and only uses one module.
+  _module = new Module("shark", getGlobalContext());
+#else
   _module = new Module("shark");
+#endif
 
   // Create the builder to build our functions
   _builder = new SharkBuilder(this);
Index: icedtea6/ports/hotspot/src/share/vm/shark/llvmHeaders.hpp
===================================================================
--- icedtea6.orig/ports/hotspot/src/share/vm/shark/llvmHeaders.hpp
+++ icedtea6/ports/hotspot/src/share/vm/shark/llvmHeaders.hpp
@@ -32,6 +32,9 @@
 #include <llvm/DerivedTypes.h>
 #include <llvm/ExecutionEngine/ExecutionEngine.h>
 #include <llvm/Instructions.h>
+#if SHARK_LLVM_VERSION >= 26
+#include <llvm/LLVMContext.h>
+#endif
 #include <llvm/Module.h>
 #include <llvm/ModuleProvider.h>
 #include <llvm/Support/IRBuilder.h>

 « Return to Thread: RFC: shark + llvm2.6svn LLVMContext api change