From 8d5ead52a92675c258113d3dfa71bf8fceba5d9f Mon Sep 17 00:00:00 2001 From: Nicolas Geoffray Date: Tue, 22 Apr 2014 08:30:19 +0000 Subject: Revert "64bit changes to the stack walker for the Quick ABI." This reverts commit 5cb328362a633302ca0fcdbaa0da7d94069df051. Change-Id: Icc0ec1a9f15c2e4e9103e732d7ba75a4feb853b1 --- runtime/stack.h | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'runtime/stack.h') diff --git a/runtime/stack.h b/runtime/stack.h index deba389..ab903d6 100644 --- a/runtime/stack.h +++ b/runtime/stack.h @@ -637,12 +637,11 @@ class StackVisitor { size_t frame_size, int reg) { DCHECK_EQ(frame_size & (kStackAlignment - 1), 0U); DCHECK_NE(reg, static_cast(kVRegInvalid)); - int spills = __builtin_popcount(core_spills) * kBytesPerGprSpillLocation - + __builtin_popcount(fp_spills) * kBytesPerFprSpillLocation - + sizeof(uint32_t); // Filler. + + 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 - spills - num_regs * sizeof(uint32_t); + int locals_start = frame_size - ((num_spills + num_regs) * sizeof(uint32_t)); if (reg == static_cast(kVRegMethodPtrBaseReg)) { // The current method pointer corresponds to special location on stack. return 0; @@ -661,13 +660,13 @@ class StackVisitor { return locals_start + (reg * sizeof(uint32_t)); } else { // Handle ins. - return frame_size + ((reg - num_regs) * sizeof(uint32_t)) + kWordSize; + return frame_size + ((reg - num_regs) * sizeof(uint32_t)) + sizeof(StackReference); } } static int GetOutVROffset(uint16_t out_num) { // According to stack model, the first out is above the Method ptr. - return kWordSize + (out_num * sizeof(uint32_t)); + return sizeof(StackReference) + (out_num * sizeof(uint32_t)); } uintptr_t GetCurrentQuickFramePc() const { -- cgit v1.1