18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24 #ifndef SHARE_GC_SHENANDOAH_SHENANDOAHCLOSURES_HPP
25 #define SHARE_GC_SHENANDOAH_SHENANDOAHCLOSURES_HPP
26
27 #include "code/nmethod.hpp"
28 #include "memory/iterator.hpp"
29 #include "oops/accessDecorators.hpp"
30 #include "runtime/handshake.hpp"
31
32 class BarrierSetNMethod;
33 class ShenandoahBarrierSet;
34 class ShenandoahHeap;
35 class ShenandoahMarkingContext;
36 class ShenandoahHeapRegionSet;
37 class Thread;
38
39 class ShenandoahForwardedIsAliveClosure: public BoolObjectClosure {
40 private:
41 ShenandoahMarkingContext* const _mark_context;
42 public:
43 inline ShenandoahForwardedIsAliveClosure();
44 inline bool do_object_b(oop obj);
45 };
46
47 class ShenandoahIsAliveClosure: public BoolObjectClosure {
48 private:
49 ShenandoahMarkingContext* const _mark_context;
50 public:
51 inline ShenandoahIsAliveClosure();
52 inline bool do_object_b(oop obj);
53 };
54
55 class ShenandoahIsAliveSelector : public StackObj {
56 private:
57 ShenandoahIsAliveClosure _alive_cl;
|
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24 #ifndef SHARE_GC_SHENANDOAH_SHENANDOAHCLOSURES_HPP
25 #define SHARE_GC_SHENANDOAH_SHENANDOAHCLOSURES_HPP
26
27 #include "code/nmethod.hpp"
28 #include "memory/iterator.hpp"
29 #include "oops/accessDecorators.hpp"
30 #include "runtime/handshake.hpp"
31
32 class BarrierSetNMethod;
33 class ShenandoahBarrierSet;
34 class ShenandoahHeap;
35 class ShenandoahMarkingContext;
36 class ShenandoahHeapRegionSet;
37 class Thread;
38 class SATBMarkQueueSet;
39
40 class ShenandoahFlushSATBHandshakeClosure : public HandshakeClosure {
41 private:
42 SATBMarkQueueSet& _qset;
43 public:
44 inline explicit ShenandoahFlushSATBHandshakeClosure(SATBMarkQueueSet& qset);
45 inline void do_thread(Thread* thread) override;
46 };
47
48 class ShenandoahForwardedIsAliveClosure: public BoolObjectClosure {
49 private:
50 ShenandoahMarkingContext* const _mark_context;
51 public:
52 inline ShenandoahForwardedIsAliveClosure();
53 inline bool do_object_b(oop obj);
54 };
55
56 class ShenandoahIsAliveClosure: public BoolObjectClosure {
57 private:
58 ShenandoahMarkingContext* const _mark_context;
59 public:
60 inline ShenandoahIsAliveClosure();
61 inline bool do_object_b(oop obj);
62 };
63
64 class ShenandoahIsAliveSelector : public StackObj {
65 private:
66 ShenandoahIsAliveClosure _alive_cl;
|