[vmkit-commits] [vmkit] r69591 - /vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Mon Apr 20 05:17:06 PDT 2009
Author: geoffray
Date: Mon Apr 20 07:17:06 2009
New Revision: 69591
URL: http://llvm.org/viewvc/llvm-project?rev=69591&view=rev
Log:
Bugfixes when generating a VT.
Modified:
vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp
Modified: vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp?rev=69591&r1=69590&r2=69591&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp Mon Apr 20 07:17:06 2009
@@ -303,7 +303,7 @@
LCI->getVirtualType();
size = classDef->asClass()->virtualTableSize;
} else {
- size = classDef->super->virtualTableSize;
+ size = JavaVirtualTable::getBaseSize();
}
llvm::Constant* res = 0;
virtual_table_iterator End = virtualTables.end();
@@ -1142,10 +1142,11 @@
Constant* JavaAOTCompiler::CreateConstantFromVT(JavaVirtualTable* VT) {
CommonClass* classDef = VT->cl;
- uint32 size = classDef->isArray() ? classDef->super->virtualTableSize :
- classDef->asClass()->virtualTableSize;
- JavaVirtualTable* RealVT = classDef->isArray() ? classDef->super->virtualVT :
- VT;
+ uint32 size = classDef->isClass() ? classDef->asClass()->virtualTableSize :
+ JavaVirtualTable::getBaseSize();
+ JavaVirtualTable* RealVT = classDef->isClass() ?
+ VT : ClassArray::SuperArray->virtualVT;
+
const ArrayType* ATy =
dyn_cast<ArrayType>(JnjvmModule::VTType->getContainedType(0));
const PointerType* PTy = dyn_cast<PointerType>(ATy->getContainedType(0));
@@ -1176,7 +1177,7 @@
} else {
Tracer = JavaIntrinsics.ArrayObjectTracerFunction;
}
- } else {
+ } else if (classDef->isClass()) {
Tracer = makeTracer(classDef->asClass(), false);
}
@@ -1222,6 +1223,7 @@
std::vector<Constant*> TempElmts;
for (uint32 i = 0; i < VT->nbSecondaryTypes; ++i) {
+ assert(VT->secondaryTypes[i] && "No secondary type");
Constant* Cl = getVirtualTable(VT->secondaryTypes[i]);
TempElmts.push_back(Cl);
}
More information about the vmkit-commits
mailing list