Lines Matching refs:loc

748 extern RegLocation dvmCompilerUpdateLoc(CompilationUnit *cUnit, RegLocation loc)
750 assert(!loc.wide);
751 if (loc.location == kLocDalvikFrame) {
752 RegisterInfo *infoLo = allocLive(cUnit, loc.sRegLow, kAnyReg);
758 loc.lowReg = infoLo->reg;
759 loc.location = kLocPhysReg;
764 return loc;
769 RegLocation loc)
771 assert(loc.wide);
772 if (loc.location == kLocDalvikFrame) {
774 RegisterInfo *infoLo = allocLive(cUnit, loc.sRegLow, kAnyReg);
776 dvmCompilerSRegHi(loc.sRegLow), kAnyReg);
795 loc.lowReg = infoLo->reg;
796 loc.highReg = infoHi->reg;
797 loc.location = kLocPhysReg;
798 dvmCompilerMarkPair(cUnit, loc.lowReg, loc.highReg);
799 assert(!FPREG(loc.lowReg) || ((loc.lowReg & 0x1) == 0));
800 return loc;
815 return loc;
818 static RegLocation evalLocWide(CompilationUnit *cUnit, RegLocation loc,
821 assert(loc.wide);
826 loc = dvmCompilerUpdateLocWide(cUnit, loc);
829 if (loc.location == kLocPhysReg) {
830 assert(FPREG(loc.lowReg) == FPREG(loc.highReg));
831 assert(!FPREG(loc.lowReg) || ((loc.lowReg & 0x1) == 0));
832 if (!regClassMatches(regClass, loc.lowReg)) {
834 newRegs = dvmCompilerAllocTypedTempPair(cUnit, loc.fp, regClass);
837 dvmCompilerRegCopyWide(cUnit, lowReg, highReg, loc.lowReg,
838 loc.highReg);
839 copyRegInfo(cUnit, lowReg, loc.lowReg);
840 copyRegInfo(cUnit, highReg, loc.highReg);
841 dvmCompilerClobber(cUnit, loc.lowReg);
842 dvmCompilerClobber(cUnit, loc.highReg);
843 loc.lowReg = lowReg;
844 loc.highReg = highReg;
845 dvmCompilerMarkPair(cUnit, loc.lowReg, loc.highReg);
846 assert(!FPREG(loc.lowReg) || ((loc.lowReg & 0x1) == 0));
848 return loc;
851 assert((loc.location != kLocRetval) || (loc.sRegLow == INVALID_SREG));
852 assert((loc.location != kLocRetval) ||
853 (dvmCompilerSRegHi(loc.sRegLow) == INVALID_SREG));
855 newRegs = dvmCompilerAllocTypedTempPair(cUnit, loc.fp, regClass);
856 loc.lowReg = newRegs & 0xff;
857 loc.highReg = (newRegs >> 8) & 0xff;
859 dvmCompilerMarkPair(cUnit, loc.lowReg, loc.highReg);
861 loc.location = kLocPhysReg;
862 dvmCompilerMarkLive(cUnit, loc.lowReg, loc.sRegLow);
863 dvmCompilerMarkLive(cUnit, loc.highReg, dvmCompilerSRegHi(loc.sRegLow));
865 assert(!FPREG(loc.lowReg) || ((loc.lowReg & 0x1) == 0));
866 return loc;
869 extern RegLocation dvmCompilerEvalLoc(CompilationUnit *cUnit, RegLocation loc,
873 if (loc.wide)
874 return evalLocWide(cUnit, loc, regClass, update);
875 loc = dvmCompilerUpdateLoc(cUnit, loc);
877 if (loc.location == kLocPhysReg) {
878 if (!regClassMatches(regClass, loc.lowReg)) {
880 newReg = dvmCompilerAllocTypedTemp(cUnit, loc.fp, regClass);
881 dvmCompilerRegCopy(cUnit, newReg, loc.lowReg);
882 copyRegInfo(cUnit, newReg, loc.lowReg);
883 dvmCompilerClobber(cUnit, loc.lowReg);
884 loc.lowReg = newReg;
886 return loc;
889 assert((loc.location != kLocRetval) || (loc.sRegLow == INVALID_SREG));
891 newReg = dvmCompilerAllocTypedTemp(cUnit, loc.fp, regClass);
892 loc.lowReg = newReg;
895 loc.location = kLocPhysReg;
896 dvmCompilerMarkLive(cUnit, loc.lowReg, loc.sRegLow);
898 return loc;
910 RegLocation loc = cUnit->regLocation[
912 loc.fp = cUnit->regLocation[dvmCompilerSSASrc(mir, num)].fp;
913 loc.wide = false;
914 return loc;
921 RegLocation loc = cUnit->regLocation[SREG(cUnit, getDestSSAName(mir, num))];
922 loc.fp = cUnit->regLocation[getDestSSAName(mir, num)].fp;
923 loc.wide = false;
924 return loc;
932 /* Copy loc record for low word and patch in data from high word */
1003 RegLocation loc)
1005 if (loc.location != kLocRetval) {
1006 assert(loc.sRegLow != INVALID_SREG);
1007 dvmClearBit(cUnit->regPool->nullCheckedRegs, loc.sRegLow);
1008 if (loc.wide) {
1009 assert(dvmCompilerSRegHi(loc.sRegLow) != INVALID_SREG);
1011 dvmCompilerSRegHi(loc.sRegLow));