RFR(S): 8138756: Compiler Control: Print directives in hs_err
Nils Eliasson
nils.eliasson at oracle.com
Fri Jan 22 13:38:31 UTC 2016
Hi, Vladimir
On 2016-01-21 20:28, Vladimir Kozlov wrote:
> Passing directives through ciEnv is fine.
> My question is about output in hs_err file. How those directives were
> selected in your example?
It only prints the directive that is used for the current compile task
(that caused the crash). (Thats why I put them together in the hs_err file)
> I found it strange to see mixed flags values and oracle commands.
> "Enable:true Exclude:false" - which these correspond to, for example?
These are all options from the directive - and they are set with
directives (highest priority), compilecommmand or vmflags (lowest
priority).
>
> Should we not print directives/flags which are not set explicitly?
I updated the print output to mark all options in the directive that are
not default with a '*'. That makes it quicker to see if any special
options was applied. It will also print if the directive is the
unmodified default directive.
Webrev: http://cr.openjdk.java.net/~neliasso/8138756/webrev.03/
Example output:
http://cr.openjdk.java.net/~neliasso/8138756/webrev.03/hserr.txt
Regards,
Nils
>
> Thanks,
> Vladimir
>
> 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