71
72 inline HeapWord* PSParallelCompact::new_top(SpaceId id) {
73 assert(id < last_space_id, "id out of range");
74 return _space_info[id].new_top();
75 }
76
77 inline HeapWord* PSParallelCompact::dense_prefix(SpaceId id) {
78 assert(id < last_space_id, "id out of range");
79 return _space_info[id].dense_prefix();
80 }
81
82 inline ObjectStartArray* PSParallelCompact::start_array(SpaceId id) {
83 assert(id < last_space_id, "id out of range");
84 return _space_info[id].start_array();
85 }
86
87 #ifdef ASSERT
88 inline void PSParallelCompact::check_new_location(HeapWord* old_addr, HeapWord* new_addr) {
89 assert(old_addr >= new_addr || space_id(old_addr) != space_id(new_addr),
90 "must move left or to a different space");
91 assert(is_object_aligned((intptr_t)old_addr) && is_object_aligned((intptr_t)new_addr),
92 "checking alignment");
93 }
94 #endif // ASSERT
95
96 inline bool PSParallelCompact::mark_obj(oop obj) {
97 const int obj_size = obj->size();
98 if (mark_bitmap()->mark_obj(obj, obj_size)) {
99 _summary_data.add_obj(obj, obj_size);
100 return true;
101 } else {
102 return false;
103 }
104 }
105
106 template <class T>
107 inline void PSParallelCompact::adjust_pointer(T* p, ParCompactionManager* cm) {
108 T heap_oop = oopDesc::load_heap_oop(p);
109 if (!oopDesc::is_null(heap_oop)) {
110 oop obj = oopDesc::decode_heap_oop_not_null(heap_oop);
111 assert(ParallelScavengeHeap::heap()->is_in(obj), "should be in heap");
|
71
72 inline HeapWord* PSParallelCompact::new_top(SpaceId id) {
73 assert(id < last_space_id, "id out of range");
74 return _space_info[id].new_top();
75 }
76
77 inline HeapWord* PSParallelCompact::dense_prefix(SpaceId id) {
78 assert(id < last_space_id, "id out of range");
79 return _space_info[id].dense_prefix();
80 }
81
82 inline ObjectStartArray* PSParallelCompact::start_array(SpaceId id) {
83 assert(id < last_space_id, "id out of range");
84 return _space_info[id].start_array();
85 }
86
87 #ifdef ASSERT
88 inline void PSParallelCompact::check_new_location(HeapWord* old_addr, HeapWord* new_addr) {
89 assert(old_addr >= new_addr || space_id(old_addr) != space_id(new_addr),
90 "must move left or to a different space");
91 assert(is_ptr_object_aligned(old_addr) && is_ptr_object_aligned(new_addr),
92 "checking alignment");
93 }
94 #endif // ASSERT
95
96 inline bool PSParallelCompact::mark_obj(oop obj) {
97 const int obj_size = obj->size();
98 if (mark_bitmap()->mark_obj(obj, obj_size)) {
99 _summary_data.add_obj(obj, obj_size);
100 return true;
101 } else {
102 return false;
103 }
104 }
105
106 template <class T>
107 inline void PSParallelCompact::adjust_pointer(T* p, ParCompactionManager* cm) {
108 T heap_oop = oopDesc::load_heap_oop(p);
109 if (!oopDesc::is_null(heap_oop)) {
110 oop obj = oopDesc::decode_heap_oop_not_null(heap_oop);
111 assert(ParallelScavengeHeap::heap()->is_in(obj), "should be in heap");
|