< prev index next >

src/hotspot/share/classfile/classFileParser.cpp

Print this page




3452             "Multiple RuntimeVisibleTypeAnnotations attributes in class file %s", CHECK);
3453         }
3454         runtime_visible_type_annotations_length = attribute_length;
3455         runtime_visible_type_annotations = cfs->current();
3456         assert(runtime_visible_type_annotations != NULL, "null visible type annotations");
3457         // No need for the VM to parse Type annotations
3458         cfs->skip_u1(runtime_visible_type_annotations_length, CHECK);
3459       } else if (tag == vmSymbols::tag_runtime_invisible_type_annotations()) {
3460         if (runtime_invisible_type_annotations_exists) {
3461           classfile_parse_error(
3462             "Multiple RuntimeInvisibleTypeAnnotations attributes in class file %s", CHECK);
3463         } else {
3464           runtime_invisible_type_annotations_exists = true;
3465         }
3466         if (PreserveAllAnnotations) {
3467           runtime_invisible_type_annotations_length = attribute_length;
3468           runtime_invisible_type_annotations = cfs->current();
3469           assert(runtime_invisible_type_annotations != NULL, "null invisible type annotations");
3470         }
3471         cfs->skip_u1(attribute_length, CHECK);
3472       } else if (_major_version >= JAVA_10_VERSION) {
3473         if (tag == vmSymbols::tag_nest_members()) {
3474           // Check for NestMembers tag
3475           if (parsed_nest_members_attribute) {
3476             classfile_parse_error("Multiple NestMembers attributes in class file %s", CHECK);
3477           } else {
3478             parsed_nest_members_attribute = true;
3479           }
3480           if (parsed_nest_host_attribute) {
3481             classfile_parse_error("Conflicting NestHost and NestMembers attributes in class file %s", CHECK);
3482           }
3483           nest_members_attribute_start = cfs->current();
3484           nest_members_attribute_length = attribute_length;
3485           cfs->skip_u1(nest_members_attribute_length, CHECK);
3486         } else if (tag == vmSymbols::tag_nest_host()) {
3487           if (parsed_nest_host_attribute) {
3488             classfile_parse_error("Multiple NestHost attributes in class file %s", CHECK);
3489           } else {
3490             parsed_nest_host_attribute = true;
3491           }
3492           if (parsed_nest_members_attribute) {




3452             "Multiple RuntimeVisibleTypeAnnotations attributes in class file %s", CHECK);
3453         }
3454         runtime_visible_type_annotations_length = attribute_length;
3455         runtime_visible_type_annotations = cfs->current();
3456         assert(runtime_visible_type_annotations != NULL, "null visible type annotations");
3457         // No need for the VM to parse Type annotations
3458         cfs->skip_u1(runtime_visible_type_annotations_length, CHECK);
3459       } else if (tag == vmSymbols::tag_runtime_invisible_type_annotations()) {
3460         if (runtime_invisible_type_annotations_exists) {
3461           classfile_parse_error(
3462             "Multiple RuntimeInvisibleTypeAnnotations attributes in class file %s", CHECK);
3463         } else {
3464           runtime_invisible_type_annotations_exists = true;
3465         }
3466         if (PreserveAllAnnotations) {
3467           runtime_invisible_type_annotations_length = attribute_length;
3468           runtime_invisible_type_annotations = cfs->current();
3469           assert(runtime_invisible_type_annotations != NULL, "null invisible type annotations");
3470         }
3471         cfs->skip_u1(attribute_length, CHECK);
3472       } else if (_major_version >= JAVA_11_VERSION) {
3473         if (tag == vmSymbols::tag_nest_members()) {
3474           // Check for NestMembers tag
3475           if (parsed_nest_members_attribute) {
3476             classfile_parse_error("Multiple NestMembers attributes in class file %s", CHECK);
3477           } else {
3478             parsed_nest_members_attribute = true;
3479           }
3480           if (parsed_nest_host_attribute) {
3481             classfile_parse_error("Conflicting NestHost and NestMembers attributes in class file %s", CHECK);
3482           }
3483           nest_members_attribute_start = cfs->current();
3484           nest_members_attribute_length = attribute_length;
3485           cfs->skip_u1(nest_members_attribute_length, CHECK);
3486         } else if (tag == vmSymbols::tag_nest_host()) {
3487           if (parsed_nest_host_attribute) {
3488             classfile_parse_error("Multiple NestHost attributes in class file %s", CHECK);
3489           } else {
3490             parsed_nest_host_attribute = true;
3491           }
3492           if (parsed_nest_members_attribute) {


< prev index next >