summaryrefslogtreecommitdiffstats
path: root/runtime/interpreter/interpreter_common.h
diff options
context:
space:
mode:
authorJeff Hao <jeffhao@google.com>2014-04-22 13:54:32 -0700
committerJeff Hao <jeffhao@google.com>2014-04-22 17:03:21 -0700
commitaa961918da5142220029da2809287e0dd537a5d7 (patch)
tree93cdad41650f353e1c7d82aaa8894037b12bb2a0 /runtime/interpreter/interpreter_common.h
parent82b1a81890970a8b07f9132aeae537a6c43df6b0 (diff)
downloadart-aa961918da5142220029da2809287e0dd537a5d7.zip
art-aa961918da5142220029da2809287e0dd537a5d7.tar.gz
art-aa961918da5142220029da2809287e0dd537a5d7.tar.bz2
Fix FindCatchBlock to work in -Xverify:none mode.
FindCatchBlock now uses ResolveType to get the exception type, since it might not be able to find it in the dex cache. Bug: 13948502 Change-Id: Ia6f1c7dc743206ae1c8551bf6239f48ee4d3a784
Diffstat (limited to 'runtime/interpreter/interpreter_common.h')
-rw-r--r--runtime/interpreter/interpreter_common.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/runtime/interpreter/interpreter_common.h b/runtime/interpreter/interpreter_common.h
index 21eeafa..65bdf0e 100644
--- a/runtime/interpreter/interpreter_common.h
+++ b/runtime/interpreter/interpreter_common.h
@@ -498,7 +498,8 @@ static inline uint32_t FindNextInstructionFollowingException(Thread* self,
ThrowLocation throw_location;
mirror::Throwable* exception = self->GetException(&throw_location);
bool clear_exception = false;
- uint32_t found_dex_pc = shadow_frame.GetMethod()->FindCatchBlock(exception->GetClass(), dex_pc,
+ SirtRef<mirror::Class> exception_class(self, exception->GetClass());
+ uint32_t found_dex_pc = shadow_frame.GetMethod()->FindCatchBlock(exception_class, dex_pc,
&clear_exception);
if (found_dex_pc == DexFile::kDexNoIndex) {
instrumentation->MethodUnwindEvent(self, this_object,