Mercurial > hg > shark > hotspot
changeset 2420:570ba1a7afe1
More
author | Gary Benson <gbenson@redhat.com> |
---|---|
date | Wed, 23 Mar 2011 17:45:21 +0000 |
parents | 939ee6ac64b8 |
children | d4fc99c27093 |
files | src/share/vm/interpreter/bytecodeInterpreter.cpp src/share/vm/interpreter/bytecodeInterpreter.hpp |
diffstat | 2 files changed, 10 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/vm/interpreter/bytecodeInterpreter.cpp Wed Mar 23 16:51:51 2011 +0000 +++ b/src/share/vm/interpreter/bytecodeInterpreter.cpp Wed Mar 23 17:45:21 2011 +0000 @@ -2206,7 +2206,15 @@ handle_exception); } - Unimplemented(); + VERIFY_OOP(cache->f1()); + oop method_handle = java_lang_invoke_CallSite::target(cache->f1()); + CHECK_NULL(method_handle); + + istate->set_msg(call_method_handle); + istate->set_callee((methodOop) method_handle); + istate->set_bcp_advance(5); + + UPDATE_PC_AND_RETURN(0); // I'll be back... } CASE(_invokeinterface): {
--- a/src/share/vm/interpreter/bytecodeInterpreter.hpp Wed Mar 23 16:51:51 2011 +0000 +++ b/src/share/vm/interpreter/bytecodeInterpreter.hpp Wed Mar 23 17:45:21 2011 +0000 @@ -107,6 +107,7 @@ rethrow_exception, // unwinding and throwing exception // requests to frame manager from C++ interpreter call_method, // request for new frame from interpreter, manager responds with method_entry + call_method_handle, // like the above, except the callee is a method handle return_from_method, // request from interpreter to unwind, manager responds with method_continue more_monitors, // need a new monitor throwing_exception, // unwind stack and rethrow