mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 15:24:43 +02:00
8243287: Removal of Unsafe::defineAnonymousClass
Reviewed-by: iklam, mchung, alanb, dholmes
This commit is contained in:
parent
a564f2cbd5
commit
e14b026841
122 changed files with 328 additions and 3679 deletions
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2021, 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
|
||||
|
@ -38,7 +38,6 @@
|
|||
|
||||
package compiler.jsr292;
|
||||
|
||||
import jdk.internal.misc.Unsafe;
|
||||
import jdk.internal.org.objectweb.asm.ClassWriter;
|
||||
import jdk.internal.org.objectweb.asm.Handle;
|
||||
import jdk.internal.org.objectweb.asm.MethodVisitor;
|
||||
|
@ -47,6 +46,7 @@ import java.lang.invoke.CallSite;
|
|||
import java.lang.invoke.MethodHandle;
|
||||
import java.lang.invoke.MethodHandleHelper;
|
||||
import java.lang.invoke.MethodHandles;
|
||||
import java.lang.invoke.MethodHandles.Lookup;
|
||||
import java.lang.invoke.MethodType;
|
||||
import java.lang.invoke.MutableCallSite;
|
||||
import java.lang.ref.PhantomReference;
|
||||
|
@ -61,7 +61,6 @@ import static jdk.internal.org.objectweb.asm.Opcodes.H_INVOKESTATIC;
|
|||
import static jdk.internal.org.objectweb.asm.Opcodes.IRETURN;
|
||||
|
||||
public class CallSiteDepContextTest {
|
||||
static final Unsafe UNSAFE = Unsafe.getUnsafe();
|
||||
static final MethodHandles.Lookup LOOKUP = MethodHandleHelper.IMPL_LOOKUP;
|
||||
static final String CLASS_NAME = "compiler/jsr292/Test";
|
||||
static final String METHOD_NAME = "m";
|
||||
|
@ -130,8 +129,9 @@ public class CallSiteDepContextTest {
|
|||
}
|
||||
|
||||
public static void testSharedCallSite() throws Throwable {
|
||||
Class<?> cls1 = UNSAFE.defineAnonymousClass(CallSiteDepContextTest.class, getClassFile("CS_1"), null);
|
||||
Class<?> cls2 = UNSAFE.defineAnonymousClass(CallSiteDepContextTest.class, getClassFile("CS_2"), null);
|
||||
Lookup lookup = MethodHandles.lookup();
|
||||
Class<?> cls1 = lookup.defineHiddenClass(getClassFile("CS_1"), true).lookupClass();
|
||||
Class<?> cls2 = lookup.defineHiddenClass(getClassFile("CS_2"), true).lookupClass();
|
||||
|
||||
MethodHandle[] mhs = new MethodHandle[] {
|
||||
LOOKUP.findStatic(cls1, METHOD_NAME, TYPE),
|
||||
|
@ -152,7 +152,8 @@ public class CallSiteDepContextTest {
|
|||
execute(1, mh);
|
||||
|
||||
// mcs.context == cls1
|
||||
Class<?> cls1 = UNSAFE.defineAnonymousClass(CallSiteDepContextTest.class, getClassFile("NonBound_1"), null);
|
||||
Lookup lookup = MethodHandles.lookup();
|
||||
Class<?> cls1 = lookup.defineHiddenClass(getClassFile("NonBound_1"), true).lookupClass();
|
||||
MethodHandle mh1 = LOOKUP.findStatic(cls1, METHOD_NAME, TYPE);
|
||||
|
||||
execute(1, mh1);
|
||||
|
@ -170,9 +171,10 @@ public class CallSiteDepContextTest {
|
|||
|
||||
mcs = new MutableCallSite(LOOKUP.findStatic(T.class, "f1", TYPE));
|
||||
|
||||
Lookup lookup = MethodHandles.lookup();
|
||||
Class<?>[] cls = new Class[] {
|
||||
UNSAFE.defineAnonymousClass(CallSiteDepContextTest.class, getClassFile("GC_1" + id), null),
|
||||
UNSAFE.defineAnonymousClass(CallSiteDepContextTest.class, getClassFile("GC_2" + id), null),
|
||||
lookup.defineHiddenClass(getClassFile("GC_1"), true).lookupClass(),
|
||||
lookup.defineHiddenClass(getClassFile("GC_2"), true).lookupClass(),
|
||||
};
|
||||
|
||||
MethodHandle[] mhs = new MethodHandle[] {
|
||||
|
@ -186,7 +188,7 @@ public class CallSiteDepContextTest {
|
|||
execute(1, mhs);
|
||||
|
||||
ref = new PhantomReference<>(cls[0], rq);
|
||||
cls[0] = UNSAFE.defineAnonymousClass(CallSiteDepContextTest.class, getClassFile("GC_3" + id), null);
|
||||
cls[0] = lookup.defineHiddenClass(getClassFile("GC_3"), true).lookupClass();
|
||||
mhs[0] = LOOKUP.findStatic(cls[0], METHOD_NAME, TYPE);
|
||||
|
||||
do {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue