< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahFullGC.cpp

Print this page
*** 738,10 ***
--- 738,12 ---
      _heap(ShenandoahHeap::heap()),
      _ctx(ShenandoahHeap::heap()->complete_marking_context()) {}
  
    void do_oop(oop* p)       { do_oop_work(p); }
    void do_oop(narrowOop* p) { do_oop_work(p); }
+   void do_method(Method* m) {}
+   void do_nmethod(nmethod* nm) {}
  };
  
  class ShenandoahAdjustPointersObjectClosure : public ObjectClosure {
  private:
    ShenandoahHeap* const _heap;

*** 836,11 ***
      assert(_heap->complete_marking_context()->is_marked(p), "must be marked");
      size_t size = (size_t)p->size();
      if (p->is_forwarded()) {
        HeapWord* compact_from = cast_from_oop<HeapWord*>(p);
        HeapWord* compact_to = cast_from_oop<HeapWord*>(p->forwardee());
!       Copy::aligned_conjoint_words(compact_from, compact_to, size);
        oop new_obj = cast_to_oop(compact_to);
        new_obj->init_mark();
      }
    }
  };
--- 838,11 ---
      assert(_heap->complete_marking_context()->is_marked(p), "must be marked");
      size_t size = (size_t)p->size();
      if (p->is_forwarded()) {
        HeapWord* compact_from = cast_from_oop<HeapWord*>(p);
        HeapWord* compact_to = cast_from_oop<HeapWord*>(p->forwardee());
!       p->copy_conjoint(compact_to, size);
        oop new_obj = cast_to_oop(compact_to);
        new_obj->init_mark();
      }
    }
  };

*** 949,13 ***
        size_t new_start = heap->heap_region_index_containing(old_obj->forwardee());
        size_t new_end   = new_start + num_regions - 1;
        assert(old_start != new_start, "must be real move");
        assert(r->is_stw_move_allowed(), "Region " SIZE_FORMAT " should be movable", r->index());
  
!       Copy::aligned_conjoint_words(heap->get_region(old_start)->bottom(),
!                                    heap->get_region(new_start)->bottom(),
-                                    words_size);
  
        oop new_obj = cast_to_oop(heap->get_region(new_start)->bottom());
        new_obj->init_mark();
  
        {
--- 951,12 ---
        size_t new_start = heap->heap_region_index_containing(old_obj->forwardee());
        size_t new_end   = new_start + num_regions - 1;
        assert(old_start != new_start, "must be real move");
        assert(r->is_stw_move_allowed(), "Region " SIZE_FORMAT " should be movable", r->index());
  
!       old_obj->copy_conjoint(heap->get_region(new_start)->bottom(),
!                              words_size);
  
        oop new_obj = cast_to_oop(heap->get_region(new_start)->bottom());
        new_obj->init_mark();
  
        {
< prev index next >