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 }