Mercurial > hg > graal-jvmci-8
changeset 345:33e001c095fe
Merge
author | ysr |
---|---|
date | Thu, 12 Jun 2008 14:02:35 -0700 |
parents | 6aae2f9d0294 (current diff) afc1ce1efe66 (diff) |
children | bb254e57d2f4 |
files | |
diffstat | 1 files changed, 10 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/vm/gc_implementation/g1/concurrentMark.cpp Thu Jun 12 13:50:55 2008 -0700 +++ b/src/share/vm/gc_implementation/g1/concurrentMark.cpp Thu Jun 12 14:02:35 2008 -0700 @@ -3751,8 +3751,10 @@ if (!has_aborted()) { // We cannot check whether the global stack is empty, since other - // tasks might be pushing objects to it concurrently. - tmp_guarantee_CM( _cm->out_of_regions() && _cm->region_stack_empty(), + // tasks might be pushing objects to it concurrently. We also cannot + // check if the region stack is empty because if a thread is aborting + // it can push a partially done region back. + tmp_guarantee_CM( _cm->out_of_regions(), "at this point we should be out of regions" ); if (_cm->verbose_low()) @@ -3774,9 +3776,10 @@ // we could. Let's try to do some stealing... // We cannot check whether the global stack is empty, since other - // tasks might be pushing objects to it concurrently. + // tasks might be pushing objects to it concurrently. We also cannot + // check if the region stack is empty because if a thread is aborting + // it can push a partially done region back. guarantee( _cm->out_of_regions() && - _cm->region_stack_empty() && _task_queue->size() == 0, "only way to reach here" ); if (_cm->verbose_low()) @@ -3811,9 +3814,10 @@ // termination protocol. if (!has_aborted()) { // We cannot check whether the global stack is empty, since other - // tasks might be concurrently pushing objects on it. + // tasks might be concurrently pushing objects on it. We also cannot + // check if the region stack is empty because if a thread is aborting + // it can push a partially done region back. guarantee( _cm->out_of_regions() && - _cm->region_stack_empty() && _task_queue->size() == 0, "only way to reach here" ); if (_cm->verbose_low())