aboutsummaryrefslogtreecommitdiff
path: root/vm/compiler/codegen/arm/CodegenDriver.c
diff options
context:
space:
mode:
authorAndy McFadden <fadden@android.com>2010-02-03 07:21:14 -0800
committerAndy McFadden <fadden@android.com>2010-02-03 13:31:34 -0800
commit4fbba1f95b3e27bdc5f5572bb0420b5f928aa54e (patch)
tree9422f4d2792a64c929b3291dee5e950b8badd0aa /vm/compiler/codegen/arm/CodegenDriver.c
parent6999d84e2c55dc4a46a6c311b55bd5811336d9c4 (diff)
Fix stack overflow edge case.
When a stack overflows, Dalvik allows the stack to expand into a "reserved" area, so that it has enough room to create and initialize the StackOverflowError object. While the stack is expanded we also do the search for an appropriate "catch" block, which may require resolving some exception classes. As it happens, things go badly when the "catch" resolution throws an exception. The VM tries to shrink the stack back down after the second exception is finished, rather than waiting for the initial SOE to finish. Since we still have some additional frames on the stack, we're still occupying the "reserved" area, and the VM aborts when it detects the situation. This changes the stack cleanup to wait until the SOE is being dealt with. For bug 2398031.
Diffstat (limited to 'vm/compiler/codegen/arm/CodegenDriver.c')
0 files changed, 0 insertions, 0 deletions