Mercurial > hg > graal-compiler
comparison src/share/vm/classfile/classFileParser.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 | 9acf9c25774d |
children | 7e6c20c85ccf |
comparison
equal
deleted
inserted
replaced
17876:9c3dc501b5eb | 17883:9428a0b94204 |
---|---|
4168 Annotations::free_contents(_loader_data, _fields_annotations); | 4168 Annotations::free_contents(_loader_data, _fields_annotations); |
4169 Annotations::free_contents(_loader_data, _fields_type_annotations); | 4169 Annotations::free_contents(_loader_data, _fields_type_annotations); |
4170 | 4170 |
4171 clear_class_metadata(); | 4171 clear_class_metadata(); |
4172 | 4172 |
4173 // deallocate the klass if already created. | 4173 // deallocate the klass if already created. Don't directly deallocate, but add |
4174 MetadataFactory::free_metadata(_loader_data, _klass); | 4174 // to the deallocate list so that the klass is removed from the CLD::_klasses list |
4175 // at a safepoint. | |
4176 if (_klass != NULL) { | |
4177 _loader_data->add_to_deallocate_list(_klass); | |
4178 } | |
4175 _klass = NULL; | 4179 _klass = NULL; |
4176 } | 4180 } |
4177 | 4181 |
4178 void ClassFileParser::print_field_layout(Symbol* name, | 4182 void ClassFileParser::print_field_layout(Symbol* name, |
4179 Array<u2>* fields, | 4183 Array<u2>* fields, |