1146 m->method_type(), 1147 CHECK_(methodHandle())); 1148 methodHandle newm (THREAD, newm_oop); 1149 int new_method_size = newm->method_size(); 1150 1151 // Create a shallow copy of Method part, but be careful to preserve the new ConstMethod* 1152 ConstMethod* newcm = newm->constMethod(); 1153 int new_const_method_size = newm->constMethod()->size(); 1154 1155 memcpy(newm(), m(), sizeof(Method)); 1156 1157 // Create shallow copy of ConstMethod. 1158 memcpy(newcm, m->constMethod(), sizeof(ConstMethod)); 1159 1160 // Reset correct method/const method, method size, and parameter info 1161 newm->set_constMethod(newcm); 1162 newm->constMethod()->set_code_size(new_code_length); 1163 newm->constMethod()->set_constMethod_size(new_const_method_size); 1164 newm->set_method_size(new_method_size); 1165 assert(newm->code_size() == new_code_length, "check"); 1166 assert(newm->checked_exceptions_length() == checked_exceptions_len, "check"); 1167 assert(newm->exception_table_length() == exception_table_len, "check"); 1168 assert(newm->localvariable_table_length() == localvariable_len, "check"); 1169 // Copy new byte codes 1170 memcpy(newm->code_base(), new_code, new_code_length); 1171 // Copy line number table 1172 if (new_compressed_linenumber_size > 0) { 1173 memcpy(newm->compressed_linenumber_table(), 1174 new_compressed_linenumber_table, 1175 new_compressed_linenumber_size); 1176 } 1177 // Copy checked_exceptions 1178 if (checked_exceptions_len > 0) { 1179 memcpy(newm->checked_exceptions_start(), 1180 m->checked_exceptions_start(), 1181 checked_exceptions_len * sizeof(CheckedExceptionElement)); 1182 } 1183 // Copy exception table 1184 if (exception_table_len > 0) { 1185 memcpy(newm->exception_table_start(), 1186 m->exception_table_start(), 1187 exception_table_len * sizeof(ExceptionTableElement)); 1188 } 1189 // Copy local variable number table 1190 if (localvariable_len > 0) { 1191 memcpy(newm->localvariable_table_start(), 1192 m->localvariable_table_start(), 1193 localvariable_len * sizeof(LocalVariableTableElement)); 1194 } 1195 // Copy stackmap table | 1146 m->method_type(), 1147 CHECK_(methodHandle())); 1148 methodHandle newm (THREAD, newm_oop); 1149 int new_method_size = newm->method_size(); 1150 1151 // Create a shallow copy of Method part, but be careful to preserve the new ConstMethod* 1152 ConstMethod* newcm = newm->constMethod(); 1153 int new_const_method_size = newm->constMethod()->size(); 1154 1155 memcpy(newm(), m(), sizeof(Method)); 1156 1157 // Create shallow copy of ConstMethod. 1158 memcpy(newcm, m->constMethod(), sizeof(ConstMethod)); 1159 1160 // Reset correct method/const method, method size, and parameter info 1161 newm->set_constMethod(newcm); 1162 newm->constMethod()->set_code_size(new_code_length); 1163 newm->constMethod()->set_constMethod_size(new_const_method_size); 1164 newm->set_method_size(new_method_size); 1165 assert(newm->code_size() == new_code_length, "check"); 1166 assert(newm->method_parameters_length() == method_parameters_len, "check"); 1167 assert(newm->checked_exceptions_length() == checked_exceptions_len, "check"); 1168 assert(newm->exception_table_length() == exception_table_len, "check"); 1169 assert(newm->localvariable_table_length() == localvariable_len, "check"); 1170 // Copy new byte codes 1171 memcpy(newm->code_base(), new_code, new_code_length); 1172 // Copy line number table 1173 if (new_compressed_linenumber_size > 0) { 1174 memcpy(newm->compressed_linenumber_table(), 1175 new_compressed_linenumber_table, 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)); 1183 } 1184 // Copy checked_exceptions 1185 if (checked_exceptions_len > 0) { 1186 memcpy(newm->checked_exceptions_start(), 1187 m->checked_exceptions_start(), 1188 checked_exceptions_len * sizeof(CheckedExceptionElement)); 1189 } 1190 // Copy exception table 1191 if (exception_table_len > 0) { 1192 memcpy(newm->exception_table_start(), 1193 m->exception_table_start(), 1194 exception_table_len * sizeof(ExceptionTableElement)); 1195 } 1196 // Copy local variable number table 1197 if (localvariable_len > 0) { 1198 memcpy(newm->localvariable_table_start(), 1199 m->localvariable_table_start(), 1200 localvariable_len * sizeof(LocalVariableTableElement)); 1201 } 1202 // Copy stackmap table |