On 12/11/2010 05:31 PM, Jim Laskey wrote: >> public static void syncTargets(MutableCallSite[] sites, MethodHandle[] >> newTargets) > +1 > > I think this provides the most flexibility, performance and ease. If a > developer wants to use a wrapper method to do one up 'set and sync', they > have the flexibility to do so. > > Naive question: If setTarget is removed and set is done either by constructor > or by syncTargets, do we still need both these flavours of CallSite? > > Cheers, > > -- Jim
I think it's possible to use a synchronized block enclosing the setTargets and the corresponding syncs instead of syncTargets. From my experience, changing something on a metaclass often require to propagate changes on subclasses. This can't be done using atomics so you already need such synchronized block. The CallSite's constructor that takes a target is not that useful because usually you bind the CallSite object to the method handle chain. Otherwise, you have no CallSite to call sync on it. Moreover, depending on the runtime language you know some invariants, by example, some languages doesn't allow to change the operator +, in that case calling sync to update a callsite that uses + is an unnecessary cost. Rémi _______________________________________________ mlvm-dev mailing list mlvm-dev@openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev