On 06/21/2011 05:43 AM, Mark Roos wrote:

John Rose stated

        See section 5, "Case Study: Inline Caches and invokedynamic".

Thanks John, I have read that several times and it is very helpful

A small (non-megamorphic) polymorphic cache can be represented as a cascade or decision tree of GWT combinators, probably with a control block of some sort that can rebalance from time to time.

This is interesting but it seems that the jvm is in a better place to collect the information and reorder the paths. I would have to add counters and some way to remember the MHs ( no reflection yet) which seems like a lot of book keeping. My current approach is to keep track of the total methods in use and then invalidate the entire set of call sites ( cache flush ). This matches the ST I am using as
a reference and seems to keep the working set and depths under control.

A megamorphic call site can be represented using the class pattern of a two-step dispatch plus indirect function call.

How about the case where the site is megamorphic in classes but has only one or two implementations?

If the hierarchy is frozen, you can use instanceof (or Class.isInstanceof) instead of
a getClass() == as guard test.

But if it's open, you need a way to know when a class is loaded and currently
there is no "official" way to get this information.


 I'll study the foldArguments to see if I can see how to do this

The pattern is foldArgument + an invoker.


thanks

mark

Rémi

_______________________________________________
mlvm-dev mailing list
mlvm-dev@openjdk.java.net
http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev

Reply via email to