52 };
53
54 class ShenandoahCodeRoots : public AllStatic {
55 friend class ShenandoahHeap;
56 friend class ShenandoahCodeRootsIterator;
57
58 public:
59 static void initialize();
60 static void register_nmethod(nmethod* nm);
61 static void unregister_nmethod(nmethod* nm);
62
63 static ShenandoahNMethodTable* table() {
64 return _nmethod_table;
65 }
66
67 // Concurrent nmethod unloading support
68 static void unlink(WorkerThreads* workers, bool unloading_occurred);
69 static void purge();
70 static void arm_nmethods();
71 static void disarm_nmethods();
72 static int disarmed_value() { return _disarmed_value; }
73 static int* disarmed_value_address() { return &_disarmed_value; }
74
75 private:
76 static ShenandoahNMethodTable* _nmethod_table;
77 static int _disarmed_value;
78 };
79
80 #endif // SHARE_GC_SHENANDOAH_SHENANDOAHCODEROOTS_HPP
|
52 };
53
54 class ShenandoahCodeRoots : public AllStatic {
55 friend class ShenandoahHeap;
56 friend class ShenandoahCodeRootsIterator;
57
58 public:
59 static void initialize();
60 static void register_nmethod(nmethod* nm);
61 static void unregister_nmethod(nmethod* nm);
62
63 static ShenandoahNMethodTable* table() {
64 return _nmethod_table;
65 }
66
67 // Concurrent nmethod unloading support
68 static void unlink(WorkerThreads* workers, bool unloading_occurred);
69 static void purge();
70 static void arm_nmethods();
71 static void disarm_nmethods();
72 static void check_barriers() NOT_DEBUG_RETURN;
73
74 static int disarmed_value() { return _disarmed_value; }
75 static int* disarmed_value_address() { return &_disarmed_value; }
76
77 private:
78 static ShenandoahNMethodTable* _nmethod_table;
79 static int _disarmed_value;
80 };
81
82 #endif // SHARE_GC_SHENANDOAH_SHENANDOAHCODEROOTS_HPP
|