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
|