equal
deleted
inserted
replaced
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; |
618 thread_oop = JavaThread::current()->threadObj(); |
618 thread_oop = JavaThread::current()->threadObj(); |
619 } else { |
619 } else { |
620 thread_oop = JNIHandles::resolve_external_guard(thread); |
620 thread_oop = JNIHandles::resolve_external_guard(thread); |
621 } |
621 } |
622 |
622 |
623 if (thread_oop == NULL || !thread_oop->is_a(SystemDictionary::thread_klass())) { |
623 if (thread_oop == NULL || !thread_oop->is_a(SystemDictionary::Thread_klass())) { |
624 return JVMTI_ERROR_INVALID_THREAD; |
624 return JVMTI_ERROR_INVALID_THREAD; |
625 } |
625 } |
626 |
626 |
627 // get most state bits |
627 // get most state bits |
628 state = (jint)java_lang_Thread::get_thread_status(thread_oop); |
628 state = (jint)java_lang_Thread::get_thread_status(thread_oop); |
856 // Threads_lock NOT held |
856 // Threads_lock NOT held |
857 // thread - NOT pre-checked |
857 // thread - NOT pre-checked |
858 jvmtiError |
858 jvmtiError |
859 JvmtiEnv::InterruptThread(jthread thread) { |
859 JvmtiEnv::InterruptThread(jthread thread) { |
860 oop thread_oop = JNIHandles::resolve_external_guard(thread); |
860 oop thread_oop = JNIHandles::resolve_external_guard(thread); |
861 if (thread_oop == NULL || !thread_oop->is_a(SystemDictionary::thread_klass())) |
861 if (thread_oop == NULL || !thread_oop->is_a(SystemDictionary::Thread_klass())) |
862 return JVMTI_ERROR_INVALID_THREAD; |
862 return JVMTI_ERROR_INVALID_THREAD; |
863 |
863 |
864 JavaThread* current_thread = JavaThread::current(); |
864 JavaThread* current_thread = JavaThread::current(); |
865 |
865 |
866 // Todo: this is a duplicate of JVM_Interrupt; share code in future |
866 // Todo: this is a duplicate of JVM_Interrupt; share code in future |
893 if (thread == NULL) { |
893 if (thread == NULL) { |
894 thread_oop = current_thread->threadObj(); |
894 thread_oop = current_thread->threadObj(); |
895 } else { |
895 } else { |
896 thread_oop = JNIHandles::resolve_external_guard(thread); |
896 thread_oop = JNIHandles::resolve_external_guard(thread); |
897 } |
897 } |
898 if (thread_oop == NULL || !thread_oop->is_a(SystemDictionary::thread_klass())) |
898 if (thread_oop == NULL || !thread_oop->is_a(SystemDictionary::Thread_klass())) |
899 return JVMTI_ERROR_INVALID_THREAD; |
899 return JVMTI_ERROR_INVALID_THREAD; |
900 |
900 |
901 Handle thread_obj(current_thread, thread_oop); |
901 Handle thread_obj(current_thread, thread_oop); |
902 typeArrayHandle name; |
902 typeArrayHandle name; |
903 ThreadPriority priority; |
903 ThreadPriority priority; |
1059 // proc - pre-checked for NULL |
1059 // proc - pre-checked for NULL |
1060 // arg - NULL is a valid value, must be checked |
1060 // arg - NULL is a valid value, must be checked |
1061 jvmtiError |
1061 jvmtiError |
1062 JvmtiEnv::RunAgentThread(jthread thread, jvmtiStartFunction proc, const void* arg, jint priority) { |
1062 JvmtiEnv::RunAgentThread(jthread thread, jvmtiStartFunction proc, const void* arg, jint priority) { |
1063 oop thread_oop = JNIHandles::resolve_external_guard(thread); |
1063 oop thread_oop = JNIHandles::resolve_external_guard(thread); |
1064 if (thread_oop == NULL || !thread_oop->is_a(SystemDictionary::thread_klass())) { |
1064 if (thread_oop == NULL || !thread_oop->is_a(SystemDictionary::Thread_klass())) { |
1065 return JVMTI_ERROR_INVALID_THREAD; |
1065 return JVMTI_ERROR_INVALID_THREAD; |
1066 } |
1066 } |
1067 if (priority < JVMTI_THREAD_MIN_PRIORITY || priority > JVMTI_THREAD_MAX_PRIORITY) { |
1067 if (priority < JVMTI_THREAD_MIN_PRIORITY || priority > JVMTI_THREAD_MAX_PRIORITY) { |
1068 return JVMTI_ERROR_INVALID_PRIORITY; |
1068 return JVMTI_ERROR_INVALID_PRIORITY; |
1069 } |
1069 } |