RFR (XS): 8203262: Incorrect cmpxchg usage in MetaspaceGC::inc_capacity_until_GC
Per Liden
per.liden at oracle.com
Sun May 20 19:34:40 UTC 2018
On 2018-05-20 11:07, Aleksey Shipilev wrote:
> On 05/20/2018 10:04 AM, Thomas Schatzl wrote:
>> Webrev:
>> http://cr.openjdk.java.net/~tschatzl/8203262/webrev
>
> Looks good.
>
> I would probably rename "old_capacity_until_GC" to just "old_value" to reduce noise and provide
> visible symmetries. And avoided "actual" because it is confusing -- it is not an actual value anymore :)
Looks good Thomas. And I agree with Aleksey's naming suggestion. But I
would go one step further calling it "prev_value" instead of "actual" or
"res". Maybe it's just my style, but I always try to use the
new/old/prev naming scheme in CAS-loops as I find it very clarifying.
Anyway, whatever name you pick, I don't need to see a new webrev.
cheers,
Per
>
> E.g.:
>
> 2420 size_t old_value = _capacity_until_GC;
> 2421 size_t new_value = old_value + v;
> 2422
> 2423 if (new_value < old_value) {
> 2424 // The addition wrapped around, set new_value to aligned max value.
> 2425 new_value = align_down(max_uintx, Metaspace::commit_alignment());
> 2426 }
> 2427
> 2428 size_t res = Atomic::cmpxchg(new_value, &_capacity_until_GC, old_value);
> 2429
> 2430 if (old_value != res) {
> 2431 return false;
> 2432 }
> 2433
> 2434 if (new_cap_until_GC != NULL) {
> 2435 *new_cap_until_GC = new_value;
> 2436 }
> 2437 if (old_cap_until_GC != NULL) {
> 2438 *old_cap_until_GC = old_value;
> 2439 }
> 2440 return true;
>
> -Aleksey
>
>
More information about the hotspot-gc-dev
mailing list