Lines Matching refs:info
36 for (RegisterInfo* info : tempreg_info_) { in ResetRegPool()
37 info->MarkFree(); in ResetRegPool()
84 RegisterInfo* info = new (arena) RegisterInfo(reg, m2l_->GetRegMaskCommon(reg)); in RegisterPool() local
85 m2l_->reginfo_map_[reg.GetReg()] = info; in RegisterPool()
86 core_regs_.push_back(info); in RegisterPool()
90 RegisterInfo* info = new (arena) RegisterInfo(reg, m2l_->GetRegMaskCommon(reg)); in RegisterPool() local
91 m2l_->reginfo_map_[reg.GetReg()] = info; in RegisterPool()
92 core64_regs_.push_back(info); in RegisterPool()
96 RegisterInfo* info = new (arena) RegisterInfo(reg, m2l_->GetRegMaskCommon(reg)); in RegisterPool() local
97 m2l_->reginfo_map_[reg.GetReg()] = info; in RegisterPool()
98 sp_regs_.push_back(info); in RegisterPool()
102 RegisterInfo* info = new (arena) RegisterInfo(reg, m2l_->GetRegMaskCommon(reg)); in RegisterPool() local
103 m2l_->reginfo_map_[reg.GetReg()] = info; in RegisterPool()
104 dp_regs_.push_back(info); in RegisterPool()
145 for (RegisterInfo* info : *regs) { in DumpRegPool()
148 info->GetReg().GetReg(), info->GetReg().GetRegNum(), info->GetReg().IsFloat() ? 'f' : 'c', in DumpRegPool()
149 info->IsTemp(), info->InUse(), info->IsWide(), info->Partner().GetReg(), info->IsLive(), in DumpRegPool()
150 info->IsDirty(), info->SReg(), info->DefStart() != nullptr); in DumpRegPool()
179 RegisterInfo* info = GetRegInfo(reg); in Clobber() local
180 if (info->IsTemp() && !info->IsDead()) { in Clobber()
181 if (info->GetReg().NotExactlyEquals(info->Partner())) { in Clobber()
182 ClobberBody(GetRegInfo(info->Partner())); in Clobber()
184 ClobberBody(info); in Clobber()
185 if (info->IsAliased()) { in Clobber()
186 ClobberAliases(info, info->StorageMask()); in Clobber()
188 RegisterInfo* master = info->Master(); in Clobber()
189 if (info != master) { in Clobber()
190 ClobberBody(info->Master()); in Clobber()
191 ClobberAliases(info->Master(), info->StorageMask()); in Clobber()
198 void Mir2Lir::ClobberAliases(RegisterInfo* info, uint32_t clobber_mask) { in ClobberAliases() argument
199 for (RegisterInfo* alias = info->GetAliasChain(); alias != nullptr; in ClobberAliases()
225 for (RegisterInfo* info : tempreg_info_) { in ClobberSReg()
226 if (info->SReg() == s_reg) { in ClobberSReg()
227 if (info->GetReg().NotExactlyEquals(info->Partner())) { in ClobberSReg()
229 DCHECK(!info->IsAliased()); in ClobberSReg()
230 ClobberBody(GetRegInfo(info->Partner())); in ClobberSReg()
232 ClobberBody(info); in ClobberSReg()
233 if (info->IsAliased()) { in ClobberSReg()
234 ClobberAliases(info, info->StorageMask()); in ClobberSReg()
280 for (RegisterInfo* info : reg_pool_->core_regs_) { in AllocPreservedCoreReg()
281 if (!info->IsTemp() && !info->InUse()) { in AllocPreservedCoreReg()
282 res = info->GetReg(); in AllocPreservedCoreReg()
312 for (RegisterInfo* info : reg_pool_->sp_regs_) { in AllocPreservedFpReg()
313 if (!info->IsTemp() && !info->InUse()) { in AllocPreservedFpReg()
314 res = info->GetReg(); in AllocPreservedFpReg()
344 RegisterInfo* info = regs[next]; in AllocTempBody() local
346 if (info->IsTemp() && !info->InUse() && info->IsDead()) { in AllocTempBody()
348 if (info->IsWide()) { in AllocTempBody()
350 if (info->SReg() != INVALID_SREG) { in AllocTempBody()
351 RegisterInfo* partner = GetRegInfo(info->Partner()); in AllocTempBody()
352 DCHECK_EQ(info->GetReg().GetRegNum(), partner->Partner().GetRegNum()); in AllocTempBody()
356 info->SetIsWide(false); in AllocTempBody()
358 Clobber(info->GetReg()); in AllocTempBody()
359 info->MarkInUse(); in AllocTempBody()
361 return info->GetReg(); in AllocTempBody()
371 RegisterInfo* info = regs[next]; in AllocTempBody() local
372 if (info->IsTemp() && !info->InUse()) { in AllocTempBody()
374 ClobberSReg(info->SReg()); in AllocTempBody()
375 Clobber(info->GetReg()); in AllocTempBody()
376 info->MarkInUse(); in AllocTempBody()
377 if (info->IsWide()) { in AllocTempBody()
378 RegisterInfo* partner = GetRegInfo(info->Partner()); in AllocTempBody()
379 DCHECK_EQ(info->GetReg().GetRegNum(), partner->Partner().GetRegNum()); in AllocTempBody()
381 info->SetIsWide(false); in AllocTempBody()
385 return info->GetReg(); in AllocTempBody()
462 for (RegisterInfo* info : regs) { in FindLiveReg()
463 if ((info->SReg() == s_reg) && info->IsLive()) { in FindLiveReg()
464 res = info->GetReg(); in FindLiveReg()
516 RegisterInfo* info = GetRegInfo(reg); in AllocLiveReg() local
517 if (info->IsTemp()) { in AllocLiveReg()
518 info->MarkInUse(); in AllocLiveReg()
646 RegisterInfo* info = nullptr; in NullifyRange() local
649 info = GetRegInfo(reg); in NullifyRange()
651 if ((info != nullptr) && (info->DefStart() != nullptr) && (info->DefEnd() != nullptr)) { in NullifyRange()
652 DCHECK_EQ(info->SReg(), s_reg); // Make sure we're on the same page. in NullifyRange()
653 for (LIR* p = info->DefStart();; p = p->next) { in NullifyRange()
655 if (p == info->DefEnd()) { in NullifyRange()
715 for (RegisterInfo* info : tempreg_info_) { in ResetDefTracking()
716 info->ResetDefBody(); in ResetDefTracking()
721 for (RegisterInfo* info : tempreg_info_) { in ClobberAllTemps()
722 ClobberBody(info); in ClobberAllTemps()
749 RegisterInfo* info = GetRegInfo(reg); in FlushRegWide() local
750 if (info->IsLive() && info->IsDirty()) { in FlushRegWide()
751 info->SetIsDirty(false); in FlushRegWide()
752 int v_reg = mir_graph_->SRegToVReg(info->SReg()); in FlushRegWide()
761 RegisterInfo* info = GetRegInfo(reg); in FlushReg() local
762 if (info->IsLive() && info->IsDirty()) { in FlushReg()
763 info->SetIsDirty(false); in FlushReg()
764 int v_reg = mir_graph_->SRegToVReg(info->SReg()); in FlushReg()
770 void Mir2Lir::FlushSpecificReg(RegisterInfo* info) { in FlushSpecificReg() argument
771 if (info->IsWide()) { in FlushSpecificReg()
772 FlushRegWide(info->GetReg()); in FlushSpecificReg()
774 FlushReg(info->GetReg()); in FlushSpecificReg()
779 for (RegisterInfo* info : tempreg_info_) { in FlushAllRegs()
780 if (info->IsDirty() && info->IsLive()) { in FlushAllRegs()
781 FlushSpecificReg(info); in FlushAllRegs()
783 info->MarkDead(); in FlushAllRegs()
784 info->SetIsWide(false); in FlushAllRegs()
830 RegisterInfo* info = GetRegInfo(reg); in MarkLive() local
831 if (info->IsLive() && (info->SReg() == s_reg)) { in MarkLive()
838 info->MarkLive(s_reg); in MarkLive()
850 RegisterInfo* info = GetRegInfo(reg); in MarkTemp() local
851 tempreg_info_.push_back(info); in MarkTemp()
852 info->SetIsTemp(true); in MarkTemp()
857 RegisterInfo* info = GetRegInfo(reg); in UnmarkTemp() local
858 auto pos = std::find(tempreg_info_.begin(), tempreg_info_.end(), info); in UnmarkTemp()
861 info->SetIsTemp(false); in UnmarkTemp()
880 RegisterInfo* info = GetRegInfo(reg); in MarkWide() local
881 info->SetIsWide(true); in MarkWide()
882 info->SetPartner(reg); in MarkWide()
888 RegisterInfo* info = GetRegInfo(reg); in MarkNarrow() local
889 info->SetIsWide(false); in MarkNarrow()
890 info->SetPartner(reg); in MarkNarrow()
895 RegisterInfo* info = GetRegInfo(loc.reg.GetLow()); in MarkClean() local
896 info->SetIsDirty(false); in MarkClean()
897 info = GetRegInfo(loc.reg.GetHigh()); in MarkClean()
898 info->SetIsDirty(false); in MarkClean()
900 RegisterInfo* info = GetRegInfo(loc.reg); in MarkClean() local
901 info->SetIsDirty(false); in MarkClean()
912 RegisterInfo* info = GetRegInfo(loc.reg.GetLow()); in MarkDirty() local
913 info->SetIsDirty(true); in MarkDirty()
914 info = GetRegInfo(loc.reg.GetHigh()); in MarkDirty()
915 info->SetIsDirty(true); in MarkDirty()
917 RegisterInfo* info = GetRegInfo(loc.reg); in MarkDirty() local
918 info->SetIsDirty(true); in MarkDirty()
932 for (RegisterInfo* info : tempreg_info_) { in CheckCorePoolSanity()
933 int my_sreg = info->SReg(); in CheckCorePoolSanity()
934 if (info->IsTemp() && info->IsLive() && info->IsWide() && my_sreg != INVALID_SREG) { in CheckCorePoolSanity()
935 RegStorage my_reg = info->GetReg(); in CheckCorePoolSanity()
936 RegStorage partner_reg = info->Partner(); in CheckCorePoolSanity()
946 if (info->Master() != info) { in CheckCorePoolSanity()
948 if (info->IsLive() && (info->SReg() != INVALID_SREG)) { in CheckCorePoolSanity()
950 DCHECK_EQ(info->Master()->SReg(), INVALID_SREG); in CheckCorePoolSanity()
951 DCHECK(!info->Master()->IsDead()); in CheckCorePoolSanity()
955 if (info->IsAliased()) { in CheckCorePoolSanity()
957 DCHECK_EQ(info->Master(), info); in CheckCorePoolSanity()
958 if (info->IsLive() && (info->SReg() != INVALID_SREG)) { in CheckCorePoolSanity()
960 for (RegisterInfo* p = info->GetAliasChain(); p != nullptr; p = p->GetAliasChain()) { in CheckCorePoolSanity()
964 } else if (!info->IsDead()) { in CheckCorePoolSanity()
967 for (RegisterInfo* p = info->GetAliasChain(); p != nullptr; p = p->GetAliasChain()) { in CheckCorePoolSanity()
973 if (info->IsLive() && (info->SReg() == INVALID_SREG)) { in CheckCorePoolSanity()
975 DCHECK(info->DefStart() == nullptr); in CheckCorePoolSanity()
976 DCHECK(info->DefEnd() == nullptr); in CheckCorePoolSanity()
1000 RegisterInfo* info = GetRegInfo(reg); in UpdateLoc() local
1002 match &= !info->IsWide(); in UpdateLoc()
1034 RegisterInfo* info = GetRegInfo(reg); in UpdateLocWide() local
1035 match &= info->IsWide(); in UpdateLocWide()
1036 match &= (info->GetReg().ExactlyEquals(info->Partner())); in UpdateLocWide()
1201 const MirMethodLoweringInfo& info = mir_graph_->GetMethodLoweringInfo(mir); in AnalyzeMIR() local
1202 InvokeType sharp_type = info.GetSharpType(); in AnalyzeMIR()
1203 if (info.IsIntrinsic()) { in AnalyzeMIR()
1205 } else if (!info.FastPath() || (sharp_type != kStatic && sharp_type != kDirect)) { in AnalyzeMIR()
1207 } else if (info.DirectCode() != 0 && info.DirectMethod() != 0) { in AnalyzeMIR()