[llvm-commits] [vmkit] r49649 - in /vmkit/trunk/lib/JnJVM: Classpath/ClasspathConstructor.cpp Classpath/ClasspathMethod.cpp Classpath/ClasspathVMClass.cpp Classpath/ClasspathVMSystemProperties.cpp Classpath/ClasspathVMThread.cpp Classpath/ClasspathVMThrowable.cpp VMCore/JavaClass.h VMCore/JavaIsolate.cpp VMCore/JavaMetaJIT.cpp VMCore/JavaTypes.cpp VMCore/JavaUpcalls.cpp VMCore/Jni.cpp VMCore/Jnjvm.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Mon Apr 14 09:46:23 PDT 2008


Author: geoffray
Date: Mon Apr 14 11:46:23 2008
New Revision: 49649

URL: http://llvm.org/viewvc/llvm-project?rev=49649&view=rev
Log:
Calling a Java function from the vm requires an extra argument: the vm


Modified:
    vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.cpp
    vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp
    vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp
    vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMSystemProperties.cpp
    vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThread.cpp
    vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp
    vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h
    vmkit/trunk/lib/JnJVM/VMCore/JavaIsolate.cpp
    vmkit/trunk/lib/JnJVM/VMCore/JavaMetaJIT.cpp
    vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.cpp
    vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.cpp
    vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp
    vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp

Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.cpp?rev=49649&r1=49648&r2=49649&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.cpp Mon Apr 14 11:46:23 2008
@@ -79,7 +79,7 @@
       
       JavaObject* excp = 0;
       try {
-        meth->invokeIntSpecialBuf(res, _buf);
+        meth->invokeIntSpecialBuf(vm, res, _buf);
       }catch(...) {
         excp = JavaThread::getJavaException();
         JavaThread::clearException();

Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp?rev=49649&r1=49648&r2=49649&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp Mon Apr 14 11:46:23 2008
@@ -100,12 +100,12 @@
     try{ \
       if (isVirtual(meth->access)) { \
         if (isPublic(meth->access)) { \
-          val = meth->invoke##TYPE##VirtualBuf(obj, _buf); \
+          val = meth->invoke##TYPE##VirtualBuf(vm, obj, _buf); \
         } else { \
-          val = meth->invoke##TYPE##SpecialBuf(obj, _buf); \
+          val = meth->invoke##TYPE##SpecialBuf(vm, obj, _buf); \
         } \
       } else { \
-        val = meth->invoke##TYPE##StaticBuf(_buf); \
+        val = meth->invoke##TYPE##StaticBuf(vm, _buf); \
       } \
     }catch(...) { \
       exc = JavaThread::getJavaException(); \

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp Mon Apr 14 11:46:23 2008
@@ -101,7 +101,7 @@
       JavaMethod* meth = *i;
       // TODO: check parameter types
       JavaObject* tmp = (*Classpath::newConstructor)(vm);
-      Classpath::initConstructor->invokeIntSpecial(tmp, Cl, meth);
+      Classpath::initConstructor->invokeIntSpecial(vm, tmp, Cl, meth);
       ret->setAt(index, tmp);
     }
     return (jobject)ret;
@@ -146,7 +146,8 @@
       JavaMethod* meth = *i;
       // TODO: check parameter types
       JavaObject* tmp = (*Classpath::newMethod)(vm);
-      Classpath::initMethod->invokeIntSpecial(tmp, Cl, vm->UTF8ToStr(meth->name), meth);
+      Classpath::initMethod->invokeIntSpecial(vm, tmp, Cl,
+                                              vm->UTF8ToStr(meth->name), meth);
       ret->setAt(index, tmp);
     }
     return (jobject)ret;
@@ -316,14 +317,16 @@
       }
     }
     
-    ArrayObject* ret = ArrayObject::acons(res.size(), Classpath::fieldArrayClass, vm);
+    ArrayObject* ret = ArrayObject::acons(res.size(),
+                                          Classpath::fieldArrayClass, vm);
     sint32 index = 0;
     for (std::vector<JavaField*>::iterator i = res.begin(), e = res.end();
           i != e; ++i, ++index) {
       JavaField* field = *i;
       // TODO: check parameter types
       JavaObject* tmp = (*Classpath::newField)(vm);
-      Classpath::initField->invokeIntSpecial(tmp, Cl, vm->UTF8ToStr(field->name), field);
+      Classpath::initField->invokeIntSpecial(vm, tmp, Cl,
+                                             vm->UTF8ToStr(field->name), field);
       ret->setAt(index, tmp);
     }
     return (jobject)ret;

Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMSystemProperties.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMSystemProperties.cpp?rev=49649&r1=49648&r2=49649&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMSystemProperties.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMSystemProperties.cpp Mon Apr 14 11:46:23 2008
@@ -30,7 +30,8 @@
 
 static void setProperty(Jnjvm* vm, JavaObject* prop, const char* key,
                         const char* val) {
-  Classpath::setProperty->invokeIntSpecial(prop, vm->asciizToStr(key), vm->asciizToStr(val));
+  Classpath::setProperty->invokeIntSpecial(vm, prop, vm->asciizToStr(key),
+                                           vm->asciizToStr(val));
 }
 
 static void setUnameProp(Jnjvm* vm, JavaObject* prop) {

Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThread.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThread.cpp?rev=49649&r1=49648&r2=49649&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThread.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThread.cpp Mon Apr 14 11:46:23 2008
@@ -64,7 +64,7 @@
   }
   
   JavaMethod* method = vmthClass->lookupMethod(Jnjvm::runName, Jnjvm::clinitType, ACC_VIRTUAL, true);
