Merge "Fix "wide" cts vm-tests" into ics-mr1-plus-art
diff --git a/src/compiler/Ralloc.cc b/src/compiler/Ralloc.cc
index dfb25ab..b170d81 100644
--- a/src/compiler/Ralloc.cc
+++ b/src/compiler/Ralloc.cc
@@ -420,8 +420,9 @@
/* Figure out the frame size */
static const uint32_t kAlignMask = kStackAlignment - 1;
uint32_t size = (cUnit->numCoreSpills + cUnit->numFPSpills +
- cUnit->numRegs + cUnit->numOuts + cUnit->numCompilerTemps +
- 1 /* curMethod* */) * sizeof(uint32_t);
+ 1 /* filler word */ + cUnit->numRegs + cUnit->numOuts +
+ cUnit->numCompilerTemps + 1 /* curMethod* */)
+ * sizeof(uint32_t);
/* Align and set */
cUnit->frameSize = (size + kAlignMask) & ~(kAlignMask);
}
diff --git a/src/stack.cc b/src/stack.cc
index e4d1133..83169fd 100644
--- a/src/stack.cc
+++ b/src/stack.cc
@@ -65,6 +65,8 @@
* +------------------------+
* | fp callee-save spill |
* +------------------------+
+ * | filler word | {For compatibility, if V[locals-1] used as wide
+ * +------------------------+
* | V[locals-1] |
* | V[locals-2] |
* | . |
@@ -90,7 +92,7 @@
size_t frame_size, int reg)
{
DCHECK_EQ( frame_size & (kStackAlignment - 1), 0U);
- int num_spills = __builtin_popcount(core_spills) + __builtin_popcount(fp_spills);
+ int num_spills = __builtin_popcount(core_spills) + __builtin_popcount(fp_spills) + 1 /* filler */;
int num_ins = code_item->ins_size_;
int num_regs = code_item->registers_size_ - num_ins;
int locals_start = frame_size - ((num_spills + num_regs) * sizeof(uint32_t));