RFR: Make in_cset checks use signed bytes to match C2 better
Roman Kennke
rkennke at redhat.com
Tue Jun 26 17:12:46 UTC 2018
Am 26.06.2018 um 18:13 schrieb Aleksey Shipilev:
> On 06/20/2018 01:34 PM, Aleksey Shipilev wrote:
>> 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
>
> The patch still applies on top of sh/jdk without conflicts and passes tier3_gc_shenandoah. OK to push?
Yes. Thanks!
Roman
More information about the shenandoah-dev
mailing list