From efccc565091b3409ed1372615b4ea4e2f6c39323 Mon Sep 17 00:00:00 2001 From: buzbee Date: Sun, 11 Mar 2012 11:19:28 -0700 Subject: Frame layout change This CL slightly changes the frame layout to remove an old unnecessary slot, allow for the inclusion of compiler-generated temps and unifies all variable offset calculation into a single function shared by the compilers and the runtime system. o Update the GetVRegOffset function in stack.cc to understand the new layout. o Remove compiler-private offset calculation code and route everything through the shared GetVRegOffset in thread.cc. o Remove "filler word" that existed immediately after the last Dalvik local. This was there to address an initial concern that I had about a single argument register being reused later as a long. Now convinced that it won't happen. o Extend the old "padding" region to include compiler-created temps that can appear to the rest of the rest of the system as Dalvik registers. The new temps will have Dalvik register numbers of -2 and lower. o Treat Method* for the current method as a special Dalvik register denoted by reg number -1. Change-Id: I5b5f3aef9c6a01d3a647ced6ec06981ed228c785 --- src/compiler/codegen/RallocUtil.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/compiler/codegen/RallocUtil.cc') diff --git a/src/compiler/codegen/RallocUtil.cc b/src/compiler/codegen/RallocUtil.cc index cfda72196c..b5ebf65da0 100644 --- a/src/compiler/codegen/RallocUtil.cc +++ b/src/compiler/codegen/RallocUtil.cc @@ -1217,8 +1217,8 @@ extern void oatDoPromotion(CompilationUnit* cUnit) /* Returns sp-relative offset in bytes for a VReg */ extern int oatVRegOffset(CompilationUnit* cUnit, int vReg) { - return (vReg < cUnit->numRegs) ? cUnit->regsOffset + (vReg << 2) : - cUnit->insOffset + ((vReg - cUnit->numRegs) << 2); + return Frame::GetVRegOffset(cUnit->code_item, cUnit->coreSpillMask, + cUnit->fpSpillMask, cUnit->frameSize, vReg); } /* Returns sp-relative offset in bytes for a SReg */ -- cgit v1.2.3-59-g8ed1b