diff src/share/vm/prims/methodHandleWalk.cpp @ 1793:d257356e35f0

6939224: MethodHandle.invokeGeneric needs to perform the correct set of conversions Reviewed-by: never
author jrose
date Mon, 13 Sep 2010 23:24:30 -0700
parents d5d065957597
children f95d63e2154a
line wrap: on
line diff
--- a/src/share/vm/prims/methodHandleWalk.cpp	Mon Sep 13 16:45:00 2010 -0700
+++ b/src/share/vm/prims/methodHandleWalk.cpp	Mon Sep 13 23:24:30 2010 -0700
@@ -333,8 +333,7 @@
         ArgToken arglist[2];
         arglist[0] = arg;         // outgoing value
         arglist[1] = ArgToken();  // sentinel
-        assert(false, "I think the argument count must be 1 instead of 0");
-        arg = make_invoke(NULL, boxer, Bytecodes::_invokevirtual, false, 0, &arglist[0], CHECK_(empty));
+        arg = make_invoke(NULL, boxer, Bytecodes::_invokevirtual, false, 1, &arglist[0], CHECK_(empty));
         change_argument(src, arg_slot, T_OBJECT, arg);
         break;
       }
@@ -1398,7 +1397,9 @@
 
 extern "C"
 void print_method_handle(oop mh) {
-  if (java_dyn_MethodHandle::is_instance(mh)) {
+  if (!mh->is_oop()) {
+    tty->print_cr("*** not a method handle: "INTPTR_FORMAT, (intptr_t)mh);
+  } else if (java_dyn_MethodHandle::is_instance(mh)) {
     //MethodHandlePrinter::print(mh);
   } else {
     tty->print("*** not a method handle: ");