31 #ifndef _JIT_COMPILER2_INSTRUCTIONS
32 #define _JIT_COMPILER2_INSTRUCTIONS
237 source_location(source_location) {
310 std::replace(
params.begin(),
params.end(), v_old, v_new);
314 if (local.
value == v_old) {
381 assert(source_state != NULL);
382 assert(this->source_state == NULL);
465 for (PredecessorListTy::const_iterator
i =
pred_list.begin(),
476 if (index < 0 || (
unsigned)index >
pred_size()) {
479 PredecessorListTy::const_iterator
i =
pred_list.begin();
533 return OS << BIR.
get();
571 for (SuccessorListTy::const_iterator
i =
succ_list.begin(),
573 if (BI ==
i->get()) {
621 assert(objectref != NULL);
851 default: assert(0);
return 0;
940 assert(state_change);
1013 assert(state_change);
1089 assert(state_change);
1144 assert(state_change);
1400 assert(arrayref != NULL);
1402 assert(index != NULL);
1582 assert(state_change && state_change->
get_name());
1600 assert(source_state);
1601 return source_state;
1906 <<
") is greater then tablelow ("<<
tablelow <<
")");
1953 ERROR_MSG(
"LOOKUPSWITCH verification error",
"Lookup count is negative ("
1959 <<
") not equal to targets (" <<
lookupcount + 1 <<
")");
2042 assert(source_state);
2068 assert(source_state);
2069 return source_state;
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
NEWInst(Type::TypeID type)
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
virtual Instruction * to_Instruction()
PHIInst(Type::TypeID type, BeginInst *begin)
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
virtual BeginInst * get_BeginInst() const
Get the BeginInst this ReplacementEntryInst is attached to.
ParamListTy params
List of HIR values that correspond to method parameters.
virtual bool is_arithmetic() const
True if the instruction is an arithmetic instruction.
virtual AREFInst * to_AREFInst()
CONSTInst(double d, Type::DoubleType)
BeginInstRef & get_else_target()
virtual Instruction * to_Instruction()
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
INVOKESTATICInst(Type::TypeID type, unsigned size, constant_FMIref *fmiref, BeginInst *begin, Instruction *state_change, SourceStateInst *source_state)
Construct an INVOKESTATICInst.
virtual BeginInst * get_guarded_block() const
Get the entry to the region of code that relies on this assumption.
virtual bool is_floating() const
For now consider as fixed to avoid illegal instruction reordering.
virtual bool is_homogeneous() const
virtual CASTInst * to_CASTInst()
alloc::vector< Javalocal >::type JavalocalListTy
virtual OStream & print(OStream &OS) const
print
PUTFIELDInst(Value *objectref, Value *value, fieldinfo *field, BeginInst *begin, Instruction *state_change)
Construct a PUTFIELDInst.
virtual DereferenceInst * to_DereferenceInst()
Conversion method.
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
virtual bool is_commutable() const
True if the operands of the instruction are commutable.
JNIEnv jthread jmethodID jlocation jclass jobject jfieldID field
virtual INVOKEINTERFACEInst * to_INVOKEINTERFACEInst()
Conversion method.
virtual Instruction * get_objectref()
Get the corresponding object reference.
virtual INVOKESPECIALInst * to_INVOKESPECIALInst()
Conversion method.
virtual IF_CMPInst * to_IF_CMPInst()
virtual INVOKESTATICInst * to_INVOKESTATICInst()
Conversion method.
Conditional::CondID condition
The kind of condition that is computed.
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
BeginInst * get_predecessor(int index) const
XORInst(Type::TypeID type, Value *S1, Value *S2)
alloc::vector< Value * >::type StackvarListTy
INSTANCEOFInst(Type::TypeID type)
virtual bool is_floating() const
True if the instruction has no fixed control dependencies.
virtual Instruction * to_Instruction()
Conversion method.
virtual IFInst * to_IFInst()
GETSTATICInst(Type::TypeID type, fieldinfo *field, BeginInst *begin, Instruction *state_change)
Construct a GETSTATICInst.
SourceStateInst * get_source_state() const
Get the SourceStateInst that corresponds to this Instruction.
virtual BUILTINInst * to_BUILTINInst()
Conversion method.
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
Maps a HIR value to a baseline IR javalocal index.
const_javalocal_iterator javalocal_end() const
virtual Instruction * get_objectref()
Get the corresponding object reference.
CMPInst(Value *S1, Value *S2, FloatHandling f)
virtual Instruction * get_objectref()
Get the corresponding object reference.
virtual BeginInst * get_BeginInst() const
Get the BeginInst of the block that contains this ALOADInst.
virtual INSTANCEOFInst * to_INSTANCEOFInst()
virtual DereferenceInst * to_DereferenceInst()
Conversion method.
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
fieldinfo * get_field() const
Get the accessed field.
INVOKESPECIALInst(Type::TypeID type, unsigned size, constant_FMIref *fmiref, BeginInst *begin, Instruction *state_change, SourceStateInst *source_state)
Construct an INVOKESPECIALInst.
Write a value to a static field.
virtual bool is_arithmetic() const
True if the instruction is an arithmetic instruction.
Type::TypeID get_type() const
get the value type of the instruction
BeginInstRef & succ_back()
MatchTy::iterator match_iterator
virtual ~DereferenceInst()
virtual BeginInst * get_BeginInst() const
Get the BeginInst of the block that contains this ASTOREInst.
SourceStateInst(s4 source_location, Instruction *hir_location)
Construct a SourceStateInst.
NEGInst(Type::TypeID type, Value *S1)
Get the value of an object's field.
virtual MULInst * to_MULInst()
PredecessorListTy::const_iterator const_pred_iterator
Base type of instruction that perform a method invocation.
virtual bool is_floating() const
For now we prevent floating to avoid unforeseen instruction reordering.
virtual SHLInst * to_SHLInst()
void set_source_state(SourceStateInst *source_state)
Set the SourceStateInst that corresponds to this Instruction.
void set_needs_null_check(bool needs_null_check)
Control whether a null-check is needed to safeguard the dereference.
Load a value from an array.
virtual BeginInst * get_BeginInst() const
Get the BeginInst of the block that contains this SourceStateInst.
virtual BinaryInst * to_BinaryInst()
Conversion method.
virtual Instruction * to_Instruction()
virtual bool is_homogeneous() const
virtual SourceStateAwareInst * to_SourceStateAwareInst()
const char * get_name() const
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
BeginInstRef(const BeginInstRef &other)
copy constructor
int get_successor_index(const BeginInst *BI) const
INVOKEVIRTUALInst(Type::TypeID type, unsigned size, constant_FMIref *fmiref, BeginInst *begin, Instruction *state_change, SourceStateInst *source_state)
Construct an INVOKEVIRTUALInst.
This Instruction marks the start of a basic block.
virtual SourceStateAwareInst * to_SourceStateAwareInst()
virtual GETFIELDInst * to_GETFIELDInst()
Conversion method.
virtual SourceStateAwareInst * to_SourceStateAwareInst()
Casting method.
virtual bool is_floating() const
True if the instruction has no fixed control dependencies.
This Instruction marks the end of a basic block.
const_dep_iterator dep_begin() const
void append_javalocal(Javalocal local)
Append a new mapping from a HIR Value to a baseline IR javalocal index.
TABLESWITCHInst(BeginInst *begin, Value *S1, LOW low, HIGH high)
constructor
virtual SourceStateAwareInst * to_SourceStateAwareInst()
Conversion method.
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
bool is_floating() const
A LOADInst must not float, it has to stay in the method's initial block.
AREFInst(Type::TypeID type, Value *ref, Value *index, BeginInst *begin)
const_stackvar_iterator stackvar_begin() const
Invoke an interface method.
BeginInstRef & operator=(BeginInst *BI)
virtual CMPInst * to_CMPInst()
virtual SourceStateAwareInst * to_SourceStateAwareInst()
Transfers execution back to an unoptimized version of the method.
alloc::vector< s4 >::type MatchTy
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
virtual XORInst * to_XORInst()
void set_successor(int index, BeginInst *BI)
virtual SourceStateAwareInst * to_SourceStateAwareInst()
Conversion method.
Get the value of a static field.
virtual bool is_homogeneous() const
u1 * address
A pointer to the function that implements the builtin functionality.
ADDInst(Type::TypeID type, Value *S1, Value *S2)
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
virtual Instruction * get_objectref()=0
Get the corresponding object reference.
virtual DereferenceInst * to_DereferenceInst()
Conversion method.
fieldinfo * field
The accessed field.
virtual bool is_floating() const
True if the instruction has no fixed control dependencies.
A point where the method can be entered through on-stack replacement.
IFInst(BeginInst *begin, Value *S1, Value *S2, Conditional::CondID cond, BeginInst *trueBlock, BeginInst *falseBlock)
BeginInstRef & operator=(const BeginInstRef &other)
copy assignment operator
virtual ALOADInst * to_ALOADInst()
Conversion method.
virtual DereferenceInst * to_DereferenceInst()
Conversion method.
virtual UnaryInst * to_UnaryInst()
Conversion method.
virtual bool verify() const
Check if the instruction is in a correct state.
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
alloc::vector< BeginInstRef >::type SuccessorListTy
Write a value to an object's field.
virtual CHECKNULLInst * to_CHECKNULLInst()
Conversion method.
constant_FMIref * fmiref
Holds information about the method to invoke.
CONSTInst(int64_t l, Type::LongType)
INVOKEInst(InstID ID, Type::TypeID type, unsigned size, constant_FMIref *fmiref, BeginInst *begin, Instruction *state_change, SourceStateInst *source_state)
Construct an INVOKEInst.
virtual bool is_floating() const
A ReplacementEntryInst is fixed to the method's initial BeginInst.
virtual Instruction * to_Instruction()
Conversion method.
#define ERROR_MSG(EXPR_SHORT, EXPR_LONG)
void append_dep(Instruction *I)
Perform a bounds-check for an array-access.
virtual bool is_homogeneous() const
int get_successor_index(const BeginInst *BI) const
virtual ARRAYLENGTHInst * to_ARRAYLENGTHInst()
Conversion method.
GOTOInst(BeginInst *begin, BeginInst *targetBlock)
NEWARRAYInst(Type::TypeID type)
CHECKCASTInst(Type::TypeID type)
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
const_pred_iterator pred_begin() const
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
EndInst(BeginInst *begin)
SourceStateInst * get_parent() const
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
SourceStateAwareInst()
Construct a SourceStateAwareInst.
BUILTINInst(Type::TypeID type, u1 *address, unsigned size, BeginInst *begin, Instruction *state_change, SourceStateInst *source_state)
Construct a BUILTINInst.
virtual Instruction * to_Instruction()
Conversion method.
virtual BeginInst * get_BeginInst() const
Get the BeginInst of the block that contains this GETSTATICInst.
virtual Instruction * get_objectref()
Get the corresponding object reference.
THROWInst(Type::TypeID type)
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
virtual Instruction * to_Instruction()
Convert this SourceStateAwareInst to an Instruction.
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
virtual CONSTInst * to_CONSTInst()
virtual PHIInst * to_PHIInst()
DeoptimizeInst(BeginInst *begin)
Construct a DeoptimizeInst.
virtual INVOKEVIRTUALInst * to_INVOKEVIRTUALInst()
Conversion method.
void set_EndInst(EndInst *e)
Base class of instructions that access a field on a class or object.
ALOADInst(Type::TypeID type, Value *ref, BeginInst *begin, Instruction *state_change)
Construct an ALOADInst.
virtual SourceStateInst * to_SourceStateInst()
Conversion method.
JNIEnv jthread jobject jclass jlong size
const_param_iterator param_begin() const
virtual INCInst * to_INCInst()
virtual SourceStateAwareInst * to_SourceStateAwareInst()
virtual Instruction * get_objectref()
Get the corresponding object reference.
Represents an explicit null-check on an object reference.
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
EndInst(InstID id, BeginInst *begin)
virtual Instruction * get_objectref()
Get the corresponding object reference.
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
virtual Instruction * get_objectref()
Get the corresponding object reference.
const_param_iterator param_end() const
Store a value into an array.
StackvarListTy stackvars
List of HIR values that correspond to baseline IR stack variables.
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
INCInst(Type::TypeID type)
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
virtual BeginInst * get_BeginInst() const
Get the BeginInst of the block that contains this PUTSTATICInst.
SuccessorListTy::const_reverse_iterator succ_rbegin() const
unsigned index
The index of the argument that is represented by this LOADInst.
This stores a reference to a BeginInst.
const_javalocal_iterator javalocal_begin() const
Base type of instructions that can be mapped to a SourceStateInst.
virtual ORInst * to_ORInst()
virtual SourceStateAwareInst * to_SourceStateAwareInst()
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
REMInst(Type::TypeID type, Value *S1, Value *S2)
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
constant_FMIref * get_fmiref() const
Get information about the method to invoke.
void append_param(Value *value)
Append a new value to corresponds to a method parameter.
Represents a speculative assumption that has to be checked at run-time.
ReplacementEntryInst(BeginInst *begin, SourceStateInst *source_state)
Construct a ReplacementEntryInst.
SuccessorListTy::const_reverse_iterator succ_rend() const
virtual bool needs_source_state()
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
virtual bool has_side_effects() const
Pessimistically assume that each kind of invocation has side-effects.
Javalocal(Value *value, std::size_t index)
Construct a Javalocal that maps value to index.
Base type of instructions with an arbitrary number of operands.
virtual DereferenceInst * to_DereferenceInst()
Conversion method.
SuccessorListTy::const_iterator succ_end() const
SourceStateInst * get_source_state() const
Get the source state at this ReplacementEntryInst.
bool needs_null_check
Whether a null-check is needed to safeguard the dereference.
GOTOInst(BeginInst *begin)
CONSTInst(float f, Type::FloatType)
virtual THROWInst * to_THROWInst()
ARRAYBOUNDSCHECKInst(Value *arrayref, Value *index)
Construct an ARRAYBOUNDSCHECKInst.
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
StackvarListTy::const_iterator const_stackvar_iterator
virtual bool verify() const
Check if the instruction is in a correct state.
int get_predecessor_index(const BeginInst *BI) const
virtual bool is_floating() const
A PUTFIELDInst is not allowed to float.
virtual GETSTATICInst * to_GETSTATICInst()
Conversion method.
virtual PUTFIELDInst * to_PUTFIELDInst()
Conversion method.
virtual bool is_homogeneous() const
MULTIANEWARRAYInst(Type::TypeID type)
virtual bool is_homogeneous() const
virtual NEGInst * to_NEGInst()
CONSTInst(void *anyptr, Type::ReferenceType)
JavalocalListTy::const_iterator const_javalocal_iterator
Invoke an instance method with special handling.
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
Base type of instructions with a single operand.
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
virtual OStream & print(OStream &OS) const
print
Provides a mapping from HIR values to baseline IR variables.
virtual bool is_floating() const
For now consider as fixed to avoid illegal instruction reordering.
Conditional::CondID get_condition() const
Get the kind of condition that is computed.
IF_CMPInst(Type::TypeID type)
virtual bool is_floating() const
True if the instruction has no fixed control dependencies.
std::vector< T, Allocator< T > > type
Base type of instructions that compute a condition.
virtual bool is_commutable() const
True if the operands of the instruction are commutable.
virtual AssumptionInst * to_AssumptionInst()
Conversion method.
virtual bool is_homogeneous() const
True if the instruction has a homogeneous signature.
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
virtual AREFInst * to_AREFInst()
EndInst * get_EndInst() const
virtual LOADInst * to_LOADInst()
Conversion method.
virtual DeoptimizeInst * to_DeoptimizeInst()
Conversion method.
alloc::vector< Value * >::type ParamListTy
u1 * get_address() const
Get the pointer to the function that implements the builtin functionality.
Simple stream class for formatted output.
Instruction * dep_front() const
virtual DereferenceInst * to_DereferenceInst()
Conversion method.
virtual Instruction * get_objectref()
Get the corresponding object reference.
virtual Instruction * to_Instruction()
Casting method.
virtual REMInst * to_REMInst()
DIVInst(Type::TypeID type, Value *S1, Value *S2)
virtual void replace_op(Value *v_old, Value *v_new)
virtual ANDInst * to_ANDInst()
OStream & operator<<(OStream &OS, const Conditional::CondID &cond)
const_stackvar_iterator stackvar_end() const
virtual void replace_op(Value *v_old, Value *v_new)
JNIEnv jthread jmethodID void * address
virtual SourceStateAwareInst * to_SourceStateAwareInst()
virtual Instruction * to_Instruction()
virtual bool is_arithmetic() const
True if the instruction is an arithmetic instruction.
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
Fieldref, Methodref and InterfaceMethodref.
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
virtual ASTOREInst * to_ASTOREInst()
Conversion method.
virtual ~SourceStateAwareInst()
virtual DereferenceInst * to_DereferenceInst()=0
Conversion method.
virtual SourceStateAwareInst * to_SourceStateAwareInst()
Conversion method.
virtual RETURNInst * to_RETURNInst()
Conversion method.
SuccessorListTy::const_iterator succ_begin() const
virtual BeginInst * get_BeginInst() const
Get the BeginInst of the block that contains this AREFInst.
MethodDescriptor & get_MethodDescriptor()
Get the MethodDescriptor of the method to invoke.
virtual bool is_homogeneous() const
True if the instruction has a homogeneous signature.
BeginInstRef & get_successor(size_t i)
SourceStateInst * parent
The state of the enclosing method in case we are in an inlined region.
SuccessorListTy::const_reverse_iterator succ_const_reverse_iterator
BeginInst * guarded_block
The entry to the region of code that relies on this assumption.
virtual BeginInst * to_BeginInst()
SourceStateInst * source_state
The SourceStateInst that corresponds to this Instruction.
ANDInst(Type::TypeID type, Value *S1, Value *S2)
const_op_iterator op_begin() const
virtual DereferenceInst * to_DereferenceInst()
Conversion method.
RETURNInst(BeginInst *begin)
Construct a RETURNInst that ends a void method.
virtual bool is_floating() const
An ASTOREInst is not allowed to float.
BeginInstRef & get_target()
JavalocalListTy javalocals
List of mappings from HIR values to baseline IR javalocal indices.
Base type of instructions with two operands.
MethodDescriptor MD
The MethodDescriptor of the method to invoke.
CHECKNULLInst(Value *objectref)
Construct a CHECKNULLInst.
USHRInst(Type::TypeID type)
virtual bool is_homogeneous() const
virtual bool is_floating() const
True if the instruction has no fixed control dependencies.
virtual bool is_floating() const
For now consider as fixed to avoid illegal instruction reordering.
virtual Instruction * to_Instruction()
Conversion method.
SuccessorListTy::const_iterator succ_const_iterator
virtual CHECKCASTInst * to_CHECKCASTInst()
ASTOREInst(Type::TypeID type, Value *ref, Value *value, BeginInst *begin, Instruction *state_change)
Construct an ASTOREInst.
virtual bool is_homogeneous() const
Get the length of an array.
virtual bool is_floating() const
A DeoptimizeInst is fixed in the CFG and therefore non-floating.
match_iterator match_end()
CASTInst(Type::TypeID type, Value *s1)
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
virtual SUBInst * to_SUBInst()
virtual GOTOInst * to_GOTOInst()
virtual bool is_homogeneous() const
virtual ARRAYBOUNDSCHECKInst * to_ARRAYBOUNDSCHECKInst()
Casting method.
virtual bool has_side_effects() const
A PUTFIELDInst might change the global state.
virtual SourceStateInst * get_SourceStateInst() const
void set_predecessor(int index, BeginInst *BI)
virtual INVOKEInst * to_INVOKEInst()
Conversion method.
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
virtual bool is_commutable() const
True if the operands of the instruction are commutable.
void append_succ(BeginInst *bi)
virtual DereferenceInst * to_DereferenceInst()
Conversion method.
virtual bool has_side_effects() const
An ASTOREInst might change the global state.
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
virtual ANEWARRAYInst * to_ANEWARRAYInst()
ARRAYLENGTHInst(Value *arrayref)
Construct an ARRAYLENGTHInst.
virtual BeginInst * get_BeginInst() const
Get the BeginInst of the block that contains this GETFIELDInst.
virtual SourceStateAwareInst * to_SourceStateAwareInst()
alloc::vector< BeginInst * >::type PredecessorListTy
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
ParamListTy::const_iterator const_param_iterator
virtual bool is_arithmetic() const
True if the instruction is an arithmetic instruction.
virtual NEWARRAYInst * to_NEWARRAYInst()
UnaryInst(InstID id, Type::TypeID type, Value *op)
Construct a UnaryInst.
SuccessorListTy succ_list
virtual MULTIANEWARRAYInst * to_MULTIANEWARRAYInst()
SUBInst(Type::TypeID type, Value *S1, Value *S2)
virtual bool is_arithmetic() const
True if the instruction is an arithmetic instruction.
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
const_pred_iterator pred_end() const
virtual Instruction * to_Instruction()
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
virtual LOOKUPSWITCHInst * to_LOOKUPSWITCHInst()
virtual PUTSTATICInst * to_PUTSTATICInst()
Conversion method.
BeginInstRef(BeginInst *BI)
virtual SourceStateAwareInst * to_SourceStateAwareInst()
virtual Instruction * get_objectref()
Get the corresponding object reference.
GETFIELDInst(Type::TypeID type, Value *objectref, fieldinfo *field, BeginInst *begin, Instruction *state_change)
Construct a GETFIELDInst.
bool get_needs_null_check() const
Whether a null-check is needed to safeguard the dereference.
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
virtual TABLESWITCHInst * to_TABLESWITCHInst()
unsigned get_index() const
The index of the argument is represented by this LOADInst.
RETURNInst(BeginInst *begin, Value *S1)
Construct a RETURNInst that ends a method by returning S1.
BinaryInst(InstID id, Type::TypeID type, Value *op1, Value *op2)
Construct a BinaryInst.
PredecessorListTy pred_list
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
virtual bool is_commutable() const
True if the operands of the instruction are commutable.
virtual EndInst * to_EndInst()
Base type of instructions that dereference an object reference.
static java_object_t * next
virtual bool is_commutable() const
True if the operands of the instruction are commutable.
virtual DereferenceInst * to_DereferenceInst()
Conversion method.
virtual Instruction * to_Instruction()=0
Convert this SourceStateAwareInst to an Instruction.
AssumptionInst(Value *condition, BeginInst *guarded_block)
Construct an AssumptionInst.
PUTSTATICInst(Value *value, fieldinfo *field, BeginInst *begin, Instruction *state_change)
Construct a PUTSTATICInst.
LOADInst(Type::TypeID type, unsigned index, BeginInst *begin)
Construct a LOADInst.
void set_parent(SourceStateInst *new_parent)
Set state of the enclosing method in case we are in an inlined region.
virtual BeginInst * to_BeginInst()
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
INVOKEINTERFACEInst(Type::TypeID type, unsigned size, constant_FMIref *fmiref, BeginInst *begin, Instruction *state_change, SourceStateInst *source_state)
Construct an INVOKEINTERFACEInst.
virtual bool is_homogeneous() const
True if the instruction has a homogeneous signature.
virtual bool verify() const
Check if the instruction is in a correct state.
virtual bool is_homogeneous() const
virtual DIVInst * to_DIVInst()
virtual BeginInst * get_BeginInst() const
Get the BeginInst of the block that contains this PUTFIELDInst.
java_handle_t * stringconst
virtual bool has_side_effects() const
A PUTSTATICInst changes the global state.
void set_successor(int index, BeginInst *BI)
void append_stackvar(Value *value)
Append a new value to corresponds to a baseline IR stack variable.
void set_match(s4 index, MATCH match)
virtual void visit(UnaryInst *I, bool copyOperands)
std::size_t index
A baseline IR javalocal index.
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
BeginInstRef & get_then_target()
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
virtual bool is_floating() const
A PUTSTATICInst is not allowed to float.
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
virtual BeginInst * get_BeginInst() const
Get the BeginInst of the block that contains this INVOKEInst.
CondInst(Conditional::CondID condition)
Construct a CondInst.
SHLInst(Type::TypeID type)
void * get_Reference() const
CONSTInst(int32_t i, Type::IntType)
FieldAccessInst(InstID id, Type::TypeID type, fieldinfo *field)
Construct a FieldAccessInst.
void set_type(Type::TypeID t)
virtual USHRInst * to_USHRInst()
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
BeginInstRef & succ_front()
virtual NEWInst * to_NEWInst()
double get_Double() const
void append_parameter(Value *V)
Append a parameter that has to be passed to the invoked method.
Value * value
The value that is mapped to a baseline IR javalocal index.
match_iterator match_begin()
virtual bool needs_source_state()
ORInst(Type::TypeID type, Value *S1, Value *S2)
std::size_t pred_size() const
A LOADInst represents an argument that is passed to the current method.
virtual BeginInst * get_BeginInst() const
Get the corresponding BeginInst.
MultiOpInst(InstID id, Type::TypeID type)
Construct a MultiOpInst.
MULInst(Type::TypeID type, Value *S1, Value *S2)
virtual ReplacementEntryInst * to_ReplacementEntryInst()
Conversion method.
virtual bool is_floating() const
An INVOKEInst is not allowed to float, it has to stay fixed in the CFG.
FloatHandling get_FloatHandling() const
s4 source_location
The program location corresponding to the provided mapping information.
Invoke an instance method.
virtual Instruction * to_Instruction()
Convert this SourceStateAwareInst to an Instruction.
virtual bool is_homogeneous() const
ANEWARRAYInst(Type::TypeID type)
Return from the current method.
s4 get_source_location() const
LOOKUPSWITCHInst(BeginInst *begin, Value *S1, s4 lookupcount)
virtual void accept(InstructionVisitor &v, bool copyOperands)
Visitor pattern.
virtual BeginInst * get_BeginInst() const
Get the corresponding BeginInst.
virtual ADDInst * to_ADDInst()
MethodDescriptor TODO: more info.
virtual bool is_homogeneous() const