hotspot/src/share/vm/classfile/classFileParser.cpp
changeset 46271 979ebd346ecf
parent 46262 83280d968b96
child 46289 1904e7ec236e
equal deleted inserted replaced
46270:2e7898927798 46271:979ebd346ecf
   832 
   832 
   833         // Call resolve_super so classcircularity is checked
   833         // Call resolve_super so classcircularity is checked
   834         const Klass* const k =
   834         const Klass* const k =
   835           SystemDictionary::resolve_super_or_fail(_class_name,
   835           SystemDictionary::resolve_super_or_fail(_class_name,
   836                                                   unresolved_klass,
   836                                                   unresolved_klass,
   837                                                   _loader_data->class_loader(),
   837                                                   Handle(THREAD, _loader_data->class_loader()),
   838                                                   _protection_domain,
   838                                                   _protection_domain,
   839                                                   false,
   839                                                   false,
   840                                                   CHECK);
   840                                                   CHECK);
   841         interf = KlassHandle(THREAD, k);
   841         interf = KlassHandle(THREAD, k);
   842       }
   842       }
  2849     _methods = MetadataFactory::new_array<Method*>(_loader_data,
  2849     _methods = MetadataFactory::new_array<Method*>(_loader_data,
  2850                                                    length,
  2850                                                    length,
  2851                                                    NULL,
  2851                                                    NULL,
  2852                                                    CHECK);
  2852                                                    CHECK);
  2853 
  2853 
  2854     HandleMark hm(THREAD);
       
  2855     for (int index = 0; index < length; index++) {
  2854     for (int index = 0; index < length; index++) {
  2856       Method* method = parse_method(cfs,
  2855       Method* method = parse_method(cfs,
  2857                                     is_interface,
  2856                                     is_interface,
  2858                                     _cp,
  2857                                     _cp,
  2859                                     promoted_flags,
  2858                                     promoted_flags,
  5355   Handle module_handle(THREAD, JNIHandles::resolve(module_entry->module()));
  5354   Handle module_handle(THREAD, JNIHandles::resolve(module_entry->module()));
  5356 
  5355 
  5357   // Allocate mirror and initialize static fields
  5356   // Allocate mirror and initialize static fields
  5358   // The create_mirror() call will also call compute_modifiers()
  5357   // The create_mirror() call will also call compute_modifiers()
  5359   java_lang_Class::create_mirror(ik,
  5358   java_lang_Class::create_mirror(ik,
  5360                                  _loader_data->class_loader(),
  5359                                  Handle(THREAD, _loader_data->class_loader()),
  5361                                  module_handle,
  5360                                  module_handle,
  5362                                  _protection_domain,
  5361                                  _protection_domain,
  5363                                  CHECK);
  5362                                  CHECK);
  5364 
  5363 
  5365   assert(_all_mirandas != NULL, "invariant");
  5364   assert(_all_mirandas != NULL, "invariant");
  5913       // errors not checked yet.
  5912       // errors not checked yet.
  5914       guarantee_property(super_class_name == vmSymbols::java_lang_Object(),
  5913       guarantee_property(super_class_name == vmSymbols::java_lang_Object(),
  5915         "Interfaces must have java.lang.Object as superclass in class file %s",
  5914         "Interfaces must have java.lang.Object as superclass in class file %s",
  5916         CHECK);
  5915         CHECK);
  5917     }
  5916     }
       
  5917     Handle loader(THREAD, _loader_data->class_loader());
  5918     _super_klass = (const InstanceKlass*)
  5918     _super_klass = (const InstanceKlass*)
  5919                        SystemDictionary::resolve_super_or_fail(_class_name,
  5919                        SystemDictionary::resolve_super_or_fail(_class_name,
  5920                                                                super_class_name,
  5920                                                                super_class_name,
  5921                                                                _loader_data->class_loader(),
  5921                                                                loader,
  5922                                                                _protection_domain,
  5922                                                                _protection_domain,
  5923                                                                true,
  5923                                                                true,
  5924                                                                CHECK);
  5924                                                                CHECK);
  5925   }
  5925   }
  5926 
  5926 
  5958   // sort methods
  5958   // sort methods
  5959   _method_ordering = sort_methods(_methods);
  5959   _method_ordering = sort_methods(_methods);
  5960 
  5960 
  5961   _all_mirandas = new GrowableArray<Method*>(20);
  5961   _all_mirandas = new GrowableArray<Method*>(20);
  5962 
  5962 
       
  5963   Handle loader(THREAD, _loader_data->class_loader());
  5963   klassVtable::compute_vtable_size_and_num_mirandas(&_vtable_size,
  5964   klassVtable::compute_vtable_size_and_num_mirandas(&_vtable_size,
  5964                                                     &_num_miranda_methods,
  5965                                                     &_num_miranda_methods,
  5965                                                     _all_mirandas,
  5966                                                     _all_mirandas,
  5966                                                     _super_klass,
  5967                                                     _super_klass,
  5967                                                     _methods,
  5968                                                     _methods,
  5968                                                     _access_flags,
  5969                                                     _access_flags,
  5969                                                     _major_version,
  5970                                                     _major_version,
  5970                                                     _loader_data->class_loader(),
  5971                                                     loader,
  5971                                                     _class_name,
  5972                                                     _class_name,
  5972                                                     _local_interfaces,
  5973                                                     _local_interfaces,
  5973                                                     CHECK);
  5974                                                     CHECK);
  5974 
  5975 
  5975   // Size of Java itable (in words)
  5976   // Size of Java itable (in words)