summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/interpreter/interpreter.cc6
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: {