741 bool is_dead_node(uint idx) { return _dead_node_list.test(idx) != 0; }
742 uint dead_node_count() { return _dead_node_count; }
743 void reset_dead_node_list() { _dead_node_list.Reset();
744 _dead_node_count = 0;
745 }
746 uint live_nodes() const {
747 int val = _unique - _dead_node_count;
748 assert (val >= 0, err_msg_res("number of tracked dead nodes %d more than created nodes %d", _unique, _dead_node_count));
749 return (uint) val;
750 }
751 #ifdef ASSERT
752 uint count_live_nodes_by_graph_walk();
753 void print_missing_nodes();
754 #endif
755
756 // Constant table
757 ConstantTable& constant_table() { return _constant_table; }
758
759 MachConstantBaseNode* mach_constant_base_node();
760 bool has_mach_constant_base_node() const { return _mach_constant_base_node != NULL; }
761
762 // Handy undefined Node
763 Node* top() const { return _top; }
764
765 // these are used by guys who need to know about creation and transformation of top:
766 Node* cached_top_node() { return _top; }
767 void set_cached_top_node(Node* tn);
768
769 GrowableArray<Node_Notes*>* node_note_array() const { return _node_note_array; }
770 void set_node_note_array(GrowableArray<Node_Notes*>* arr) { _node_note_array = arr; }
771 Node_Notes* default_node_notes() const { return _default_node_notes; }
772 void set_default_node_notes(Node_Notes* n) { _default_node_notes = n; }
773
774 Node_Notes* node_notes_at(int idx) {
775 return locate_node_notes(_node_note_array, idx, false);
776 }
777 inline bool set_node_notes_at(int idx, Node_Notes* value);
778
779 // Copy notes from source to dest, if they exist.
780 // Overwrite dest only if source provides something.
|
741 bool is_dead_node(uint idx) { return _dead_node_list.test(idx) != 0; }
742 uint dead_node_count() { return _dead_node_count; }
743 void reset_dead_node_list() { _dead_node_list.Reset();
744 _dead_node_count = 0;
745 }
746 uint live_nodes() const {
747 int val = _unique - _dead_node_count;
748 assert (val >= 0, err_msg_res("number of tracked dead nodes %d more than created nodes %d", _unique, _dead_node_count));
749 return (uint) val;
750 }
751 #ifdef ASSERT
752 uint count_live_nodes_by_graph_walk();
753 void print_missing_nodes();
754 #endif
755
756 // Constant table
757 ConstantTable& constant_table() { return _constant_table; }
758
759 MachConstantBaseNode* mach_constant_base_node();
760 bool has_mach_constant_base_node() const { return _mach_constant_base_node != NULL; }
761 // Generated by adlc, true if CallNode requires MachConstantBase.
762 bool needs_clone_jvms();
763
764 // Handy undefined Node
765 Node* top() const { return _top; }
766
767 // these are used by guys who need to know about creation and transformation of top:
768 Node* cached_top_node() { return _top; }
769 void set_cached_top_node(Node* tn);
770
771 GrowableArray<Node_Notes*>* node_note_array() const { return _node_note_array; }
772 void set_node_note_array(GrowableArray<Node_Notes*>* arr) { _node_note_array = arr; }
773 Node_Notes* default_node_notes() const { return _default_node_notes; }
774 void set_default_node_notes(Node_Notes* n) { _default_node_notes = n; }
775
776 Node_Notes* node_notes_at(int idx) {
777 return locate_node_notes(_node_note_array, idx, false);
778 }
779 inline bool set_node_notes_at(int idx, Node_Notes* value);
780
781 // Copy notes from source to dest, if they exist.
782 // Overwrite dest only if source provides something.
|