src/share/vm/runtime/reflection.cpp

Print this page




 791       fd->has_generic_signature()) {
 792     Symbol*  gs = fd->generic_signature();
 793     Handle sig = java_lang_String::create_from_symbol(gs, CHECK_NULL);
 794     java_lang_reflect_Field::set_signature(rh(), sig());
 795   }
 796   if (java_lang_reflect_Field::has_annotations_field()) {
 797     typeArrayOop an_oop = Annotations::make_java_array(fd->annotations(), CHECK_NULL);
 798     java_lang_reflect_Field::set_annotations(rh(), an_oop);
 799   }
 800   if (java_lang_reflect_Field::has_type_annotations_field()) {
 801     typeArrayOop an_oop = Annotations::make_java_array(fd->type_annotations(), CHECK_NULL);
 802     java_lang_reflect_Field::set_type_annotations(rh(), an_oop);
 803   }
 804   return rh();
 805 }
 806 
 807 oop Reflection::new_parameter(Handle method, int index, Symbol* sym,
 808                               int flags, TRAPS) {
 809   Handle name;
 810 
 811   // A null symbol here translates to the empty string
 812   if(NULL != sym) {
 813     name = java_lang_String::create_from_symbol(sym, CHECK_NULL);
 814   } else {
 815     name = java_lang_String::create_from_str("", CHECK_NULL);
 816   }
 817 
 818   Handle rh = java_lang_reflect_Parameter::create(CHECK_NULL);
 819   java_lang_reflect_Parameter::set_name(rh(), name());
 820   java_lang_reflect_Parameter::set_modifiers(rh(), flags);
 821   java_lang_reflect_Parameter::set_executable(rh(), method());
 822   java_lang_reflect_Parameter::set_index(rh(), index);
 823   return rh();
 824 }
 825 
 826 
 827 methodHandle Reflection::resolve_interface_call(instanceKlassHandle klass, methodHandle method,
 828                                                 KlassHandle recv_klass, Handle receiver, TRAPS) {
 829   assert(!method.is_null() , "method should not be null");
 830 
 831   CallInfo info;
 832   Symbol*  signature  = method->signature();
 833   Symbol*  name       = method->name();
 834   LinkResolver::resolve_interface_call(info, receiver, recv_klass, klass,
 835                                        name, signature,




 791       fd->has_generic_signature()) {
 792     Symbol*  gs = fd->generic_signature();
 793     Handle sig = java_lang_String::create_from_symbol(gs, CHECK_NULL);
 794     java_lang_reflect_Field::set_signature(rh(), sig());
 795   }
 796   if (java_lang_reflect_Field::has_annotations_field()) {
 797     typeArrayOop an_oop = Annotations::make_java_array(fd->annotations(), CHECK_NULL);
 798     java_lang_reflect_Field::set_annotations(rh(), an_oop);
 799   }
 800   if (java_lang_reflect_Field::has_type_annotations_field()) {
 801     typeArrayOop an_oop = Annotations::make_java_array(fd->type_annotations(), CHECK_NULL);
 802     java_lang_reflect_Field::set_type_annotations(rh(), an_oop);
 803   }
 804   return rh();
 805 }
 806 
 807 oop Reflection::new_parameter(Handle method, int index, Symbol* sym,
 808                               int flags, TRAPS) {
 809   Handle name;
 810 

 811   if(NULL != sym) {
 812     name = java_lang_String::create_from_symbol(sym, CHECK_NULL);
 813   } else {
 814     name = NULL;
 815   }
 816 
 817   Handle rh = java_lang_reflect_Parameter::create(CHECK_NULL);
 818   java_lang_reflect_Parameter::set_name(rh(), name());
 819   java_lang_reflect_Parameter::set_modifiers(rh(), flags);
 820   java_lang_reflect_Parameter::set_executable(rh(), method());
 821   java_lang_reflect_Parameter::set_index(rh(), index);
 822   return rh();
 823 }
 824 
 825 
 826 methodHandle Reflection::resolve_interface_call(instanceKlassHandle klass, methodHandle method,
 827                                                 KlassHandle recv_klass, Handle receiver, TRAPS) {
 828   assert(!method.is_null() , "method should not be null");
 829 
 830   CallInfo info;
 831   Symbol*  signature  = method->signature();
 832   Symbol*  name       = method->name();
 833   LinkResolver::resolve_interface_call(info, receiver, recv_klass, klass,
 834                                        name, signature,