Mercurial > hg > shark > hotspot
changeset 2271:a5cc6fde5927
More
author | Gary Benson <gbenson@redhat.com> |
---|---|
date | Fri, 11 Mar 2011 10:25:46 +0000 |
parents | a40109f1e3c7 |
children | 4a1bc9de9c19 |
files | src/cpu/zero/vm/cppInterpreter_zero.cpp |
diffstat | 1 files changed, 5 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/cpu/zero/vm/cppInterpreter_zero.cpp Fri Mar 11 10:18:44 2011 +0000 +++ b/src/cpu/zero/vm/cppInterpreter_zero.cpp Fri Mar 11 10:25:46 2011 +0000 @@ -639,7 +639,8 @@ // Compare the method type against that of the receiver oop mhtype = java_dyn_MethodHandle::type(method_handle); - if (mhtype != method_type) { + bool is_exact = mhtype == method_type; + if (!is_exact) { if (method->intrinsic_id() == vmIntrinsics::_invokeExact) { CALL_VM_NOCHECK_NOFIX( InterpreterRuntime::throw_WrongMethodTypeException( @@ -672,11 +673,13 @@ if (HAS_PENDING_EXCEPTION) result_slots = 0; - // Pop the method handle argument, which inconveniently will + // Pop the method handle arguments, which inconveniently will // be underneath the result being returned if one is present intptr_t result[2]; for (int i = 0; i < result_slots; i++) result[i] = stack->pop(); + if (!is_exact) + stack->pop(); stack->pop(); for (int i = result_slots - 1; i >= 0; i--) stack->push(result[i]);