I didn't knew this list was in German :-)
Le mercredi 1 août 2012 à 18:26, Roman Kennke a écrit : > Hi Christian! > > Danke für den Tip, ich hab mir die Implementierungen in TemplateTable > und auch die existierenden Implementierungen für die anderen invoke* > bytecodes in bytecodeInterpreter.cpp angeschaut, und bin mit folgender > Implementierung herausgekommen: > > CASE(_invokehandle): { > if (!EnableInvokeDynamic) { > ShouldNotReachHere(); > } > > u2 index = Bytes::get_native_u2(pc+1); > > ConstantPoolCacheEntry* cache = cp->entry_at(index); > > if (! cache->is_resolved((Bytecodes::Code) opcode)) { > CALL_VM(InterpreterRuntime::resolve_invokehandle(THREAD), > handle_exception); > cache = cp->entry_at(index); > } > > oop result = cache->f1_as_instance(); > > VERIFY_OOP(result); > oop method_handle = java_lang_invoke_CallSite::target(result); > CHECK_NULL(method_handle); > > istate->set_msg(call_method_handle); > istate->set_callee((methodOop) method_handle); > istate->set_bcp_advance(3); > > UPDATE_PC_AND_RETURN(0); // I'll be back... > } > > Kannst Du kurz drüberschauen ob das korrekt aussieht? Das Problem ist, > daß ich wirklich nicht 100% weiß, was invokehandle eigentlich macht. > Soweit ich das verstehe, löst es einen polymorphen Methodenaufruf zu > MethodHandle.invoke*() auf und springt dann zu selbigem. > > Ich brauch echt ein bisschen Hilfe.. Hotspot und JSR292 sind noch > ziemlich kalte Wasser für mich zum reinspringen ;-) > > Cheers, Roman > > > 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 > > > > > > > > Regards, > > > Roman > > > > > > > > > _______________________________________________ > > > mlvm-dev mailing list > > > mlvm-dev@openjdk.java.net > > > http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev > > > > > > > > > _______________________________________________ > > mlvm-dev mailing list > > mlvm-dev@openjdk.java.net > > http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev > > > > > > _______________________________________________ > mlvm-dev mailing list > mlvm-dev@openjdk.java.net > http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev > >
_______________________________________________ mlvm-dev mailing list mlvm-dev@openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev