summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastien Hertz <shertz@google.com>2017-04-10 10:48:21 +0200
committerSebastien Hertz <shertz@google.com>2017-04-10 17:44:32 +0200
commitf63e3e0dc0bd6dcc531e3cbb2127a5828339dc25 (patch)
tree6a3586dbf79fbd6d2a22d7489c0afee05cb12fc9
parent24c6abe6d0d0ba8e54baa54c0dee484c3060ca70 (diff)
downloadapache-harmony-f63e3e0dc0bd6dcc531e3cbb2127a5828339dc25.tar.gz
JDWP: update ReferenceType.InstancesTest
Updates debuggee of test ReferenceType.InstancesTest to make sure unreachable objects cannot be kept alive by a DEX register in the stack frame used by the test. Indeed the last 'new' in a loop can be stored in a DEX register which is not overwritten after that instruction. To avoid that situation, we move the allocation of such objects into a separate method. Bug: 36921933 Test: art/tools/run-jdwp-tests.sh --mode=host --variant=X64 Change-Id: I723a83430121a02470fa8bdcc9af77ec358d4929
-rw-r--r--jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ReferenceType/InstancesDebuggee.java29
1 files changed, 18 insertions, 11 deletions
diff --git a/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ReferenceType/InstancesDebuggee.java b/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ReferenceType/InstancesDebuggee.java
index b165f26..f59adf7 100644
--- a/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ReferenceType/InstancesDebuggee.java
+++ b/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ReferenceType/InstancesDebuggee.java
@@ -39,23 +39,30 @@ public class InstancesDebuggee extends SyncDebuggee {
@Override
public void run() {
- //Objects reachable for garbage collection purpose
-
+ // Objects reachable for garbage collection purpose.
ArrayList<MockClass> reachableObjs = new ArrayList<MockClass>();
-
- for(int i = 0; i < reachableObjNum; i++) {
- reachableObjs.add(new MockClass(true));
- }
-
- //Objects unreachable
- for(int i = 0; i < unreachableObjNum; i++) {
- new MockClass(false);
- }
+ allocateReachableObjects(reachableObjs);
+
+ // Objects unreachable.
+ allocateUnreachableObjects();
+
synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_READY);
logWriter.println("--> Debuggee: InstancesDebuggee...");
synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
}
+ private static void allocateReachableObjects(ArrayList<MockClass> reachableObjs) {
+ for (int i = 0; i < reachableObjNum; i++) {
+ reachableObjs.add(new MockClass(true));
+ }
+ }
+
+ private static void allocateUnreachableObjects() {
+ for (int i = 0; i < unreachableObjNum; i++) {
+ new MockClass(false);
+ }
+ }
+
public static void main(String[] args) {
runDebuggee(InstancesDebuggee.class);
}