[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:

But even with these fixes, I still see:

Caused by: java.lang.IllegalStateException: java.lang.IllegalStateException:
java.lang.NoSuchMethodException: no such method:
	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:

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.


More information about the valhalla-dev mailing list