873 #endif // #ifdef ASSERT
874
875 private:
876 // Closure accessors
877 static OopClosure* adjust_pointer_closure() { return (OopClosure*)&_adjust_pointer_closure; }
878 static OopClosure* adjust_root_pointer_closure() { return (OopClosure*)&_adjust_root_pointer_closure; }
879 static BoolObjectClosure* is_alive_closure() { return (BoolObjectClosure*)&_is_alive_closure; }
880
881 static void initialize_space_info();
882
883 // Return true if details about individual phases should be printed.
884 static inline bool print_phases();
885
886 // Clear the marking bitmap and summary data that cover the specified space.
887 static void clear_data_covering_space(SpaceId id);
888
889 static void pre_compact(PreGCValues* pre_gc_values);
890 static void post_compact();
891
892 // Mark live objects
893 static void marking_phase(ParCompactionManager* cm,
894 bool maximum_heap_compaction,
895 ParallelOldTracer *gc_tracer);
896 static void follow_weak_klass_links();
897 static void follow_mdo_weak_refs();
898
899 template <class T> static inline void adjust_pointer(T* p, bool is_root);
900 static void adjust_root_pointer(oop* p) { adjust_pointer(p, true); }
901
902 template <class T>
903 static inline void follow_root(ParCompactionManager* cm, T* p);
904
905 // Compute the dense prefix for the designated space. This is an experimental
906 // implementation currently not used in production.
907 static HeapWord* compute_dense_prefix_via_density(const SpaceId id,
908 bool maximum_compaction);
909
910 // Methods used to compute the dense prefix.
911
912 // Compute the value of the normal distribution at x = density. The mean and
913 // standard deviation are values saved by initialize_dead_wood_limiter().
914 static inline double normal_distribution(double density);
915
|
873 #endif // #ifdef ASSERT
874
875 private:
876 // Closure accessors
877 static OopClosure* adjust_pointer_closure() { return (OopClosure*)&_adjust_pointer_closure; }
878 static OopClosure* adjust_root_pointer_closure() { return (OopClosure*)&_adjust_root_pointer_closure; }
879 static BoolObjectClosure* is_alive_closure() { return (BoolObjectClosure*)&_is_alive_closure; }
880
881 static void initialize_space_info();
882
883 // Return true if details about individual phases should be printed.
884 static inline bool print_phases();
885
886 // Clear the marking bitmap and summary data that cover the specified space.
887 static void clear_data_covering_space(SpaceId id);
888
889 static void pre_compact(PreGCValues* pre_gc_values);
890 static void post_compact();
891
892 // Mark live objects
893 static void marking_phase(ParCompactionManager* cm, bool maximum_heap_compaction);
894 static void follow_weak_klass_links();
895 static void follow_mdo_weak_refs();
896
897 template <class T> static inline void adjust_pointer(T* p, bool is_root);
898 static void adjust_root_pointer(oop* p) { adjust_pointer(p, true); }
899
900 template <class T>
901 static inline void follow_root(ParCompactionManager* cm, T* p);
902
903 // Compute the dense prefix for the designated space. This is an experimental
904 // implementation currently not used in production.
905 static HeapWord* compute_dense_prefix_via_density(const SpaceId id,
906 bool maximum_compaction);
907
908 // Methods used to compute the dense prefix.
909
910 // Compute the value of the normal distribution at x = density. The mean and
911 // standard deviation are values saved by initialize_dead_wood_limiter().
912 static inline double normal_distribution(double density);
913
|