-  method->invokeIntSpecial(vmThread);
+  method->invokeIntSpecial(isolate, vmThread);
 
   
   if (!isDaemon) {

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp Mon Apr 14 11:46:23 2008
@@ -49,7 +49,7 @@
   ArrayUInt32* obj = ArrayUInt32::acons(real_size, JavaArray::ofInt, vm);
   memcpy(obj->elements, stack, real_size * sizeof(int));
   JavaObject* vmThrowable = (*Classpath::newVMThrowable)(vm);
-  Classpath::initVMThrowable->invokeIntSpecial(vmThrowable);
+  Classpath::initVMThrowable->invokeIntSpecial(vm, vmThrowable);
   (*Classpath::vmDataVMThrowable)(vmThrowable, obj);
   return (jobject)vmThrowable;
 }
@@ -74,7 +74,9 @@
   bool native = isNative(meth->access);
 
   JavaObject* res = (*Classpath::newStackTraceElement)(vm);
-  Classpath::initStackTraceElement->invokeIntSpecial(res, sourceName, (uint32)ip, className, methodName, native);
+  Classpath::initStackTraceElement->invokeIntSpecial(vm, res, sourceName,
+                                                     (uint32)ip, className,
+                                                     methodName, native);
   return res;
 }
 

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h Mon Apr 14 11:46:23 2008
@@ -255,59 +255,59 @@
   void* compiledPtr();
   const llvm::FunctionType* llvmType;
 
