diff options
author | Elliott Hughes <enh@google.com> | 2011-09-15 17:45:30 -0700 |
---|---|---|
committer | Elliott Hughes <enh@google.com> | 2011-09-16 10:56:44 -0700 |
commit | 5f79133a435ebcb20000370d56046fe01201dd80 (patch) | |
tree | 974c4610e30e8cc950e6e461e66b939361cb2bbe /src/java_lang_Thread.cc | |
parent | 78128a63b2615744760b7f8ab83df9764a5d4a95 (diff) | |
download | art-5f79133a435ebcb20000370d56046fe01201dd80.zip art-5f79133a435ebcb20000370d56046fe01201dd80.tar.gz art-5f79133a435ebcb20000370d56046fe01201dd80.tar.bz2 |
Implement monitors.
Change-Id: Ifc7a801f9cbcdfbc1e1af5c905261dfadaa60f45
Diffstat (limited to 'src/java_lang_Thread.cc')
-rw-r--r-- | src/java_lang_Thread.cc | 29 |
1 files changed, 12 insertions, 17 deletions
diff --git a/src/java_lang_Thread.cc b/src/java_lang_Thread.cc index 286a211..d2f1349 100644 --- a/src/java_lang_Thread.cc +++ b/src/java_lang_Thread.cc @@ -53,31 +53,26 @@ jint Thread_nativeGetStatus(JNIEnv* env, jobject javaThread) { jboolean Thread_nativeHoldsLock(JNIEnv* env, jobject javaThread, jobject javaObject) { ThreadListLock lock; - //Thread* thread = Thread::FromManagedThread(env, javaThread); - //Object* object = dvmDecodeIndirectRef(env, javaObject); - //if (object == NULL) { - //dvmThrowNullPointerException("object == null"); - //return JNI_FALSE; - //} - //Thread* thread = Thread::FromManagedThread(env, javaThread); - //int result = dvmHoldsLock(thread, object); - //return result; - UNIMPLEMENTED(FATAL); - return JNI_FALSE; + Object* object = Decode<Object*>(env, javaObject); + if (object == NULL) { + Thread::Current()->ThrowNewException("Ljava/lang/NullPointerException;", "object == null"); + return JNI_FALSE; + } + Thread* thread = Thread::FromManagedThread(env, javaThread); + return thread->HoldsLock(object); } void Thread_nativeInterrupt(JNIEnv* env, jobject javaThread) { ThreadListLock lock; - UNIMPLEMENTED(FATAL); - //Thread* thread = Thread::FromManagedThread(env, javaThread); - //if (thread != NULL) { - //dvmThreadInterrupt(thread); - //} + Thread* thread = Thread::FromManagedThread(env, javaThread); + if (thread != NULL) { + thread->Interrupt(); + } } void Thread_nativeSetName(JNIEnv* env, jobject javaThread, jstring javaName) { ThreadListLock lock; - UNIMPLEMENTED(WARNING); + // TODO: needed for debugging (DDMS) support. //Thread* thread = Thread::FromManagedThread(env, javaThread); //StringObject* nameStr = (StringObject*) dvmDecodeIndirectRef(env, javaName); //int threadId = (thread != NULL) ? thread->threadId : -1; |