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

XMLWordPrintable

    • Type: Enhancement
    • Resolution: Unresolved
    • Priority: P4
    • tbd
    • Affects Version/s: 23
    • Component/s: 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.

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

              Created:
              Updated: