comparison src/share/vm/oops/method.cpp @ 11159:16511b7e3d35

8019632: Method parameters are not copied in clone_with_new_data Summary: Add code to copy method parameters data in clone_with_new_data Reviewed-by: coleenp, sspitsyn
author emc
date Mon, 22 Jul 2013 17:57:42 -0400
parents e0c9a1d29eb4
children 6b0fd0964b87 85147f28faba f99558245e5c
comparison
equal deleted inserted replaced
11158:55a61ceb2fe7 11159:16511b7e3d35
1161 newm->set_constMethod(newcm); 1161 newm->set_constMethod(newcm);
1162 newm->constMethod()->set_code_size(new_code_length); 1162 newm->constMethod()->set_code_size(new_code_length);
1163 newm->constMethod()->set_constMethod_size(new_const_method_size); 1163 newm->constMethod()->set_constMethod_size(new_const_method_size);
1164 newm->set_method_size(new_method_size); 1164 newm->set_method_size(new_method_size);
1165 assert(newm->code_size() == new_code_length, "check"); 1165 assert(newm->code_size() == new_code_length, "check");
1166 assert(newm->method_parameters_length() == method_parameters_len, "check");
1166 assert(newm->checked_exceptions_length() == checked_exceptions_len, "check"); 1167 assert(newm->checked_exceptions_length() == checked_exceptions_len, "check");
1167 assert(newm->exception_table_length() == exception_table_len, "check"); 1168 assert(newm->exception_table_length() == exception_table_len, "check");
1168 assert(newm->localvariable_table_length() == localvariable_len, "check"); 1169 assert(newm->localvariable_table_length() == localvariable_len, "check");
1169 // Copy new byte codes 1170 // Copy new byte codes
1170 memcpy(newm->code_base(), new_code, new_code_length); 1171 memcpy(newm->code_base(), new_code, new_code_length);
1171 // Copy line number table 1172 // Copy line number table
1172 if (new_compressed_linenumber_size > 0) { 1173 if (new_compressed_linenumber_size > 0) {
1173 memcpy(newm->compressed_linenumber_table(), 1174 memcpy(newm->compressed_linenumber_table(),
1174 new_compressed_linenumber_table, 1175 new_compressed_linenumber_table,
1175 new_compressed_linenumber_size); 1176 new_compressed_linenumber_size);
1177 }
1178 // Copy method_parameters
1179 if (method_parameters_len > 0) {
1180 memcpy(newm->method_parameters_start(),
1181 m->method_parameters_start(),
1182 method_parameters_len * sizeof(MethodParametersElement));
1176 } 1183 }
1177 // Copy checked_exceptions 1184 // Copy checked_exceptions
1178 if (checked_exceptions_len > 0) { 1185 if (checked_exceptions_len > 0) {
1179 memcpy(newm->checked_exceptions_start(), 1186 memcpy(newm->checked_exceptions_start(),
1180 m->checked_exceptions_start(), 1187 m->checked_exceptions_start(),