mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 07:14:30 +02:00
7167406: (Zero) Fix for InvokeDynamic needed
Reviewed-by: chrisphi, dholmes
This commit is contained in:
parent
cfc6c74d02
commit
97d244d75a
1 changed files with 19 additions and 0 deletions
|
@ -1026,6 +1026,16 @@ void CppInterpreter::process_method_handle(oop method_handle, TRAPS) {
|
||||||
java_lang_invoke_AdapterMethodHandle::vmargslot(method_handle);
|
java_lang_invoke_AdapterMethodHandle::vmargslot(method_handle);
|
||||||
oop arg = VMSLOTS_OBJECT(arg_slot);
|
oop arg = VMSLOTS_OBJECT(arg_slot);
|
||||||
jvalue arg_value;
|
jvalue arg_value;
|
||||||
|
if (arg == NULL) {
|
||||||
|
// queue a nullpointer exception for the caller
|
||||||
|
stack->set_sp(calculate_unwind_sp(stack, method_handle));
|
||||||
|
CALL_VM_NOCHECK_NOFIX(
|
||||||
|
throw_exception(
|
||||||
|
thread, vmSymbols::java_lang_NullPointerException()));
|
||||||
|
// NB all oops trashed!
|
||||||
|
assert(HAS_PENDING_EXCEPTION, "should do");
|
||||||
|
return;
|
||||||
|
}
|
||||||
BasicType arg_type = java_lang_boxing_object::get_value(arg, &arg_value);
|
BasicType arg_type = java_lang_boxing_object::get_value(arg, &arg_value);
|
||||||
if (arg_type == T_LONG || arg_type == T_DOUBLE) {
|
if (arg_type == T_LONG || arg_type == T_DOUBLE) {
|
||||||
intptr_t *unwind_sp = calculate_unwind_sp(stack, method_handle);
|
intptr_t *unwind_sp = calculate_unwind_sp(stack, method_handle);
|
||||||
|
@ -1112,6 +1122,15 @@ void CppInterpreter::process_method_handle(oop method_handle, TRAPS) {
|
||||||
case T_SHORT:
|
case T_SHORT:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// INT results sometimes need narrowing
|
||||||
|
case T_BOOLEAN:
|
||||||
|
case T_CHAR:
|
||||||
|
case T_BYTE:
|
||||||
|
case T_SHORT:
|
||||||
|
switch (src_rtype) {
|
||||||
|
case T_INT:
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tty->print_cr("unhandled conversion:");
|
tty->print_cr("unhandled conversion:");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue