< prev index next >

src/share/vm/gc/serial/markSweep.cpp

Print this page




 296   if (PrintGC && Verbose) {
 297     gclog_or_tty->print_cr("Restoring " SIZE_FORMAT " marks",
 298                            _preserved_count + _preserved_oop_stack.size());
 299   }
 300 
 301   // restore the marks we saved earlier
 302   for (size_t i = 0; i < _preserved_count; i++) {
 303     _preserved_marks[i].restore();
 304   }
 305 
 306   // deal with the overflow
 307   while (!_preserved_oop_stack.is_empty()) {
 308     oop obj       = _preserved_oop_stack.pop();
 309     markOop mark  = _preserved_mark_stack.pop();
 310     obj->set_mark(mark);
 311   }
 312 }
 313 
 314 MarkSweep::IsAliveClosure   MarkSweep::is_alive;
 315 
 316 bool MarkSweep::IsAliveClosure::do_object_b(oop p) { return p->is_gc_marked(); }
 317 
 318 MarkSweep::KeepAliveClosure MarkSweep::keep_alive;
 319 
 320 void MarkSweep::KeepAliveClosure::do_oop(oop* p)       { MarkSweep::KeepAliveClosure::do_oop_work(p); }
 321 void MarkSweep::KeepAliveClosure::do_oop(narrowOop* p) { MarkSweep::KeepAliveClosure::do_oop_work(p); }
 322 
 323 void marksweep_init() {
 324   MarkSweep::_gc_timer = new (ResourceObj::C_HEAP, mtGC) STWGCTimer();
 325   MarkSweep::_gc_tracer = new (ResourceObj::C_HEAP, mtGC) SerialOldTracer();
 326 }
 327 
 328 int InstanceKlass::oop_ms_adjust_pointers(oop obj) {
 329   int size = size_helper();
 330   oop_oop_iterate_oop_maps<true>(obj, &MarkSweep::adjust_pointer_closure);
 331   return size;
 332 }
 333 
 334 int InstanceMirrorKlass::oop_ms_adjust_pointers(oop obj) {
 335   int size = oop_size(obj);
 336   InstanceKlass::oop_ms_adjust_pointers(obj);




 296   if (PrintGC && Verbose) {
 297     gclog_or_tty->print_cr("Restoring " SIZE_FORMAT " marks",
 298                            _preserved_count + _preserved_oop_stack.size());
 299   }
 300 
 301   // restore the marks we saved earlier
 302   for (size_t i = 0; i < _preserved_count; i++) {
 303     _preserved_marks[i].restore();
 304   }
 305 
 306   // deal with the overflow
 307   while (!_preserved_oop_stack.is_empty()) {
 308     oop obj       = _preserved_oop_stack.pop();
 309     markOop mark  = _preserved_mark_stack.pop();
 310     obj->set_mark(mark);
 311   }
 312 }
 313 
 314 MarkSweep::IsAliveClosure   MarkSweep::is_alive;
 315 
 316 bool MarkSweep::IsAliveClosure::do_object_b(oop p) { return p->is_gc_marked() || is_archive_object(p); }
 317 
 318 MarkSweep::KeepAliveClosure MarkSweep::keep_alive;
 319 
 320 void MarkSweep::KeepAliveClosure::do_oop(oop* p)       { MarkSweep::KeepAliveClosure::do_oop_work(p); }
 321 void MarkSweep::KeepAliveClosure::do_oop(narrowOop* p) { MarkSweep::KeepAliveClosure::do_oop_work(p); }
 322 
 323 void marksweep_init() {
 324   MarkSweep::_gc_timer = new (ResourceObj::C_HEAP, mtGC) STWGCTimer();
 325   MarkSweep::_gc_tracer = new (ResourceObj::C_HEAP, mtGC) SerialOldTracer();
 326 }
 327 
 328 int InstanceKlass::oop_ms_adjust_pointers(oop obj) {
 329   int size = size_helper();
 330   oop_oop_iterate_oop_maps<true>(obj, &MarkSweep::adjust_pointer_closure);
 331   return size;
 332 }
 333 
 334 int InstanceMirrorKlass::oop_ms_adjust_pointers(oop obj) {
 335   int size = oop_size(obj);
 336   InstanceKlass::oop_ms_adjust_pointers(obj);


< prev index next >