< prev index next >
test/hotspot/jtreg/runtime/Nestmates/privateStaticMethods/TestReflection.java
Print this page
*** 25,36 ****
--- 25,43 ----
* @test
* @bug 8046171
* @summary Test access to private static methods between nestmates and nest-top
* using different flavours of named nested types using core reflection
* @run main TestReflection
+ * @run main/othervm -Dsun.reflect.noInflation=true TestReflection
*/
+ // The first run will use NativeMethodAccessor and due to the limited number
+ // of calls we will not reach the inflation threshold.
+ // The second run disables inflation so we will use the GeneratedMethodAccessor
+ // instead. In this way both sets of Reflection classes are tested.
+
+
public class TestReflection {
// Private method of nest-top for nestmates to access
private static void priv_static_invoke() {
System.out.println("TestReflection::priv_static_invoke");
*** 49,58 ****
--- 56,66 ----
}
void access_priv(StaticNested o) throws Throwable {
o.getClass().getDeclaredMethod("priv_static_invoke", new Class<?>[0]).invoke(null, new Object[0]);
}
void access_priv(StaticIface o) throws Throwable {
+ // Can't use o.getClass() as the method is not in that class
StaticIface.class.getDeclaredMethod("priv_static_invoke", new Class<?>[0]).invoke(null, new Object[0]);
}
// The various nestmates
*** 69,78 ****
--- 77,87 ----
}
default void access_priv(StaticNested o) throws Throwable {
o.getClass().getDeclaredMethod("priv_static_invoke", new Class<?>[0]).invoke(null, new Object[0]);
}
default void access_priv(StaticIface o) throws Throwable {
+ // Can't use o.getClass() as the method is not in that class
StaticIface.class.getDeclaredMethod("priv_static_invoke", new Class<?>[0]).invoke(null, new Object[0]);
}
}
static class StaticNested {
*** 91,100 ****
--- 100,110 ----
}
void access_priv(StaticNested o) throws Throwable {
o.getClass().getDeclaredMethod("priv_static_invoke", new Class<?>[0]).invoke(null, new Object[0]);
}
void access_priv(StaticIface o) throws Throwable {
+ // Can't use o.getClass() as the method is not in that class
StaticIface.class.getDeclaredMethod("priv_static_invoke", new Class<?>[0]).invoke(null, new Object[0]);
}
}
class InnerNested {
*** 107,116 ****
--- 117,127 ----
}
void access_priv(StaticNested o) throws Throwable {
o.getClass().getDeclaredMethod("priv_static_invoke", new Class<?>[0]).invoke(null, new Object[0]);
}
void access_priv(StaticIface o) throws Throwable {
+ // Can't use o.getClass() as the method is not in that class
StaticIface.class.getDeclaredMethod("priv_static_invoke", new Class<?>[0]).invoke(null, new Object[0]);
}
}
public static void main(String[] args) throws Throwable {
< prev index next >