< prev index next >

src/share/vm/gc/g1/g1StringDedupQueue.cpp

Print this page




 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 }
< prev index next >