comparison src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp @ 1975:d9310331a29c

7003860: G1: assert(_cur_alloc_region == NULL || !expect_null_cur_alloc_region) fails Summary: Wrong assumption about expecting the current alloc region expected to be NULL in expand_and_allocate(). Reviewed-by: brutisso, ysr
author tonyp
date Thu, 02 Dec 2010 13:20:39 -0500
parents fd1d227ef1b9
children 016a3628c885
comparison
equal deleted inserted replaced
1974:fd1d227ef1b9 1975:d9310331a29c
918 918
919 HeapWord* G1CollectedHeap::attempt_allocation_at_safepoint(size_t word_size, 919 HeapWord* G1CollectedHeap::attempt_allocation_at_safepoint(size_t word_size,
920 bool expect_null_cur_alloc_region) { 920 bool expect_null_cur_alloc_region) {
921 assert_at_safepoint(); 921 assert_at_safepoint();
922 assert(_cur_alloc_region == NULL || !expect_null_cur_alloc_region, 922 assert(_cur_alloc_region == NULL || !expect_null_cur_alloc_region,
923 "The current alloc region should only be non-NULL if we're " 923 err_msg("the current alloc region was unexpectedly found "
924 "expecting it not to be NULL"); 924 "to be non-NULL, cur alloc region: "PTR_FORMAT" "
925 "expect_null_cur_alloc_region: %d word_size: "SIZE_FORMAT,
926 _cur_alloc_region, expect_null_cur_alloc_region, word_size));
925 927
926 if (!isHumongous(word_size)) { 928 if (!isHumongous(word_size)) {
927 if (!expect_null_cur_alloc_region) { 929 if (!expect_null_cur_alloc_region) {
928 HeapRegion* cur_alloc_region = _cur_alloc_region; 930 HeapRegion* cur_alloc_region = _cur_alloc_region;
929 if (cur_alloc_region != NULL) { 931 if (cur_alloc_region != NULL) {
1595 } 1597 }
1596 expand(expand_bytes); 1598 expand(expand_bytes);
1597 assert(regions_accounted_for(), "Region leakage!"); 1599 assert(regions_accounted_for(), "Region leakage!");
1598 1600
1599 return attempt_allocation_at_safepoint(word_size, 1601 return attempt_allocation_at_safepoint(word_size,
1600 true /* expect_null_cur_alloc_region */); 1602 false /* expect_null_cur_alloc_region */);
1601 } 1603 }
1602 1604
1603 size_t G1CollectedHeap::free_region_if_totally_empty(HeapRegion* hr) { 1605 size_t G1CollectedHeap::free_region_if_totally_empty(HeapRegion* hr) {
1604 size_t pre_used = 0; 1606 size_t pre_used = 0;
1605 size_t cleared_h_regions = 0; 1607 size_t cleared_h_regions = 0;