6804523: Tuple Signatures

Michael Barker mikeb01 at gmail.com
Sun May 15 01:35:07 PDT 2011


Hi,

I've been following the MLVM list for a while now and I would like to
get involved.  I'm interested in tuple signatures
(http://blogs.oracle.com/jrose/entry/tuples_in_the_vm). I'm fairly new
to the hotspot code base, so you may have to forgive my lack of
knowledge.

I've spent a couple of weeks looking through the hotspot code and a
couple of days hacking away in classFileParser.cpp & signature.cpp and
I managed (with a lot of nastiness) to get a class file with a method
signature containing anonymous tuple to load.

My biggest question is, where should the erasure of the tuple
signature be handled?  There seems to be a couple of approaches that
would work.  The one I'm leaning toward it having most of the logic
implemented in the SignatureIterator (and friends inside
signature.{cpp,hpp}) and only storing the un-erased signature in the
constant pool.  Those parts that care about the full signature e.g.
LinkVerifier can just use the UTF-8 string as normal, the parts that
care about the detail of the signature, e.g. argument counts/size can
just walk it using an iterator.

The other possibility would be to construct a second entry in the
constant pool with the erased signature and have the methodOopDesc be
able to return either, leaving the SignatureIterator unchanged.  This
feels more brittle as it would be very easy accidentally pass the
wrong one to the SignatureIterator or simply not have enough
information to know which version was required in a given context.

Regards,
Mike.

P.S.  I haven't signed the contributor agreement yet, I'll send that
off on Monday once I'm near a printer.


More information about the mlvm-dev mailing list