comparison src/share/vm/prims/jni.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 896da934748c
children c8a467bf56ad
comparison
equal deleted inserted replaced
1140:1f6d42899c3a 1142:4ce7240d622c
394 // method is a handle to a java.lang.reflect.Method object 394 // method is a handle to a java.lang.reflect.Method object
395 oop reflected = JNIHandles::resolve_non_null(method); 395 oop reflected = JNIHandles::resolve_non_null(method);
396 oop mirror = NULL; 396 oop mirror = NULL;
397 int slot = 0; 397 int slot = 0;
398 398
399 if (reflected->klass() == SystemDictionary::reflect_constructor_klass()) { 399 if (reflected->klass() == SystemDictionary::reflect_Constructor_klass()) {
400 mirror = java_lang_reflect_Constructor::clazz(reflected); 400 mirror = java_lang_reflect_Constructor::clazz(reflected);
401 slot = java_lang_reflect_Constructor::slot(reflected); 401 slot = java_lang_reflect_Constructor::slot(reflected);
402 } else { 402 } else {
403 assert(reflected->klass() == SystemDictionary::reflect_method_klass(), "wrong type"); 403 assert(reflected->klass() == SystemDictionary::reflect_Method_klass(), "wrong type");
404 mirror = java_lang_reflect_Method::clazz(reflected); 404 mirror = java_lang_reflect_Method::clazz(reflected);
405 slot = java_lang_reflect_Method::slot(reflected); 405 slot = java_lang_reflect_Method::slot(reflected);
406 } 406 }
407 klassOop k = java_lang_Class::as_klassOop(mirror); 407 klassOop k = java_lang_Class::as_klassOop(mirror);
408 408
494 494
495 // return mirror for superclass 495 // return mirror for superclass
496 klassOop super = Klass::cast(k)->java_super(); 496 klassOop super = Klass::cast(k)->java_super();
497 // super2 is the value computed by the compiler's getSuperClass intrinsic: 497 // super2 is the value computed by the compiler's getSuperClass intrinsic:
498 debug_only(klassOop super2 = ( Klass::cast(k)->oop_is_javaArray() 498 debug_only(klassOop super2 = ( Klass::cast(k)->oop_is_javaArray()
499 ? SystemDictionary::object_klass() 499 ? SystemDictionary::Object_klass()
500 : Klass::cast(k)->super() ) ); 500 : Klass::cast(k)->super() ) );
501 assert(super == super2, 501 assert(super == super2,
502 "java_super computation depends on interface, array, other super"); 502 "java_super computation depends on interface, array, other super");
503 obj = (super == NULL) ? NULL : (jclass) JNIHandles::make_local(Klass::cast(super)->java_mirror()); 503 obj = (super == NULL) ? NULL : (jclass) JNIHandles::make_local(Klass::cast(super)->java_mirror());
504 return obj; 504 return obj;
582 JNIWrapper("ExceptionDescribe"); 582 JNIWrapper("ExceptionDescribe");
583 DTRACE_PROBE1(hotspot_jni, ExceptionDescribe__entry, env); 583 DTRACE_PROBE1(hotspot_jni, ExceptionDescribe__entry, env);
584 if (thread->has_pending_exception()) { 584 if (thread->has_pending_exception()) {
585 Handle ex(thread, thread->pending_exception()); 585 Handle ex(thread, thread->pending_exception());
586 thread->clear_pending_exception(); 586 thread->clear_pending_exception();
587 if (ex->is_a(SystemDictionary::threaddeath_klass())) { 587 if (ex->is_a(SystemDictionary::ThreadDeath_klass())) {
588 // Don't print anything if we are being killed. 588 // Don't print anything if we are being killed.
589 } else { 589 } else {
590 jio_fprintf(defaultStream::error_stream(), "Exception "); 590 jio_fprintf(defaultStream::error_stream(), "Exception ");
591 if (thread != NULL && thread->threadObj() != NULL) { 591 if (thread != NULL && thread->threadObj() != NULL) {
592 ResourceMark rm(THREAD); 592 ResourceMark rm(THREAD);
593 jio_fprintf(defaultStream::error_stream(), 593 jio_fprintf(defaultStream::error_stream(),
594 "in thread \"%s\" ", thread->get_thread_name()); 594 "in thread \"%s\" ", thread->get_thread_name());
595 } 595 }
596 if (ex->is_a(SystemDictionary::throwable_klass())) { 596 if (ex->is_a(SystemDictionary::Throwable_klass())) {
597 JavaValue result(T_VOID); 597 JavaValue result(T_VOID);
598 JavaCalls::call_virtual(&result, 598 JavaCalls::call_virtual(&result,
599 ex, 599 ex,
600 KlassHandle(THREAD, 600 KlassHandle(THREAD,
601 SystemDictionary::throwable_klass()), 601 SystemDictionary::Throwable_klass()),
602 vmSymbolHandles::printStackTrace_name(), 602 vmSymbolHandles::printStackTrace_name(),
603 vmSymbolHandles::void_method_signature(), 603 vmSymbolHandles::void_method_signature(),
604 THREAD); 604 THREAD);
605 // If an exception is thrown in the call it gets thrown away. Not much 605 // If an exception is thrown in the call it gets thrown away. Not much
606 // we can do with it. The native code that calls this, does not check 606 // we can do with it. The native code that calls this, does not check