Anonymous value classes
forax at univ-mlv.fr
forax at univ-mlv.fr
Tue Jun 7 09:55:24 UTC 2022
----- Original Message -----
> From: "daniel smith" <daniel.smith at oracle.com>
> To: "Remi Forax" <forax at univ-mlv.fr>
> Cc: "Maurizio Cimadamore" <maurizio.cimadamore at oracle.com>, "Brian Goetz" <brian.goetz at oracle.com>,
> "valhalla-spec-experts" <valhalla-spec-experts at openjdk.java.net>
> Sent: Monday, June 6, 2022 7:56:40 PM
> Subject: Re: Anonymous value classes
>> On Jun 4, 2022, at 3:33 AM, forax at univ-mlv.fr wrote:
>>
>> there is a lot of libraries that have APIs using interfaces that are implemented
>> by anonymous classes, the collection API is one of them, fluent loggers
>> (anything fluent in fact) is another, and those will benefit to have better
>> than escape analysis performance.
>
> This could use validation. My very high-level sense is that within inlined code,
> escape analysis will do just fine with identity classes, with no observable
> performance gain when switching to a value class.
In practice, escape analysis is weaker than what you think. That's why we need Valhalla in the first place, i believe John has written a text about why Escape Analysis is not good enough at the start of the project.
> *Across calls*, we can do
> much better with value classes, but at that point current HotSpot optimizations
> need a name in the descriptor. (Huge caveat that my understanding of this
> situation is very high-level, and there may be important things I'm missing.)
Anonymous class are only anonymous for the Java code not for the VM,
javac desugars anonymous classes to real classes with a funny names full or '$' so the VM considers them as real classes.
>
> Also note that if it's necessary to opt in anyway, it's not particularly much to
> ask these performance-sensitive users to declare a local class rather than an
> anonymous value class.
I understand the initial reaction in front of a
new value AbstractList<>() { ... }
We can single out anonymous class as as you propose, but not if it's based on a misunderstanding (anonymous class name can not appear in descriptor) or because the syntax is a kind of ugly (the whole anonymous class syntax is ugly).
Rémi
More information about the valhalla-spec-observers
mailing list