[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