[vmkit-commits] [vmkit] r61500 - /vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Tue Dec 30 08:06:52 PST 2008
Author: geoffray
Date: Tue Dec 30 10:06:41 2008
New Revision: 61500
URL: http://llvm.org/viewvc/llvm-project?rev=61500&view=rev
Log:
Inline the initialization of java.lang.Class objects in JnJVM.
Modified:
vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
Modified: vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp?rev=61500&r1=61499&r2=61500&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp Tue Dec 30 10:06:41 2008
@@ -473,16 +473,18 @@
postProperties.push_back(std::make_pair(key, value));
}
+// Mimic what's happening in Classpath when creating a java.lang.Class object.
JavaObject* UserCommonClass::getClassDelegatee(Jnjvm* vm, JavaObject* pd) {
if (!getDelegatee()) {
UserClass* cl = vm->upcalls->newClass;
- JavaObject* delegatee = cl->doNew(vm);
- if (!pd) {
- vm->upcalls->initClass->invokeIntSpecial(vm, cl, delegatee, this);
+ JavaObjectClass* delegatee = (JavaObjectClass*)cl->doNew(vm);
+ delegatee->vmdata = this;
+ if (!pd && isArray()) {
+ JavaObjectClass* base = (JavaObjectClass*)
+ asArrayClass()->baseClass()->getClassDelegatee(vm, pd);
+ delegatee->pd = base->pd;
} else {
- vm->upcalls->initClassWithProtectionDomain->invokeIntSpecial(vm, cl,
- delegatee,
- this, pd);
+ delegatee->pd = pd;
}
setDelegatee(delegatee);
}
More information about the vmkit-commits
mailing list