< prev index next >

src/hotspot/share/c1/c1_Instruction.hpp

Print this page

*** 647,670 **** LEAF(Phi, Instruction) private: int _pf_flags; // the flags of the phi function int _index; // to value on operand stack (index < 0) or to local public: // creation ! Phi(ValueType* type, BlockBegin* b, int index) : Instruction(type->base()) , _pf_flags(0) , _index(index) { _block = b; NOT_PRODUCT(set_printable_bci(Value(b)->printable_bci())); if (type->is_illegal()) { make_illegal(); } } // flags enum Flag { no_flag = 0, visited = 1 << 0, cannot_simplify = 1 << 1 --- 647,680 ---- LEAF(Phi, Instruction) private: int _pf_flags; // the flags of the phi function int _index; // to value on operand stack (index < 0) or to local + ciType* _exact_type; // preserve type information for flattened arrays. public: // creation ! Phi(ValueType* type, BlockBegin* b, int index, ciType* exact_type) : Instruction(type->base()) , _pf_flags(0) , _index(index) + , _exact_type(exact_type) { _block = b; NOT_PRODUCT(set_printable_bci(Value(b)->printable_bci())); if (type->is_illegal()) { make_illegal(); } } + virtual ciType* exact_type() const { + return _exact_type; + } + + virtual ciType* declared_type() const { + return _exact_type; + } + // flags enum Flag { no_flag = 0, visited = 1 << 0, cannot_simplify = 1 << 1
< prev index next >