diff options
author | 2018-09-06 10:05:57 +0100 | |
---|---|---|
committer | 2018-09-06 15:21:00 +0100 | |
commit | 2c4ffe1c2a348248af930f47e095e1e051ec1a3d (patch) | |
tree | 4ad09de627703f392c108817c974a9e264a56473 /test/004-StackWalk/src/Main.java | |
parent | 0651b221dd55042ac69e2c0b2cec8843f10f5dfd (diff) |
Fix StackWalk test.
- Make sure methods expected in the C code do exist.
- Adjust new register expectations for $noinline$f
- Make sure all methods were compiled.
- Remove unused test/StackWalk2/StackWalk2.java
Test: 004-StackWalk
Change-Id: I0bd2fa63a152dc696ea0516a5c3f4a2008e7ef2c
Diffstat (limited to 'test/004-StackWalk/src/Main.java')
-rw-r--r-- | test/004-StackWalk/src/Main.java | 42 |
1 files changed, 31 insertions, 11 deletions
diff --git a/test/004-StackWalk/src/Main.java b/test/004-StackWalk/src/Main.java index 072b1d0c4d..2a098f7686 100644 --- a/test/004-StackWalk/src/Main.java +++ b/test/004-StackWalk/src/Main.java @@ -1,19 +1,36 @@ +/* + * Copyright (C) 2011 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. + */ + +// This test depends on the exact format of the DEX file. Since dx is deprecated, +// the classes.dex file is packaged as a test input. It was created with: +// +// $ javac -g -Xlint:-options -source 1.7 -target 1.7 -d classes src/Main.java +// $ dx --debug --dex --output=classes.dex classes + public class Main { public Main() { } - boolean doThrow = false; - int $noinline$f() throws Exception { - g(1); - g(2); - - // This currently defeats inlining of `f`. - if (doThrow) { throw new Error(); } + $noinline$g(1); + $noinline$g(2); return 0; } - void g(int num_calls) { + void $noinline$g(int num_calls) { if (num_calls == 1) { System.out.println("1st call"); } else if (num_calls == 2) { @@ -81,11 +98,14 @@ public class Main { s4 = s18 = s19; s += s4; s += s18; - stackmap(0); - return s; + // Add a branch to workaround ART's large methods without branches heuristic. + if (testStackWalk(0) != 0) { + return s; + } + return s18; } - native int stackmap(int x); + native int testStackWalk(int x); public static void main(String[] args) throws Exception { System.loadLibrary(args[0]); |