<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=gb2312"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;}
@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:"\@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
{font-family:Verdana;
panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:#0563C1;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:#954F72;
text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:36.0pt;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Calibri",sans-serif;
color:windowtext;}
span.apple-converted-space
{mso-style-name:apple-converted-space;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri",sans-serif;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
@list l0
{mso-list-id:744500117;
mso-list-type:hybrid;
mso-list-template-ids:590670292 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:18.0pt;
text-indent:-18.0pt;}
@list l0:level2
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:54.0pt;
text-indent:-18.0pt;}
@list l0:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
margin-left:90.0pt;
text-indent:-9.0pt;}
@list l0:level4
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:126.0pt;
text-indent:-18.0pt;}
@list l0:level5
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:162.0pt;
text-indent:-18.0pt;}
@list l0:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
margin-left:198.0pt;
text-indent:-9.0pt;}
@list l0:level7
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:234.0pt;
text-indent:-18.0pt;}
@list l0:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:270.0pt;
text-indent:-18.0pt;}
@list l0:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
margin-left:306.0pt;
text-indent:-9.0pt;}
@list l1
{mso-list-id:1517495696;
mso-list-type:hybrid;
mso-list-template-ids:215546832 1660050806 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l1:level1
{mso-level-number-format:bullet;
mso-level-text:-;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:18.0pt;
text-indent:-18.0pt;
font-family:"Arial",sans-serif;
mso-fareast-font-family:宋体;}
@list l1:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:54.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l1:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:90.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l1:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:126.0pt;
text-indent:-18.0pt;
font-family:Symbol;}
@list l1:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:162.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l1:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:198.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l1:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:234.0pt;
text-indent:-18.0pt;
font-family:Symbol;}
@list l1:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:270.0pt;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l1:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:306.0pt;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l2
{mso-list-id:1835679727;
mso-list-type:hybrid;
mso-list-template-ids:1723492480 1097368422 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l2:level1
{mso-level-number-format:bullet;
mso-level-text:-;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Verdana",sans-serif;
mso-fareast-font-family:宋体;
mso-bidi-font-family:"Times New Roman";}
@list l2:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l2:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l2:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l2:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l2:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l2:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l2:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l2:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
ol
{margin-bottom:0cm;}
ul
{margin-bottom:0cm;}
--></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-US link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'>Hey folks,<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'>This is San Hong, from Alipay.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'>We have a fix patch for <b>Bug JDK-8048556</b> (we signed OCA with Oracle as <b>Alibaba</b> group) and want to contribute it to OpenJDK. <span class=apple-converted-space> </span>I would ask here if there is any interest and anyone can sponsor for this contribution? Many thanks in advance.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'>(I am cc’ing Ben, because I just mentioned our work when Ben visited China in May, also welcome your inputs on this)<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'>More background information: <o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'>we develop and deploy <b>AlipayJDK </b>which is<b> </b> based on OpenJDK at Alipay. We run the stress performance test for our online systems and found that this bug really put the performance impact on the rt(response time) of our system, that’s why we have had to fix it in our JDK7. <o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'>The basic idea of fixing is similar with the comments did by Tony in [1], which needs the right gc counts, but we implemented it in a different way, as we found it will require a lot of changes if we update </span><span style='font-family:"Verdana",sans-serif'>the </span><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'>collect() method on CollectedHeap to accept GC counts. Instead, the pattern we used is as follows:</span><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'> </span><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'><o:p> </o:p></span></p><p class=MsoListParagraph style='margin-left:18.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo3'><![if !supportLists]><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'> </span></span></span><![endif]><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'>Remember the VM operation before initiating the gc</span><span lang=ZH-CN style='font-size:10.0pt;font-family:宋体;color:black;background:white'>,</span><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'>the example code we implemented in VM_GenCollectFullConcurrent::doit() in vmCMSOperations.cpp:<o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:18.0pt'><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'><o:p> </o:p></span></p><p class=MsoListParagraph style='margin-left:18.0pt'><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'> if (_gc_count_before == gch->total_collections()) {<o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:18.0pt'><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'> // The "full" of do_full_collection call below "forces"<o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:18.0pt'><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'> // a collection; the second arg, 0, below ensures that<o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:18.0pt'><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'> // only the young gen is collected. XXX In the future,<o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:18.0pt'><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'> // we'll probably need to have something in this interface<o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:18.0pt'><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'> // to say do this only if we are sure we will not bail<o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:18.0pt'><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'> // out to a full collection in this attempt, but that's<o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:18.0pt'><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'> // for the future.<o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:18.0pt'><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'> assert(SafepointSynchronize::is_at_safepoint(),<o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:18.0pt'><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'> "We can only be executing this arm of if at a safepoint");<o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:18.0pt;text-indent:12.0pt'><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'>GCCauseSetter gccs(gch, _gc_cause);<o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:18.0pt;text-indent:12.0pt'><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'><o:p> </o:p></span></p><p class=MsoListParagraph style='margin-left:18.0pt'><b><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'>#ifdef ALIPAY_JDK<o:p></o:p></span></b></p><p class=MsoListParagraph style='margin-left:18.0pt'><b><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'> VMOperationSetter vmop(gch, this); </span></b><b><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:#5B9BD5;background:white'>// VMOperationSetter did the similar thing with GCCauseSetter, which is used to record which vm operation is used for current gc</span></b><b><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'>.<o:p></o:p></span></b></p><p class=MsoListParagraph style='margin-left:18.0pt'><b><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'>#endif<o:p></o:p></span></b></p><p class=MsoListParagraph style='margin-left:18.0pt'><b><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'><o:p> </o:p></span></b></p><p class=MsoListParagraph style='margin-left:18.0pt'><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'> gch->do_full_collection(gch->must_clear_all_soft_refs(),<o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:18.0pt'><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'> 0 /* collect only youngest gen */);<o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:18.0pt'><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'> } <o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:18.0pt'><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'><o:p> </o:p></span></p><p class=MsoListParagraph style='margin-left:18.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo3'><![if !supportLists]><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'> </span></span></span><![endif]><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'>If the vm gc operation gets interrupted by GCLocker, we will save it in GC_locker::check_active_before_gc() in gcLocker.cpp<o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:18.0pt'><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'><o:p> </o:p></span></p><p class=MsoListParagraph style='margin-left:18.0pt'><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'>#ifdef ALIPAY_JDK<o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:18.0pt'><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'>bool GC_locker::check_active_before_gc(VM_GC_Operation * op) {<o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:18.0pt'><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'>#else<o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:18.0pt'><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'>bool GC_locker::check_active_before_gc() {<o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:18.0pt'><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'>#endif<o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:18.0pt'><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'> assert(SafepointSynchronize::is_at_safepoint(), "only read at safepoint");<o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:18.0pt'><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'> if (is_active() && !_needs_gc) {<o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:18.0pt'><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'> verify_critical_count();<o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:18.0pt'><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'> <o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:18.0pt'><b><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'>#ifdef ALIPAY_JDK<o:p></o:p></span></b></p><p class=MsoListParagraph style='margin-left:18.0pt'><b><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'> assert(op != NULL, "VM_GC_Operation::doit must invoke VMOperationSetter!");<o:p></o:p></span></b></p><p class=MsoListParagraph style='margin-left:18.0pt'><b><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'> _interrupted_gc_op = op->clone_for_gclocker();<o:p></o:p></span></b></p><p class=MsoListParagraph style='margin-left:18.0pt'><b><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'>#endif<o:p></o:p></span></b></p><p class=MsoListParagraph style='margin-left:18.0pt'><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black;background:white'> <o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:18.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo3'><![if !supportLists]><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:black'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'> </span></span></span><![endif]><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'>Finally, we invoke the saved vm gc operation in GC_locker::jni_unlock(JavaThread* thread) instead of calling to Universe::heap()->collect(GCCause::_gc_locker);<o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:18.0pt'><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'><o:p> </o:p></span></p><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'>#ifdef ALIPAY_JDK<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'> assert(_interrupted_gc_op != NULL, "VM_GC_Operation must implement the clone_for_gclocker!");<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'> VM_GC_Operation* op = const_cast<VM_GC_Operation*>(_interrupted_gc_op);<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'> VMThread::execute(op);<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'> delete _interrupted_gc_op;<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'> _interrupted_gc_op = NULL;<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'>#else<o:p></o:p></span></b></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'> Universe::heap()->collect(GCCause::_gc_locker);<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'>#endif <o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'>The rationale here is: the GCLocker is always trying to compensate the gc operation which has been interrupted while it is active.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'>(the original implementation is doing the compensation blindly by calling Universe::heap()->collect for all cases)<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'><o:p> </o:p></span></p><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'>Your thoughts? </span></b><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'>Looking forward to your replay and suggestion!<b><o:p></o:p></b></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'>BTW – this patch passed our local FVT, SVT test suits on linux-xa64 platform, our team can port it to jdk9 as patch for review and also follow up the tests for other platforms if necessary</span><span style='font-size:10.0pt;font-family:Wingdings;color:black;background:white'>J</span><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'> <o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'>[1] https://bugs.openjdk.java.net/browse/JDK-8048556?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Verdana",sans-serif;color:black;background:white'> <o:p></o:p></span></p><p class=MsoNormal>Thanks!<o:p></o:p></p><p class=MsoNormal>San Hong<o:p></o:p></p></div></body></html>