< prev index next >

src/share/vm/runtime/reflection.cpp

Print this page




 813     java_lang_reflect_Parameter::set_name(rh(), name());
 814   } else {
 815     java_lang_reflect_Parameter::set_name(rh(), NULL);
 816   }
 817 
 818   java_lang_reflect_Parameter::set_modifiers(rh(), flags);
 819   java_lang_reflect_Parameter::set_executable(rh(), method());
 820   java_lang_reflect_Parameter::set_index(rh(), index);
 821   return rh();
 822 }
 823 
 824 
 825 methodHandle Reflection::resolve_interface_call(instanceKlassHandle klass, const methodHandle& method,
 826                                                 KlassHandle recv_klass, Handle receiver, TRAPS) {
 827   assert(!method.is_null() , "method should not be null");
 828 
 829   CallInfo info;
 830   Symbol*  signature  = method->signature();
 831   Symbol*  name       = method->name();
 832   LinkResolver::resolve_interface_call(info, receiver, recv_klass,
 833                                        LinkInfo(klass, name, signature, KlassHandle(), false),
 834                                        true,
 835                                        CHECK_(methodHandle()));
 836   return info.selected_method();
 837 }
 838 
 839 
 840 oop Reflection::invoke(instanceKlassHandle klass, const methodHandle& reflected_method,
 841                        Handle receiver, bool override, objArrayHandle ptypes,
 842                        BasicType rtype, objArrayHandle args, bool is_method_invoke, TRAPS) {
 843   ResourceMark rm(THREAD);
 844 
 845   methodHandle method;      // actual method to invoke
 846   KlassHandle target_klass; // target klass, receiver's klass for non-static
 847 
 848   // Ensure klass is initialized
 849   klass->initialize(CHECK_NULL);
 850 
 851   bool is_static = reflected_method->is_static();
 852   if (is_static) {
 853     // ignore receiver argument




 813     java_lang_reflect_Parameter::set_name(rh(), name());
 814   } else {
 815     java_lang_reflect_Parameter::set_name(rh(), NULL);
 816   }
 817 
 818   java_lang_reflect_Parameter::set_modifiers(rh(), flags);
 819   java_lang_reflect_Parameter::set_executable(rh(), method());
 820   java_lang_reflect_Parameter::set_index(rh(), index);
 821   return rh();
 822 }
 823 
 824 
 825 methodHandle Reflection::resolve_interface_call(instanceKlassHandle klass, const methodHandle& method,
 826                                                 KlassHandle recv_klass, Handle receiver, TRAPS) {
 827   assert(!method.is_null() , "method should not be null");
 828 
 829   CallInfo info;
 830   Symbol*  signature  = method->signature();
 831   Symbol*  name       = method->name();
 832   LinkResolver::resolve_interface_call(info, receiver, recv_klass,
 833                                        LinkInfo(klass, name, signature),
 834                                        true,
 835                                        CHECK_(methodHandle()));
 836   return info.selected_method();
 837 }
 838 
 839 
 840 oop Reflection::invoke(instanceKlassHandle klass, const methodHandle& reflected_method,
 841                        Handle receiver, bool override, objArrayHandle ptypes,
 842                        BasicType rtype, objArrayHandle args, bool is_method_invoke, TRAPS) {
 843   ResourceMark rm(THREAD);
 844 
 845   methodHandle method;      // actual method to invoke
 846   KlassHandle target_klass; // target klass, receiver's klass for non-static
 847 
 848   // Ensure klass is initialized
 849   klass->initialize(CHECK_NULL);
 850 
 851   bool is_static = reflected_method->is_static();
 852   if (is_static) {
 853     // ignore receiver argument


< prev index next >