[vmkit-commits] [vmkit] r61579 - in /vmkit/trunk/lib/JnJVM/VMCore: JavaTypes.cpp JavaTypes.h Jnjvm.cpp JnjvmModule.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Fri Jan 2 06:46:13 PST 2009
Author: geoffray
Date: Fri Jan 2 08:46:13 2009
New Revision: 61579
URL: http://llvm.org/viewvc/llvm-project?rev=61579&view=rev
Log:
Also output native to Java stubs.
Modified:
vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.h
vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.cpp?rev=61579&r1=61578&r2=61579&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.cpp Fri Jan 2 08:46:13 2009
@@ -56,12 +56,13 @@
buf->write(")");
}
-const char* Signdef::printString() const {
+const char* Signdef::printString(const char* ext) const {
mvm::PrintBuffer *buf= mvm::PrintBuffer::alloc();
buf->write("Signature<");
getReturnType()->tPrintBuf(buf);
buf->write("...");
humanPrintArgs(buf);
+ buf->write(ext);
buf->write(">");
return buf->contents()->cString();
}
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.h?rev=61579&r1=61578&r2=61579&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.h Fri Jan 2 08:46:13 2009
@@ -281,9 +281,9 @@
///
const UTF8* keyName;
- /// printString - Print the signature for debugging purposes.
+ /// printString - Print the signature with the following extension.
///
- const char* printString() const;
+ const char* printString(const char* ext = "") const;
/// printWithSign - Print the signature of a method with the method's class
/// and name.
@@ -353,6 +353,15 @@
// End of inlined methods of getting dynamically generated functions.
//
//===----------------------------------------------------------------------===//
+
+ /// compileAllStubs - Compile all the native -> Java stubs.
+ ///
+ void compileAllStubs() {
+ getStaticCallBuf();
+ getStaticCallAP();
+ getVirtualCallBuf();
+ getVirtualCallAP();
+ }
/// JInfo - Holds info useful for the JIT.
Modified: vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp?rev=61579&r1=61578&r2=61579&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp Fri Jan 2 08:46:13 2009
@@ -1100,12 +1100,14 @@
JavaMethod& meth = cl->virtualMethods[i];
if (!isAbstract(meth.access))
cl->classLoader->getModuleProvider()->parseFunction(&meth);
+ meth.getSignature()->compileAllStubs();
}
for (uint32 i = 0; i < cl->nbStaticMethods; ++i) {
JavaMethod& meth = cl->staticMethods[i];
if (!isAbstract(meth.access))
cl->classLoader->getModuleProvider()->parseFunction(&meth);
+ meth.getSignature()->compileAllStubs();
}
}
Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp?rev=61579&r1=61578&r2=61579&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp Fri Jan 2 08:46:13 2009
@@ -1512,11 +1512,18 @@
std::vector<Value*> Args;
+ JnjvmModule* Mod = signature->initialLoader->getModule();
+ const char* name = 0;
+ if (Mod->isStaticCompiling()) {
+ name = virt ? signature->printString("virtual_buf") :
+ signature->printString("static_buf");
+ } else {
+ name = "";
+ }
+
Function* res = Function::Create(virt ? getVirtualBufType() :
getStaticBufType(),
- GlobalValue::ExternalLinkage,
- signature->printString(),
- signature->initialLoader->TheModule);
+ GlobalValue::ExternalLinkage, name, Mod);
BasicBlock* currentBlock = BasicBlock::Create("enter", res);
Function::arg_iterator i = res->arg_begin();
@@ -1562,12 +1569,19 @@
Function* LLVMSignatureInfo::createFunctionCallAP(bool virt) {
std::vector<Value*> Args;
+
+ JnjvmModule* Mod = signature->initialLoader->getModule();
+ const char* name = 0;
+ if (Mod->isStaticCompiling()) {
+ name = virt ? signature->printString("virtual_ap") :
+ signature->printString("static_ap");
+ } else {
+ name = "";
+ }
Function* res = Function::Create(virt ? getVirtualBufType() :
getStaticBufType(),
- GlobalValue::ExternalLinkage,
- signature->printString(),
- signature->initialLoader->TheModule);
+ GlobalValue::ExternalLinkage, name, Mod);
BasicBlock* currentBlock = BasicBlock::Create("enter", res);
Function::arg_iterator i = res->arg_begin();
@@ -1665,8 +1679,9 @@
virtualBufFunction = createFunctionCallBuf(true);
signature->setVirtualCallBuf((intptr_t)
mvm::MvmModule::executionEngine->getPointerToGlobal(virtualBufFunction));
- // Now that it's compiled, we don't need the IR anymore
- virtualBufFunction->deleteBody();
+ if (!signature->initialLoader->getModule()->isStaticCompiling())
+ // Now that it's compiled, we don't need the IR anymore
+ virtualBufFunction->deleteBody();
}
return virtualBufFunction;
}
@@ -1678,8 +1693,9 @@
virtualAPFunction = createFunctionCallAP(true);
signature->setVirtualCallAP((intptr_t)
mvm::MvmModule::executionEngine->getPointerToGlobal(virtualAPFunction));
- // Now that it's compiled, we don't need the IR anymore
- virtualAPFunction->deleteBody();
+ if (!signature->initialLoader->getModule()->isStaticCompiling())
+ // Now that it's compiled, we don't need the IR anymore
+ virtualAPFunction->deleteBody();
}
return virtualAPFunction;
}
@@ -1691,8 +1707,9 @@
staticBufFunction = createFunctionCallBuf(false);
signature->setStaticCallBuf((intptr_t)
mvm::MvmModule::executionEngine->getPointerToGlobal(staticBufFunction));
- // Now that it's compiled, we don't need the IR anymore
- staticBufFunction->deleteBody();
+ if (!signature->initialLoader->getModule()->isStaticCompiling())
+ // Now that it's compiled, we don't need the IR anymore
+ staticBufFunction->deleteBody();
}
return staticBufFunction;
}
@@ -1704,8 +1721,9 @@
staticAPFunction = createFunctionCallAP(false);
signature->setStaticCallAP((intptr_t)
mvm::MvmModule::executionEngine->getPointerToGlobal(staticAPFunction));
- // Now that it's compiled, we don't need the IR anymore
- staticAPFunction->deleteBody();
+ if (!signature->initialLoader->getModule()->isStaticCompiling())
+ // Now that it's compiled, we don't need the IR anymore
+ staticAPFunction->deleteBody();
}
return staticAPFunction;
}
More information about the vmkit-commits
mailing list