[vmkit-commits] [vmkit] r84444 - /vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Sun Oct 18 13:59:23 PDT 2009
Author: geoffray
Date: Sun Oct 18 15:59:22 2009
New Revision: 84444
URL: http://llvm.org/viewvc/llvm-project?rev=84444&view=rev
Log:
When looking at java.lang.Class objects, also look at final objects.
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=84444&r1=84443&r2=84444&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp Sun Oct 18 15:59:22 2009
@@ -194,21 +194,28 @@
java_class_iterator End = javaClasses.end();
java_class_iterator I = javaClasses.find(cl);
if (I == End) {
- Class* javaClass = cl->classLoader->bootstrapLoader->upcalls->newClass;
- LLVMClassInfo* LCI = getClassInfo(javaClass);
- const llvm::Type* Ty = LCI->getVirtualType();
- Module& Mod = *getLLVMModule();
+ final_object_iterator End = finalObjects.end();
+ final_object_iterator I = finalObjects.find(cl->delegatee[0]);
+ if (I == End) {
- GlobalVariable* varGV =
- new GlobalVariable(Mod, Ty->getContainedType(0), false,
- GlobalValue::InternalLinkage, 0, "");
+ Class* javaClass = cl->classLoader->bootstrapLoader->upcalls->newClass;
+ LLVMClassInfo* LCI = getClassInfo(javaClass);
+ const llvm::Type* Ty = LCI->getVirtualType();
+ Module& Mod = *getLLVMModule();
- Constant* res = ConstantExpr::getCast(Instruction::BitCast, varGV,
- JnjvmModule::JavaObjectType);
+ GlobalVariable* varGV =
+ new GlobalVariable(Mod, Ty->getContainedType(0), false,
+ GlobalValue::InternalLinkage, 0, "");
+
+ Constant* res = ConstantExpr::getCast(Instruction::BitCast, varGV,
+ JnjvmModule::JavaObjectType);
- javaClasses.insert(std::make_pair(cl, res));
- varGV->setInitializer(CreateConstantFromJavaClass(cl));
- return res;
+ javaClasses.insert(std::make_pair(cl, res));
+ varGV->setInitializer(CreateConstantFromJavaClass(cl));
+ return res;
+ } else {
+ return I->second;
+ }
} else {
return I->second;
}
More information about the vmkit-commits
mailing list