[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