-  uint32 invokeIntSpecialAP(JavaObject* obj, va_list ap);
-  float invokeFloatSpecialAP(JavaObject* obj, va_list ap);
-  double invokeDoubleSpecialAP(JavaObject* obj, va_list ap);
-  sint64 invokeLongSpecialAP(JavaObject* obj, va_list ap);
-  JavaObject* invokeJavaObjectSpecialAP(JavaObject* obj, va_list ap);
-  
-  uint32 invokeIntVirtualAP(JavaObject* obj, va_list ap);
-  float invokeFloatVirtualAP(JavaObject* obj, va_list ap);
-  double invokeDoubleVirtualAP(JavaObject* obj, va_list ap);
-  sint64 invokeLongVirtualAP(JavaObject* obj, va_list ap);
-  JavaObject* invokeJavaObjectVirtualAP(JavaObject* obj, va_list ap);
-  
-  uint32 invokeIntStaticAP(va_list ap);
-  float invokeFloatStaticAP(va_list ap);
-  double invokeDoubleStaticAP(va_list ap);
-  sint64 invokeLongStaticAP(va_list ap);
-  JavaObject* invokeJavaObjectStaticAP(va_list ap);
-  
-  uint32 invokeIntSpecialBuf(JavaObject* obj, void* buf);
-  float invokeFloatSpecialBuf(JavaObject* obj, void* buf);
-  double invokeDoubleSpecialBuf(JavaObject* obj, void* buf);
-  sint64 invokeLongSpecialBuf(JavaObject* obj, void* buf);
-  JavaObject* invokeJavaObjectSpecialBuf(JavaObject* obj, void* buf);
-  
-  uint32 invokeIntVirtualBuf(JavaObject* obj, void* buf);
-  float invokeFloatVirtualBuf(JavaObject* obj, void* buf);
-  double invokeDoubleVirtualBuf(JavaObject* obj, void* buf);
-  sint64 invokeLongVirtualBuf(JavaObject* obj, void* buf);
-  JavaObject* invokeJavaObjectVirtualBuf(JavaObject* obj, void* buf);
-  
-  uint32 invokeIntStaticBuf(void* buf);
-  float invokeFloatStaticBuf(void* buf);
-  double invokeDoubleStaticBuf(void* buf);
-  sint64 invokeLongStaticBuf(void* buf);
-  JavaObject* invokeJavaObjectStaticBuf(void* buf);
-  
-  uint32 invokeIntSpecial(JavaObject* obj, ...);
-  float invokeFloatSpecial(JavaObject* obj, ...);
-  double invokeDoubleSpecial(JavaObject* obj, ...);
-  sint64 invokeLongSpecial(JavaObject* obj, ...);
-  JavaObject* invokeJavaObjectSpecial(JavaObject* obj, ...);
-  
-  uint32 invokeIntVirtual(JavaObject* obj, ...);
-  float invokeFloatVirtual(JavaObject* obj, ...);
-  double invokeDoubleVirtual(JavaObject* obj, ...);
-  sint64 invokeLongVirtual(JavaObject* obj, ...);
-  JavaObject* invokeJavaObjectVirtual(JavaObject* obj, ...);
-  
-  uint32 invokeIntStatic(...);
-  float invokeFloatStatic(...);
-  double invokeDoubleStatic(...);
-  sint64 invokeLongStatic(...);
-  JavaObject* invokeJavaObjectStatic(...);
+  uint32 invokeIntSpecialAP(Jnjvm* vm, JavaObject* obj, va_list ap);
+  float invokeFloatSpecialAP(Jnjvm* vm, JavaObject* obj, va_list ap);
+  double invokeDoubleSpecialAP(Jnjvm* vm, JavaObject* obj, va_list ap);
+  sint64 invokeLongSpecialAP(Jnjvm* vm, JavaObject* obj, va_list ap);
+  JavaObject* invokeJavaObjectSpecialAP(Jnjvm* vm, JavaObject* obj, va_list ap);
+  
+  uint32 invokeIntVirtualAP(Jnjvm* vm, JavaObject* obj, va_list ap);
+  float invokeFloatVirtualAP(Jnjvm* vm, JavaObject* obj, va_list ap);
+  double invokeDoubleVirtualAP(Jnjvm* vm, JavaObject* obj, va_list ap);
+  sint64 invokeLongVirtualAP(Jnjvm* vm, JavaObject* obj, va_list ap);
+  JavaObject* invokeJavaObjectVirtualAP(Jnjvm* vm, JavaObject* obj, va_list ap);
+  
+  uint32 invokeIntStaticAP(Jnjvm* vm, va_list ap);
+  float invokeFloatStaticAP(Jnjvm* vm, va_list ap);
+  double invokeDoubleStaticAP(Jnjvm* vm, va_list ap);
+  sint64 invokeLongStaticAP(Jnjvm* vm, va_list ap);
+  JavaObject* invokeJavaObjectStaticAP(Jnjvm* vm, va_list ap);
+  
+  uint32 invokeIntSpecialBuf(Jnjvm* vm, JavaObject* obj, void* buf);
+  float invokeFloatSpecialBuf(Jnjvm* vm, JavaObject* obj, void* buf);
+  double invokeDoubleSpecialBuf(Jnjvm* vm, JavaObject* obj, void* buf);
+  sint64 invokeLongSpecialBuf(Jnjvm* vm, JavaObject* obj, void* buf);
+  JavaObject* invokeJavaObjectSpecialBuf(Jnjvm* vm, JavaObject* obj, void* buf);
+  
+  uint32 invokeIntVirtualBuf(Jnjvm* vm, JavaObject* obj, void* buf);
+  float invokeFloatVirtualBuf(Jnjvm* vm, JavaObject* obj, void* buf);
+  double invokeDoubleVirtualBuf(Jnjvm* vm, JavaObject* obj, void* buf);
+  sint64 invokeLongVirtualBuf(Jnjvm* vm, JavaObject* obj, void* buf);
+  JavaObject* invokeJavaObjectVirtualBuf(Jnjvm* vm, JavaObject* obj, void* buf);
+  
+  uint32 invokeIntStaticBuf(Jnjvm* vm, void* buf);
+  float invokeFloatStaticBuf(Jnjvm* vm, void* buf);
+  double invokeDoubleStaticBuf(Jnjvm* vm, void* buf);
+  sint64 invokeLongStaticBuf(Jnjvm* vm, void* buf);
+  JavaObject* invokeJavaObjectStaticBuf(Jnjvm* vm, void* buf);
+  
+  uint32 invokeIntSpecial(Jnjvm* vm, JavaObject* obj, ...);
+  float invokeFloatSpecial(Jnjvm* vm, JavaObject* obj, ...);
+  double invokeDoubleSpecial(Jnjvm* vm, JavaObject* obj, ...);
+  sint64 invokeLongSpecial(Jnjvm* vm, JavaObject* obj, ...);
+  JavaObject* invokeJavaObjectSpecial(Jnjvm* vm, JavaObject* obj, ...);
+  
+  uint32 invokeIntVirtual(Jnjvm* vm, JavaObject* obj, ...);
+  float invokeFloatVirtual(Jnjvm* vm, JavaObject* obj, ...);
+  double invokeDoubleVirtual(Jnjvm* vm, JavaObject* obj, ...);
+  sint64 invokeLongVirtual(Jnjvm* vm, JavaObject* obj, ...);
+  JavaObject* invokeJavaObjectVirtual(Jnjvm* vm, JavaObject* obj, ...);
+  
+  uint32 invokeIntStatic(Jnjvm* vm, ...);
+  float invokeFloatStatic(Jnjvm* vm, ...);
+  double invokeDoubleStatic(Jnjvm* vm, ...);
+  sint64 invokeLongStatic(Jnjvm* vm, ...);
+  JavaObject* invokeJavaObjectStatic(Jnjvm* vm, ...);
 };
 
 class JavaField : public mvm::Object {

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaIsolate.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaIsolate.cpp Mon Apr 14 11:46:23 2008
@@ -304,7 +304,7 @@
 
 JavaObject* JavaIsolate::loadAppClassLoader() {
   if (appClassLoader == 0) {
-    appClassLoader = Classpath::getSystemClassLoader->invokeJavaObjectStatic();
+    appClassLoader = Classpath::getSystemClassLoader->invokeJavaObjectStatic(this);
   }
   return appClassLoader;
 }
@@ -316,7 +316,8 @@
 void JavaIsolate::loadBootstrap() {
   mapInitialThread();
   loadAppClassLoader();
-  Classpath::setContextClassLoader->invokeIntSpecial(JavaThread::currentThread(), appClassLoader);
+  JavaObject* obj = JavaThread::currentThread();
+  Classpath::setContextClassLoader->invokeIntSpecial(this, obj, appClassLoader);
   // load and initialise math since it is responsible for dlopen'ing 
   // libjavalang.so and we are optimizing some math operations
   loadName(asciizConstructUTF8("java/lang/Math"), 
@@ -334,9 +335,11 @@
   if (exc) {
     JavaThread::clearException();
     JavaObject* obj = JavaThread::currentThread();
-    JavaObject* group = (JavaObject*)((*obj)(ClasspathThread::group)).PointerVal;
+    JavaObject* group = 
+      (JavaObject*)((*obj)(ClasspathThread::group)).PointerVal;
     try{
-      ClasspathThread::uncaughtException->invokeIntSpecial(group, obj, exc);
+      ClasspathThread::uncaughtException->invokeIntSpecial(this, group, obj, 
+                                                           exc);
     }catch(...) {
       printf("Even uncaught exception throwed an exception!\n");
       assert(0);

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaMetaJIT.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaMetaJIT.cpp Mon Apr 14 11:46:23 2008
@@ -163,10 +163,10 @@
   va_list ap;
   va_start(ap, access);
   if (stat) {
-    method->invokeIntStaticAP(ap);
+    method->invokeIntStaticAP(vm, ap);
   } else {
     JavaObject* obj = va_arg(ap, JavaObject*);
-    method->invokeIntSpecialAP(obj, ap);
+    method->invokeIntSpecialAP(vm, obj, ap);
   }
   va_end(ap);
 }
@@ -463,7 +463,7 @@
 #if 1//defined(__PPC__) && !defined(__MACH__)
 #define INVOKE(TYPE, TYPE_NAME, FUNC_TYPE_VIRTUAL_AP, FUNC_TYPE_STATIC_AP, FUNC_TYPE_VIRTUAL_BUF, FUNC_TYPE_STATIC_BUF) \
 \
-TYPE JavaMethod::invoke##TYPE_NAME##VirtualAP(JavaObject* obj, va_list ap) { \
+TYPE JavaMethod::invoke##TYPE_NAME##VirtualAP(Jnjvm* vm, JavaObject* obj, va_list ap) { \
   if (!classDef->isReady()) \
     classDef->isolate->loadName(classDef->name, classDef->classLoader, true, true, true); \
   \
@@ -474,10 +474,10 @@
   void* _buf = (void*)buf; \
   readArgs(buf, signature, ap); \
   void* func = meth->compiledPtr();\
-  return ((FUNC_TYPE_VIRTUAL_BUF)signature->virtualCallBuf())(func, obj, _buf);\
+  return ((FUNC_TYPE_VIRTUAL_BUF)signature->virtualCallBuf())(vm, func, obj, _buf);\
 }\
 \
-TYPE JavaMethod::invoke##TYPE_NAME##SpecialAP(JavaObject* obj, va_list ap) {\
+TYPE JavaMethod::invoke##TYPE_NAME##SpecialAP(Jnjvm* vm, JavaObject* obj, va_list ap) {\
   if (!classDef->isReady())\
     classDef->isolate->loadName(classDef->name, classDef->classLoader, true, true, true);\
   \
@@ -486,10 +486,10 @@
   void* _buf = (void*)buf; \
   readArgs(buf, signature, ap); \
   void* func = this->compiledPtr();\
-  return ((FUNC_TYPE_VIRTUAL_BUF)signature->virtualCallBuf())(func, obj, _buf);\
+  return ((FUNC_TYPE_VIRTUAL_BUF)signature->virtualCallBuf())(vm, func, obj, _buf);\
 }\
 \
-TYPE JavaMethod::invoke##TYPE_NAME##StaticAP(va_list ap) {\
+TYPE JavaMethod::invoke##TYPE_NAME##StaticAP(Jnjvm* vm, va_list ap) {\
   if (!classDef->isReady())\
     classDef->isolate->loadName(classDef->name, classDef->classLoader, true, true, true);\
   \
@@ -497,10 +497,10 @@
   void* _buf = (void*)buf; \
   readArgs(buf, signature, ap); \
   void* func = this->compiledPtr();\
-  return ((FUNC_TYPE_STATIC_BUF)signature->staticCallBuf())(func, _buf);\
+  return ((FUNC_TYPE_STATIC_BUF)signature->staticCallBuf())(vm, func, _buf);\
 }\
 \
-TYPE JavaMethod::invoke##TYPE_NAME##VirtualBuf(JavaObject* obj, void* buf) {\
+TYPE JavaMethod::invoke##TYPE_NAME##VirtualBuf(Jnjvm* vm, JavaObject* obj, void* buf) {\
   if (!classDef->isReady())\
     classDef->isolate->loadName(classDef->name, classDef->classLoader, true, true, true);\
   \
@@ -508,46 +508,46 @@
   JavaMethod* meth = obj->classOf->lookupMethod(name, type, false, true);\
   \
   void* func = meth->compiledPtr();\
-  return ((FUNC_TYPE_VIRTUAL_BUF)signature->virtualCallBuf())(func, obj, buf);\
+  return ((FUNC_TYPE_VIRTUAL_BUF)signature->virtualCallBuf())(vm, func, obj, buf);\
 }\
 \
