25 #ifndef _JIT_COMPILER2_GLOBALVALUENUMBERINGPASS
26 #define _JIT_COMPILER2_GLOBALVALUENUMBERINGPASS
109 template <
typename T1,
typename T2>
BlockTy * get_block(Instruction *inst)
Pass superclass All compiler passes should inheritate this class.
unordered_set< Instruction * > TouchedInstListTy
unordered_map< BlockTy *, TouchedInstListTy * > Block2TouchedInstListMapTy
unordered_map< int64_t, BlockTy * > LongBlockMapTy
void init_worklist_and_touchedblocks()
unordered_map< Instruction *, OperandIndex2UsersTy * > OperandInverseMapTy
unordered_map< int32_t, BlockTy * > IntBlockMapTy
void eliminate_redundancies()
std::list< BlockTy * > PartitionTy
unordered_map< BlockTy *, std::vector< bool > * > InWorkListTy
unordered_map< float, BlockTy * > FloatBlockMapTy
GlobalValueNumberingPass()
InstructionListTy * get_users(Instruction *inst, int op_index)
std::list< Instruction * > InstructionListTy
unordered_map< double, BlockTy * > DoubleBlockMapTy
std::list< WorkListPairTy * > WorkListTy
Inst2BlockMapTy inst2BlockMap
unordered_set< Instruction * > BlockTy
virtual bool run(JITData &JD)
Run the Pass.
bool is_in_worklist(BlockTy *block, int index)
unordered_map< Instruction::InstID, BlockTy *, hash< int > > OpcodeBlockMapTy
these types are needed for the creation of the inital blocks
void set_in_worklist(BlockTy *block, int index, bool flag)
std::vector< bool > * get_worklist_flags(BlockTy *block)
BlockTy * get_or_create_block(T1 &map, T2 key)
Stores the interdependencies of a pass.
void init_operand_inverse(Method::const_iterator begin, Method::const_iterator end)
Block2TouchedInstListMapTy block2TouchedInstListMap
void split(BlockTy *block, TouchedInstListTy *instructions)
void add_to_worklist(BlockTy *block, int operandIndex)
std::pair< BlockTy *, int > WorkListPairTy
unordered_map< BeginInst *, BlockTy * > BBBlockMapTy
unordered_map< Instruction *, BlockTy * > Inst2BlockMapTy
GlobalValueNumberingPass.
InstructionListTy::const_iterator const_iterator
static int arity(BlockTy *block)
std::vector< InstructionListTy * > OperandIndex2UsersTy
OperandInverseMapTy operandInverseMap
void print_block(BlockTy *block)
static int compute_max_arity(Method::const_iterator begin, Method::const_iterator end)
jmethodID jint const void jint const jvmtiAddrLocationMap * map
TouchedInstListTy * get_touched_instructions(BlockTy *block)
void init_partition(Method::const_iterator begin, Method::const_iterator end)
void add_to_block(BlockTy *block, Instruction *inst)
virtual PassUsage & get_PassUsage(PassUsage &PU) const
Set the requirements for the pass.
void clean_up_operand_inverse()
WorkListPairTy * selectAndDeleteFromWorkList()
BlockTy * create_block()
creates and returns a new block and does some setup work needed for the further execution of the part...
void print_instructions(TouchedInstListTy *instructions)
void eliminate_redundancies_in_block(BlockTy *block)