RFR(S): 8138756: Compiler Control: Print directives in hs_err

Vladimir Kozlov vladimir.kozlov at oracle.com
Thu Jan 21 19:28:54 UTC 2016

Passing directives through ciEnv is fine.
My question is about output in hs_err file. How those directives were selected in your example?
I found it strange to see mixed flags values and oracle commands. "Enable:true Exclude:false" - which these correspond 
to, for example?

Should we not print directives/flags which are not set explicitly?


On 1/21/16 2:31 AM, Nils Eliasson wrote:
> This is how it looks:
> [...]
> ---------------  T H R E A D  ---------------
> Current thread (0x00007f071046a000):  JavaThread "C1 CompilerThread10" daemon [_thread_in_native, id=20033, stack(0x00007f05d7afb000,0x00007f05d7bfc000)]
> Current CompileTask:
> C1:    225    1       3       java.lang.String::isLatin1 (19 bytes)
> Current compiler directive:
>    inline: -
>    Enable:true Exclude:false BreakAtExecute:false BreakAtCompile:false Log:false PrintAssembly:false PrintInlining:false PrintNMethods:false ReplayInline:false DumpReplay:false DumpInline:false CompilerDirectivesIgnoreCompileCommands:false DisableIntrinsic: BlockLayoutByFrequency:true PrintOptoAssembly:false PrintIntrinsics:false TraceOptoPipelining:false TraceOptoOutput:false TraceSpilling:false Vectorize:false VectorizeDebug:false CloneMapDebug:false DoReserveCopyInSuperWordDebug:false IGVPrintLevel:0 MaxNodeLimit:80000
> Stack: [0x00007f05d7afb000,0x00007f05d7bfc000],  sp=0x00007f05d7bfa5d0,  free space=1021k
> Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
> V  [libjvm.so+0x12e7532]  VMError::report_and_die(int, char const*, char const*, __va_list_tag*, Thread*, unsigned char*, void*, void*, char const*, int, unsigned long)+0x182
> V  [libjvm.so+0x12e829a]  VMError::report_and_die(Thread*, char const*, int, char const*, char const*, __va_list_tag*)+0x4a
> V  [libjvm.so+0x908cca]  report_vm_error(char const*, int, char const*, char const*, ...)+0xea
> V  [libjvm.so+0x88df81]  CompileBroker::post_compile(CompilerThread*, CompileTask*, EventCompilation&, bool, ciEnv*)+0x1b1
> V  [libjvm.so+0x88ec5a]  CompileBroker::invoke_compiler_on_method(CompileTask*)+0x90a
> V  [libjvm.so+0x88f960]  CompileBroker::compiler_thread_loop()+0x540
> V  [libjvm.so+0x1264789]  JavaThread::thread_main_inner()+0x1c9
> V  [libjvm.so+0x1264ac6]  JavaThread::run()+0x2a6
> V  [libjvm.so+0x10189aa]  java_start(Thread*)+0xca
> C  [libpthread.so.0+0x8182]  start_thread+0xc2
> [...]
> http://cr.openjdk.java.net/~neliasso/8138756/hserr.txt
> Regards,
> Nils
> On 2016-01-21 11:25, Nils Eliasson wrote:
>> Hi,
>> Please review this small change. The diff looks big but most of the change is just changing how the directive are
>> passed to the compilers. Directives are set in the ciEnv and then passed to the compilers. The compilers can then
>> choose to add it to any internal compilation object for convenience. The hs_err printing routine in vmError.cpp loads
>> the directive from the ciEnv.
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8138756
>> Webrev: http://cr.openjdk.java.net/~neliasso/8138756/webrev.01/
>> Regards,
>> Nils

More information about the hotspot-compiler-dev mailing list