-TYPE JavaMethod::invoke##TYPE_NAME##SpecialBuf(JavaObject* obj, void* buf) {\
+TYPE JavaMethod::invoke##TYPE_NAME##SpecialBuf(Jnjvm* vm, JavaObject* obj, void* buf) {\
   if (!classDef->isReady())\
     classDef->isolate->loadName(classDef->name, classDef->classLoader, true, true, true);\
   \
   verifyNull(obj);\
   void* func = this->compiledPtr();\
-  return ((FUNC_TYPE_VIRTUAL_BUF)signature->virtualCallBuf())(func, obj, buf);\
+  return ((FUNC_TYPE_VIRTUAL_BUF)signature->virtualCallBuf())(vm, func, obj, buf);\
 }\
 \
-TYPE JavaMethod::invoke##TYPE_NAME##StaticBuf(void* buf) {\
+TYPE JavaMethod::invoke##TYPE_NAME##StaticBuf(Jnjvm* vm, void* buf) {\
   if (!classDef->isReady())\
     classDef->isolate->loadName(classDef->name, classDef->classLoader, true, true, true);\
   \
   void* func = this->compiledPtr();\
-  return ((FUNC_TYPE_STATIC_BUF)signature->staticCallBuf())(func, buf);\
+  return ((FUNC_TYPE_STATIC_BUF)signature->staticCallBuf())(vm, func, buf);\
 }\
 \
-TYPE JavaMethod::invoke##TYPE_NAME##Virtual(JavaObject* obj, ...) { \
+TYPE JavaMethod::invoke##TYPE_NAME##Virtual(Jnjvm* vm, JavaObject* obj, ...) { \
   va_list ap;\
   va_start(ap, obj);\
-  TYPE res = invoke##TYPE_NAME##VirtualAP(obj, ap);\
+  TYPE res = invoke##TYPE_NAME##VirtualAP(vm, obj, ap);\
   va_end(ap); \
   return res; \
 }\
 \
-TYPE JavaMethod::invoke##TYPE_NAME##Special(JavaObject* obj, ...) {\
+TYPE JavaMethod::invoke##TYPE_NAME##Special(Jnjvm* vm, JavaObject* obj, ...) {\
   va_list ap;\
   va_start(ap, obj);\
