public class IntrinsicGraphBuilder extends Object implements GraphBuilderContext, InvocationPlugin.Receiver
GraphBuilderContext
used to produce a graph for a method based on an
InvocationPlugin
for the method.Modifier and Type | Field and Description |
---|---|
private ValueNode[] |
arguments |
private ConstantReflectionProvider |
constantReflection |
private StructuredGraph |
graph |
private int |
invokeBci |
private FixedWithNextNode |
lastInstr |
private MetaAccessProvider |
metaAccess |
private ResolvedJavaMethod |
method |
private ValueNode |
returnValue |
private StampProvider |
stampProvider |
Constructor and Description |
---|
IntrinsicGraphBuilder(MetaAccessProvider metaAccess,
ConstantReflectionProvider constantReflection,
StampProvider stampProvider,
ResolvedJavaMethod method,
int invokeBci) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
add, addPush, getAssumptions, getInvokeReturnStamp, getNonIntrinsicAncestor, nullCheckedValue
isConstant
private final MetaAccessProvider metaAccess
private final ConstantReflectionProvider constantReflection
private final StampProvider stampProvider
private final StructuredGraph graph
private final ResolvedJavaMethod method
private final int invokeBci
private FixedWithNextNode lastInstr
private ValueNode returnValue
public IntrinsicGraphBuilder(MetaAccessProvider metaAccess, ConstantReflectionProvider constantReflection, StampProvider stampProvider, ResolvedJavaMethod method, int invokeBci)
private <T extends ValueNode> void updateLastInstruction(T v)
public <T extends ValueNode> T append(T v)
append
in interface GraphBuilderContext
public <T extends ValueNode> T recursiveAppend(T v)
recursiveAppend
in interface GraphBuilderContext
public void push(Kind kind, ValueNode value)
push
in interface GraphBuilderContext
public void handleReplacedInvoke(CallTargetNode.InvokeKind invokeKind, ResolvedJavaMethod targetMethod, ValueNode[] args, boolean forceInlineEverything)
handleReplacedInvoke
in interface GraphBuilderContext
public StampProvider getStampProvider()
getStampProvider
in interface GraphBuilderContext
public MetaAccessProvider getMetaAccess()
getMetaAccess
in interface GraphBuilderContext
public ConstantReflectionProvider getConstantReflection()
getConstantReflection
in interface GraphBuilderContext
public StructuredGraph getGraph()
getGraph
in interface GraphBuilderContext
public void setStateAfter(StateSplit sideEffect)
setStateAfter
in interface GraphBuilderContext
public GraphBuilderContext getParent()
getParent
in interface GraphBuilderContext
public ResolvedJavaMethod getMethod()
getMethod
in interface GraphBuilderContext
public int bci()
bci
in interface GraphBuilderContext
public CallTargetNode.InvokeKind getInvokeKind()
getInvokeKind
in interface GraphBuilderContext
public JavaType getInvokeReturnType()
getInvokeReturnType
in interface GraphBuilderContext
public int getDepth()
getDepth
in interface GraphBuilderContext
public boolean parsingIntrinsic()
parsingIntrinsic
in interface GraphBuilderContext
public IntrinsicContext getIntrinsic()
getIntrinsic
in interface GraphBuilderContext
public BailoutException bailout(String string)
bailout
in interface GraphBuilderContext
public ValueNode get()
get
in interface InvocationPlugin.Receiver
public StructuredGraph buildGraph(InvocationPlugin plugin)
public void intrinsify(ResolvedJavaMethod targetMethod, ResolvedJavaMethod substitute, ValueNode[] args)
intrinsify
in interface GraphBuilderContext