Fri, 26 Apr 2013 07:34:02 -0400
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