package st.gravel.support.jvm.runtime; import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles.Lookup; import java.lang.invoke.MethodType; public class FieldWriteCallSite extends FieldAccessCallSite { private FieldWriteCallSite(Lookup lookup, MethodType type, String selector, Class fieldType) { super(lookup, type, selector); } public static FieldWriteCallSite newInstance(Lookup lookup, MethodType type, String selector, Class fieldType) { FieldWriteCallSite callsite = new FieldWriteCallSite(lookup, type, selector, fieldType); BaseCallSite.register(callsite); return callsite; } @Override protected MethodHandle findAccess(Class receiverClass) throws NoSuchFieldException, IllegalAccessException { return lookup.findSetter(receiverClass, selector, getFieldType(receiverClass)); } }