src/share/vm/opto/connode.hpp

changeset 7789
eb8b5cc64669
parent 7394
5b8e0f84f00f
child 7994
04ff2f6cd0eb
child 8285
535618ab1c04
equal deleted inserted replaced
7788:c97ba20ad404 7789:eb8b5cc64669
667 Opaque3Node(Compile* C, Node *n, int opt) : Opaque2Node(C, n), _opt(opt) {} 667 Opaque3Node(Compile* C, Node *n, int opt) : Opaque2Node(C, n), _opt(opt) {}
668 virtual int Opcode() const; 668 virtual int Opcode() const;
669 bool rtm_opt() const { return (_opt == RTM_OPT); } 669 bool rtm_opt() const { return (_opt == RTM_OPT); }
670 }; 670 };
671 671
672 //------------------------------ProfileBooleanNode-------------------------------
673 // A node represents value profile for a boolean during parsing.
674 // Once parsing is over, the node goes away (during IGVN).
675 // It is used to override branch frequencies from MDO (see has_injected_profile in parse2.cpp).
676 class ProfileBooleanNode : public Node {
677 uint _false_cnt;
678 uint _true_cnt;
679 bool _consumed;
680 bool _delay_removal;
681 virtual uint hash() const ; // { return NO_HASH; }
682 virtual uint cmp( const Node &n ) const;
683 public:
684 ProfileBooleanNode(Node *n, uint false_cnt, uint true_cnt) : Node(0, n),
685 _false_cnt(false_cnt), _true_cnt(true_cnt), _delay_removal(true), _consumed(false) {}
686
687 uint false_count() const { return _false_cnt; }
688 uint true_count() const { return _true_cnt; }
689
690 void consume() { _consumed = true; }
691
692 virtual int Opcode() const;
693 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
694 virtual Node *Identity(PhaseTransform *phase);
695 virtual const Type *bottom_type() const { return TypeInt::BOOL; }
696 };
672 697
673 //----------------------PartialSubtypeCheckNode-------------------------------- 698 //----------------------PartialSubtypeCheckNode--------------------------------
674 // The 2nd slow-half of a subtype check. Scan the subklass's 2ndary superklass 699 // The 2nd slow-half of a subtype check. Scan the subklass's 2ndary superklass
675 // array for an instance of the superklass. Set a hidden internal cache on a 700 // array for an instance of the superklass. Set a hidden internal cache on a
676 // hit (cache is checked with exposed code in gen_subtype_check()). Return 701 // hit (cache is checked with exposed code in gen_subtype_check()). Return

mercurial