RFR: 8256215: Shenandoah: re-organize saving/restoring machine state in assembler code

Zhengyu Gu zgu at openjdk.java.net
Wed Jan 27 13:08:40 UTC 2021


On Wed, 11 Nov 2020 19:00:52 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:

> $ CONF=linux-x86-server-fastdebug make images run-test TEST=compiler/c1/Test6855215.java TEST_VM_OPTS="-XX:+UseShenandoahGC"
> 
> # Internal Error (/home/shade/trunks/jdk/src/hotspot/cpu/x86/assembler_x86.cpp:3047), pid=1427307, tid=1427311
> # Error: assert(VM_Version::supports_sse2()) failed
> 
> V [libjvm.so+0x53f9e8] Assembler::movsd(Address, XMMRegisterImpl*)+0x168
> V [libjvm.so+0x14647bd] save_xmm_registers(MacroAssembler*)+0x9d
> V [libjvm.so+0x1465d8f] ShenandoahBarrierSetAssembler::load_reference_barrier(MacroAssembler*, RegisterImpl*, Address, ShenandoahBarrierSet::AccessKind)+0x91f
> 
> This only affects x86_32, as x86_64 uses at least UseSSE >= 2 at all times.
> 
> Additional testing:
>  - [ ] `tier1`, Linux x86_64 `-XX:+UseShenandoahGC`
>  - [ ] `tier1`, Linux x86_32 `-XX:+UseShenandoahGC`
>  - [ ] `tier1`, Linux x86_32 `-XX:+UseShenandoahGC -XX:UseSSE=0`
>  - [ ] `tier1`, Linux x86_32 `-XX:+UseShenandoahGC -XX:UseSSE=1`

Probably, no processor that does not support sse2, but should we always use VM_version::supports_sse(x)?  instead of UseSSE(x)

-------------

PR: https://git.openjdk.java.net/jdk/pull/1172


More information about the shenandoah-dev mailing list