-  TYPE res = invoke##TYPE_NAME##SpecialAP(obj, ap);\
+  TYPE res = invoke##TYPE_NAME##SpecialAP(vm, obj, ap);\
   va_end(ap); \
   return res; \
 }\
 \
-TYPE JavaMethod::invoke##TYPE_NAME##Static(...) {\
+TYPE JavaMethod::invoke##TYPE_NAME##Static(Jnjvm* vm, ...) {\
   va_list ap;\
-  va_start(ap, this);\
-  TYPE res = invoke##TYPE_NAME##StaticAP(ap);\
+  va_start(ap, vm);\
+  TYPE res = invoke##TYPE_NAME##StaticAP(vm, ap);\
   va_end(ap); \
   return res; \
 }\
@@ -556,7 +556,7 @@
 
 #define INVOKE(TYPE, TYPE_NAME, FUNC_TYPE_VIRTUAL_AP, FUNC_TYPE_STATIC_AP, FUNC_TYPE_VIRTUAL_BUF, FUNC_TYPE_STATIC_BUF) \
 \
-TYPE JavaMethod::invoke##TYPE_NAME##VirtualAP(JavaObject* obj, va_list ap) { \
+TYPE JavaMethod::invoke##TYPE_NAME##VirtualAP(Jnjvm* vm, JavaObject* obj, va_list ap) { \
   if (!classDef->isReady()) \
     classDef->isolate->loadName(classDef->name, classDef->classLoader, true, true, true); \
   \
@@ -564,27 +564,27 @@
   JavaMethod* meth = obj->classOf->lookupMethod(name, type, false, true); \
   \
   void* func = meth->compiledPtr();\
-  return ((FUNC_TYPE_VIRTUAL_AP)signature->virtualCallAP())(func, obj, ap);\
+  return ((FUNC_TYPE_VIRTUAL_AP)signature->virtualCallAP())(vm, func, obj, ap);\
 }\
 \
-TYPE JavaMethod::invoke##TYPE_NAME##SpecialAP(JavaObject* obj, va_list ap) {\
+TYPE JavaMethod::invoke##TYPE_NAME##SpecialAP(Jnjvm* vm, JavaObject* obj, va_list ap) {\
   if (!classDef->isReady())\
     classDef->isolate->loadName(classDef->name, classDef->classLoader, true, true, true);\
   \
   verifyNull(obj);\
   void* func = this->compiledPtr();\
-  return ((FUNC_TYPE_VIRTUAL_AP)signature->virtualCallAP())(func, obj, ap);\
+  return ((FUNC_TYPE_VIRTUAL_AP)signature->virtualCallAP())(vm, func, obj, ap);\
 }\
 \
-TYPE JavaMethod::invoke##TYPE_NAME##StaticAP(va_list ap) {\
+TYPE JavaMethod::invoke##TYPE_NAME##StaticAP(Jnjvm* vm, va_list ap) {\
   if (!classDef->isReady())\
     classDef->isolate->loadName(classDef->name, classDef->classLoader, true, true, true);\
   \
   void* func = this->compiledPtr();\
-  return ((FUNC_TYPE_STATIC_AP)signature->staticCallAP())(func, ap);\
+  return ((FUNC_TYPE_STATIC_AP)signature->staticCallAP())(vm, func, ap);\
 }\
 \
-TYPE JavaMethod::invoke##TYPE_NAME##VirtualBuf(JavaObject* obj, void* buf) {\
+TYPE JavaMethod::invoke##TYPE_NAME##VirtualBuf(Jnjvm* vm, JavaObject* obj, void* buf) {\
   if (!classDef->isReady())\
     classDef->isolate->loadName(classDef->name, classDef->classLoader, true, true, true);\
   \
@@ -592,75 +592,75 @@
   JavaMethod* meth = obj->classOf->lookupMethod(name, type, false, true);\
   \
   void* func = meth->compiledPtr();\
-  return ((FUNC_TYPE_VIRTUAL_BUF)signature->virtualCallBuf())(func, obj, buf);\
+  return ((FUNC_TYPE_VIRTUAL_BUF)signature->virtualCallBuf())(vm, func, obj, buf);\
 }\
 \
-TYPE JavaMethod::invoke##TYPE_NAME##SpecialBuf(JavaObject* obj, void* buf) {\
+TYPE JavaMethod::invoke##TYPE_NAME##SpecialBuf(Jnjvm* vm, JavaObject* obj, void* buf) {\
   if (!classDef->isReady())\
     classDef->isolate->loadName(classDef->name, classDef->classLoader, true, true, true);\
   \
   verifyNull(obj);\
   void* func = this->compiledPtr();\
-  return ((FUNC_TYPE_VIRTUAL_BUF)signature->virtualCallBuf())(func, obj, buf);\
+  return ((FUNC_TYPE_VIRTUAL_BUF)signature->virtualCallBuf())(vm, func, obj, buf);\
 }\
 \
-TYPE JavaMethod::invoke##TYPE_NAME##StaticBuf(void* buf) {\
+TYPE JavaMethod::invoke##TYPE_NAME##StaticBuf(Jnjvm* vm, void* buf) {\
   if (!classDef->isReady())\
     classDef->isolate->loadName(classDef->name, classDef->classLoader, true, true, true);\
   \
   void* func = this->compiledPtr();\
-  return ((FUNC_TYPE_STATIC_BUF)signature->staticCallBuf())(func, buf);\
+  return ((FUNC_TYPE_STATIC_BUF)signature->staticCallBuf())(vm, func, buf);\
 }\
 \
-TYPE JavaMethod::invoke##TYPE_NAME##Virtual(JavaObject* obj, ...) { \
+TYPE JavaMethod::invoke##TYPE_NAME##Virtual(Jnjvm* vm,JavaObject* obj, ...) { \
   va_list ap;\
   va_start(ap, obj);\
