93 // It is used to override branch frequencies from MDO (see has_injected_profile in parse2.cpp).
94 class ProfileBooleanNode : public Node {
95 uint _false_cnt;
96 uint _true_cnt;
97 bool _consumed;
98 bool _delay_removal;
99 virtual uint hash() const ; // { return NO_HASH; }
100 virtual uint cmp( const Node &n ) const;
101 public:
102 ProfileBooleanNode(Node *n, uint false_cnt, uint true_cnt) : Node(0, n),
103 _false_cnt(false_cnt), _true_cnt(true_cnt), _delay_removal(true), _consumed(false) {}
104
105 uint false_count() const { return _false_cnt; }
106 uint true_count() const { return _true_cnt; }
107
108 void consume() { _consumed = true; }
109
110 virtual int Opcode() const;
111 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
112 virtual Node *Identity(PhaseTransform *phase);
113 virtual const Type *bottom_type() const { return TypeInt::INT; }
114 };
115
116 #endif // SHARE_VM_OPTO_OPAQUENODE_HPP
117
|
93 // It is used to override branch frequencies from MDO (see has_injected_profile in parse2.cpp).
94 class ProfileBooleanNode : public Node {
95 uint _false_cnt;
96 uint _true_cnt;
97 bool _consumed;
98 bool _delay_removal;
99 virtual uint hash() const ; // { return NO_HASH; }
100 virtual uint cmp( const Node &n ) const;
101 public:
102 ProfileBooleanNode(Node *n, uint false_cnt, uint true_cnt) : Node(0, n),
103 _false_cnt(false_cnt), _true_cnt(true_cnt), _delay_removal(true), _consumed(false) {}
104
105 uint false_count() const { return _false_cnt; }
106 uint true_count() const { return _true_cnt; }
107
108 void consume() { _consumed = true; }
109
110 virtual int Opcode() const;
111 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
112 virtual Node *Identity(PhaseTransform *phase);
113 virtual const Type *bottom_type() const { return TypeInt::BOOL; }
114 };
115
116 #endif // SHARE_VM_OPTO_OPAQUENODE_HPP
117
|