<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=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (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;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        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.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.PlainTextChar
        {mso-style-name:"Plain Text Char";
        mso-style-priority:99;
        mso-style-link:"Plain Text";
        font-family:"Calibri",sans-serif;}
span.EmailStyle19
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:2089114500;
        mso-list-type:hybrid;
        mso-list-template-ids:-1861328556 -427400740 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:27.0pt;
        text-indent:-.25in;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:63.0pt;
        text-indent:-.25in;}
@list l0:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        margin-left:99.0pt;
        text-indent:-9.0pt;}
@list l0:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:135.0pt;
        text-indent:-.25in;}
@list l0:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:171.0pt;
        text-indent:-.25in;}
@list l0:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        margin-left:207.0pt;
        text-indent:-9.0pt;}
@list l0:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:243.0pt;
        text-indent:-.25in;}
@list l0:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:279.0pt;
        text-indent:-.25in;}
@list l0:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        margin-left:315.0pt;
        text-indent:-9.0pt;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></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="color:#1F497D">Just a reminder…<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Can someone please review this?<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Regards,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Alok<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> hotspot-gc-dev [mailto:hotspot-gc-dev-bounces@openjdk.java.net]
<b>On Behalf Of </b>Sharma, Alok Kumar (OSTL)<br>
<b>Sent:</b> Monday, September 19, 2016 1:46 PM<br>
<b>To:</b> hotspot-gc-dev@openjdk.java.net<br>
<b>Subject:</b> SerialGC: Tracing of object movement during SerialGC<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoPlainText">As part of the work on a particular bug, we felt a need for tracing logs in Hotspot serial GC to observe Java object movement. As a result, the serial GC tracing logs were enhanced to provide information about when:<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText" style="margin-left:27.0pt;text-indent:-.25in;mso-list:l0 level1 lfo2">
<![if !supportLists]><span style="mso-list:Ignore">1.<span style="font:7.0pt "Times New Roman"">      
</span></span><![endif]>Objects are marked<o:p></o:p></p>
<p class="MsoPlainText" style="margin-left:27.0pt;text-indent:-.25in;mso-list:l0 level1 lfo2">
<![if !supportLists]><span style="mso-list:Ignore">2.<span style="font:7.0pt "Times New Roman"">      
</span></span><![endif]>Pointers pointing to these objects are adjusted<o:p></o:p></p>
<p class="MsoPlainText" style="margin-left:27.0pt;text-indent:-.25in;mso-list:l0 level1 lfo2">
<![if !supportLists]><span style="mso-list:Ignore">3.<span style="font:7.0pt "Times New Roman"">      
</span></span><![endif]>Moving of objects<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Usage: <o:p></o:p></p>
<p class="MsoPlainText">jdk9/build/linux-x86_64-rmal-server-slowdebug/jdk/bin/java -Xlog:gc+dump=trace -XX:+UseSerialGC -Xmx4m -XX:GCTraceFunctionFilter="java/lang/String" <test><o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Regards,<o:p></o:p></p>
<p class="MsoPlainText">Alok<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Below is the mercurial diff with openJDK 9<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">hg diff  jdk9b132_4Aug2016/hotspot/src/<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">diff -r a3a3621d555a src/share/vm/gc/serial/defNewGeneration.cpp<o:p></o:p></p>
<p class="MsoPlainText">--- a/src/share/vm/gc/serial/defNewGeneration.cpp     Thu Aug 04 17:32:52 2016 +0000<o:p></o:p></p>
<p class="MsoPlainText">+++ b/src/share/vm/gc/serial/defNewGeneration.cpp Mon Sep 19 11:28:49 2016 +0530<o:p></o:p></p>
<p class="MsoPlainText">@@ -762,6 +762,8 @@<o:p></o:p></p>
<p class="MsoPlainText">   }<o:p></o:p></p>
<p class="MsoPlainText">}<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">+extern Symbol *serial_class_trace_name;<o:p></o:p></p>
<p class="MsoPlainText">+<o:p></o:p></p>
<p class="MsoPlainText">oop DefNewGeneration::copy_to_survivor_space(oop old) {<o:p></o:p></p>
<p class="MsoPlainText">   assert(is_in_reserved(old) && !old->is_forwarded(),<o:p></o:p></p>
<p class="MsoPlainText">          "shouldn't be scavenging this oop"); @@ -793,6 +795,20 @@<o:p></o:p></p>
<p class="MsoPlainText">     age_table()->add(obj, s);<o:p></o:p></p>
<p class="MsoPlainText">   }<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">+  if(log_develop_is_enabled(Trace, gc, dump)) {<o:p></o:p></p>
<p class="MsoPlainText">+    Klass *klass = obj->klass();<o:p></o:p></p>
<p class="MsoPlainText">+    if(klass) {<o:p></o:p></p>
<p class="MsoPlainText">+        Symbol *name = klass->name();<o:p></o:p></p>
<p class="MsoPlainText">+        if((GCTraceOnlyClass == NULL) ||<o:p></o:p></p>
<p class="MsoPlainText">+           (name && (serial_class_trace_name == name))) {<o:p></o:p></p>
<p class="MsoPlainText">+<o:p></o:p></p>
<p class="MsoPlainText">+            log_develop_trace(gc, dump)("copy_to_survivor_space  old %p new %p ",old, obj);<o:p></o:p></p>
<p class="MsoPlainText">+            log_develop_trace(gc, dump)("obj name %s \n", name->as_C_string());<o:p></o:p></p>
<p class="MsoPlainText">+         }<o:p></o:p></p>
<p class="MsoPlainText">+     }<o:p></o:p></p>
<p class="MsoPlainText">+  }<o:p></o:p></p>
<p class="MsoPlainText">+<o:p></o:p></p>
<p class="MsoPlainText">+<o:p></o:p></p>
<p class="MsoPlainText">   // Done, insert forward pointer to obj in this header<o:p></o:p></p>
<p class="MsoPlainText">   old->forward_to(obj);<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">diff -r a3a3621d555a src/share/vm/gc/serial/markSweep.cpp<o:p></o:p></p>
<p class="MsoPlainText">--- a/src/share/vm/gc/serial/markSweep.cpp    Thu Aug 04 17:32:52 2016 +0000<o:p></o:p></p>
<p class="MsoPlainText">+++ b/src/share/vm/gc/serial/markSweep.cpp Mon Sep 19 11:28:49 2016 +0530<o:p></o:p></p>
<p class="MsoPlainText">@@ -64,6 +64,14 @@<o:p></o:p></p>
<p class="MsoPlainText">CLDToOopClosure               MarkSweep::follow_cld_closure(&mark_and_push_closure);<o:p></o:p></p>
<p class="MsoPlainText">CLDToOopClosure               MarkSweep::adjust_cld_closure(&adjust_pointer_closure);<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">+Symbol *serial_class_trace_name = NULL;<o:p></o:p></p>
<p class="MsoPlainText">+<o:p></o:p></p>
<p class="MsoPlainText">+void<o:p></o:p></p>
<p class="MsoPlainText">+SetTraceSymbol(const char *trace_name) {<o:p></o:p></p>
<p class="MsoPlainText">+    Thread* __the_thread__ = Thread::current_or_null();<o:p></o:p></p>
<p class="MsoPlainText">+    serial_class_trace_name = SymbolTable::new_symbol(trace_name,
<o:p></o:p></p>
<p class="MsoPlainText">+strlen(trace_name), CHECK); }<o:p></o:p></p>
<p class="MsoPlainText">+<o:p></o:p></p>
<p class="MsoPlainText">inline void MarkSweep::mark_object(oop obj) {  #if INCLUDE_ALL_GCS<o:p></o:p></p>
<p class="MsoPlainText">   if (G1StringDedup::is_enabled()) {<o:p></o:p></p>
<p class="MsoPlainText">@@ -77,6 +85,21 @@<o:p></o:p></p>
<p class="MsoPlainText">   markOop mark = obj->mark();<o:p></o:p></p>
<p class="MsoPlainText">   obj->set_mark(markOopDesc::prototype()->set_marked());<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">+  if(log_develop_is_enabled(Trace, gc, dump)) {<o:p></o:p></p>
<p class="MsoPlainText">+      Klass *klass = obj->klass();<o:p></o:p></p>
<p class="MsoPlainText">+<o:p></o:p></p>
<p class="MsoPlainText">+      if(klass) {<o:p></o:p></p>
<p class="MsoPlainText">+          Symbol *name = klass->name();<o:p></o:p></p>
<p class="MsoPlainText">+          if(name) {<o:p></o:p></p>
<p class="MsoPlainText">+            if((GCTraceOnlyClass == NULL) ||<o:p></o:p></p>
<p class="MsoPlainText">+                strstr(strName, GCTraceOnlyClass)) {<o:p></o:p></p>
<p class="MsoPlainText">+                log_develop_trace(gc, dump) ("Mark object obj %p obj class name %s", obj, name->as_C_string());<o:p></o:p></p>
<p class="MsoPlainText">+            }<o:p></o:p></p>
<p class="MsoPlainText">+          }<o:p></o:p></p>
<p class="MsoPlainText">+      }<o:p></o:p></p>
<p class="MsoPlainText">+<o:p></o:p></p>
<p class="MsoPlainText">+  }<o:p></o:p></p>
<p class="MsoPlainText">+<o:p></o:p></p>
<p class="MsoPlainText">   if (mark->must_be_preserved(obj)) {<o:p></o:p></p>
<p class="MsoPlainText">     preserve_mark(obj, mark);<o:p></o:p></p>
<p class="MsoPlainText">   }<o:p></o:p></p>
<p class="MsoPlainText">diff -r a3a3621d555a src/share/vm/gc/serial/markSweep.inline.hpp<o:p></o:p></p>
<p class="MsoPlainText">--- a/src/share/vm/gc/serial/markSweep.inline.hpp       Thu Aug 04 17:32:52 2016 +0000<o:p></o:p></p>
<p class="MsoPlainText">+++ b/src/share/vm/gc/serial/markSweep.inline.hpp    Mon Sep 19 11:28:49 2016 +0530<o:p></o:p></p>
<p class="MsoPlainText">@@ -46,6 +46,8 @@<o:p></o:p></p>
<p class="MsoPlainText">   return obj->ms_adjust_pointers();<o:p></o:p></p>
<p class="MsoPlainText">}<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">+extern Symbol *serial_class_trace_name;<o:p></o:p></p>
<p class="MsoPlainText">+<o:p></o:p></p>
<p class="MsoPlainText">template <class T> inline void MarkSweep::adjust_pointer(T* p) {<o:p></o:p></p>
<p class="MsoPlainText">   T heap_oop = oopDesc::load_heap_oop(p);<o:p></o:p></p>
<p class="MsoPlainText">   if (!oopDesc::is_null(heap_oop)) {<o:p></o:p></p>
<p class="MsoPlainText">@@ -66,7 +68,22 @@<o:p></o:p></p>
<p class="MsoPlainText">         oopDesc::encode_store_heap_oop_not_null(p, new_obj);<o:p></o:p></p>
<p class="MsoPlainText">       }<o:p></o:p></p>
<p class="MsoPlainText">     }<o:p></o:p></p>
<p class="MsoPlainText">+<o:p></o:p></p>
<p class="MsoPlainText">+  if(log_develop_is_enabled(Trace, gc, dump)) {<o:p></o:p></p>
<p class="MsoPlainText">+      Klass *klass = obj->klass();<o:p></o:p></p>
<p class="MsoPlainText">+<o:p></o:p></p>
<p class="MsoPlainText">+      if(klass) {<o:p></o:p></p>
<p class="MsoPlainText">+        Symbol *name = klass->name();<o:p></o:p></p>
<p class="MsoPlainText">+        if((GCTraceOnlyClass == NULL) || <o:p></o:p></p>
<p class="MsoPlainText">+           (name && (serial_class_trace_name == name))) {<o:p></o:p></p>
<p class="MsoPlainText">+            log_develop_trace(gc, dump)("adjust_pointer ptr %p obj class name %s obj %p new_obj %p \n", p, name->as_C_string(), obj, new_obj);<o:p></o:p></p>
<p class="MsoPlainText">+        } else {<o:p></o:p></p>
<p class="MsoPlainText">+          log_develop_trace(gc, dump)("adjust_pointer Corrupted klass? name probably not correct # obj %p klass %p name %p \n",obj, klass, name);<o:p></o:p></p>
<p class="MsoPlainText">+        }<o:p></o:p></p>
<p class="MsoPlainText">+      }<o:p></o:p></p>
<p class="MsoPlainText">+    }<o:p></o:p></p>
<p class="MsoPlainText">   }<o:p></o:p></p>
<p class="MsoPlainText">+<o:p></o:p></p>
<p class="MsoPlainText">}<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">#endif // SHARE_VM_GC_SERIAL_MARKSWEEP_INLINE_HPP<o:p></o:p></p>
<p class="MsoPlainText">diff -r a3a3621d555a src/share/vm/gc/shared/genOopClosures.inline.hpp<o:p></o:p></p>
<p class="MsoPlainText">--- a/src/share/vm/gc/shared/genOopClosures.inline.hpp           Thu Aug 04 17:32:52 2016 +0000<o:p></o:p></p>
<p class="MsoPlainText">+++ b/src/share/vm/gc/shared/genOopClosures.inline.hpp       Mon Sep 19 11:28:49 2016 +0530<o:p></o:p></p>
<p class="MsoPlainText">@@ -99,6 +99,8 @@<o:p></o:p></p>
<p class="MsoPlainText">inline void ScanClosure::do_oop_nv(oop* p)       { ScanClosure::do_oop_work(p); }<o:p></o:p></p>
<p class="MsoPlainText">inline void ScanClosure::do_oop_nv(narrowOop* p) { ScanClosure::do_oop_work(p); }<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">+extern Symbol *serial_class_trace_name;<o:p></o:p></p>
<p class="MsoPlainText">+<o:p></o:p></p>
<p class="MsoPlainText">// NOTE! Any changes made here should also be made  // in ScanClosure::do_oop_work()  template <class T> inline void FastScanClosure::do_oop_work(T* p) { @@ -111,6 +113,18 @@<o:p></o:p></p>
<p class="MsoPlainText">       oop new_obj = obj->is_forwarded() ? obj->forwardee()<o:p></o:p></p>
<p class="MsoPlainText">                                         : _g->copy_to_survivor_space(obj);<o:p></o:p></p>
<p class="MsoPlainText">       oopDesc::encode_store_heap_oop_not_null(p, new_obj);<o:p></o:p></p>
<p class="MsoPlainText">+      if(log_develop_is_enabled(Trace, gc, dump)) {<o:p></o:p></p>
<p class="MsoPlainText">+        Klass *klass = obj->klass();<o:p></o:p></p>
<p class="MsoPlainText">+        if(klass) {<o:p></o:p></p>
<p class="MsoPlainText">+            Symbol *name = klass->name();<o:p></o:p></p>
<p class="MsoPlainText">+            if((GCTraceOnlyClass == NULL) || <o:p></o:p></p>
<p class="MsoPlainText">+               (name && (serial_class_trace_name == name))) {<o:p></o:p></p>
<p class="MsoPlainText">+                 log_develop_trace(gc, dump)("FastScanClosure Updating pointer p %p old %p new %p ",p, obj, new_obj);<o:p></o:p></p>
<p class="MsoPlainText">+                 log_develop_trace(gc, dump)("obj name %s \n", name->as_C_string() );<o:p></o:p></p>
<p class="MsoPlainText">+             }<o:p></o:p></p>
<p class="MsoPlainText">+         }<o:p></o:p></p>
<p class="MsoPlainText">+      }<o:p></o:p></p>
<p class="MsoPlainText">+<o:p></o:p></p>
<p class="MsoPlainText">       if (is_scanning_a_klass()) {<o:p></o:p></p>
<p class="MsoPlainText">         do_klass_barrier();<o:p></o:p></p>
<p class="MsoPlainText">       } else if (_gc_barrier) {<o:p></o:p></p>
<p class="MsoPlainText">diff -r a3a3621d555a src/share/vm/runtime/arguments.cpp<o:p></o:p></p>
<p class="MsoPlainText">--- a/src/share/vm/runtime/arguments.cpp       Thu Aug 04 17:32:52 2016 +0000<o:p></o:p></p>
<p class="MsoPlainText">+++ b/src/share/vm/runtime/arguments.cpp    Mon Sep 19 11:28:49 2016 +0530<o:p></o:p></p>
<p class="MsoPlainText">@@ -1949,6 +1949,8 @@<o:p></o:p></p>
<p class="MsoPlainText">   log_trace(gc)("MarkStackSize: %uk  MarkStackSizeMax: %uk", (unsigned int) (MarkStackSize / K), (uint) (MarkStackSizeMax / K));  }<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">+extern void SetTraceSymbol(const char *);<o:p></o:p></p>
<p class="MsoPlainText">+<o:p></o:p></p>
<p class="MsoPlainText">void Arguments::set_gc_specific_flags() {  #if INCLUDE_ALL_GCS<o:p></o:p></p>
<p class="MsoPlainText">   // Set per-collector flags<o:p></o:p></p>
<p class="MsoPlainText">@@ -1973,6 +1975,12 @@<o:p></o:p></p>
<p class="MsoPlainText">#endif // INCLUDE_ALL_GCS<o:p></o:p></p>
<p class="MsoPlainText">}<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">+void Arguments::set_gc_specific_flags_after_globals() {<o:p></o:p></p>
<p class="MsoPlainText">+  if(GCTraceOnlyClass != NULL) {<o:p></o:p></p>
<p class="MsoPlainText">+    SetTraceSymbol(GCTraceOnlyClass);<o:p></o:p></p>
<p class="MsoPlainText">+  }<o:p></o:p></p>
<p class="MsoPlainText">+}<o:p></o:p></p>
<p class="MsoPlainText">+<o:p></o:p></p>
<p class="MsoPlainText">julong Arguments::limit_by_allocatable_memory(julong limit) {<o:p></o:p></p>
<p class="MsoPlainText">   julong max_allocatable;<o:p></o:p></p>
<p class="MsoPlainText">   julong result = limit;<o:p></o:p></p>
<p class="MsoPlainText">diff -r a3a3621d555a src/share/vm/runtime/arguments.hpp<o:p></o:p></p>
<p class="MsoPlainText">--- a/src/share/vm/runtime/arguments.hpp       Thu Aug 04 17:32:52 2016 +0000<o:p></o:p></p>
<p class="MsoPlainText">+++ b/src/share/vm/runtime/arguments.hpp   Mon Sep 19 11:28:49 2016 +0530<o:p></o:p></p>
<p class="MsoPlainText">@@ -603,6 +603,7 @@<o:p></o:p></p>
<p class="MsoPlainText">   static jint adjust_after_os();<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">   static void set_gc_specific_flags();<o:p></o:p></p>
<p class="MsoPlainText">+  static void set_gc_specific_flags_after_globals();<o:p></o:p></p>
<p class="MsoPlainText">   static bool gc_selected(); // whether a gc has been selected<o:p></o:p></p>
<p class="MsoPlainText">   static void select_gc_ergonomically();  #if INCLUDE_JVMCI diff -r a3a3621d555a src/share/vm/runtime/globals.hpp<o:p></o:p></p>
<p class="MsoPlainText">--- a/src/share/vm/runtime/globals.hpp               Thu Aug 04 17:32:52 2016 +0000<o:p></o:p></p>
<p class="MsoPlainText">+++ b/src/share/vm/runtime/globals.hpp           Mon Sep 19 11:28:49 2016 +0530<o:p></o:p></p>
<p class="MsoPlainText">@@ -1616,6 +1616,11 @@<o:p></o:p></p>
<p class="MsoPlainText">           "blocked by the GC locker")                                       \<o:p></o:p></p>
<p class="MsoPlainText">           range(0, max_uintx)                                               \<o:p></o:p></p>
<p class="MsoPlainText">                                                                             \<o:p></o:p></p>
<p class="MsoPlainText">+  product(ccstr, GCTraceOnlyClass, NULL,                               \<o:p></o:p></p>
<p class="MsoPlainText">+          "Function name on which the GC internal tracing is done. Default" \<o:p></o:p></p>
<p class="MsoPlainText">+          "is to be empty and print GC tracing for all functions. "         \<o:p></o:p></p>
<p class="MsoPlainText">+          )                                                                \<o:p></o:p></p>
<p class="MsoPlainText">+                                                                           
<o:p></o:p></p>
<p class="MsoPlainText">+ \<o:p></o:p></p>
<p class="MsoPlainText">   product(bool, UseCMSBestFit, true,                                        \<o:p></o:p></p>
<p class="MsoPlainText">           "Use CMS best fit allocation strategy")                           \<o:p></o:p></p>
<p class="MsoPlainText">                                                                             \ diff -r a3a3621d555a src/share/vm/runtime/thread.cpp<o:p></o:p></p>
<p class="MsoPlainText">--- a/src/share/vm/runtime/thread.cpp                Thu Aug 04 17:32:52 2016 +0000<o:p></o:p></p>
<p class="MsoPlainText">+++ b/src/share/vm/runtime/thread.cpp            Mon Sep 19 11:28:49 2016 +0530<o:p></o:p></p>
<p class="MsoPlainText">@@ -3626,6 +3626,8 @@<o:p></o:p></p>
<p class="MsoPlainText">     return status;<o:p></o:p></p>
<p class="MsoPlainText">   }<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">+  Arguments::set_gc_specific_flags_after_globals();<o:p></o:p></p>
<p class="MsoPlainText">+<o:p></o:p></p>
<p class="MsoPlainText">   if (TRACE_INITIALIZE() != JNI_OK) {<o:p></o:p></p>
<p class="MsoPlainText">     vm_exit_during_initialization("Failed to initialize tracing backend");<o:p></o:p></p>
<p class="MsoPlainText">   }<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>