[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