package st.gravel.support.compiler; import java.lang.invoke.CallSite; import java.lang.invoke.MethodHandles; import java.lang.invoke.MethodType; import org.objectweb.asm.Handle; import org.objectweb.asm.Opcodes; import org.objectweb.asm.Type; import st.gravel.support.jvm.runtime.MethodLinker; public class BootstrapHandles { public static final Handle bootstrap = new Handle(Opcodes.H_INVOKESTATIC, Type.getInternalName(MethodLinker.class), "bootstrap", MethodType .methodType(CallSite.class, MethodHandles.Lookup.class, String.class, MethodType.class) .toMethodDescriptorString()); public static final Handle literalBlockSendBootstrap = new Handle(Opcodes.H_INVOKESTATIC, Type.getInternalName(MethodLinker.class), "literalBlockSendBootstrap", MethodType .methodType(CallSite.class, MethodHandles.Lookup.class, String.class, MethodType.class, String.class, String.class, String.class) .toMethodDescriptorString()); public static final Handle superBootstrap = new Handle( Opcodes.H_INVOKESTATIC, Type.getInternalName(MethodLinker.class), "superBootstrap", MethodType.methodType(CallSite.class, MethodHandles.Lookup.class, String.class, MethodType.class, String.class).toMethodDescriptorString()); public static final Handle blockBootstrap = new Handle( Opcodes.H_INVOKESTATIC, Type.getInternalName(MethodLinker.class), "blockBootstrap", MethodType.methodType(CallSite.class, MethodHandles.Lookup.class, String.class, MethodType.class, String.class, String.class).toMethodDescriptorString()); public static final Handle fieldReadBootstrap = new Handle( Opcodes.H_INVOKESTATIC, Type.getInternalName(MethodLinker.class), "fieldReadBootstrap", MethodType.methodType(CallSite.class, MethodHandles.Lookup.class, String.class, MethodType.class) .toMethodDescriptorString()); public static final Handle fieldWriteBootstrap = new Handle( Opcodes.H_INVOKESTATIC, Type.getInternalName(MethodLinker.class), "fieldWriteBootstrap", MethodType.methodType(CallSite.class, MethodHandles.Lookup.class, String.class, MethodType.class) .toMethodDescriptorString()); public static final Handle globalReadBootstrap = new Handle( Opcodes.H_INVOKESTATIC, Type.getInternalName(MethodLinker.class), "globalReadBootstrap", MethodType.methodType(CallSite.class, MethodHandles.Lookup.class, String.class, MethodType.class, String.class).toMethodDescriptorString()); public static final Handle globalWriteBootstrap = new Handle( Opcodes.H_INVOKESTATIC, Type.getInternalName(MethodLinker.class), "globalWriteBootstrap", MethodType.methodType(CallSite.class, MethodHandles.Lookup.class, String.class, MethodType.class, String.class).toMethodDescriptorString()); public static final Handle constructorBootstrap = new Handle( Opcodes.H_INVOKESTATIC, Type.getInternalName(MethodLinker.class), "constructorBootstrap", MethodType.methodType(CallSite.class, MethodHandles.Lookup.class, String.class, MethodType.class, String.class).toMethodDescriptorString()); }