<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<div class="moz-cite-prefix">On 17/07/2023 11:08, Alan Bateman
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:91b41b49-a38c-f72e-2ad1-c52be83021f0@oracle.com">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
On 15/07/2023 17:53, Daohan Qu wrote:<br>
<blockquote type="cite"
cite="mid:BLAPR07MB7508B6FA999645629E2A0374CB35A@BLAPR07MB7508.namprd07.prod.outlook.com">
:
<div id="mail-editor-reference-message-container" dir="auto">
<div class="elementToProof ContentPasted0 ContentPasted1"
style="font-size:12pt; color:rgb(0,0,0)">
<div class="ContentPasted1"
style="font-family:Calibri,Arial,Helvetica,sans-serif"> <span
style="font-family:Calibri,Helvetica,sans-serif"><br>
</span></div>
<div class="ContentPasted1"
style="font-family:Calibri,Arial,Helvetica,sans-serif"> <span
style="font-family:Calibri,Helvetica,sans-serif">Although
the <code>assert</code> keyword has been around for a
long time and</span></div>
<div class="ContentPasted1"
style="font-family:Calibri,Arial,Helvetica,sans-serif"> <span
style="font-family:Calibri,Helvetica,sans-serif">is
handy </span><span
style="font-family:Calibri,Helvetica,sans-serif">for
invariant checks, it does not seem to be widely used.</span></div>
<div class="ContentPasted1"
style="font-family:Calibri,Arial,Helvetica,sans-serif"> <span
style="font-family:Calibri,Helvetica,sans-serif">For
example, in the famous <code>j.u.c</code> packages,
nearly all <code>assert</code></span></div>
<div class="ContentPasted1"
style="font-family:Calibri,Arial,Helvetica,sans-serif"> <span
style="font-family:Calibri,Helvetica,sans-serif">statements
are commented out [1].</span><br>
</div>
<div class="ContentPasted1"
style="font-family:Calibri,Arial,Helvetica,sans-serif"> <br>
</div>
<div class="ContentPasted1"
style="font-family:Calibri,Arial,Helvetica,sans-serif"> <span
style="font-family:Calibri,Helvetica,sans-serif">My
questions are, should <code> assert</code> be heavily
used in Java programs,</span></div>
<div class="ContentPasted1"
style="font-family:Calibri,Arial,Helvetica,sans-serif"> <span
style="font-family:Calibri,Helvetica,sans-serif">especially
in production code? And should we enable them in the</span></div>
<div class="ContentPasted1"
style="font-family:Calibri,Arial,Helvetica,sans-serif"> <span
style="font-family:Calibri,Helvetica,sans-serif">production
code?</span></div>
<br>
</div>
</div>
</blockquote>
Asserts are very useful during development or when testing, e.g.
the JDK tests run with -esa and can periodically help catch issues
when testing a change.<br>
<br>
You will find places in the JDK code, esp. in performance critical
code, where assertions are commented out. The reason is that
asserts, even if disabled, increase the method size and can impact
inlining by the compiler at run-time. So while useful when
debugging some issue in such code, they are commended out to avoid
increasing the method size.<br>
</blockquote>
<p>I believe this can be partially alleviated by extracting the
asserts to a method (partially as the call also increases method
size). The optimizer seems to be smart enough to not call the
method if it does nothing (when ea is disabled).<br>
</p>
<p>--John</p>
<br>
</body>
</html>