682 ShenandoahEvacOOMHandler _oom_evac_handler;
683
684 void evacuate_and_update_roots();
685
686 public:
687 static address in_cset_fast_test_addr();
688
689 ShenandoahCollectionSet* collection_set() const { return _collection_set; }
690
691 // Checks if object is in the collection set.
692 inline bool in_collection_set(oop obj) const;
693
694 // Checks if location is in the collection set. Can be interior pointer, not the oop itself.
695 inline bool in_collection_set_loc(void* loc) const;
696
697 // Evacuates object src. Returns the evacuated object, either evacuated
698 // by this thread, or by some other thread.
699 inline oop evacuate_object(oop src, Thread* thread);
700
701 // Call before/after evacuation.
702 void enter_evacuation();
703 void leave_evacuation();
704
705 // ---------- Helper functions
706 //
707 public:
708 template <class T>
709 inline oop evac_update_with_forwarded(T* p);
710
711 template <class T>
712 inline oop maybe_update_with_forwarded(T* p);
713
714 template <class T>
715 inline oop maybe_update_with_forwarded_not_null(T* p, oop obj);
716
717 template <class T>
718 inline oop update_with_forwarded_not_null(T* p, oop obj);
719
720 static inline oop cas_oop(oop n, narrowOop* addr, oop c);
721 static inline oop cas_oop(oop n, oop* addr, oop c);
722 static inline oop cas_oop(oop n, narrowOop* addr, narrowOop c);
723
|
682 ShenandoahEvacOOMHandler _oom_evac_handler;
683
684 void evacuate_and_update_roots();
685
686 public:
687 static address in_cset_fast_test_addr();
688
689 ShenandoahCollectionSet* collection_set() const { return _collection_set; }
690
691 // Checks if object is in the collection set.
692 inline bool in_collection_set(oop obj) const;
693
694 // Checks if location is in the collection set. Can be interior pointer, not the oop itself.
695 inline bool in_collection_set_loc(void* loc) const;
696
697 // Evacuates object src. Returns the evacuated object, either evacuated
698 // by this thread, or by some other thread.
699 inline oop evacuate_object(oop src, Thread* thread);
700
701 // Call before/after evacuation.
702 inline void enter_evacuation(Thread* t);
703 inline void leave_evacuation(Thread* t);
704
705 // ---------- Helper functions
706 //
707 public:
708 template <class T>
709 inline oop evac_update_with_forwarded(T* p);
710
711 template <class T>
712 inline oop maybe_update_with_forwarded(T* p);
713
714 template <class T>
715 inline oop maybe_update_with_forwarded_not_null(T* p, oop obj);
716
717 template <class T>
718 inline oop update_with_forwarded_not_null(T* p, oop obj);
719
720 static inline oop cas_oop(oop n, narrowOop* addr, oop c);
721 static inline oop cas_oop(oop n, oop* addr, oop c);
722 static inline oop cas_oop(oop n, narrowOop* addr, narrowOop c);
723
|