diff options
Diffstat (limited to 'runtime/method_handles.cc')
-rw-r--r-- | runtime/method_handles.cc | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/runtime/method_handles.cc b/runtime/method_handles.cc index f1adc32ce2..3c22d7f656 100644 --- a/runtime/method_handles.cc +++ b/runtime/method_handles.cc @@ -141,7 +141,14 @@ bool IsParameterTypeConvertible(ObjPtr<mirror::Class> from, ObjPtr<mirror::Class } Primitive::Type unboxed_type; if (GetUnboxedPrimitiveType(from, &unboxed_type)) { - return Primitive::IsWidenable(unboxed_type, to_primitive); + if (unboxed_type == to_primitive) { + // Straightforward unboxing conversion such as Boolean => boolean. + return true; + } else { + // Check if widening operations for numeric primitives would work, + // such as Byte => byte => long. + return Primitive::IsWidenable(unboxed_type, to_primitive); + } } } |