diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/interpreter/interpreter.cc | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/interpreter/interpreter.cc b/src/interpreter/interpreter.cc index 5992c678c..e1773f0cd 100644 --- a/src/interpreter/interpreter.cc +++ b/src/interpreter/interpreter.cc @@ -970,10 +970,11 @@ static JValue Execute(Thread* self, MethodHelper& mh, const DexFile::CodeItem* c Object* obj = shadow_frame.GetVRegReference(inst->VRegA_11x()); if (UNLIKELY(obj == NULL)) { ThrowNullPointerExceptionFromDexPC(shadow_frame.GetCurrentLocationForThrow()); + HANDLE_PENDING_EXCEPTION(); } else { DoMonitorEnter(self, obj); + POSSIBLY_HANDLE_PENDING_EXCEPTION(Next_1xx); } - POSSIBLY_HANDLE_PENDING_EXCEPTION(Next_1xx); break; } case Instruction::MONITOR_EXIT: { @@ -981,10 +982,11 @@ static JValue Execute(Thread* self, MethodHelper& mh, const DexFile::CodeItem* c Object* obj = shadow_frame.GetVRegReference(inst->VRegA_11x()); if (UNLIKELY(obj == NULL)) { ThrowNullPointerExceptionFromDexPC(shadow_frame.GetCurrentLocationForThrow()); + HANDLE_PENDING_EXCEPTION(); } else { DoMonitorExit(self, obj); + POSSIBLY_HANDLE_PENDING_EXCEPTION(Next_1xx); } - POSSIBLY_HANDLE_PENDING_EXCEPTION(Next_1xx); break; } case Instruction::CHECK_CAST: { |