Possible compiler bug: continue is skipped after or-condition

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Mon Feb 17 21:20:59 UTC 2020

They are _generally_ very reliable - to be clear, nothing has changed in 
this area to make less reliable. You "just" came across a quirk in javac 
code generation strategy that has been there for the last 20 years.

There are other situations where putting a breakpoint won't necessarily 
result in anything meaningful to occur - for instance, if you put a 
breakpoint on a local variable declaration. This is not to say that 
nothing should be done about it _ever_ - but as you said, you lived for 
20 years w/o realizing that this hiccup has been there all along (along 
with other hiccups) - so please also understand a certain reticence in 
making an abrupt change in the code generation strategy (or worse, 
supporting multiple code generation strategies) for what feels like 
something that is annoying, yes, but hardly a breaking issue.

As I said in my last email, I'd like to address this as part as a more 
holistic investigation on how bytecode fidelity is retained from class 
files. Note that we have features in the pipeline like constant folding 
(see [1]) which are going to cause an even bigger impact to how source 
files relates to classfiles. So I'd just like to think this through 
properly, as I think this needs more thinking and more time than what 
we've available right now - to fully assess the extent of this and other 
'premature' optimizations javac might do to the code, verify that 
changing code shape won't hurt C1, C2 compilers, and make sure that no 
relevant functional regression is introduced.


On 17/02/2020 17:35, Roland Illig wrote:
> How would you explain to an average developer that breakpoints are not
> reliable? Up to now, they have been very reliable to me, and after more
> than 20 years of using Java, this is really the first time that the
> breakpoints surprise me. 

More information about the compiler-dev mailing list