[JDK-8232806](https://bugs.openjdk.java.net/browse/JDK-8232806) introduced the jdk.internal.lambda.disableEagerInitialization system property to be able to disable eager initialization of lambda classes. This was necessary to prevent side effects of class initializers triggered by such initialization in the context of the GraalVM native image tool.
However, the change as it is implemented means that the behaviour of non-capturing lambdas depends on the value of `disableEagerInitialization`: when it is false (the default) such lambdas are actually a singleton while when it is true, a fresh instance is returned every time. Programs should definitely _not_ rely on reference equality since the Java spec does not guarantee it. However, in order to separate concern and ease debugging such bad programs, `disableEagerInitialization` shouldn't influence the singleton vs. fresh instance behaviour of lambdas in either direction. ------------- Commit messages: - 8242451: ensure semantics of non-capturing lambdas are preserved independent of execution mode Changes: https://git.openjdk.java.net/jdk/pull/93/files Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=93&range=00 Issue: https://bugs.openjdk.java.net/browse/JDK-8242451 Stats: 97 lines in 2 files changed: 73 ins; 5 del; 19 mod Patch: https://git.openjdk.java.net/jdk/pull/93.diff Fetch: git fetch https://git.openjdk.java.net/jdk pull/93/head:pull/93 PR: https://git.openjdk.java.net/jdk/pull/93