[15]RFR: 8238356: CodeHeap::blob_count() overestimates the number of blobs

Rahul Raghavan rahul.v.raghavan at oracle.com
Wed Feb 19 09:02:12 UTC 2020


Thank you Lutz for review.
Thanks to Aleksey for reporting issue and suggesting the fix.

-Rahul

On 17/02/20 3:58 pm, Schmidt, Lutz wrote:
> Hi all,
> 
> the fix is good. Sorry for blocking the push. And thank you, Rahul, for discovering and fixing the blob counter.
> 
> Thanks,
> Lutz
> 
> On 17.02.20, 11:07, "Schmidt, Lutz" <lutz.schmidt at sap.com> wrote:
> 
>      Hi all,
>      
>      I'm not sure this fix will do the trick once and for all. Things are a bit more complicated. I'm sending this heads up without detailed explanation to prevent a premature push. Please stand by, I'll provide the explanation asap.
>      
>      Thanks for your patience!
>      Lutz
>      

On 17/02/20 1:42 pm, Rahul Raghavan wrote:
> Hi,
> 
> Please review the following fix changeset.
> 
> <webrev> - http://cr.openjdk.java.net/~rraghavan/8238356/webrev.00/
> <JBS> -  https://bugs.openjdk.java.net/browse/JDK-8238356
> 
> Issue reported - CodeHeap::blob_count() can miscalculate the blob count.
> CodeHeap::_blob_count is only incremented, never decremented.
> 
> Webrev fix proposal, same as suggested by Aleksey Shipilev,
> is to decrement _blob_count on addition to the free list.
> 
> [src/hotspot/share/memory/heap.cpp]
>   void CodeHeap::add_to_freelist(HeapBlock* a) {
>     FreeBlock* b = (FreeBlock*)a;
>     size_t bseg = segment_for(b);
>     _freelist_length++;
> 
> + _blob_count--;
> + assert(_blob_count >= 0, "sanity");
> +
>     assert(b != _freelist, "cannot be removed twice");
> 
> Found no issues with precheckin, tier1 - tier5 testing.
> 
> 
> Thanks,
> Rahul


More information about the hotspot-compiler-dev mailing list