src/share/vm/opto/memnode.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6695810 Sdiff src/share/vm/opto

src/share/vm/opto/memnode.hpp

Print this page




  55     debug_only(_adr_type=at; adr_type();)
  56   }
  57   MemNode( Node *c0, Node *c1, Node *c2, const TypePtr* at, Node *c3, Node *c4)
  58     : Node(c0,c1,c2,c3,c4) {
  59     init_class_id(Class_Mem);
  60     debug_only(_adr_type=at; adr_type();)
  61   }
  62 
  63 public:
  64   // Helpers for the optimizer.  Documented in memnode.cpp.
  65   static bool detect_ptr_independence(Node* p1, AllocateNode* a1,
  66                                       Node* p2, AllocateNode* a2,
  67                                       PhaseTransform* phase);
  68   static bool adr_phi_is_loop_invariant(Node* adr_phi, Node* cast);
  69 
  70   static Node *optimize_simple_memory_chain(Node *mchain, const TypePtr *t_adr, PhaseGVN *phase);
  71   static Node *optimize_memory_chain(Node *mchain, const TypePtr *t_adr, PhaseGVN *phase);
  72   // This one should probably be a phase-specific function:
  73   static bool all_controls_dominate(Node* dom, Node* sub);
  74 
  75   // Is this Node a MemNode or some descendent?  Default is YES.

  76   virtual Node *Ideal_DU_postCCP( PhaseCCP *ccp );
  77 
  78   virtual const class TypePtr *adr_type() const;  // returns bottom_type of address
  79 
  80   // Shared code for Ideal methods:
  81   Node *Ideal_common(PhaseGVN *phase, bool can_reshape);  // Return -1 for short-circuit NULL.
  82 
  83   // Helper function for adr_type() implementations.
  84   static const TypePtr* calculate_adr_type(const Type* t, const TypePtr* cross_check = NULL);
  85 
  86   // Raw access function, to allow copying of adr_type efficiently in
  87   // product builds and retain the debug info for debug builds.
  88   const TypePtr *raw_adr_type() const {
  89 #ifdef ASSERT
  90     return _adr_type;
  91 #else
  92     return 0;
  93 #endif
  94   }
  95 




  55     debug_only(_adr_type=at; adr_type();)
  56   }
  57   MemNode( Node *c0, Node *c1, Node *c2, const TypePtr* at, Node *c3, Node *c4)
  58     : Node(c0,c1,c2,c3,c4) {
  59     init_class_id(Class_Mem);
  60     debug_only(_adr_type=at; adr_type();)
  61   }
  62 
  63 public:
  64   // Helpers for the optimizer.  Documented in memnode.cpp.
  65   static bool detect_ptr_independence(Node* p1, AllocateNode* a1,
  66                                       Node* p2, AllocateNode* a2,
  67                                       PhaseTransform* phase);
  68   static bool adr_phi_is_loop_invariant(Node* adr_phi, Node* cast);
  69 
  70   static Node *optimize_simple_memory_chain(Node *mchain, const TypePtr *t_adr, PhaseGVN *phase);
  71   static Node *optimize_memory_chain(Node *mchain, const TypePtr *t_adr, PhaseGVN *phase);
  72   // This one should probably be a phase-specific function:
  73   static bool all_controls_dominate(Node* dom, Node* sub);
  74 
  75   // Find any cast-away of null-ness and keep its control.
  76   static  Node *Ideal_common_DU_postCCP( PhaseCCP *ccp, Node* n, Node* adr );
  77   virtual Node *Ideal_DU_postCCP( PhaseCCP *ccp );
  78 
  79   virtual const class TypePtr *adr_type() const;  // returns bottom_type of address
  80 
  81   // Shared code for Ideal methods:
  82   Node *Ideal_common(PhaseGVN *phase, bool can_reshape);  // Return -1 for short-circuit NULL.
  83 
  84   // Helper function for adr_type() implementations.
  85   static const TypePtr* calculate_adr_type(const Type* t, const TypePtr* cross_check = NULL);
  86 
  87   // Raw access function, to allow copying of adr_type efficiently in
  88   // product builds and retain the debug info for debug builds.
  89   const TypePtr *raw_adr_type() const {
  90 #ifdef ASSERT
  91     return _adr_type;
  92 #else
  93     return 0;
  94 #endif
  95   }
  96 


src/share/vm/opto/memnode.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File