diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/907-get-loaded-classes/src/art/Cerr.java | 27 | ||||
| -rw-r--r-- | test/907-get-loaded-classes/src/art/Test907.java | 23 | ||||
| -rw-r--r-- | test/Android.run-test-jvmti-java-library.mk | 1 |
3 files changed, 50 insertions, 1 deletions
diff --git a/test/907-get-loaded-classes/src/art/Cerr.java b/test/907-get-loaded-classes/src/art/Cerr.java new file mode 100644 index 0000000000..807674ddf6 --- /dev/null +++ b/test/907-get-loaded-classes/src/art/Cerr.java @@ -0,0 +1,27 @@ +/* + * Copyright (C) 2017 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. + */ + +package art; + +public class Cerr { + static { + throwError(); + } + + public static void throwError() { + throw new Error("Error!"); + } +} diff --git a/test/907-get-loaded-classes/src/art/Test907.java b/test/907-get-loaded-classes/src/art/Test907.java index df9ce7ae9f..346e042657 100644 --- a/test/907-get-loaded-classes/src/art/Test907.java +++ b/test/907-get-loaded-classes/src/art/Test907.java @@ -25,21 +25,42 @@ public class Test907 { doTest(); } + static final String NOT_A_REAL_CLASS = "art.NotARealClass_Foo_Bar_Baz"; + public static void doTest() throws Exception { // Ensure some classes are loaded. A a = new A(); B b = new B(); A[] aArray = new A[5]; + int[] iArray = new int[4]; + Object c; + Object d; + try { + // Cerr throws in it's clinit. + c = new Cerr(); + } catch (Error e) { } + try { + d = Class.forName(NOT_A_REAL_CLASS).getDeclaredConstructor().newInstance(); + } catch (Exception e) {} String[] classes = getLoadedClasses(); HashSet<String> classesSet = new HashSet<>(Arrays.asList(classes)); String[] shouldBeLoaded = new String[] { "java.lang.Object", "java.lang.Class", "java.lang.String", "art.Test907$A", - "art.Test907$B", "[Lart.Test907$A;" + "art.Test907$B", "[Lart.Test907$A;", "[I", "art.Cerr", + }; + String[] shouldNotBeLoaded = new String[] { + "I", "J", "B", "Z", "V", "J", "F", "D", "C", "S", NOT_A_REAL_CLASS, }; boolean error = false; + for (String s : shouldNotBeLoaded) { + if (classesSet.contains(s)) { + System.out.println("Found" + s); + error = true; + } + } for (String s : shouldBeLoaded) { if (!classesSet.contains(s)) { System.out.println("Did not find " + s); diff --git a/test/Android.run-test-jvmti-java-library.mk b/test/Android.run-test-jvmti-java-library.mk index 55553226b3..60ce6c7003 100644 --- a/test/Android.run-test-jvmti-java-library.mk +++ b/test/Android.run-test-jvmti-java-library.mk @@ -34,6 +34,7 @@ LOCAL_SRC_FILES += \ 905-object-free/src/art/Test905.java \ 906-iterate-heap/src/art/Test906.java \ 907-get-loaded-classes/src/art/Test907.java \ + 907-get-loaded-classes/src/art/Cerr.java \ 908-gc-start-finish/src/art/Test908.java \ 910-methods/src/art/Test910.java \ 911-get-stack-trace/src/art/Test911.java \ |