RFR(XS) Early return results imbalanced time partition

Aleksey Shipilev shade at redhat.com
Wed May 31 19:33:43 UTC 2017


Ah! So while loop is meant to be the scope which you can break from. Using goto
would be less cryptic, no?

diff -r de1d145d1fc1 src/share/vm/gc/shenandoah/shenandoahPartialGC.cpp
--- a/src/share/vm/gc/shenandoah/shenandoahPartialGC.cpp	Wed May 31 21:13:12
2017 +0200
+++ b/src/share/vm/gc/shenandoah/shenandoahPartialGC.cpp	Wed May 31 21:33:19
2017 +0200
@@ -296,8 +296,7 @@

     if (!has_work) {
       reset();
-      _heap->gc_timer()->register_gc_end();
-      return;
+      goto end;
     }

     policy->record_phase_start(ShenandoahCollectorPolicy::partial_gc_work);
@@ -369,6 +368,7 @@
     }
   }

+  end:
   _heap->gc_timer()->register_gc_end();
 }


-Aleksey

On 05/31/2017 09:30 PM, Zhengyu Gu wrote:
> In early return case, calling _heap->gc_timer()->register_gc_end() before
> GCTraceTime destructor, result an assertion in GCTimer code.
> 
> -Zhengyu
> 
> On 05/31/2017 03:27 PM, Aleksey Shipilev wrote:
>> On 05/31/2017 09:25 PM, Zhengyu Gu wrote:
>>> Imbalanced time partition results assertion failure in debug build.
>>
>> Can you explain a little more?
>>
>> -Aleksey
>>




More information about the shenandoah-dev mailing list