6939224: MethodHandle.invokeGeneric needs to perform the correct set of conversions

Reviewed-by: never
This commit is contained in:
John R Rose 2010-09-13 23:24:30 -07:00
parent 7be7d19ba5
commit 52e3d262a1
17 changed files with 227 additions and 57 deletions

View file

@ -333,8 +333,7 @@ MethodHandleWalker::walk(TRAPS) {
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 @@ public:
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: ");