src/share/vm/opto/connode.hpp

changeset 7789
eb8b5cc64669
parent 7394
5b8e0f84f00f
child 7994
04ff2f6cd0eb
child 8285
535618ab1c04
     1.1 --- a/src/share/vm/opto/connode.hpp	Tue Apr 28 00:37:33 2015 -0700
     1.2 +++ b/src/share/vm/opto/connode.hpp	Thu Jan 29 10:25:59 2015 -0800
     1.3 @@ -669,6 +669,31 @@
     1.4    bool rtm_opt() const { return (_opt == RTM_OPT); }
     1.5  };
     1.6  
     1.7 +//------------------------------ProfileBooleanNode-------------------------------
     1.8 +// A node represents value profile for a boolean during parsing.
     1.9 +// Once parsing is over, the node goes away (during IGVN).
    1.10 +// It is used to override branch frequencies from MDO (see has_injected_profile in parse2.cpp).
    1.11 +class ProfileBooleanNode : public Node {
    1.12 +  uint _false_cnt;
    1.13 +  uint _true_cnt;
    1.14 +  bool _consumed;
    1.15 +  bool _delay_removal;
    1.16 +  virtual uint hash() const ;                  // { return NO_HASH; }
    1.17 +  virtual uint cmp( const Node &n ) const;
    1.18 +  public:
    1.19 +  ProfileBooleanNode(Node *n, uint false_cnt, uint true_cnt) : Node(0, n),
    1.20 +          _false_cnt(false_cnt), _true_cnt(true_cnt), _delay_removal(true), _consumed(false) {}
    1.21 +
    1.22 +  uint false_count() const { return _false_cnt; }
    1.23 +  uint  true_count() const { return  _true_cnt; }
    1.24 +
    1.25 +  void consume() { _consumed = true;  }
    1.26 +
    1.27 +  virtual int Opcode() const;
    1.28 +  virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
    1.29 +  virtual Node *Identity(PhaseTransform *phase);
    1.30 +  virtual const Type *bottom_type() const { return TypeInt::BOOL; }
    1.31 +};
    1.32  
    1.33  //----------------------PartialSubtypeCheckNode--------------------------------
    1.34  // The 2nd slow-half of a subtype check.  Scan the subklass's 2ndary superklass

mercurial