hotspot/src/share/vm/gc_implementation/g1/heapRegion.hpp
changeset 13756 3b72f3da8cd4
parent 13728 882756847a04
child 15482 470d0b0c09f1
equal deleted inserted replaced
13755:a00f5de57d30 13756:3b72f3da8cd4
   163   // want to know where the end of the last "real" object we allocated
   163   // want to know where the end of the last "real" object we allocated
   164   // into the region was and this is what this keeps track.
   164   // into the region was and this is what this keeps track.
   165   HeapWord* _pre_dummy_top;
   165   HeapWord* _pre_dummy_top;
   166 
   166 
   167  public:
   167  public:
   168   // Constructor.  If "is_zeroed" is true, the MemRegion "mr" may be
       
   169   // assumed to contain zeros.
       
   170   G1OffsetTableContigSpace(G1BlockOffsetSharedArray* sharedOffsetArray,
   168   G1OffsetTableContigSpace(G1BlockOffsetSharedArray* sharedOffsetArray,
   171                            MemRegion mr, bool is_zeroed = false);
   169                            MemRegion mr);
   172 
   170 
   173   void set_bottom(HeapWord* value);
   171   void set_bottom(HeapWord* value);
   174   void set_end(HeapWord* value);
   172   void set_end(HeapWord* value);
   175 
   173 
   176   virtual HeapWord* saved_mark_word() const;
   174   virtual HeapWord* saved_mark_word() const;
   187   HeapWord* pre_dummy_top() {
   185   HeapWord* pre_dummy_top() {
   188     return (_pre_dummy_top == NULL) ? top() : _pre_dummy_top;
   186     return (_pre_dummy_top == NULL) ? top() : _pre_dummy_top;
   189   }
   187   }
   190   void reset_pre_dummy_top() { _pre_dummy_top = NULL; }
   188   void reset_pre_dummy_top() { _pre_dummy_top = NULL; }
   191 
   189 
   192   virtual void initialize(MemRegion mr, bool clear_space, bool mangle_space);
       
   193   virtual void clear(bool mangle_space);
   190   virtual void clear(bool mangle_space);
   194 
   191 
   195   HeapWord* block_start(const void* p);
   192   HeapWord* block_start(const void* p);
   196   HeapWord* block_start_const(const void* p) const;
   193   HeapWord* block_start_const(const void* p) const;
   197 
   194 
   338   // The predicted number of bytes to copy that was added to
   335   // The predicted number of bytes to copy that was added to
   339   // the total value for the collection set.
   336   // the total value for the collection set.
   340   size_t _predicted_bytes_to_copy;
   337   size_t _predicted_bytes_to_copy;
   341 
   338 
   342  public:
   339  public:
   343   // If "is_zeroed" is "true", the region "mr" can be assumed to contain zeros.
       
   344   HeapRegion(uint hrs_index,
   340   HeapRegion(uint hrs_index,
   345              G1BlockOffsetSharedArray* sharedOffsetArray,
   341              G1BlockOffsetSharedArray* sharedOffsetArray,
   346              MemRegion mr, bool is_zeroed);
   342              MemRegion mr);
   347 
   343 
   348   static int    LogOfHRGrainBytes;
   344   static int    LogOfHRGrainBytes;
   349   static int    LogOfHRGrainWords;
   345   static int    LogOfHRGrainWords;
   350 
   346 
   351   static size_t GrainBytes;
   347   static size_t GrainBytes;
   596 
   592 
   597   // Reset HR stuff to default values.
   593   // Reset HR stuff to default values.
   598   void hr_clear(bool par, bool clear_space);
   594   void hr_clear(bool par, bool clear_space);
   599   void par_clear();
   595   void par_clear();
   600 
   596 
   601   void initialize(MemRegion mr, bool clear_space, bool mangle_space);
       
   602 
       
   603   // Get the start of the unmarked area in this region.
   597   // Get the start of the unmarked area in this region.
   604   HeapWord* prev_top_at_mark_start() const { return _prev_top_at_mark_start; }
   598   HeapWord* prev_top_at_mark_start() const { return _prev_top_at_mark_start; }
   605   HeapWord* next_top_at_mark_start() const { return _next_top_at_mark_start; }
   599   HeapWord* next_top_at_mark_start() const { return _next_top_at_mark_start; }
   606 
   600 
   607   // Apply "cl->do_oop" to (the addresses of) all reference fields in objects
   601   // Apply "cl->do_oop" to (the addresses of) all reference fields in objects