-  TYPE res = invoke##TYPE_NAME##VirtualAP(obj, ap);\
+  TYPE res = invoke##TYPE_NAME##VirtualAP(vm, obj, ap);\
   va_end(ap); \
   return res; \
 }\
 \
-TYPE JavaMethod::invoke##TYPE_NAME##Special(JavaObject* obj, ...) {\
+TYPE JavaMethod::invoke##TYPE_NAME##Special(Jnjvm* vm, JavaObject* obj, ...) {\
   va_list ap;\
   va_start(ap, obj);\
-  TYPE res = invoke##TYPE_NAME##SpecialAP(obj, ap);\
+  TYPE res = invoke##TYPE_NAME##SpecialAP(vm, obj, ap);\
   va_end(ap); \
   return res; \
 }\
 \
-TYPE JavaMethod::invoke##TYPE_NAME##Static(...) {\
+TYPE JavaMethod::invoke##TYPE_NAME##Static(Jnjvm* vm, ...) {\
   va_list ap;\
   va_start(ap, this);\
-  TYPE res = invoke##TYPE_NAME##StaticAP(ap);\
+  TYPE res = invoke##TYPE_NAME##StaticAP(vm, ap);\
   va_end(ap); \
   return res; \
 }\
 
 #endif
 
-typedef uint32 (*uint32_virtual_ap)(void*, JavaObject*, va_list);
-typedef sint64 (*sint64_virtual_ap)(void*, JavaObject*, va_list);
-typedef float  (*float_virtual_ap)(void*, JavaObject*, va_list);
-typedef double (*double_virtual_ap)(void*, JavaObject*, va_list);
-typedef JavaObject* (*object_virtual_ap)(void*, JavaObject*, va_list);
-
-typedef uint32 (*uint32_static_ap)(void*, va_list);
-typedef sint64 (*sint64_static_ap)(void*, va_list);
-typedef float  (*float_static_ap)(void*, va_list);
-typedef double (*double_static_ap)(void*, va_list);
-typedef JavaObject* (*object_static_ap)(void*, va_list);
-
-typedef uint32 (*uint32_virtual_buf)(void*, JavaObject*, void*);
-typedef sint64 (*sint64_virtual_buf)(void*, JavaObject*, void*);
-typedef float  (*float_virtual_buf)(void*, JavaObject*, void*);
-typedef double (*double_virtual_buf)(void*, JavaObject*, void*);
-typedef JavaObject* (*object_virtual_buf)(void*, JavaObject*, void*);
-
-typedef uint32 (*uint32_static_buf)(void*, void*);
-typedef sint64 (*sint64_static_buf)(void*, void*);
-typedef float  (*float_static_buf)(void*, void*);
-typedef double (*double_static_buf)(void*, void*);
-typedef JavaObject* (*object_static_buf)(void*, void*);
+typedef uint32 (*uint32_virtual_ap)(Jnjvm*, void*, JavaObject*, va_list);
+typedef sint64 (*sint64_virtual_ap)(Jnjvm*, void*, JavaObject*, va_list);
+typedef float  (*float_virtual_ap)(Jnjvm*, void*, JavaObject*, va_list);
+typedef double (*double_virtual_ap)(Jnjvm*, void*, JavaObject*, va_list);
+typedef JavaObject* (*object_virtual_ap)(Jnjvm*, void*, JavaObject*, va_list);
+
+typedef uint32 (*uint32_static_ap)(Jnjvm*, void*, va_list);
+typedef sint64 (*sint64_static_ap)(Jnjvm*, void*, va_list);
+typedef float  (*float_static_ap)(Jnjvm*, void*, va_list);
+typedef double (*double_static_ap)(Jnjvm*, void*, va_list);
+typedef JavaObject* (*object_static_ap)(Jnjvm*, void*, va_list);
+
+typedef uint32 (*uint32_virtual_buf)(Jnjvm*, void*, JavaObject*, void*);
+typedef sint64 (*sint64_virtual_buf)(Jnjvm*, void*, JavaObject*, void*);
+typedef float  (*float_virtual_buf)(Jnjvm*, void*, JavaObject*, void*);
+typedef double (*double_virtual_buf)(Jnjvm*, void*, JavaObject*, void*);
+typedef JavaObject* (*object_virtual_buf)(Jnjvm*, void*, JavaObject*, void*);
+
+typedef uint32 (*uint32_static_buf)(Jnjvm*, void*, void*);
+typedef sint64 (*sint64_static_buf)(Jnjvm*, void*, void*);
+typedef float  (*float_static_buf)(Jnjvm*, void*, void*);
+typedef double (*double_static_buf)(Jnjvm*, void*, void*);
+typedef JavaObject* (*object_static_buf)(Jnjvm*, void*, void*);
 
 INVOKE(uint32, Int, uint32_virtual_ap, uint32_static_ap, uint32_virtual_buf, uint32_static_buf)
 INVOKE(sint64, Long, sint64_virtual_ap, sint64_static_ap, sint64_virtual_buf, sint64_static_buf)
@@ -729,6 +729,10 @@
   BasicBlock* currentBlock = BasicBlock::Create("enter", res);
   Function::arg_iterator i = res->arg_begin();
   Value *obj, *ptr, *func;
+#ifdef MULTIPLE_VM
+  Value* vm = i;
+#endif
+  ++i;
   func = i;
   ++i;
   if (virt) {
@@ -754,7 +758,7 @@
   }
 
 #ifdef MULTIPLE_VM
-  Args.push_back(mvm::jit::constantPtrNull);
+  Args.push_back(vm);
 #endif
 
   Value* val = CallInst::Create(func, Args.begin(), Args.end(), "", currentBlock);
