< prev index next >

src/hotspot/share/classfile/classFileParser.cpp

Print this page




3553           cfs->skip_u1(nest_members_attribute_length, CHECK);
3554         } else if (tag == vmSymbols::tag_nest_host()) {
3555           if (parsed_nest_host_attribute) {
3556             classfile_parse_error("Multiple NestHost attributes in class file %s", CHECK);
3557           } else {
3558             parsed_nest_host_attribute = true;
3559           }
3560           if (parsed_nest_members_attribute) {
3561             classfile_parse_error("Conflicting NestMembers and NestHost attributes in class file %s", CHECK);
3562           }
3563           if (_need_verify) {
3564             guarantee_property(attribute_length == 2, "Wrong NestHost attribute length in class file %s", CHECK);
3565           }
3566           cfs->guarantee_more(2, CHECK);
3567           u2 class_info_index = cfs->get_u2_fast();
3568           check_property(
3569                          valid_klass_reference_at(class_info_index),
3570                          "Nest-host class_info_index %u has bad constant type in class file %s",
3571                          class_info_index, CHECK);
3572           _nest_host = class_info_index;



3573         }
3574       } else {
3575         // Unknown attribute
3576         cfs->skip_u1(attribute_length, CHECK);
3577       }
3578     } else {
3579       // Unknown attribute
3580       cfs->skip_u1(attribute_length, CHECK);
3581     }
3582   }
3583   _annotations = assemble_annotations(runtime_visible_annotations,
3584                                       runtime_visible_annotations_length,
3585                                       runtime_invisible_annotations,
3586                                       runtime_invisible_annotations_length,
3587                                       CHECK);
3588   _type_annotations = assemble_annotations(runtime_visible_type_annotations,
3589                                            runtime_visible_type_annotations_length,
3590                                            runtime_invisible_type_annotations,
3591                                            runtime_invisible_type_annotations_length,
3592                                            CHECK);




3553           cfs->skip_u1(nest_members_attribute_length, CHECK);
3554         } else if (tag == vmSymbols::tag_nest_host()) {
3555           if (parsed_nest_host_attribute) {
3556             classfile_parse_error("Multiple NestHost attributes in class file %s", CHECK);
3557           } else {
3558             parsed_nest_host_attribute = true;
3559           }
3560           if (parsed_nest_members_attribute) {
3561             classfile_parse_error("Conflicting NestMembers and NestHost attributes in class file %s", CHECK);
3562           }
3563           if (_need_verify) {
3564             guarantee_property(attribute_length == 2, "Wrong NestHost attribute length in class file %s", CHECK);
3565           }
3566           cfs->guarantee_more(2, CHECK);
3567           u2 class_info_index = cfs->get_u2_fast();
3568           check_property(
3569                          valid_klass_reference_at(class_info_index),
3570                          "Nest-host class_info_index %u has bad constant type in class file %s",
3571                          class_info_index, CHECK);
3572           _nest_host = class_info_index;
3573         } else {
3574           // Unknown attribute
3575           cfs->skip_u1(attribute_length, CHECK);
3576         }
3577       } else {
3578         // Unknown attribute
3579         cfs->skip_u1(attribute_length, CHECK);
3580       }
3581     } else {
3582       // Unknown attribute
3583       cfs->skip_u1(attribute_length, CHECK);
3584     }
3585   }
3586   _annotations = assemble_annotations(runtime_visible_annotations,
3587                                       runtime_visible_annotations_length,
3588                                       runtime_invisible_annotations,
3589                                       runtime_invisible_annotations_length,
3590                                       CHECK);
3591   _type_annotations = assemble_annotations(runtime_visible_type_annotations,
3592                                            runtime_visible_type_annotations_length,
3593                                            runtime_invisible_type_annotations,
3594                                            runtime_invisible_type_annotations_length,
3595                                            CHECK);


< prev index next >