void return type for foldArguments combiner
Rémi Forax
forax at univ-mlv.fr
Sun Mar 20 06:40:23 PDT 2011
On 03/20/2011 02:30 AM, Kirill Shirokov wrote:
> Hi,
>
> 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!
>
> --Kirill
Rémi
More information about the mlvm-dev
mailing list