From 50030ef998be09789da4a9a56738362852068f12 Mon Sep 17 00:00:00 2001 From: Mathieu Chartier Date: Fri, 8 May 2015 14:19:26 -0700 Subject: Check IsReferenceVReg during deopt Required since the quick GC maps may not agree with the verifier ones. Without this check we may copy stale object references into the shadow frame. (cherry picked from commit f00baf56ef647684888a407dbb6adadd704a2039) Bug: 20736048 Change-Id: I7783c8a8ee45cf601b08b4c38f1dec7f7d11380c --- runtime/stack.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'runtime/stack.h') diff --git a/runtime/stack.h b/runtime/stack.h index 3f1bff8b9c..ab8641b4d5 100644 --- a/runtime/stack.h +++ b/runtime/stack.h @@ -478,6 +478,9 @@ class StackVisitor { bool GetNextMethodAndDexPc(mirror::ArtMethod** next_method, uint32_t* next_dex_pc) SHARED_LOCKS_REQUIRED(Locks::mutator_lock_); + bool IsReferenceVReg(mirror::ArtMethod* m, uint16_t vreg) + SHARED_LOCKS_REQUIRED(Locks::mutator_lock_); + bool GetVReg(mirror::ArtMethod* m, uint16_t vreg, VRegKind kind, uint32_t* val) const SHARED_LOCKS_REQUIRED(Locks::mutator_lock_); -- cgit v1.2.3-59-g8ed1b