[vmkit-commits] [vmkit] r196290 - J3CodeGen is only used to translate a Java bytecode into a llvm bitcode

Gael Thomas gael.thomas at lip6.fr
Tue Dec 3 07:52:53 PST 2013


Author: gthomas
Date: Tue Dec  3 09:52:52 2013
New Revision: 196290

URL: http://llvm.org/viewvc/llvm-project?rev=196290&view=rev
Log:
J3CodeGen is only used to translate a Java bytecode into a llvm bitcode

Modified:
    vmkit/branches/mcjit/include/j3/j3codegen.h
    vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc
    vmkit/branches/mcjit/lib/j3/vm/j3method.cc

Modified: vmkit/branches/mcjit/include/j3/j3codegen.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3codegen.h?rev=196290&r1=196289&r2=196290&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3codegen.h (original)
+++ vmkit/branches/mcjit/include/j3/j3codegen.h Tue Dec  3 09:52:52 2013
@@ -56,45 +56,45 @@ namespace j3 {
 	class J3CodeGen {
 		friend class J3CodeGenVar;
 
-		vmkit::BumpAllocator* allocator;
-		llvm::Module*         module;
-		llvm::BasicBlock*     bb;
-		llvm::IRBuilder<>*    builder;
-		llvm::Function*       _llvmFunction;
-
-		J3*                   vm;
-		J3Class*              cl;
-		J3ClassLoader*        loader;
-		J3Method*             method;
-		J3MethodType*         methodType;
-		J3Reader*             codeReader;
-
-		llvm::BasicBlock*     bbCheckCastFailed;
-		llvm::BasicBlock*     bbNullCheckFailed;
-		llvm::BasicBlock*     bbRet;
-
-		J3ExceptionEntry*     exceptionEntries;
-		J3ExceptionNode**     exceptionNodes;
-		uint32_t              nbExceptionEntries;
-		uint32_t              nbExceptionNodes;
-		uint32_t              curExceptionNode;
-
-		J3OpInfo*             opInfos;
-		uint32_t*             pendingBranchs;
-		uint32_t              topPendingBranchs;
-
-		llvm::Value*          nullValue;
-
-		llvm::MDNode*         dbgInfo;
-		uint32_t              javaPC;
-
-		J3CodeGenVar          locals;
-		J3CodeGenVar          stack;
-		J3CodeGenVar          ret;
+		vmkit::BumpAllocator*  allocator;
+		llvm::Module*          module;
+		llvm::BasicBlock*      bb;
+		llvm::IRBuilder<>*     builder;
+		llvm::Function*        _llvmFunction;
+
+		J3*                    vm;
+		J3Class*               cl;
+		J3ClassLoader*         loader;
+		J3Method*              method;
+		J3MethodType*          methodType;
+		J3Reader*              codeReader;
+
+		llvm::BasicBlock*      bbCheckCastFailed;
+		llvm::BasicBlock*      bbNullCheckFailed;
+		llvm::BasicBlock*      bbRet;
+
+		J3ExceptionEntry*      exceptionEntries;
+		J3ExceptionNode**      exceptionNodes;
+		uint32_t               nbExceptionEntries;
+		uint32_t               nbExceptionNodes;
+		uint32_t               curExceptionNode;
+
+		J3OpInfo*              opInfos;
+		uint32_t*              pendingBranchs;
+		uint32_t               topPendingBranchs;
+
+		llvm::Value*           nullValue;
+
+		llvm::MDNode*          dbgInfo;
+		uint32_t               javaPC;
+
+		J3CodeGenVar           locals;
+		J3CodeGenVar           stack;
+		J3CodeGenVar           ret;
 
-		bool                  closeBB;
+		bool                   closeBB;
 
-		bool                  isWide;
+		bool                   isWide;
 
 		uint32_t           wideReadU1();
 		uint32_t           wideReadS1();
@@ -203,7 +203,6 @@ namespace j3 {
 		static void       destroy(J3CodeGen* codeGen);
 
 		llvm::Function*   llvmFunction() { return _llvmFunction; }
-		uint8_t*          fnPtr();
 	};
 }
 

Modified: vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc?rev=196290&r1=196289&r2=196290&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc Tue Dec  3 09:52:52 2013
@@ -101,9 +101,6 @@ J3CodeGen::J3CodeGen(vmkit::BumpAllocato
 		generateNative();
 	else
 		generateJava();
-
-	loader->pm()->run(*llvmFunction());
-	vm->ee()->recompileAndRelinkFunction(llvmFunction());
 }
 
 J3CodeGen::~J3CodeGen() {
@@ -127,10 +124,6 @@ void J3CodeGen::destroy(J3CodeGen* codeG
 	vmkit::BumpAllocator::destroy(allocator);
 }
 
-uint8_t* J3CodeGen::fnPtr() {
-	return (uint8_t*)vm->ee()->getPointerToFunction(llvmFunction());
-}
-
 uint32_t J3CodeGen::wideReadU1() {
 	if(isWide) {
 		isWide = 0;

Modified: vmkit/branches/mcjit/lib/j3/vm/j3method.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3method.cc?rev=196290&r1=196289&r2=196290&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3method.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3method.cc Tue Dec  3 09:52:52 2013
@@ -60,8 +60,11 @@ void* J3Method::fnPtr() {
 
 		J3CodeGen* codeGen = J3CodeGen::create(this);
 		_llvmFunction = codeGen->llvmFunction();
-		_fnPtr = codeGen->fnPtr();
 		J3CodeGen::destroy(codeGen);
+
+		cl()->loader()->pm()->run(*_llvmFunction);
+		llvm::ExecutionEngine* ee = cl()->loader()->vm()->ee();
+		_fnPtr = (uint8_t*)ee->recompileAndRelinkFunction(_llvmFunction);
 	}
 
 	return _fnPtr;





More information about the vmkit-commits mailing list