src/hotspot/share/opto/escape.hpp
changeset 52568 40474b7105f4
parent 51333 f6641fcf7b7e
child 53244 9807daeb47c4
--- a/src/hotspot/share/opto/escape.hpp	Wed Nov 14 23:12:19 2018 -0800
+++ b/src/hotspot/share/opto/escape.hpp	Thu Nov 15 10:59:56 2018 +0100
@@ -371,8 +371,6 @@
     _nodes.at_put(n->_idx, ptn);
   }
 
-  // Utility function for nodes that load an object
-  void add_objload_to_connection_graph(Node *n, Unique_Node_List *delayed_worklist);
   // Create PointsToNode node and add it to Connection Graph.
   void add_node_to_connection_graph(Node *n, Unique_Node_List *delayed_worklist);
 
@@ -511,24 +509,8 @@
     return is_new;
   }
 
-  // Add LocalVar node and edge if possible
-  void add_local_var_and_edge(Node* n, PointsToNode::EscapeState es, Node* to,
-                              Unique_Node_List *delayed_worklist) {
-    PointsToNode* ptn = ptnode_adr(to->_idx);
-    if (delayed_worklist != NULL) { // First iteration of CG construction
-      add_local_var(n, es);
-      if (ptn == NULL) {
-        delayed_worklist->push(n);
-        return; // Process it later.
-      }
-    } else {
-      assert(ptn != NULL, "node should be registered");
-    }
-    add_edge(ptnode_adr(n->_idx), ptn);
- }
   // Helper functions
   bool   is_oop_field(Node* n, int offset, bool* unsafe);
-  Node* get_addp_base(Node *addp);
   static Node* find_second_addp(Node* addp, Node* n);
   // offset of a field reference
   int address_offset(Node* adr, PhaseTransform *phase);
@@ -574,10 +556,7 @@
   }
 
   // Notify optimizer that a node has been modified
-  void record_for_optimizer(Node *n) {
-    _igvn->_worklist.push(n);
-    _igvn->add_users_to_worklist(n);
-  }
+  void record_for_optimizer(Node *n);
 
   // Compute the escape information
   bool compute_escape();
@@ -593,6 +572,31 @@
 
   bool not_global_escape(Node *n);
 
+  // To be used by, e.g., BarrierSetC2 impls
+  Node* get_addp_base(Node* addp);
+
+  // Utility function for nodes that load an object
+  void add_objload_to_connection_graph(Node* n, Unique_Node_List* delayed_worklist);
+
+  // Add LocalVar node and edge if possible
+  void add_local_var_and_edge(Node* n, PointsToNode::EscapeState es, Node* to,
+                              Unique_Node_List *delayed_worklist) {
+    PointsToNode* ptn = ptnode_adr(to->_idx);
+    if (delayed_worklist != NULL) { // First iteration of CG construction
+      add_local_var(n, es);
+      if (ptn == NULL) {
+        delayed_worklist->push(n);
+        return; // Process it later.
+      }
+    } else {
+      assert(ptn != NULL, "node should be registered");
+    }
+    add_edge(ptnode_adr(n->_idx), ptn);
+  }
+
+  void add_to_congraph_unsafe_access(Node* n, uint opcode, Unique_Node_List* delayed_worklist);
+  bool add_final_edges_unsafe_access(Node* n, uint opcode);
+
 #ifndef PRODUCT
   void dump(GrowableArray<PointsToNode*>& ptnodes_worklist);
 #endif