Mercurial > hg > truffle
diff src/share/vm/gc_implementation/g1/heapRegion.cpp @ 13062:28674af341ac
8027756: assert(!hr->isHumongous()) failed: code root in humongous region?
Summary: Change checks for isHumongous() to continuesHumongous() as installing a code root for a humongous object is valid, but not for continuations of humongous objects. Cleaned up asserts.
Reviewed-by: jmasa, tamao
author | tschatzl |
---|---|
date | Thu, 07 Nov 2013 15:17:10 +0100 |
parents | 8f07aa079343 |
children | 096c224171c4 63a4eb8bcd23 191174b49bec |
line wrap: on
line diff
--- a/src/share/vm/gc_implementation/g1/heapRegion.cpp Sat Nov 02 13:02:59 2013 -0700 +++ b/src/share/vm/gc_implementation/g1/heapRegion.cpp Thu Nov 07 15:17:10 2013 +0100 @@ -601,7 +601,9 @@ void HeapRegion::migrate_strong_code_roots() { assert(in_collection_set(), "only collection set regions"); - assert(!isHumongous(), "not humongous regions"); + assert(!isHumongous(), + err_msg("humongous region "HR_FORMAT" should not have been added to collection set", + HR_FORMAT_PARAMS(this))); HeapRegionRemSet* hrrs = rem_set(); hrrs->migrate_strong_code_roots(); @@ -722,12 +724,11 @@ return; } - // An H-region should have an empty strong code root list - if (isHumongous()) { + if (continuesHumongous()) { if (strong_code_roots_length > 0) { - gclog_or_tty->print_cr("region ["PTR_FORMAT","PTR_FORMAT"] is humongous " - "but has "INT32_FORMAT" code root entries", - bottom(), end(), strong_code_roots_length); + gclog_or_tty->print_cr("region "HR_FORMAT" is a continuation of a humongous " + "region but has "INT32_FORMAT" code root entries", + HR_FORMAT_PARAMS(this), strong_code_roots_length); *failures = true; } return;