RFR: Make in_cset checks use signed bytes to match C2 better
Roman Kennke
rkennke at redhat.com
Wed Jun 20 11:36:28 UTC 2018
Yes, but maybe hold on until Roland's big one landed?
Roman
> This makes the similar change we did for gc_state checks earlier:
> http://hg.openjdk.java.net/shenandoah/jdk/rev/cd5a82e54311
>
> It turns this:
>
> +0: movzbl (%r11,%r10,1),%r10d
> +5: test %r10d,%r10d
> +8: je 0x00007f7b0fc44e15
> +10: mov %r8,%rdi
>
> ...into this:
>
>
> +0: cmpb $0x0,(%r11,%r10,1)
> +5: je 0x00007f3de0ce067e
> +7: mov %r8,%rdi
>
> Fix:
>
> diff -r 50cc7d208f81 src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp
> --- a/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp Wed Jun 20 13:23:30 2018 +0200
> +++ b/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp Wed Jun 20 13:29:11 2018 +0200
> @@ -3931,7 +3931,7 @@
> uint in_cset_fast_test_idx = Compile::AliasIdxRaw;
> const TypePtr* in_cset_fast_test_adr_type = NULL; // debug-mode-only argument
> debug_only(in_cset_fast_test_adr_type = phase->C->get_adr_type(in_cset_fast_test_idx));
> - Node* in_cset_fast_test_load = new LoadUBNode(c, raw_mem, in_cset_fast_test_adr,
> in_cset_fast_test_adr_type, TypeInt::BOOL, MemNode::unordered);
> + Node* in_cset_fast_test_load = new LoadBNode(c, raw_mem, in_cset_fast_test_adr,
> in_cset_fast_test_adr_type, TypeInt::BYTE, MemNode::unordered);
> phase->register_new_node(in_cset_fast_test_load, c);
> Node* in_cset_fast_test_cmp = new CmpINode(in_cset_fast_test_load, phase->igvn().zerocon(T_INT));
> phase->register_new_node(in_cset_fast_test_cmp, c);
>
> Testing: tier3_gc_shenandoah
>
> Thanks,
> -Aleksey
>
More information about the shenandoah-dev
mailing list