Review: Indify String Concat JEP

Alan Bateman Alan.Bateman at oracle.com
Mon Sep 21 11:24:43 UTC 2015


On 18/09/2015 16:17, Aleksey Shipilev wrote:
> Hi,
>
> I recently sent the review request to compiler-dev@ [1], but got no
> response. Resending at corelibs-dev@ to gain more exposure.
>
> Please review the submitted "Indify String Concat" JEP. It seems
> complete to me: with working implementation, testing, and general
> understanding of an issue. Start here:
>    https://bugs.openjdk.java.net/browse/JDK-8085796
>
> General feedback, comments, concerns, testing is appreciated.
>
The main concerns that come to mind reading through this is potential 
startup overhead and potential recursive initialization/bootstrapping 
issues where the BSM might need to do string concatenation. However, 
you've covered those points quite well in the Risks and Assumptions section.

On startup overhead then it might be amortized by the initialization of 
the module system as you suggest. It might be something else. We don't 
want to discourage use of lambda expressions or method reference so the 
first use of LF or whatever the initialization cost is will need to be 
worked on anyway.

I see the proposal is to exempt java.base. It probably could be finer 
grained than all of java.base but tricky to determine that subset. Even 
if all of java.base is exempt then I think there are initialization 
issues that need to be looked at. Peter Levart had a proposed patch for 
at least one of this issues at one point but there might be others [1]. 
One other thing is that JEP 261 proposes the -Xoverride option (maybe it 
might be renamed to -Xpatch) for patching/override classes in java.base. 
Anyone using that to override classes used early in the startup would 
need to be careful to use the right javac option.

One other other on exemptions is that it might need to be javac too, at 
least for the JDK build where the newly built compiler runs with the 
boot JDK to compile everything else. I can't quite tell from a first 
read if the proposal is that javac emit indy by default, if not then 
this may be a non-issue.

-Alan.

[1] http://mail.openjdk.java.net/pipermail/mlvm-dev/2015-March/006387.html



More information about the core-libs-dev mailing list