Dynamic Constants adoption IRL
Remi Forax
forax at univ-mlv.fr
Thu Apr 15 15:37:05 UTC 2021
----- Mail original -----
> De: "Maxim Degtyarev" <mdegtyarev at gmail.com>
> À: "amber-dev" <amber-dev at openjdk.java.net>
> Envoyé: Jeudi 15 Avril 2021 17:04:15
> Objet: Dynamic Constants adoption IRL
> Hello,
>
> Is there currently real-life examples of dynamic constants adoption in
> programming languages targeting JVM or either libraries and
> frameworks?
> Or are there currently no projects using dynamic constants? Maybe any
> planned in the future?
> Quick googling was unsuccessful.
It depends what you mean by dynamic constant.
For the VM, a simple static final field that is not a primitive types or String is a dynamic constant.
A lambda that doesn't capture any variable value is a dynamic constant.
A VarHandle, used for concurrency or by the Foreign Memory API is a dynamic constant, the same goes for the MethodHandles.
The Vector API relies on the VectorSpecies being a dynamic constant.
System.out and System.err, the ClassValue for a particular class, or Thread.currentThread() can all be seen as dynamic constants (but they are not constant for the JIT).
The classData of an hidden class is also a dynamic constant [1].
regards,
Rémi
[1] https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/invoke/MethodHandles.html#classData(java.lang.invoke.MethodHandles.Lookup,java.lang.String,java.lang.Class)
More information about the amber-dev
mailing list