8007154: Remove support for u4 MethodParameter flags fields

Fri, 26 Apr 2013 07:34:02 -0400

author
emc
date
Fri, 26 Apr 2013 07:34:02 -0400
changeset 4986
d1644a010f52
parent 4985
3c9b7ef92c61
child 4988
c53e49efe6a8

8007154: Remove support for u4 MethodParameter flags fields
Summary: Remove support for parsing class files with four-byte flags fields in MethodParameters attributes
Reviewed-by: jrose, coleenp

src/share/vm/classfile/classFileParser.cpp file | annotate | diff | comparison | revisions
     1.1 --- a/src/share/vm/classfile/classFileParser.cpp	Fri Apr 26 08:40:24 2013 -0700
     1.2 +++ b/src/share/vm/classfile/classFileParser.cpp	Fri Apr 26 07:34:02 2013 -0400
     1.3 @@ -2027,7 +2027,6 @@
     1.4    u2 method_parameters_length = 0;
     1.5    u1* method_parameters_data = NULL;
     1.6    bool method_parameters_seen = false;
     1.7 -  bool method_parameters_four_byte_flags;
     1.8    bool parsed_code_attribute = false;
     1.9    bool parsed_checked_exceptions_attribute = false;
    1.10    bool parsed_stackmap_attribute = false;
    1.11 @@ -2241,26 +2240,14 @@
    1.12        }
    1.13        method_parameters_seen = true;
    1.14        method_parameters_length = cfs->get_u1_fast();
    1.15 -      // Track the actual size (note: this is written for clarity; a
    1.16 -      // decent compiler will CSE and constant-fold this into a single
    1.17 -      // expression)
    1.18 -      // Use the attribute length to figure out the size of flags
    1.19 -      if (method_attribute_length == (method_parameters_length * 6u) + 1u) {
    1.20 -        method_parameters_four_byte_flags = true;
    1.21 -      } else if (method_attribute_length == (method_parameters_length * 4u) + 1u) {
    1.22 -        method_parameters_four_byte_flags = false;
    1.23 -      } else {
    1.24 +      if (method_attribute_length != (method_parameters_length * 4u) + 1u) {
    1.25          classfile_parse_error(
    1.26            "Invalid MethodParameters method attribute length %u in class file",
    1.27            method_attribute_length, CHECK_(nullHandle));
    1.28        }
    1.29        method_parameters_data = cfs->get_u1_buffer();
    1.30        cfs->skip_u2_fast(method_parameters_length);
    1.31 -      if (method_parameters_four_byte_flags) {
    1.32 -        cfs->skip_u4_fast(method_parameters_length);
    1.33 -      } else {
    1.34 -        cfs->skip_u2_fast(method_parameters_length);
    1.35 -      }
    1.36 +      cfs->skip_u2_fast(method_parameters_length);
    1.37        // ignore this attribute if it cannot be reflected
    1.38        if (!SystemDictionary::Parameter_klass_loaded())
    1.39          method_parameters_length = 0;
    1.40 @@ -2423,13 +2410,8 @@
    1.41      for (int i = 0; i < method_parameters_length; i++) {
    1.42        elem[i].name_cp_index = Bytes::get_Java_u2(method_parameters_data);
    1.43        method_parameters_data += 2;
    1.44 -      if (method_parameters_four_byte_flags) {
    1.45 -        elem[i].flags = Bytes::get_Java_u4(method_parameters_data);
    1.46 -        method_parameters_data += 4;
    1.47 -      } else {
    1.48 -        elem[i].flags = Bytes::get_Java_u2(method_parameters_data);
    1.49 -        method_parameters_data += 2;
    1.50 -      }
    1.51 +      elem[i].flags = Bytes::get_Java_u2(method_parameters_data);
    1.52 +      method_parameters_data += 2;
    1.53      }
    1.54    }
    1.55  

mercurial