Missing invokehandle handling in bytecodeInterpreter.cpp

Roman Kennke rkennke at redhat.com
Tue Aug 7 15:19:57 PDT 2012


Am Donnerstag, den 02.08.2012, 12:55 +0200 schrieb Roman Kennke:
> > > Am Dienstag, den 31.07.2012, 17:28 -0700 schrieb Christian Thalinger:
> > > > On Jul 31, 2012, at 8:24 AM, Roman Kennke wrote:
> > > > 
> > > > > Am Dienstag, den 31.07.2012, 14:19 +0200 schrieb Roman Kennke:
> > > > >> Hi there,
> > > > >> 
> > > > >> I am currently (trying to) get the Hotspot-Zero port in shape for MLVM.
> > > > >> I am running into a road block here:
> > > > >> 
> > > > >> #  Internal Error
> > > > >> (/home/rkennke/src/openjdk/hotspot-comp/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp:2464), pid=18585, tid=140737337317120
> > > > >> #  fatal error: Unimplemented opcode 232 = invokehandle
> > > > >> 
> > > > >> Looking at bytecodeInterpreter.cpp it seem to simply not handle
> > > > >> invokehandle. I would like to add this, but I don't know what exactly
> > > > >> this bytecode is supposed to do. Could you give me pointers to the
> > > > >> necessary information or provide some help with this? (Or maybe I am
> > > > >> doing something wrong here, and should not arrive there at all?)
> > > > > 
> > > > > I disabled the invokevirtual->invokehandle rewriting for now (this
> > > > > should be safe/correct, right?), and it brings me further into my
> > > > > unimplemented handler for vmIntrinsics::_invokeBasic. Need to figure out
> > > > > what this is supposed to do (any hints about this one?)..
> > > > 
> > > > You can't disable the rewriting and run JSR 292 code.  That simply won't work.  Look at one of the implementations of TemplateTable::_invokehandle and try to do the same in the C++ interpreter.
> > > > 
> > > > -- Chris
> 
> Ok, I think I made some progress, but now got stuck again.

Alright, I think I figured everything out. Implemented interpreter
bytecode handler for invokehandle and basically rewrote the
invokedynamic handler, and implemented the intrinsics for invokeBasic,
linkToStatic, linkToSpecial, linkToVirtual and linkToInterface and it
works (i.e. passes jtreg testcases for java/lang/invoke). I will make
the code available soon (as soon as it's cleaned up, probably after my
vacation, last week of August).

Cheers,
Roman




More information about the mlvm-dev mailing list