<div dir="ltr">Hi,<div>In my Phd project, I am messing around with barriers and notice a weird behavior of branching. It might be that I am doing it wrong. Typically, a barrier will do a check and then jump to slow case if necessary. The code often looks like: </div><div><br><font face="monospace">__ branch(lir_cond_notEqual, T_INT, slow);</font></div><div><font face="monospace">__ branch_destination(slow->continuation());</font><br></div><div><font face="monospace"><br></font></div><div><font face="monospace">(These two lines are copied from G1BarrierSetC1::pre_barrier).</font></div><div><font face="arial, sans-serif">But if I changed those two lines to:</font></div><div><font face="arial, sans-serif"><br></font></div><div><div><font face="monospace">__ branch(lir_cond_equal, T_INT, </font><span style="font-family:monospace">slow->continuation()</span><font face="monospace">);</font></div><div><font face="monospace">__ jump(slow);</font></div><div><font face="monospace">__ branch_destination(slow->continuation());</font></div></div><div><font face="monospace"><br></font></div><div><font face="arial, sans-serif">Then hotspot cannot bootstrap, causing build failure. I know in practice no one is going to write code like that, but it does look weird. They should be logically equivalent.</font></div><div><span style="font-family:arial,sans-serif">By the way, I am using the latest jdk11u master branch. Any suggestions would be appreciated. Thanks </span></div></div>