98 virtual void write_ref_array_pre(oop* dst, int length, 99 bool dest_uninitialized = false) {} 100 virtual void write_ref_array_pre(narrowOop* dst, int length, 101 bool dest_uninitialized = false) {} 102 // Below count is the # array elements being written, starting 103 // at the address "start", which may not necessarily be HeapWord-aligned 104 inline void write_ref_array(HeapWord* start, size_t count); 105 106 // Static versions, suitable for calling from generated code; 107 // count is # array elements being written, starting with "start", 108 // which may not necessarily be HeapWord-aligned. 109 static void static_write_ref_array_pre(HeapWord* start, size_t count); 110 static void static_write_ref_array_post(HeapWord* start, size_t count); 111 112 // Support for optimizing compilers to call the barrier set on slow path allocations 113 // that did not enter a TLAB. Used for e.g. ReduceInitialCardMarks. 114 // The allocation is safe to use iff it returns true. If not, the slow-path allocation 115 // is redone until it succeeds. This can e.g. prevent allocations from the slow path 116 // to be in old. 117 virtual void on_slowpath_allocation_exit(JavaThread* thread, oop new_obj) {} 118 virtual void on_thread_create(JavaThread* thread) {} 119 virtual void on_thread_destroy(JavaThread* thread) {} 120 virtual void make_parsable(JavaThread* thread) {} 121 122 protected: 123 virtual void write_ref_array_work(MemRegion mr) = 0; 124 125 public: 126 // Inform the BarrierSet that the the covered heap region that starts 127 // with "base" has been changed to have the given size (possibly from 0, 128 // for initialization.) 129 virtual void resize_covered_region(MemRegion new_region) = 0; 130 131 // If the barrier set imposes any alignment restrictions on boundaries 132 // within the heap, this function tells whether they are met. 133 virtual bool is_aligned(HeapWord* addr) = 0; 134 135 // Print a description of the memory for the barrier set 136 virtual void print_on(outputStream* st) const = 0; 137 138 static void set_bs(BarrierSet* bs) { _bs = bs; } 139 | 98 virtual void write_ref_array_pre(oop* dst, int length, 99 bool dest_uninitialized = false) {} 100 virtual void write_ref_array_pre(narrowOop* dst, int length, 101 bool dest_uninitialized = false) {} 102 // Below count is the # array elements being written, starting 103 // at the address "start", which may not necessarily be HeapWord-aligned 104 inline void write_ref_array(HeapWord* start, size_t count); 105 106 // Static versions, suitable for calling from generated code; 107 // count is # array elements being written, starting with "start", 108 // which may not necessarily be HeapWord-aligned. 109 static void static_write_ref_array_pre(HeapWord* start, size_t count); 110 static void static_write_ref_array_post(HeapWord* start, size_t count); 111 112 // Support for optimizing compilers to call the barrier set on slow path allocations 113 // that did not enter a TLAB. Used for e.g. ReduceInitialCardMarks. 114 // The allocation is safe to use iff it returns true. If not, the slow-path allocation 115 // is redone until it succeeds. This can e.g. prevent allocations from the slow path 116 // to be in old. 117 virtual void on_slowpath_allocation_exit(JavaThread* thread, oop new_obj) {} 118 virtual void on_thread_attach(JavaThread* thread) {} 119 virtual void on_thread_detach(JavaThread* thread) {} 120 virtual void make_parsable(JavaThread* thread) {} 121 122 protected: 123 virtual void write_ref_array_work(MemRegion mr) = 0; 124 125 public: 126 // Inform the BarrierSet that the the covered heap region that starts 127 // with "base" has been changed to have the given size (possibly from 0, 128 // for initialization.) 129 virtual void resize_covered_region(MemRegion new_region) = 0; 130 131 // If the barrier set imposes any alignment restrictions on boundaries 132 // within the heap, this function tells whether they are met. 133 virtual bool is_aligned(HeapWord* addr) = 0; 134 135 // Print a description of the memory for the barrier set 136 virtual void print_on(outputStream* st) const = 0; 137 138 static void set_bs(BarrierSet* bs) { _bs = bs; } 139 |