Path: blob/master/test/hotspot/jtreg/compiler/jsr292/InvokerSignatureMismatch.java
41149 views
package compiler.jsr292;12import java.lang.invoke.MethodHandle;3import java.lang.invoke.MethodHandles;4import java.lang.invoke.MethodType;5import java.lang.invoke.MethodHandleHelper;6import jdk.internal.vm.annotation.ForceInline;78/*9* @test10* @bug 816611011* @library /test/lib / patches12* @modules java.base/jdk.internal.misc13* java.base/jdk.internal.vm.annotation14*15* @build java.base/java.lang.invoke.MethodHandleHelper16* @run main/bootclasspath/othervm -XX:+IgnoreUnrecognizedVMOptions -Xbatch -XX:-TieredCompilation17* compiler.jsr292.InvokerSignatureMismatch18*/19public class InvokerSignatureMismatch {2021static final MethodHandle INT_MH;2223static {24MethodHandle mhI = null;25try {26mhI = MethodHandles.lookup().findStatic(InvokerSignatureMismatch.class, "bodyI", MethodType.methodType(void.class, int.class));27} catch (Throwable e) {28}29INT_MH = mhI;30}3132public static void main(String[] args) throws Throwable {33for (int i = 0; i < 50_000; i++) { // OSR34mainLink(i);35mainInvoke(i);36}37}3839static void mainLink(int i) throws Throwable {40Object name = MethodHandleHelper.internalMemberName(INT_MH);41MethodHandleHelper.linkToStatic((float) i, name);42}4344static void mainInvoke(int i) throws Throwable {45MethodHandleHelper.invokeBasicV(INT_MH, (float) i);46}4748static int cnt = 0;49static void bodyI(int x) {50if ((x & 1023) == 0) { // already optimized x % 1024 == 051++cnt;52}53}5455}565758