java.lang.__Value ??

Srikanth srikanth.adayapalam at
Mon Nov 23 08:40:31 UTC 2015

Hello !


starts with:

package java.lang;

  * Base class of all value types in prototype implementation.
__ByValue final public class __Value {
// ...

It seems to me that this class (a) should not be final (b) not carry the 
__ByValue. (c) Is better named just Value rather than __Value - this 
being a type
name in a name space controlled by JDK. (d) should perhaps be declared 



__ByValue final class X {
     public static void main(String [] args) {

at the moment the class file generated by javac[*] encodes an explicit 
super type:

final value class X extends java.lang.__Value

It would appear the right behavior is to leave the supertype implicit and be
inferred from the ACC_VALUE flag bit being set.

[*] The class file generated cannot be run as of now - since 'Q' in 
signatures is not digested
by the VM yet. But using a modified version of javac that emits 'L' even 
for value types
I am able to run the program above triggering:

Exception in thread "main" java.lang.VerifyError: Cannot inherit from 
final class


More information about the valhalla-dev mailing list