It just occurs to me that while ACC_VALUE is a bit that change the runtime semantics, something the VM should take care of, ACC_PRIMITIVE is not a bit that change the runtime semantics, only the javac translation strategy, javac emits Q-types instead of L-type + the Preload attribute.
If value classes and primitive classes are equivalent at runtime, why do we need to generate the .ref interface/abstract class ? We can use L-type instead. Rémi