src/share/vm/gc_implementation/shared/markSweep.cpp

Print this page
rev 4616 : 8014277: Remove ObjectClosure as base class for BoolObjectClosure


 149   if (PrintGC && Verbose) {
 150     gclog_or_tty->print_cr("Restoring %d marks",
 151                            _preserved_count + _preserved_oop_stack.size());
 152   }
 153 
 154   // restore the marks we saved earlier
 155   for (size_t i = 0; i < _preserved_count; i++) {
 156     _preserved_marks[i].restore();
 157   }
 158 
 159   // deal with the overflow
 160   while (!_preserved_oop_stack.is_empty()) {
 161     oop obj       = _preserved_oop_stack.pop();
 162     markOop mark  = _preserved_mark_stack.pop();
 163     obj->set_mark(mark);
 164   }
 165 }
 166 
 167 MarkSweep::IsAliveClosure   MarkSweep::is_alive;
 168 
 169 void MarkSweep::IsAliveClosure::do_object(oop p)   { ShouldNotReachHere(); }
 170 bool MarkSweep::IsAliveClosure::do_object_b(oop p) { return p->is_gc_marked(); }
 171 
 172 MarkSweep::KeepAliveClosure MarkSweep::keep_alive;
 173 
 174 void MarkSweep::KeepAliveClosure::do_oop(oop* p)       { MarkSweep::KeepAliveClosure::do_oop_work(p); }
 175 void MarkSweep::KeepAliveClosure::do_oop(narrowOop* p) { MarkSweep::KeepAliveClosure::do_oop_work(p); }
 176 
 177 void marksweep_init() { /* empty */ }
 178 
 179 #ifndef PRODUCT
 180 
 181 void MarkSweep::trace(const char* msg) {
 182   if (TraceMarkSweep)
 183     gclog_or_tty->print("%s", msg);
 184 }
 185 
 186 #endif


 149   if (PrintGC && Verbose) {
 150     gclog_or_tty->print_cr("Restoring %d marks",
 151                            _preserved_count + _preserved_oop_stack.size());
 152   }
 153 
 154   // restore the marks we saved earlier
 155   for (size_t i = 0; i < _preserved_count; i++) {
 156     _preserved_marks[i].restore();
 157   }
 158 
 159   // deal with the overflow
 160   while (!_preserved_oop_stack.is_empty()) {
 161     oop obj       = _preserved_oop_stack.pop();
 162     markOop mark  = _preserved_mark_stack.pop();
 163     obj->set_mark(mark);
 164   }
 165 }
 166 
 167 MarkSweep::IsAliveClosure   MarkSweep::is_alive;
 168 

 169 bool MarkSweep::IsAliveClosure::do_object_b(oop p) { return p->is_gc_marked(); }
 170 
 171 MarkSweep::KeepAliveClosure MarkSweep::keep_alive;
 172 
 173 void MarkSweep::KeepAliveClosure::do_oop(oop* p)       { MarkSweep::KeepAliveClosure::do_oop_work(p); }
 174 void MarkSweep::KeepAliveClosure::do_oop(narrowOop* p) { MarkSweep::KeepAliveClosure::do_oop_work(p); }
 175 
 176 void marksweep_init() { /* empty */ }
 177 
 178 #ifndef PRODUCT
 179 
 180 void MarkSweep::trace(const char* msg) {
 181   if (TraceMarkSweep)
 182     gclog_or_tty->print("%s", msg);
 183 }
 184 
 185 #endif