public final class IllegalStamp extends Stamp
Kind.Illegal
value in the second slot of
Kind.Long
and Kind.Double
values. It can only appear in framestates or virtual
objects.Modifier and Type | Field and Description |
---|---|
private static IllegalStamp |
instance |
Modifier | Constructor and Description |
---|---|
private |
IllegalStamp() |
Modifier and Type | Method and Description |
---|---|
Stamp |
constant(Constant c,
MetaAccessProvider meta)
If it is possible to represent single value stamps of this kind, this method returns the
stamp representing the single value c.
|
Stamp |
empty()
Returns a stamp of the same kind, but with no allowed values.
|
(package private) static IllegalStamp |
getInstance() |
LIRKind |
getLIRKind(LIRKindTool tool)
Gets a platform dependent
LIRKind that can be used to store a value of this stamp. |
Kind |
getStackKind()
Gets a Java
Kind that can be used to store a value of this stamp on the Java bytecode
stack. |
boolean |
hasValues()
Test whether this stamp has legal values.
|
Stamp |
improveWith(Stamp other)
Tries to improve this stamp with the stamp given as parameter.
|
boolean |
isCompatible(Stamp stamp)
Test whether two stamps have the same base type.
|
ResolvedJavaType |
javaType(MetaAccessProvider metaAccess)
Returns the type of the stamp, guaranteed to be non-null.
|
Stamp |
join(Stamp other)
Returns the intersection of this stamp and the given stamp.
|
Stamp |
meet(Stamp other)
Returns the union of this stamp and the given stamp.
|
Constant |
readConstant(MemoryAccessProvider provider,
Constant base,
long displacement)
Read a value of this stamp from memory.
|
String |
toString() |
Stamp |
unrestricted()
Returns a stamp of the same kind, but allowing the full value range of the kind.
|
alwaysDistinct, asConstant, isEmpty, neverDistinct, tryImproveWith
private static final IllegalStamp instance
private IllegalStamp()
public Kind getStackKind()
Stamp
Kind
that can be used to store a value of this stamp on the Java bytecode
stack. Returns Kind.Illegal
if a value of this stamp can not be stored on the
bytecode stack.getStackKind
in class Stamp
public LIRKind getLIRKind(LIRKindTool tool)
Stamp
LIRKind
that can be used to store a value of this stamp.getLIRKind
in class Stamp
public Stamp unrestricted()
Stamp
Stamp.unrestricted()
is the neutral element of the Stamp.join(Stamp)
operation.unrestricted
in class Stamp
public Stamp empty()
Stamp
Stamp.empty()
is the neutral element of the Stamp.meet(Stamp)
operation.public Stamp constant(Constant c, MetaAccessProvider meta)
Stamp
If it is not possible to represent single value stamps, this method returns a stamp that includes c, and is otherwise as narrow as possible.
public ResolvedJavaType javaType(MetaAccessProvider metaAccess)
Stamp
MetaAccessProvider
is mandatory.public Stamp meet(Stamp other)
Stamp
public Stamp join(Stamp other)
Stamp
public boolean isCompatible(Stamp stamp)
Stamp
isCompatible
in class Stamp
public boolean hasValues()
Stamp
public Stamp improveWith(Stamp other)
Stamp
improveWith
in class Stamp
other
- the stamp that should be used to improve this stampthis
if an improvement was not
possiblepublic Constant readConstant(MemoryAccessProvider provider, Constant base, long displacement)
Stamp
readConstant
in class Stamp
static IllegalStamp getInstance()