Mercurial > hg > graal-jvmci-8
comparison src/share/vm/prims/jvmtiEnv.cpp @ 1149:0579c695832f
Merge
author | ysr |
---|---|
date | Sat, 09 Jan 2010 09:01:41 -0800 |
parents | 75bd253e25dd 9b9c1ee9b3f6 |
children | c18cbe5936b8 |
comparison
equal
deleted
inserted
replaced
1148:05b775309e59 | 1149:0579c695832f |
---|---|
131 | 131 |
132 oop thread_oop = JNIHandles::resolve_external_guard(thread); | 132 oop thread_oop = JNIHandles::resolve_external_guard(thread); |
133 if (thread_oop == NULL) { | 133 if (thread_oop == NULL) { |
134 return JVMTI_ERROR_INVALID_THREAD; | 134 return JVMTI_ERROR_INVALID_THREAD; |
135 } | 135 } |
136 if (!thread_oop->is_a(SystemDictionary::thread_klass())) { | 136 if (!thread_oop->is_a(SystemDictionary::Thread_klass())) { |
137 return JVMTI_ERROR_INVALID_THREAD; | 137 return JVMTI_ERROR_INVALID_THREAD; |
138 } | 138 } |
139 JavaThread* java_thread = java_lang_Thread::thread(thread_oop); | 139 JavaThread* java_thread = java_lang_Thread::thread(thread_oop); |
140 if (java_thread == NULL) { | 140 if (java_thread == NULL) { |
141 return JVMTI_ERROR_THREAD_NOT_ALIVE; | 141 return JVMTI_ERROR_THREAD_NOT_ALIVE; |
197 jclass jcls = classes[index]; | 197 jclass jcls = classes[index]; |
198 oop k_mirror = JNIHandles::resolve_external_guard(jcls); | 198 oop k_mirror = JNIHandles::resolve_external_guard(jcls); |
199 if (k_mirror == NULL) { | 199 if (k_mirror == NULL) { |
200 return JVMTI_ERROR_INVALID_CLASS; | 200 return JVMTI_ERROR_INVALID_CLASS; |
201 } | 201 } |
202 if (!k_mirror->is_a(SystemDictionary::class_klass())) { | 202 if (!k_mirror->is_a(SystemDictionary::Class_klass())) { |
203 return JVMTI_ERROR_INVALID_CLASS; | 203 return JVMTI_ERROR_INVALID_CLASS; |
204 } | 204 } |
205 | 205 |
206 if (java_lang_Class::is_primitive(k_mirror)) { | 206 if (java_lang_Class::is_primitive(k_mirror)) { |
207 return JVMTI_ERROR_UNMODIFIABLE_CLASS; | 207 return JVMTI_ERROR_UNMODIFIABLE_CLASS; |
264 jvmtiError | 264 jvmtiError |
265 JvmtiEnv::GetObjectSize(jobject object, jlong* size_ptr) { | 265 JvmtiEnv::GetObjectSize(jobject object, jlong* size_ptr) { |
266 oop mirror = JNIHandles::resolve_external_guard(object); | 266 oop mirror = JNIHandles::resolve_external_guard(object); |
267 NULL_CHECK(mirror, JVMTI_ERROR_INVALID_OBJECT); | 267 NULL_CHECK(mirror, JVMTI_ERROR_INVALID_OBJECT); |
268 | 268 |
269 if (mirror->klass() == SystemDictionary::class_klass()) { | 269 if (mirror->klass() == SystemDictionary::Class_klass()) { |
270 if (!java_lang_Class::is_primitive(mirror)) { | 270 if (!java_lang_Class::is_primitive(mirror)) { |
271 mirror = java_lang_Class::as_klassOop(mirror); | 271 mirror = java_lang_Class::as_klassOop(mirror); |
272 assert(mirror != NULL, "class for non-primitive mirror must exist"); | 272 assert(mirror != NULL, "class for non-primitive mirror must exist"); |
273 } | 273 } |
274 } | 274 } |
325 if (event_thread != NULL) { | 325 if (event_thread != NULL) { |
326 oop thread_oop = JNIHandles::resolve_external_guard(event_thread); | 326 oop thread_oop = JNIHandles::resolve_external_guard(event_thread); |
327 if (thread_oop == NULL) { | 327 if (thread_oop == NULL) { |
328 return JVMTI_ERROR_INVALID_THREAD; | 328 return JVMTI_ERROR_INVALID_THREAD; |
329 } | 329 } |
330 if (!thread_oop->is_a(SystemDictionary::thread_klass())) { | 330 if (!thread_oop->is_a(SystemDictionary::Thread_klass())) { |
331 return JVMTI_ERROR_INVALID_THREAD; | 331 return JVMTI_ERROR_INVALID_THREAD; |
332 } | 332 } |
333 java_thread = java_lang_Thread::thread(thread_oop); | 333 java_thread = java_lang_Thread::thread(thread_oop); |
334 if (java_thread == NULL) { | 334 if (java_thread == NULL) { |
335 return JVMTI_ERROR_THREAD_NOT_ALIVE; | 335 return JVMTI_ERROR_THREAD_NOT_ALIVE; |
629 thread_oop = JavaThread::current()->threadObj(); | 629 thread_oop = JavaThread::current()->threadObj(); |
630 } else { | 630 } else { |
631 thread_oop = JNIHandles::resolve_external_guard(thread); | 631 thread_oop = JNIHandles::resolve_external_guard(thread); |
632 } | 632 } |
633 | 633 |
634 if (thread_oop == NULL || !thread_oop->is_a(SystemDictionary::thread_klass())) { | 634 if (thread_oop == NULL || !thread_oop->is_a(SystemDictionary::Thread_klass())) { |
635 return JVMTI_ERROR_INVALID_THREAD; | 635 return JVMTI_ERROR_INVALID_THREAD; |
636 } | 636 } |
637 | 637 |
638 // get most state bits | 638 // get most state bits |
639 state = (jint)java_lang_Thread::get_thread_status(thread_oop); | 639 state = (jint)java_lang_Thread::get_thread_status(thread_oop); |
867 // Threads_lock NOT held | 867 // Threads_lock NOT held |
868 // thread - NOT pre-checked | 868 // thread - NOT pre-checked |
869 jvmtiError | 869 jvmtiError |
870 JvmtiEnv::InterruptThread(jthread thread) { | 870 JvmtiEnv::InterruptThread(jthread thread) { |
871 oop thread_oop = JNIHandles::resolve_external_guard(thread); | 871 oop thread_oop = JNIHandles::resolve_external_guard(thread); |
872 if (thread_oop == NULL || !thread_oop->is_a(SystemDictionary::thread_klass())) | 872 if (thread_oop == NULL || !thread_oop->is_a(SystemDictionary::Thread_klass())) |
873 return JVMTI_ERROR_INVALID_THREAD; | 873 return JVMTI_ERROR_INVALID_THREAD; |
874 | 874 |
875 JavaThread* current_thread = JavaThread::current(); | 875 JavaThread* current_thread = JavaThread::current(); |
876 | 876 |
877 // Todo: this is a duplicate of JVM_Interrupt; share code in future | 877 // Todo: this is a duplicate of JVM_Interrupt; share code in future |
904 if (thread == NULL) { | 904 if (thread == NULL) { |
905 thread_oop = current_thread->threadObj(); | 905 thread_oop = current_thread->threadObj(); |
906 } else { | 906 } else { |
907 thread_oop = JNIHandles::resolve_external_guard(thread); | 907 thread_oop = JNIHandles::resolve_external_guard(thread); |
908 } | 908 } |
909 if (thread_oop == NULL || !thread_oop->is_a(SystemDictionary::thread_klass())) | 909 if (thread_oop == NULL || !thread_oop->is_a(SystemDictionary::Thread_klass())) |
910 return JVMTI_ERROR_INVALID_THREAD; | 910 return JVMTI_ERROR_INVALID_THREAD; |
911 | 911 |
912 Handle thread_obj(current_thread, thread_oop); | 912 Handle thread_obj(current_thread, thread_oop); |
913 typeArrayHandle name; | 913 typeArrayHandle name; |
914 ThreadPriority priority; | 914 ThreadPriority priority; |
1070 // proc - pre-checked for NULL | 1070 // proc - pre-checked for NULL |
1071 // arg - NULL is a valid value, must be checked | 1071 // arg - NULL is a valid value, must be checked |
1072 jvmtiError | 1072 jvmtiError |
1073 JvmtiEnv::RunAgentThread(jthread thread, jvmtiStartFunction proc, const void* arg, jint priority) { | 1073 JvmtiEnv::RunAgentThread(jthread thread, jvmtiStartFunction proc, const void* arg, jint priority) { |
1074 oop thread_oop = JNIHandles::resolve_external_guard(thread); | 1074 oop thread_oop = JNIHandles::resolve_external_guard(thread); |
1075 if (thread_oop == NULL || !thread_oop->is_a(SystemDictionary::thread_klass())) { | 1075 if (thread_oop == NULL || !thread_oop->is_a(SystemDictionary::Thread_klass())) { |
1076 return JVMTI_ERROR_INVALID_THREAD; | 1076 return JVMTI_ERROR_INVALID_THREAD; |
1077 } | 1077 } |
1078 if (priority < JVMTI_THREAD_MIN_PRIORITY || priority > JVMTI_THREAD_MAX_PRIORITY) { | 1078 if (priority < JVMTI_THREAD_MIN_PRIORITY || priority > JVMTI_THREAD_MAX_PRIORITY) { |
1079 return JVMTI_ERROR_INVALID_PRIORITY; | 1079 return JVMTI_ERROR_INVALID_PRIORITY; |
1080 } | 1080 } |