70 ConstMethod* cm = ConstMethod::allocate(loader_data, |
70 ConstMethod* cm = ConstMethod::allocate(loader_data, |
71 byte_code_size, |
71 byte_code_size, |
72 sizes, |
72 sizes, |
73 method_type, |
73 method_type, |
74 CHECK_NULL); |
74 CHECK_NULL); |
75 |
|
76 int size = Method::size(access_flags.is_native()); |
75 int size = Method::size(access_flags.is_native()); |
77 |
76 return new (loader_data, size, false, MetaspaceObj::MethodType, THREAD) Method(cm, access_flags); |
78 return new (loader_data, size, false, MetaspaceObj::MethodType, THREAD) Method(cm, access_flags, size); |
77 } |
79 } |
78 |
80 |
79 Method::Method(ConstMethod* xconst, AccessFlags access_flags) { |
81 Method::Method(ConstMethod* xconst, AccessFlags access_flags, int size) { |
|
82 No_Safepoint_Verifier no_safepoint; |
80 No_Safepoint_Verifier no_safepoint; |
83 set_constMethod(xconst); |
81 set_constMethod(xconst); |
84 set_access_flags(access_flags); |
82 set_access_flags(access_flags); |
85 set_method_size(size); |
|
86 #ifdef CC_INTERP |
83 #ifdef CC_INTERP |
87 set_result_index(T_VOID); |
84 set_result_index(T_VOID); |
88 #endif |
85 #endif |
89 set_intrinsic_id(vmIntrinsics::_none); |
86 set_intrinsic_id(vmIntrinsics::_none); |
90 set_jfr_towrite(false); |
87 set_jfr_towrite(false); |
1225 flags, |
1222 flags, |
1226 &sizes, |
1223 &sizes, |
1227 m->method_type(), |
1224 m->method_type(), |
1228 CHECK_(methodHandle())); |
1225 CHECK_(methodHandle())); |
1229 methodHandle newm (THREAD, newm_oop); |
1226 methodHandle newm (THREAD, newm_oop); |
1230 int new_method_size = newm->method_size(); |
|
1231 |
1227 |
1232 // Create a shallow copy of Method part, but be careful to preserve the new ConstMethod* |
1228 // Create a shallow copy of Method part, but be careful to preserve the new ConstMethod* |
1233 ConstMethod* newcm = newm->constMethod(); |
1229 ConstMethod* newcm = newm->constMethod(); |
1234 int new_const_method_size = newm->constMethod()->size(); |
1230 int new_const_method_size = newm->constMethod()->size(); |
1235 |
1231 |
1240 |
1236 |
1241 // Reset correct method/const method, method size, and parameter info |
1237 // Reset correct method/const method, method size, and parameter info |
1242 newm->set_constMethod(newcm); |
1238 newm->set_constMethod(newcm); |
1243 newm->constMethod()->set_code_size(new_code_length); |
1239 newm->constMethod()->set_code_size(new_code_length); |
1244 newm->constMethod()->set_constMethod_size(new_const_method_size); |
1240 newm->constMethod()->set_constMethod_size(new_const_method_size); |
1245 newm->set_method_size(new_method_size); |
|
1246 assert(newm->code_size() == new_code_length, "check"); |
1241 assert(newm->code_size() == new_code_length, "check"); |
1247 assert(newm->method_parameters_length() == method_parameters_len, "check"); |
1242 assert(newm->method_parameters_length() == method_parameters_len, "check"); |
1248 assert(newm->checked_exceptions_length() == checked_exceptions_len, "check"); |
1243 assert(newm->checked_exceptions_length() == checked_exceptions_len, "check"); |
1249 assert(newm->exception_table_length() == exception_table_len, "check"); |
1244 assert(newm->exception_table_length() == exception_table_len, "check"); |
1250 assert(newm->localvariable_table_length() == localvariable_len, "check"); |
1245 assert(newm->localvariable_table_length() == localvariable_len, "check"); |