Hi again, I have a Groovy-indy program looking like this https://gist.github.com/abargnesi/6628656
This did work in 7u25 and does not work in 7u40 or the developer preview of jdk8. What I found out is, if you remove an argument the IllegalArgumentException is not thrown What I have (using 7u40 debug information) is a SimpleMethodHandle type: (Class,int,Class,Class,Class,Class,Class,Class,Class)Object lambda: convert=Lambda(a0:L,a1:L,a2:I,a3:L,a4:L,a5:L,a6:L,a7:L,a8:L,a9:L)=>{ t10:L=MethodHandle(int)Object(a2:I); arity: 10 On this I call MethodHandles.catchException(handle, GroovyRuntimeException.class, UNWRAP_EXCEPTION); UNWRAP_EXCEPTION is the the result of a findStatic and looks basically like this: > public static Object unwrap(GroovyRuntimeException gre) throws Throwable { > throw ScriptBytecodeAdapter.unwrap(gre); > } (I add it more for the signature, than for the content.) After the the call to catchException the type of the handle is changed to one containing for everything Object, instead of the original type: SimpleMethodHandle type: (Object,Object,Object,Object,Object,Object,Object,Object,Object)Object lambda: collect=Lambda(a0:L,a1:L,a2:L,a3:L,a4:L,a5:L,a6:L,a7:L,a8:L,a9:L)=>{ t10:L=ValueConversions.array(a1:L,a2:L,a3:L,a4:L,a5:L,a6:L,a7:L,a8:L,a9:L); t11:L=MethodHandle(Object[])Object(t10:L);t11:L} arity: 10 Later on I add a switchpoint guard, which expects the original type and thus I get a runtime error about mismatched types. With a lower arity the type change does not happen. Now.. looking at the documentation of the method I then this here: > * T target(A..., B...); > * T handler(ExType, A...); > * T adapter(A... a, B... b) { > * try { > * return target(a..., b...); > * } catch (ExType ex) { > * return handler(ex, a...); > * } > * } implies to me, that the type of the returned handle (adapter) should be equal to the type of the handle target. And that would mean this is a bug. Am I right about this? If this is no bug, then the documentation absolutely needs an update, plus I doubt such behaviour is good for performance. bye blackdrag -- Jochen "blackdrag" Theodorou - Groovy Project Tech Lead blog: http://blackdragsview.blogspot.com/ german groovy discussion newsgroup: de.comp.lang.misc For Groovy programming sources visit http://groovy-lang.org _______________________________________________ mlvm-dev mailing list mlvm-dev@openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev