138
139 void G1StringDedupQueue::unlink_or_oops_do(G1StringDedupUnlinkOrOopsDoClosure* cl, size_t queue) {
140 assert(queue < _queue->_nqueues, "Invalid queue");
141 StackIterator<oop, mtGC> iter(_queue->_queues[queue]);
142 while (!iter.is_empty()) {
143 oop* p = iter.next_addr();
144 if (*p != NULL) {
145 if (cl->is_alive(*p)) {
146 cl->keep_alive(p);
147 } else {
148 // Clear dead reference
149 *p = NULL;
150 }
151 }
152 }
153 }
154
155 void G1StringDedupQueue::print_statistics(outputStream* st) {
156 st->print_cr(
157 " [Queue]\n"
158 " [Dropped: "UINTX_FORMAT"]", _queue->_dropped);
159 }
160
161 void G1StringDedupQueue::verify() {
162 for (size_t i = 0; i < _queue->_nqueues; i++) {
163 StackIterator<oop, mtGC> iter(_queue->_queues[i]);
164 while (!iter.is_empty()) {
165 oop obj = iter.next();
166 if (obj != NULL) {
167 guarantee(G1CollectedHeap::heap()->is_in_reserved(obj), "Object must be on the heap");
168 guarantee(!obj->is_forwarded(), "Object must not be forwarded");
169 guarantee(java_lang_String::is_instance(obj), "Object must be a String");
170 }
171 }
172 }
173 }
|
138
139 void G1StringDedupQueue::unlink_or_oops_do(G1StringDedupUnlinkOrOopsDoClosure* cl, size_t queue) {
140 assert(queue < _queue->_nqueues, "Invalid queue");
141 StackIterator<oop, mtGC> iter(_queue->_queues[queue]);
142 while (!iter.is_empty()) {
143 oop* p = iter.next_addr();
144 if (*p != NULL) {
145 if (cl->is_alive(*p)) {
146 cl->keep_alive(p);
147 } else {
148 // Clear dead reference
149 *p = NULL;
150 }
151 }
152 }
153 }
154
155 void G1StringDedupQueue::print_statistics(outputStream* st) {
156 st->print_cr(
157 " [Queue]\n"
158 " [Dropped: " UINTX_FORMAT "]", _queue->_dropped);
159 }
160
161 void G1StringDedupQueue::verify() {
162 for (size_t i = 0; i < _queue->_nqueues; i++) {
163 StackIterator<oop, mtGC> iter(_queue->_queues[i]);
164 while (!iter.is_empty()) {
165 oop obj = iter.next();
166 if (obj != NULL) {
167 guarantee(G1CollectedHeap::heap()->is_in_reserved(obj), "Object must be on the heap");
168 guarantee(!obj->is_forwarded(), "Object must not be forwarded");
169 guarantee(java_lang_String::is_instance(obj), "Object must be a String");
170 }
171 }
172 }
173 }
|