diff options
| author | 2017-02-10 16:18:30 -0800 | |
|---|---|---|
| committer | 2017-02-10 16:20:21 -0800 | |
| commit | a67354bc353d6e55fc88b924ae0961caa633dfca (patch) | |
| tree | e2751ec69a10ae179ef696b3c800675ac4079a1a /test/912-classes/src/Main.java | |
| parent | a05787ee3a82dab40ec9f3ea232f38a140bfb3ad (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.java | 7 |
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"; |