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