src/share/vm/prims/jvmtiEnv.cpp

changeset 1584
0579c695832f
parent 1582
75bd253e25dd
parent 1579
9b9c1ee9b3f6
child 1907
c18cbe5936b8
equal deleted inserted replaced
1583:05b775309e59 1584: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 }

mercurial