RFR: Fix ExtendedDTraceProbes with Shenandoah

Zhengyu Gu zgu at redhat.com
Tue Sep 18 22:35:10 UTC 2018


Shenandoah crashes with -XX:+ExtendedDTraceProbes in C1, that is due to 
register clobbering.

Following patch fixes the issue, by setting the base vreg destroyed, 
that avoid generating unwanted/bad store.

Webrev: 
http://cr.openjdk.java.net/~zgu/shenandoah/extended_dtrace_probes/webrev.00/

Test:
    tier3_gc_shenandoah with -XX:-ExtendedDTraceProbes (fastdebug and 
release)

    tier2_gc_shenandoah with -XX:+ExtendedDtraceProbes (fastdebug and 
release) (takes much longer to run)


Before fix:
  130 rtcall SharedRuntime::dtrace_method_entry
  132 move [stack:16|L] [rdi|L]
  134 cmp [EQ] [rdi|L] [obj:0x0000000000000000|L]
  136 branch [EQ] [label:0x00007f1874354038]
  138 move [Base:[rdi|L] Disp: -8|^@] [rdi|L]
  140 label [label:0x00007f1874354038]
      move [dbl_stack:18|J] [rbxrbx|J]
  142 move [Base:[rdi|L] Index:[rbxrbx|J] Disp: 0|L] [rax|L]
  144 membar_acquire
  146 move [lng:16|J] [rdirdi|J]                        <==== RDI = 0x10
  148 cmp [NE] [rbxrbx|J] [rdirdi|J]
  150 branch [NE] [label:0x00007f18743543d8]
      move [stack:16|L] [rdi|L]
  152 cmp [EQ] [rdi|L] [obj:0x0000000000000000|L]
  154 branch [EQ] [label:0x00007f18743543d8]
  156 move [Base:[rdi|L] Disp: 8|^@] [rsi|M]
  158 move [Base:[rsi|M] Disp: 395|B] [rsi|I]
  160 cmp [EQ] [rsi|I] [int:0|I]
  162 branch [EQ] [label:0x00007f18743543d8]
  164 move [Base:[r15r15|J] Disp: 56|Z] [rsi|I]
  166 cmp [NE] [rsi|I] [int:0|I]
  168 branch [NE] [ShenandoahPreBarrierStub: 0x00007f1874354c50]
  170 label [label:0x00007f1874354cf0]
  172 label [label:0x00007f18743543d8]
  174 move [metadata:0x00007f19a08d19f8|M] [rsi|M]
      move [rdi|L] [stack:16|L]                    <===== BAD Store
  176 move [r15r15|J] [rdirdi|J]
      move [rax|L] [stack:20|L]
  180 rtcall SharedRuntime::dtrace_method_exit
      move [stack:20|L] [rax|L]
  182 checkcast [rax|L] java/util/concurrent/ConcurrentHashMap$Node 
[rsi|L] [rdi|L]  [rbx|L]  [bci:18]
      move [rbx|L] [stack:22|L]
  184 move [metadata:0x00007f19a095a740|M] [rsi|M]
  186 move [r15r15|J] [rdirdi|J]


After fix:

  126 move [r15r15|J] [rdirdi|J]
  130 rtcall SharedRuntime::dtrace_method_entry
  132 move [stack:16|L] [rdi|L]
  134 cmp [EQ] [rdi|L] [obj:0x0000000000000000|L]
  136 branch [EQ] [label:0x00007f47bc354058]
  138 move [Base:[rdi|L] Disp: -8|^@] [rdi|L]
  140 label [label:0x00007f47bc354058]
      move [dbl_stack:18|J] [rbxrbx|J]
  142 move [Base:[rdi|L] Index:[rbxrbx|J] Disp: 0|L] [rax|L]
  144 membar_acquire
  146 move [lng:16|J] [rdirdi|J]                   <=== rdi = 16
  148 cmp [NE] [rbxrbx|J] [rdirdi|J]
  150 branch [NE] [label:0x00007f47bc3543f8]
  152 move [stack:16|L] [rdi|L]
  154 cmp [EQ] [rdi|L] [obj:0x0000000000000000|L]
  156 branch [EQ] [label:0x00007f47bc3543f8]
  158 move [Base:[rdi|L] Disp: 8|^@] [rdi|M]
  160 move [Base:[rdi|M] Disp: 395|B] [rdi|I]
  162 cmp [EQ] [rdi|I] [int:0|I]
  164 branch [EQ] [label:0x00007f47bc3543f8]
  166 move [Base:[r15r15|J] Disp: 56|Z] [rdi|I]
  168 cmp [NE] [rdi|I] [int:0|I]
  170 branch [NE] [ShenandoahPreBarrierStub: 0x00007f47bc354cc0]
  172 label [label:0x00007f47bc354d60]
  174 label [label:0x00007f47bc3543f8]
  176 move [metadata:0x00007f48e87cf9f8|M] [rsi|M]
  178 move [r15r15|J] [rdirdi|J]                 <=== no more store
      move [rax|L] [stack:20|L]
  182 rtcall SharedRuntime::dtrace_method_exit
      move [stack:20|L] [rax|L]
  184 checkcast [rax|L] java/util/concurrent/ConcurrentHashMap$Node 
[rsi|L] [rdi|L]  [rbx|L]  [bci:18]


Thanks,

-Zhengyu


More information about the shenandoah-dev mailing list