< prev index next >

src/share/vm/opto/compile.hpp

Print this page

        

@@ -81,10 +81,11 @@
 class TypeData;
 class TypeInt;
 class TypePtr;
 class TypeOopPtr;
 class TypeFunc;
+class ValueTypePtrNode;
 class Unique_Node_List;
 class nmethod;
 class WarmCallInfo;
 class Node_Stack;
 struct Final_Reshape_Counts;

@@ -413,10 +414,11 @@
   GrowableArray<CallGenerator*>* _intrinsics;   // List of intrinsics.
   GrowableArray<Node*>* _macro_nodes;           // List of nodes which need to be expanded before matching.
   GrowableArray<Node*>* _predicate_opaqs;       // List of Opaque1 nodes for the loop predicates.
   GrowableArray<Node*>* _expensive_nodes;       // List of nodes that are expensive to compute and that we'd better not let the GVN freely common
   GrowableArray<Node*>* _range_check_casts;     // List of CastII nodes with a range check dependency
+  GrowableArray<ValueTypePtrNode*>* _value_type_ptr_nodes; // List of ValueTypePtr nodes
   ConnectionGraph*      _congraph;
 #ifndef PRODUCT
   IdealGraphPrinter*    _printer;
 #endif
 

@@ -805,10 +807,20 @@
   Node* range_check_cast_node(int idx) const { return _range_check_casts->at(idx);  }
   int   range_check_cast_count()       const { return _range_check_casts->length(); }
   // Remove all range check dependent CastIINodes.
   void  remove_range_check_casts(PhaseIterGVN &igvn);
 
+  void add_value_type_ptr(ValueTypePtrNode* n);
+  void remove_value_type_ptr(ValueTypePtrNode* n) {
+    if (_value_type_ptr_nodes->contains(n)) {
+      _value_type_ptr_nodes->remove(n);
+    }
+  }
+  ValueTypePtrNode* value_type_ptr(int idx) const { return _value_type_ptr_nodes->at(idx);  }
+  int   value_type_ptr_count()       const { return _value_type_ptr_nodes->length(); }
+  void  process_value_type_ptr_nodes(PhaseIterGVN &igvn);
+
   // remove the opaque nodes that protect the predicates so that the unused checks and
   // uncommon traps will be eliminated from the graph.
   void cleanup_loop_predicates(PhaseIterGVN &igvn);
   bool is_predicate_opaq(Node * n) {
     return _predicate_opaqs->contains(n);
< prev index next >