< prev index next >

src/java.base/share/classes/java/lang/invoke/MethodHandleNatives.java

Print this page

        

*** 28,38 **** import java.lang.invoke.MethodHandles.Lookup; import java.lang.reflect.Field; import static java.lang.invoke.MethodHandleNatives.Constants.*; import static java.lang.invoke.MethodHandleStatics.*; import static java.lang.invoke.MethodHandles.Lookup.IMPL_LOOKUP; ! import jdk.internal.ref.Cleaner; /** * The JVM interface for the method handles package is all here. * This is an interface internal and private to an implementation of JSR 292. * <em>This class is not part of the JSR 292 standard.</em> --- 28,38 ---- import java.lang.invoke.MethodHandles.Lookup; import java.lang.reflect.Field; import static java.lang.invoke.MethodHandleNatives.Constants.*; import static java.lang.invoke.MethodHandleStatics.*; import static java.lang.invoke.MethodHandles.Lookup.IMPL_LOOKUP; ! import jdk.internal.ref.CleanerFactory; /** * The JVM interface for the method handles package is all here. * This is an interface internal and private to an implementation of JSR 292. * <em>This class is not part of the JSR 292 standard.</em>
*** 66,79 **** static class CallSiteContext implements Runnable { //@Injected JVM_nmethodBucket* vmdependencies; static CallSiteContext make(CallSite cs) { final CallSiteContext newContext = new CallSiteContext(); ! // Cleaner is attached to CallSite instance and it clears native structures allocated for CallSite context. ! // Though the CallSite can become unreachable, its Context is retained by the Cleaner instance (which is ! // referenced from Cleaner class) until cleanup is performed. ! Cleaner.create(cs, newContext); return newContext; } @Override public void run() { --- 66,81 ---- static class CallSiteContext implements Runnable { //@Injected JVM_nmethodBucket* vmdependencies; static CallSiteContext make(CallSite cs) { final CallSiteContext newContext = new CallSiteContext(); ! // CallSite instance is tracked by a Cleanable which clears native ! // structures allocated for CallSite context. Though the CallSite can ! // become unreachable, its Context is retained by the Cleanable instance ! // (which is referenced from Cleaner instance which is referenced from ! // CleanerFactory class) until cleanup is performed. ! CleanerFactory.cleaner().register(cs, newContext); return newContext; } @Override public void run() {
< prev index next >