diff options
| author | 2012-04-18 08:34:32 -0700 | |
|---|---|---|
| committer | 2012-04-18 08:34:32 -0700 | |
| commit | a7e6cb4efd9384ac1520976f2d620c72bb08b758 (patch) | |
| tree | eebf758848f8f4cd8dcb2f3a8299a6f98412e0f8 /src/compiler/codegen | |
| parent | a7dedf4929a1e70775e57168ee389088a7a7dafe (diff) | |
| parent | 36ecb789775eb5bd284ce5dd35d2e31e42354f24 (diff) | |
Merge "Fix stack overflow handling." into ics-mr1-plus-art
Diffstat (limited to 'src/compiler/codegen')
| -rw-r--r-- | src/compiler/codegen/GenCommon.cc | 10 |
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]; |