src/share/vm/code/nmethod.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
JDK-7194669 Cdiff src/share/vm/code/nmethod.cpp
src/share/vm/code/nmethod.cpp
Print this page
*** 2159,2178 ****
return NULL;
}
}
! bool nmethod::check_all_dependencies() {
! bool found_check = false;
! // wholesale check of all dependencies
! for (Dependencies::DepStream deps(this); deps.next(); ) {
if (deps.check_dependency() != NULL) {
! found_check = true;
! NOT_DEBUG(break);
}
}
- return found_check; // tell caller if we found anything
}
bool nmethod::check_dependency_on(DepChange& changes) {
// What has happened:
// 1) a new class dependee has been added
--- 2159,2200 ----
return NULL;
}
}
! void nmethod::check_all_dependencies(DepChange& changes) {
! // Checked dependencies are allocated into this ResourceMark
! ResourceMark rm;
!
! // Turn off dependency tracing while actually testing dependencies.
! NOT_PRODUCT( FlagSetting fs(TraceDependencies, false) );
!
! // 'dep_signature_buffers' caches already checked dependencies.
! DependencySignatureBuffer dep_signature_buffers;
!
! // Iterate over live nmethods and check dependencies of all nmethods that are not
! // marked for deoptimization. A particular dependency is only checked once.
! for(nmethod* nm = CodeCache::alive_nmethod(CodeCache::first()); nm != NULL; nm = CodeCache::alive_nmethod(CodeCache::next(nm))) {
! if (!nm->is_marked_for_deoptimization()) {
! for (Dependencies::DepStream deps(nm); deps.next(); ) {
! // Construct abstraction of a dependency.
! DependencySignature current_sig(deps);
! // Determine if 'deps' is already checked. If it is not checked,
! // 'add_if_missing()' adds the dependency signature and returns
! // false.
! if (!dep_signature_buffers.add_if_missing(current_sig)) {
if (deps.check_dependency() != NULL) {
! ResourceMark rm;
! tty->print_cr("Should have been marked for deoptimization:");
! changes.print();
! nm->print();
! nm->print_dependencies();
! }
! }
! }
}
}
}
bool nmethod::check_dependency_on(DepChange& changes) {
// What has happened:
// 1) a new class dependee has been added
src/share/vm/code/nmethod.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File