summaryrefslogtreecommitdiff
path: root/test/904-object-allocation/src/Main.java
diff options
context:
space:
mode:
author Andreas Gampe <agampe@google.com> 2017-04-07 09:18:45 -0700
committer Andreas Gampe <agampe@google.com> 2017-04-07 09:46:32 -0700
commita8380240c8c9752c8b43926f677adcac11c2f52f (patch)
tree29aab241dbc797839e327cffcd0b762df7282221 /test/904-object-allocation/src/Main.java
parent4665167ddc34008dfa78a2873685fe7a98772eab (diff)
ART: More refactor for JVMTI run tests (2/3)
Move refactored tests into their final places. Add a host java library that includes those test files. This is a follow-up to CL I740731c3af793521c5a859ef4a1f0ae94d2e1c19 and must be used together with it. Bug: 32072923 Test: None Change-Id: I20b6070eb6bdd4b7a0bf42046302bafa10eee54f
Diffstat (limited to 'test/904-object-allocation/src/Main.java')
-rw-r--r--test/904-object-allocation/src/Main.java145
1 files changed, 0 insertions, 145 deletions
diff --git a/test/904-object-allocation/src/Main.java b/test/904-object-allocation/src/Main.java
deleted file mode 100644
index 31e0c8c1ae..0000000000
--- a/test/904-object-allocation/src/Main.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright (C) 2016 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;
-
-import java.util.ArrayList;
-
-public class Test904 {
- public static void run() throws Exception {
- Main.bindAgentJNIForClass(Test904.class);
-
- // Use a list to ensure objects must be allocated.
- ArrayList<Object> l = new ArrayList<>(100);
-
- prefetchClassNames();
-
- doTest(l);
- }
-
- // Pre-resolve class names so the strings don't have to be allocated as a side effect of
- // callback printing.
- private static void prefetchClassNames() {
- Object.class.getName();
- Integer.class.getName();
- Float.class.getName();
- Short.class.getName();
- Byte.class.getName();
- Double.class.getName();
- }
-
- public static void doTest(ArrayList<Object> l) throws Exception {
- // Disable the global registration from OnLoad, to get into a known state.
- enableAllocationTracking(null, false);
-
- // Enable actual logging callback.
- setupObjectAllocCallback(true);
-
- enableAllocationTracking(null, true);
-
- l.add(new Object());
- l.add(new Integer(1));
-
- enableAllocationTracking(null, false);
-
- l.add(new Float(1.0f));
-
- enableAllocationTracking(Thread.currentThread(), true);
-
- l.add(new Short((short)0));
-
- enableAllocationTracking(Thread.currentThread(), false);
-
- l.add(new Byte((byte)0));
-
- System.out.println("Tracking on same thread");
-
- testThread(l, true, true);
-
- l.add(new Byte((byte)0));
-
- System.out.println("Tracking on same thread, not disabling tracking");
-
- testThread(l, true, false);
-
- System.out.println("Tracking on different thread");
-
- testThread(l, false, true);
-
- l.add(new Byte((byte)0));
-
- // Disable actual logging callback and re-enable tracking, so we can keep the event enabled and
- // check that shutdown works correctly.
- setupObjectAllocCallback(false);
- enableAllocationTracking(null, true);
- }
-
- private static void testThread(final ArrayList<Object> l, final boolean sameThread,
- final boolean disableTracking) throws Exception {
- final SimpleBarrier startBarrier = new SimpleBarrier(1);
- final SimpleBarrier trackBarrier = new SimpleBarrier(1);
- final SimpleBarrier disableBarrier = new SimpleBarrier(1);
-
- final Thread thisThread = Thread.currentThread();
-
- Thread t = new Thread() {
- public void run() {
- try {
- startBarrier.dec();
- trackBarrier.waitFor();
- } catch (Exception e) {
- e.printStackTrace(System.out);
- System.exit(1);
- }
-
- l.add(new Double(0.0));
-
- if (disableTracking) {
- enableAllocationTracking(sameThread ? this : thisThread, false);
- }
- }
- };
-
- t.start();
- startBarrier.waitFor();
- enableAllocationTracking(sameThread ? t : Thread.currentThread(), true);
- trackBarrier.dec();
-
- t.join();
- }
-
- private static class SimpleBarrier {
- int count;
-
- public SimpleBarrier(int i) {
- count = i;
- }
-
- public synchronized void dec() throws Exception {
- count--;
- notifyAll();
- }
-
- public synchronized void waitFor() throws Exception {
- while (count != 0) {
- wait();
- }
- }
- }
-
- private static native void setupObjectAllocCallback(boolean enable);
- private static native void enableAllocationTracking(Thread thread, boolean enable);
-}