21 * questions.
22 *
23 */
24
25 #include "precompiled.hpp"
26 #include "gc/shared/gcId.hpp"
27 #include "runtime/safepoint.hpp"
28 #include "runtime/thread.inline.hpp"
29
30 uint GCId::_next_id = 0;
31
32 NamedThread* currentNamedthread() {
33 assert(Thread::current()->is_Named_thread(), "This thread must be NamedThread");
34 return (NamedThread*)Thread::current();
35 }
36
37 const uint GCId::create() {
38 return _next_id++;
39 }
40
41 const uint GCId::current() {
42 assert(currentNamedthread()->gc_id() != undefined(), "Using undefined GC id.");
43 return current_raw();
44 }
45
46 const uint GCId::current_raw() {
47 return currentNamedthread()->gc_id();
48 }
49
50 GCIdMark::GCIdMark() : _gc_id(GCId::create()) {
51 currentNamedthread()->set_gc_id(_gc_id);
52 }
53
54 GCIdMark::GCIdMark(uint gc_id) : _gc_id(gc_id) {
55 currentNamedthread()->set_gc_id(_gc_id);
56 }
57
58 GCIdMark::~GCIdMark() {
59 currentNamedthread()->set_gc_id(GCId::undefined());
60 }
|
21 * questions.
22 *
23 */
24
25 #include "precompiled.hpp"
26 #include "gc/shared/gcId.hpp"
27 #include "runtime/safepoint.hpp"
28 #include "runtime/thread.inline.hpp"
29
30 uint GCId::_next_id = 0;
31
32 NamedThread* currentNamedthread() {
33 assert(Thread::current()->is_Named_thread(), "This thread must be NamedThread");
34 return (NamedThread*)Thread::current();
35 }
36
37 const uint GCId::create() {
38 return _next_id++;
39 }
40
41 const uint GCId::peek() {
42 return _next_id;
43 }
44
45 const uint GCId::current() {
46 assert(currentNamedthread()->gc_id() != undefined(), "Using undefined GC id.");
47 return current_raw();
48 }
49
50 const uint GCId::current_raw() {
51 return currentNamedthread()->gc_id();
52 }
53
54 GCIdMark::GCIdMark() : _gc_id(GCId::create()) {
55 currentNamedthread()->set_gc_id(_gc_id);
56 }
57
58 GCIdMark::GCIdMark(uint gc_id) : _gc_id(gc_id) {
59 currentNamedthread()->set_gc_id(_gc_id);
60 }
61
62 GCIdMark::~GCIdMark() {
63 currentNamedthread()->set_gc_id(GCId::undefined());
64 }
|