hotspot/src/share/vm/runtime/reflection.cpp
changeset 46727 6e4a84748e2c
parent 46630 75aa3e39d02c
child 46773 fb17cc9a6847
equal deleted inserted replaced
46726:7801367e3cc9 46727:6e4a84748e2c
   760     inner->external_name()
   760     inner->external_name()
   761   );
   761   );
   762 }
   762 }
   763 
   763 
   764 // Utility method converting a single SignatureStream element into java.lang.Class instance
   764 // Utility method converting a single SignatureStream element into java.lang.Class instance
   765 static oop get_mirror_from_signature(methodHandle method,
   765 static oop get_mirror_from_signature(const methodHandle& method,
   766                                      SignatureStream* ss,
   766                                      SignatureStream* ss,
   767                                      TRAPS) {
   767                                      TRAPS) {
   768 
   768 
   769 
   769 
   770   if (T_OBJECT == ss->type() || T_ARRAY == ss->type()) {
   770   if (T_OBJECT == ss->type() || T_ARRAY == ss->type()) {
   786     "T_VOID should only appear as return type");
   786     "T_VOID should only appear as return type");
   787 
   787 
   788   return java_lang_Class::primitive_mirror(ss->type());
   788   return java_lang_Class::primitive_mirror(ss->type());
   789 }
   789 }
   790 
   790 
   791 static objArrayHandle get_parameter_types(methodHandle method,
   791 static objArrayHandle get_parameter_types(const methodHandle& method,
   792                                           int parameter_count,
   792                                           int parameter_count,
   793                                           oop* return_type,
   793                                           oop* return_type,
   794                                           TRAPS) {
   794                                           TRAPS) {
   795   // Allocate array holding parameter types (java.lang.Class instances)
   795   // Allocate array holding parameter types (java.lang.Class instances)
   796   objArrayOop m = oopFactory::new_objArray(SystemDictionary::Class_klass(), parameter_count, CHECK_(objArrayHandle()));
   796   objArrayOop m = oopFactory::new_objArray(SystemDictionary::Class_klass(), parameter_count, CHECK_(objArrayHandle()));
   812     *return_type = get_mirror_from_signature(method, &ss, CHECK_(objArrayHandle()));
   812     *return_type = get_mirror_from_signature(method, &ss, CHECK_(objArrayHandle()));
   813   }
   813   }
   814   return mirrors;
   814   return mirrors;
   815 }
   815 }
   816 
   816 
   817 static objArrayHandle get_exception_types(methodHandle method, TRAPS) {
   817 static objArrayHandle get_exception_types(const methodHandle& method, TRAPS) {
   818   return method->resolved_checked_exceptions(THREAD);
   818   return method->resolved_checked_exceptions(THREAD);
   819 }
   819 }
   820 
   820 
   821 static Handle new_type(Symbol* signature, Klass* k, TRAPS) {
   821 static Handle new_type(Symbol* signature, Klass* k, TRAPS) {
   822   // Basic types
   822   // Basic types
  1050 }
  1050 }
  1051 
  1051 
  1052 
  1052 
  1053 // Method call (shared by invoke_method and invoke_constructor)
  1053 // Method call (shared by invoke_method and invoke_constructor)
  1054 static oop invoke(InstanceKlass* klass,
  1054 static oop invoke(InstanceKlass* klass,
  1055                   methodHandle reflected_method,
  1055                   const methodHandle& reflected_method,
  1056                   Handle receiver,
  1056                   Handle receiver,
  1057                   bool override,
  1057                   bool override,
  1058                   objArrayHandle ptypes,
  1058                   objArrayHandle ptypes,
  1059                   BasicType rtype,
  1059                   BasicType rtype,
  1060                   objArrayHandle args,
  1060                   objArrayHandle args,