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.
Well, yes. I am (re)implementing annotations (proxies) using Remi's
Proxy2 and made it all the way except for the following failing jtreg
...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.
mlvm-dev mailing list