A simple PIC api

Julien Ponge julien at ponge.org
Tue Mar 10 13:31:02 UTC 2015


How is it different from Rémi's construct?

https://code.google.com/p/jsr292-cookbook/source/browse/trunk/inlining-cache/src/jsr292/cookbook/icache/RT.java

(we use that pattern in Golo)

- Julien

> On 09 Mar 2015, at 18:51, Mark Roos <mroos at roos.com> wrote:
> 
> I was thinking about a generic pic, easy to use but flexible and came up with the following concept api. 
> By passing the callsite and the testValue around with allowing an optional pic update I can envision 
> this as a nice building block for several caching strategies.  Of course this is all based on my use 
> model which does not use primitives.  In summary it reduces the calling of the test method to only 
> once and it supports the quick testing of a few targets.  Its also easy to understand how to use without 
> using Charlies or Remis builders. 
> 
> 
> to generate a PIC 
>         MethodHandle createPic(Callsite site, MethodHandle getTestValue, MethodHandle fallback) 
> 
> The getTestValue methodHandle returns the object used in the comparison process 
>         Object getTestValue(Callsite site, Object... stackArgs) 
> 
> The fallback returns a testValue and MH to use 
>         Object[] fallback(Callsite site, Object testValue, Object... stackArgs) 
> 
>         where the return value is [Object newTestValue][MethodHandle newMH]  // use case for Tuple 
>                 if(newTestValue != null) lookup.insert(newTest, newMH) 
>                 newMh.invoke() 
>         This path should also be considered fast as the first step of a fallback could be to check a cache of MH. 
> 
> the lookup process could be a simple chain of compare/branch operations.  And the mh replacement could be 
> a simple circular update.  This chain could be limited to less than 5. 
> 
> regards 
> mark 
> 
> _______________________________________________
> 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