<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: "Calibri Light", "Helvetica Light", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
Hello, this appears to be a harmless cleanup that has no behavioral impact. Created
<a href="https://bugs.openjdk.org/browse/JDK-8374202">https://bugs.openjdk.org/browse/JDK-8374202</a> for this.</div>
<div style="font-family: "Calibri Light", "Helvetica Light", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
Feel free to follow our guide at <a href="https://openjdk.org/guide/">https://openjdk.org/guide/</a> to submit a PR on GitHub for this issue.</div>
<div style="font-family: "Calibri Light", "Helvetica Light", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: "Calibri Light", "Helvetica Light", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
Regards,</div>
<div style="font-family: "Calibri Light", "Helvetica Light", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
Chen Liang</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> core-libs-dev <core-libs-dev-retn@openjdk.org> on behalf of John Platts <john_platts@hotmail.com><br>
<b>Sent:</b> Sunday, December 21, 2025 6:02 PM<br>
<b>To:</b> core-libs-dev@openjdk.org <core-libs-dev@openjdk.org><br>
<b>Subject:</b> Replace loop with Long.numberOfTrailingZeros in BigDecimal(double val, MathContext mc) constructor</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">The following loop in the java.math.BigDecimal(double val, MathContext mc) constructor is inefficient:<br>
        while ((significand & 1) == 0) { // i.e., significand is even<br>
            significand >>= 1;<br>
            exponent++;<br>
        }<br>
<br>
Here is a more efficient alternative using Long.numberOfTrailingZeros:<br>
        final int numOfTrailingZerosInSignificand =<br>
            Long.numberOfTrailingZeros(significand);<br>
        significand >>= numOfTrailingZerosInSignificand;<br>
        exponent += numOfTrailingZerosInSignificand;<br>
</div>
</span></font></div>
</body>
</html>