@@ -780,6 +784,10 @@
   BasicBlock* currentBlock = BasicBlock::Create("enter", res);
   Function::arg_iterator i = res->arg_begin();
   Value *obj, *ap, *func;
+#ifdef MULTIPLE_VM
+  Value* vm = i;
+#endif
+  ++i;
   func = i;
   ++i;
   if (virt) {
@@ -796,7 +804,7 @@
   }
 
 #ifdef MULTIPLE_VM
-  Args.push_back(mvm::jit::constantPtrNull);
+  Args.push_back(vm);
 #endif
 
   Value* val = CallInst::Create(func, Args.begin(), Args.end(), "", currentBlock);

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.cpp Mon Apr 14 11:46:23 2008
@@ -595,11 +595,13 @@
   res->nativeTypePtr  = llvm::PointerType::getUnqual(res->nativeType);
   
   std::vector<const llvm::Type*> Args;
+  Args.push_back(mvm::jit::ptrType); // vm
   Args.push_back(res->staticTypePtr);
   Args.push_back(llvm::PointerType::getUnqual(llvm::Type::Int32Ty));
   res->staticBufType = llvm::FunctionType::get(res->ret->funcs->llvmType, Args, false);
   
   std::vector<const llvm::Type*> Args2;
+  Args2.push_back(mvm::jit::ptrType); // vm
   Args2.push_back(res->virtualTypePtr);
   Args2.push_back(JavaObject::llvmType);
   Args2.push_back(llvm::PointerType::getUnqual(llvm::Type::Int32Ty));

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.cpp Mon Apr 14 11:46:23 2008
@@ -139,7 +139,7 @@
   (*vmth)(running, (uint32)1);
   (*rootGroup)();
   (*th)(group, (JavaObject*)((*rootGroup)().PointerVal));
-  groupAddThread->invokeIntSpecial((JavaObject*)((*rootGroup)().PointerVal), th);
+  groupAddThread->invokeIntSpecial(vm, (JavaObject*)((*rootGroup)().PointerVal), th);
 }
 
 void ClasspathThread::mapInitialThread(Jnjvm* vm) {
@@ -149,7 +149,7 @@
   myth->javaThread = th;
   JavaObject* vmth = (JavaObject*)((*th)(vmThread).PointerVal);
   (*vmth)(vmdata, (JavaObject*)myth);
-  finaliseCreateInitialThread->invokeIntStatic(th);
+  finaliseCreateInitialThread->invokeIntStatic(vm, th);
 }
 
 void Classpath::initialiseClasspath(Jnjvm* vm) {

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp Mon Apr 14 11:46:23 2008
@@ -146,7 +146,7 @@
   JavaMethod* init =
     cl->lookupMethod(Jnjvm::initName, 
                      vm->asciizConstructUTF8("(Ljava/lang/String;)V"), 0, 1);
-  init->invokeIntSpecial(res, vm->asciizToStr(msg));
+  init->invokeIntSpecial(vm, res, vm->asciizToStr(msg));
   th->pendingException = res;
   th->returnFromNative();
   return 1;
@@ -230,8 +230,9 @@
   va_start(ap, methodID);
   JavaMethod* meth = (JavaMethod*)methodID;
   Class* cl = (Class*)NativeUtil::resolvedImplClass(clazz, true);
-  JavaObject* res = cl->doNew(JavaThread::get()->isolate);
-  meth->invokeIntSpecialAP(res, ap);
+  Jnjvm* vm = JavaThread::get()->isolate;
+  JavaObject* res = cl->doNew(vm);
+  meth->invokeIntSpecialAP(vm, res, ap);
   va_end(ap);
   return (jobject)res;
   
@@ -320,7 +321,8 @@
   va_start(ap, methodID);
   JavaObject* self = (JavaObject*)obj;
   JavaMethod* meth = (JavaMethod*)methodID;
-  JavaObject* res = meth->invokeJavaObjectVirtualAP(self, ap);
+  Jnjvm* vm = JavaThread::get()->isolate;
+  JavaObject* res = meth->invokeJavaObjectVirtualAP(vm, self, ap);
   va_end(ap);
   return (jobject)res;
 
@@ -351,7 +353,8 @@
   va_start(ap, methodID);
   JavaObject* self = (JavaObject*)_obj;
   JavaMethod* meth = (JavaMethod*)methodID;
-  uint32 res = meth->invokeIntVirtualAP(self, ap);
+  Jnjvm* vm = JavaThread::get()->isolate;
+  uint32 res = meth->invokeIntVirtualAP(vm, self, ap);
   va_end(ap);
   return res;
 
@@ -442,7 +445,8 @@
   va_start(ap, methodID);
   JavaObject* obj = (JavaObject*)_obj;
   JavaMethod* meth = (JavaMethod*)methodID;
-  uint32 res = meth->invokeIntVirtualAP(obj, ap);
+  Jnjvm* vm = JavaThread::get()->isolate;
+  uint32 res = meth->invokeIntVirtualAP(vm, obj, ap);
   va_end(ap);
   return res;
 
@@ -495,7 +499,8 @@
   va_start(ap, methodID);
   JavaObject* obj = (JavaObject*)_obj;
   JavaMethod* meth = (JavaMethod*)methodID;
-  jfloat res = meth->invokeFloatVirtualAP(obj, ap);
+  Jnjvm* vm = JavaThread::get()->isolate;
+  jfloat res = meth->invokeFloatVirtualAP(vm, obj, ap);
   va_end(ap);
   return res;
 
@@ -527,7 +532,8 @@
   va_start(ap, methodID);
   JavaObject* obj = (JavaObject*)_obj;
   JavaMethod* meth = (JavaMethod*)methodID;
-  jdouble res = meth->invokeDoubleVirtualAP(obj, ap);
+  Jnjvm* vm = JavaThread::get()->isolate;
+  jdouble res = meth->invokeDoubleVirtualAP(vm, obj, ap);
   va_end(ap);
   return res;
 
@@ -543,7 +549,8 @@
   
   JavaObject* obj = (JavaObject*)_obj;
   JavaMethod* meth = (JavaMethod*)methodID;
-  return meth->invokeDoubleVirtualAP(obj, args);
+  Jnjvm* vm = JavaThread::get()->isolate;
+  return meth->invokeDoubleVirtualAP(vm, obj, args);
 
   END_EXCEPTION
   return 0.0;
@@ -567,7 +574,8 @@
   va_start(ap, methodID);
   JavaObject* obj = (JavaObject*)_obj;
   JavaMethod* meth = (JavaMethod*)methodID;
-  meth->invokeIntVirtualAP(obj, ap);
+  Jnjvm* vm = JavaThread::get()->isolate;
+  meth->invokeIntVirtualAP(vm, obj, ap);
   va_end(ap);
 
   END_EXCEPTION
@@ -581,7 +589,8 @@
   
   JavaObject* obj = (JavaObject*)_obj;
   JavaMethod* meth = (JavaMethod*)methodID;
-  meth->invokeIntVirtualAP(obj, args);
+  Jnjvm* vm = JavaThread::get()->isolate;
+  meth->invokeIntVirtualAP(vm, obj, args);
 
   END_EXCEPTION
 }
