Mercurial > hg > graal-compiler
diff src/share/vm/oops/constantPool.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 | 53094b350323 |
children | 78bbf4d43a14 |
line wrap: on
line diff
--- a/src/share/vm/oops/constantPool.cpp Thu Feb 13 10:05:03 2014 +0100 +++ b/src/share/vm/oops/constantPool.cpp Tue Apr 15 17:02:20 2014 -0400 @@ -144,6 +144,10 @@ // CDS support. Create a new resolved_references array. void ConstantPool::restore_unshareable_info(TRAPS) { + // Only create the new resolved references array and lock if it hasn't been + // attempted before + if (resolved_references() != NULL) return; + // restore the C++ vtable from the shared archive restore_vtable();