public abstract static class SharedGraphBuilderPhase.SharedBytecodeParser
extends org.graalvm.compiler.java.BytecodeParser
blockMap, bytecodeProvider, BytecodesParsed, code, constantPool, currentBlock, debug, entryBCI, EXPLICIT_EXCEPTIONS, fallBackSpeculationNotTaken, fallBackSpeculationTaken, frameState, graph, graphBuilderConfig, intrinsicContext, lastInstr, method, optimisticOpts, options, profilingInfo, stream, TRACELEVEL_BLOCKMAP, TRACELEVEL_INSTRUCTIONS, TRACELEVEL_STATE
Modifier | Constructor and Description |
---|---|
protected |
SharedBytecodeParser(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 |
SharedBytecodeParser(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,
boolean allowIncompleteClasspath) |
Modifier and Type | Method and Description |
---|---|
protected boolean |
asyncExceptionLiveness() |
boolean |
canDeferPlugin(org.graalvm.compiler.nodes.graphbuilderconf.GeneratedInvocationPlugin plugin)
Fold and Node.NodeIntrinsic can be deferred during parsing/decoding. |
protected boolean |
canInlinePartialIntrinsicExit() |
protected void |
clearNonLiveLocalsAtLoopExitCreation(org.graalvm.compiler.java.BciBlockMapping.BciBlock block,
org.graalvm.compiler.java.FrameStateBuilder state) |
protected void |
clearNonLiveLocalsAtTargetCreation(org.graalvm.compiler.java.BciBlockMapping.BciBlock block,
org.graalvm.compiler.java.FrameStateBuilder state) |
org.graalvm.compiler.nodes.java.MethodCallTargetNode |
createMethodCallTarget(org.graalvm.compiler.nodes.CallTargetNode.InvokeKind invokeKind,
jdk.vm.ci.meta.ResolvedJavaMethod targetMethod,
org.graalvm.compiler.nodes.ValueNode[] args,
org.graalvm.compiler.core.common.type.StampPair returnStamp,
jdk.vm.ci.meta.JavaTypeProfile profile) |
protected boolean |
disableLoopSafepoint() |
protected void |
emitCheckForInvokeSuperSpecial(org.graalvm.compiler.nodes.ValueNode[] args) |
protected void |
genIf(org.graalvm.compiler.nodes.ValueNode x,
org.graalvm.compiler.core.common.calc.Condition cond,
org.graalvm.compiler.nodes.ValueNode y) |
protected void |
genReturn(org.graalvm.compiler.nodes.ValueNode returnVal,
jdk.vm.ci.meta.JavaKind returnKind) |
org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration |
getGraphBuilderConfig() |
protected void |
handleIllegalNewInstance(jdk.vm.ci.meta.JavaType type) |
protected void |
handleUnresolvedCheckCast(jdk.vm.ci.meta.JavaType type,
org.graalvm.compiler.nodes.ValueNode object) |
protected void |
handleUnresolvedExceptionType(jdk.vm.ci.meta.JavaType type) |
protected void |
handleUnresolvedInstanceOf(jdk.vm.ci.meta.JavaType type,
org.graalvm.compiler.nodes.ValueNode object) |
protected void |
handleUnresolvedInvoke(jdk.vm.ci.meta.JavaMethod javaMethod,
org.graalvm.compiler.nodes.CallTargetNode.InvokeKind invokeKind) |
protected void |
handleUnresolvedLoadConstant(jdk.vm.ci.meta.JavaType type) |
protected void |
handleUnresolvedLoadField(jdk.vm.ci.meta.JavaField field,
org.graalvm.compiler.nodes.ValueNode receiver) |
protected void |
handleUnresolvedNewInstance(jdk.vm.ci.meta.JavaType type) |
protected void |
handleUnresolvedNewMultiArray(jdk.vm.ci.meta.JavaType type,
org.graalvm.compiler.nodes.ValueNode[] dims) |
protected void |
handleUnresolvedNewObjectArray(jdk.vm.ci.meta.JavaType type,
org.graalvm.compiler.nodes.ValueNode length) |
protected void |
handleUnresolvedStoreField(jdk.vm.ci.meta.JavaField field,
org.graalvm.compiler.nodes.ValueNode value,
org.graalvm.compiler.nodes.ValueNode receiver) |
protected static boolean |
isDeoptimizationEnabled() |
protected boolean |
isMethodDeoptTarget() |
boolean |
isPluginEnabled(org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderPlugin plugin) |
protected Object |
loadReferenceTypeLock()
Native image can suffer high contention when synchronizing resolution and initialization
of a type referenced by a constant pool entry.
|
protected jdk.vm.ci.meta.JavaMethod |
lookupMethodInPool(int cpi,
int opcode) |
protected void |
maybeEagerlyResolve(int cpi,
int bytecode) |
protected jdk.vm.ci.meta.JavaType |
maybeEagerlyResolve(jdk.vm.ci.meta.JavaType type,
jdk.vm.ci.meta.ResolvedJavaType accessingClass) |
boolean |
needsExplicitException() |
protected boolean |
needsExplicitNullCheckException(org.graalvm.compiler.nodes.ValueNode object) |
protected boolean |
needsExplicitStoreCheckException(org.graalvm.compiler.nodes.ValueNode array,
org.graalvm.compiler.nodes.ValueNode value) |
protected RuntimeException |
throwParserError(Throwable e) |
append, appendConstant, appendGoto, appendInvoke, applyInvocationPlugin, bailout, bci, bciCanBeDuplicated, build, buildRootMethod, checkLastInstruction, cleanupFinalGraph, createAnchor, createBytecodePosition, createExceptionDispatch, createHandleExceptionTarget, createInstanceOf, createInstanceOf, createInstanceOfAllowNull, createInvoke, createInvokeWithException, createMonitorEnterNode, createNonInlinedInvoke, createNonInlinedInvoke, emitBytecodeExceptionCheck, forceLoopPhis, genAnd, genArrayLength, genCheckCast, genCheckCast, genConditional, generateBlockMap, 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, getFrameStateBuilder, getGraph, getGraphBuilderInstance, getIntrinsic, getInvokeKind, getInvokeReturnType, getMethod, getNonIntrinsicAncestor, getParent, getProfileData, getProfileForInvoke, getStream, getUnwindValue, handleBytecodeBlock, handleException, handleReplacedInvoke, handleReplacedInvoke, insideTryBlock, intrinsify, intrinsify, isNeverExecutedCode, isPotentialCountedLoopExit, iterateBytecodesForBlock, loadLocal, loadLocalObject, lookupField, lookupField, lookupReferencedTypeInPool, lookupType, maybeEagerlyInitialize, maybeEmitExplicitBoundsCheck, maybeEmitExplicitNullCheck, maybeEmitExplicitStoreCheck, needsExplicitBoundsCheckException, needsExplicitClassCastException, notifyAfterInline, notifyBeforeInline, parseAndInlineCallee, parsingIntrinsic, pop, postProcessIfNode, processBlock, processBytecode, push, replacePlugin, setBciCanBeDuplicated, setStateAfter, stampFromValueForForcedPhis, storeLocal, toString, traceInstruction, traceWithContext, tryInvocationPlugin, typeIsResolved
getConstantFieldProvider, getConstantReflection, getForeignCalls, getLoopsDataProvider, getLowerer, getMetaAccess, getMetaAccessExtensionProvider, getPlatformConfigurationProvider, getProviders, getReplacements, getStampProvider
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
add, addNonNullCast, addPush, genCheckcastDynamic, getCallingContext, getDepth, getExternalInliningContext, getInvokeReturnStamp, maskSubWordValue, maybeEmitExplicitDivisionByZeroCheck, nullCheckedValue, nullCheckedValue
protected SharedBytecodeParser(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 SharedBytecodeParser(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, boolean allowIncompleteClasspath)
public org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration getGraphBuilderConfig()
protected RuntimeException throwParserError(Throwable e)
throwParserError
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.protected jdk.vm.ci.meta.JavaMethod lookupMethodInPool(int cpi, int opcode)
lookupMethodInPool
in class org.graalvm.compiler.java.BytecodeParser
protected Object loadReferenceTypeLock()
loadReferenceTypeLock
in class org.graalvm.compiler.java.BytecodeParser
protected void maybeEagerlyResolve(int cpi, int bytecode)
maybeEagerlyResolve
in class org.graalvm.compiler.java.BytecodeParser
protected jdk.vm.ci.meta.JavaType maybeEagerlyResolve(jdk.vm.ci.meta.JavaType type, jdk.vm.ci.meta.ResolvedJavaType accessingClass)
maybeEagerlyResolve
in class org.graalvm.compiler.java.BytecodeParser
protected void handleIllegalNewInstance(jdk.vm.ci.meta.JavaType type)
handleIllegalNewInstance
in class org.graalvm.compiler.java.BytecodeParser
protected void handleUnresolvedNewInstance(jdk.vm.ci.meta.JavaType type)
handleUnresolvedNewInstance
in class org.graalvm.compiler.java.BytecodeParser
protected void handleUnresolvedNewObjectArray(jdk.vm.ci.meta.JavaType type, org.graalvm.compiler.nodes.ValueNode length)
handleUnresolvedNewObjectArray
in class org.graalvm.compiler.java.BytecodeParser
protected void handleUnresolvedNewMultiArray(jdk.vm.ci.meta.JavaType type, org.graalvm.compiler.nodes.ValueNode[] dims)
handleUnresolvedNewMultiArray
in class org.graalvm.compiler.java.BytecodeParser
protected void handleUnresolvedInstanceOf(jdk.vm.ci.meta.JavaType type, org.graalvm.compiler.nodes.ValueNode object)
handleUnresolvedInstanceOf
in class org.graalvm.compiler.java.BytecodeParser
protected void handleUnresolvedCheckCast(jdk.vm.ci.meta.JavaType type, org.graalvm.compiler.nodes.ValueNode object)
handleUnresolvedCheckCast
in class org.graalvm.compiler.java.BytecodeParser
protected void handleUnresolvedLoadConstant(jdk.vm.ci.meta.JavaType type)
handleUnresolvedLoadConstant
in class org.graalvm.compiler.java.BytecodeParser
protected void handleUnresolvedExceptionType(jdk.vm.ci.meta.JavaType type)
handleUnresolvedExceptionType
in class org.graalvm.compiler.java.BytecodeParser
protected void handleUnresolvedStoreField(jdk.vm.ci.meta.JavaField field, org.graalvm.compiler.nodes.ValueNode value, org.graalvm.compiler.nodes.ValueNode receiver)
handleUnresolvedStoreField
in class org.graalvm.compiler.java.BytecodeParser
protected void handleUnresolvedLoadField(jdk.vm.ci.meta.JavaField field, org.graalvm.compiler.nodes.ValueNode receiver)
handleUnresolvedLoadField
in class org.graalvm.compiler.java.BytecodeParser
protected void handleUnresolvedInvoke(jdk.vm.ci.meta.JavaMethod javaMethod, org.graalvm.compiler.nodes.CallTargetNode.InvokeKind invokeKind)
handleUnresolvedInvoke
in class org.graalvm.compiler.java.BytecodeParser
protected void emitCheckForInvokeSuperSpecial(org.graalvm.compiler.nodes.ValueNode[] args)
emitCheckForInvokeSuperSpecial
in class org.graalvm.compiler.java.BytecodeParser
protected boolean canInlinePartialIntrinsicExit()
canInlinePartialIntrinsicExit
in class org.graalvm.compiler.java.BytecodeParser
protected void genIf(org.graalvm.compiler.nodes.ValueNode x, org.graalvm.compiler.core.common.calc.Condition cond, org.graalvm.compiler.nodes.ValueNode y)
genIf
in class org.graalvm.compiler.java.BytecodeParser
public org.graalvm.compiler.nodes.java.MethodCallTargetNode createMethodCallTarget(org.graalvm.compiler.nodes.CallTargetNode.InvokeKind invokeKind, jdk.vm.ci.meta.ResolvedJavaMethod targetMethod, org.graalvm.compiler.nodes.ValueNode[] args, org.graalvm.compiler.core.common.type.StampPair returnStamp, jdk.vm.ci.meta.JavaTypeProfile profile)
createMethodCallTarget
in class org.graalvm.compiler.java.BytecodeParser
protected void genReturn(org.graalvm.compiler.nodes.ValueNode returnVal, jdk.vm.ci.meta.JavaKind returnKind)
genReturn
in class org.graalvm.compiler.java.BytecodeParser
protected boolean needsExplicitNullCheckException(org.graalvm.compiler.nodes.ValueNode object)
needsExplicitNullCheckException
in class org.graalvm.compiler.java.BytecodeParser
protected boolean needsExplicitStoreCheckException(org.graalvm.compiler.nodes.ValueNode array, org.graalvm.compiler.nodes.ValueNode value)
needsExplicitStoreCheckException
in class org.graalvm.compiler.java.BytecodeParser
public boolean needsExplicitException()
needsExplicitException
in interface org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext
needsExplicitException
in class org.graalvm.compiler.java.BytecodeParser
public boolean isPluginEnabled(org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderPlugin plugin)
protected static boolean isDeoptimizationEnabled()
protected boolean isMethodDeoptTarget()
protected boolean asyncExceptionLiveness()
asyncExceptionLiveness
in class org.graalvm.compiler.java.BytecodeParser
protected void clearNonLiveLocalsAtTargetCreation(org.graalvm.compiler.java.BciBlockMapping.BciBlock block, org.graalvm.compiler.java.FrameStateBuilder state)
clearNonLiveLocalsAtTargetCreation
in class org.graalvm.compiler.java.BytecodeParser
protected void clearNonLiveLocalsAtLoopExitCreation(org.graalvm.compiler.java.BciBlockMapping.BciBlock block, org.graalvm.compiler.java.FrameStateBuilder state)
clearNonLiveLocalsAtLoopExitCreation
in class org.graalvm.compiler.java.BytecodeParser