[vmkit-commits] [vmkit] r55285 - in /vmkit/trunk/lib/JnJVM: Classpath/ClasspathVMClass.cpp.inc Classpath/ClasspathVMThrowable.cpp.inc VMCore/JavaClass.cpp VMCore/JavaClass.h VMCore/JavaRuntimeJIT.cpp VMCore/JnjvmClassLoader.cpp VMCore/JnjvmModuleProvider.cpp VMCore/NativeUtil.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Sun Aug 24 09:23:57 PDT 2008


Author: geoffray
Date: Sun Aug 24 11:23:56 2008
New Revision: 55285

URL: http://llvm.org/viewvc/llvm-project?rev=55285&view=rev
Log:
Add assessors to fields in Class.


Modified:
    vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp.inc
    vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp.inc
    vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp
    vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h
    vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp
    vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
    vmkit/trunk/lib/JnJVM/VMCore/JnjvmModuleProvider.cpp
    vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.cpp

Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp.inc?rev=55285&r1=55284&r2=55285&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp.inc (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp.inc Sun Aug 24 11:23:56 2008
@@ -342,32 +342,6 @@
   return (jobject)ret;
 }
 
-static void resolveInnerOuterClasses(Class* cl) {
-  Attribut* attribut = cl->lookupAttribut(Attribut::innerClassesAttribut);
-  if (attribut != 0) {
-    Reader reader(attribut, cl->bytes);
-
-    uint16 nbi = reader.readU2();
-    for (uint16 i = 0; i < nbi; ++i) {
-      uint16 inner = reader.readU2();
-      uint16 outer = reader.readU2();
-      //uint16 innerName = 
-      reader.readU2();
-      uint16 accessFlags = reader.readU2();
-      Class* clInner = (Class*)cl->ctpInfo->loadClass(inner);
-      Class* clOuter = (Class*)cl->ctpInfo->loadClass(outer);
-
-      if (clInner == cl) {
-        cl->outerClass = clOuter;
-      } else if (clOuter == cl) {
-        clInner->innerAccess = accessFlags;
-        cl->innerClasses.push_back(clInner);
-      }
-    }
-  }
-  cl->innerOuterResolved = true;
-}
-
 
 JNIEXPORT jclass JNICALL Java_java_lang_VMClass_getDeclaringClass(
 #ifdef NATIVE_JNI
@@ -377,10 +351,10 @@
 jclass Cl) {
   Jnjvm* vm = JavaThread::get()->isolate;
   Class* cl = (Class*)NativeUtil::resolvedImplClass(Cl, false);
-  if (!(cl->innerOuterResolved))
-    resolveInnerOuterClasses(cl);
-  if (cl->outerClass) {
-    return (jclass)vm->getClassDelegatee(cl->outerClass);
+  cl->resolveInnerOuterClasses();
+  Class* outer = cl->getOuterClass();
+  if (outer) {
+    return (jclass)vm->getClassDelegatee(outer);
   } else {
     return 0;
   }
@@ -394,12 +368,12 @@
 jclass Cl, bool publicOnly) {
   Jnjvm* vm = JavaThread::get()->isolate;
   Class* cl = (Class*)NativeUtil::resolvedImplClass(Cl, false);
-  if (!(cl->innerOuterResolved))
-    resolveInnerOuterClasses(cl);
-  ArrayObject* res = ArrayObject::acons(cl->innerClasses.size(), Classpath::constructorArrayClass, &(vm->allocator));
+  cl->resolveInnerOuterClasses();
+  std::vector<Class*>* innerClasses = cl->getInnerClasses();
+  ArrayObject* res = ArrayObject::acons(innerClasses->size(), Classpath::constructorArrayClass, &(vm->allocator));
   uint32 index = 0;
-  for (std::vector<Class*>::iterator i = cl->innerClasses.begin(), 
-       e = cl->innerClasses.end(); i!= e; i++) {
+  for (std::vector<Class*>::iterator i = innerClasses->begin(), 
+       e = innerClasses->end(); i!= e; i++) {
     res->elements[index++] = vm->getClassDelegatee(*i); 
   }
 

Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp.inc?rev=55285&r1=55284&r2=55285&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp.inc (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp.inc Sun Aug 24 11:23:56 2008
@@ -57,9 +57,9 @@
   Attribut* sourceAtt = cl->lookupAttribut(Attribut::sourceFileAttribut);
   
   if (sourceAtt) {
-    Reader reader(sourceAtt, cl->bytes);
+    Reader reader(sourceAtt, cl->getBytes());
     uint16 index = reader.readU2();
-    sourceName = vm->UTF8ToStr(cl->ctpInfo->UTF8At(index));
+    sourceName = vm->UTF8ToStr(cl->getConstantPool()->UTF8At(index));
   }
 
   bool native = isNative(meth->access);

Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp?rev=55285&r1=55284&r2=55285&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp Sun Aug 24 11:23:56 2008
@@ -762,3 +762,31 @@
     }
   }
 }
+
+void Class::resolveInnerOuterClasses() {
+  if (!innerOuterResolved) {
+    Attribut* attribut = lookupAttribut(Attribut::innerClassesAttribut);
+    if (attribut != 0) {
+      Reader reader(attribut, bytes);
+
+      uint16 nbi = reader.readU2();
+      for (uint16 i = 0; i < nbi; ++i) {
+        uint16 inner = reader.readU2();
+        uint16 outer = reader.readU2();
+        //uint16 innerName = 
+        reader.readU2();
+        uint16 accessFlags = reader.readU2();
+        Class* clInner = (Class*)ctpInfo->loadClass(inner);
+        Class* clOuter = (Class*)ctpInfo->loadClass(outer);
+
+        if (clInner == this) {
+          outerClass = clOuter;
+        } else if (clOuter == this) {
+          clInner->innerAccess = accessFlags;
+          innerClasses.push_back(clInner);
+        }
+      }
+    }
+    innerOuterResolved = true;
+  }
+}

Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h?rev=55285&r1=55284&r2=55285&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h Sun Aug 24 11:23:56 2008
@@ -572,6 +572,30 @@
   /// readClass - Reads the class.
   ///
   void readClass();
+
+  
+  JavaConstantPool* getConstantPool() {
+    return ctpInfo;
+  }
+  
+  ArrayUInt8* getBytes() {
+    return bytes;
+  }
+  
+  void setBytes(ArrayUInt8* B) {
+    bytes = B;
+    status = loaded;
+  }
+
+  void resolveInnerOuterClasses();
+
+  Class* getOuterClass() {
+    return outerClass;
+  }
+
+  std::vector<Class*>* getInnerClasses() {
+    return &innerClasses;
+  }
 };
 
 /// ClassArray - This class represents Java array classes.

Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp?rev=55285&r1=55284&r2=55285&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp Sun Aug 24 11:23:56 2008
@@ -32,7 +32,8 @@
 
 #ifdef MULTIPLE_VM
 extern "C" JavaString* stringLookup(Class* cl, uint32 index) {
-  const UTF8* utf8 = cl->ctpInfo->UTF8At(cl->ctpInfo->ctpDef[index]);
+  JavaConstantPool* ctpInfo = cl->getConstantPool();
+  const UTF8* utf8 = ctpInfo->UTF8At(ctpInfo->ctpDef[index]);
   JavaString* str = JavaThread::get()->isolate->UTF8ToStr(utf8);
   return str;
 }
