public class SubstrateOptimizedCallTargetInstalledCode extends jdk.vm.ci.code.InstalledCode implements SubstrateInstalledCode, org.graalvm.compiler.truffle.common.OptimizedAssumptionDependency
SubstrateOptimizedCallTarget.
Assume that methods return stale values because internal state can change at any safepoint (see
SubstrateInstalledCode).
SubstrateInstalledCode.Factory| Modifier and Type | Field and Description |
|---|---|
protected SubstrateOptimizedCallTarget |
callTarget |
| Modifier | Constructor and Description |
|---|---|
protected |
SubstrateOptimizedCallTargetInstalledCode(SubstrateOptimizedCallTarget callTarget) |
| Modifier and Type | Method and Description |
|---|---|
void |
clearAddress()
This method is called during code uninstallation.
|
Object |
executeVarargs(Object... args) |
byte[] |
getCode() |
org.graalvm.compiler.truffle.common.CompilableTruffleAST |
getCompilable() |
jdk.vm.ci.meta.ResolvedJavaMethod |
getMethod()
Returns the last method object passed to
SubstrateInstalledCode.setAddress(long, jdk.vm.ci.meta.ResolvedJavaMethod). |
String |
getName() |
SubstrateSpeculationLog |
getSpeculationLog() |
long |
getStart() |
void |
invalidate()
Invalidates this installed code and deoptimizes all live invocations, after which both
SubstrateInstalledCode.isValid() and SubstrateInstalledCode.isAlive() return false. |
void |
invalidateWithoutDeoptimization()
Make this code non-entrant, but let live invocations continue execution.
|
boolean |
isValid()
Returns false if not valid, including if previously invalidated without deoptimization in which case there can still be
live activations.
|
void |
onAssumptionInvalidated(Object source,
CharSequence reason) |
void |
setAddress(long address,
jdk.vm.ci.meta.ResolvedJavaMethod method)
Called during code installation: initialize this instance with the given address where its
instructions are, and the method it was compiled from.
|
void |
setCompilationId(org.graalvm.compiler.core.common.CompilationIdentifier id)
Sets the identifier of the compilation that resulted in this code, which can be used to
provide additional information in
SubstrateInstalledCode.getName(). |
getAddress, getEntryPoint, getVersion, isAliveclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetAddress, getEntryPoint, isAliveprotected final SubstrateOptimizedCallTarget callTarget
protected SubstrateOptimizedCallTargetInstalledCode(SubstrateOptimizedCallTarget callTarget)
public final void invalidate()
SubstrateInstalledCodeSubstrateInstalledCode.isValid() and SubstrateInstalledCode.isAlive() return false.invalidate in interface SubstrateInstalledCodeinvalidate in class jdk.vm.ci.code.InstalledCodepublic void onAssumptionInvalidated(Object source, CharSequence reason)
onAssumptionInvalidated in interface org.graalvm.compiler.truffle.common.OptimizedAssumptionDependencypublic boolean isValid()
SubstrateOptimizedCallTargetInstalledCode.invalidate() must still be called even when this method returns false.isValid in interface SubstrateInstalledCodeisValid in interface org.graalvm.compiler.truffle.common.OptimizedAssumptionDependencyisValid in class jdk.vm.ci.code.InstalledCodepublic org.graalvm.compiler.truffle.common.CompilableTruffleAST getCompilable()
getCompilable in interface org.graalvm.compiler.truffle.common.OptimizedAssumptionDependencypublic SubstrateSpeculationLog getSpeculationLog()
getSpeculationLog in interface SubstrateInstalledCodepublic void setCompilationId(org.graalvm.compiler.core.common.CompilationIdentifier id)
SubstrateInstalledCodeSubstrateInstalledCode.getName().setCompilationId in interface SubstrateInstalledCodepublic String getName()
getName in interface SubstrateInstalledCodegetName in class jdk.vm.ci.code.InstalledCodepublic jdk.vm.ci.meta.ResolvedJavaMethod getMethod()
SubstrateInstalledCodeSubstrateInstalledCode.setAddress(long, jdk.vm.ci.meta.ResolvedJavaMethod). The return value might be
passed as the argument to future calls to SubstrateInstalledCode.setAddress(long, jdk.vm.ci.meta.ResolvedJavaMethod).
May return null if the subclass does not have a use for the method object (also not
in SubstrateInstalledCode.setAddress(long, jdk.vm.ci.meta.ResolvedJavaMethod)) and therefore no need to retain it. Expected to return null
if SubstrateInstalledCode.setAddress(long, jdk.vm.ci.meta.ResolvedJavaMethod) has never been called, or after SubstrateInstalledCode.clearAddress() has been called.
getMethod in interface SubstrateInstalledCodepublic void setAddress(long address,
jdk.vm.ci.meta.ResolvedJavaMethod method)
SubstrateInstalledCodeSubstrateInstalledCode.getAddress() and
SubstrateInstalledCode.getEntryPoint() return the given address, and SubstrateInstalledCode.isValid() and
SubstrateInstalledCode.isAlive() return true.setAddress in interface SubstrateInstalledCodepublic void clearAddress()
SubstrateInstalledCodeSubstrateInstalledCode.invalidate() instead.
Reset this instance so that SubstrateInstalledCode.getAddress() and SubstrateInstalledCode.getEntryPoint() return 0, and
SubstrateInstalledCode.isValid() and SubstrateInstalledCode.isAlive() return false.
clearAddress in interface SubstrateInstalledCodepublic void invalidateWithoutDeoptimization()
SubstrateInstalledCodeSubstrateInstalledCode.isValid() returns false, SubstrateInstalledCode.isAlive() returns true, and
SubstrateInstalledCode.getEntryPoint() returns 0.invalidateWithoutDeoptimization in interface SubstrateInstalledCodepublic long getStart()
getStart in class jdk.vm.ci.code.InstalledCodepublic byte[] getCode()
getCode in class jdk.vm.ci.code.InstalledCode