Lines Matching refs:loc

676 extern RegLocation dvmCompilerUpdateLoc(CompilationUnit *cUnit, RegLocation loc)
678 assert(!loc.wide);
679 if (loc.location == kLocDalvikFrame) {
680 RegisterInfo *infoLo = allocLive(cUnit, loc.sRegLow, kAnyReg);
686 loc.lowReg = infoLo->reg;
687 loc.location = kLocPhysReg;
692 return loc;
697 RegLocation loc)
699 assert(loc.wide);
700 if (loc.location == kLocDalvikFrame) {
702 RegisterInfo *infoLo = allocLive(cUnit, loc.sRegLow, kAnyReg);
704 dvmCompilerSRegHi(loc.sRegLow), kAnyReg);
723 loc.lowReg = infoLo->reg;
724 loc.highReg = infoHi->reg;
725 loc.location = kLocPhysReg;
726 dvmCompilerMarkPair(cUnit, loc.lowReg, loc.highReg);
727 assert(!FPREG(loc.lowReg) || ((loc.lowReg & 0x1) == 0));
728 return loc;
743 return loc;
746 static RegLocation evalLocWide(CompilationUnit *cUnit, RegLocation loc,
749 assert(loc.wide);
754 loc = dvmCompilerUpdateLocWide(cUnit, loc);
757 if (loc.location == kLocPhysReg) {
758 assert(FPREG(loc.lowReg) == FPREG(loc.highReg));
759 assert(!FPREG(loc.lowReg) || ((loc.lowReg & 0x1) == 0));
760 if (!regClassMatches(regClass, loc.lowReg)) {
762 newRegs = dvmCompilerAllocTypedTempPair(cUnit, loc.fp, regClass);
765 dvmCompilerRegCopyWide(cUnit, lowReg, highReg, loc.lowReg,
766 loc.highReg);
767 copyRegInfo(cUnit, lowReg, loc.lowReg);
768 copyRegInfo(cUnit, highReg, loc.highReg);
769 dvmCompilerClobber(cUnit, loc.lowReg);
770 dvmCompilerClobber(cUnit, loc.highReg);
771 loc.lowReg = lowReg;
772 loc.highReg = highReg;
773 dvmCompilerMarkPair(cUnit, loc.lowReg, loc.highReg);
774 assert(!FPREG(loc.lowReg) || ((loc.lowReg & 0x1) == 0));
776 return loc;
779 assert((loc.location != kLocRetval) || (loc.sRegLow == INVALID_SREG));
780 assert((loc.location != kLocRetval) ||
781 (dvmCompilerSRegHi(loc.sRegLow) == INVALID_SREG));
783 newRegs = dvmCompilerAllocTypedTempPair(cUnit, loc.fp, regClass);
784 loc.lowReg = newRegs & 0xff;
785 loc.highReg = (newRegs >> 8) & 0xff;
787 dvmCompilerMarkPair(cUnit, loc.lowReg, loc.highReg);
789 loc.location = kLocPhysReg;
790 dvmCompilerMarkLive(cUnit, loc.lowReg, loc.sRegLow);
791 dvmCompilerMarkLive(cUnit, loc.highReg, dvmCompilerSRegHi(loc.sRegLow));
793 assert(!FPREG(loc.lowReg) || ((loc.lowReg & 0x1) == 0));
794 return loc;
797 extern RegLocation dvmCompilerEvalLoc(CompilationUnit *cUnit, RegLocation loc,
801 if (loc.wide)
802 return evalLocWide(cUnit, loc, regClass, update);
803 loc = dvmCompilerUpdateLoc(cUnit, loc);
805 if (loc.location == kLocPhysReg) {
806 if (!regClassMatches(regClass, loc.lowReg)) {
808 newReg = dvmCompilerAllocTypedTemp(cUnit, loc.fp, regClass);
809 dvmCompilerRegCopy(cUnit, newReg, loc.lowReg);
810 copyRegInfo(cUnit, newReg, loc.lowReg);
811 dvmCompilerClobber(cUnit, loc.lowReg);
812 loc.lowReg = newReg;
814 return loc;
817 assert((loc.location != kLocRetval) || (loc.sRegLow == INVALID_SREG));
819 newReg = dvmCompilerAllocTypedTemp(cUnit, loc.fp, regClass);
820 loc.lowReg = newReg;
823 loc.location = kLocPhysReg;
824 dvmCompilerMarkLive(cUnit, loc.lowReg, loc.sRegLow);
826 return loc;
838 RegLocation loc = cUnit->regLocation[
840 loc.fp = cUnit->regLocation[dvmCompilerSSASrc(mir, num)].fp;
841 loc.wide = false;
842 return loc;
849 RegLocation loc = cUnit->regLocation[SREG(cUnit, getDestSSAName(mir, num))];
850 loc.fp = cUnit->regLocation[getDestSSAName(mir, num)].fp;
851 loc.wide = false;
852 return loc;
860 /* Copy loc record for low word and patch in data from high word */
893 RegLocation loc)
895 if (loc.location != kLocRetval) {
896 assert(loc.sRegLow != INVALID_SREG);
897 dvmClearBit(cUnit->regPool->nullCheckedRegs, loc.sRegLow);
898 if (loc.wide) {
899 assert(dvmCompilerSRegHi(loc.sRegLow) != INVALID_SREG);
901 dvmCompilerSRegHi(loc.sRegLow));