@@ -94,7 +95,7 @@
 
 extern "C" void* fieldLookup(JavaObject* obj, Class* caller, uint32 index,
                              uint32 stat) {
-  JavaConstantPool* ctpInfo = caller->ctpInfo;
+  JavaConstantPool* ctpInfo = caller->getConstantPool();
   if (ctpInfo->ctpRes[index]) {
     return ctpInfo->ctpRes[index];
   }
@@ -198,7 +199,7 @@
 }
 
 extern "C" Class* newLookup(Class* caller, uint32 index) { 
-  JavaConstantPool* ctpInfo = caller->ctpInfo;
+  JavaConstantPool* ctpInfo = caller->getConstantPool();
   Class* cl = (Class*)ctpInfo->loadClass(index);
   return cl;
 }
@@ -209,7 +210,7 @@
   const UTF8* utf8 = 0;
   Signdef* sign = 0;
   
-  caller->ctpInfo->resolveMethod(index, cl, utf8, sign);
+  caller->getConstantPool()->resolveMethod(index, cl, utf8, sign);
   JavaMethod* dmeth = cl->lookupMethodDontThrow(utf8, sign->keyName, false,
                                                 true);
   assert(obj->classOf->isReady() && "Class not ready in a virtual lookup.");
@@ -218,7 +219,7 @@
     // on the object class and do not update offset.
     dmeth = obj->classOf->lookupMethod(utf8, sign->keyName, false, true);
   } else {
-    caller->ctpInfo->ctpRes[index] = (void*)dmeth->offset;
+    caller->getConstantPool()->ctpRes[index] = (void*)dmeth->offset;
   }
   
   assert(dmeth->classDef->isReady() && "Class not ready in a virtual lookup.");

Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp?rev=55285&r1=55284&r2=55285&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp Sun Aug 24 11:23:56 2008
@@ -144,8 +144,7 @@
       if (cl->status == hashed) {
         cl->acquire();
         if (cl->status == hashed) {
-          cl->status = loaded;
-          ((Class*)cl)->bytes = bytes;
+          ((Class*)cl)->setBytes(bytes);
         }
         cl->release();
       }
