31 #include "oops/oop.inline.hpp"
32 #include "utilities/stack.inline.hpp"
33
34 inline bool PreservedMarks::should_preserve_mark(oop obj, markWord m) const {
35 return obj->mark_must_be_preserved_for_promotion_failure(m);
36 }
37
38 inline void PreservedMarks::push(oop obj, markWord m) {
39 assert(should_preserve_mark(obj, m), "pre-condition");
40 OopAndMarkWord elem(obj, m);
41 _stack.push(elem);
42 }
43
44 inline void PreservedMarks::push_if_necessary(oop obj, markWord m) {
45 if (should_preserve_mark(obj, m)) {
46 push(obj, m);
47 }
48 }
49
50 inline void PreservedMarks::init_forwarded_mark(oop obj) {
51 obj->init_mark();
52 }
53
54 inline PreservedMarks::PreservedMarks()
55 : _stack(OopAndMarkWordStack::default_segment_size(),
56 // This stack should be used very infrequently so there's
57 // no point in caching stack segments (there will be a
58 // waste of space most of the time). So we set the max
59 // cache size to 0.
60 0 /* max_cache_size */) { }
61
62 void PreservedMarks::OopAndMarkWord::set_mark() const {
63 _o->set_mark(_m);
64 }
65
66 #endif // SHARE_GC_SHARED_PRESERVEDMARKS_INLINE_HPP
|
31 #include "oops/oop.inline.hpp"
32 #include "utilities/stack.inline.hpp"
33
34 inline bool PreservedMarks::should_preserve_mark(oop obj, markWord m) const {
35 return obj->mark_must_be_preserved_for_promotion_failure(m);
36 }
37
38 inline void PreservedMarks::push(oop obj, markWord m) {
39 assert(should_preserve_mark(obj, m), "pre-condition");
40 OopAndMarkWord elem(obj, m);
41 _stack.push(elem);
42 }
43
44 inline void PreservedMarks::push_if_necessary(oop obj, markWord m) {
45 if (should_preserve_mark(obj, m)) {
46 push(obj, m);
47 }
48 }
49
50 inline void PreservedMarks::init_forwarded_mark(oop obj) {
51 obj->forward_safe_init_mark();
52 }
53
54 inline PreservedMarks::PreservedMarks()
55 : _stack(OopAndMarkWordStack::default_segment_size(),
56 // This stack should be used very infrequently so there's
57 // no point in caching stack segments (there will be a
58 // waste of space most of the time). So we set the max
59 // cache size to 0.
60 0 /* max_cache_size */) { }
61
62 void PreservedMarks::OopAndMarkWord::set_mark() const {
63 _o->set_mark(_m);
64 }
65
66 #endif // SHARE_GC_SHARED_PRESERVEDMARKS_INLINE_HPP
|