-
Notifications
You must be signed in to change notification settings - Fork 728
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Valhalla tests should use migrated value classes #20386
Comments
Issue Number: 20386 |
This is currently blocked by #20372 |
There is another MethodHandles error when trying to enable the use of classes in java.base-valueclasses.jar:
|
The native implementation of
declaringClass is NULL.
|
I created a small program to reproduce this and its not related to migrated value classes, and only happens when an abstract class inherits from an abstract value class. Also finding classes seems to work but primitives are failing. I've confirmed that the field is found but the offset is 0 openj9/runtime/vm/resolvefield.cpp Line 224 in 2583a83
The result never gets set here because the offset (which eventually sets the value of target) is 0.
The offset is 8 when CAbsVal is not a value class.
|
For value classes, there is no lockword between the object header and the first field. So it is possible that the first field starts at offset 0.
Are you running with |
I see, thanks. Yes I'm running with |
I added the option to openjdk test runs and re-enabled passing tests. Some of the passing tests are due to extensions updates and other unrelated changes. ibmruntimes/openj9-openjdk-jdk.valuetypes@79671f4 There are no new openjdk test failures that need addressing so I am closing this issue as resolved. |
Jep 401 migrates existing ValueBased classes (such as java/lang/Integer) to be value classes. Right now these classes are compiled into
jdk/lib/valueclasses/java.base-valueclasses.jar
and can be used by patching them into the java.base module--patch-module java.base=jdk/lib/valueclasses/java.base-valueclasses.jar
To complete this issue:
a = new Integer(1); b= new Integer(1);
a == b should be true.
a and b should have the same hashcode.
synchronized(a) is not allowed.
a.getClass().isValue() should be true.
The text was updated successfully, but these errors were encountered: