RFR: Fix ExtendedDTraceProbes with Shenandoah
Roman Kennke
rkennke at redhat.com
Wed Sep 19 09:38:17 UTC 2018
I think it makes sense. Would be good if Roland could look at it too.
Roman
> 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