hotspot/src/share/vm/oops/method.cpp
changeset 33209 43d7a2139756
parent 33148 68fa8b6c4340
child 33230 23bb11a5cf4e
equal deleted inserted replaced
33206:da8c3575c076 33209:43d7a2139756
    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");