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