< prev index next >

src/hotspot/share/gc/shared/preservedMarks.inline.hpp

Print this page

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
< prev index next >