<div dir="ltr">I am not sure if DTraceAllocProbes is a live code, but I think this is a bug.<div>dtrace_object_alloc has changed to receive size argument in JDK8.</div><div>This code only passes oop to dtrace_object_alloc. RDX has the size but it needs to be saved.</div><div>I don't use DTrace, but it looks broken. If someone sponsor this is a right fix, I'll create a webrev.<br><div><br></div><div><div><font face="monospace, monospace">diff -r f06c7b654d63 src/cpu/x86/vm/templateTable_x86_32.cpp</font></div><div><font face="monospace, monospace">--- a/src/cpu/x86/vm/templateTable_x86_32.cpp<span class="" style="white-space:pre">     </span>Thu Jul 31 09:58:53 2014 +0100</font></div><div><font face="monospace, monospace">+++ b/src/cpu/x86/vm/templateTable_x86_32.cpp<span class="" style="white-space:pre"> </span>Fri Feb 13 17:14:57 2015 -0800</font></div><div><font face="monospace, monospace">@@ -3288,6 +3288,7 @@</font></div><div><font face="monospace, monospace">     // The object is initialized before the header.  If the object size is</font></div><div><font face="monospace, monospace">     // zero, go directly to the header initialization.</font></div><div><font face="monospace, monospace">     __ bind(initialize_object);</font></div><div><font face="monospace, monospace">+    __ push(rdx);  // save object size</font></div><div><font face="monospace, monospace">     __ decrement(rdx, sizeof(oopDesc));</font></div><div><font face="monospace, monospace">     __ jcc(Assembler::zero, initialize_header);</font></div><div><font face="monospace, monospace"> </font></div><div><font face="monospace, monospace">@@ -3328,13 +3329,14 @@</font></div><div><font face="monospace, monospace">       __ pop(rcx);   // get saved klass back in the register.</font></div><div><font face="monospace, monospace">     }</font></div><div><font face="monospace, monospace">     __ store_klass(rax, rcx);  // klass</font></div><div><font face="monospace, monospace">+    __ pop(rdx);  // restore object size to rdx</font></div><div><font face="monospace, monospace"> </font></div><div><font face="monospace, monospace">     {</font></div><div><font face="monospace, monospace">       SkipIfEqual skip_if(_masm, &DTraceAllocProbes, 0);</font></div><div><font face="monospace, monospace">       // Trigger dtrace event for fastpath</font></div><div><font face="monospace, monospace">       __ push(atos);</font></div><div><font face="monospace, monospace">       __ call_VM_leaf(</font></div><div><font face="monospace, monospace">-           CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_object_alloc), rax);</font></div><div><font face="monospace, monospace">+           CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_object_alloc), rax, rdx);</font></div><div><font face="monospace, monospace">       __ pop(atos);</font></div><div><font face="monospace, monospace">     }</font></div><div><font face="monospace, monospace"> </font></div><div><font face="monospace, monospace">diff -r f06c7b654d63 src/cpu/x86/vm/templateTable_x86_64.cpp</font></div><div><font face="monospace, monospace">--- a/src/cpu/x86/vm/templateTable_x86_64.cpp<span class="" style="white-space:pre"> </span>Thu Jul 31 09:58:53 2014 +0100</font></div><div><font face="monospace, monospace">+++ b/src/cpu/x86/vm/templateTable_x86_64.cpp<span class="" style="white-space:pre"> </span>Fri Feb 13 17:14:57 2015 -0800</font></div><div><font face="monospace, monospace">@@ -3352,6 +3352,7 @@</font></div><div><font face="monospace, monospace">     // The object is initialized before the header.  If the object size is</font></div><div><font face="monospace, monospace">     // zero, go directly to the header initialization.</font></div><div><font face="monospace, monospace">     __ bind(initialize_object);</font></div><div><font face="monospace, monospace">+    __ movl(rbx, rdx);  // save object size to rbx</font></div><div><font face="monospace, monospace">     __ decrementl(rdx, sizeof(oopDesc));</font></div><div><font face="monospace, monospace">     __ jcc(Assembler::zero, initialize_header);</font></div><div><font face="monospace, monospace"> </font></div><div><font face="monospace, monospace">@@ -3386,7 +3387,7 @@</font></div><div><font face="monospace, monospace">       // Trigger dtrace event for fastpath</font></div><div><font face="monospace, monospace">       __ push(atos); // save the return value</font></div><div><font face="monospace, monospace">       __ call_VM_leaf(</font></div><div><font face="monospace, monospace">-           CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_object_alloc), rax);</font></div><div><font face="monospace, monospace">+           CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_object_alloc), rax, rbx);</font></div><div><font face="monospace, monospace">       __ pop(atos); // restore the return value</font></div><div><font face="monospace, monospace"> </font></div><div><font face="monospace, monospace">     }</font></div></div></div><div><br></div></div>