From 3c12c512faf6837844d5465b23b9410889e5eb11 Mon Sep 17 00:00:00 2001 From: Andreas Gampe Date: Tue, 24 Jun 2014 18:46:29 +0000 Subject: Revert "Revert "ART: Split out more cases of Load/StoreRef, volatile as parameter"" This reverts commit de68676b24f61a55adc0b22fe828f036a5925c41. Fixes an API comment, and differentiates between inserting and appending. Change-Id: I0e9a21bb1d25766e3cbd802d8b48633ae251a6bf --- compiler/dex/quick/codegen_util.cc | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'compiler/dex/quick/codegen_util.cc') diff --git a/compiler/dex/quick/codegen_util.cc b/compiler/dex/quick/codegen_util.cc index ec0fb43571..f31b670164 100644 --- a/compiler/dex/quick/codegen_util.cc +++ b/compiler/dex/quick/codegen_util.cc @@ -79,6 +79,20 @@ void Mir2Lir::MarkSafepointPC(LIR* inst) { DCHECK(safepoint_pc->u.m.def_mask->Equals(kEncodeAll)); } +void Mir2Lir::MarkSafepointPCAfter(LIR* after) { + DCHECK(!after->flags.use_def_invalid); + after->u.m.def_mask = &kEncodeAll; + // As NewLIR0 uses Append, we need to create the LIR by hand. + LIR* safepoint_pc = RawLIR(current_dalvik_offset_, kPseudoSafepointPC); + if (after->next == nullptr) { + DCHECK_EQ(after, last_lir_insn_); + AppendLIR(safepoint_pc); + } else { + InsertLIRAfter(after, safepoint_pc); + } + DCHECK(safepoint_pc->u.m.def_mask->Equals(kEncodeAll)); +} + /* Remove a LIR from the list. */ void Mir2Lir::UnlinkLIR(LIR* lir) { if (UNLIKELY(lir == first_lir_insn_)) { @@ -1112,7 +1126,7 @@ void Mir2Lir::InsertLIRBefore(LIR* current_lir, LIR* new_lir) { /* * Insert an LIR instruction after the current instruction, which cannot be the - * first instruction. + * last instruction. * * current_lir -> new_lir -> old_next */ -- cgit v1.2.3-59-g8ed1b