RFR: 8175233: Remove LambdaForm.debugName
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:
> 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).
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.
> - 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