Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8324318

Limited uses of evol_method dependencies from `nmethod::dependencies_begin`

XMLWordPrintable

    • Icon: Enhancement Enhancement
    • Resolution: Unresolved
    • Icon: P4 P4
    • tbd
    • 23
    • hotspot

      `nmethod::dependencies_begin()` is used in `Dependencies::DepStream(nmethod*)` which has the following uses
          - `nmethod::new_nmethod` for compiled Java method: It is used for `add_dependent_nmethod` methods. Evol_method dependencies are skipped.

          - `nmethod::flush_dependencies`: It is used for `clean_dependency_context` methods. Evol_method dependencies are skipped.

          - `nmethod::check_all_dependencies`: It is used in `CodeCache::mark_for_deoptimization(DeoptimizationScope*, KlassDepChange&)` in non-product builds when VerifyDependencies is on. All dependencies are checked.

          - `nmethod::check_dependency_on`: It is used in `DependencyContext::mark_dependent_nmethods`. Evol_method dependencies are ignored.

          - `nmethod::is_dependent_on_method`: It is used in `CodeCache::mark_for_deoptimization(DeoptimizationScope*, Method*)` which is used in `CodeCache::mark_dependents_on_method_for_breakpoint` which is used in `BreakpointInfo::set`. These are actual uses of evol_method dependencies.

         - `nmethod::print_dependencies_on`: It outputs nmethod's dependencies in non-product builds.

      From the uses we can see nmethod evol_method dependencies in nmethod's dependencies section are needed only when it is a non-product build or the JVMTI `can_generate_breakpoint_events` capability is requested.

            eastigeevich Evgeny Astigeevich
            eastigeevich Evgeny Astigeevich
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated: