summaryrefslogtreecommitdiff
path: root/test/912-classes/src/Main.java
diff options
context:
space:
mode:
author Andreas Gampe <agampe@google.com> 2017-02-10 16:18:30 -0800
committer Andreas Gampe <agampe@google.com> 2017-02-10 16:20:21 -0800
commita67354bc353d6e55fc88b924ae0961caa633dfca (patch)
treee2751ec69a10ae179ef696b3c800675ac4079a1a /test/912-classes/src/Main.java
parenta05787ee3a82dab40ec9f3ea232f38a140bfb3ad (diff)
ART: Correctly handle temporary classes in class-load events (3/3)
When a temporary class is given out in a ClassLoad event, all stored references need to be fixed up before publishing a ClassPrepare event. This CL handles objects stored in the heap. Bug: 31684920 Test: m test-art-host-run-test-912-classes Change-Id: Ia0456c81fd848618e637b93301edf4dbc8d848f2
Diffstat (limited to 'test/912-classes/src/Main.java')
-rw-r--r--test/912-classes/src/Main.java7
1 files changed, 7 insertions, 0 deletions
diff --git a/test/912-classes/src/Main.java b/test/912-classes/src/Main.java
index c1de679502..52a5194138 100644
--- a/test/912-classes/src/Main.java
+++ b/test/912-classes/src/Main.java
@@ -315,6 +315,8 @@ public class Main {
}
private static void testClassLoadPrepareEquality() throws Exception {
+ setEqualityEventStorageClass(ClassF.class);
+
enableClassLoadPrepareEqualityEvents(true);
Class.forName("Main$ClassE");
@@ -393,6 +395,7 @@ public class Main {
private static native void enableClassLoadSeenEvents(boolean b);
private static native boolean hadLoadEvent();
+ private static native void setEqualityEventStorageClass(Class<?> c);
private static native void enableClassLoadPrepareEqualityEvents(boolean b);
private static class TestForNonInit {
@@ -428,6 +431,10 @@ public class Main {
}
}
+ public static class ClassF {
+ public static Object STATIC = null;
+ }
+
private static final String DEX1 = System.getenv("DEX_LOCATION") + "/912-classes.jar";
private static final String DEX2 = System.getenv("DEX_LOCATION") + "/912-classes-ex.jar";