summaryrefslogtreecommitdiffstats
path: root/compiler/dex/quick/codegen_util.cc
diff options
context:
space:
mode:
authorSerguei Katkov <serguei.i.katkov@intel.com>2014-09-05 18:37:22 +0700
committerSerguei Katkov <serguei.i.katkov@intel.com>2014-09-11 10:46:15 +0700
commit589e046c483ca0dbee6c28fb617997f43ee28b94 (patch)
tree347ba057be243341f5e5094071149a712121d1f7 /compiler/dex/quick/codegen_util.cc
parentb9620f305c79914f5159cf9279a7ccd173af1186 (diff)
downloadart-589e046c483ca0dbee6c28fb617997f43ee28b94.tar.gz
art-589e046c483ca0dbee6c28fb617997f43ee28b94.tar.bz2
art-589e046c483ca0dbee6c28fb617997f43ee28b94.zip
Slow path should break def tracking
Slow path usually results in invocation of runtime. Runtime should be ensured that all VR on stack are up to date. To do this we reset def tracking system at the moment of adding slow path and as a result actual writes to stack for all VRs will not be optimized away. The decision is conservative to be safe however probably not all runtime calls can potentially require VRs to be on stack. In this case we will need insert reset def tracking in all places where dangerous slow path is used. Change-Id: I2cb7698a12c17354060fdbb944e1da1fb922c23b Signed-off-by: Serguei Katkov <serguei.i.katkov@intel.com>
Diffstat (limited to 'compiler/dex/quick/codegen_util.cc')
-rw-r--r--compiler/dex/quick/codegen_util.cc1
1 files changed, 1 insertions, 0 deletions
diff --git a/compiler/dex/quick/codegen_util.cc b/compiler/dex/quick/codegen_util.cc
index 6d8f28849e..d90bce119a 100644
--- a/compiler/dex/quick/codegen_util.cc
+++ b/compiler/dex/quick/codegen_util.cc
@@ -1224,6 +1224,7 @@ LIR *Mir2Lir::OpCmpMemImmBranch(ConditionCode cond, RegStorage temp_reg, RegStor
void Mir2Lir::AddSlowPath(LIRSlowPath* slowpath) {
slow_paths_.Insert(slowpath);
+ ResetDefTracking();
}
void Mir2Lir::LoadCodeAddress(const MethodReference& target_method, InvokeType type,