812 if (intern_name) {
813 // intern_name is only true with UseNewReflection
814 oop name_oop = StringTable::intern(field_name, CHECK_NULL);
815 name = Handle(THREAD, name_oop);
816 } else {
817 name = java_lang_String::create_from_symbol(field_name, CHECK_NULL);
818 }
819 Symbol* signature = fd->signature();
820 KlassHandle holder (THREAD, fd->field_holder());
821 Handle type = new_type(signature, holder, CHECK_NULL);
822 Handle rh = java_lang_reflect_Field::create(CHECK_NULL);
823
824 java_lang_reflect_Field::set_clazz(rh(), Klass::cast(fd->field_holder())->java_mirror());
825 java_lang_reflect_Field::set_slot(rh(), fd->index());
826 java_lang_reflect_Field::set_name(rh(), name());
827 java_lang_reflect_Field::set_type(rh(), type());
828 // Note the ACC_ANNOTATION bit, which is a per-class access flag, is never set here.
829 java_lang_reflect_Field::set_modifiers(rh(), fd->access_flags().as_int() & JVM_RECOGNIZED_FIELD_MODIFIERS);
830 java_lang_reflect_Field::set_override(rh(), false);
831 if (java_lang_reflect_Field::has_signature_field() &&
832 fd->generic_signature() != NULL) {
833 Symbol* gs = fd->generic_signature();
834 Handle sig = java_lang_String::create_from_symbol(gs, CHECK_NULL);
835 java_lang_reflect_Field::set_signature(rh(), sig());
836 }
837 if (java_lang_reflect_Field::has_annotations_field()) {
838 java_lang_reflect_Field::set_annotations(rh(), fd->annotations());
839 }
840 return rh();
841 }
842
843
844 methodHandle Reflection::resolve_interface_call(instanceKlassHandle klass, methodHandle method,
845 KlassHandle recv_klass, Handle receiver, TRAPS) {
846 assert(!method.is_null() , "method should not be null");
847
848 CallInfo info;
849 Symbol* signature = method->signature();
850 Symbol* name = method->name();
851 LinkResolver::resolve_interface_call(info, receiver, recv_klass, klass,
852 name, signature,
|
812 if (intern_name) {
813 // intern_name is only true with UseNewReflection
814 oop name_oop = StringTable::intern(field_name, CHECK_NULL);
815 name = Handle(THREAD, name_oop);
816 } else {
817 name = java_lang_String::create_from_symbol(field_name, CHECK_NULL);
818 }
819 Symbol* signature = fd->signature();
820 KlassHandle holder (THREAD, fd->field_holder());
821 Handle type = new_type(signature, holder, CHECK_NULL);
822 Handle rh = java_lang_reflect_Field::create(CHECK_NULL);
823
824 java_lang_reflect_Field::set_clazz(rh(), Klass::cast(fd->field_holder())->java_mirror());
825 java_lang_reflect_Field::set_slot(rh(), fd->index());
826 java_lang_reflect_Field::set_name(rh(), name());
827 java_lang_reflect_Field::set_type(rh(), type());
828 // Note the ACC_ANNOTATION bit, which is a per-class access flag, is never set here.
829 java_lang_reflect_Field::set_modifiers(rh(), fd->access_flags().as_int() & JVM_RECOGNIZED_FIELD_MODIFIERS);
830 java_lang_reflect_Field::set_override(rh(), false);
831 if (java_lang_reflect_Field::has_signature_field() &&
832 fd->has_generic_signature()) {
833 Symbol* gs = fd->generic_signature();
834 Handle sig = java_lang_String::create_from_symbol(gs, CHECK_NULL);
835 java_lang_reflect_Field::set_signature(rh(), sig());
836 }
837 if (java_lang_reflect_Field::has_annotations_field()) {
838 java_lang_reflect_Field::set_annotations(rh(), fd->annotations());
839 }
840 return rh();
841 }
842
843
844 methodHandle Reflection::resolve_interface_call(instanceKlassHandle klass, methodHandle method,
845 KlassHandle recv_klass, Handle receiver, TRAPS) {
846 assert(!method.is_null() , "method should not be null");
847
848 CallInfo info;
849 Symbol* signature = method->signature();
850 Symbol* name = method->name();
851 LinkResolver::resolve_interface_call(info, receiver, recv_klass, klass,
852 name, signature,
|