summaryrefslogtreecommitdiff
path: root/test/1337-gc-coverage/src/Main.java
diff options
context:
space:
mode:
author Mathieu Chartier <mathieuc@google.com> 2019-04-09 20:11:19 +0000
committer Mathieu Chartier <mathieuc@google.com> 2019-04-09 20:12:05 +0000
commit8f88207206fe39f6dcb4e76e24716c81566f26cc (patch)
tree08297222302fcfec4a97456b59db11fd5acb8965 /test/1337-gc-coverage/src/Main.java
parent679dec1c8ade054feea745cf31d0f4f9f9cb1d9b (diff)
Revert "Remove support for moving GC collector transitions"
This reverts commit 66a655029c98de9492570f4cfd06476c0fde9cd1. Bug: 78286368 Bug: 130236304 Reason for revert: Causes tombstones in AOSP walleye Change-Id: I41c27d119f82490b68a01f85d92d22d0961d2af6
Diffstat (limited to 'test/1337-gc-coverage/src/Main.java')
-rw-r--r--test/1337-gc-coverage/src/Main.java31
1 files changed, 31 insertions, 0 deletions
diff --git a/test/1337-gc-coverage/src/Main.java b/test/1337-gc-coverage/src/Main.java
index 128ad4d83c..7875eb1824 100644
--- a/test/1337-gc-coverage/src/Main.java
+++ b/test/1337-gc-coverage/src/Main.java
@@ -22,6 +22,7 @@ public class Main {
public static void main(String[] args) {
System.loadLibrary(args[0]);
testHomogeneousCompaction();
+ testCollectorTransitions();
System.out.println("Done.");
}
@@ -67,10 +68,40 @@ public class Main {
}
}
+ private static void testCollectorTransitions() {
+ if (supportCollectorTransition()) {
+ Object o = new Object();
+ // Transition to semi-space collector.
+ allocateStuff();
+ transitionToSS();
+ allocateStuff();
+ long addressBefore = objectAddress(o);
+ Runtime.getRuntime().gc();
+ long addressAfter = objectAddress(o);
+ if (addressBefore == addressAfter) {
+ System.out.println("error: Expected different adddress " + addressBefore + " vs " +
+ addressAfter);
+ }
+ // Transition back to CMS.
+ transitionToCMS();
+ allocateStuff();
+ addressBefore = objectAddress(o);
+ Runtime.getRuntime().gc();
+ addressAfter = objectAddress(o);
+ if (addressBefore != addressAfter) {
+ System.out.println("error: Expected same adddress " + addressBefore + " vs " +
+ addressAfter);
+ }
+ }
+ }
+
// Methods to get access to ART internals.
private static native boolean supportHomogeneousSpaceCompact();
private static native boolean performHomogeneousSpaceCompact();
private static native void incrementDisableMovingGC();
private static native void decrementDisableMovingGC();
private static native long objectAddress(Object object);
+ private static native boolean supportCollectorTransition();
+ private static native void transitionToSS();
+ private static native void transitionToCMS();
}