src/jdk/internal/dynalink/beans/StaticClassIntrospector.java

changeset 404
18d467e94150
parent 227
7917ef020898
child 952
6d5471a497fb
child 962
ac62e33a99b0
equal deleted inserted replaced
403:4afdc5bec43b 404:18d467e94150
104 return map; 104 return map;
105 } 105 }
106 106
107 @Override 107 @Override
108 MethodHandle editMethodHandle(MethodHandle mh) { 108 MethodHandle editMethodHandle(MethodHandle mh) {
109 return editStaticMethodHandle(mh);
110 }
111
112 static MethodHandle editStaticMethodHandle(MethodHandle mh) {
109 return dropReceiver(mh, Object.class); 113 return dropReceiver(mh, Object.class);
110 } 114 }
111 115
112 static MethodHandle dropReceiver(final MethodHandle mh, final Class<?> receiverClass) { 116 static MethodHandle editConstructorMethodHandle(MethodHandle cmh) {
117 return dropReceiver(cmh, StaticClass.class);
118 }
119
120 private static MethodHandle dropReceiver(final MethodHandle mh, final Class<?> receiverClass) {
113 MethodHandle newHandle = MethodHandles.dropArguments(mh, 0, receiverClass); 121 MethodHandle newHandle = MethodHandles.dropArguments(mh, 0, receiverClass);
114 // NOTE: this is a workaround for the fact that dropArguments doesn't preserve vararg collector state. 122 // NOTE: this is a workaround for the fact that dropArguments doesn't preserve vararg collector state.
115 if(mh.isVarargsCollector() && !newHandle.isVarargsCollector()) { 123 if(mh.isVarargsCollector() && !newHandle.isVarargsCollector()) {
116 final MethodType type = mh.type(); 124 final MethodType type = mh.type();
117 newHandle = newHandle.asVarargsCollector(type.parameterType(type.parameterCount() - 1)); 125 newHandle = newHandle.asVarargsCollector(type.parameterType(type.parameterCount() - 1));

mercurial