[vmkit-commits] [vmkit] r105284 - in /vmkit/trunk: lib/J3/Classpath/ lib/J3/Compiler/ lib/J3/VMCore/ mmtk/mmtk-j3/

Nicolas Geoffray nicolas.geoffray at lip6.fr
Tue Jun 1 12:54:14 PDT 2010


Author: geoffray
Date: Tue Jun  1 14:54:14 2010
New Revision: 105284

URL: http://llvm.org/viewvc/llvm-project?rev=105284&view=rev
Log:
Make JavaObject virtual functions static in order to make less errors wrt to GC.


Modified:
    vmkit/trunk/lib/J3/Classpath/ClasspathConstructor.inc
    vmkit/trunk/lib/J3/Classpath/ClasspathField.inc
    vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc
    vmkit/trunk/lib/J3/Classpath/ClasspathVMClass.inc
    vmkit/trunk/lib/J3/Classpath/ClasspathVMObject.inc
    vmkit/trunk/lib/J3/Classpath/ClasspathVMSystem.inc
    vmkit/trunk/lib/J3/Classpath/ClasspathVMSystemProperties.inc
    vmkit/trunk/lib/J3/Classpath/ClasspathVMThread.inc
    vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp
    vmkit/trunk/lib/J3/Compiler/JavaJIT.cpp
    vmkit/trunk/lib/J3/VMCore/JavaMetaJIT.cpp
    vmkit/trunk/lib/J3/VMCore/JavaObject.cpp
    vmkit/trunk/lib/J3/VMCore/JavaObject.h
    vmkit/trunk/lib/J3/VMCore/JavaRuntimeJIT.cpp
    vmkit/trunk/lib/J3/VMCore/Jni.cpp
    vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp
    vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.cpp
    vmkit/trunk/lib/J3/VMCore/VirtualTables.cpp
    vmkit/trunk/mmtk/mmtk-j3/RuntimeHelpers.cpp

