105 _safepoint_counter(SafepointSynchronize::safepoint_counter()) {}
106
107 ~DependencyContext() {
108 assert(_safepoint_counter == SafepointSynchronize::safepoint_counter(), "safepoint happened");
109 }
110 #else
111 DependencyContext(nmethodBucket* volatile* bucket_addr, volatile uint64_t* last_cleanup_addr)
112 : _dependency_context_addr(bucket_addr),
113 _last_cleanup_addr(last_cleanup_addr) {}
114 #endif // ASSERT
115
116 static void init();
117
118 int mark_dependent_nmethods(DepChange& changes);
119 void add_dependent_nmethod(nmethod* nm);
120 void remove_dependent_nmethod(nmethod* nm);
121 int remove_all_dependents();
122 void clean_unloading_dependents();
123 static void purge_dependency_contexts();
124 static void release(nmethodBucket* b);
125 static void gc_prologue();
126 static void gc_epilogue();
127
128 #ifndef PRODUCT
129 void print_dependent_nmethods(bool verbose);
130 bool is_dependent_nmethod(nmethod* nm);
131 #endif //PRODUCT
132 };
133 #endif // SHARE_VM_CODE_DEPENDENCYCONTEXT_HPP
|
105 _safepoint_counter(SafepointSynchronize::safepoint_counter()) {}
106
107 ~DependencyContext() {
108 assert(_safepoint_counter == SafepointSynchronize::safepoint_counter(), "safepoint happened");
109 }
110 #else
111 DependencyContext(nmethodBucket* volatile* bucket_addr, volatile uint64_t* last_cleanup_addr)
112 : _dependency_context_addr(bucket_addr),
113 _last_cleanup_addr(last_cleanup_addr) {}
114 #endif // ASSERT
115
116 static void init();
117
118 int mark_dependent_nmethods(DepChange& changes);
119 void add_dependent_nmethod(nmethod* nm);
120 void remove_dependent_nmethod(nmethod* nm);
121 int remove_all_dependents();
122 void clean_unloading_dependents();
123 static void purge_dependency_contexts();
124 static void release(nmethodBucket* b);
125 static void cleaning_start();
126 static void cleaning_end();
127
128 #ifndef PRODUCT
129 void print_dependent_nmethods(bool verbose);
130 bool is_dependent_nmethod(nmethod* nm);
131 #endif //PRODUCT
132 };
133 #endif // SHARE_VM_CODE_DEPENDENCYCONTEXT_HPP
|