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);
|