diff options
author | Andreas Gampe <agampe@google.com> | 2014-07-14 16:21:44 -0700 |
---|---|---|
committer | Andreas Gampe <agampe@google.com> | 2014-07-21 23:36:31 -0700 |
commit | 7ea6f79bbddd69d5db86a8656a31aaaf64ae2582 (patch) | |
tree | c64f89b15ca71e87317f6dd405ef4a5560b73e01 /test/018-stack-overflow | |
parent | e72ff8022968b23efedc56c0afdc1d24e8a928c2 (diff) | |
download | art-7ea6f79bbddd69d5db86a8656a31aaaf64ae2582.tar.gz art-7ea6f79bbddd69d5db86a8656a31aaaf64ae2582.tar.bz2 art-7ea6f79bbddd69d5db86a8656a31aaaf64ae2582.zip |
ART: Throw StackOverflowError in native code
Initialize stack-overflow errors in native code to be able to reduce
the preserved area size of the stack.
Includes a refactoring away from constexpr in instruction_set.h to allow
for easy changing of the values.
Change-Id: I117cc8485f43da5f0a470f0f5e5b3dc3b5a06246
Diffstat (limited to 'test/018-stack-overflow')
-rw-r--r-- | test/018-stack-overflow/expected.txt | 9 | ||||
-rwxr-xr-x | test/018-stack-overflow/run | 23 | ||||
-rw-r--r-- | test/018-stack-overflow/src/Main.java | 30 |
3 files changed, 57 insertions, 5 deletions
diff --git a/test/018-stack-overflow/expected.txt b/test/018-stack-overflow/expected.txt index 98b45b7b21..cc10c0cdcf 100644 --- a/test/018-stack-overflow/expected.txt +++ b/test/018-stack-overflow/expected.txt @@ -1,3 +1,10 @@ -caught SOE in testSelfRecursion +libartd run. +caught SOE3 in testSelfRecursion +caught SOE10 in testSelfRecursion +caught SOE in testMutualRecursion +SOE test done +libart run. +caught SOE3 in testSelfRecursion +caught SOE10 in testSelfRecursion caught SOE in testMutualRecursion SOE test done diff --git a/test/018-stack-overflow/run b/test/018-stack-overflow/run new file mode 100755 index 0000000000..1a71a1a5d8 --- /dev/null +++ b/test/018-stack-overflow/run @@ -0,0 +1,23 @@ +#!/bin/bash +# +# Copyright (C) 2014 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Run normal. This will be the debug build. +echo "libartd run." +${RUN} "${@}" + +# Run non-debug. +echo "libart run." +${RUN} "${@/#libartd.so/libart.so}" diff --git a/test/018-stack-overflow/src/Main.java b/test/018-stack-overflow/src/Main.java index 41adabc9ff..0961226e64 100644 --- a/test/018-stack-overflow/src/Main.java +++ b/test/018-stack-overflow/src/Main.java @@ -25,16 +25,38 @@ public class Main { } private static void testSelfRecursion() { +// try { +// stackOverflowTestSub0(); +// } +// catch (StackOverflowError soe) { +// System.out.println("caught SOE0 in testSelfRecursion"); +// } try { - stackOverflowTestSub(0.0, 0.0, 0.0); + stackOverflowTestSub3(0.0, 1.0, 2.0); } catch (StackOverflowError soe) { - System.out.println("caught SOE in testSelfRecursion"); + System.out.println("caught SOE3 in testSelfRecursion"); } + try { + stackOverflowTestSub10(0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0); + } + catch (StackOverflowError soe) { + System.out.println("caught SOE10 in testSelfRecursion"); + } + } + + private static void stackOverflowTestSub0() { + stackOverflowTestSub0(); + } + + private static void stackOverflowTestSub3(double pad1, double pad2, double pad3) { + stackOverflowTestSub3(pad1, pad2, pad3); } - private static void stackOverflowTestSub(double pad1, double pad2, double pad3) { - stackOverflowTestSub(pad1, pad2, pad3); + private static void stackOverflowTestSub10(double pad1, double pad2, double pad3, double pad4, + double pad5, double pad6, double pad7, double pad8, + double pad9, double pad10) { + stackOverflowTestSub10(pad1, pad2, pad3, pad4, pad5, pad6, pad7, pad8, pad9, pad10); } private static void testMutualRecursion() { |