RFR(sh/jdk8): Fix register allocation for thread register is 32bit LRB
Roman Kennke
rkennke at redhat.com
Tue Dec 1 23:47:51 UTC 2020
Am 01.12.20 um 22:52 schrieb Zhengyu Gu:
>
>
> On 12/1/20 2:46 PM, Roman Kennke wrote:
>> This is a shenandoah/jdk8-specific fix. SFX barriers caused the
>> regression that the thread register in 32bit clashes with the index
>> register of the source address. Apparently, registers are shuffled
>> differently in later JDK interpreters. With a little bit of
>> experimentation I found that we can use rsi instead in JDK8.
>>
>> http://cr.openjdk.java.net/~rkennke/shjdk8-fix32-regalloc-thread/webrev.00/
>>
>>
>> Testing: hotspot_gc_shenandoah (x86_32) and specjvm fast run. This
>> should catch mistakes there reliably, because all of the interpreter
>> is generated at the start, any clashes should be caught by the assert.
>>
>> Ok?
>
>
> 144 Register thread = rsi;
> 145 if (thread == dst) {
> 146 thread = rbx;
> 147 }
> 148 assert_different_registers(dst, src.base(), src.index(), thread);
>
> Line#145 never true, Line#145 - 147 should be removed.
What makes this obvious to you? It is not obvious to me...
Roman
More information about the shenandoah-dev
mailing list