Mercurial > hg > truffle
comparison src/share/vm/memory/gcLocker.cpp @ 4944:09d00c18e323
7145537: minor tweaks to LogEvents
Reviewed-by: kvn, twisti
author | never |
---|---|
date | Wed, 15 Feb 2012 10:12:55 -0800 |
parents | 0382d2b469b2 |
children | 2c022e432e10 |
comparison
equal
deleted
inserted
replaced
4943:80107dc493db | 4944:09d00c18e323 |
---|---|
29 | 29 |
30 volatile jint GC_locker::_jni_lock_count = 0; | 30 volatile jint GC_locker::_jni_lock_count = 0; |
31 volatile jint GC_locker::_lock_count = 0; | 31 volatile jint GC_locker::_lock_count = 0; |
32 volatile bool GC_locker::_needs_gc = false; | 32 volatile bool GC_locker::_needs_gc = false; |
33 volatile bool GC_locker::_doing_gc = false; | 33 volatile bool GC_locker::_doing_gc = false; |
34 jlong GC_locker::_wait_begin = 0; | |
35 | 34 |
36 #ifdef ASSERT | 35 #ifdef ASSERT |
37 volatile jint GC_locker::_debug_jni_lock_count = 0; | 36 volatile jint GC_locker::_debug_jni_lock_count = 0; |
38 #endif | 37 #endif |
39 | 38 |
67 if (is_active() && !_needs_gc) { | 66 if (is_active() && !_needs_gc) { |
68 verify_critical_count(); | 67 verify_critical_count(); |
69 _needs_gc = true; | 68 _needs_gc = true; |
70 if (PrintJNIGCStalls && PrintGCDetails) { | 69 if (PrintJNIGCStalls && PrintGCDetails) { |
71 ResourceMark rm; // JavaThread::name() allocates to convert to UTF8 | 70 ResourceMark rm; // JavaThread::name() allocates to convert to UTF8 |
72 _wait_begin = os::javaTimeNanos() / NANOSECS_PER_MILLISEC; | 71 gclog_or_tty->print_cr("%.3f: Setting _needs_gc. Thread \"%s\" %d locked.", |
73 gclog_or_tty->print_cr(INT64_FORMAT ": Setting _needs_gc. Thread \"%s\" %d locked.", | 72 gclog_or_tty->time_stamp().seconds(), Thread::current()->name(), _jni_lock_count); |
74 _wait_begin, Thread::current()->name(), _jni_lock_count); | |
75 } | 73 } |
76 | 74 |
77 } | 75 } |
78 return is_active(); | 76 return is_active(); |
79 } | 77 } |
83 MutexLocker ml(JNICritical_lock); | 81 MutexLocker ml(JNICritical_lock); |
84 | 82 |
85 if (needs_gc()) { | 83 if (needs_gc()) { |
86 if (PrintJNIGCStalls && PrintGCDetails) { | 84 if (PrintJNIGCStalls && PrintGCDetails) { |
87 ResourceMark rm; // JavaThread::name() allocates to convert to UTF8 | 85 ResourceMark rm; // JavaThread::name() allocates to convert to UTF8 |
88 gclog_or_tty->print_cr(INT64_FORMAT ": Allocation failed. Thread \"%s\" is stalled by JNI critical section, %d locked.", | 86 gclog_or_tty->print_cr("%.3f: Allocation failed. Thread \"%s\" is stalled by JNI critical section, %d locked.", |
89 (os::javaTimeNanos() / NANOSECS_PER_MILLISEC) - _wait_begin, Thread::current()->name(), _jni_lock_count); | 87 gclog_or_tty->time_stamp().seconds(), Thread::current()->name(), _jni_lock_count); |
90 } | 88 } |
91 } | 89 } |
92 | 90 |
93 // Wait for _needs_gc to be cleared | 91 // Wait for _needs_gc to be cleared |
94 while (needs_gc()) { | 92 while (needs_gc()) { |
129 { | 127 { |
130 // Must give up the lock while at a safepoint | 128 // Must give up the lock while at a safepoint |
131 MutexUnlocker munlock(JNICritical_lock); | 129 MutexUnlocker munlock(JNICritical_lock); |
132 if (PrintJNIGCStalls && PrintGCDetails) { | 130 if (PrintJNIGCStalls && PrintGCDetails) { |
133 ResourceMark rm; // JavaThread::name() allocates to convert to UTF8 | 131 ResourceMark rm; // JavaThread::name() allocates to convert to UTF8 |
134 gclog_or_tty->print_cr(INT64_FORMAT ": Thread \"%s\" is performing GC after exiting critical section, %d locked", | 132 gclog_or_tty->print_cr("%.3f: Thread \"%s\" is performing GC after exiting critical section, %d locked", |
135 (os::javaTimeNanos() / NANOSECS_PER_MILLISEC) - _wait_begin, Thread::current()->name(), _jni_lock_count); | 133 gclog_or_tty->time_stamp().seconds(), Thread::current()->name(), _jni_lock_count); |
136 } | 134 } |
137 Universe::heap()->collect(GCCause::_gc_locker); | 135 Universe::heap()->collect(GCCause::_gc_locker); |
138 } | 136 } |
139 _doing_gc = false; | 137 _doing_gc = false; |
140 } | 138 } |