40 } while (0)
41
42 #define SHENANDOAH_ERGO_ENABLE_FLAG(name) \
43 do { \
44 if (FLAG_IS_DEFAULT(name) && !(name)) { \
45 log_info(gc)("Heuristics ergonomically sets -XX:+" #name); \
46 FLAG_SET_DEFAULT(name, true); \
47 } \
48 } while (0)
49
50 #define SHENANDOAH_ERGO_OVERRIDE_DEFAULT(name, value) \
51 do { \
52 if (FLAG_IS_DEFAULT(name)) { \
53 log_info(gc)("Heuristics ergonomically sets -XX:" #name "=" #value); \
54 FLAG_SET_DEFAULT(name, value); \
55 } \
56 } while (0)
57
58 #define SHENANDOAH_CHECK_FLAG_SET(name) \
59 do { \
60 if (!name) { \
61 err_msg message("Heuristics needs -XX:+" #name " to work correctly"); \
62 vm_exit_during_initialization("Error", message); \
63 } \
64 } while (0)
65
66 class ShenandoahCollectionSet;
67 class ShenandoahHeapRegion;
68
69 class ShenandoahHeuristics : public CHeapObj<mtGC> {
70 static const intx Concurrent_Adjust = -1; // recover from penalties
71 static const intx Degenerated_Penalty = 10; // how much to penalize average GC duration history on Degenerated GC
72 static const intx Full_Penalty = 20; // how much to penalize average GC duration history on Full GC
73
74 protected:
75 typedef struct {
76 ShenandoahHeapRegion* _region;
77 size_t _garbage;
78 uint64_t _seqnum_last_alloc;
79 } RegionData;
80
|
40 } while (0)
41
42 #define SHENANDOAH_ERGO_ENABLE_FLAG(name) \
43 do { \
44 if (FLAG_IS_DEFAULT(name) && !(name)) { \
45 log_info(gc)("Heuristics ergonomically sets -XX:+" #name); \
46 FLAG_SET_DEFAULT(name, true); \
47 } \
48 } while (0)
49
50 #define SHENANDOAH_ERGO_OVERRIDE_DEFAULT(name, value) \
51 do { \
52 if (FLAG_IS_DEFAULT(name)) { \
53 log_info(gc)("Heuristics ergonomically sets -XX:" #name "=" #value); \
54 FLAG_SET_DEFAULT(name, value); \
55 } \
56 } while (0)
57
58 #define SHENANDOAH_CHECK_FLAG_SET(name) \
59 do { \
60 if (!(name)) { \
61 err_msg message("Heuristics needs -XX:+" #name " to work correctly"); \
62 vm_exit_during_initialization("Error", message); \
63 } \
64 } while (0)
65
66 class ShenandoahCollectionSet;
67 class ShenandoahHeapRegion;
68
69 class ShenandoahHeuristics : public CHeapObj<mtGC> {
70 static const intx Concurrent_Adjust = -1; // recover from penalties
71 static const intx Degenerated_Penalty = 10; // how much to penalize average GC duration history on Degenerated GC
72 static const intx Full_Penalty = 20; // how much to penalize average GC duration history on Full GC
73
74 protected:
75 typedef struct {
76 ShenandoahHeapRegion* _region;
77 size_t _garbage;
78 uint64_t _seqnum_last_alloc;
79 } RegionData;
80
|