22 *
23 */
24
25 #ifndef SHARE_VM_GC_SHARED_GCID_HPP
26 #define SHARE_VM_GC_SHARED_GCID_HPP
27
28 #include "memory/allocation.hpp"
29
30 class GCId : public AllStatic {
31 friend class GCIdMark;
32 friend class GCIdMarkAndRestore;
33 static uint _next_id;
34 static const uint UNDEFINED = (uint)-1;
35 static const uint create();
36
37 public:
38 // Returns the currently active GC id. Asserts that there is an active GC id.
39 static const uint current();
40 // Same as current() but can return undefined() if no GC id is currently active
41 static const uint current_raw();
42 static const uint undefined() { return UNDEFINED; }
43 };
44
45 class GCIdMark : public StackObj {
46 uint _gc_id;
47 public:
48 GCIdMark();
49 GCIdMark(uint gc_id);
50 ~GCIdMark();
51 };
52
53 class GCIdMarkAndRestore : public StackObj {
54 uint _gc_id;
55 uint _previous_gc_id;
56 public:
57 GCIdMarkAndRestore();
58 GCIdMarkAndRestore(uint gc_id);
59 ~GCIdMarkAndRestore();
60 };
61
|
22 *
23 */
24
25 #ifndef SHARE_VM_GC_SHARED_GCID_HPP
26 #define SHARE_VM_GC_SHARED_GCID_HPP
27
28 #include "memory/allocation.hpp"
29
30 class GCId : public AllStatic {
31 friend class GCIdMark;
32 friend class GCIdMarkAndRestore;
33 static uint _next_id;
34 static const uint UNDEFINED = (uint)-1;
35 static const uint create();
36
37 public:
38 // Returns the currently active GC id. Asserts that there is an active GC id.
39 static const uint current();
40 // Same as current() but can return undefined() if no GC id is currently active
41 static const uint current_raw();
42 // Returns the next expected GCId.
43 static const uint peek();
44 static const uint undefined() { return UNDEFINED; }
45 };
46
47 class GCIdMark : public StackObj {
48 uint _gc_id;
49 public:
50 GCIdMark();
51 GCIdMark(uint gc_id);
52 ~GCIdMark();
53 };
54
55 class GCIdMarkAndRestore : public StackObj {
56 uint _gc_id;
57 uint _previous_gc_id;
58 public:
59 GCIdMarkAndRestore();
60 GCIdMarkAndRestore(uint gc_id);
61 ~GCIdMarkAndRestore();
62 };
63
|