[vmkit-commits] [vmkit] r143428 - in /vmkit/trunk/lib/J3/ClassLib/OpenJDK: ClasspathReflect.h JavaUpcalls.cpp

Will Dietz wdietz2 at illinois.edu
Mon Oct 31 21:03:26 PDT 2011


Author: wdietz2
Date: Mon Oct 31 23:03:26 2011
New Revision: 143428

URL: http://llvm.org/viewvc/llvm-project?rev=143428&view=rev
Log:
Add extra fields to JavaObjectClass to hold CommonClass and protection domain.

Modified:
    vmkit/trunk/lib/J3/ClassLib/OpenJDK/ClasspathReflect.h
    vmkit/trunk/lib/J3/ClassLib/OpenJDK/JavaUpcalls.cpp

Modified: vmkit/trunk/lib/J3/ClassLib/OpenJDK/ClasspathReflect.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/ClassLib/OpenJDK/ClasspathReflect.h?rev=143428&r1=143427&r2=143428&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/ClassLib/OpenJDK/ClasspathReflect.h (original)
+++ vmkit/trunk/lib/J3/ClassLib/OpenJDK/ClasspathReflect.h Mon Oct 31 23:03:26 2011
@@ -15,6 +15,7 @@
 #include "JavaClass.h"
 #include "JavaObject.h"
 #include "JavaThread.h"
+#include "JavaString.h"
 
 namespace j3 {
 
@@ -38,30 +39,32 @@
   JavaObject* annotations;
   JavaObject* declaredAnnotations;
   JavaObject* annotationType;
+  // Extra fields added by VM
+  UserCommonClass * internalClass;
+  JavaObject * pd;
 
 public:
 
   static UserCommonClass* getClass(JavaObjectClass* cl) {
     llvm_gcroot(cl, 0);
-    UNIMPLEMENTED();
-    return NULL;
+    return cl->internalClass;
   }
 
   static void setClass(JavaObjectClass* cl, UserCommonClass* vmdata) {
     llvm_gcroot(cl, 0);
-    UNIMPLEMENTED();
+    cl->internalClass = vmdata;
   }
 
   static void setProtectionDomain(JavaObjectClass* cl, JavaObject* pd) {
     llvm_gcroot(cl, 0);
     llvm_gcroot(pd, 0);
-    UNIMPLEMENTED();
+    mvm::Collector::objectReferenceWriteBarrier(
+        (gc*)cl, (gc**)&(cl->pd), (gc*)pd);
   }
 
   static JavaObject* getProtectionDomain(JavaObjectClass* cl) {
     llvm_gcroot(cl, 0);
-    UNIMPLEMENTED();
-    return NULL;
+    return cl->pd;
   }
 
   static void staticTracer(JavaObjectClass* obj, word_t closure) {

Modified: vmkit/trunk/lib/J3/ClassLib/OpenJDK/JavaUpcalls.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/ClassLib/OpenJDK/JavaUpcalls.cpp?rev=143428&r1=143427&r2=143428&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/ClassLib/OpenJDK/JavaUpcalls.cpp (original)
+++ vmkit/trunk/lib/J3/ClassLib/OpenJDK/JavaUpcalls.cpp Mon Oct 31 23:03:26 2011
@@ -468,6 +468,8 @@
 
   newClass =
     UPCALL_CLASS(loader, "java/lang/Class");
+  // Add space for extra fields, see ClasspathReflect.h
+  newClass->virtualSize += 2*sizeof(void*);
 
   newThrowable =
     UPCALL_CLASS(loader, "java/lang/Throwable");





More information about the vmkit-commits mailing list