Fix for test 003-omnibus-opcodes
The test is holding a string that is hoped to be cleared live in a dex
register. Avoid this bug in the test by creating the weak reference in a
separate method. Bug: 5771901
Change-Id: I8713e153ec0ce7e028d0587ac8132596d73e955b
diff --git a/test/003-omnibus-opcodes/src/InternedString.java b/test/003-omnibus-opcodes/src/InternedString.java
index c2a2cd9..804564b 100644
--- a/test/003-omnibus-opcodes/src/InternedString.java
+++ b/test/003-omnibus-opcodes/src/InternedString.java
@@ -25,12 +25,15 @@
testDeadInternedString();
}
- private static void testDeadInternedString() {
+ private static WeakReference<String> makeWeakString() {
String s = "blah";
s = s + s;
- WeakReference strRef = new WeakReference<String>(s.intern());
- // Kill s, otherwise the string object is still accessible from root set
- s = CONST;
+ WeakReference<String> strRef = new WeakReference<String>(s.intern());
+ return strRef;
+ }
+
+ private static void testDeadInternedString() {
+ WeakReference<String> strRef = makeWeakString();
System.gc();
// "blahblah" should disappear from the intern list
Main.assertTrue(strRef.get() == null);