diff options
author | Mathieu Chartier <mathieuc@google.com> | 2014-03-19 10:17:28 -0700 |
---|---|---|
committer | Mathieu Chartier <mathieuc@google.com> | 2014-03-19 15:12:04 -0700 |
commit | 0d507d1e0441e6bd6f3affca3a60774ea920f317 (patch) | |
tree | e07c72972b893e5fc57294b7a6a329cb9985a52c /compiler/dex/compiler_enums.h | |
parent | 0d9c02e661813abdf18b4e7544e204d2da719d20 (diff) | |
download | android_art-0d507d1e0441e6bd6f3affca3a60774ea920f317.tar.gz android_art-0d507d1e0441e6bd6f3affca3a60774ea920f317.tar.bz2 android_art-0d507d1e0441e6bd6f3affca3a60774ea920f317.zip |
Optimize stack overflow handling.
We now subtract the frame size from the stack pointer for methods
which have a frame smaller than a certain size. Also changed code to
use slow paths instead of launchpads.
Delete kStackOverflow launchpad since it is no longer needed.
ARM optimizations:
One less move per stack overflow check (without fault handler for
stack overflows). Use ldr pc instead of ldr r12, b r12.
Code size (boot.oat):
Before: 58405348
After: 57803236
TODO: X86 doesn't have the case for large frames. This could case an
incoming signal to go past the end of the stack (unlikely however).
Change-Id: Ie3a5635cd6fb09de27960e1f8cee45bfae38fb33
Diffstat (limited to 'compiler/dex/compiler_enums.h')
-rw-r--r-- | compiler/dex/compiler_enums.h | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/compiler/dex/compiler_enums.h b/compiler/dex/compiler_enums.h index 147e840166..718468fb77 100644 --- a/compiler/dex/compiler_enums.h +++ b/compiler/dex/compiler_enums.h @@ -328,7 +328,6 @@ enum ThrowKind { kThrowArrayBounds, kThrowConstantArrayBounds, kThrowNoSuchMethod, - kThrowStackOverflow, }; enum DividePattern { |