hotspot/src/share/vm/oops/instanceKlass.cpp
changeset 46464 6432a858a220
parent 46458 3c12af929e7d
child 46505 fd4bc78630b1
equal deleted inserted replaced
46463:4bd2ca84df7a 46464:6432a858a220
  1993     ResourceMark rm;
  1993     ResourceMark rm;
  1994     log_trace(class, fingerprint)("stored as " PTR64_FORMAT " for class %s", fingerprint, external_name());
  1994     log_trace(class, fingerprint)("stored as " PTR64_FORMAT " for class %s", fingerprint, external_name());
  1995   }
  1995   }
  1996 }
  1996 }
  1997 
  1997 
  1998 static void remove_unshareable_in_class(Klass* k) {
       
  1999   // remove klass's unshareable info
       
  2000   k->remove_unshareable_info();
       
  2001 }
       
  2002 
       
  2003 void InstanceKlass::remove_unshareable_info() {
  1998 void InstanceKlass::remove_unshareable_info() {
  2004   Klass::remove_unshareable_info();
  1999   Klass::remove_unshareable_info();
       
  2000 
       
  2001   if (is_in_error_state()) {
       
  2002     // Classes are attempted to link during dumping and may fail,
       
  2003     // but these classes are still in the dictionary and class list in CLD.
       
  2004     // Check in_error state first because in_error is > linked state, so
       
  2005     // is_linked() is true.
       
  2006     // If there's a linking error, there is nothing else to remove.
       
  2007     return;
       
  2008   }
       
  2009 
  2005   // Unlink the class
  2010   // Unlink the class
  2006   if (is_linked()) {
  2011   if (is_linked()) {
  2007     unlink_class();
  2012     unlink_class();
  2008   }
  2013   }
  2009   init_implementor();
  2014   init_implementor();
  2014 
  2019 
  2015   for (int i = 0; i < methods()->length(); i++) {
  2020   for (int i = 0; i < methods()->length(); i++) {
  2016     Method* m = methods()->at(i);
  2021     Method* m = methods()->at(i);
  2017     m->remove_unshareable_info();
  2022     m->remove_unshareable_info();
  2018   }
  2023   }
  2019 
       
  2020   // do array classes also.
       
  2021   array_klasses_do(remove_unshareable_in_class);
       
  2022 }
  2024 }
  2023 
  2025 
  2024 static void restore_unshareable_in_class(Klass* k, TRAPS) {
  2026 static void restore_unshareable_in_class(Klass* k, TRAPS) {
  2025   // Array classes have null protection domain.
  2027   // Array classes have null protection domain.
  2026   // --> see ArrayKlass::complete_create_array_klass()
  2028   // --> see ArrayKlass::complete_create_array_klass()