< prev index next >
test/jdk/jdk/jfr/event/runtime/TestClasses.java
Print this page
rev 58565 : 8238358: Implementation of JEP 371: Hidden Classes
Reviewed-by: duke
Contributed-by: mandy.chung@oracle.com, lois.foltan@oracle.com, david.holmes@oracle.com, harold.seigel@oracle.com, serguei.spitsyn@oracle.com, alex.buckley@oracle.com, jamsheed.c.m@oracle.com
*** 1,7 ****
/*
! * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
--- 1,7 ----
/*
! * Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
*** 23,32 ****
--- 23,40 ----
* questions.
*/
package jdk.jfr.event.runtime;
+ import java.lang.invoke.MethodType;
+ import java.lang.invoke.MethodHandles;
+ import java.lang.invoke.MethodHandles.Lookup;
+ import java.lang.reflect.Array;
+ import static java.lang.invoke.MethodHandles.Lookup.ClassOption.*;
+
+ import jdk.internal.misc.Unsafe;
+
public class TestClasses {
protected TestClassPrivate testClassPrivate;
protected TestClassPrivateStatic testClassPrivateStatic;
*** 74,83 ****
}
class TestClass {
static {
! // force creation of anonymous class (for the lambda form)
Runnable r = () -> System.out.println("Hello");
r.run();
}
}
--- 82,103 ----
}
class TestClass {
static {
! // force creation of hidden class (for the lambda form)
Runnable r = () -> System.out.println("Hello");
r.run();
}
+
+ public static void createNonFindableClasses(byte[] klassbuf) throws Throwable {
+ // Create a hidden class and an array of hidden classes.
+ Lookup lookup = MethodHandles.lookup();
+ Class<?> clh = lookup.defineHiddenClass(klassbuf, false, NESTMATE).lookupClass();
+ Class<?> arrayOfHidden = Array.newInstance(clh, 10).getClass(); // HAS ISSUES?
+
+ // Create an Unsafe anonymous class and an array of unsafe anonymous classes.
+ Unsafe unsafe = Unsafe.getUnsafe();
+ Class<?> clu = unsafe.defineAnonymousClass(TestClass.class, klassbuf, new Object[0]);
+ final Class<?> arrayOfUAC = Array.newInstance(clu, 15).getClass();
+ }
}
< prev index next >