src/hotspot/share/runtime/reflection.cpp
changeset 51807 3221f5e14866
parent 51467 12997ebbc0d8
child 52096 7a1e2d7ac55a
equal deleted inserted replaced
51806:1ecc914fb707 51807:3221f5e14866
   896   java_lang_reflect_Method::set_return_type(mh(), return_type());
   896   java_lang_reflect_Method::set_return_type(mh(), return_type());
   897   java_lang_reflect_Method::set_parameter_types(mh(), parameter_types());
   897   java_lang_reflect_Method::set_parameter_types(mh(), parameter_types());
   898   java_lang_reflect_Method::set_exception_types(mh(), exception_types());
   898   java_lang_reflect_Method::set_exception_types(mh(), exception_types());
   899   java_lang_reflect_Method::set_modifiers(mh(), modifiers);
   899   java_lang_reflect_Method::set_modifiers(mh(), modifiers);
   900   java_lang_reflect_Method::set_override(mh(), false);
   900   java_lang_reflect_Method::set_override(mh(), false);
   901   if (java_lang_reflect_Method::has_signature_field() &&
   901   if (method->generic_signature() != NULL) {
   902       method->generic_signature() != NULL) {
       
   903     Symbol*  gs = method->generic_signature();
   902     Symbol*  gs = method->generic_signature();
   904     Handle sig = java_lang_String::create_from_symbol(gs, CHECK_NULL);
   903     Handle sig = java_lang_String::create_from_symbol(gs, CHECK_NULL);
   905     java_lang_reflect_Method::set_signature(mh(), sig());
   904     java_lang_reflect_Method::set_signature(mh(), sig());
   906   }
   905   }
   907   if (java_lang_reflect_Method::has_annotations_field()) {
   906   typeArrayOop an_oop = Annotations::make_java_array(method->annotations(), CHECK_NULL);
   908     typeArrayOop an_oop = Annotations::make_java_array(method->annotations(), CHECK_NULL);
   907   java_lang_reflect_Method::set_annotations(mh(), an_oop);
   909     java_lang_reflect_Method::set_annotations(mh(), an_oop);
   908   an_oop = Annotations::make_java_array(method->parameter_annotations(), CHECK_NULL);
   910   }
   909   java_lang_reflect_Method::set_parameter_annotations(mh(), an_oop);
   911   if (java_lang_reflect_Method::has_parameter_annotations_field()) {
   910   an_oop = Annotations::make_java_array(method->annotation_default(), CHECK_NULL);
   912     typeArrayOop an_oop = Annotations::make_java_array(method->parameter_annotations(), CHECK_NULL);
   911   java_lang_reflect_Method::set_annotation_default(mh(), an_oop);
   913     java_lang_reflect_Method::set_parameter_annotations(mh(), an_oop);
       
   914   }
       
   915   if (java_lang_reflect_Method::has_annotation_default_field()) {
       
   916     typeArrayOop an_oop = Annotations::make_java_array(method->annotation_default(), CHECK_NULL);
       
   917     java_lang_reflect_Method::set_annotation_default(mh(), an_oop);
       
   918   }
       
   919   if (java_lang_reflect_Method::has_type_annotations_field()) {
       
   920     typeArrayOop an_oop = Annotations::make_java_array(method->type_annotations(), CHECK_NULL);
       
   921     java_lang_reflect_Method::set_type_annotations(mh(), an_oop);
       
   922   }
       
   923   return mh();
   912   return mh();
   924 }
   913 }
   925 
   914 
   926 
   915 
   927 oop Reflection::new_constructor(const methodHandle& method, TRAPS) {
   916 oop Reflection::new_constructor(const methodHandle& method, TRAPS) {
   946   java_lang_reflect_Constructor::set_slot(ch(), slot);
   935   java_lang_reflect_Constructor::set_slot(ch(), slot);
   947   java_lang_reflect_Constructor::set_parameter_types(ch(), parameter_types());
   936   java_lang_reflect_Constructor::set_parameter_types(ch(), parameter_types());
   948   java_lang_reflect_Constructor::set_exception_types(ch(), exception_types());
   937   java_lang_reflect_Constructor::set_exception_types(ch(), exception_types());
   949   java_lang_reflect_Constructor::set_modifiers(ch(), modifiers);
   938   java_lang_reflect_Constructor::set_modifiers(ch(), modifiers);
   950   java_lang_reflect_Constructor::set_override(ch(), false);
   939   java_lang_reflect_Constructor::set_override(ch(), false);
   951   if (java_lang_reflect_Constructor::has_signature_field() &&
   940   if (method->generic_signature() != NULL) {
   952       method->generic_signature() != NULL) {
       
   953     Symbol*  gs = method->generic_signature();
   941     Symbol*  gs = method->generic_signature();
   954     Handle sig = java_lang_String::create_from_symbol(gs, CHECK_NULL);
   942     Handle sig = java_lang_String::create_from_symbol(gs, CHECK_NULL);
   955     java_lang_reflect_Constructor::set_signature(ch(), sig());
   943     java_lang_reflect_Constructor::set_signature(ch(), sig());
   956   }
   944   }
   957   if (java_lang_reflect_Constructor::has_annotations_field()) {
   945   typeArrayOop an_oop = Annotations::make_java_array(method->annotations(), CHECK_NULL);
   958     typeArrayOop an_oop = Annotations::make_java_array(method->annotations(), CHECK_NULL);
   946   java_lang_reflect_Constructor::set_annotations(ch(), an_oop);
   959     java_lang_reflect_Constructor::set_annotations(ch(), an_oop);
   947   an_oop = Annotations::make_java_array(method->parameter_annotations(), CHECK_NULL);
   960   }
   948   java_lang_reflect_Constructor::set_parameter_annotations(ch(), an_oop);
   961   if (java_lang_reflect_Constructor::has_parameter_annotations_field()) {
       
   962     typeArrayOop an_oop = Annotations::make_java_array(method->parameter_annotations(), CHECK_NULL);
       
   963     java_lang_reflect_Constructor::set_parameter_annotations(ch(), an_oop);
       
   964   }
       
   965   if (java_lang_reflect_Constructor::has_type_annotations_field()) {
       
   966     typeArrayOop an_oop = Annotations::make_java_array(method->type_annotations(), CHECK_NULL);
       
   967     java_lang_reflect_Constructor::set_type_annotations(ch(), an_oop);
       
   968   }
       
   969   return ch();
   949   return ch();
   970 }
   950 }
   971 
   951 
   972 
   952 
   973 oop Reflection::new_field(fieldDescriptor* fd, TRAPS) {
   953 oop Reflection::new_field(fieldDescriptor* fd, TRAPS) {
   984   java_lang_reflect_Field::set_name(rh(), name());
   964   java_lang_reflect_Field::set_name(rh(), name());
   985   java_lang_reflect_Field::set_type(rh(), type());
   965   java_lang_reflect_Field::set_type(rh(), type());
   986   // Note the ACC_ANNOTATION bit, which is a per-class access flag, is never set here.
   966   // Note the ACC_ANNOTATION bit, which is a per-class access flag, is never set here.
   987   java_lang_reflect_Field::set_modifiers(rh(), fd->access_flags().as_int() & JVM_RECOGNIZED_FIELD_MODIFIERS);
   967   java_lang_reflect_Field::set_modifiers(rh(), fd->access_flags().as_int() & JVM_RECOGNIZED_FIELD_MODIFIERS);
   988   java_lang_reflect_Field::set_override(rh(), false);
   968   java_lang_reflect_Field::set_override(rh(), false);
   989   if (java_lang_reflect_Field::has_signature_field() &&
   969   if (fd->has_generic_signature()) {
   990       fd->has_generic_signature()) {
       
   991     Symbol*  gs = fd->generic_signature();
   970     Symbol*  gs = fd->generic_signature();
   992     Handle sig = java_lang_String::create_from_symbol(gs, CHECK_NULL);
   971     Handle sig = java_lang_String::create_from_symbol(gs, CHECK_NULL);
   993     java_lang_reflect_Field::set_signature(rh(), sig());
   972     java_lang_reflect_Field::set_signature(rh(), sig());
   994   }
   973   }
   995   if (java_lang_reflect_Field::has_annotations_field()) {
   974   typeArrayOop an_oop = Annotations::make_java_array(fd->annotations(), CHECK_NULL);
   996     typeArrayOop an_oop = Annotations::make_java_array(fd->annotations(), CHECK_NULL);
   975   java_lang_reflect_Field::set_annotations(rh(), an_oop);
   997     java_lang_reflect_Field::set_annotations(rh(), an_oop);
       
   998   }
       
   999   if (java_lang_reflect_Field::has_type_annotations_field()) {
       
  1000     typeArrayOop an_oop = Annotations::make_java_array(fd->type_annotations(), CHECK_NULL);
       
  1001     java_lang_reflect_Field::set_type_annotations(rh(), an_oop);
       
  1002   }
       
  1003   return rh();
   976   return rh();
  1004 }
   977 }
  1005 
   978 
  1006 oop Reflection::new_parameter(Handle method, int index, Symbol* sym,
   979 oop Reflection::new_parameter(Handle method, int index, Symbol* sym,
  1007                               int flags, TRAPS) {
   980                               int flags, TRAPS) {