< prev index next >

test/compiler/c2/Test7190310_unsafe.java

Print this page
rev 11557 : 8132919: use package in compiler tests
Reviewed-by: duke

*** 25,59 **** /* * @test * @bug 7190310 * @summary Inlining WeakReference.get(), and hoisting $referent may lead to non-terminating loops * @modules java.base/jdk.internal.misc ! * @run main/othervm -Xbatch Test7190310_unsafe */ ! import java.lang.ref.*; ! import java.lang.reflect.*; import jdk.internal.misc.Unsafe; public class Test7190310_unsafe { static class TestObject { public String toString() { return "TestObject"; } ! }; private static TestObject str = new TestObject(); private static final WeakReference ref = new WeakReference(str); private TestObject obj; public static void main(String[] args) throws Exception { Class c = Test7190310_unsafe.class.getClassLoader().loadClass("jdk.internal.misc.Unsafe"); Field f = c.getDeclaredField("theUnsafe"); f.setAccessible(true); ! Unsafe unsafe = (Unsafe)f.get(c); f = Reference.class.getDeclaredField("referent"); f.setAccessible(true); long referent_offset = unsafe.objectFieldOffset(f); --- 25,66 ---- /* * @test * @bug 7190310 * @summary Inlining WeakReference.get(), and hoisting $referent may lead to non-terminating loops * @modules java.base/jdk.internal.misc ! * ! * @run main/othervm -Xbatch compiler.c2.Test7190310_unsafe */ ! package compiler.c2; ! import jdk.internal.misc.Unsafe; + import java.lang.ref.Reference; + import java.lang.ref.WeakReference; + import java.lang.reflect.Field; + public class Test7190310_unsafe { static class TestObject { public String toString() { return "TestObject"; } ! } + ; + private static TestObject str = new TestObject(); private static final WeakReference ref = new WeakReference(str); private TestObject obj; public static void main(String[] args) throws Exception { Class c = Test7190310_unsafe.class.getClassLoader().loadClass("jdk.internal.misc.Unsafe"); Field f = c.getDeclaredField("theUnsafe"); f.setAccessible(true); ! Unsafe unsafe = (Unsafe) f.get(c); f = Reference.class.getDeclaredField("referent"); f.setAccessible(true); long referent_offset = unsafe.objectFieldOffset(f);
*** 125,143 **** --- 132,154 ---- } static Object getRef0(WeakReference ref) throws Exception { return ref.get(); } + static Object getRef1(Unsafe unsafe, WeakReference ref, long referent_offset) throws Exception { return unsafe.getObject(ref, referent_offset); } + static Object getRef2(Unsafe unsafe, Reference ref, long referent_offset) throws Exception { return unsafe.getObject(ref, referent_offset); } + static Object getRef3(Unsafe unsafe, Object ref, long referent_offset) throws Exception { return unsafe.getObject(ref, referent_offset); } + static Object getRef4(Unsafe unsafe, Test7190310_unsafe ref, long referent_offset) throws Exception { return unsafe.getObject(ref, referent_offset); } }
< prev index next >