--- a/hotspot/agent/src/os/linux/libproc.h Tue Jun 17 11:18:10 2014 -0700
+++ b/hotspot/agent/src/os/linux/libproc.h Wed Jun 18 12:39:57 2014 -0700
@@ -34,7 +34,7 @@
#include "libproc_md.h"
#endif
-#include <linux/ptrace.h>
+#include <sys/ptrace.h>
/************************************************************************************
--- a/hotspot/src/share/vm/compiler/methodLiveness.cpp Tue Jun 17 11:18:10 2014 -0700
+++ b/hotspot/src/share/vm/compiler/methodLiveness.cpp Wed Jun 18 12:39:57 2014 -0700
@@ -475,7 +475,7 @@
bci = 0;
}
- MethodLivenessResult answer((uintptr_t*)NULL,0);
+ MethodLivenessResult answer((BitMap::bm_word_t*)NULL,0);
if (_block_count > 0) {
if (TimeLivenessAnalysis) _time_total.start();
@@ -1000,7 +1000,7 @@
}
MethodLivenessResult MethodLiveness::BasicBlock::get_liveness_at(ciMethod* method, int bci) {
- MethodLivenessResult answer(NEW_RESOURCE_ARRAY(uintptr_t, _analyzer->bit_map_size_words()),
+ MethodLivenessResult answer(NEW_RESOURCE_ARRAY(BitMap::bm_word_t, _analyzer->bit_map_size_words()),
_analyzer->bit_map_size_bits());
answer.set_is_valid();
--- a/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp Tue Jun 17 11:18:10 2014 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp Wed Jun 18 12:39:57 2014 -0700
@@ -127,7 +127,7 @@
}
assert(_virtual_space.committed_size() == brs.size(),
"didn't reserve backing store for all of concurrent marking bit map?");
- _bm.set_map((uintptr_t*)_virtual_space.low());
+ _bm.set_map((BitMap::bm_word_t*)_virtual_space.low());
assert(_virtual_space.committed_size() << (_shifter + LogBitsPerByte) >=
_bmWordSize, "inconsistency in bit map sizing");
_bm.set_size(_bmWordSize >> _shifter);
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Tue Jun 17 11:18:10 2014 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Wed Jun 18 12:39:57 2014 -0700
@@ -433,14 +433,6 @@
return hr;
}
-void G1CollectedHeap::stop_conc_gc_threads() {
- _cg1r->stop();
- _cmThread->stop();
- if (G1StringDedup::is_enabled()) {
- G1StringDedup::stop();
- }
-}
-
#ifdef ASSERT
// A region is added to the collection set as it is retired
// so an address p can point to a region which will be in the
@@ -2174,20 +2166,14 @@
}
void G1CollectedHeap::stop() {
-#if 0
- // Stopping concurrent worker threads is currently disabled until
- // some bugs in concurrent mark has been resolve. Without fixing
- // those bugs first we risk haning during VM exit when trying to
- // stop these threads.
-
- // Abort any ongoing concurrent root region scanning and stop all
- // concurrent threads. We do this to make sure these threads do
- // not continue to execute and access resources (e.g. gclog_or_tty)
+ // Stop all concurrent threads. We do this to make sure these threads
+ // do not continue to execute and access resources (e.g. gclog_or_tty)
// that are destroyed during shutdown.
- _cm->root_regions()->abort();
- _cm->root_regions()->wait_until_scan_finished();
- stop_conc_gc_threads();
-#endif
+ _cg1r->stop();
+ _cmThread->stop();
+ if (G1StringDedup::is_enabled()) {
+ G1StringDedup::stop();
+ }
}
size_t G1CollectedHeap::conservative_max_heap_alignment() {
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp Tue Jun 17 11:18:10 2014 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp Wed Jun 18 12:39:57 2014 -0700
@@ -1684,8 +1684,6 @@
void print_all_rsets() PRODUCT_RETURN;
public:
- void stop_conc_gc_threads();
-
size_t pending_card_num();
size_t cards_scanned();
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.cpp Tue Jun 17 11:18:10 2014 -0700
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.cpp Wed Jun 18 12:39:57 2014 -0700
@@ -71,7 +71,7 @@
if (_virtual_space != NULL && _virtual_space->expand_by(_reserved_byte_size)) {
_region_start = covered_region.start();
_region_size = covered_region.word_size();
- idx_t* map = (idx_t*)_virtual_space->reserved_low_addr();
+ BitMap::bm_word_t* map = (BitMap::bm_word_t*)_virtual_space->reserved_low_addr();
_beg_bits.set_map(map);
_beg_bits.set_size(bits / 2);
_end_bits.set_map(map + words / 2);
--- a/hotspot/src/share/vm/runtime/arguments.cpp Tue Jun 17 11:18:10 2014 -0700
+++ b/hotspot/src/share/vm/runtime/arguments.cpp Wed Jun 18 12:39:57 2014 -0700
@@ -2453,6 +2453,8 @@
warning("The VM option CICompilerCountPerCPU overrides CICompilerCount.");
}
+ status &= check_vm_args_consistency_ext();
+
return status;
}
--- a/hotspot/src/share/vm/runtime/arguments.hpp Tue Jun 17 11:18:10 2014 -0700
+++ b/hotspot/src/share/vm/runtime/arguments.hpp Wed Jun 18 12:39:57 2014 -0700
@@ -462,6 +462,7 @@
static void check_deprecated_gc_flags();
// Check consistency or otherwise of VM argument settings
static bool check_vm_args_consistency();
+ static bool check_vm_args_consistency_ext();
// Check stack pages settings
static bool check_stack_pages();
// Used by os_solaris
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/src/share/vm/runtime/arguments_ext.cpp Wed Jun 18 12:39:57 2014 -0700
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2014, 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 "runtime/arguments.hpp"
+
+bool Arguments::check_vm_args_consistency_ext() {
+ return true;
+}
--- a/hotspot/src/share/vm/runtime/java.cpp Tue Jun 17 11:18:10 2014 -0700
+++ b/hotspot/src/share/vm/runtime/java.cpp Wed Jun 18 12:39:57 2014 -0700
@@ -501,9 +501,6 @@
os::infinite_sleep();
}
- // Stop any ongoing concurrent GC work
- Universe::heap()->stop();
-
// Terminate watcher thread - must before disenrolling any periodic task
if (PeriodicTask::num_tasks() > 0)
WatcherThread::stop();
@@ -518,10 +515,8 @@
StatSampler::disengage();
StatSampler::destroy();
- // We do not need to explicitly stop concurrent GC threads because the
- // JVM will be taken down at a safepoint when such threads are inactive --
- // except for some concurrent G1 threads, see (comment in)
- // Threads::destroy_vm().
+ // Stop concurrent GC threads
+ Universe::heap()->stop();
// Print GC/heap related information.
if (PrintGCDetails) {
--- a/hotspot/src/share/vm/runtime/thread.cpp Tue Jun 17 11:18:10 2014 -0700
+++ b/hotspot/src/share/vm/runtime/thread.cpp Wed Jun 18 12:39:57 2014 -0700
@@ -3933,14 +3933,8 @@
// GC vm_operations can get caught at the safepoint, and the
// heap is unparseable if they are caught. Grab the Heap_lock
// to prevent this. The GC vm_operations will not be able to
- // queue until after the vm thread is dead.
- // After this point, we'll never emerge out of the safepoint before
- // the VM exits, so concurrent GC threads do not need to be explicitly
- // stopped; they remain inactive until the process exits.
- // Note: some concurrent G1 threads may be running during a safepoint,
- // but these will not be accessing the heap, just some G1-specific side
- // data structures that are not accessed by any other threads but them
- // after this point in a terminal safepoint.
+ // queue until after the vm thread is dead. After this point,
+ // we'll never emerge out of the safepoint before the VM exits.
MutexLocker ml(Heap_lock);