--- old/src/share/vm/classfile/classFileParser.cpp 2013-01-28 14:33:27.858091468 -0500 +++ new/src/share/vm/classfile/classFileParser.cpp 2013-01-28 14:33:27.712089925 -0500 @@ -2167,8 +2167,8 @@ method_parameters_data = cfs->get_u1_buffer(); actual_size += 2 * method_parameters_length; cfs->skip_u2_fast(method_parameters_length); - actual_size += 4 * method_parameters_length; - cfs->skip_u4_fast(method_parameters_length); + actual_size += 2 * method_parameters_length; + cfs->skip_u2_fast(method_parameters_length); // Enforce attribute length if (method_attribute_length != actual_size) { classfile_parse_error( @@ -2319,14 +2319,10 @@ if (method_parameters_length > 0) { MethodParametersElement* elem = m->constMethod()->method_parameters_start(); for(int i = 0; i < method_parameters_length; i++) { - elem[i].name_cp_index = - Bytes::get_Java_u2(method_parameters_data); + elem[i].name_cp_index = Bytes::get_Java_u2(method_parameters_data); + method_parameters_data += 2; + elem[i].flags = Bytes::get_Java_u2(method_parameters_data); method_parameters_data += 2; - u4 flags = Bytes::get_Java_u4(method_parameters_data); - // This caused an alignment fault on Sparc, if flags was a u4 - elem[i].flags_lo = extract_low_short_from_int(flags); - elem[i].flags_hi = extract_high_short_from_int(flags); - method_parameters_data += 4; } }