RFR: Apply UL to PrintCodeCacheOnCompilation

chihiro ito chihiro.ito at oracle.com
Sat May 20 09:25:50 UTC 2017


Hi Vladimir,

Thank you for build.
For Windows, I found that I use strtok_s instead of strtok_r. On 
Windows, should I use strtok_s? I thought that a common code is good 
(not depend on the OS) . It was fixed as follows.

diff --git a/src/share/vm/compiler/compileBroker.cpp 
b/src/share/vm/compiler/compileBroker.cpp
--- a/src/share/vm/compiler/compileBroker.cpp
+++ b/src/share/vm/compiler/compileBroker.cpp
@@ -1726,6 +1726,33 @@
    tty->print("%s", s.as_string());
  }

+// wrapper for CodeCache::print_summary() using outputStream
+static void codecache_print(outputStream* out, bool detailed) {
+  ResourceMark rm;
+  stringStream s;
+
+  // Dump code cache into a buffer
+  {
+    MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
+    CodeCache::print_summary(&s, detailed);
+  }
+
+  char* remaining_log = s.as_string();
+  char* eol;
+
+  while( *remaining_log != '\0' ){
+    eol = strchr(remaining_log, '\n');
+    if( eol == NULL ) {
+      out->print_cr("%s", remaining_log);
+      remaining_log = remaining_log + strlen(remaining_log);
+    } else {
+      *eol = '\0';
+      out->print_cr("%s", remaining_log);
+      remaining_log = eol + 1;
+    }
+  }
+}
+
  void CompileBroker::post_compile(CompilerThread* thread, CompileTask* 
task, EventCompilation& event, bool success, ciEnv* ci_env) {

    if (success) {
@@ -1939,6 +1966,10 @@
      tty->print_cr("time: %d inlined: %d bytes", 
(int)time.milliseconds(), task->num_inlined_bytecodes());
    }

+  Log(compilation, codecache) log;
+  if (log.is_debug())
+    codecache_print(log.debug_stream(), /* detailed= */ false);
+
    if (PrintCodeCacheOnCompilation)
      codecache_print(/* detailed= */ false);

Regards,
Chihiro

On 2017/05/20 2:12, Vladimir Kozlov wrote:
> Unfortunately build failed on Windows:
>
> compileBroker.cpp(1740) : error C3861: 'strtok_r': identifier not found
>
> Vladimir
>
> On 5/19/17 3:03 AM, chihiro ito wrote:
>> Hi Vladimir,
>>
>> Thank you for reviewing and advice. I created a enhancement in JBS as 
>> JDK-8180654. Could you possibly check it and
>> commit this to jdk10/hs as cito.
>>
>> Regards,
>> Chihiro
>>
>> On 2017/05/19 2:51, Vladimir Kozlov wrote:
>>> Hi Chihiro,
>>>
>>> Changes looks fine.
>>> Please, file Enhancement in JBS. Then we can sponsor it.
>>>
>>> Thanks,
>>> Vladimir
>>>
>>> On 5/18/17 6:10 AM, chihiro ito wrote:
>>>> Hi all,
>>>>
>>>> I apply Unified JVM Logging to log of PrintCodeCacheOnCompilation 
>>>> option. Logs which applied this is following.
>>>> Could you possibly review for this following small change? If 
>>>> review is ok, please commit this as cito.
>>>>
>>>> Sample Log:
>>>> [1.370s][debug][compilation,codecache] CodeHeap 'non-profiled 
>>>> nmethods': size=120036Kb used=13Kb max_used=13Kb
>>>> free=120022Kb
>>>> [1.372s][debug][compilation,codecache] CodeHeap 'profiled 
>>>> nmethods': size=120032Kb used=85Kb max_used=85Kb free=119946Kb
>>>> [1.372s][debug][compilation,codecache] CodeHeap 'non-nmethods': 
>>>> size=5692Kb used=2648Kb max_used=2655Kb free=3043Kb
>>>>
>>>> Source:
>>>> diff --git a/src/share/vm/compiler/compileBroker.cpp 
>>>> b/src/share/vm/compiler/compileBroker.cpp
>>>> --- a/src/share/vm/compiler/compileBroker.cpp
>>>> +++ b/src/share/vm/compiler/compileBroker.cpp
>>>> @@ -1726,6 +1726,22 @@
>>>>    tty->print("%s", s.as_string());
>>>>  }
>>>>
>>>> +// wrapper for CodeCache::print_summary() using outputStream
>>>> +static void codecache_print(outputStream* out, bool detailed) {
>>>> +  ResourceMark rm;
>>>> +  stringStream s;
>>>> +
>>>> +  // Dump code cache into a buffer
>>>> +  {
>>>> +    MutexLockerEx mu(CodeCache_lock, 
>>>> Mutex::_no_safepoint_check_flag);
>>>> +    CodeCache::print_summary(&s, detailed);
>>>> +  }
>>>> +
>>>> +  for( char *pos, *line = strtok_r(s.as_string(), "\n", &pos) ; 
>>>> line != NULL ; line = strtok_r(NULL, "\n", &pos) ) {
>>>> +    out->print_cr("%s", line);
>>>> +  }
>>>> +}
>>>> +
>>>>  void CompileBroker::post_compile(CompilerThread* thread, 
>>>> CompileTask* task, EventCompilation& event, bool success,
>>>> ciEnv* ci_env) {
>>>>
>>>>    if (success) {
>>>> @@ -1939,6 +1955,10 @@
>>>>      tty->print_cr("time: %d inlined: %d bytes", 
>>>> (int)time.milliseconds(), task->num_inlined_bytecodes());
>>>>    }
>>>>
>>>> +  Log(compilation, codecache) log;
>>>> +  if (log.is_debug())
>>>> +    codecache_print(log.debug_stream(), /* detailed= */ false);
>>>> +
>>>>    if (PrintCodeCacheOnCompilation)
>>>>      codecache_print(/* detailed= */ false);
>>>>
>>>>
>>>>
>>>> Regards,
>>>> Chihiro
>>>>
>>>>
>>
>> -- 
>>
>> Chihiro Ito | Principal Consultant | +81.90.6148.8815
>> Oracle <http://www.oracle.com> Consultant
>> ORACLE Japan | Akasaka Center Bldg. | Motoakasaka 1-3-13 | 1070051 
>> Minato-ku, Tokyo, JAPAN
>>
>> Oracle is committed to developing practices and products that help 
>> protect the environment
>> <http://www.oracle.com/commitment>

-- 

Chihiro Ito | Principal Consultant | +81.90.6148.8815
Oracle <http://www.oracle.com> Consultant
ORACLE Japan | Akasaka Center Bldg. | Motoakasaka 1-3-13 | 1070051 
Minato-ku, Tokyo, JAPAN

Oracle is committed to developing practices and products that help 
protect the environment <http://www.oracle.com/commitment>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20170520/5fef5150/attachment-0001.html>


More information about the hotspot-compiler-dev mailing list