< prev index next >

src/share/vm/opto/arraycopynode.hpp

Print this page




  72     fields[DestLen]   = TypeInt::INT;
  73     fields[SrcKlass]  = TypeKlassPtr::BOTTOM;
  74     fields[DestKlass] = TypeKlassPtr::BOTTOM;
  75     const TypeTuple *domain = TypeTuple::make(ParmLimit, fields);
  76 
  77     // create result type (range)
  78     fields = TypeTuple::fields(0);
  79 
  80     const TypeTuple *range = TypeTuple::make(TypeFunc::Parms+0, fields);
  81 
  82     return TypeFunc::make(domain, range);
  83   }
  84 
  85   ArrayCopyNode(Compile* C, bool alloc_tightly_coupled);
  86 
  87   intptr_t get_length_if_constant(PhaseGVN *phase) const;
  88   int get_count(PhaseGVN *phase) const;
  89   static const TypePtr* get_address_type(PhaseGVN *phase, Node* n);
  90 
  91   Node* try_clone_instance(PhaseGVN *phase, bool can_reshape, int count);
  92   Node* conv_I2X_offset(PhaseGVN *phase, Node* offset, const TypeAryPtr* ary_t);
  93   bool prepare_array_copy(PhaseGVN *phase, bool can_reshape,
  94                           Node*& adr_src, Node*& base_src, Node*& adr_dest, Node*& base_dest,
  95                           BasicType& copy_type, const Type*& value_type, bool& disjoint_bases);
  96   void array_copy_test_overlap(PhaseGVN *phase, bool can_reshape,
  97                                bool disjoint_bases, int count,
  98                                Node*& forward_ctl, Node*& backward_ctl);
  99   Node* array_copy_forward(PhaseGVN *phase, bool can_reshape, Node* ctl,
 100                            Node* start_mem_src, Node* start_mem_dest,
 101                            const TypePtr* atp_src, const TypePtr* atp_dest,
 102                            Node* adr_src, Node* base_src, Node* adr_dest, Node* base_dest,
 103                            BasicType copy_type, const Type* value_type, int count);
 104   Node* array_copy_backward(PhaseGVN *phase, bool can_reshape, Node* ctl,
 105                             Node *start_mem_src, Node* start_mem_dest,
 106                             const TypePtr* atp_src, const TypePtr* atp_dest,
 107                             Node* adr_src, Node* base_src, Node* adr_dest, Node* base_dest,
 108                             BasicType copy_type, const Type* value_type, int count);
 109   bool finish_transform(PhaseGVN *phase, bool can_reshape,
 110                         Node* ctl, Node *mem);
 111   static bool may_modify_helper(const TypeOopPtr *t_oop, Node* n, PhaseTransform *phase);
 112 




  72     fields[DestLen]   = TypeInt::INT;
  73     fields[SrcKlass]  = TypeKlassPtr::BOTTOM;
  74     fields[DestKlass] = TypeKlassPtr::BOTTOM;
  75     const TypeTuple *domain = TypeTuple::make(ParmLimit, fields);
  76 
  77     // create result type (range)
  78     fields = TypeTuple::fields(0);
  79 
  80     const TypeTuple *range = TypeTuple::make(TypeFunc::Parms+0, fields);
  81 
  82     return TypeFunc::make(domain, range);
  83   }
  84 
  85   ArrayCopyNode(Compile* C, bool alloc_tightly_coupled);
  86 
  87   intptr_t get_length_if_constant(PhaseGVN *phase) const;
  88   int get_count(PhaseGVN *phase) const;
  89   static const TypePtr* get_address_type(PhaseGVN *phase, Node* n);
  90 
  91   Node* try_clone_instance(PhaseGVN *phase, bool can_reshape, int count);

  92   bool prepare_array_copy(PhaseGVN *phase, bool can_reshape,
  93                           Node*& adr_src, Node*& base_src, Node*& adr_dest, Node*& base_dest,
  94                           BasicType& copy_type, const Type*& value_type, bool& disjoint_bases);
  95   void array_copy_test_overlap(PhaseGVN *phase, bool can_reshape,
  96                                bool disjoint_bases, int count,
  97                                Node*& forward_ctl, Node*& backward_ctl);
  98   Node* array_copy_forward(PhaseGVN *phase, bool can_reshape, Node* ctl,
  99                            Node* start_mem_src, Node* start_mem_dest,
 100                            const TypePtr* atp_src, const TypePtr* atp_dest,
 101                            Node* adr_src, Node* base_src, Node* adr_dest, Node* base_dest,
 102                            BasicType copy_type, const Type* value_type, int count);
 103   Node* array_copy_backward(PhaseGVN *phase, bool can_reshape, Node* ctl,
 104                             Node *start_mem_src, Node* start_mem_dest,
 105                             const TypePtr* atp_src, const TypePtr* atp_dest,
 106                             Node* adr_src, Node* base_src, Node* adr_dest, Node* base_dest,
 107                             BasicType copy_type, const Type* value_type, int count);
 108   bool finish_transform(PhaseGVN *phase, bool can_reshape,
 109                         Node* ctl, Node *mem);
 110   static bool may_modify_helper(const TypeOopPtr *t_oop, Node* n, PhaseTransform *phase);
 111 


< prev index next >