diff options
author | 2015-11-12 15:20:08 +0000 | |
---|---|---|
committer | 2015-11-12 15:20:08 +0000 | |
commit | cff81076cbb4bbe3841942f14326f4401fa3c8df (patch) | |
tree | f0a85a6059ff289ccb4b6e43b2b9b3924d481a31 /compiler/optimizing/nodes.cc | |
parent | fe0ec35c68d57205bd8fe13bd195ae0b5a3ed180 (diff) | |
parent | 0f7dca4ca0be8d2f8776794d35edf8b51b5bc997 (diff) |
Merge "Optimizing/X86: PC-relative dex cache array addressing."
Diffstat (limited to 'compiler/optimizing/nodes.cc')
-rw-r--r-- | compiler/optimizing/nodes.cc | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/compiler/optimizing/nodes.cc b/compiler/optimizing/nodes.cc index 716888a269..73a44ee2cb 100644 --- a/compiler/optimizing/nodes.cc +++ b/compiler/optimizing/nodes.cc @@ -2048,6 +2048,16 @@ bool HInvokeStaticOrDirect::NeedsDexCacheOfDeclaringClass() const { return !opt.GetDoesNotNeedDexCache(); } +void HInvokeStaticOrDirect::InsertInputAt(size_t index, HInstruction* input) { + inputs_.insert(inputs_.begin() + index, HUserRecord<HInstruction*>(input)); + input->AddUseAt(this, index); + // Update indexes in use nodes of inputs that have been pushed further back by the insert(). + for (size_t i = index + 1u, size = inputs_.size(); i != size; ++i) { + DCHECK_EQ(InputRecordAt(i).GetUseNode()->GetIndex(), i - 1u); + InputRecordAt(i).GetUseNode()->SetIndex(i); + } +} + void HInvokeStaticOrDirect::RemoveInputAt(size_t index) { RemoveAsUserOfInput(index); inputs_.erase(inputs_.begin() + index); |