RFR: JDK-8285932 Implementation of JEP-430 String Templates (Preview)
ExE Boss
duke at openjdk.org
Thu Oct 27 22:47:26 UTC 2022
On Thu, 27 Oct 2022 20:16:14 GMT, Jim Laskey <jlaskey at openjdk.org> wrote:
> Enhance the Java programming language with string templates, which are similar to string literals but contain embedded expressions. A string template is interpreted at run time by replacing each expression with the result of evaluating that expression, possibly after further validation and transformation. This is a [preview language feature and API](http://openjdk.java.net/jeps/12).
src/java.base/share/classes/java/lang/invoke/StringConcatFactory.java line 115:
> 113: * we do not use all those slots, to let the strategies with MethodHandle
> 114: * combinators to use some arguments.
> 115: */
Suggestion:
*
* @since 20
*/
src/java.base/share/classes/java/lang/invoke/StringConcatFactory.java line 1058:
> 1056: * @throws Throwable if fails to prepend value (unusual).
> 1057: */
> 1058: long prepend(long lengthCoder, byte[] buffer) throws Throwable;
This method is inherently unsafe, as `StringConcatFactory` uses `Unsafe.allocateUninitializedArray(...)` to construct the `buffer`, the intrinsic implementation of which ***DOESN’T*** zero‑out the memory region occupied by the array, which can contain potentially sensitive data.
--------------------------------------------------------------------------------
The `StringConcatItem` interface should be sealed or at least moved to a `jdk.internal.*` package.
-------------
PR: https://git.openjdk.org/jdk/pull/10889
More information about the compiler-dev
mailing list