8215549: Shenandoah deduplication cleans up table/queue twice
authorzgu
Mon, 14 Jan 2019 12:51:45 -0500
changeset 53276 72fdf46a274e
parent 53275 f5e601ad26a8
child 53277 b002e4ee60b0
8215549: Shenandoah deduplication cleans up table/queue twice Reviewed-by: rkennke
src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp
src/hotspot/share/gc/shenandoah/shenandoahPhaseTimings.hpp
src/hotspot/share/gc/shenandoah/shenandoahStringDedup.cpp
src/hotspot/share/gc/shenandoah/shenandoahStringDedup.hpp
--- a/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp	Mon Jan 14 12:24:25 2019 -0500
+++ b/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp	Mon Jan 14 12:51:45 2019 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2018, Red Hat, Inc. All rights reserved.
+ * Copyright (c) 2013, 2019, Red Hat, Inc. All rights reserved.
  *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
@@ -1930,13 +1930,6 @@
     _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();
-  }
-
   {
     ShenandoahGCPhase phase(full_gc ?
                       ShenandoahPhaseTimings::full_gc_purge_cldg :
--- a/src/hotspot/share/gc/shenandoah/shenandoahPhaseTimings.hpp	Mon Jan 14 12:24:25 2019 -0500
+++ b/src/hotspot/share/gc/shenandoah/shenandoahPhaseTimings.hpp	Mon Jan 14 12:51:45 2019 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017, 2018, Red Hat, Inc. All rights reserved.
+ * Copyright (c) 2017, 2019, Red Hat, Inc. All rights reserved.
  *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
@@ -89,7 +89,6 @@
   f(purge_class_unload,                             "    Unload Classes")               \
   f(purge_par,                                      "    Parallel Cleanup")             \
   f(purge_cldg,                                     "    CLDG")                         \
-  f(purge_string_dedup,                             "    String Dedup")                 \
   f(complete_liveness,                              "  Complete Liveness")              \
   f(prepare_evac,                                   "  Prepare Evacuation")             \
   f(recycle_regions,                                "  Recycle regions")                \
@@ -255,7 +254,6 @@
   f(full_gc_purge_class_unload,                      "      Unload Classes")            \
   f(full_gc_purge_par,                               "    Parallel Cleanup")            \
   f(full_gc_purge_cldg,                              "    CLDG")                        \
-  f(full_gc_purge_string_dedup,                      "    String Dedup")                \
   f(full_gc_calculate_addresses,                     "  Calculate Addresses")           \
   f(full_gc_calculate_addresses_regular,             "    Regular Objects")             \
   f(full_gc_calculate_addresses_humong,              "    Humongous Objects")           \
--- a/src/hotspot/share/gc/shenandoah/shenandoahStringDedup.cpp	Mon Jan 14 12:24:25 2019 -0500
+++ b/src/hotspot/share/gc/shenandoah/shenandoahStringDedup.cpp	Mon Jan 14 12:51:45 2019 -0500
@@ -113,14 +113,6 @@
   }
 };
 
-void ShenandoahStringDedup::parallel_cleanup() {
-  assert(SafepointSynchronize::is_at_safepoint(), "Must be at a safepoint");
-  log_debug(gc, stringdedup)("String dedup cleanup");
-  ShenandoahIsMarkedNextClosure cl;
-
-  unlink_or_oops_do(&cl, NULL, true);
-}
-
 //
 // Task for parallel unlink_or_oops_do() operation on the deduplication queue
 // and table.
--- a/src/hotspot/share/gc/shenandoah/shenandoahStringDedup.hpp	Mon Jan 14 12:24:25 2019 -0500
+++ b/src/hotspot/share/gc/shenandoah/shenandoahStringDedup.hpp	Mon Jan 14 12:51:45 2019 -0500
@@ -42,9 +42,6 @@
   static void parallel_oops_do(OopClosure* cl, uint worker_id);
   static void oops_do_slow(OopClosure* cl);
 
-  // Parallel cleanup string dedup queues/table
-  static void parallel_cleanup();
-
   static inline bool is_candidate(oop obj) {
     return java_lang_String::is_instance_inlined(obj) &&
            java_lang_String::value(obj) != NULL;