[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

Reply via email to