RFR (S) 8158851: MH.publicLookup() init circularity, triggered by custom SecurityManager with String concat and -limitmods java.base

Aleksey Shipilev aleksey.shipilev at oracle.com
Tue Jun 7 14:56:07 UTC 2016


On 06/07/2016 04:51 PM, Alan Bateman wrote:
> On 07/06/2016 14:38, Aleksey Shipilev wrote:
>> Please review a fix for a MH.publicLookup() circularity, which is
>> triggered if you run existing String concat tests with -limitmods
>> java.base:
>>    https://bugs.openjdk.java.net/browse/JDK-8158851
>>
>> Webrev:
>>    http://cr.openjdk.java.net/~shade/8158851/webrev.01/
> As a short term fix then this looks okay. It may be (once there is
> another round of work on MethodHandles w/modules) that PL moves back to
> java.lang.Object but that has many discussion points for another thread.
> 
> If you want then the doPriv in LookupHelper can do away as it is not
> required when you can guarantee that it is initialized before a security
> manager is set.

Done so.

> One downside to initializing PL early is that is LookupHelper will
> trigger some ASM to be loaded. This could avoid by generating it at link
> time and loading the class bytes as resource. Hard to know if it's worth
> it as the first lambda usage is going to trigger these classes to load
> anyway.

Yes. I agree with Claes here, can't we inline the bytecode to avoid
messing with ASM?

See:
  http://cr.openjdk.java.net/~shade/8158851/webrev.02/

Still passes all java/lang tests.

Thanks,
-Aleksey




More information about the jigsaw-dev mailing list