void return type for foldArguments combiner
forax at univ-mlv.fr
Sun Mar 20 06:40:23 PDT 2011
On 03/20/2011 02:30 AM, Kirill Shirokov wrote:
> 1. Can the combiner method in MethodHandles.foldArguments() have the void return type, so the combiner result is not passed to target?
> This would allow to easily add a debugging hook (or aspect) to a MethodHandle call.
It should, even if the current implementation doesn't support that.
I'm happy that you raise that point, I have seen this problem but forget
to report it to the EG.
> 2. Can I apply MethodHandles.filterReturnValue() to a void target method to make the method return some value?
> With the current implementation, to add a void "hook" to a method handle, it seems that I have to do the following:
> target = MethodHandles.foldArguments(
> MethodHandles.dropArguments(target, 0),
> MethodHandles.convertArguments(hook, MethodType.methodType(int.class, target.parameterArray()))
> Please correct me if I'm wrong.
You're right filterReturnValue() should also work with void target
as it's a convenient method that can be express using foldArguments.
> Thanks in advance!
More information about the mlvm-dev