indy and tailc

Rémi Forax forax at univ-mlv.fr
Tue Feb 2 08:08:13 PST 2010


Le 02/02/2010 03:20, John Rose a écrit :
> On Jan 31, 2010, at 11:19 PM, Charles Oliver Nutter wrote:
>
>    
>> The other use case, which I did not attempt, was in regenerating call
>> sites a la the DLR's DynamicSite logic (which repeatedly regenerates a
>> call site with a series of instanceof checks, to specialize the call
>> paths iteratively). Again, InvokeDynamic potentially handles this
>> better?
>>      
> It is designed to do this; e.g., see section 5.3 in my VMIL paper.
>    

CallSite.setTarget() is your friend :)

> One bit of engineering that needs investigation is how to build up DLR-style call sites incrementally without doing quadratic recompilation work.
>    

In general, the full adapter blob is created before the compilation is 
triggered.
Otherwise a way to do this is to provide a specific mutable adapter :

public class MethodHandles {
   /** create a dispatch table
    */
   public static DispatchMethodHandle dispatchTable(MethodType type, int 
pos)
}

public class DispatchTable extends MethodHandle {
   public addTarget(Class<?> clazz, MethodHandle mh) { ... }
}

Rémi


More information about the mlvm-dev mailing list