Merge
This commit is contained in:
commit
2234bb04a7
@ -971,8 +971,6 @@ size_t CodeCache::largest_free_block() {
|
|||||||
if (CodeCache_lock->owned_by_self()) {
|
if (CodeCache_lock->owned_by_self()) {
|
||||||
return _heap->largest_free_block();
|
return _heap->largest_free_block();
|
||||||
} else {
|
} else {
|
||||||
// Avoid lock ordering problems with ttyLock.
|
|
||||||
ttyUnlocker ttyul;
|
|
||||||
MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
|
MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
|
||||||
return _heap->largest_free_block();
|
return _heap->largest_free_block();
|
||||||
}
|
}
|
||||||
|
@ -1736,8 +1736,14 @@ void CompileBroker::handle_full_code_cache() {
|
|||||||
UseInterpreter = true;
|
UseInterpreter = true;
|
||||||
if (UseCompiler || AlwaysCompileLoopMethods ) {
|
if (UseCompiler || AlwaysCompileLoopMethods ) {
|
||||||
if (xtty != NULL) {
|
if (xtty != NULL) {
|
||||||
|
stringStream s;
|
||||||
|
// Dump code cache state into a buffer before locking the tty,
|
||||||
|
// because log_state() will use locks causing lock conflicts.
|
||||||
|
CodeCache::log_state(&s);
|
||||||
|
// Lock to prevent tearing
|
||||||
|
ttyLocker ttyl;
|
||||||
xtty->begin_elem("code_cache_full");
|
xtty->begin_elem("code_cache_full");
|
||||||
CodeCache::log_state(xtty);
|
xtty->print(s.as_string());
|
||||||
xtty->stamp();
|
xtty->stamp();
|
||||||
xtty->end_elem();
|
xtty->end_elem();
|
||||||
}
|
}
|
||||||
|
@ -418,6 +418,11 @@ void NMethodSweeper::speculative_disconnect_nmethods(bool is_full) {
|
|||||||
// state of the code cache if it's requested.
|
// state of the code cache if it's requested.
|
||||||
void NMethodSweeper::log_sweep(const char* msg, const char* format, ...) {
|
void NMethodSweeper::log_sweep(const char* msg, const char* format, ...) {
|
||||||
if (PrintMethodFlushing) {
|
if (PrintMethodFlushing) {
|
||||||
|
stringStream s;
|
||||||
|
// Dump code cache state into a buffer before locking the tty,
|
||||||
|
// because log_state() will use locks causing lock conflicts.
|
||||||
|
CodeCache::log_state(&s);
|
||||||
|
|
||||||
ttyLocker ttyl;
|
ttyLocker ttyl;
|
||||||
tty->print("### sweeper: %s ", msg);
|
tty->print("### sweeper: %s ", msg);
|
||||||
if (format != NULL) {
|
if (format != NULL) {
|
||||||
@ -426,10 +431,15 @@ void NMethodSweeper::log_sweep(const char* msg, const char* format, ...) {
|
|||||||
tty->vprint(format, ap);
|
tty->vprint(format, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
}
|
}
|
||||||
CodeCache::log_state(tty); tty->cr();
|
tty->print_cr(s.as_string());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (LogCompilation && (xtty != NULL)) {
|
if (LogCompilation && (xtty != NULL)) {
|
||||||
|
stringStream s;
|
||||||
|
// Dump code cache state into a buffer before locking the tty,
|
||||||
|
// because log_state() will use locks causing lock conflicts.
|
||||||
|
CodeCache::log_state(&s);
|
||||||
|
|
||||||
ttyLocker ttyl;
|
ttyLocker ttyl;
|
||||||
xtty->begin_elem("sweeper state='%s' traversals='" INTX_FORMAT "' ", msg, (intx)traversal_count());
|
xtty->begin_elem("sweeper state='%s' traversals='" INTX_FORMAT "' ", msg, (intx)traversal_count());
|
||||||
if (format != NULL) {
|
if (format != NULL) {
|
||||||
@ -438,7 +448,7 @@ void NMethodSweeper::log_sweep(const char* msg, const char* format, ...) {
|
|||||||
xtty->vprint(format, ap);
|
xtty->vprint(format, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
}
|
}
|
||||||
CodeCache::log_state(xtty);
|
xtty->print(s.as_string());
|
||||||
xtty->stamp();
|
xtty->stamp();
|
||||||
xtty->end_elem();
|
xtty->end_elem();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user