Lines Matching refs:instruction

120   HTypeConversion* FindOrAddTypeConversionIfNecessary(HInstruction* instruction,  in FindOrAddTypeConversionIfNecessary()  argument
138 use.GetUser()->GetBlock()->Dominates(instruction->GetBlock()) && in FindOrAddTypeConversionIfNecessary()
141 (use.GetUser()->GetBlock() == instruction->GetBlock() || in FindOrAddTypeConversionIfNecessary()
143 if (use.GetUser()->GetBlock() == instruction->GetBlock() && in FindOrAddTypeConversionIfNecessary()
144 use.GetUser()->GetBlock()->GetInstructions().FoundBefore(instruction, use.GetUser())) { in FindOrAddTypeConversionIfNecessary()
146 use.GetUser()->MoveBefore(instruction); in FindOrAddTypeConversionIfNecessary()
148 DCHECK(use.GetUser()->StrictlyDominates(instruction)); in FindOrAddTypeConversionIfNecessary()
155 expected_type, value, instruction->GetDexPc()); in FindOrAddTypeConversionIfNecessary()
156 instruction->GetBlock()->InsertInstructionBefore(type_conversion, instruction); in FindOrAddTypeConversionIfNecessary()
162 HInstruction* FindSubstitute(HInstruction* instruction) { in FindSubstitute() argument
163 if (!IsLoad(instruction)) { in FindSubstitute()
164 return instruction; in FindSubstitute()
168 if (removed_loads_[i] == instruction) { in FindSubstitute()
175 return instruction; in FindSubstitute()
245 static bool IsLoad(const HInstruction* instruction) { in IsLoad() argument
246 if (instruction == kUnknownHeapValue || instruction == kDefaultHeapValue) { in IsLoad()
250 return instruction->IsInstanceFieldGet() || in IsLoad()
251 instruction->IsStaticFieldGet() || in IsLoad()
252 instruction->IsVecLoad() || in IsLoad()
253 instruction->IsArrayGet(); in IsLoad()
256 static bool IsStore(const HInstruction* instruction) { in IsStore() argument
257 if (instruction == kUnknownHeapValue || instruction == kDefaultHeapValue) { in IsStore()
261 return instruction->IsInstanceFieldSet() || in IsStore()
262 instruction->IsArraySet() || in IsStore()
263 instruction->IsVecStore() || in IsStore()
264 instruction->IsStaticFieldSet(); in IsStore()
513 void TryRemovingNullCheck(HInstruction* instruction) { in TryRemovingNullCheck() argument
514 HInstruction* prev = instruction->GetPrevious(); in TryRemovingNullCheck()
515 if ((prev != nullptr) && prev->IsNullCheck() && (prev == instruction->InputAt(0))) { in TryRemovingNullCheck()
544 void VisitGetLocation(HInstruction* instruction, size_t idx) { in VisitGetLocation() argument
547 heap_values_for_[instruction->GetBlock()->GetBlockId()]; in VisitGetLocation()
550 if (IsDefaultAllowedForLoad(instruction)) { in VisitGetLocation()
551 HInstruction* constant = GetDefaultValue(instruction->GetType()); in VisitGetLocation()
552 AddRemovedLoad(instruction, constant); in VisitGetLocation()
564 heap_values[idx] = instruction; in VisitGetLocation()
568 AddRemovedLoad(instruction, heap_value); in VisitGetLocation()
569 TryRemovingNullCheck(instruction); in VisitGetLocation()
621 void VisitSetLocation(HInstruction* instruction, size_t idx, HInstruction* value) { in VisitSetLocation() argument
627 heap_values_for_[instruction->GetBlock()->GetBlockId()]; in VisitSetLocation()
634 instruction->GetBlock()->RemoveInstruction(instruction); in VisitSetLocation()
637 if (instruction->CanThrow()) { in VisitSetLocation()
638 HandleExit(instruction->GetBlock()); in VisitSetLocation()
640 HLoopInformation* loop_info = instruction->GetBlock()->GetLoopInformation(); in VisitSetLocation()
660 if (possibly_redundant && !instruction->CanThrow()) { in VisitSetLocation()
661 possibly_removed_stores_.push_back(instruction); in VisitSetLocation()
666 heap_values[idx] = instruction; in VisitSetLocation()
672 CanValueBeKeptIfSameAsNew(heap_values[i], value, instruction) || in VisitSetLocation()
683 void VisitInstanceFieldGet(HInstanceFieldGet* instruction) override { in VisitInstanceFieldGet() argument
684 HInstruction* object = instruction->InputAt(0); in VisitInstanceFieldGet()
685 const FieldInfo& field = instruction->GetFieldInfo(); in VisitInstanceFieldGet()
686 VisitGetLocation(instruction, heap_location_collector_.GetFieldHeapLocation(object, &field)); in VisitInstanceFieldGet()
689 void VisitInstanceFieldSet(HInstanceFieldSet* instruction) override { in VisitInstanceFieldSet() argument
690 HInstruction* object = instruction->InputAt(0); in VisitInstanceFieldSet()
691 const FieldInfo& field = instruction->GetFieldInfo(); in VisitInstanceFieldSet()
692 HInstruction* value = instruction->InputAt(1); in VisitInstanceFieldSet()
694 VisitSetLocation(instruction, idx, value); in VisitInstanceFieldSet()
697 void VisitStaticFieldGet(HStaticFieldGet* instruction) override { in VisitStaticFieldGet() argument
698 HInstruction* cls = instruction->InputAt(0); in VisitStaticFieldGet()
699 const FieldInfo& field = instruction->GetFieldInfo(); in VisitStaticFieldGet()
700 VisitGetLocation(instruction, heap_location_collector_.GetFieldHeapLocation(cls, &field)); in VisitStaticFieldGet()
703 void VisitStaticFieldSet(HStaticFieldSet* instruction) override { in VisitStaticFieldSet() argument
704 HInstruction* cls = instruction->InputAt(0); in VisitStaticFieldSet()
705 const FieldInfo& field = instruction->GetFieldInfo(); in VisitStaticFieldSet()
707 VisitSetLocation(instruction, idx, instruction->InputAt(1)); in VisitStaticFieldSet()
710 void VisitArrayGet(HArrayGet* instruction) override { in VisitArrayGet() argument
711 VisitGetLocation(instruction, heap_location_collector_.GetArrayHeapLocation(instruction)); in VisitArrayGet()
714 void VisitArraySet(HArraySet* instruction) override { in VisitArraySet() argument
715 size_t idx = heap_location_collector_.GetArrayHeapLocation(instruction); in VisitArraySet()
716 VisitSetLocation(instruction, idx, instruction->GetValue()); in VisitArraySet()
719 void VisitVecLoad(HVecLoad* instruction) override { in VisitVecLoad() argument
720 VisitGetLocation(instruction, heap_location_collector_.GetArrayHeapLocation(instruction)); in VisitVecLoad()
723 void VisitVecStore(HVecStore* instruction) override { in VisitVecStore() argument
724 size_t idx = heap_location_collector_.GetArrayHeapLocation(instruction); in VisitVecStore()
725 VisitSetLocation(instruction, idx, instruction->GetValue()); in VisitVecStore()
728 void VisitDeoptimize(HDeoptimize* instruction) override { in VisitDeoptimize() argument
730 heap_values_for_[instruction->GetBlock()->GetBlockId()]; in VisitDeoptimize()
752 if (user->GetHolder() == instruction) { in VisitDeoptimize()
779 void VisitReturn(HReturn* instruction) override { in VisitReturn() argument
780 HandleExit(instruction->GetBlock()); in VisitReturn()
791 void HandleInvoke(HInstruction* instruction) { in HandleInvoke() argument
792 SideEffects side_effects = instruction->GetSideEffects(); in HandleInvoke()
794 heap_values_for_[instruction->GetBlock()->GetBlockId()]; in HandleInvoke()
821 void VisitUnresolvedInstanceFieldGet(HUnresolvedInstanceFieldGet* instruction) override { in VisitUnresolvedInstanceFieldGet() argument
823 HandleInvoke(instruction); in VisitUnresolvedInstanceFieldGet()
826 void VisitUnresolvedInstanceFieldSet(HUnresolvedInstanceFieldSet* instruction) override { in VisitUnresolvedInstanceFieldSet() argument
828 HandleInvoke(instruction); in VisitUnresolvedInstanceFieldSet()
831 void VisitUnresolvedStaticFieldGet(HUnresolvedStaticFieldGet* instruction) override { in VisitUnresolvedStaticFieldGet() argument
833 HandleInvoke(instruction); in VisitUnresolvedStaticFieldGet()
836 void VisitUnresolvedStaticFieldSet(HUnresolvedStaticFieldSet* instruction) override { in VisitUnresolvedStaticFieldSet() argument
838 HandleInvoke(instruction); in VisitUnresolvedStaticFieldSet()