RFR 8129547 (S): Excess entries in BootstrapMethods with the same (bsm, bsmKind, bsmStaticArgs), but different dynamicArgs

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Mon Aug 17 13:48:09 UTC 2015


Hi Alex,
the only dfference I see between your patch and the current code is that 
the current code is comparing the invokedType, while yours is not - am I 
reading your patch correctly?

If that's the case, wouldn't dropping the call to super.equals from 
Pool.DynamicMethod also resolve the issue?

I'm, saying this because, from a design perspective, javac symbols 
usually don't care about uniqueness etc. - that's an extra value added 
when storing them into a constant pool.

Maurizio

On 17/08/15 13:33, Aleksey Shipilev wrote:
> Hi,
>
> This issue gets into way with my current work:
>    https://bugs.openjdk.java.net/browse/JDK-8129547
>
> There is a proof-of-concept patch:
>    http://cr.openjdk.java.net/~shade/8129547/webrev.00/
>
> The crux of an issue seems to be the Method.equals() call in
> DynamicMethod.equals(), that compares the type. The type of
> DynamicMethod includes the DynamicMethodSymbol.type, that includes
> dynamic args. It seems DynamicMethodSymbol is a better fit for
> BootstrapMethod table key, since it includes BSM symbol and static
> arguments only.
>
> I would be grateful if somebody from compiler team can help me out with
> this. Is this the fix above valid? Can you do it better?
>
> How would one write a regression test for it? My cursory grep through
> langtools tests does not yield a clear way to emit a special-shaped indy
> for such a test.
>
> Thanks,
> -Aleksey
>



More information about the compiler-dev mailing list