< prev index next >

hotspot/test/compiler/valhalla/valuetypes/TestBoundValueTypes.java

Print this page




  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 
  24 package compiler.valhalla.valuetypes;
  25 
  26 
  27 import java.lang.invoke.*;
  28 
  29 import jdk.experimental.value.MethodHandleBuilder;
  30 import jdk.incubator.mvt.ValueType;
  31 
  32 /**
  33  * @test
  34  * @bug 8185339
  35  * @summary Test correct compilation of MethodHandles with bound value type arguments.
  36  * @modules java.base/jdk.experimental.value
  37  *          jdk.incubator.mvt
  38  * @compile -XDenableValueTypes ValueCapableClass2.java TestBoundValueTypes.java
  39  * @run main/othervm -noverify -XX:+EnableMVT -XX:CompileCommand=compileonly,compiler.valhalla.valuetypes.TestBoundValueTypes::*
  40  *                   -XX:CompileCommand=compileonly,java.lang.invoke.*::* compiler.valhalla.valuetypes.TestBoundValueTypes
  41  */
  42 public class TestBoundValueTypes {
  43     static final Object vcc = ValueCapableClass2.create(42L);
  44 
  45     static final MethodHandle mh;
  46     static {
  47         final MethodHandle getU = MethodHandleBuilder.loadCode(MethodHandles.lookup(), "getU",
  48                                         MethodType.methodType(long.class, ValueType.forClass(ValueCapableClass2.class).valueClass()),
  49                                             CODE -> {
  50                                                 CODE.
  51                                                 vload(0).
  52                                                 vbox(ValueCapableClass2.class).
  53                                                 vunbox(ValueType.forClass(ValueCapableClass2.class).valueClass()).
  54                                                 getfield(ValueType.forClass(ValueCapableClass2.class).valueClass(), "u", "J").
  55                                                 lreturn();
  56                                             });
  57         // Bind the value type argument to 'vcc'
  58         mh = MethodHandles.insertArguments(getU, 0, vcc);
  59     }


  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 
  24 package compiler.valhalla.valuetypes;
  25 
  26 
  27 import java.lang.invoke.*;
  28 
  29 import jdk.experimental.value.MethodHandleBuilder;
  30 import jdk.incubator.mvt.ValueType;
  31 
  32 /**
  33  * @test
  34  * @bug 8185339
  35  * @summary Test correct compilation of MethodHandles with bound value type arguments.
  36  * @modules java.base/jdk.experimental.value
  37  *          jdk.incubator.mvt
  38  * @compile -XDenableValueTypes ValueCapableClass2.java TestBoundValueTypes.java
  39  * @run main/othervm -XX:+EnableMVT -XX:CompileCommand=compileonly,compiler.valhalla.valuetypes.TestBoundValueTypes::*
  40  *                   -XX:CompileCommand=compileonly,java.lang.invoke.*::* compiler.valhalla.valuetypes.TestBoundValueTypes
  41  */
  42 public class TestBoundValueTypes {
  43     static final Object vcc = ValueCapableClass2.create(42L);
  44 
  45     static final MethodHandle mh;
  46     static {
  47         final MethodHandle getU = MethodHandleBuilder.loadCode(MethodHandles.lookup(), "getU",
  48                                         MethodType.methodType(long.class, ValueType.forClass(ValueCapableClass2.class).valueClass()),
  49                                             CODE -> {
  50                                                 CODE.
  51                                                 vload(0).
  52                                                 vbox(ValueCapableClass2.class).
  53                                                 vunbox(ValueType.forClass(ValueCapableClass2.class).valueClass()).
  54                                                 getfield(ValueType.forClass(ValueCapableClass2.class).valueClass(), "u", "J").
  55                                                 lreturn();
  56                                             });
  57         // Bind the value type argument to 'vcc'
  58         mh = MethodHandles.insertArguments(getU, 0, vcc);
  59     }
< prev index next >