Shenandoah deduplication cleans up table/queue twice

XMLWordPrintable

    • gc
    • b04

        In ShenandoahHeap::unload_classes_and_cleanup_tables(), Shenandoah cleans up various weakly held data structures during gc.

        The following code:

          {
            ShenandoahGCPhase phase(full_gc ?
                                    ShenandoahPhaseTimings::full_gc_purge_par :
                                    ShenandoahPhaseTimings::purge_par);
            uint active = _workers->active_workers();
            ParallelCleaningTask unlink_task(is_alive, active, purged_class, true);
            _workers->run_task(&unlink_task);
          }

          if (ShenandoahStringDedup::is_enabled()) {
            ShenandoahGCPhase phase(full_gc ?
                                    ShenandoahPhaseTimings::full_gc_purge_string_dedup :
                                    ShenandoahPhaseTimings::purge_string_dedup);
            ShenandoahStringDedup::parallel_cleanup();
          }

        does string deduplication twice, once during the ParallelCleaningTask and after that directly again.

              Assignee:
              Zhengyu Gu
              Reporter:
              Thomas Schatzl
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: