diff options
Diffstat (limited to 'runtime/method_handles.cc')
| -rw-r--r-- | runtime/method_handles.cc | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/runtime/method_handles.cc b/runtime/method_handles.cc index 1327a24905..286e0978bc 100644 --- a/runtime/method_handles.cc +++ b/runtime/method_handles.cc @@ -625,6 +625,10 @@ bool MethodHandleFieldAccess(Thread* self, case mirror::MethodHandle::kInstanceGet: { size_t obj_reg = operands->GetOperand(0); ObjPtr<mirror::Object> obj = shadow_frame.GetVRegReference(obj_reg); + if (obj == nullptr) { + ThrowNullPointerException("Receiver is null"); + return false; + } MethodHandleFieldGet(self, shadow_frame, obj, field, field_type, result); return true; } @@ -648,6 +652,10 @@ bool MethodHandleFieldAccess(Thread* self, callsite_type->GetPTypes()->Get(kPTypeIndex)->GetPrimitiveType(), value_reg); ObjPtr<mirror::Object> obj = shadow_frame.GetVRegReference(obj_reg); + if (obj == nullptr) { + ThrowNullPointerException("Receiver is null"); + return false; + } return MethodHandleFieldPut(self, shadow_frame, obj, field, field_type, value); } case mirror::MethodHandle::kStaticPut: { |