How to filter results of a virtual method?

Jim Laskey jlaskey at me.com
Fri Jan 28 06:31:27 PST 2011


That appears to be true.

On 2011-01-27, at 11:09 PM, Kirill Shirokov wrote:

> By the way, why exactInvoker() is needed? Isn't the following true?
> 
> exactInvoker(target.type()).bindTo(target) == target
> 
> Kirill
> 
> On 01/27/2011 12:01 AM, Jim Laskey wrote:
>> I think it's a simple issue.  Drop should use 1 instead of 0.
>> 
>> 
>>     public static
>>     MethodHandle filterReturnValue(MethodHandle target, MethodHandle filter) {
>>         MethodType targetType = target.type();
>>         MethodType filterType = filter.type();
>>         if (filterType.parameterCount() != 1
>>             || filterType.parameterType(0) != targetType.returnType())
>>             System.err.println("target and filter types do not match");
>>         // FIXME: Too many nodes here.
>>         MethodHandle returner = dropArguments(filter, 0, targetType.parameterList());<<<   0 should be 1
>>         return foldArguments(returner, exactInvoker(target.type()).bindTo(target));
>>     }
>> 
>> Cheers,
>> 
>> -- Jim
> _______________________________________________
> mlvm-dev mailing list
> mlvm-dev at openjdk.java.net
> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev



More information about the mlvm-dev mailing list