public abstract class DefaultJavaLoweringProvider extends Object implements LoweringProvider
Modifier and Type | Field and Description |
---|---|
protected BarrierSet |
barrierSet |
protected ForeignCallsProvider |
foreignCalls |
protected IdentityHashCodeSnippets.Templates |
identityHashCodeSnippets |
protected IsArraySnippets.Templates |
isArraySnippets |
protected jdk.vm.ci.meta.MetaAccessProvider |
metaAccess |
protected MetaAccessExtensionProvider |
metaAccessExtensionProvider |
static IntegerStamp |
POSITIVE_ARRAY_INDEX_STAMP |
protected Replacements |
replacements |
protected jdk.vm.ci.code.TargetDescription |
target |
Constructor and Description |
---|
DefaultJavaLoweringProvider(jdk.vm.ci.meta.MetaAccessProvider metaAccess,
ForeignCallsProvider foreignCalls,
PlatformConfigurationProvider platformConfig,
MetaAccessExtensionProvider metaAccessExtensionProvider,
jdk.vm.ci.code.TargetDescription target,
boolean useCompressedOops) |
Modifier and Type | Method and Description |
---|---|
ValueNode |
arrayImplicitStoreConvert(StructuredGraph graph,
jdk.vm.ci.meta.JavaKind entryKind,
ValueNode value,
CommitAllocationNode commit,
VirtualObjectNode virtual,
int valuePos) |
abstract int |
arrayLengthOffset() |
static FloatingNode |
canonicalizeBoxing(BoxNode box,
jdk.vm.ci.meta.MetaAccessProvider metaAccess,
jdk.vm.ci.meta.ConstantReflectionProvider constantReflection) |
AddressNode |
createArrayAddress(StructuredGraph graph,
ValueNode array,
jdk.vm.ci.meta.JavaKind arrayKind,
jdk.vm.ci.meta.JavaKind elementKind,
ValueNode index) |
AddressNode |
createArrayAddress(StructuredGraph graph,
ValueNode array,
jdk.vm.ci.meta.JavaKind elementKind,
ValueNode index) |
AddressNode |
createArrayIndexAddress(StructuredGraph graph,
ValueNode array,
jdk.vm.ci.meta.JavaKind elementKind,
ValueNode index,
GuardingNode boundsCheck)
Create a PiNode on the index proving that the index is positive.
|
AddressNode |
createFieldAddress(StructuredGraph graph,
ValueNode object,
jdk.vm.ci.meta.ResolvedJavaField field) |
protected GuardingNode |
createNullCheck(ValueNode object,
FixedNode before,
LoweringTool tool) |
protected ValueNode |
createNullCheckedValue(ValueNode object,
FixedNode before,
LoweringTool tool) |
AddressNode |
createOffsetAddress(StructuredGraph graph,
ValueNode object,
long offset) |
protected abstract ValueNode |
createReadArrayComponentHub(StructuredGraph graph,
ValueNode arrayHub,
FixedNode anchor) |
protected ReadNode |
createReadArrayLength(ValueNode array,
FixedNode before,
LoweringTool tool)
Creates a read node that read the array length and is guarded by a null-check.
|
protected abstract ValueNode |
createReadHub(StructuredGraph graph,
ValueNode object,
LoweringTool tool) |
protected AddressNode |
createUnsafeAddress(StructuredGraph graph,
ValueNode object,
ValueNode offset) |
protected ReadNode |
createUnsafeRead(StructuredGraph graph,
RawLoadNode load,
GuardingNode guard) |
FieldLocationIdentity |
fieldLocationIdentity(jdk.vm.ci.meta.ResolvedJavaField field) |
abstract int |
fieldOffset(jdk.vm.ci.meta.ResolvedJavaField field) |
void |
finishAllocatedObjects(LoweringTool tool,
FixedWithNextNode insertAfter,
CommitAllocationNode commit,
ValueNode[] allocations) |
BarrierSet |
getBarrierSet() |
protected GuardingNode |
getBoundsCheck(AccessIndexedNode n,
ValueNode array,
LoweringTool tool) |
jdk.vm.ci.meta.MetaAccessProvider |
getMetaAccess() |
MetaAccessExtensionProvider |
getMetaAccessExtensionProvider() |
Replacements |
getReplacements() |
jdk.vm.ci.meta.JavaKind |
getStorageKind(jdk.vm.ci.meta.JavaType type) |
jdk.vm.ci.meta.JavaKind |
getStorageKind(jdk.vm.ci.meta.ResolvedJavaField field) |
jdk.vm.ci.code.TargetDescription |
getTarget() |
ValueNode |
implicitLoadConvert(jdk.vm.ci.meta.JavaKind kind,
ValueNode value) |
protected ValueNode |
implicitLoadConvert(jdk.vm.ci.meta.JavaKind kind,
ValueNode value,
boolean compressible) |
ValueNode |
implicitLoadConvert(StructuredGraph graph,
jdk.vm.ci.meta.JavaKind kind,
ValueNode value) |
protected ValueNode |
implicitLoadConvert(StructuredGraph graph,
jdk.vm.ci.meta.JavaKind kind,
ValueNode value,
boolean compressible) |
ValueNode |
implicitStoreConvert(jdk.vm.ci.meta.JavaKind kind,
ValueNode value) |
protected ValueNode |
implicitStoreConvert(jdk.vm.ci.meta.JavaKind kind,
ValueNode value,
boolean compressible) |
ValueNode |
implicitStoreConvert(StructuredGraph graph,
jdk.vm.ci.meta.JavaKind kind,
ValueNode value) |
protected ValueNode |
implicitStoreConvert(StructuredGraph graph,
jdk.vm.ci.meta.JavaKind kind,
ValueNode value,
boolean compressible) |
void |
initialize(OptionValues options,
Iterable<DebugHandlersFactory> factories,
SnippetCounter.Group.Factory factory,
Providers providers,
SnippetReflectionProvider snippetReflection) |
protected abstract Stamp |
loadCompressedStamp(ObjectStamp stamp) |
Stamp |
loadStamp(Stamp stamp,
jdk.vm.ci.meta.JavaKind kind) |
protected Stamp |
loadStamp(Stamp stamp,
jdk.vm.ci.meta.JavaKind kind,
boolean compressible) |
void |
lower(Node n,
LoweringTool tool) |
protected void |
lowerArrayLengthNode(ArrayLengthNode arrayLengthNode,
LoweringTool tool) |
protected void |
lowerAtomicReadAndAddNode(AtomicReadAndAddNode n) |
protected void |
lowerAtomicReadAndWriteNode(AtomicReadAndWriteNode n) |
protected void |
lowerCommitAllocationNode(CommitAllocationNode commit,
LoweringTool tool) |
protected void |
lowerCompareAndExchangeNode(UnsafeCompareAndExchangeNode cas) |
protected void |
lowerCompareAndSwapNode(UnsafeCompareAndSwapNode cas) |
protected void |
lowerIndexAddressNode(IndexAddressNode indexAddress) |
protected void |
lowerJavaReadNode(JavaReadNode read) |
protected void |
lowerJavaWriteNode(JavaWriteNode write) |
protected void |
lowerLoadArrayComponentHubNode(LoadArrayComponentHubNode loadHub) |
protected void |
lowerLoadFieldNode(LoadFieldNode loadField,
LoweringTool tool) |
protected void |
lowerLoadHubNode(LoadHubNode loadHub,
LoweringTool tool) |
protected void |
lowerLoadHubOrNullNode(LoadHubOrNullNode loadHubOrNullNode,
LoweringTool tool) |
protected void |
lowerLoadIndexedNode(LoadIndexedNode loadIndexed,
LoweringTool tool) |
protected void |
lowerStoreFieldNode(StoreFieldNode storeField,
LoweringTool tool) |
protected void |
lowerStoreIndexedNode(StoreIndexedNode storeIndexed,
LoweringTool tool) |
protected void |
lowerUnsafeLoadNode(RawLoadNode load,
LoweringTool tool) |
protected void |
lowerUnsafeMemoryLoadNode(UnsafeMemoryLoadNode load) |
protected void |
lowerUnsafeMemoryStoreNode(UnsafeMemoryStoreNode store) |
protected void |
lowerUnsafeStoreNode(RawStoreNode store) |
protected void |
lowerVerifyHeap(VerifyHeapNode n) |
protected abstract ValueNode |
newCompressionNode(CompressionNode.CompressionOp op,
ValueNode value) |
protected ValueNode |
proxyIndex(AccessIndexedNode n,
ValueNode index,
ValueNode array,
LoweringTool tool) |
ValueNode |
reconstructArrayIndex(jdk.vm.ci.meta.JavaKind elementKind,
AddressNode address)
Reconstructs the array index from an address node that was created as a lowering of an
indexed access to an array.
|
abstract ValueNode |
staticFieldBase(StructuredGraph graph,
jdk.vm.ci.meta.ResolvedJavaField field) |
boolean |
supportsOptimizedFilling(OptionValues options)
Indicates whether this target platform supports optimized filling of memory regions with
long values. |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
smallestCompareWidth, supportsBulkZeroing
protected final jdk.vm.ci.meta.MetaAccessProvider metaAccess
protected final ForeignCallsProvider foreignCalls
protected final BarrierSet barrierSet
protected final MetaAccessExtensionProvider metaAccessExtensionProvider
protected final jdk.vm.ci.code.TargetDescription target
protected Replacements replacements
protected IdentityHashCodeSnippets.Templates identityHashCodeSnippets
protected IsArraySnippets.Templates isArraySnippets
public static final IntegerStamp POSITIVE_ARRAY_INDEX_STAMP
public DefaultJavaLoweringProvider(jdk.vm.ci.meta.MetaAccessProvider metaAccess, ForeignCallsProvider foreignCalls, PlatformConfigurationProvider platformConfig, MetaAccessExtensionProvider metaAccessExtensionProvider, jdk.vm.ci.code.TargetDescription target, boolean useCompressedOops)
public void initialize(OptionValues options, Iterable<DebugHandlersFactory> factories, SnippetCounter.Group.Factory factory, Providers providers, SnippetReflectionProvider snippetReflection)
public final jdk.vm.ci.code.TargetDescription getTarget()
public jdk.vm.ci.meta.MetaAccessProvider getMetaAccess()
public BarrierSet getBarrierSet()
public MetaAccessExtensionProvider getMetaAccessExtensionProvider()
public Replacements getReplacements()
public void lower(Node n, LoweringTool tool)
lower
in interface LoweringProvider
public static FloatingNode canonicalizeBoxing(BoxNode box, jdk.vm.ci.meta.MetaAccessProvider metaAccess, jdk.vm.ci.meta.ConstantReflectionProvider constantReflection)
protected void lowerVerifyHeap(VerifyHeapNode n)
public AddressNode createOffsetAddress(StructuredGraph graph, ValueNode object, long offset)
public AddressNode createFieldAddress(StructuredGraph graph, ValueNode object, jdk.vm.ci.meta.ResolvedJavaField field)
public final jdk.vm.ci.meta.JavaKind getStorageKind(jdk.vm.ci.meta.ResolvedJavaField field)
public final jdk.vm.ci.meta.JavaKind getStorageKind(jdk.vm.ci.meta.JavaType type)
protected void lowerLoadFieldNode(LoadFieldNode loadField, LoweringTool tool)
protected void lowerStoreFieldNode(StoreFieldNode storeField, LoweringTool tool)
public AddressNode createArrayIndexAddress(StructuredGraph graph, ValueNode array, jdk.vm.ci.meta.JavaKind elementKind, ValueNode index, GuardingNode boundsCheck)
public AddressNode createArrayAddress(StructuredGraph graph, ValueNode array, jdk.vm.ci.meta.JavaKind elementKind, ValueNode index)
public AddressNode createArrayAddress(StructuredGraph graph, ValueNode array, jdk.vm.ci.meta.JavaKind arrayKind, jdk.vm.ci.meta.JavaKind elementKind, ValueNode index)
protected void lowerIndexAddressNode(IndexAddressNode indexAddress)
protected void lowerLoadIndexedNode(LoadIndexedNode loadIndexed, LoweringTool tool)
protected void lowerStoreIndexedNode(StoreIndexedNode storeIndexed, LoweringTool tool)
protected void lowerArrayLengthNode(ArrayLengthNode arrayLengthNode, LoweringTool tool)
protected ReadNode createReadArrayLength(ValueNode array, FixedNode before, LoweringTool tool)
before
in the CFG.protected void lowerLoadHubNode(LoadHubNode loadHub, LoweringTool tool)
protected void lowerLoadHubOrNullNode(LoadHubOrNullNode loadHubOrNullNode, LoweringTool tool)
protected void lowerLoadArrayComponentHubNode(LoadArrayComponentHubNode loadHub)
protected void lowerCompareAndSwapNode(UnsafeCompareAndSwapNode cas)
protected void lowerCompareAndExchangeNode(UnsafeCompareAndExchangeNode cas)
protected void lowerAtomicReadAndWriteNode(AtomicReadAndWriteNode n)
protected void lowerAtomicReadAndAddNode(AtomicReadAndAddNode n)
protected void lowerUnsafeLoadNode(RawLoadNode load, LoweringTool tool)
tool
- utility for performing the loweringprotected AddressNode createUnsafeAddress(StructuredGraph graph, ValueNode object, ValueNode offset)
protected ReadNode createUnsafeRead(StructuredGraph graph, RawLoadNode load, GuardingNode guard)
protected void lowerUnsafeMemoryLoadNode(UnsafeMemoryLoadNode load)
protected void lowerUnsafeStoreNode(RawStoreNode store)
protected void lowerUnsafeMemoryStoreNode(UnsafeMemoryStoreNode store)
protected void lowerJavaReadNode(JavaReadNode read)
protected void lowerJavaWriteNode(JavaWriteNode write)
protected void lowerCommitAllocationNode(CommitAllocationNode commit, LoweringTool tool)
public void finishAllocatedObjects(LoweringTool tool, FixedWithNextNode insertAfter, CommitAllocationNode commit, ValueNode[] allocations)
public abstract int fieldOffset(jdk.vm.ci.meta.ResolvedJavaField field)
public FieldLocationIdentity fieldLocationIdentity(jdk.vm.ci.meta.ResolvedJavaField field)
public abstract ValueNode staticFieldBase(StructuredGraph graph, jdk.vm.ci.meta.ResolvedJavaField field)
public abstract int arrayLengthOffset()
protected abstract Stamp loadCompressedStamp(ObjectStamp stamp)
protected Stamp loadStamp(Stamp stamp, jdk.vm.ci.meta.JavaKind kind, boolean compressible)
compressible
- whether the stamp should be compressiblepublic final ValueNode implicitLoadConvert(StructuredGraph graph, jdk.vm.ci.meta.JavaKind kind, ValueNode value)
public ValueNode implicitLoadConvert(jdk.vm.ci.meta.JavaKind kind, ValueNode value)
protected final ValueNode implicitLoadConvert(StructuredGraph graph, jdk.vm.ci.meta.JavaKind kind, ValueNode value, boolean compressible)
protected abstract ValueNode newCompressionNode(CompressionNode.CompressionOp op, ValueNode value)
protected ValueNode implicitLoadConvert(jdk.vm.ci.meta.JavaKind kind, ValueNode value, boolean compressible)
compressible
- whether the convert should be compressiblepublic ValueNode arrayImplicitStoreConvert(StructuredGraph graph, jdk.vm.ci.meta.JavaKind entryKind, ValueNode value, CommitAllocationNode commit, VirtualObjectNode virtual, int valuePos)
public final ValueNode implicitStoreConvert(StructuredGraph graph, jdk.vm.ci.meta.JavaKind kind, ValueNode value)
public ValueNode implicitStoreConvert(jdk.vm.ci.meta.JavaKind kind, ValueNode value)
protected final ValueNode implicitStoreConvert(StructuredGraph graph, jdk.vm.ci.meta.JavaKind kind, ValueNode value, boolean compressible)
protected ValueNode implicitStoreConvert(jdk.vm.ci.meta.JavaKind kind, ValueNode value, boolean compressible)
compressible
- whether the covert should be compressibleprotected abstract ValueNode createReadHub(StructuredGraph graph, ValueNode object, LoweringTool tool)
protected abstract ValueNode createReadArrayComponentHub(StructuredGraph graph, ValueNode arrayHub, FixedNode anchor)
protected ValueNode proxyIndex(AccessIndexedNode n, ValueNode index, ValueNode array, LoweringTool tool)
protected GuardingNode getBoundsCheck(AccessIndexedNode n, ValueNode array, LoweringTool tool)
protected GuardingNode createNullCheck(ValueNode object, FixedNode before, LoweringTool tool)
protected ValueNode createNullCheckedValue(ValueNode object, FixedNode before, LoweringTool tool)
public ValueNode reconstructArrayIndex(jdk.vm.ci.meta.JavaKind elementKind, AddressNode address)
LoweringProvider
reconstructArrayIndex
in interface LoweringProvider
elementKind
- the JavaKind
of the array elementsaddress
- an AddressNode
pointing to an element in an arraypublic boolean supportsOptimizedFilling(OptionValues options)
LoweringProvider
long
values.supportsOptimizedFilling
in interface LoweringProvider