<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<META NAME="Generator" CONTENT="MS Exchange Server version 08.00.0681.000">
<TITLE>[10] RFR(S): 8185572: Enable AssumeMP by default on SPARC machines</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">Hello,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">Please review this simple patch:</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">Bug:</FONT></SPAN><SPAN LANG="en-us"> </SPAN><A HREF="https://bugs.openjdk.java.net/browse/JDK-8185572"><SPAN LANG="en-us"><U><FONT COLOR="#0000FF" FACE="Calibri">JDK-8185572</FONT></U></SPAN><SPAN LANG="en-us"></SPAN></A><SPAN LANG="en-us"><FONT FACE="Calibri">:</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Calibri">Enable AssumeMP by default on SPARC machines</FONT></SPAN><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">Webrev:</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Calibri"><A HREF="http://cr.openjdk.java.net/~poonam/8185572/webrev.00/">http://cr.openjdk.java.net/~poonam/8185572/webrev.00/</A></FONT></SPAN><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">This change enables AssumeMP by default on SPARC machines. On Sparc T7</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Calibri">, to finalize BIS instructions the server compiler needs to</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Calibri">add a</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Calibri">‘memb</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Calibri">a</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Calibri">r’</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Calibri"> instruction at the end.</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Calibri">But the generation of</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Calibri">‘</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Calibri">memb</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Calibri">a</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Calibri">r</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Calibri">’</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Calibri"> is guarded by</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Calibri">os::is_MP()</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Calibri">, and</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Calibri">os::is_MP()</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Calibri"> returns false when t</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Calibri">here is</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Calibri">a single</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Calibri"> cpu available on the system. Now,</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Calibri">in</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Calibri">virtualized/container</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Calibri">environments</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Calibri">, the number of</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Calibri">processors</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Calibri"></FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Calibri">allocated to a virtual machine can dynamically change during the application runtime.</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Calibri"> That could lead to incorrect generation of BIS instructions and can cause JVM crashes.</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Calibri"> Enabling AssumeMP makes is_MP() always return true on SPARC systems.</FONT></SPAN><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">In future, we may consider making</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Calibri">generation of</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Calibri">‘</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Calibri">memb</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Calibri">ar</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Calibri">‘</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Calibri"> unconditional with</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Calibri">the</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Calibri">enhancement</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Calibri"> request</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Calibri">:</FONT></SPAN><SPAN LANG="en-us"> </SPAN><A HREF="https://bugs.openjdk.java.net/browse/JDK-8150715"><SPAN LANG="en-us"><U><FONT COLOR="#0000FF" FACE="Calibri">JDK-8150715</FONT></U></SPAN><SPAN LANG="en-us"></SPAN></A><SPAN LANG="en-us"><FONT FACE="Calibri">.</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">Thanks,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">Poonam</FONT></SPAN><SPAN LANG="en-us"></SPAN></P>

</BODY>
</HTML>