[vmkit-commits] [vmkit] r61859 - in /vmkit/trunk/lib/JnJVM/VMCore: Jnjvm.cpp JnjvmModule.cpp JnjvmModule.h
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Wed Jan 7 08:00:07 PST 2009
Author: geoffray
Date: Wed Jan 7 10:00:05 2009
New Revision: 61859
URL: http://llvm.org/viewvc/llvm-project?rev=61859&view=rev
Log:
Let the compiler output the VT, since it knows which class are being compiled.
Previously it was done when a class was resolving, and the module does not know
yet which classes it will compile.
Modified:
vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp
vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.h
Modified: vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp?rev=61859&r1=61858&r2=61859&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp Wed Jan 7 10:00:05 2009
@@ -1134,6 +1134,8 @@
bootstrapLoader->upcalls->initialiseClasspath(bootstrapLoader);
uint32 size = strlen(name);
+ JnjvmModule* M = bootstrapLoader->getModule();
+
if (size > 4 &&
(!strcmp(&name[size - 4], ".jar") || !strcmp(&name[size - 4], ".zip"))) {
@@ -1173,6 +1175,7 @@
Class* cl = *i;
cl->resolveClass();
cl->setOwnerClass(JavaThread::get());
+ M->makeVT(cl);
}
for (std::vector<Class*>::iterator i = classes.begin(), e = classes.end();
@@ -1186,11 +1189,10 @@
const UTF8* utf8 = bootstrapLoader->asciizConstructUTF8(name);
UserClass* cl = bootstrapLoader->loadName(utf8, true, true);
cl->setOwnerClass(JavaThread::get());
+ M->makeVT(cl);
compileClass(cl);
}
- // Set the linkage to External, so that the printer does not complain.
- JnjvmModule* M = bootstrapLoader->getModule();
M->CreateStaticInitializer();
// Print stats before quitting.
Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp?rev=61859&r1=61858&r2=61859&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp Wed Jan 7 10:00:05 2009
@@ -419,10 +419,6 @@
virtual_table_iterator I = virtualTables.find(classDef);
if (I == End) {
- if (isCompiling(classDef)) {
- makeVT(classDef);
- }
-
const ArrayType* ATy = dyn_cast<ArrayType>(VTType->getContainedType(0));
const PointerType* PTy = dyn_cast<PointerType>(ATy->getContainedType(0));
ATy = ArrayType::get(PTy, classDef->virtualTableSize);
@@ -436,7 +432,6 @@
virtualTables.insert(std::make_pair(classDef, res));
if (isCompiling(classDef)) {
- makeVT(classDef);
Function* Finalizer = ((Function**)classDef->virtualVT)[0];
Function* Tracer = LCI->getVirtualTracer();
Constant* C = CreateConstantFromVT(classDef->virtualVT,
Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.h?rev=61859&r1=61858&r2=61859&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.h Wed Jan 7 10:00:05 2009
@@ -179,6 +179,7 @@
};
class JnjvmModule : public mvm::MvmModule {
+ friend class Jnjvm;
friend class LLVMClassInfo;
private:
std::map<const CommonClass*, llvm::Constant*> nativeClasses;
More information about the vmkit-commits
mailing list