+PrintInlining falsly? says: never executed
Tom Rodriguez
Thomas.Rodriguez at Sun.COM
Mon Nov 30 16:12:43 PST 2009
>>> I get:
>>> @ 180 sun.nio.cs.ext.EUC_TW_C_d_b_codeToBuffer4$Decoder::decode never executed
>>> and
>>> static sun/nio/cs/ext/EUC_TW_C_d_b_codeToBuffer4$Decoder.decode(BBI[C[II)Ljava/nio/charset/CoderResult;
>>> interpreter_invocation_count: 10001
>>> invocation_counter: 5001
>>> backedge_counter: 1
>>>
>>
>> Where did this output come from? Was it printed at the time it was being checked for inlining?
>
> I comes from -XX:PrintAssemblyOptions. Yes, it was printed at same time.
I don't see how PrintAssemblyOptions could produce that output. I think those counts come from the CompileCommand=print option below and those are printed at the end of the run. So I'm guessing that at the point the compile was occurring decode actually hadn't been called. The can sometimes result from inlining. What was the whole inline tree? I think you'd have to look into the debugger to make sure.
>
> The complete set of options was:
> -XX:MaxInlineSize=250 \
> -XX:+PrintCompilation \
> -XX:+PrintInlining \
> -XX:+UnlockDiagnosticVMOptions -Xbatch \
> -XX:PrintAssemblyOptions=hsdis-print-bytes \
> -XX:CompileCommand=print,sun.nio.cs.ext.EUC_TW_C_d_b_codeToBuffer4$Decoder::decodeArrayLoop \
> -XX:CompileCommand=print,sun.nio.cs.ext.EUC_TW_C_d_b_codeToBuffer4$Decoder::decode
>
> BTW: what is the difference to -XX:FreqInlineSize=250 ? I didn't get any effect.
FreqInlineSize applies when the call site looks frequent using either InlineFrequencyRatio or InlineFrequencyCount. Again check out bytecodeInfo.cpp and search for freq_inline_size.
tom
>
>
>> The "never executed" logic is in src/share/vm/opto/bytecodeInfo.cpp and it's simply checking that the invocation counter is non-zero. Are you saying that it's actually non-zero but we see it as zero?
>>
>>
>>> Why PrintInlining says: "never executed" ?
>>>
>>>
>>>
>>> Having only:
>>> VM option '+PrintInlining'
>>>
>>> I get:
>>> @ 181 sun.nio.cs.ext.EUC_TW_C_d_b_codeToBuffer4$Decoder::decode too big
>>>
>>
>> method size: below is the size of the method object. code size: is the size of the bytecodes.
>>
>
> Thanks, yes, I know. That's why I set MaxInlineSize above 189.
>
> -Ulf
>
>> tom
>>
>>
>>> For the method size refer:
>>> {method}
>>> - klass: {other class}
>>> - method holder: 'sun/nio/cs/ext/EUC_TW_C_d_b_codeToBuffer4$Decoder'
>>> - constants: 0x085562d4{constant pool}
>>>
>>> - access: 0x81000000 - name: 'decode'
>>> - signature: '(BBI[C[II)Ljava/nio/charset/CoderResult;'
>>> - max stack: 6
>>> - max locals: 9
>>> - size of params: 7
>>> - method size: 20
>>> - vtable index: 17
>>> - i2i entry: 0x00acb6a0
>>>
>>> - adapter: 0x03d431f0
>>> - compiled entry 0x00b91070
>>> - code size: 189
>>> - code start: 0x1425d730
>>> - code end (excl): 0x1425d7ed
>>> - method data: 0x142c5e08
>>> - checked ex length: 0
>>> - linenumber start: 0x1425d7ed
>>> - localvar length: 9
>>> - localvar start: 0x1425d802
>>>
>>>
>>> -Ulf
>>>
>>>
>>>
>>
>>
>>
>
More information about the hotspot-compiler-dev
mailing list