From a67354bc353d6e55fc88b924ae0961caa633dfca Mon Sep 17 00:00:00 2001 From: Andreas Gampe Date: Fri, 10 Feb 2017 16:18:30 -0800 Subject: 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 --- test/912-classes/src/Main.java | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'test/912-classes/src/Main.java') 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"; -- cgit v1.2.3-59-g8ed1b