From 8159af6320f7413a9d0fff1e29220c01f29c6e96 Mon Sep 17 00:00:00 2001 From: Chao-ying Fu Date: Mon, 7 Jul 2014 17:13:52 -0700 Subject: [PATCH] ART: Check slow_paths_.Size() every time This patch fixes a bug, when a new slow path is created during slowpath->Compile(). Change-Id: I4896a82781102694c25f4483112c6de3c56e072c Signed-off-by: Chao-ying Fu --- compiler/dex/quick/gen_common.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/compiler/dex/quick/gen_common.cc b/compiler/dex/quick/gen_common.cc index dafefea0a..b31e9a2ef 100644 --- a/compiler/dex/quick/gen_common.cc +++ b/compiler/dex/quick/gen_common.cc @@ -766,8 +766,9 @@ void Mir2Lir::GenSget(MIR* mir, RegLocation rl_dest, // Generate code for all slow paths. void Mir2Lir::HandleSlowPaths() { - int n = slow_paths_.Size(); - for (int i = 0; i < n; ++i) { + // We should check slow_paths_.Size() every time, because a new slow path + // may be created during slowpath->Compile(). + for (size_t i = 0; i < slow_paths_.Size(); ++i) { LIRSlowPath* slowpath = slow_paths_.Get(i); slowpath->Compile(); } -- 2.11.0