blob: 282b5ae0fa33cd779a279f5dbbab73f507df4e9c [file] [log] [blame]
// Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
package invokecustom;
import java.lang.invoke.CallSite;
import java.lang.invoke.ConstantCallSite;
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
public class InvokeCustom {
private static String staticField1 = "StaticField1";
private static void targetMethodTest1() {
System.out.println("Hello World!");
}
private static void targetMethodTest2(MethodHandle mhInvokeStatic, MethodHandle mhGetStatic)
throws Throwable {
mhInvokeStatic.invokeExact();
System.out.println(mhGetStatic.invoke());
}
public static CallSite bsmLookupStatic(MethodHandles.Lookup caller, String name, MethodType type)
throws NoSuchMethodException, IllegalAccessException {
final MethodHandles.Lookup lookup = MethodHandles.lookup();
final MethodHandle targetMH = lookup.findStatic(lookup.lookupClass(), name, type);
return new ConstantCallSite(targetMH.asType(type));
}
}