Mercurial > hg > truffle
comparison src/share/vm/prims/jvmtiEnv.cpp @ 1144:9b9c1ee9b3f6
Merge
author | iveresov |
---|---|
date | Wed, 06 Jan 2010 22:21:39 -0800 |
parents | dcb15a6f342d 4ce7240d622c |
children | 0579c695832f |
comparison
equal
deleted
inserted
replaced
1129:a5a6adfca6ec | 1144:9b9c1ee9b3f6 |
---|---|
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; |
630 thread_oop = JavaThread::current()->threadObj(); | 630 thread_oop = JavaThread::current()->threadObj(); |
631 } else { | 631 } else { |
632 thread_oop = JNIHandles::resolve_external_guard(thread); | 632 thread_oop = JNIHandles::resolve_external_guard(thread); |
633 } | 633 } |
634 | 634 |
635 if (thread_oop == NULL || !thread_oop->is_a(SystemDictionary::thread_klass())) { | 635 if (thread_oop == NULL || !thread_oop->is_a(SystemDictionary::Thread_klass())) { |
636 return JVMTI_ERROR_INVALID_THREAD; | 636 return JVMTI_ERROR_INVALID_THREAD; |
637 } | 637 } |
638 | 638 |
639 // get most state bits | 639 // get most state bits |
640 state = (jint)java_lang_Thread::get_thread_status(thread_oop); | 640 state = (jint)java_lang_Thread::get_thread_status(thread_oop); |
868 // Threads_lock NOT held | 868 // Threads_lock NOT held |
869 // thread - NOT pre-checked | 869 // thread - NOT pre-checked |
870 jvmtiError | 870 jvmtiError |
871 JvmtiEnv::InterruptThread(jthread thread) { | 871 JvmtiEnv::InterruptThread(jthread thread) { |
872 oop thread_oop = JNIHandles::resolve_external_guard(thread); | 872 oop thread_oop = JNIHandles::resolve_external_guard(thread); |
873 if (thread_oop == NULL || !thread_oop->is_a(SystemDictionary::thread_klass())) | 873 if (thread_oop == NULL || !thread_oop->is_a(SystemDictionary::Thread_klass())) |
874 return JVMTI_ERROR_INVALID_THREAD; | 874 return JVMTI_ERROR_INVALID_THREAD; |
875 | 875 |
876 JavaThread* current_thread = JavaThread::current(); | 876 JavaThread* current_thread = JavaThread::current(); |
877 | 877 |
878 // Todo: this is a duplicate of JVM_Interrupt; share code in future | 878 // Todo: this is a duplicate of JVM_Interrupt; share code in future |
905 if (thread == NULL) { | 905 if (thread == NULL) { |
906 thread_oop = current_thread->threadObj(); | 906 thread_oop = current_thread->threadObj(); |
907 } else { | 907 } else { |
908 thread_oop = JNIHandles::resolve_external_guard(thread); | 908 thread_oop = JNIHandles::resolve_external_guard(thread); |
909 } | 909 } |
910 if (thread_oop == NULL || !thread_oop->is_a(SystemDictionary::thread_klass())) | 910 if (thread_oop == NULL || !thread_oop->is_a(SystemDictionary::Thread_klass())) |
911 return JVMTI_ERROR_INVALID_THREAD; | 911 return JVMTI_ERROR_INVALID_THREAD; |
912 | 912 |
913 Handle thread_obj(current_thread, thread_oop); | 913 Handle thread_obj(current_thread, thread_oop); |
914 typeArrayHandle name; | 914 typeArrayHandle name; |
915 ThreadPriority priority; | 915 ThreadPriority priority; |
1071 // proc - pre-checked for NULL | 1071 // proc - pre-checked for NULL |
1072 // arg - NULL is a valid value, must be checked | 1072 // arg - NULL is a valid value, must be checked |
1073 jvmtiError | 1073 jvmtiError |
1074 JvmtiEnv::RunAgentThread(jthread thread, jvmtiStartFunction proc, const void* arg, jint priority) { | 1074 JvmtiEnv::RunAgentThread(jthread thread, jvmtiStartFunction proc, const void* arg, jint priority) { |
1075 oop thread_oop = JNIHandles::resolve_external_guard(thread); | 1075 oop thread_oop = JNIHandles::resolve_external_guard(thread); |
1076 if (thread_oop == NULL || !thread_oop->is_a(SystemDictionary::thread_klass())) { | 1076 if (thread_oop == NULL || !thread_oop->is_a(SystemDictionary::Thread_klass())) { |
1077 return JVMTI_ERROR_INVALID_THREAD; | 1077 return JVMTI_ERROR_INVALID_THREAD; |
1078 } | 1078 } |
1079 if (priority < JVMTI_THREAD_MIN_PRIORITY || priority > JVMTI_THREAD_MAX_PRIORITY) { | 1079 if (priority < JVMTI_THREAD_MIN_PRIORITY || priority > JVMTI_THREAD_MAX_PRIORITY) { |
1080 return JVMTI_ERROR_INVALID_PRIORITY; | 1080 return JVMTI_ERROR_INVALID_PRIORITY; |
1081 } | 1081 } |