--- 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