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