comparison src/share/vm/prims/jvmtiEnv.cpp @ 1142:4ce7240d622c

6914300: ciEnv should export all well known classes Reviewed-by: kvn, twisti
author never
date Wed, 06 Jan 2010 14:22:39 -0800
parents ea20d7ce26b0
children 9b9c1ee9b3f6
comparison
equal deleted inserted replaced
1140:1f6d42899c3a 1142:4ce7240d622c
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 }