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