113 }
114
115 template <class BarrierSetC2T>
116 static BarrierSetC2* make_barrier_set_c2() {
117 return COMPILER2_PRESENT(new BarrierSetC2T()) NOT_COMPILER2(NULL);
118 }
119
120 public:
121 // Support for optimizing compilers to call the barrier set on slow path allocations
122 // that did not enter a TLAB. Used for e.g. ReduceInitialCardMarks.
123 // The allocation is safe to use iff it returns true. If not, the slow-path allocation
124 // is redone until it succeeds. This can e.g. prevent allocations from the slow path
125 // to be in old.
126 virtual void on_slowpath_allocation_exit(JavaThread* thread, oop new_obj) {}
127 virtual void on_thread_create(Thread* thread) {}
128 virtual void on_thread_destroy(Thread* thread) {}
129 virtual void on_thread_attach(JavaThread* thread) {}
130 virtual void on_thread_detach(JavaThread* thread) {}
131 virtual void make_parsable(JavaThread* thread) {}
132
133 public:
134 // Print a description of the memory for the barrier set
135 virtual void print_on(outputStream* st) const = 0;
136
137 static BarrierSet* barrier_set() { return _barrier_set; }
138 static void set_barrier_set(BarrierSet* barrier_set);
139
140 BarrierSetAssembler* barrier_set_assembler() {
141 assert(_barrier_set_assembler != NULL, "should be set");
142 return _barrier_set_assembler;
143 }
144
145 BarrierSetC1* barrier_set_c1() {
146 assert(_barrier_set_c1 != NULL, "should be set");
147 return _barrier_set_c1;
148 }
149
150 BarrierSetC2* barrier_set_c2() {
151 assert(_barrier_set_c2 != NULL, "should be set");
152 return _barrier_set_c2;
|
113 }
114
115 template <class BarrierSetC2T>
116 static BarrierSetC2* make_barrier_set_c2() {
117 return COMPILER2_PRESENT(new BarrierSetC2T()) NOT_COMPILER2(NULL);
118 }
119
120 public:
121 // Support for optimizing compilers to call the barrier set on slow path allocations
122 // that did not enter a TLAB. Used for e.g. ReduceInitialCardMarks.
123 // The allocation is safe to use iff it returns true. If not, the slow-path allocation
124 // is redone until it succeeds. This can e.g. prevent allocations from the slow path
125 // to be in old.
126 virtual void on_slowpath_allocation_exit(JavaThread* thread, oop new_obj) {}
127 virtual void on_thread_create(Thread* thread) {}
128 virtual void on_thread_destroy(Thread* thread) {}
129 virtual void on_thread_attach(JavaThread* thread) {}
130 virtual void on_thread_detach(JavaThread* thread) {}
131 virtual void make_parsable(JavaThread* thread) {}
132
133 #ifdef CHECK_UNHANDLED_OOPS
134 virtual void verify_equals(oop o1, oop o2) { }
135 #endif
136
137 public:
138 // Print a description of the memory for the barrier set
139 virtual void print_on(outputStream* st) const = 0;
140
141 static BarrierSet* barrier_set() { return _barrier_set; }
142 static void set_barrier_set(BarrierSet* barrier_set);
143
144 BarrierSetAssembler* barrier_set_assembler() {
145 assert(_barrier_set_assembler != NULL, "should be set");
146 return _barrier_set_assembler;
147 }
148
149 BarrierSetC1* barrier_set_c1() {
150 assert(_barrier_set_c1 != NULL, "should be set");
151 return _barrier_set_c1;
152 }
153
154 BarrierSetC2* barrier_set_c2() {
155 assert(_barrier_set_c2 != NULL, "should be set");
156 return _barrier_set_c2;
|