[vmkit-commits] [vmkit] r55771 - in /vmkit/branches/isolate/lib/JnJVM/Isolate: IsolateCommonClass.cpp IsolateCommonClass.h

Nicolas Geoffray nicolas.geoffray at lip6.fr
Thu Sep 4 09:45:09 PDT 2008


Author: geoffray
Date: Thu Sep  4 11:45:06 2008
New Revision: 55771

URL: http://llvm.org/viewvc/llvm-project?rev=55771&view=rev
Log:
Implement UserClassArray resolution methods.


Modified:
    vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.cpp
    vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.h

Modified: vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.cpp?rev=55771&r1=55770&r2=55771&view=diff

==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.cpp Thu Sep  4 11:45:06 2008
@@ -195,23 +195,18 @@
   return alloc->allocateObject(sz + size * sizeof(void*), VT);
 }
 
-AssessorDesc* UserClassArray::funcs() {
-  fprintf(stderr, "implement me");
-  abort();
-  return 0;
-}
-
-
 UserClassPrimitive* AssessorDesc::getPrimitiveClass() const {
-  fprintf(stderr, "implement me");
-  abort();
-  return 0;
+  Jnjvm* vm = JavaThread::get()->isolate;
+  UserClassArray* arrayCl = vm->arrayClasses[numId];
+  UserClassPrimitive* cl = (UserClassPrimitive*)arrayCl->baseClass();
+  assert(cl && "Primitive array class does not have a primitive.");
+  return cl;
 }
 
 UserClassArray* AssessorDesc::getArrayClass() const {
-  fprintf(stderr, "implement me");
-  abort();
-  return 0;
+  Jnjvm* vm = JavaThread::get()->isolate;
+  UserClassArray* arrayCl = vm->arrayClasses[numId];
+  return arrayCl;
 }
 
 JavaMethod* UserCommonClass::lookupMethodDontThrow(const UTF8* name,
@@ -309,3 +304,9 @@
   }
   return res;
 }
+
+void UserConstantPool::print(mvm::PrintBuffer* buf) const {
+  buf->write("User constant pool of <");
+  getClass()->classDef->print(buf);
+  buf->write(">");
+}

Modified: vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.h?rev=55771&r1=55770&r2=55771&view=diff

==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.h (original)
+++ vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.h Thu Sep  4 11:45:06 2008
@@ -360,7 +360,11 @@
     return _baseClass;
   }
 
-  AssessorDesc* funcs();
+  AssessorDesc* funcs() {
+    if (_funcs == 0)
+      resolveComponent();
+    return _funcs;
+  }
 };
 
 class UserClassPrimitive : public UserCommonClass {
@@ -394,17 +398,17 @@
   void resolveField(uint32 index, UserCommonClass*& cl, const UTF8*& utf8,
                     Typedef*& sign);
   
-  UserClass* getClass() {
+  UserClass* getClass() const {
     return (UserClass*)ctpRes[0];
   }
 
-  JavaConstantPool* getSharedPool() {
+  JavaConstantPool* getSharedPool() const {
     return ((Class*)(getClass()->classDef))->ctpInfo;
   }
 
   /// UTF8At - Get the UTF8 referenced from this string entry.
   ///
-  const UTF8* UTF8AtForString(uint32 entry) {
+  const UTF8* UTF8AtForString(uint32 entry) const {
     return getSharedPool()->UTF8AtForString(entry);
   }
 
@@ -423,6 +427,8 @@
 
   UserCommonClass* isClassLoaded(uint32 entry);
 
+  virtual void print(mvm::PrintBuffer *buf) const;
+
 };
 
 } // end namespace jnjvm





More information about the vmkit-commits mailing list