91 import jdk.internal.dynalink.linker.LinkRequest; |
91 import jdk.internal.dynalink.linker.LinkRequest; |
92 import jdk.internal.dynalink.linker.LinkerServices; |
92 import jdk.internal.dynalink.linker.LinkerServices; |
93 import jdk.internal.dynalink.linker.TypeBasedGuardingDynamicLinker; |
93 import jdk.internal.dynalink.linker.TypeBasedGuardingDynamicLinker; |
94 import jdk.internal.dynalink.support.Guards; |
94 import jdk.internal.dynalink.support.Guards; |
95 |
95 |
96 |
|
97 /** |
96 /** |
98 * Simple linker that implements the "dyn:call" operation for {@link DynamicMethod} objects - the objects returned by |
97 * Simple linker that implements the "dyn:call" operation for {@link DynamicMethod} objects - the objects returned by |
99 * "dyn:getMethod" from {@link AbstractJavaLinker}. |
98 * "dyn:getMethod" from {@link AbstractJavaLinker}. |
100 */ |
99 */ |
101 class DynamicMethodLinker implements TypeBasedGuardingDynamicLinker { |
100 class DynamicMethodLinker implements TypeBasedGuardingDynamicLinker { |
102 @Override |
101 @Override |
103 public boolean canLinkType(Class<?> type) { |
102 public boolean canLinkType(Class<?> type) { |
104 return DynamicMethod.class.isAssignableFrom(type); |
103 return DynamicMethod.class.isAssignableFrom(type); |
105 }; |
104 } |
106 |
105 |
107 @Override |
106 @Override |
108 public GuardedInvocation getGuardedInvocation(LinkRequest linkRequest, LinkerServices linkerServices) { |
107 public GuardedInvocation getGuardedInvocation(LinkRequest linkRequest, LinkerServices linkerServices) { |
109 final Object receiver = linkRequest.getReceiver(); |
108 final Object receiver = linkRequest.getReceiver(); |
110 if(!(receiver instanceof DynamicMethod)) { |
109 if(!(receiver instanceof DynamicMethod)) { |