< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.inline.hpp

Print this page
@@ -366,23 +366,24 @@
    Raw::clone(src, dst, size);
  }
  
  template <DecoratorSet decorators, typename BarrierSetT>
  template <typename T>
- bool ShenandoahBarrierSet::AccessBarrier<decorators, BarrierSetT>::oop_arraycopy_in_heap(arrayOop src_obj, size_t src_offset_in_bytes, T* src_raw,
+ void ShenandoahBarrierSet::AccessBarrier<decorators, BarrierSetT>::oop_arraycopy_in_heap(arrayOop src_obj, size_t src_offset_in_bytes, T* src_raw,
                                                                                           arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw,
                                                                                           size_t length) {
    T* src = arrayOopDesc::obj_offset_to_raw(src_obj, src_offset_in_bytes, src_raw);
    T* dst = arrayOopDesc::obj_offset_to_raw(dst_obj, dst_offset_in_bytes, dst_raw);
  
    ShenandoahBarrierSet* bs = ShenandoahBarrierSet::barrier_set();
-   bs->arraycopy_barrier(src, dst, length);
-   bool result = Raw::oop_arraycopy_in_heap(src_obj, src_offset_in_bytes, src_raw, dst_obj, dst_offset_in_bytes, dst_raw, length);
+   bs->arraycopy_barrier(arrayOopDesc::obj_offset_to_raw(src_obj, src_offset_in_bytes, src_raw),
+                         arrayOopDesc::obj_offset_to_raw(dst_obj, dst_offset_in_bytes, dst_raw),
+                         length);
+   Raw::oop_arraycopy_in_heap(src_obj, src_offset_in_bytes, src_raw, dst_obj, dst_offset_in_bytes, dst_raw, length);
    if (ShenandoahCardBarrier) {
      bs->write_ref_array((HeapWord*) dst, length);
    }
-   return result;
  }
  
  template <class T, bool HAS_FWD, bool EVAC, bool ENQUEUE>
  void ShenandoahBarrierSet::arraycopy_work(T* src, size_t count) {
    // Young cycles are allowed to run when old marking is in progress. When old marking is in progress,
< prev index next >