protected class PEGraphDecoder.PENonAppendGraphBuilderContext extends Object implements GraphBuilderContext
Modifier and Type | Field and Description |
---|---|
protected Invoke |
invoke |
protected PEGraphDecoder.PEMethodScope |
methodScope |
Constructor and Description |
---|
PENonAppendGraphBuilderContext(PEGraphDecoder.PEMethodScope methodScope,
Invoke invoke) |
Modifier and Type | Method and Description |
---|---|
<T extends ValueNode> |
append(T value)
Raw operation for adding a node to the graph when neither
GraphBuilderContext.add(T) nor
GraphBuilderContext.addPush(Kind, ValueNode) can be used. |
BailoutException |
bailout(String string) |
int |
bci()
Gets the index of the bytecode instruction currently being parsed.
|
ConstantReflectionProvider |
getConstantReflection() |
int |
getDepth()
Gets the inline depth of this context.
|
StructuredGraph |
getGraph()
Gets the graph being constructed.
|
IntrinsicContext |
getIntrinsic()
Gets the intrinsic of the current parsing context or
null if not
parsing an intrinsic . |
CallTargetNode.InvokeKind |
getInvokeKind()
Gets the kind of invocation currently being parsed.
|
JavaType |
getInvokeReturnType()
Gets the return type of the invocation currently being parsed.
|
MetaAccessProvider |
getMetaAccess() |
ResolvedJavaMethod |
getMethod()
Gets the method being parsed by this context.
|
GraphBuilderContext |
getParent()
Gets the parsing context for the method that inlines the method being parsed by this context.
|
StampProvider |
getStampProvider() |
void |
handleReplacedInvoke(CallTargetNode.InvokeKind invokeKind,
ResolvedJavaMethod targetMethod,
ValueNode[] args,
boolean inlineEverything)
Handles an invocation that a plugin determines can replace the original invocation (i.e., the
one for which the plugin was applied).
|
void |
intrinsify(ResolvedJavaMethod targetMethod,
ResolvedJavaMethod substitute,
ValueNode[] args)
Intrinsifies an invocation of a given method by inlining the bytecodes of a given
substitution method.
|
void |
push(Kind kind,
ValueNode value)
Pushes a given value to the frame state stack using an explicit kind.
|
<T extends ValueNode> |
recursiveAppend(T value)
Adds the given node to the graph and also adds recursively all referenced inputs.
|
void |
setStateAfter(StateSplit stateSplit)
Creates a snap shot of the current frame state with the BCI of the instruction after the one
currently being parsed and assigns it to a given side
effect node.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
add, addPush, getAssumptions, getInvokeReturnStamp, getNonIntrinsicAncestor, nullCheckedValue, parsingIntrinsic
protected final PEGraphDecoder.PEMethodScope methodScope
public PENonAppendGraphBuilderContext(PEGraphDecoder.PEMethodScope methodScope, Invoke invoke)
public BailoutException bailout(String string)
bailout
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()
GraphBuilderContext
getGraph
in interface GraphBuilderContext
public int getDepth()
GraphBuilderContext
getDepth
in interface GraphBuilderContext
public IntrinsicContext getIntrinsic()
GraphBuilderContext
null
if not
parsing an intrinsic
.getIntrinsic
in interface GraphBuilderContext
public <T extends ValueNode> T append(T value)
GraphBuilderContext
GraphBuilderContext.add(T)
nor
GraphBuilderContext.addPush(Kind, ValueNode)
can be used.append
in interface GraphBuilderContext
public <T extends ValueNode> T recursiveAppend(T value)
GraphBuilderContext
recursiveAppend
in interface GraphBuilderContext
value
- the node to be added to the graphpublic void push(Kind kind, ValueNode value)
GraphBuilderContext
value.getKind()
is different from the kind that the bytecode instruction
currently being parsed pushes to the stack.push
in interface GraphBuilderContext
kind
- the kind to use when type checking this operationvalue
- the value to push to the stack. The value must already have been
appended.public void handleReplacedInvoke(CallTargetNode.InvokeKind invokeKind, ResolvedJavaMethod targetMethod, ValueNode[] args, boolean inlineEverything)
GraphBuilderContext
handleReplacedInvoke
in interface GraphBuilderContext
invokeKind
- the kind of the replacement invocationtargetMethod
- the target of the replacement invocationargs
- the arguments to the replacement invocationinlineEverything
- specifies if all invocations encountered in the scope of
handling the replaced invoke are to be force inlinedpublic void intrinsify(ResolvedJavaMethod targetMethod, ResolvedJavaMethod substitute, ValueNode[] args)
GraphBuilderContext
intrinsify
in interface GraphBuilderContext
targetMethod
- the method being intrinsifiedsubstitute
- the intrinsic implementationargs
- the arguments with which to inline the invocationpublic void setStateAfter(StateSplit stateSplit)
GraphBuilderContext
setStateAfter
in interface GraphBuilderContext
stateSplit
- a side effect node just appended to the graphpublic GraphBuilderContext getParent()
GraphBuilderContext
getParent
in interface GraphBuilderContext
public ResolvedJavaMethod getMethod()
GraphBuilderContext
getMethod
in interface GraphBuilderContext
public int bci()
GraphBuilderContext
bci
in interface GraphBuilderContext
public CallTargetNode.InvokeKind getInvokeKind()
GraphBuilderContext
getInvokeKind
in interface GraphBuilderContext
public JavaType getInvokeReturnType()
GraphBuilderContext
getInvokeReturnType
in interface GraphBuilderContext