< prev index next >
src/hotspot/share/code/codeCache.cpp
Print this page
rev 54621 : imported patch 8221734-v1
@@ -1135,22 +1135,11 @@
// stopped during the safepoint so CodeCache will be safe to update without
// holding the CodeCache_lock.
// At least one nmethod has been marked for deoptimization
- // All this already happens inside a VM_Operation, so we'll do all the work here.
- // Stuff copied from VM_Deoptimize and modified slightly.
-
- // We do not want any GCs to happen while we are in the middle of this VM operation
- ResourceMark rm;
- DeoptimizationMarker dm;
-
- // Deoptimize all activations depending on marked nmethods
- Deoptimization::deoptimize_dependents();
-
- // Make the dependent methods not entrant
- make_marked_nmethods_not_entrant();
+ Deoptimization::deoptimize_all_marked();
}
#endif // INCLUDE_JVMTI
// Deoptimize all methods
void CodeCache::mark_all_nmethods_for_deoptimization() {
@@ -1205,12 +1194,11 @@
KlassDepChange changes(dependee);
// Compute the dependent nmethods
if (mark_for_deoptimization(changes) > 0) {
// At least one nmethod has been marked for deoptimization
- VM_Deoptimize op;
- VMThread::execute(&op);
+ Deoptimization::deoptimize_all_marked();
}
}
// Flushes compiled methods dependent on dependee
void CodeCache::flush_dependents_on_method(const methodHandle& m_h) {
@@ -1221,24 +1209,11 @@
// stopped dring the safepoint so CodeCache will be safe to update without
// holding the CodeCache_lock.
// Compute the dependent nmethods
if (mark_for_deoptimization(m_h()) > 0) {
- // At least one nmethod has been marked for deoptimization
-
- // All this already happens inside a VM_Operation, so we'll do all the work here.
- // Stuff copied from VM_Deoptimize and modified slightly.
-
- // We do not want any GCs to happen while we are in the middle of this VM operation
- ResourceMark rm;
- DeoptimizationMarker dm;
-
- // Deoptimize all activations depending on marked nmethods
- Deoptimization::deoptimize_dependents();
-
- // Make the dependent methods not entrant
- make_marked_nmethods_not_entrant();
+ Deoptimization::deoptimize_all_marked();
}
}
void CodeCache::verify() {
assert_locked_or_safepoint(CodeCache_lock);
< prev index next >