981
982 java_lang_reflect_Parameter::set_modifiers(rh(), flags);
983 java_lang_reflect_Parameter::set_executable(rh(), method());
984 java_lang_reflect_Parameter::set_index(rh(), index);
985 return rh();
986 }
987
988
989 static methodHandle resolve_interface_call(instanceKlassHandle klass,
990 const methodHandle& method,
991 KlassHandle recv_klass,
992 Handle receiver,
993 TRAPS) {
994
995 assert(!method.is_null() , "method should not be null");
996
997 CallInfo info;
998 Symbol* signature = method->signature();
999 Symbol* name = method->name();
1000 LinkResolver::resolve_interface_call(info, receiver, recv_klass,
1001 LinkInfo(klass, name, signature, KlassHandle(), false),
1002 true,
1003 CHECK_(methodHandle()));
1004 return info.selected_method();
1005 }
1006
1007 // Conversion
1008 static BasicType basic_type_mirror_to_basic_type(oop basic_type_mirror, TRAPS) {
1009 assert(java_lang_Class::is_primitive(basic_type_mirror),
1010 "just checking");
1011 return java_lang_Class::primitive_type(basic_type_mirror);
1012 }
1013
1014 // Narrowing of basic types. Used to create correct jvalues for
1015 // boolean, byte, char and short return return values from interpreter
1016 // which are returned as ints. Throws IllegalArgumentException.
1017 static void narrow(jvalue* value, BasicType narrow_type, TRAPS) {
1018 switch (narrow_type) {
1019 case T_BOOLEAN:
1020 value->z = (jboolean) (value->i & 1);
1021 return;
|
981
982 java_lang_reflect_Parameter::set_modifiers(rh(), flags);
983 java_lang_reflect_Parameter::set_executable(rh(), method());
984 java_lang_reflect_Parameter::set_index(rh(), index);
985 return rh();
986 }
987
988
989 static methodHandle resolve_interface_call(instanceKlassHandle klass,
990 const methodHandle& method,
991 KlassHandle recv_klass,
992 Handle receiver,
993 TRAPS) {
994
995 assert(!method.is_null() , "method should not be null");
996
997 CallInfo info;
998 Symbol* signature = method->signature();
999 Symbol* name = method->name();
1000 LinkResolver::resolve_interface_call(info, receiver, recv_klass,
1001 LinkInfo(klass, name, signature, KlassHandle(), NULL, false),
1002 true,
1003 CHECK_(methodHandle()));
1004 return info.selected_method();
1005 }
1006
1007 // Conversion
1008 static BasicType basic_type_mirror_to_basic_type(oop basic_type_mirror, TRAPS) {
1009 assert(java_lang_Class::is_primitive(basic_type_mirror),
1010 "just checking");
1011 return java_lang_Class::primitive_type(basic_type_mirror);
1012 }
1013
1014 // Narrowing of basic types. Used to create correct jvalues for
1015 // boolean, byte, char and short return return values from interpreter
1016 // which are returned as ints. Throws IllegalArgumentException.
1017 static void narrow(jvalue* value, BasicType narrow_type, TRAPS) {
1018 switch (narrow_type) {
1019 case T_BOOLEAN:
1020 value->z = (jboolean) (value->i & 1);
1021 return;
|