@@ -800,7 +809,8 @@
   va_start(ap, methodID);
   JavaObject* obj = (JavaObject*)_obj;
   JavaMethod* meth = (JavaMethod*)methodID;
-  meth->invokeIntSpecialAP(obj, ap);
+  Jnjvm* vm = JavaThread::get()->isolate;
+  meth->invokeIntSpecialAP(vm, obj, ap);
   va_end(ap);
 
   END_EXCEPTION
@@ -1110,7 +1120,8 @@
   va_list ap;
   va_start(ap, methodID);
   JavaMethod* meth = (JavaMethod*)methodID;
-  uint32 res = meth->invokeIntStaticAP(ap);
+  Jnjvm* vm = JavaThread::get()->isolate;
+  uint32 res = meth->invokeIntStaticAP(vm, ap);
   va_end(ap);
   return res;
 
@@ -1284,7 +1295,8 @@
   va_list ap;
   va_start(ap, methodID);
   JavaMethod* meth = (JavaMethod*)methodID;
-  meth->invokeIntStaticAP(ap);
+  Jnjvm* vm = JavaThread::get()->isolate;
+  meth->invokeIntStaticAP(vm, ap);
   va_end(ap);
 
   END_EXCEPTION
@@ -1297,7 +1309,8 @@
   BEGIN_EXCEPTION
   
   JavaMethod* meth = (JavaMethod*)methodID;
-  meth->invokeIntStaticAP(args);
+  Jnjvm* vm = JavaThread::get()->isolate;
+  meth->invokeIntStaticAP(vm, args);
 
   END_EXCEPTION
 }

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp Mon Apr 14 11:46:23 2008
@@ -298,7 +298,7 @@
 }
 
 
-typedef void (*clinit_t)(void);
+typedef void (*clinit_t)(Jnjvm* vm);
 
 void Jnjvm::initialiseClass(CommonClass* cl) {
   if (cl->isArray || AssessorDesc::bogusClassToPrimitive(cl)) {
@@ -333,7 +333,7 @@
         JavaObject* exc = 0;
         try{
           clinit_t pred = (clinit_t)meth->compiledPtr();
-          pred();
+          pred(this);
         } catch(...) {
           exc = JavaThread::getJavaException();
           assert(exc && "no exception?");
@@ -816,7 +816,7 @@
 CommonClass* Jnjvm::loadInClassLoader(const UTF8* name, JavaObject* loader) {
   JavaString* str = this->UTF8ToStr(name);
   JavaObject* obj = (JavaObject*)
-    Classpath::loadInClassLoader->invokeJavaObjectVirtual(loader, str);
+    Classpath::loadInClassLoader->invokeJavaObjectVirtual(this, loader, str);
   return (CommonClass*)((*Classpath::vmdataClass)(obj).PointerVal);
 }
 
@@ -839,13 +839,13 @@
   if (!(cl->delegatee)) {
     JavaObject* delegatee = (*Classpath::newClass)(this);
     cl->delegatee = delegatee;
-    Classpath::initClass->invokeIntSpecial(delegatee, cl);
+    Classpath::initClass->invokeIntSpecial(this, delegatee, cl);
   } else if (cl->delegatee->classOf != Classpath::newClass) {
     JavaObject* pd = cl->delegatee;
     JavaObject* delegatee = (*Classpath::newClass)(this);
     cl->delegatee = delegatee;;
-    Classpath::initClassWithProtectionDomain->invokeIntSpecial(delegatee, cl,
-                                                               pd);
+    Classpath::initClassWithProtectionDomain->invokeIntSpecial(this, delegatee,
+                                                               cl, pd);
   }
   return cl->delegatee;
 }
@@ -855,12 +855,13 @@
   if (!val) {
     val = (*Classpath::newClass)(this);
     delegatees->hash(cl, val);
-    Classpath::initClass->invokeIntSpecial(val, cl);
+    Classpath::initClass->invokeIntSpecial(this, val, cl);
   } else if (val->classOf != Classpath::newClass) {
     JavaObject* pd = val;
     val = (*Classpath::newClass)(this);
     delegatees->hash(cl, val);
-    Classpath::initClassWithProtectionDomain->invokeIntSpecial(val, cl, pd);
+    Classpath::initClassWithProtectionDomain->invokeIntSpecial(this, val, cl,
+                                                               pd);
   }
   return val;
 }





More information about the llvm-commits mailing list