Modified: vmkit/trunk/lib/J3/Classpath/ClasspathConstructor.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathConstructor.inc?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathConstructor.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathConstructor.inc Tue Jun  1 14:54:14 2010
@@ -110,7 +110,7 @@
       Typedef* const* arguments = sign->getArgumentsType();
       // Store the arguments, unboxing primitives if necessary.
       for (sint32 i = 0; i < size; ++i) {
-        ptr[i]->decapsulePrimitive(vm, &buf[i], arguments[i]);
+        JavaObject::decapsulePrimitive(ptr[i], vm, &buf[i], arguments[i]);
         if (buf[i].l == reinterpret_cast<jobject>(ptr[i])) {
           buf[i].l = reinterpret_cast<jobject>(&ptr[i]);
         }
@@ -123,7 +123,7 @@
         excp = th->getJavaException();
       } END_CATCH;
       if (excp) {
-        if (excp->getClass()->isAssignableFrom(vm->upcalls->newException)) {
+        if (JavaObject::getClass(excp)->isAssignableFrom(vm->upcalls->newException)) {
           th->clearException();
           // If it's an exception, we encapsule it in an
           // invocationTargetException

Modified: vmkit/trunk/lib/J3/Classpath/ClasspathField.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathField.inc?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathField.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathField.inc Tue Jun  1 14:54:14 2010
@@ -547,7 +547,7 @@
   }
  
   const Typedef* type = field->getSignature();
-  val->decapsulePrimitive(vm, &buf, type);
+  JavaObject::decapsulePrimitive(val, vm, &buf, type);
   
 
   if (type->isPrimitive()) {

Modified: vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc Tue Jun  1 14:54:14 2010
@@ -124,7 +124,7 @@
     
     if (isVirtual(meth->access)) {
       verifyNull(obj);
-      UserCommonClass* objCl = obj->getClass();
+      UserCommonClass* objCl = JavaObject::getClass(obj);
       if (!(objCl->isAssignableFrom(cl))) {
         vm->illegalArgumentException("<this> is not a valid type");
       }
@@ -143,7 +143,7 @@
     JavaObject** ptr = (JavaObject**)(void*)(args->elements);
     Typedef* const* arguments = sign->getArgumentsType();
     for (sint32 i = 0; i < size; ++i) {
-      ptr[i]->decapsulePrimitive(vm, &buf[i], arguments[i]);
+      JavaObject::decapsulePrimitive(ptr[i], vm, &buf[i], arguments[i]);
       if (buf[i].l == reinterpret_cast<jobject>(ptr[i])) {
         buf[i].l = reinterpret_cast<jobject>(&ptr[i]);
       }
@@ -167,7 +167,8 @@
       exc = th->getJavaException();                                            \
     } END_CATCH;                                                               \
     if (exc) {                                                                 \
-      if (exc->getClass()->isAssignableFrom(vm->upcalls->newException)) {      \
+      if (JavaObject::getClass(exc)->isAssignableFrom(                         \
+              vm->upcalls->newException)) {                                    \
         th->clearException();                                                  \
         th->getJVM()->invocationTargetException(exc);                          \
       } else {                                                                 \

Modified: vmkit/trunk/lib/J3/Classpath/ClasspathVMClass.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathVMClass.inc?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathVMClass.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathVMClass.inc Tue Jun  1 14:54:14 2010
@@ -404,7 +404,7 @@
 
   Jnjvm* vm = JavaThread::get()->getJVM();
   UserCommonClass* cl = UserCommonClass::resolvedImplClass(vm, Cl, false);
-  res = obj->instanceOf(cl);
+  res = JavaObject::instanceOf(obj, cl);
 
   END_NATIVE_EXCEPTION
 

Modified: vmkit/trunk/lib/J3/Classpath/ClasspathVMObject.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathVMObject.inc?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathVMObject.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathVMObject.inc Tue Jun  1 14:54:14 2010
@@ -33,7 +33,7 @@
 
   BEGIN_NATIVE_EXCEPTION(0)
 
-  UserCommonClass* cl = src->getClass();
+  UserCommonClass* cl = JavaObject::getClass(src);
   size_t size = 0;
   if (cl->isArray()) {
     UserClassArray* array = cl->asArrayClass();
@@ -71,7 +71,7 @@
   BEGIN_NATIVE_EXCEPTION(0)
 
   Jnjvm* vm = JavaThread::get()->getJVM();
-  res = obj->getClass()->getClassDelegatee(vm);
+  res = JavaObject::getClass(obj)->getClassDelegatee(vm);
 
   END_NATIVE_EXCEPTION
 
@@ -89,7 +89,7 @@
 
   BEGIN_NATIVE_EXCEPTION(0)
 
-  obj->notifyAll();
+  JavaObject::notifyAll(obj);
 
   END_NATIVE_EXCEPTION
 }
@@ -113,9 +113,9 @@
     struct timeval t;
     t.tv_sec = sec;
     t.tv_usec = usec;
-    obj->timedWait(t);
+    JavaObject::timedWait(obj, t);
   } else {
-    obj->wait();
+    JavaObject::wait(obj);
   }
 
   END_NATIVE_EXCEPTION
@@ -132,7 +132,7 @@
 
   BEGIN_NATIVE_EXCEPTION(0)
 
-  obj->notify();
+  JavaObject::notify(obj);
 
   END_NATIVE_EXCEPTION
 }

Modified: vmkit/trunk/lib/J3/Classpath/ClasspathVMSystem.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathVMSystem.inc?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathVMSystem.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathVMSystem.inc Tue Jun  1 14:54:14 2010
@@ -44,14 +44,15 @@
     return;
   }
   
-  if (!(src->getClass()->isArray() && dst->getClass()->isArray())) {
+  if (!(JavaObject::getClass(src)->isArray() &&
+        JavaObject::getClass(dst)->isArray())) {
     th->pendingException = vm->CreateArrayStoreException(
       (JavaVirtualTable*)dst->getVirtualTable());
     return;
   }
   
-  UserClassArray* ts = (UserClassArray*)src->getClass();
-  UserClassArray* td = (UserClassArray*)dst->getClass();
+  UserClassArray* ts = (UserClassArray*)JavaObject::getClass(src);
+  UserClassArray* td = (UserClassArray*)JavaObject::getClass(dst);
   UserCommonClass* dstType = td->baseClass();
   UserCommonClass* srcType = ts->baseClass();
 
@@ -83,7 +84,7 @@
     while (i < sstart + len && !doThrow) {
       cur = ((ArrayObject*)src)->elements[i];
       if (cur) {
-        if (!(cur->getClass()->isAssignableFrom(dstType))) {
+        if (!(JavaObject::getClass(cur)->isAssignableFrom(dstType))) {
           doThrow = true;
           length = i;
         }
@@ -114,7 +115,7 @@
 
   llvm_gcroot(obj, 0);
   if (obj == NULL) return 0;
-  return obj->hashCode();
+  return JavaObject::hashCode(obj);
 }
 
 }

Modified: vmkit/trunk/lib/J3/Classpath/ClasspathVMSystemProperties.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathVMSystemProperties.inc?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathVMSystemProperties.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathVMSystemProperties.inc Tue Jun  1 14:54:14 2010
@@ -36,8 +36,8 @@
   Val = vm->asciizToStr(val);
   Key = vm->asciizToStr(key);
                         
-  vm->upcalls->setProperty->invokeIntSpecial(vm, (UserClass*)prop->getClass(),
-                                             prop, &Key, &Val);
+  vm->upcalls->setProperty->invokeIntSpecial(
+      vm, (UserClass*)JavaObject::getClass(prop), prop, &Key, &Val);
 }
 
 static void setUnameProp(Jnjvm* vm, JavaObject* prop) {

Modified: vmkit/trunk/lib/J3/Classpath/ClasspathVMThread.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathVMThread.inc?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathVMThread.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathVMThread.inc Tue Jun  1 14:54:14 2010
@@ -48,7 +48,7 @@
   assert(javaThread && "Didn't fix the javaThread of a j3 thread");
   field->setObjectField(vmThread, (JavaObject*)(void*)thread);
   
-  UserClass* vmthClass = (UserClass*)vmThread->getClass();
+  UserClass* vmthClass = (UserClass*)JavaObject::getClass(vmThread);
   ThreadSystem& ts = vm->threadSystem;
   
   

Modified: vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp (original)
+++ vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp Tue Jun  1 14:54:14 2010
@@ -172,7 +172,7 @@
     return SI->second;
   } else {
     assert(str && "No string given");
-    LLVMClassInfo* LCI = getClassInfo(str->getClass()->asClass());
+    LLVMClassInfo* LCI = getClassInfo(JavaObject::getClass(str)->asClass());
     const llvm::Type* Ty = LCI->getVirtualType();
     Module& Mod = *getLLVMModule();
     
@@ -311,7 +311,7 @@
   
     if (mvm::Collector::begOf(obj)) {
       const Type* Ty = 0;
-      CommonClass* cl = obj->getClass();
+      CommonClass* cl = JavaObject::getClass(obj);
       
       if (cl->isArray()) {
         Classpath* upcalls = cl->classLoader->bootstrapLoader->upcalls;
@@ -616,7 +616,7 @@
 }
 
 Constant* JavaAOTCompiler::CreateConstantFromJavaObject(JavaObject* obj) {
-  CommonClass* cl = obj->getClass();
+  CommonClass* cl = JavaObject::getClass(obj);
 
   if (cl->isArray()) {
     Classpath* upcalls = cl->classLoader->bootstrapLoader->upcalls;
@@ -657,7 +657,8 @@
     std::vector<Constant*> Elmts;
     
     // JavaObject
-    Constant* CurConstant = CreateConstantForBaseObject(obj->getClass());
+    Constant* CurConstant =
+        CreateConstantForBaseObject(JavaObject::getClass(obj));
 
     for (uint32 j = 1; j <= cl->virtualVT->depth; ++j) {
       std::vector<Constant*> TempElts;
@@ -721,7 +722,7 @@
 }
 
 Constant* JavaAOTCompiler::CreateConstantFromJavaString(JavaString* str) {
-  Class* cl = str->getClass()->asClass();
+  Class* cl = JavaObject::getClass(str)->asClass();
   LLVMClassInfo* LCI = getClassInfo(cl);
   const StructType* STy = 
     dyn_cast<StructType>(LCI->getVirtualType()->getContainedType(0));
@@ -1249,7 +1250,7 @@
   const StructType* STy = StructType::get(getLLVMModule()->getContext(), Elemts);
   
   std::vector<Constant*> Cts;
-  Cts.push_back(CreateConstantForBaseObject(val->getClass()));
+  Cts.push_back(CreateConstantForBaseObject(JavaObject::getClass(val)));
   Cts.push_back(ConstantInt::get(JavaIntrinsics.pointerSizeType, val->size));
   
   std::vector<Constant*> Vals;
@@ -1275,7 +1276,7 @@
   const StructType* STy = StructType::get(getLLVMModule()->getContext(), Elemts);
   
   std::vector<Constant*> Cts;
-  Cts.push_back(CreateConstantForBaseObject(val->getClass()));
+  Cts.push_back(CreateConstantForBaseObject(JavaObject::getClass(val)));
   Cts.push_back(ConstantInt::get(JavaIntrinsics.pointerSizeType, val->size));
   
   std::vector<Constant*> Vals;
@@ -1301,14 +1302,14 @@
   const StructType* STy = StructType::get(getLLVMModule()->getContext(), Elemts);
   
   std::vector<Constant*> Cts;
-  Cts.push_back(CreateConstantForBaseObject(val->getClass()));
+  Cts.push_back(CreateConstantForBaseObject(JavaObject::getClass(val)));
   Cts.push_back(ConstantInt::get(JavaIntrinsics.pointerSizeType, val->size));
   
   std::vector<Constant*> Vals;
   for (sint32 i = 0; i < val->size; ++i) {
     if (val->elements[i]) {
       Vals.push_back(getFinalObject(val->elements[i],
-                                val->getClass()->asArrayClass()->baseClass()));
+          JavaObject::getClass(val)->asArrayClass()->baseClass()));
     } else {
       Vals.push_back(Constant::getNullValue(JavaIntrinsics.JavaObjectType));
     }
@@ -2191,13 +2192,13 @@
 
   for (; I != E; ++I) {
     JavaObject* obj = (JavaObject*)(*I);
-    if (!VMClassLoader::isVMClassLoader(obj) && obj->instanceOf(cl)) {
-      if (currentClass) {
-        if (obj->getClass() != currentClass) {
+    if (!VMClassLoader::isVMClassLoader(obj) && JavaObject::instanceOf(obj, cl)) {
+      if (currentClass != NULL) {
+        if (JavaObject::getClass(obj) != currentClass) {
           return 0;
         }
       } else {
-        currentClass = obj->getClass();
+        currentClass = JavaObject::getClass(obj);
       }
     }
   }

Modified: vmkit/trunk/lib/J3/Compiler/JavaJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Compiler/JavaJIT.cpp?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Compiler/JavaJIT.cpp (original)
+++ vmkit/trunk/lib/J3/Compiler/JavaJIT.cpp Tue Jun  1 14:54:14 2010
@@ -100,7 +100,7 @@
   JavaObject* source = TheCompiler->getFinalObject(obj);
   if (source) {
     canBeDirect = true;
-    CommonClass* sourceClass = source->getClass();
+    CommonClass* sourceClass = JavaObject::getClass(source);
     Class* lookup = sourceClass->isArray() ? sourceClass->super :
                                              sourceClass->asClass();
     meth = lookup->lookupMethodDontThrow(name, signature->keyName, false,
@@ -2125,7 +2125,8 @@
           JavaObject* val = field->getObjectField(Obj);
           JnjvmClassLoader* JCL = field->classDef->classLoader;
           Value* V = TheCompiler->getFinalObject(val, sign->assocClass(JCL));
-          CommonClass* cl = mvm::Collector::begOf(val) ? val->getClass() : NULL;
+          CommonClass* cl = mvm::Collector::begOf(val) ?
+              JavaObject::getClass(val) : NULL;
           push(V, false, cl);
         } else {
           Value* V = CallInst::Create(intrinsics->GetFinalObjectFieldFunction, ptr,

Modified: vmkit/trunk/lib/J3/VMCore/JavaMetaJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaMetaJIT.cpp?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaMetaJIT.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaMetaJIT.cpp Tue Jun  1 14:54:14 2010
@@ -108,7 +108,7 @@
 TYPE JavaMethod::invoke##TYPE_NAME##VirtualAP(Jnjvm* vm, UserClass* cl, JavaObject* obj, va_list ap) { \
   llvm_gcroot(obj, 0); \
   verifyNull(obj); \
-  UserClass* objCl = obj->getClass()->isArray() ? obj->getClass()->super : obj->getClass()->asClass(); \
+  UserClass* objCl = JavaObject::getClass(obj)->isArray() ? JavaObject::getClass(obj)->super : JavaObject::getClass(obj)->asClass(); \
   if (objCl == classDef || isFinal(access)) { \
     meth = this; \
   } else { \
@@ -170,7 +170,7 @@
   llvm_gcroot(obj, 0); \
   verifyNull(obj);\
   Signdef* sign = getSignature(); \
-  UserClass* objCl = obj->getClass()->isArray() ? obj->getClass()->super : obj->getClass()->asClass(); \
+  UserClass* objCl = JavaObject::getClass(obj)->isArray() ? JavaObject::getClass(obj)->super : JavaObject::getClass(obj)->asClass(); \
   JavaMethod* meth = NULL; \
   if (objCl == classDef || isFinal(access)) { \
     meth = this; \
@@ -290,7 +290,7 @@
   JavaObject* obj = (JavaObject*)_obj;
   llvm_gcroot(obj, 0);
   JavaMethod* meth = upcalls->FinalizeObject;
-  UserClass* cl = obj->getClass()->asClass();
+  UserClass* cl = JavaObject::getClass(obj)->asClass();
   meth->invokeIntVirtualBuf(this, cl, obj, 0);
 }
 
@@ -298,6 +298,6 @@
   JavaObject* obj = (JavaObject*)_obj;
   llvm_gcroot(obj, 0);
   JavaMethod* meth = upcalls->EnqueueReference;
-  UserClass* cl = obj->getClass()->asClass();
+  UserClass* cl = JavaObject::getClass(obj)->asClass();
   return (bool)meth->invokeIntSpecialBuf(this, cl, obj, 0);
 }

Modified: vmkit/trunk/lib/J3/VMCore/JavaObject.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaObject.cpp?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaObject.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaObject.cpp Tue Jun  1 14:54:14 2010
@@ -22,12 +22,12 @@
 
 uint16_t JavaObject::hashCodeGenerator = 1;
 
-void JavaObject::waitIntern(struct timeval* info, bool timed) {
+void JavaObject::waitIntern(
+    JavaObject* self, struct timeval* info, bool timed) {
   JavaLock* l = 0;
-  JavaObject* self = this;
   llvm_gcroot(self, 0);
 
-  if (owner()) {
+  if (owner(self)) {
     l = self->lock.changeToFatlock(self);
     JavaThread* thread = JavaThread::get();
     thread->waitsOn = l;
@@ -102,7 +102,7 @@
         } else {
           assert(!thread->prevWaiting && "Inconstitent state");
           // Notify lost, notify someone else.
-          notify();
+          notify(self);
         }
       } else {
         assert(!thread->prevWaiting && !thread->nextWaiting &&
@@ -121,27 +121,24 @@
     JavaThread::get()->getJVM()->illegalMonitorStateException(self);
   }
   
-  assert(owner() && "Not owner after wait");
+  assert(owner(self) && "Not owner after wait");
 }
 
-void JavaObject::wait() {
-  JavaObject* self = this;
+void JavaObject::wait(JavaObject* self) {
   llvm_gcroot(self, 0);
-  self->waitIntern(0, false);
+  waitIntern(self, NULL, false);
 }
 
-void JavaObject::timedWait(struct timeval& info) {
-  JavaObject* self = this;
+void JavaObject::timedWait(JavaObject* self, struct timeval& info) {
   llvm_gcroot(self, 0);
-  self->waitIntern(&info, true);
+  waitIntern(self, &info, true);
 }
 
-void JavaObject::notify() {
+void JavaObject::notify(JavaObject* self) {
   JavaLock* l = 0;
-  JavaObject* self = this;
   llvm_gcroot(self, 0);
 
-  if (owner()) {
+  if (owner(self)) {
     l = self->lock.getFatLock();
     if (l) {
       JavaThread* cur = l->firstThread;
@@ -178,15 +175,14 @@
   } else {
     JavaThread::get()->getJVM()->illegalMonitorStateException(self);
   }
-  assert(owner() && "Not owner after notify");
+  assert(owner(self) && "Not owner after notify");
 }
 
-void JavaObject::notifyAll() {
+void JavaObject::notifyAll(JavaObject* self) {
   JavaLock* l = 0;
-  JavaObject* self = this;
   llvm_gcroot(self, 0);
   
-  if (owner()) {
+  if (owner(self)) {
     l = self->lock.getFatLock();
     if (l) {
       JavaThread* cur = l->firstThread;
@@ -205,17 +201,16 @@
     JavaThread::get()->getJVM()->illegalMonitorStateException(self);
   }
 
-  assert(owner() && "Not owner after notifyAll");
+  assert(owner(self) && "Not owner after notifyAll");
 }
 
-void JavaObject::decapsulePrimitive(Jnjvm *vm, jvalue* buf,
+void JavaObject::decapsulePrimitive(JavaObject* obj, Jnjvm *vm, jvalue* buf,
                                     const Typedef* signature) {
 
-  JavaObject* obj = this;
   llvm_gcroot(obj, 0);
 
   if (!signature->isPrimitive()) {
-    if (obj && !(obj->getClass()->isOfTypeName(signature->getName()))) {
+    if (obj && !(getClass(obj)->isOfTypeName(signature->getName()))) {
       vm->illegalArgumentException("wrong type argument");
     }
     (*buf).l = reinterpret_cast<jobject>(obj);
@@ -223,7 +218,7 @@
   } else if (obj == 0) {
     vm->illegalArgumentException("");
   } else {
-    UserCommonClass* cl = obj->getClass();
+    UserCommonClass* cl = getClass(obj);
     UserClassPrimitive* value = cl->toPrimitive(vm);
     const PrimitiveTypedef* prim = (const PrimitiveTypedef*)signature;
 
@@ -332,10 +327,8 @@
   return;
 }
 
-bool JavaObject::instanceOf(UserCommonClass* cl) {
-  JavaObject* self = this;
+bool JavaObject::instanceOf(JavaObject* self, UserCommonClass* cl) {
   llvm_gcroot(self, 0);
-
-  if (!self) return false;
-  else return self->getClass()->isAssignableFrom(cl);
+  if (self == NULL) return false;
+  else return getClass(self)->isAssignableFrom(cl);
 }

Modified: vmkit/trunk/lib/J3/VMCore/JavaObject.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaObject.h?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaObject.h (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaObject.h Tue Jun  1 14:54:14 2010
@@ -234,14 +234,14 @@
   
   /// waitIntern - internal wait on a monitor
   ///
-  void waitIntern(struct timeval *info, bool timed);
+  static void waitIntern(JavaObject* self, struct timeval *info, bool timed);
   
 public:
 
   /// getClass - Returns the class of this object.
   ///
-  UserCommonClass* getClass() const {
-    return ((JavaVirtualTable*)getVirtualTable())->cl;
+  static UserCommonClass* getClass(const JavaObject* self) {
+    return ((JavaVirtualTable*)self->getVirtualTable())->cl;
   }
 
   /// lock - The monitor of this object. Most of the time null.
@@ -250,51 +250,51 @@
 
   /// wait - Java wait. Makes the current thread waiting on a monitor.
   ///
-  void wait();
+  static void wait(JavaObject* self);
 
   /// timedWait - Java timed wait. Makes the current thread waiting on a
   /// monitor for the given amount of time.
   ///
-  void timedWait(struct timeval &info);
+  static void timedWait(JavaObject* self, struct timeval &info);
   
   /// notify - Java notify. Notifies a thread from the availability of the
   /// monitor.
   ///
-  void notify();
+  static void notify(JavaObject* self);
   
   /// notifyAll - Java notifyAll. Notifies all threads from the availability of
   /// the monitor.
   ///
-  void notifyAll();
+  static void notifyAll(JavaObject* self);
  
   /// overflowThinLock - Notify that the thin lock has overflowed.
   ///
-  void overflowThinLock() {
-    lock.overflowThinLock(this);
+  static void overflowThinLock(JavaObject* self) {
+    llvm_gcroot(self, 0);
+    self->lock.overflowThinLock(self);
   }
 
   /// instanceOf - Is this object's class of type the given class?
   ///
-  bool instanceOf(UserCommonClass* cl);
+  static bool instanceOf(JavaObject* self, UserCommonClass* cl);
 
   /// acquire - Acquire the lock on this object.
-  void acquire() {
-    JavaObject* self = this;
+  static void acquire(JavaObject* self) {
     llvm_gcroot(self, 0);
     self->lock.acquire(self);
   }
 
   /// release - Release the lock on this object
-  void release() {
-    JavaObject* self = this;
+  static void release(JavaObject* self) {
     llvm_gcroot(self, 0);
-    lock.release(self);
+    self->lock.release(self);
   }
 
   /// owner - Returns true if the current thread is the owner of this object's
   /// lock.
-  bool owner() {
-    return lock.owner();
+  static bool owner(JavaObject* self) {
+    llvm_gcroot(self, 0);
+    return self->lock.owner();
   }
 
 #ifdef SIGSEGV_THROW_NULL
@@ -305,24 +305,25 @@
 #endif
   
   /// lockObj - Get the LockObj if the lock is a fat lock.
-  JavaLock* lockObj() {
-    return lock.getFatLock();
+  static JavaLock* lockObj(JavaObject* self) {
+    llvm_gcroot(self, 0);
+    return self->lock.getFatLock();
   }
 
   /// decapsulePrimitive - Based on the signature argument, decapsule
   /// obj as a primitive and put it in the buffer.
   ///
-  void decapsulePrimitive(Jnjvm* vm, jvalue* buf, const Typedef* signature);
+  static void decapsulePrimitive(JavaObject* self, Jnjvm* vm, jvalue* buf,
+                                 const Typedef* signature);
 
   static uint16_t hashCodeGenerator;
 
   /// hashCode - Return the hash code of this object.
-  uint32_t hashCode() {
-    JavaObject* self = this;
+  static uint32_t hashCode(JavaObject* self) {
     llvm_gcroot(self, 0);
     uintptr_t oldLock = self->lock.lock;
     uintptr_t val = (oldLock & mvm::HashMask) >> LockSystem::BitGC;
-    if (val) return val ^ (uintptr_t)getClass();
+    if (val) return val ^ (uintptr_t)getClass(self);
     else {
       if (hashCodeGenerator >= (mvm::HashMask >> LockSystem::BitGC))
         val = hashCodeGenerator = 1;
@@ -335,7 +336,7 @@
       __sync_val_compare_and_swap(&(self->lock.lock), oldLock, newLock);
     } while ((self->lock.lock & mvm::HashMask)  == 0);
     return ((self->lock.lock & mvm::HashMask) >> LockSystem::BitGC) ^
-			(uintptr_t)getClass();
+			(uintptr_t)getClass(self);
   }
 };
 

Modified: vmkit/trunk/lib/J3/VMCore/JavaRuntimeJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaRuntimeJIT.cpp?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaRuntimeJIT.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaRuntimeJIT.cpp Tue Jun  1 14:54:14 2010
@@ -155,13 +155,14 @@
   JavaMethod* dmeth = lookup->lookupMethodDontThrow(utf8, sign->keyName, false,
                                                     true, 0);
   if (!dmeth) {
-    assert((obj->getClass()->isClass() && 
-            obj->getClass()->asClass()->isInitializing()) &&
+    assert((JavaObject::getClass(obj)->isClass() && 
+            JavaObject::getClass(obj)->asClass()->isInitializing()) &&
            "Class not ready in a virtual lookup.");
     // Arg, the bytecode is buggy! Perform the lookup on the object class
     // and do not update offset.
-    lookup = obj->getClass()->isArray() ? obj->getClass()->super : 
-                                       obj->getClass()->asClass();
+    lookup = JavaObject::getClass(obj)->isArray() ?
+      JavaObject::getClass(obj)->super : 
+      JavaObject::getClass(obj)->asClass();
     dmeth = lookup->lookupMethod(utf8, sign->keyName, false, true, 0);
   } else {
     *offset = dmeth->offset;
@@ -366,28 +367,31 @@
 // Never throws.
 extern "C" void j3JavaObjectAquire(JavaObject* obj) {
   llvm_gcroot(obj, 0);
-  obj->acquire();
+  JavaObject::acquire(obj);
 }
 
 // Never throws.
 extern "C" void j3JavaObjectRelease(JavaObject* obj) {
   llvm_gcroot(obj, 0);
-  obj->release();
+  JavaObject::release(obj);
 }
 
 // Does not call any Java code. Can not yield a GC.
 extern "C" void j3ThrowException(JavaObject* obj) {
+  llvm_gcroot(obj, 0);
   return JavaThread::get()->throwException(obj);
 }
 
 // Never throws.
 extern "C" void j3OverflowThinLock(JavaObject* obj) {
-  obj->overflowThinLock();
+  llvm_gcroot(obj, 0);
+  JavaObject::overflowThinLock(obj);
 }
 
 // Creates a Java object and then throws it.
 extern "C" JavaObject* j3NullPointerException() {
   JavaObject *exc = 0;
+  llvm_gcroot(exc, 0);
   JavaThread *th = JavaThread::get();
 
   BEGIN_NATIVE_EXCEPTION(1)
@@ -408,6 +412,7 @@
 // Creates a Java object and then throws it.
 extern "C" JavaObject* j3NegativeArraySizeException(sint32 val) {
   JavaObject *exc = 0;
+  llvm_gcroot(exc, 0);
   JavaThread *th = JavaThread::get();
 
   BEGIN_NATIVE_EXCEPTION(1)
@@ -428,6 +433,7 @@
 // Creates a Java object and then throws it.
 extern "C" JavaObject* j3OutOfMemoryError(sint32 val) {
   JavaObject *exc = 0;
+  llvm_gcroot(exc, 0);
   JavaThread *th = JavaThread::get();
 
   BEGIN_NATIVE_EXCEPTION(1)
@@ -448,6 +454,7 @@
 // Creates a Java object and then throws it.
 extern "C" JavaObject* j3StackOverflowError() {
   JavaObject *exc = 0;
+  llvm_gcroot(exc, 0);
   JavaThread *th = JavaThread::get();
 
   BEGIN_NATIVE_EXCEPTION(1)
@@ -468,6 +475,7 @@
 // Creates a Java object and then throws it.
 extern "C" JavaObject* j3ArithmeticException() {
   JavaObject *exc = 0;
+  llvm_gcroot(exc, 0);
   JavaThread *th = JavaThread::get();
 
   BEGIN_NATIVE_EXCEPTION(1)
@@ -537,6 +545,7 @@
 extern "C" JavaObject* j3ArrayStoreException(JavaVirtualTable* VT,
                                              JavaVirtualTable* VT2) {
   JavaObject *exc = 0;
+  llvm_gcroot(exc, 0);
   JavaThread *th = JavaThread::get();
 
   BEGIN_NATIVE_EXCEPTION(1)
@@ -556,6 +565,7 @@
 // Create an exception then throws it.
 extern "C" void j3ThrowExceptionFromJIT() {
   JavaObject *exc = 0;
+  llvm_gcroot(exc, 0);
   JavaThread *th = JavaThread::get();
   
   BEGIN_NATIVE_EXCEPTION(1)
@@ -594,7 +604,7 @@
 extern "C" void* j3ResolveVirtualStub(JavaObject* obj) {
   llvm_gcroot(obj, 0);
   JavaThread *th = JavaThread::get();
-  UserCommonClass* cl = obj->getClass();
+  UserCommonClass* cl = JavaObject::getClass(obj);
   void* result = NULL;
   
   BEGIN_NATIVE_EXCEPTION(1)

Modified: vmkit/trunk/lib/J3/VMCore/Jni.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/Jni.cpp?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/Jni.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/Jni.cpp Tue Jun  1 14:54:14 2010
@@ -91,7 +91,7 @@
 
   Jnjvm* vm = myVM(env);
   Classpath* upcalls = vm->upcalls;
-  UserCommonClass* cl = meth->getClass();
+  UserCommonClass* cl = JavaObject::getClass(meth);
   if (cl == upcalls->newConstructor)  {
     jmethodID res = (jmethodID)((JavaObjectMethod*)meth)->getInternalMethod();
     RETURN_FROM_JNI(res);
@@ -367,7 +367,7 @@
   Jnjvm* vm = th->getJVM();
   
   // Store local reference
-  jclass res = (jclass)obj->getClass()->getClassDelegateePtr(vm);
+  jclass res = (jclass)JavaObject::getClass(obj)->getClassDelegateePtr(vm);
   RETURN_FROM_JNI(res);
   
   END_JNI_EXCEPTION
@@ -451,7 +451,7 @@
   JavaMethod* meth = (JavaMethod*)methodID;
   JavaThread* th = JavaThread::get();
   Jnjvm* vm = th->getJVM();
-  UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+  UserClass* cl = getClassFromVirtualMethod(vm, meth, JavaObject::getClass(obj));
   
   res = meth->invokeJavaObjectVirtualAP(vm, cl, obj, ap);
   va_end(ap);
@@ -480,7 +480,7 @@
   JavaMethod* meth = (JavaMethod*)methodID;
   JavaThread* th = JavaThread::get();
   Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+  UserClass* cl = getClassFromVirtualMethod(vm, meth, JavaObject::getClass(obj));
   
   // Store local reference.
   res = meth->invokeJavaObjectVirtualAP(vm, cl, obj, args);
@@ -517,7 +517,8 @@
 
   JavaMethod* meth = (JavaMethod*)methodID;
   Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = getClassFromVirtualMethod(vm, meth, self->getClass());
+  UserClass* cl =
+      getClassFromVirtualMethod(vm, meth, JavaObject::getClass(self));
   
   uint32 res = meth->invokeIntVirtualAP(vm, cl, self, ap);
   va_end(ap);
@@ -542,7 +543,7 @@
   
   JavaMethod* meth = (JavaMethod*)methodID;
   Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+  UserClass* cl = getClassFromVirtualMethod(vm, meth, JavaObject::getClass(obj));
   jboolean res = (jboolean)meth->invokeIntVirtualAP(vm, cl, obj, args);
   RETURN_FROM_JNI(res);
 
@@ -579,7 +580,7 @@
 
   JavaMethod* meth = (JavaMethod*)methodID;
   Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+  UserClass* cl = getClassFromVirtualMethod(vm, meth, JavaObject::getClass(obj));
   jbyte res = (jbyte)meth->invokeIntVirtualAP(vm, cl, obj, args);
   RETURN_FROM_JNI(res);
 
@@ -617,7 +618,7 @@
  
   JavaMethod* meth = (JavaMethod*)methodID;
   Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+  UserClass* cl = getClassFromVirtualMethod(vm, meth, JavaObject::getClass(obj));
   jchar res = (jchar)meth->invokeIntVirtualAP(vm, cl, obj, args);
   RETURN_FROM_JNI(res);
 
@@ -655,7 +656,7 @@
   
   JavaMethod* meth = (JavaMethod*)methodID;
   Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+  UserClass* cl = getClassFromVirtualMethod(vm, meth, JavaObject::getClass(obj));
   jshort res = (jshort)meth->invokeIntVirtualAP(vm, cl, obj, args);
   RETURN_FROM_JNI(res);
 
@@ -689,7 +690,7 @@
 
   JavaMethod* meth = (JavaMethod*)methodID;
   Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+  UserClass* cl = getClassFromVirtualMethod(vm, meth, JavaObject::getClass(obj));
   
   uint32 res = meth->invokeIntVirtualAP(vm, cl, obj, ap);
   va_end(ap);
@@ -714,7 +715,7 @@
   
   JavaMethod* meth = (JavaMethod*)methodID;
   Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+  UserClass* cl = getClassFromVirtualMethod(vm, meth, JavaObject::getClass(obj));
   
   jint res = (jint)meth->invokeIntVirtualAP(vm, cl, obj, args);
   RETURN_FROM_JNI(res);
@@ -754,7 +755,7 @@
   
   JavaMethod* meth = (JavaMethod*)methodID;
   Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+  UserClass* cl = getClassFromVirtualMethod(vm, meth, JavaObject::getClass(obj));
   jlong res = (jlong)meth->invokeLongVirtualAP(vm, cl, obj, args);
   RETURN_FROM_JNI(res);
 
@@ -788,7 +789,7 @@
 
   JavaMethod* meth = (JavaMethod*)methodID;
   Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+  UserClass* cl = getClassFromVirtualMethod(vm, meth, JavaObject::getClass(obj));
   jfloat res = meth->invokeFloatVirtualAP(vm, cl, obj, ap);
   va_end(ap);
   RETURN_FROM_JNI(res);
@@ -811,7 +812,7 @@
   
   JavaMethod* meth = (JavaMethod*)methodID;
   Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+  UserClass* cl = getClassFromVirtualMethod(vm, meth, JavaObject::getClass(obj));
   jfloat res = (jfloat)meth->invokeFloatVirtualAP(vm, cl, obj, args);
   RETURN_FROM_JNI(res);
 
@@ -845,7 +846,7 @@
 
   JavaMethod* meth = (JavaMethod*)methodID;
   Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+  UserClass* cl = getClassFromVirtualMethod(vm, meth, JavaObject::getClass(obj));
   jdouble res = meth->invokeDoubleVirtualAP(vm, cl, obj, ap);
   va_end(ap);
   RETURN_FROM_JNI(res);
@@ -868,7 +869,7 @@
   
   JavaMethod* meth = (JavaMethod*)methodID;
   Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+  UserClass* cl = getClassFromVirtualMethod(vm, meth, JavaObject::getClass(obj));
   jdouble res = (jdouble)meth->invokeDoubleVirtualAP(vm, cl, obj, args);
   RETURN_FROM_JNI(res);
 
@@ -902,7 +903,7 @@
 
   JavaMethod* meth = (JavaMethod*)methodID;
   Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+  UserClass* cl = getClassFromVirtualMethod(vm, meth, JavaObject::getClass(obj));
   meth->invokeIntVirtualAP(vm, cl, obj, ap);
   va_end(ap);
 
@@ -927,7 +928,7 @@
 
   JavaMethod* meth = (JavaMethod*)methodID;
   Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+  UserClass* cl = getClassFromVirtualMethod(vm, meth, JavaObject::getClass(obj));
   meth->invokeIntVirtualAP(vm, cl, obj, args);
   
   RETURN_VOID_FROM_JNI;
@@ -950,7 +951,7 @@
 
   JavaMethod* meth = (JavaMethod*)methodID;
   Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+  UserClass* cl = getClassFromVirtualMethod(vm, meth, JavaObject::getClass(obj));
   
   meth->invokeIntVirtualBuf(vm, cl, obj, (void*)args);
 
@@ -1203,7 +1204,7 @@
 
   JavaMethod* meth = (JavaMethod*)methodID;
   Jnjvm* vm = JavaThread::get()->getJVM();
-  UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+  UserClass* cl = getClassFromVirtualMethod(vm, meth, JavaObject::getClass(obj));
   meth->invokeIntSpecialAP(vm, cl, obj, ap);
   va_end(ap);
   
@@ -3499,8 +3500,8 @@
   JavaObject* Obj = *(JavaObject**)_obj;
   llvm_gcroot(Obj, 0);
   
-  if (Obj) {
-    Obj->acquire();
+  if (Obj != NULL) {
+    JavaObject::acquire(Obj);
     RETURN_FROM_JNI(0);
   } else {
     RETURN_FROM_JNI(-1);
@@ -3519,13 +3520,13 @@
   JavaObject* Obj = *(JavaObject**)_obj;
   llvm_gcroot(Obj, 0);
  
-  if (Obj) {
+  if (Obj != NULL) {
 
-    if (!Obj->owner()) {
+    if (!JavaObject::owner(Obj)) {
       JavaThread::get()->getJVM()->illegalMonitorStateException(Obj);    
     }
   
-    Obj->release();
+    JavaObject::release(Obj);
     RETURN_FROM_JNI(0);
   } else {
     RETURN_FROM_JNI(-1);
@@ -3568,7 +3569,7 @@
 
   if (isCopy) (*isCopy) = true;
 
-  UserClassArray* cl = array->getClass()->asArrayClass();
+  UserClassArray* cl = JavaObject::getClass(array)->asArrayClass();
   uint32 logSize = cl->baseClass()->asPrimitiveClass()->logSize;
   sint32 len = array->size << logSize;
   void* buffer = malloc(len);
@@ -3592,7 +3593,7 @@
     JavaArray* array = *(JavaArray**)_array;
     llvm_gcroot(array, 0);
 
-    UserClassArray* cl = array->getClass()->asArrayClass();
+    UserClassArray* cl = JavaObject::getClass(array)->asArrayClass();
     uint32 logSize = cl->baseClass()->asPrimitiveClass()->logSize;
     sint32 len = array->size << logSize;
     memcpy(array->elements, carray, len);

Modified: vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp Tue Jun  1 14:54:14 2010
@@ -225,12 +225,12 @@
     //     ExceptionInInitializerError cannot be created because an
     //     OutOfMemoryError occurs, then instead use an OutOfMemoryError object
     //     in place of E in the following step.
-    if (exc->getClass()->isAssignableFrom(vm->upcalls->newException)) {
+    if (JavaObject::getClass(exc)->isAssignableFrom(vm->upcalls->newException)) {
       Classpath* upcalls = classLoader->bootstrapLoader->upcalls;
       UserClass* clExcp = upcalls->ExceptionInInitializerError;
       Jnjvm* vm = self->getJVM();
       obj = clExcp->doNew(vm);
-      if (!obj) {
+      if (obj == NULL) {
         fprintf(stderr, "implement me");
         abort();
       }
@@ -1244,7 +1244,7 @@
 
   if (exc != NULL) {
     fprintf(stderr, "Exception %s while bootstrapping VM.",
-        UTF8Buffer(exc->getClass()->name).cString());
+        UTF8Buffer(JavaObject::getClass(exc)->name).cString());
   } else {
 #ifdef SERVICE
     thread->ServiceException = vm->upcalls->newThrowable->doNew(vm);

Modified: vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.cpp?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.cpp Tue Jun  1 14:54:14 2010
@@ -267,6 +267,7 @@
 JnjvmClassLoader::JnjvmClassLoader(mvm::BumpPtrAllocator& Alloc,
                                    JnjvmClassLoader& JCL, JavaObject* loader,
                                    Jnjvm* I) : allocator(Alloc) {
+  llvm_gcroot(loader, 0);
   bootstrapLoader = JCL.bootstrapLoader;
   TheCompiler = bootstrapLoader->getCompiler()->Create("Applicative loader");
   
@@ -281,7 +282,7 @@
 
   JavaMethod* meth = bootstrapLoader->upcalls->loadInClassLoader;
   loadClassMethod = 
-    loader->getClass()->asClass()->lookupMethodDontThrow(
+    JavaObject::getClass(loader)->asClass()->lookupMethodDontThrow(
         meth->name, meth->type, false, true, &loadClass);
   assert(loadClass && "Loader does not have a loadClass function");
 
@@ -855,8 +856,8 @@
   vmdata = 
     (VMClassLoader*)(upcalls->vmdataClassLoader->getObjectField(loader));
   
-  if (!vmdata) {
-    loader->acquire();
+  if (vmdata == NULL) {
+    JavaObject::acquire(loader);
     vmdata = 
       (VMClassLoader*)(upcalls->vmdataClassLoader->getObjectField(loader));
     if (!vmdata) {
@@ -864,9 +865,9 @@
       JCL = new(*A, "Class loader") JnjvmClassLoader(*A, *vm->bootstrapLoader,
                                                      loader, vm);
       vmdata = VMClassLoader::allocate(JCL);
-      (upcalls->vmdataClassLoader->setObjectField(loader, (JavaObject*)vmdata));
+      upcalls->vmdataClassLoader->setObjectField(loader, (JavaObject*)vmdata);
     }
-    loader->release();
+    JavaObject::release(loader);
   } else {
     JCL = vmdata->getClassLoader();
   }

Modified: vmkit/trunk/lib/J3/VMCore/VirtualTables.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/VirtualTables.cpp?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/VirtualTables.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/VirtualTables.cpp Tue Jun  1 14:54:14 2010
@@ -76,7 +76,7 @@
 
 /// Method for scanning the root of an object.
 extern "C" void JavaObjectTracer(JavaObject* obj, uintptr_t closure) {
-  CommonClass* cl = obj->getClass();
+  CommonClass* cl = JavaObject::getClass(obj);
   assert(cl && "No class");
   mvm::Collector::markAndTraceRoot(
       cl->classLoader->getJavaClassLoaderPtr(), closure);
@@ -85,7 +85,7 @@
 /// Method for scanning an array whose elements are JavaObjects. This method is
 /// called by all non-native Java arrays.
 extern "C" void ArrayObjectTracer(ArrayObject* obj, uintptr_t closure) {
-  CommonClass* cl = obj->getClass();
+  CommonClass* cl = JavaObject::getClass(obj);
   assert(cl && "No class");
   mvm::Collector::markAndTraceRoot(
       cl->classLoader->getJavaClassLoaderPtr(), closure);
@@ -106,7 +106,7 @@
 
 /// Method for scanning regular objects.
 extern "C" void RegularObjectTracer(JavaObject* obj, uintptr_t closure) {
-  Class* cl = obj->getClass()->asClass();
+  Class* cl = JavaObject::getClass(obj)->asClass();
   assert(cl && "Not a class in regular tracer");
   mvm::Collector::markAndTraceRoot(
       cl->classLoader->getJavaClassLoaderPtr(), closure);

Modified: vmkit/trunk/mmtk/mmtk-j3/RuntimeHelpers.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/mmtk-j3/RuntimeHelpers.cpp?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/RuntimeHelpers.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/RuntimeHelpers.cpp Tue Jun  1 14:54:14 2010
@@ -18,5 +18,5 @@
 }
 
 extern "C" JavaObject* MMTkGetClass(JavaObject* obj) {
-  return obj->getClass()->delegatee[0];
+  return JavaObject::getClass(obj)->delegatee[0];
 }





More information about the vmkit-commits mailing list