[10?] RFR: 8193128: Reduce number of implementation classes returned by List/Set/Map.of()

Paul Sandoz paul.sandoz at oracle.com
Thu Dec 7 01:16:18 UTC 2017



> On 6 Dec 2017, at 16:12, Claes Redestad <claes.redestad at oracle.com> wrote:
>> 
>>   and i do not understand why the field size is not declared @Stable anymore,
>>   ok, it can be equals to zero, but in that case the JIT will emit a move
>>   so it's better than always asking for a move (or i do not understand the semantics of @Stable ?)
> 
> Hmm, I'm under the impression @Stable brings no additional value to a final non-array fields (definitely important for arrays).
> 

It can, since final fields are not treated as really final (unless in java.lang.invoke package, where it’s as if all such fields are annotated with @Stable). C2 will treat the field value a constant value if the collection is held in a static final field.

Paul.

> I might have been guilty of adding @Stable to more fields than necessary in these implementations in the first place. I've
> reverted this removal and will add a note to investigate separately if we can more systematically clean them up.
> 
> http://cr.openjdk.java.net/~redestad/8193128/open.01/
> 
> Thanks!
> 
> /Claes



More information about the core-libs-dev mailing list