[10] RFR: 8175233: Remove LambdaForm.debugName

Paul Sandoz paul.sandoz at oracle.com
Tue Feb 21 22:46:21 UTC 2017

> On 20 Feb 2017, at 06:24, Claes Redestad <claes.redestad at oracle.com> wrote:
> Hi,
> the LambdaForm.debugName field is useful for debugging, but names
> are generated and retained in this field also for production code, which
> is then used to name generated methods and classes.
> This patch suggests to extract this field and make the debug name an
> external mapping that is only generated (and used) when actually debugging,
> while using LambdaForm.Kinds to guide the naming of classes and methods
> generated in production mode.
> This also fixes(?) a subtle bug that when transforming a LambdaForm using
> LambdaFormEditors the debugName was retained through all transformations,
> which leads to confusing/surprising results (since many transformations starts
> out with a BMH.reinvoker and is then transformed via editor manipulations,
> most generated forms appear to be BMH.reinvokers when in fact they aren't).
> Bug:
> https://bugs.openjdk.java.net/browse/JDK-8175233
> Webrevs:
> http://cr.openjdk.java.net/~redestad/8175233/jdk.01/
> http://cr.openjdk.java.net/~redestad/8175233/hotspot.01/


You might wanna consider colocating "lambdaName” with “generateDebugName”, then it’s easier to see that the latter is called from within a synchronized block of the former.

> Testing:
> - Pre-checkin testing on all platforms
> - Locally tested java.lang.invoke tests with and without -Djava.lang.invoke.MethodHandle.DEBUG_NAMES=true
> - Ensured -Djava.lang.invoke.MethodHandle.DUMP_CLASS_FILES=true behaves as intended
> - Made sure the changes don't clash with JDK-8172298

Thanks, i keep forgetting to push the patch for JDK-8172298, now done.


More information about the core-libs-dev mailing list