hotspot/src/share/vm/classfile/classFileParser.cpp
changeset 3820 0a8fbbe180db
parent 3579 b18b94266d60
child 3821 847fddcb639b
equal deleted inserted replaced
3814:91f531a11872 3820:0a8fbbe180db
  2545                                                     Handle class_loader,
  2545                                                     Handle class_loader,
  2546                                                     Handle protection_domain,
  2546                                                     Handle protection_domain,
  2547                                                     KlassHandle host_klass,
  2547                                                     KlassHandle host_klass,
  2548                                                     GrowableArray<Handle>* cp_patches,
  2548                                                     GrowableArray<Handle>* cp_patches,
  2549                                                     symbolHandle& parsed_name,
  2549                                                     symbolHandle& parsed_name,
       
  2550                                                     bool verify,
  2550                                                     TRAPS) {
  2551                                                     TRAPS) {
  2551   // So that JVMTI can cache class file in the state before retransformable agents
  2552   // So that JVMTI can cache class file in the state before retransformable agents
  2552   // have modified it
  2553   // have modified it
  2553   unsigned char *cached_class_file_bytes = NULL;
  2554   unsigned char *cached_class_file_bytes = NULL;
  2554   jint cached_class_file_length;
  2555   jint cached_class_file_length;
  2589   _cp_patches = cp_patches;
  2590   _cp_patches = cp_patches;
  2590 
  2591 
  2591   instanceKlassHandle nullHandle;
  2592   instanceKlassHandle nullHandle;
  2592 
  2593 
  2593   // Figure out whether we can skip format checking (matching classic VM behavior)
  2594   // Figure out whether we can skip format checking (matching classic VM behavior)
  2594   _need_verify = Verifier::should_verify_for(class_loader());
  2595   _need_verify = Verifier::should_verify_for(class_loader(), verify);
  2595 
  2596 
  2596   // Set the verify flag in stream
  2597   // Set the verify flag in stream
  2597   cfs->set_verify(_need_verify);
  2598   cfs->set_verify(_need_verify);
  2598 
  2599 
  2599   // Save the class file name for easier error message printing.
  2600   // Save the class file name for easier error message printing.
  3203     assert(this_klass->static_field_size() == static_field_size &&
  3204     assert(this_klass->static_field_size() == static_field_size &&
  3204            this_klass->nonstatic_oop_map_size() == nonstatic_oop_map_size, "sanity check");
  3205            this_klass->nonstatic_oop_map_size() == nonstatic_oop_map_size, "sanity check");
  3205 
  3206 
  3206     // Fill in information already parsed
  3207     // Fill in information already parsed
  3207     this_klass->set_access_flags(access_flags);
  3208     this_klass->set_access_flags(access_flags);
       
  3209     if (verify) {
       
  3210       this_klass->set_should_verify_class();
       
  3211     }
  3208     jint lh = Klass::instance_layout_helper(instance_size, false);
  3212     jint lh = Klass::instance_layout_helper(instance_size, false);
  3209     this_klass->set_layout_helper(lh);
  3213     this_klass->set_layout_helper(lh);
  3210     assert(this_klass->oop_is_instance(), "layout is correct");
  3214     assert(this_klass->oop_is_instance(), "layout is correct");
  3211     assert(this_klass->size_helper() == instance_size, "correct size_helper");
  3215     assert(this_klass->size_helper() == instance_size, "correct size_helper");
  3212     // Not yet: supers are done below to support the new subtype-checking fields
  3216     // Not yet: supers are done below to support the new subtype-checking fields
  3213     //this_klass->set_super(super_klass());
  3217     //this_klass->set_super(super_klass());
  3214     this_klass->set_class_loader(class_loader());
  3218     this_klass->set_class_loader(class_loader());
  3215     this_klass->set_nonstatic_field_size(nonstatic_field_size);
  3219     this_klass->set_nonstatic_field_size(nonstatic_field_size);
  3216     this_klass->set_has_nonstatic_fields(has_nonstatic_fields);
  3220     if (has_nonstatic_fields) {
       
  3221        this_klass->set_has_nonstatic_fields();
       
  3222     }
  3217     this_klass->set_static_oop_field_size(fac.static_oop_count);
  3223     this_klass->set_static_oop_field_size(fac.static_oop_count);
  3218     cp->set_pool_holder(this_klass());
  3224     cp->set_pool_holder(this_klass());
  3219     this_klass->set_constants(cp());
  3225     this_klass->set_constants(cp());
  3220     this_klass->set_local_interfaces(local_interfaces());
  3226     this_klass->set_local_interfaces(local_interfaces());
  3221     this_klass->set_fields(fields());
  3227     this_klass->set_fields(fields());