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; |
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 } |