C1: fix "assert(has_printable_bci()) failed: _printable_bci should have been set" when using -XX:+PrintCanonicalization

Krystal Mok rednaxelafx at gmail.com
Thu May 31 08:06:58 PDT 2012


On Thu, May 31, 2012 at 9:54 PM, Roland Westrelin <
roland.westrelin at oracle.com> wrote:

>  Thanks for the tip! I didn't notice what the old behavior was
>> before 6986046.
>>
>
> As I understand it before 6986046, the code would always print bcis with
> -XX:+PrintCanonicalization except the bcis would sometimes be -99 (when the
> instruction was not yet linked).
>
> That sounds like a fair behavior. Yes, you're right that in
Canonicalizer::set_canonical(x), it's better to just print bci() when x is
not linked, since printable_bci is set when linking the instruction.

But Local and Phi instructions are exceptions. They're never "linked" into
the instruction list (they're just filled into a ValueStack), but they
deserve something better than -99. They're more likely to cause trouble in
Canonicalizer::set_canonical(x) by this call:

x->input_values_do(&do_print_value);

Which is why I did the change in the constructors of Local and Phi.

Thanks,
Kris


> Roland.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20120531/a8cdc023/attachment.html 


More information about the hotspot-compiler-dev mailing list