[vmkit-commits] [vmkit] r78387 - in /vmkit/trunk: include/jnjvm/JnjvmModule.h lib/JnJVM/Compiler/JavaAOTCompiler.cpp lib/JnJVM/Compiler/JavaJIT.cpp lib/JnJVM/Compiler/JnjvmModuleProvider.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Fri Aug 7 10:09:48 PDT 2009


Author: geoffray
Date: Fri Aug  7 12:09:48 2009
New Revision: 78387

URL: http://llvm.org/viewvc/llvm-project?rev=78387&view=rev
Log:
For AOT, make staticCallback a unique function called by callbacks.


Modified:
    vmkit/trunk/include/jnjvm/JnjvmModule.h
    vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp
    vmkit/trunk/lib/JnJVM/Compiler/JavaJIT.cpp
    vmkit/trunk/lib/JnJVM/Compiler/JnjvmModuleProvider.cpp

Modified: vmkit/trunk/include/jnjvm/JnjvmModule.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/jnjvm/JnjvmModule.h?rev=78387&r1=78386&r2=78387&view=diff

==============================================================================
--- vmkit/trunk/include/jnjvm/JnjvmModule.h (original)
+++ vmkit/trunk/include/jnjvm/JnjvmModule.h Fri Aug  7 12:09:48 2009
@@ -459,8 +459,8 @@
   llvm::FunctionPassManager* JavaFunctionPasses;
   llvm::FunctionPassManager* JavaNativeFunctionPasses;
   
-  virtual llvm::Function* addCallback(Class* cl, uint16 index, Signdef* sign,
-                                      bool stat) = 0;
+  virtual llvm::Value* addCallback(Class* cl, uint16 index, Signdef* sign,
+                                   bool stat) = 0;
   
   virtual void staticCallBuf(Signdef* sign) {
     getSignatureInfo(sign)->getStaticBuf();
@@ -545,8 +545,8 @@
 
   virtual ~JavaJITCompiler() {}
   
-  virtual llvm::Function* addCallback(Class* cl, uint16 index, Signdef* sign,
-                                      bool stat);
+  virtual llvm::Value* addCallback(Class* cl, uint16 index, Signdef* sign,
+                                   bool stat);
 
 };
 
@@ -572,8 +572,8 @@
     abort();
   }
   
-  virtual llvm::Function* addCallback(Class* cl, uint16 index, Signdef* sign,
-                                      bool stat);
+  virtual llvm::Value* addCallback(Class* cl, uint16 index, Signdef* sign,
+                                   bool stat);
   
   virtual void makeVT(Class* cl);
   
@@ -690,6 +690,7 @@
 public:
   llvm::Function* StaticInitializer;
   llvm::Function* ObjectPrinter;
+  llvm::Function* Callback;
   
   bool generateStubs;
   bool assumeCompiled;

Modified: vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp?rev=78387&r1=78386&r2=78387&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp Fri Aug  7 12:09:48 2009
@@ -1426,6 +1426,11 @@
 
   StaticInitializer = Function::Create(FTy, GlobalValue::InternalLinkage,
                                        "Init", getLLVMModule());
+  
+  llvmArgs.clear();
+  FTy = FunctionType::get(Type::VoidTy, llvmArgs, false);
+  Callback = Function::Create(FTy, GlobalValue::ExternalLinkage,
+                              "staticCallback", getLLVMModule());
 
   llvmArgs.clear();
   llvmArgs.push_back(JnjvmModule::JavaMethodType);
@@ -1643,7 +1648,7 @@
   func->setLinkage(GlobalValue::ExternalLinkage);
 }
 
-Function* JavaAOTCompiler::addCallback(Class* cl, uint16 index,
+Value* JavaAOTCompiler::addCallback(Class* cl, uint16 index,
                                       Signdef* sign, bool stat) {
  
   JavaConstantPool* ctpInfo = cl->ctpInfo;
@@ -1657,14 +1662,13 @@
           UTF8Buffer(cl->name).cString(), UTF8Buffer(methCl).cString(),
           UTF8Buffer(name).cString());
 
-  Function* func = 0;
   LLVMSignatureInfo* LSI = getSignatureInfo(sign);
   
   const FunctionType* type = stat ? LSI->getStaticType() : 
                                     LSI->getVirtualType();
   
-  func = Function::Create(type, GlobalValue::ExternalLinkage, "staticCallback",
-                          TheModule);
+  Value* func = ConstantExpr::getBitCast(Callback,
+                                         PointerType::getUnqual(type));
   
   return func;
 }

Modified: vmkit/trunk/lib/JnJVM/Compiler/JavaJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Compiler/JavaJIT.cpp?rev=78387&r1=78386&r2=78387&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/JavaJIT.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/JavaJIT.cpp Fri Aug  7 12:09:48 2009
@@ -1534,7 +1534,7 @@
   std::vector<Value*> args;
   FunctionType::param_iterator it  = virtualType->param_end();
   makeArgs(it, index, args, signature->nbArguments + 1);
-  Function* func = 0;
+  Value* func = 0;
 
   if (finalCl) {
     Class* lookup = finalCl->isArray() ? finalCl->super : finalCl->asClass();
@@ -1635,7 +1635,7 @@
     JavaMethod* meth = ctpInfo->infoOfStaticOrSpecialMethod(index, ACC_STATIC,
                                                             signature);
     
-    Function* func = 0;
+    Value* func = 0;
     if (meth) {
       func = TheCompiler->getMethod(meth);
     } else {

Modified: vmkit/trunk/lib/JnJVM/Compiler/JnjvmModuleProvider.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Compiler/JnjvmModuleProvider.cpp?rev=78387&r1=78386&r2=78387&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/JnjvmModuleProvider.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/JnjvmModuleProvider.cpp Fri Aug  7 12:09:48 2009
@@ -48,9 +48,8 @@
 }
 
 
-
-Function* JavaJITCompiler::addCallback(Class* cl, uint16 index,
-                                       Signdef* sign, bool stat) {
+Value* JavaJITCompiler::addCallback(Class* cl, uint16 index,
+                                    Signdef* sign, bool stat) {
   
   Function* F = 0;
   LLVMSignatureInfo* LSI = getSignatureInfo(sign);





More information about the vmkit-commits mailing list