<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 12 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Balloon Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-priority:99;
        mso-style-link:"Balloon Text";
        font-family:"Tahoma","sans-serif";}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-AU link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>The current hotspot behaviour is consistent** with existing working in JLS 12.6.1 that an object can be finalized once Object’s constructor has successfully completed. <o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>The JSR-133 “specification” made it clear that an object was only eligible for finalization once its constructors had completed. But that wording did not make it into the JLS update for reasons that will likely never be determined.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>**if you don’t expect someone to use the HB definition to infer the stronger requirement<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>David<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><div style='border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt'><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> Vitaly Davidovich [mailto:vitalyd@gmail.com] <br><b>Sent:</b> Friday, December 11, 2015 9:47 AM<br><b>To:</b> dholmes@ieee.org<br><b>Cc:</b> concurrency-interest@cs.oswego.edu; David M. Lloyd<br><b>Subject:</b> RE: [concurrency-interest] DirectByteBuffers and reachabilityFence<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><p>So frankly, I can no longer tell whether this is correct or not, and if it's correct, only because a JLS update slipped through the cracks.  Did we net out somewhere?<o:p></o:p></p><p>sent from my phone<o:p></o:p></p><div><p class=MsoNormal>On Dec 10, 2015 6:37 PM, "David Holmes" <<a href="mailto:davidcholmes@aapt.net.au">davidcholmes@aapt.net.au</a>> wrote:<o:p></o:p></p><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>To be 100% clear: hotspot does not implement the requirement that an object is only eligible for finalization after its constructors have completed. Instead it makes them eligible for finalization at the successful end of Object.<init> (by default – if RegisterFinalizersAtInit is false then it will register them at the end of allocation instead).</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>David</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'> </span><o:p></o:p></p><div style='border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt'><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> Vitaly Davidovich [mailto:<a href="mailto:vitalyd@gmail.com" target="_blank">vitalyd@gmail.com</a>] <br><b>Sent:</b> Friday, December 11, 2015 9:19 AM<br><b>To:</b> <a href="mailto:dholmes@ieee.org" target="_blank">dholmes@ieee.org</a><br><b>Cc:</b> <a href="mailto:concurrency-interest@cs.oswego.edu" target="_blank">concurrency-interest@cs.oswego.edu</a>; David M. Lloyd<br><b>Subject:</b> Re: [concurrency-interest] DirectByteBuffers and reachabilityFence</span><o:p></o:p></p></div></div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p>sent from my phone<br>On Dec 10, 2015 4:36 PM, "David Holmes" <<a href="mailto:davidcholmes@aapt.net.au" target="_blank">davidcholmes@aapt.net.au</a>> wrote:<br>><br>> David M. Lloyd writes:<br>> ><br>> > On 12/09/2015 07:44 PM, David Holmes wrote:<br>> > > To be clear, I missed this later assertion:<br>> > ><br>> > >> In summary, we agree that an object can _become finalizable_ before<br>> > >> completion of its constructor, if the Object constructor completed<br>> > >> normally and the object is otherwise no longer reachable.<br>> > ><br>> > > No! The object should not be able to become finalizable until after<br>> > all its<br>> > > constructors have completed, and then it becomes unreachable.<br>> ><br>> > Is this your view of the existing world, or what you are proposing be<br>> > changed?  I'm losing track of what's what in this discussion. :-)<br>><br>> This is how the existing world should have been if the JLS update had not<br>> been snafu'd. Justin would argue it should be the current state regardless<br>> due to happens-before definition. Regardless the JVM does not currently<br>> implement this.<o:p></o:p></p><p>To avoid further confusion, the JVM (I'm assuming you mean Hotspot) doesn't implement what exactly?<o:p></o:p></p><p>><br>> David H.<br>><br>><br>> > --<br>> > - DML<br>> > _______________________________________________<br>> > Concurrency-interest mailing list<br>> > <a href="mailto:Concurrency-interest@cs.oswego.edu" target="_blank">Concurrency-interest@cs.oswego.edu</a><br>> > <a href="http://cs.oswego.edu/mailman/listinfo/concurrency-interest" target="_blank">http://cs.oswego.edu/mailman/listinfo/concurrency-interest</a><br>><br>> _______________________________________________<br>> Concurrency-interest mailing list<br>> <a href="mailto:Concurrency-interest@cs.oswego.edu" target="_blank">Concurrency-interest@cs.oswego.edu</a><br>> <a href="http://cs.oswego.edu/mailman/listinfo/concurrency-interest" target="_blank">http://cs.oswego.edu/mailman/listinfo/concurrency-interest</a><o:p></o:p></p></div></div></div></div></div></div></body></html>