summaryrefslogtreecommitdiffstats
path: root/src/java_lang_Thread.cc
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2011-09-15 17:45:30 -0700
committerElliott Hughes <enh@google.com>2011-09-16 10:56:44 -0700
commit5f79133a435ebcb20000370d56046fe01201dd80 (patch)
tree974c4610e30e8cc950e6e461e66b939361cb2bbe /src/java_lang_Thread.cc
parent78128a63b2615744760b7f8ab83df9764a5d4a95 (diff)
downloadart-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.cc29
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;