< prev index next >

src/hotspot/share/opto/escape.hpp

Print this page
rev 60137 : 8227745: Enable Escape Analysis for Better Performance in the Presence of JVMTI Agents
Reviewed-by: mdoerr, goetz


 535                         // Memory Phi    - most recent unique Phi split out
 536                         //                 from this Phi
 537                         // MemNode       - new memory input for this node
 538                         // ChecCastPP    - allocation that this is a cast of
 539                         // allocation    - CheckCastPP of the allocation
 540 
 541   // manage entries in _node_map
 542 
 543   void  set_map(Node* from, Node* to)  {
 544     ideal_nodes.push(from);
 545     _node_map.map(from->_idx, to);
 546   }
 547 
 548   Node* get_map(int idx) { return _node_map[idx]; }
 549 
 550   PhiNode* get_map_phi(int idx) {
 551     Node* phi = _node_map[idx];
 552     return (phi == NULL) ? NULL : phi->as_Phi();
 553   }
 554 




 555   // Notify optimizer that a node has been modified
 556   void record_for_optimizer(Node *n);
 557 
 558   // Compute the escape information
 559   bool compute_escape();
 560 
 561 public:
 562   ConnectionGraph(Compile *C, PhaseIterGVN *igvn);
 563 
 564   // Check for non-escaping candidates
 565   static bool has_candidates(Compile *C);
 566 
 567   // Perform escape analysis
 568   static void do_analysis(Compile *C, PhaseIterGVN *igvn);
 569 
 570   bool not_global_escape(Node *n);
 571 
 572   // To be used by, e.g., BarrierSetC2 impls
 573   Node* get_addp_base(Node* addp);
 574 




 535                         // Memory Phi    - most recent unique Phi split out
 536                         //                 from this Phi
 537                         // MemNode       - new memory input for this node
 538                         // ChecCastPP    - allocation that this is a cast of
 539                         // allocation    - CheckCastPP of the allocation
 540 
 541   // manage entries in _node_map
 542 
 543   void  set_map(Node* from, Node* to)  {
 544     ideal_nodes.push(from);
 545     _node_map.map(from->_idx, to);
 546   }
 547 
 548   Node* get_map(int idx) { return _node_map[idx]; }
 549 
 550   PhiNode* get_map_phi(int idx) {
 551     Node* phi = _node_map[idx];
 552     return (phi == NULL) ? NULL : phi->as_Phi();
 553   }
 554 
 555   bool has_not_global_escape_in_scope(SafePointNode* sfn);
 556 
 557   bool has_arg_escape(CallJavaNode* call);
 558 
 559   // Notify optimizer that a node has been modified
 560   void record_for_optimizer(Node *n);
 561 
 562   // Compute the escape information
 563   bool compute_escape();
 564 
 565 public:
 566   ConnectionGraph(Compile *C, PhaseIterGVN *igvn);
 567 
 568   // Check for non-escaping candidates
 569   static bool has_candidates(Compile *C);
 570 
 571   // Perform escape analysis
 572   static void do_analysis(Compile *C, PhaseIterGVN *igvn);
 573 
 574   bool not_global_escape(Node *n);
 575 
 576   // To be used by, e.g., BarrierSetC2 impls
 577   Node* get_addp_base(Node* addp);
 578 


< prev index next >