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
|