public static class SubstrateGraphBuilderPhase.SubstrateBytecodeParser extends SharedGraphBuilderPhase.SharedBytecodeParser
bytecodeProvider, BytecodesParsed, code, constantPool, currentBlock, debug, entryBCI, EXPLICIT_EXCEPTIONS, 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 org.graalvm.compiler.nodes.java.NewArrayNode |
createNewArray(jdk.vm.ci.meta.ResolvedJavaType elementType,
org.graalvm.compiler.nodes.ValueNode length,
boolean fillContents) |
protected org.graalvm.compiler.nodes.java.NewInstanceNode |
createNewInstance(jdk.vm.ci.meta.ResolvedJavaType type,
boolean fillContents) |
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, maybeEagerlyResolve, maybeEagerlyResolve, needsExplicitException, needsExplicitNullCheckException, needsExplicitStoreCheckException, notifyReplacedCall, shouldComplementProbability, throwParserErrorappend, appendConstant, appendInvoke, bailout, bci, build, buildRootMethod, checkLastInstruction, cleanupFinalGraph, createAnchor, createBytecodePosition, createHandleExceptionTarget, createInstanceOf, createInstanceOf, createInstanceOfAllowNull, createInvoke, createInvokeWithException, createMonitorEnterNode, createNewMultiArray, createNonInlinedInvoke, createNonInlinedInvoke, 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, lookupType, maybeEagerlyInitialize, maybeEmitExplicitBoundsCheck, maybeEmitExplicitDivisionByZeroCheck, maybeEmitExplicitNullCheck, maybeEmitExplicitStoreCheck, needsExplicitBoundsCheckException, needsExplicitClassCastException, needsExplicitDivisionByZeroException, notifyAfterInline, notifyBeforeInline, parseAndInlineCallee, parsingIntrinsic, pop, postProcessIfNode, processBlock, processBytecode, push, setCurrentFrameState, setStateAfter, stampFromValueForForcedPhis, storeLocal, toString, traceInstruction, traceWithContext, tryInvocationPlugin, typeIsResolvedclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitpublic 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.BytecodeParserprotected boolean disableLoopSafepoint()
disableLoopSafepoint in class org.graalvm.compiler.java.BytecodeParserprotected org.graalvm.compiler.nodes.java.NewInstanceNode createNewInstance(jdk.vm.ci.meta.ResolvedJavaType type,
boolean fillContents)
createNewInstance in class org.graalvm.compiler.java.BytecodeParserprotected org.graalvm.compiler.nodes.java.NewArrayNode createNewArray(jdk.vm.ci.meta.ResolvedJavaType elementType,
org.graalvm.compiler.nodes.ValueNode length,
boolean fillContents)
createNewArray in class org.graalvm.compiler.java.BytecodeParserpublic 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)