Add tables to map between callee saves and vregs

Also added function to return sp-relative offset for Dalvik
virtual registers using Method*

[Note: must be matched with corresponding libcore change to
reflect new field in Method]

Change-Id: Id739908c6232ce60763d8199bc05111e960da46e
diff --git a/src/compiler/codegen/arm/ArmRallocUtil.cc b/src/compiler/codegen/arm/ArmRallocUtil.cc
index 030131f..0908c6d 100644
--- a/src/compiler/codegen/arm/ArmRallocUtil.cc
+++ b/src/compiler/codegen/arm/ArmRallocUtil.cc
@@ -260,6 +260,21 @@
             cUnit->insOffset + ((reg - cUnit->numRegs) << 2);
 }
 
+/* Return sp-relative offset in bytes using Method* */
+extern int oatVRegOffsetFromMethod(Method* method, int reg)
+{
+    int numIns = method->NumIns();
+    int numRegs = method->NumRegisters() - numIns;
+    int numOuts = method->NumOuts();
+    int numSpills = __builtin_popcount(method->GetCoreSpillMask()) +
+                    __builtin_popcount(method->GetFpSpillMask());
+    int numPadding = (STACK_ALIGN_WORDS -
+        (numSpills + numRegs + numOuts + 2)) & (STACK_ALIGN_WORDS-1);
+    int regsOffset = (numOuts + numPadding + 1) * 4;
+    int insOffset = method->GetFrameSizeInBytes() + 4;
+    return (reg < numRegs) ? regsOffset + (reg << 2) :
+           insOffset + ((reg - numRegs) << 2);
+}
 
 /* Clobber all regs that might be used by an external C call */
 extern void oatClobberCallRegs(CompilationUnit *cUnit)