public static class SubstrateGraphBuilderPhase.SubstrateBytecodeParser extends SharedGraphBuilderPhase.SharedBytecodeParser
bytecodeProvider, BytecodesParsed, code, constantPool, currentBlock, debug, entryBCI, EXPLICIT_EXCEPTIONS, fallBackSpeculationNotTaken, fallBackSpeculationTaken, frameState, graph, graphBuilderConfig, intrinsicContext, lastInstr, method, optimisticOpts, options, profilingInfo, providers, stream, TRACELEVEL_BLOCKMAP, TRACELEVEL_INSTRUCTIONS, TRACELEVEL_STATE
Constructor and Description |
---|
SubstrateBytecodeParser(org.graalvm.compiler.java.GraphBuilderPhase.Instance graphBuilderInstance,
org.graalvm.compiler.nodes.StructuredGraph graph,
org.graalvm.compiler.java.BytecodeParser parent,
jdk.vm.ci.meta.ResolvedJavaMethod method,
int entryBCI,
org.graalvm.compiler.nodes.graphbuilderconf.IntrinsicContext intrinsicContext,
boolean explicitExceptionEdges) |
Modifier and Type | Method and Description |
---|---|
boolean |
canDeferPlugin(org.graalvm.compiler.nodes.graphbuilderconf.GeneratedInvocationPlugin plugin)
Fold and Node.NodeIntrinsic can be deferred during parsing/decoding. |
protected boolean |
disableLoopSafepoint() |
protected SubstrateGraphBuilderPhase |
getGraphBuilderInstance() |
org.graalvm.compiler.nodes.InvokeWithExceptionNode |
handleInvokeWithException(org.graalvm.compiler.nodes.CallTargetNode callTarget,
jdk.vm.ci.meta.JavaKind resultType) |
canInlinePartialIntrinsicExit, createMethodCallTarget, emitCheckForInvokeSuperSpecial, genIf, genReturn, handleUnresolvedCheckCast, handleUnresolvedExceptionType, handleUnresolvedInstanceOf, handleUnresolvedInvoke, handleUnresolvedLoadConstant, handleUnresolvedLoadField, handleUnresolvedNewInstance, handleUnresolvedNewMultiArray, handleUnresolvedNewObjectArray, handleUnresolvedStoreField, isPluginEnabled, loadReferenceTypeLock, lookupMethodInPool, maybeEagerlyResolve, maybeEagerlyResolve, needsExplicitException, needsExplicitNullCheckException, needsExplicitStoreCheckException, shouldComplementProbability, throwParserError
append, appendConstant, appendInvoke, applyInvocationPlugin, bailout, bci, build, buildRootMethod, checkLastInstruction, cleanupFinalGraph, createAnchor, createBytecodePosition, createHandleExceptionTarget, createInstanceOf, createInstanceOf, createInstanceOfAllowNull, createInvoke, createInvokeWithException, createMonitorEnterNode, createNonInlinedInvoke, createNonInlinedInvoke, emitBytecodeExceptionCheck, finishInstruction, finishPrepare, forceLoopPhis, genAnd, genArrayLength, genCheckCast, genCheckCast, genConditional, genExplicitExceptionEdge, genFloatAdd, genFloatConvert, genFloatDiv, genFloatMul, genFloatRem, genFloatSub, genGetField, genGetField, genGetStatic, genGoto, genIf, genIfNode, genInstanceOf, genInstanceOf, genIntegerAdd, genIntegerDiv, genIntegerEquals, genIntegerLessThan, genIntegerMul, genIntegerNormalizeCompare, genIntegerRem, genIntegerSub, genIntegerSwitch, genInvokeDynamic, genInvokeInterface, genInvokeInterface, genInvokeSpecial, genInvokeStatic, genInvokeVirtual, genInvokeVirtual, genJsr, genLeftShift, genLoadConstant, genLoadField, genLoadIndexed, genMonitorEnter, genMonitorExit, genNarrow, genNegateOp, genNewInstance, genNewInstance, genNewInstance, genNormalizeCompare, genObjectEquals, genOr, genPutField, genPutField, genPutStatic, genPutStatic, genRet, genRightShift, genSignExtend, genStoreField, genStoreIndexed, genThrow, genUnique, genUnique, genUnsignedRightShift, genVolatileFieldReadProxy, genXor, genZeroExtend, getActionForInvokeExceptionEdge, getBeforeUnwindNode, getCode, getConstantFieldProvider, getConstantReflection, getFrameStateBuilder, getGraph, getIntrinsic, getInvokeKind, getInvokeReturnType, getMetaAccess, getMethod, getNonIntrinsicAncestor, getParent, getProfileForInvoke, getProfileProbability, getReplacements, getStampProvider, getStream, getUnwindValue, handleIllegalNewInstance, handleReplacedInvoke, handleReplacedInvoke, intrinsify, intrinsify, isNeverExecutedCode, isPotentialCountedLoopExit, iterateBytecodesForBlock, loadLocal, loadLocalObject, lookupField, lookupField, lookupReferencedTypeInPool, lookupType, maybeEagerlyInitialize, maybeEmitExplicitBoundsCheck, maybeEmitExplicitDivisionByZeroCheck, maybeEmitExplicitNullCheck, maybeEmitExplicitStoreCheck, needsExplicitBoundsCheckException, needsExplicitClassCastException, needsExplicitDivisionByZeroException, notifyAfterInline, notifyBeforeInline, parseAndInlineCallee, parsingIntrinsic, pop, postProcessIfNode, processBlock, processBytecode, push, replacePlugin, setCurrentFrameState, setStateAfter, stampFromValueForForcedPhis, storeLocal, toString, traceInstruction, traceWithContext, tryInvocationPlugin, typeIsResolved
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
public SubstrateBytecodeParser(org.graalvm.compiler.java.GraphBuilderPhase.Instance graphBuilderInstance, org.graalvm.compiler.nodes.StructuredGraph graph, org.graalvm.compiler.java.BytecodeParser parent, jdk.vm.ci.meta.ResolvedJavaMethod method, int entryBCI, org.graalvm.compiler.nodes.graphbuilderconf.IntrinsicContext intrinsicContext, boolean explicitExceptionEdges)
protected SubstrateGraphBuilderPhase getGraphBuilderInstance()
getGraphBuilderInstance
in class org.graalvm.compiler.java.BytecodeParser
protected boolean disableLoopSafepoint()
disableLoopSafepoint
in class org.graalvm.compiler.java.BytecodeParser
public boolean canDeferPlugin(org.graalvm.compiler.nodes.graphbuilderconf.GeneratedInvocationPlugin plugin)
Fold
and Node.NodeIntrinsic
can be deferred during parsing/decoding. Only by
the end of Snippet instantiation do they need to
have been processed.
This is how SVM handles snippets. They are parsed with plugins disabled and then encoded
and stored in the image. When the snippet is needed at runtime the graph is decoded and
the plugins are run during the decoding process. If they aren't handled at this point
then they will never be handled.public org.graalvm.compiler.nodes.InvokeWithExceptionNode handleInvokeWithException(org.graalvm.compiler.nodes.CallTargetNode callTarget, jdk.vm.ci.meta.JavaKind resultType)