summaryrefslogtreecommitdiff
path: root/compiler/dex/quick/codegen_util.cc
diff options
context:
space:
mode:
author Andreas Gampe <agampe@google.com> 2014-05-06 03:17:00 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2014-05-06 03:17:00 +0000
commit2a12ad460af139a03c3e9bf5fc7886a7521b333e (patch)
treea7364eb7915712e022cd4dcf67b18e2ecf31d7e3 /compiler/dex/quick/codegen_util.cc
parentfac805ba18254db0cb84661dc2085763730e95e7 (diff)
parentf29a4244bbc278843237f0ae242de077e093b580 (diff)
Merge "x86_64: Fix frame size calculation for 64-bit"
Diffstat (limited to 'compiler/dex/quick/codegen_util.cc')
-rw-r--r--compiler/dex/quick/codegen_util.cc9
1 files changed, 5 insertions, 4 deletions
diff --git a/compiler/dex/quick/codegen_util.cc b/compiler/dex/quick/codegen_util.cc
index 396195450a..9f84e098d9 100644
--- a/compiler/dex/quick/codegen_util.cc
+++ b/compiler/dex/quick/codegen_util.cc
@@ -1050,10 +1050,11 @@ size_t Mir2Lir::GetNumBytesForCompilerTempSpillRegion() {
int Mir2Lir::ComputeFrameSize() {
/* Figure out the frame size */
static const uint32_t kAlignMask = kStackAlignment - 1;
- uint32_t size = ((num_core_spills_ + num_fp_spills_ +
- 1 /* filler word */ + cu_->num_regs + cu_->num_outs)
- * sizeof(uint32_t)) +
- GetNumBytesForCompilerTempSpillRegion();
+ uint32_t size = num_core_spills_ * GetBytesPerGprSpillLocation(cu_->instruction_set)
+ + num_fp_spills_ * GetBytesPerFprSpillLocation(cu_->instruction_set)
+ + sizeof(uint32_t) // Filler.
+ + (cu_->num_regs + cu_->num_outs) * sizeof(uint32_t)
+ + GetNumBytesForCompilerTempSpillRegion();
/* Align and set */
return (size + kAlignMask) & ~(kAlignMask);
}