[LW2] Q-mirror, method handle, and reflection support for Q-type

Tobias Hartmann tobias.hartmann at oracle.com
Wed Nov 28 12:28:30 UTC 2018


Hi Mandy,

> 2. Class::forName, Object::getClass, Member::getDeclaringClass
>    returns L-mirror in this version as Point.class 

But with your patch, it seems that MyValue.class != MyValue.class.asValueType() and also
MyValue.class != MyValue.class.asBoxType().

We now seem to have 3 types:
class compiler.valhalla.valuetypes.MyValue
class compiler.valhalla.valuetypes.MyValue/val
class compiler.valhalla.valuetypes.MyValue/box

This breaks TestNewAcmp.java which gets the parameter types of a method via getParameterTypes() and
then compares them to MyValue.class. This now returns false for a method with signature (MyValue v).

On 27.11.18 19:57, Mandy Chung wrote:
> It also fixes hotspot/jtreg/compiler/valhalla/valuetypes
> and hotspot/jtreg/runtime/valhalla/valuetypes tests to use
> Q-mirror in the method type correctly.

The changes to the compiler tests look good to me but I think TestNewAcmp.java and
TestNullableValueTypes.java need to be fixed as well:
http://cr.openjdk.java.net/~thartmann/valhalla/lworld/qmirror_fixes/webrev.00/

But even with these fixes, I still see:

Caused by: java.lang.IllegalStateException: java.lang.IllegalStateException:
java.lang.NoSuchMethodException: no such method:
compiler.valhalla.valuetypes.getNull/0x00000008000cec40.getNull()MyValue1/invokeStatic
	at java.base/jdk.experimental.value.MethodHandleBuilder.loadCode(MethodHandleBuilder.java:110)
	at java.base/jdk.experimental.value.MethodHandleBuilder.loadCode(MethodHandleBuilder.java:77)
	at java.base/jdk.experimental.value.MethodHandleBuilder.loadCode(MethodHandleBuilder.java:72)
	at compiler.valhalla.valuetypes.TestNullableValueTypes.<clinit>(TestNullableValueTypes.java:229)
	... 9 more

Am I missing something?

I've also noticed that the webrev patch does not contain all the changes:
http://cr.openjdk.java.net/~mchung/valhalla/webrevs/q-mirror.01/q-mirror.changeset

For example, it misses the changes to the compiler tests. Maybe it also misses other parts and
that's why I'm still seeing these failures.

Thanks,
Tobias



More information about the valhalla-dev mailing list