fix various regressions due to 0.5 work

This commit is contained in:
Joel Dice 2011-02-11 21:13:11 -07:00
parent eae79fdb34
commit cb7dc1aeef
3 changed files with 15 additions and 6 deletions

View File

@ -616,11 +616,11 @@ checkFileAccess
return 0; return 0;
} }
} else { } else {
return booleanValue return intValue
(t, t->m->processor->invoke (t, t->m->processor->invoke
(t, nativeInterceptOriginal (t, nativeInterceptOriginal
(t, methodRuntimeDataNative(t, getMethodRuntimeData(t, method))), (t, methodRuntimeDataNative(t, getMethodRuntimeData(t, method))),
reinterpret_cast<object>(arguments[0]), file, mask)); reinterpret_cast<object>(arguments[0]), file, mask)) != 0;
} }
} }
@ -3128,7 +3128,7 @@ jvmInvokeMethod(Thread* t, uintptr_t* arguments)
} }
object result; object result;
if (arguments) { if (args) {
result = t->m->processor->invokeArray result = t->m->processor->invokeArray
(t, vmMethod, instance ? *instance : 0, *args); (t, vmMethod, instance ? *instance : 0, *args);
} else { } else {

View File

@ -3523,7 +3523,8 @@ postInitClass(Thread* t, object c)
object exception = t->exception; object exception = t->exception;
t->exception = 0; t->exception = 0;
throwNew(t, Machine::ExceptionInInitializerErrorType, 0, 0, exception); throwNew(t, Machine::ExceptionInInitializerErrorType,
static_cast<object>(0), 0, exception);
} else { } else {
classVmFlags(t, c) &= ~(NeedInitFlag | InitFlag); classVmFlags(t, c) &= ~(NeedInitFlag | InitFlag);
} }

View File

@ -1971,6 +1971,8 @@ addThread(Thread* t, Thread* p)
p->peer = p->parent->child; p->peer = p->parent->child;
p->parent->child = p; p->parent->child = p;
threadPeer(t, p->javaThread) = reinterpret_cast<jlong>(p);
} }
inline void inline void
@ -1985,6 +1987,8 @@ removeThread(Thread* t, Thread* p)
t->m->stateLock->notifyAll(t->systemThread); t->m->stateLock->notifyAll(t->systemThread);
p->parent->child = p->peer; p->parent->child = p->peer;
threadPeer(t, p->javaThread) = 0;
} }
inline Thread* inline Thread*
@ -2592,6 +2596,8 @@ throw_(Thread* t, object e)
t->exception = e; t->exception = e;
// printTrace(t, e);
popResources(t); popResources(t);
t->checkpoint->unwind(); t->checkpoint->unwind();
@ -2600,9 +2606,11 @@ throw_(Thread* t, object e)
} }
inline void NO_RETURN inline void NO_RETURN
throwNew(Thread* t, Machine::Type type) throwNew
(Thread* t, Machine::Type type, object message = 0, object trace = 0,
object cause = 0)
{ {
throw_(t, makeThrowable(t, type)); throw_(t, makeThrowable(t, type, message, trace, cause));
} }
inline void NO_RETURN inline void NO_RETURN