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