130 _prev_discovered = _current_discovered;
131 move_to_next();
132 }
133
134 // Remove the current reference from the list
135 void remove();
136
137 // Make the referent alive.
138 inline void make_referent_alive() {
139 if (UseCompressedOops) {
140 _keep_alive->do_oop((narrowOop*)_referent_addr);
141 } else {
142 _keep_alive->do_oop((oop*)_referent_addr);
143 }
144 }
145
146 // Do enqueuing work, i.e. notifying the GC about the changed discovered pointers.
147 void enqueue();
148
149 // Move enqueued references to the reference pending list.
150 void complete_enqeue();
151
152 // NULL out referent pointer.
153 void clear_referent();
154
155 // Statistics
156 NOT_PRODUCT(
157 inline size_t processed() const { return _processed; }
158 inline size_t removed() const { return _removed; }
159 )
160
161 inline void move_to_next() {
162 if (_current_discovered == _next_discovered) {
163 // End of the list.
164 _current_discovered = NULL;
165 } else {
166 _current_discovered = _next_discovered;
167 }
168 assert(_current_discovered != _first_seen, "cyclic ref_list found");
169 NOT_PRODUCT(_processed++);
170 }
|
130 _prev_discovered = _current_discovered;
131 move_to_next();
132 }
133
134 // Remove the current reference from the list
135 void remove();
136
137 // Make the referent alive.
138 inline void make_referent_alive() {
139 if (UseCompressedOops) {
140 _keep_alive->do_oop((narrowOop*)_referent_addr);
141 } else {
142 _keep_alive->do_oop((oop*)_referent_addr);
143 }
144 }
145
146 // Do enqueuing work, i.e. notifying the GC about the changed discovered pointers.
147 void enqueue();
148
149 // Move enqueued references to the reference pending list.
150 void complete_enqueue();
151
152 // NULL out referent pointer.
153 void clear_referent();
154
155 // Statistics
156 NOT_PRODUCT(
157 inline size_t processed() const { return _processed; }
158 inline size_t removed() const { return _removed; }
159 )
160
161 inline void move_to_next() {
162 if (_current_discovered == _next_discovered) {
163 // End of the list.
164 _current_discovered = NULL;
165 } else {
166 _current_discovered = _next_discovered;
167 }
168 assert(_current_discovered != _first_seen, "cyclic ref_list found");
169 NOT_PRODUCT(_processed++);
170 }
|