< prev index next >

src/hotspot/share/gc/shared/preservedMarks.cpp

Print this page




  38   assert_empty();
  39 }
  40 
  41 void PreservedMarks::adjust_during_full_gc() {
  42   StackIterator<OopAndMarkWord, mtGC> iter(_stack);
  43   while (!iter.is_empty()) {
  44     OopAndMarkWord* elem = iter.next_addr();
  45 
  46     oop obj = elem->get_oop();
  47     if (obj->is_forwarded()) {
  48       elem->set_oop(obj->forwardee());
  49     }
  50   }
  51 }
  52 
  53 void PreservedMarks::restore_and_increment(volatile size_t* const total_size_addr) {
  54   const size_t stack_size = size();
  55   restore();
  56   // Only do the atomic add if the size is > 0.
  57   if (stack_size > 0) {
  58     Atomic::add(stack_size, total_size_addr);
  59   }
  60 }
  61 
  62 #ifndef PRODUCT
  63 void PreservedMarks::assert_empty() {
  64   assert(_stack.is_empty(), "stack expected to be empty, size = " SIZE_FORMAT,
  65          _stack.size());
  66   assert(_stack.cache_size() == 0,
  67          "stack expected to have no cached segments, cache size = " SIZE_FORMAT,
  68          _stack.cache_size());
  69 }
  70 #endif // ndef PRODUCT
  71 
  72 void RemoveForwardedPointerClosure::do_object(oop obj) {
  73   if (obj->is_forwarded()) {
  74     PreservedMarks::init_forwarded_mark(obj);
  75   }
  76 }
  77 
  78 void PreservedMarksSet::init(uint num) {




  38   assert_empty();
  39 }
  40 
  41 void PreservedMarks::adjust_during_full_gc() {
  42   StackIterator<OopAndMarkWord, mtGC> iter(_stack);
  43   while (!iter.is_empty()) {
  44     OopAndMarkWord* elem = iter.next_addr();
  45 
  46     oop obj = elem->get_oop();
  47     if (obj->is_forwarded()) {
  48       elem->set_oop(obj->forwardee());
  49     }
  50   }
  51 }
  52 
  53 void PreservedMarks::restore_and_increment(volatile size_t* const total_size_addr) {
  54   const size_t stack_size = size();
  55   restore();
  56   // Only do the atomic add if the size is > 0.
  57   if (stack_size > 0) {
  58     Atomic::add(total_size_addr, stack_size);
  59   }
  60 }
  61 
  62 #ifndef PRODUCT
  63 void PreservedMarks::assert_empty() {
  64   assert(_stack.is_empty(), "stack expected to be empty, size = " SIZE_FORMAT,
  65          _stack.size());
  66   assert(_stack.cache_size() == 0,
  67          "stack expected to have no cached segments, cache size = " SIZE_FORMAT,
  68          _stack.cache_size());
  69 }
  70 #endif // ndef PRODUCT
  71 
  72 void RemoveForwardedPointerClosure::do_object(oop obj) {
  73   if (obj->is_forwarded()) {
  74     PreservedMarks::init_forwarded_mark(obj);
  75   }
  76 }
  77 
  78 void PreservedMarksSet::init(uint num) {


< prev index next >