RFR(S): 8131129: Attempt to define a duplicate BMH$Species class

John Rose john.r.rose at oracle.com
Mon Nov 9 20:38:15 UTC 2015


Using @Stable breaks down some of the complexity.
And the CHM (with the winning computeIfAbsent) breaks down lots more.
Nice job!

I'm a little sad that it needs two CHMs (CACHE and CLASS_CACHE).
This must be because there are three or four states per key, instead of
the usual two.  These states should be documented for posterity.

— John

On Nov 9, 2015, at 4:16 AM, Peter Levart <peter.levart at gmail.com> wrote:
> 
> Hi all,
> 
> Thanks for analysis, reviews and discussion that hopefully beheaded this hydra.
> 
> I added an assert to method setSpeciesDataToConcreteBMHClass() that verifies the presence of @Stable annotation on the SPECIES_DATA field of the generated class. It caught a bug I made when I specified a binary class name "java/lang/invoke/Stable" in FieldVisitor.visitAnnotation() instead of type signature "Ljava/lang/invoke/Stable;"
> 
> The consequence was not drastic - the field was just not being interpreted by VM as @Stable.
> 
> With that adjustment and successful re-run of jtreg tests, I ask for re-confirmation to push the following:
> 
>    http://cr.openjdk.java.net/~plevart/jdk9-dev/BMH.race/webrev.07/
> 
> Regards, Peter
> 
> On 11/06/2015 01:31 PM, Vladimir Ivanov wrote:
>> Peter,
>> 
>>> 
>>> http://cr.openjdk.java.net/~plevart/jdk9-dev/BMH.race/webrev.06/
>>> 
>> 
>> Looks really good! Reviewed.
>> 
>>> - the SPECIES_DATA field in generated class can not be static final when
>>> it is initialized out of <clinit>. Just static. It was just static
>>> before when it was initialized in <clinit> and could be static final. We
>>> can make it @Stable at least.
>>> 
>> Not sure it is on hot path, but I'm all for marking the field as @Stable
>> 
>>> - there's no need for empty <clinit> method now. Removed.
>>> 
>>> Basic java/lang/invoke jtreg tests pass.
>> 
>> Best regards,
>> Vladimir Ivanov
> 




More information about the core-libs-dev mailing list