Merge
This commit is contained in:
commit
ad2e593b80
@ -34,7 +34,7 @@
|
|||||||
#include "libproc_md.h"
|
#include "libproc_md.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <linux/ptrace.h>
|
#include <sys/ptrace.h>
|
||||||
|
|
||||||
/************************************************************************************
|
/************************************************************************************
|
||||||
|
|
||||||
|
@ -475,7 +475,7 @@ MethodLivenessResult MethodLiveness::get_liveness_at(int entry_bci) {
|
|||||||
bci = 0;
|
bci = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
MethodLivenessResult answer((uintptr_t*)NULL,0);
|
MethodLivenessResult answer((BitMap::bm_word_t*)NULL,0);
|
||||||
|
|
||||||
if (_block_count > 0) {
|
if (_block_count > 0) {
|
||||||
if (TimeLivenessAnalysis) _time_total.start();
|
if (TimeLivenessAnalysis) _time_total.start();
|
||||||
@ -1000,7 +1000,7 @@ bool MethodLiveness::BasicBlock::merge_exception(BitMap other) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
MethodLivenessResult MethodLiveness::BasicBlock::get_liveness_at(ciMethod* method, int bci) {
|
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());
|
_analyzer->bit_map_size_bits());
|
||||||
answer.set_is_valid();
|
answer.set_is_valid();
|
||||||
|
|
||||||
|
@ -127,7 +127,7 @@ bool CMBitMap::allocate(ReservedSpace heap_rs) {
|
|||||||
}
|
}
|
||||||
assert(_virtual_space.committed_size() == brs.size(),
|
assert(_virtual_space.committed_size() == brs.size(),
|
||||||
"didn't reserve backing store for all of concurrent marking bit map?");
|
"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) >=
|
assert(_virtual_space.committed_size() << (_shifter + LogBitsPerByte) >=
|
||||||
_bmWordSize, "inconsistency in bit map sizing");
|
_bmWordSize, "inconsistency in bit map sizing");
|
||||||
_bm.set_size(_bmWordSize >> _shifter);
|
_bm.set_size(_bmWordSize >> _shifter);
|
||||||
|
@ -433,14 +433,6 @@ HeapRegion* G1CollectedHeap::pop_dirty_cards_region()
|
|||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void G1CollectedHeap::stop_conc_gc_threads() {
|
|
||||||
_cg1r->stop();
|
|
||||||
_cmThread->stop();
|
|
||||||
if (G1StringDedup::is_enabled()) {
|
|
||||||
G1StringDedup::stop();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef ASSERT
|
#ifdef ASSERT
|
||||||
// A region is added to the collection set as it is retired
|
// 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
|
// so an address p can point to a region which will be in the
|
||||||
@ -2174,20 +2166,14 @@ jint G1CollectedHeap::initialize() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void G1CollectedHeap::stop() {
|
void G1CollectedHeap::stop() {
|
||||||
#if 0
|
// Stop all concurrent threads. We do this to make sure these threads
|
||||||
// Stopping concurrent worker threads is currently disabled until
|
// do not continue to execute and access resources (e.g. gclog_or_tty)
|
||||||
// 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)
|
|
||||||
// that are destroyed during shutdown.
|
// that are destroyed during shutdown.
|
||||||
_cm->root_regions()->abort();
|
_cg1r->stop();
|
||||||
_cm->root_regions()->wait_until_scan_finished();
|
_cmThread->stop();
|
||||||
stop_conc_gc_threads();
|
if (G1StringDedup::is_enabled()) {
|
||||||
#endif
|
G1StringDedup::stop();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t G1CollectedHeap::conservative_max_heap_alignment() {
|
size_t G1CollectedHeap::conservative_max_heap_alignment() {
|
||||||
|
@ -1684,8 +1684,6 @@ public:
|
|||||||
void print_all_rsets() PRODUCT_RETURN;
|
void print_all_rsets() PRODUCT_RETURN;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void stop_conc_gc_threads();
|
|
||||||
|
|
||||||
size_t pending_card_num();
|
size_t pending_card_num();
|
||||||
size_t cards_scanned();
|
size_t cards_scanned();
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ ParMarkBitMap::initialize(MemRegion covered_region)
|
|||||||
if (_virtual_space != NULL && _virtual_space->expand_by(_reserved_byte_size)) {
|
if (_virtual_space != NULL && _virtual_space->expand_by(_reserved_byte_size)) {
|
||||||
_region_start = covered_region.start();
|
_region_start = covered_region.start();
|
||||||
_region_size = covered_region.word_size();
|
_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_map(map);
|
||||||
_beg_bits.set_size(bits / 2);
|
_beg_bits.set_size(bits / 2);
|
||||||
_end_bits.set_map(map + words / 2);
|
_end_bits.set_map(map + words / 2);
|
||||||
|
@ -2453,6 +2453,8 @@ bool Arguments::check_vm_args_consistency() {
|
|||||||
warning("The VM option CICompilerCountPerCPU overrides CICompilerCount.");
|
warning("The VM option CICompilerCountPerCPU overrides CICompilerCount.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
status &= check_vm_args_consistency_ext();
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -462,6 +462,7 @@ class Arguments : AllStatic {
|
|||||||
static void check_deprecated_gc_flags();
|
static void check_deprecated_gc_flags();
|
||||||
// Check consistency or otherwise of VM argument settings
|
// Check consistency or otherwise of VM argument settings
|
||||||
static bool check_vm_args_consistency();
|
static bool check_vm_args_consistency();
|
||||||
|
static bool check_vm_args_consistency_ext();
|
||||||
// Check stack pages settings
|
// Check stack pages settings
|
||||||
static bool check_stack_pages();
|
static bool check_stack_pages();
|
||||||
// Used by os_solaris
|
// Used by os_solaris
|
||||||
|
30
hotspot/src/share/vm/runtime/arguments_ext.cpp
Normal file
30
hotspot/src/share/vm/runtime/arguments_ext.cpp
Normal file
@ -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;
|
||||||
|
}
|
@ -501,9 +501,6 @@ void before_exit(JavaThread * thread) {
|
|||||||
os::infinite_sleep();
|
os::infinite_sleep();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Stop any ongoing concurrent GC work
|
|
||||||
Universe::heap()->stop();
|
|
||||||
|
|
||||||
// Terminate watcher thread - must before disenrolling any periodic task
|
// Terminate watcher thread - must before disenrolling any periodic task
|
||||||
if (PeriodicTask::num_tasks() > 0)
|
if (PeriodicTask::num_tasks() > 0)
|
||||||
WatcherThread::stop();
|
WatcherThread::stop();
|
||||||
@ -518,10 +515,8 @@ void before_exit(JavaThread * thread) {
|
|||||||
StatSampler::disengage();
|
StatSampler::disengage();
|
||||||
StatSampler::destroy();
|
StatSampler::destroy();
|
||||||
|
|
||||||
// We do not need to explicitly stop concurrent GC threads because the
|
// Stop concurrent GC threads
|
||||||
// JVM will be taken down at a safepoint when such threads are inactive --
|
Universe::heap()->stop();
|
||||||
// except for some concurrent G1 threads, see (comment in)
|
|
||||||
// Threads::destroy_vm().
|
|
||||||
|
|
||||||
// Print GC/heap related information.
|
// Print GC/heap related information.
|
||||||
if (PrintGCDetails) {
|
if (PrintGCDetails) {
|
||||||
|
@ -3933,14 +3933,8 @@ bool Threads::destroy_vm() {
|
|||||||
// GC vm_operations can get caught at the safepoint, and the
|
// GC vm_operations can get caught at the safepoint, and the
|
||||||
// heap is unparseable if they are caught. Grab the Heap_lock
|
// heap is unparseable if they are caught. Grab the Heap_lock
|
||||||
// to prevent this. The GC vm_operations will not be able to
|
// to prevent this. The GC vm_operations will not be able to
|
||||||
// queue until after the vm thread is dead.
|
// queue until after the vm thread is dead. After this point,
|
||||||
// After this point, we'll never emerge out of the safepoint before
|
// we'll never emerge out of the safepoint before the VM exits.
|
||||||
// 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.
|
|
||||||
|
|
||||||
MutexLocker ml(Heap_lock);
|
MutexLocker ml(Heap_lock);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user