@@ -302,15 +301,13 @@
   if (I == End) {
     res = allocator_new(allocator, Class)(this, name);
     if (bytes) {
-      res->bytes = bytes;
-      res->status = loaded;
+      res->setBytes(bytes);
     }
     classes->map.insert(std::make_pair(name, res));
   } else {
     res = ((Class*)(I->second));
     if (res->status == hashed && bytes) {
-      res->bytes = bytes;
-      res->status = loaded;
+      res->setBytes(bytes);
     }
   }
   classes->lock->unlock();

Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmModuleProvider.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmModuleProvider.cpp?rev=55285&r1=55284&r2=55285&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmModuleProvider.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmModuleProvider.cpp Sun Aug 24 11:23:56 2008
@@ -26,7 +26,7 @@
 using namespace jnjvm;
 
 JavaMethod* JnjvmModuleProvider::staticLookup(Class* caller, uint32 index) { 
-  JavaConstantPool* ctpInfo = caller->ctpInfo;
+  JavaConstantPool* ctpInfo = caller->getConstantPool();
   
 
   bool isStatic = ctpInfo->isAStaticCall(index);
@@ -157,7 +157,7 @@
 llvm::Function* JnjvmModuleProvider::addCallback(Class* cl, uint32 index,
                                                  Signdef* sign, bool stat) {
   
-  void* key = &(cl->ctpInfo->ctpRes[index]);
+  void* key = &(cl->getConstantPool()->ctpRes[index]);
   
   reverse_callback_iterator CI = reverseCallbacks.find(key);
   if (CI != reverseCallbacks.end()) {

Modified: vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.cpp?rev=55285&r1=55284&r2=55285&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.cpp Sun Aug 24 11:23:56 2008
@@ -404,8 +404,8 @@
                               &(JavaThread::get()->isolate->allocator));
   } else {
     Class* cl = meth->classDef;
-    JavaConstantPool* ctp = cl->ctpInfo;
-    Reader reader(exceptionAtt, cl->bytes);
+    JavaConstantPool* ctp = cl->getConstantPool();
+    Reader reader(exceptionAtt, cl->getBytes());
     uint16 nbe = reader.readU2();
     ArrayObject* res = ArrayObject::acons(nbe, Classpath::classArrayClass,
                                           &(JavaThread::get()->isolate->allocator));





More information about the vmkit-commits mailing list