< prev index next >

src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotNmethod.java

Print this page

        

*** 28,44 **** import jdk.vm.ci.meta.JavaKind; import jdk.vm.ci.meta.JavaType; import jdk.vm.ci.meta.ResolvedJavaMethod; /** ! * Implementation of {@link InstalledCode} for code installed as an nmethod. The nmethod stores a ! * weak reference to an instance of this class. This is necessary to keep the nmethod from being ! * unloaded while the associated {@link HotSpotNmethod} instance is alive. ! * <p> ! * Note that there is no (current) way for the reference from an nmethod to a {@link HotSpotNmethod} ! * instance to be anything but weak. This is due to the fact that HotSpot does not treat nmethods as ! * strong GC roots. */ public class HotSpotNmethod extends HotSpotInstalledCode { /** * This (indirect) Method* reference is safe since class redefinition preserves all methods --- 28,41 ---- import jdk.vm.ci.meta.JavaKind; import jdk.vm.ci.meta.JavaType; import jdk.vm.ci.meta.ResolvedJavaMethod; /** ! * Implementation of {@link InstalledCode} for code installed as an nmethod. ! * ! * When a {@link HotSpotNmethod} dies, it triggers unloading of the nmethod unless ! * {@link #isDefault() == true}. */ public class HotSpotNmethod extends HotSpotInstalledCode { /** * This (indirect) Method* reference is safe since class redefinition preserves all methods
*** 52,61 **** --- 49,63 ---- super(name); this.method = method; this.isDefault = isDefault; } + /** + * Determines if the nmethod associated with this object is the compiled entry point for + * {@link #getMethod()}. If {@code false}, then the nmethod is unloaded when the VM determines + * this object has died. + */ public boolean isDefault() { return isDefault; } public ResolvedJavaMethod getMethod() {
< prev index next >