On 04/25/2015 12:24 AM, Peter Levart wrote:

On 04/24/2015 11:06 PM, John Rose wrote:
Good point.  Are you seeing a leak in practice?
The cache is important, especially to inexact MH.invoke.
— John

Well, yes. I am (re)implementing annotations (proxies) using Remi's Proxy2 and made it all the way except for the following failing jtreg test:

jdk/test/java/lang/annotation/loaderLeak/Main.java

...which made me find this issue. What I'm doing is the following:

For implementing some annotation @Ann proxy's hashCode() method for example, I prepare DMHs with the following signature (T)int for Ts being all primitives, primitive arrays, Object[] and Object. I cache them in a system class static field referenced HashMap keyed by Class<T>. These are the functions that take an annotation member value and map it to it's hashCode. When the value is of some Object (or Object[] in case it is an array) subtype - for example when the member value is an annotation of type V, I take the (Object)int DMH and transform it with .asType(methodType(int.class, V.class)) to get (V)int, which is necessary to further wrap it with filterArguments where the filter is a member field getter of type (Ann)V so that I get (Ann)int MHs as a kind of hashCodeExtractors for all annotation members (I'll present the details later)...

I'm curious to see your implementation.

rgds,
Rémi

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

Reply via email to