8170468: Convert ParallelCompact_test to GTest
authorkzhaldyb
Sat, 03 Dec 2016 12:48:22 +0300
changeset 42638 793e65ba88aa
parent 42637 a9b83a4de25b
child 42639 762117d57d05
8170468: Convert ParallelCompact_test to GTest Reviewed-by: dfazunen, iignatyev
hotspot/src/share/vm/gc/parallel/psParallelCompact.cpp
hotspot/src/share/vm/gc/parallel/psParallelCompact.hpp
hotspot/src/share/vm/utilities/internalVMTests.cpp
hotspot/test/native/gc/parallel/test_psParallelCompact.cpp
--- a/hotspot/src/share/vm/gc/parallel/psParallelCompact.cpp	Thu Dec 01 12:09:02 2016 +0300
+++ b/hotspot/src/share/vm/gc/parallel/psParallelCompact.cpp	Sat Dec 03 12:48:22 2016 +0300
@@ -263,6 +263,13 @@
 }
 
 void
+PSParallelCompact::print_generic_summary_data(ParallelCompactData& summary_data,
+                                              HeapWord* const beg_addr,
+                                              HeapWord* const end_addr) {
+  ::print_generic_summary_data(summary_data,beg_addr, end_addr);
+}
+
+void
 print_generic_summary_data(ParallelCompactData& summary_data,
                            SpaceInfo* space_info)
 {
@@ -377,26 +384,6 @@
     print_generic_summary_data(summary_data, space->bottom(), space->top());
   } while (++id < PSParallelCompact::last_space_id);
 }
-
-void ParallelCompact_test() {
-  if (!UseParallelOldGC) {
-    return;
-  }
-  // Check that print_generic_summary_data() does not print the
-  // end region by placing a bad value in the destination of the
-  // end region.  The end region should not be printed because it
-  // corresponds to the space after the end of the heap.
-  ParallelScavengeHeap* heap = ParallelScavengeHeap::heap();
-  ParCompactionManager* const vmthread_cm =
-    ParCompactionManager::manager_array(ParallelGCThreads);
-  HeapWord* begin_heap =
-    (HeapWord*) heap->old_gen()->virtual_space()->low_boundary();
-  HeapWord* end_heap =
-    (HeapWord*) heap->young_gen()->virtual_space()->high_boundary();
-
-  print_generic_summary_data(PSParallelCompact::summary_data(),
-    begin_heap, end_heap);
-}
 #endif  // #ifndef PRODUCT
 
 #ifdef  ASSERT
--- a/hotspot/src/share/vm/gc/parallel/psParallelCompact.hpp	Thu Dec 01 12:09:02 2016 +0300
+++ b/hotspot/src/share/vm/gc/parallel/psParallelCompact.hpp	Sat Dec 03 12:48:22 2016 +0300
@@ -965,6 +965,7 @@
   friend class AdjustPointerClosure;
   friend class AdjustKlassClosure;
   friend class RefProcTaskProxy;
+  friend class PSParallelCompactTest;
 
  private:
   static STWGCTimer           _gc_timer;
@@ -1101,6 +1102,13 @@
   // Reset time since last full gc
   static void reset_millis_since_last_gc();
 
+#ifndef PRODUCT
+  // Print generic summary data
+  static void print_generic_summary_data(ParallelCompactData& summary_data,
+                                         HeapWord* const beg_addr,
+                                         HeapWord* const end_addr);
+#endif  // #ifndef PRODUCT
+
  public:
 
   PSParallelCompact();
--- a/hotspot/src/share/vm/utilities/internalVMTests.cpp	Thu Dec 01 12:09:02 2016 +0300
+++ b/hotspot/src/share/vm/utilities/internalVMTests.cpp	Sat Dec 03 12:48:22 2016 +0300
@@ -53,9 +53,6 @@
 #if INCLUDE_VM_STRUCTS
   run_unit_test(VMStructs_test);
 #endif
-#if INCLUDE_ALL_GCS
-  run_unit_test(ParallelCompact_test);
-#endif
   tty->print_cr("All internal VM tests passed");
 }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/native/gc/parallel/test_psParallelCompact.cpp	Sat Dec 03 12:48:22 2016 +0300
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * 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
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+#include "precompiled.hpp"
+#include "gc/parallel/psParallelCompact.hpp"
+#include "gc/parallel/psCompactionManager.inline.hpp"
+#include "unittest.hpp"
+
+#ifndef PRODUCT
+
+class PSParallelCompactTest : public ::testing::Test {
+ public:
+  static void print_generic_summary_data(ParallelCompactData& summary_data,
+                                         HeapWord* const beg_addr,
+                                         HeapWord* const end_addr) {
+    PSParallelCompact::print_generic_summary_data(summary_data,
+                                                  beg_addr, end_addr);
+  }
+};
+
+// @requires UseParallelGC
+TEST_VM(PSParallelCompact, print_generic_summary_data) {
+  if (!UseParallelOldGC) {
+    return;
+  }
+  // Check that print_generic_summary_data() does not print the
+  // end region by placing a bad value in the destination of the
+  // end region.  The end region should not be printed because it
+  // corresponds to the space after the end of the heap.
+  ParallelScavengeHeap* heap = ParallelScavengeHeap::heap();
+  ParCompactionManager* const vmthread_cm =
+    ParCompactionManager::manager_array(ParallelGCThreads);
+  HeapWord* begin_heap =
+    (HeapWord*) heap->old_gen()->virtual_space()->low_boundary();
+  HeapWord* end_heap =
+    (HeapWord*) heap->young_gen()->virtual_space()->high_boundary();
+
+  PSParallelCompactTest::print_generic_summary_data(PSParallelCompact::summary_data(),
+    begin_heap, end_heap);
+}
+
+#endif