comparison src/share/vm/oops/method.cpp @ 17883:9428a0b94204

8028497: SIGSEGV at ClassLoaderData::oops_do(OopClosure*, KlassClosure*, bool) Summary: Keep class in CLD::_klasses list and mirror created for CDS classes if OOM during restore_shareable_info(). This keeps pointers consistent for CMS. Reviewed-by: ehelin, stefank, jmasa, iklam
author coleenp
date Tue, 15 Apr 2014 17:02:20 -0400
parents 606acabe7b5c
children 7384f6a12fc1
comparison
equal deleted inserted replaced
17876:9c3dc501b5eb 17883:9428a0b94204
902 902
903 mh->set_adapter_entry(adapter); 903 mh->set_adapter_entry(adapter);
904 mh->_from_compiled_entry = adapter->get_c2i_entry(); 904 mh->_from_compiled_entry = adapter->get_c2i_entry();
905 return adapter->get_c2i_entry(); 905 return adapter->get_c2i_entry();
906 } 906 }
907
908 void Method::restore_unshareable_info(TRAPS) {
909 // Since restore_unshareable_info can be called more than once for a method, don't
910 // redo any work. If this field is restored, there is nothing to do.
911 if (_from_compiled_entry == NULL) {
912 // restore method's vtable by calling a virtual function
913 restore_vtable();
914
915 methodHandle mh(THREAD, this);
916 link_method(mh, CHECK);
917 }
918 }
919
907 920
908 // The verified_code_entry() must be called when a invoke is resolved 921 // The verified_code_entry() must be called when a invoke is resolved
909 // on this method. 922 // on this method.
910 923
911 // It returns the compiled code entry point, after asserting not null. 924 // It returns the compiled code entry point, after asserting not null.