[vmkit-commits] [vmkit] r75051 - /vmkit/trunk/lib/JnJVM/Compiler/JITInfo.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Wed Jul 8 14:42:23 PDT 2009
Author: geoffray
Date: Wed Jul 8 16:42:21 2009
New Revision: 75051
URL: http://llvm.org/viewvc/llvm-project?rev=75051&view=rev
Log:
Set correct virtualType of java.lang.Object.
Modified:
vmkit/trunk/lib/JnJVM/Compiler/JITInfo.cpp
Modified: vmkit/trunk/lib/JnJVM/Compiler/JITInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Compiler/JITInfo.cpp?rev=75051&r1=75050&r2=75051&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/JITInfo.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/JITInfo.cpp Wed Jul 8 16:42:21 2009
@@ -39,35 +39,35 @@
const Type* LLVMClassInfo::getVirtualType() {
if (!virtualType) {
std::vector<const llvm::Type*> fields;
+ const TargetData* targetData = JnjvmModule::TheTargetData;
+ const StructLayout* sl = 0;
+ const StructType* structType = 0;
if (classDef->super) {
LLVMClassInfo* CLI = JavaLLVMCompiler::getClassInfo(classDef->super);
const llvm::Type* Ty = CLI->getVirtualType()->getContainedType(0);
-
- if (classDef->super->super) {
- fields.push_back(Ty);
- } else {
- fields.push_back(JnjvmModule::JavaObjectType->getContainedType(0));
+ fields.push_back(Ty);
+
+ for (uint32 i = 0; i < classDef->nbVirtualFields; ++i) {
+ JavaField& field = classDef->virtualFields[i];
+ field.num = i + 1;
+ Typedef* type = field.getSignature();
+ LLVMAssessorInfo& LAI = JavaLLVMCompiler::getTypedefInfo(type);
+ fields.push_back(LAI.llvmType);
}
- } else {
- fields.push_back(JnjvmModule::JavaObjectType->getContainedType(0));
- }
- for (uint32 i = 0; i < classDef->nbVirtualFields; ++i) {
- JavaField& field = classDef->virtualFields[i];
- field.num = i + 1;
- Typedef* type = field.getSignature();
- LLVMAssessorInfo& LAI = JavaLLVMCompiler::getTypedefInfo(type);
- fields.push_back(LAI.llvmType);
- }
+ structType = StructType::get(fields, false);
+ virtualType = PointerType::getUnqual(structType);
+ sl = targetData->getStructLayout(structType);
+
+ } else {
+ virtualType = JnjvmModule::JavaObjectType;
+ structType = dyn_cast<const StructType>(virtualType->getContainedType(0));
+ sl = targetData->getStructLayout(structType);
+
+ }
- JavaLLVMCompiler* Mod =
- (JavaLLVMCompiler*)classDef->classLoader->getCompiler();
- StructType* structType = StructType::get(fields, false);
- virtualType = PointerType::getUnqual(structType);
- const TargetData* targetData = JnjvmModule::TheTargetData;
- const StructLayout* sl = targetData->getStructLayout(structType);
for (uint32 i = 0; i < classDef->nbVirtualFields; ++i) {
JavaField& field = classDef->virtualFields[i];
@@ -78,6 +78,8 @@
classDef->virtualSize = (uint32)size;
virtualSizeConstant = ConstantInt::get(Type::Int32Ty, size);
+ JavaLLVMCompiler* Mod =
+ (JavaLLVMCompiler*)classDef->classLoader->getCompiler();
Mod->makeVT(classDef);
}
More information about the vmkit-commits
mailing list