summaryrefslogtreecommitdiff
path: root/src/compiler/codegen
diff options
context:
space:
mode:
author Elliott Hughes <enh@google.com> 2012-04-18 08:34:32 -0700
committer Android (Google) Code Review <android-gerrit@google.com> 2012-04-18 08:34:32 -0700
commita7e6cb4efd9384ac1520976f2d620c72bb08b758 (patch)
treeeebf758848f8f4cd8dcb2f3a8299a6f98412e0f8 /src/compiler/codegen
parenta7dedf4929a1e70775e57168ee389088a7a7dafe (diff)
parent36ecb789775eb5bd284ce5dd35d2e31e42354f24 (diff)
Merge "Fix stack overflow handling." into ics-mr1-plus-art
Diffstat (limited to 'src/compiler/codegen')
-rw-r--r--src/compiler/codegen/GenCommon.cc10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/compiler/codegen/GenCommon.cc b/src/compiler/codegen/GenCommon.cc
index 71fd33cc56..d3ab039325 100644
--- a/src/compiler/codegen/GenCommon.cc
+++ b/src/compiler/codegen/GenCommon.cc
@@ -942,11 +942,13 @@ void handleThrowLaunchpads(CompilationUnit *cUnit)
ENTRYPOINT_OFFSET(pThrowNoSuchMethodFromCode);
break;
case kThrowStackOverflow:
- funcOffset =
- ENTRYPOINT_OFFSET(pThrowStackOverflowFromCode);
+ funcOffset = ENTRYPOINT_OFFSET(pThrowStackOverflowFromCode);
// Restore stack alignment
- opRegImm(cUnit, kOpAdd, rSP,
- (cUnit->numCoreSpills + cUnit->numFPSpills) * 4);
+#if !defined(TARGET_X86)
+ opRegImm(cUnit, kOpAdd, rSP, (cUnit->numCoreSpills + cUnit->numFPSpills) * 4);
+#else
+ opRegImm(cUnit, kOpAdd, rSP, cUnit->frameSize);
+#endif
break;
default:
LOG(FATAL) << "Unexpected throw kind: " << lab->operands[0];