-
Bug
-
Resolution: Fixed
-
P2
-
9
-
b106
-
x86
-
Verified
RegisterSaver::save_live_registers() and RegisterSaver::restore_live_registers() are used by the safepoint handling code to save and restore registers. The following code is emitted to save and restore xmm registers on 32 bit:
Save:
0xf34ca12e: vmovdqu %xmm0,0xb0(%esp)
0xf34ca137: vmovdqu %xmm1,0xc0(%esp)
0xf34ca140: vmovdqu %xmm2,0xd0(%esp)
0xf34ca149: vmovdqu %xmm3,0xe0(%esp)
0xf34ca152: vmovdqu %xmm4,0xf0(%esp)
0xf34ca15b: vmovdqu %xmm5,0x100(%esp)
0xf34ca164: vmovdqu %xmm6,0x110(%esp)
0xf34ca16d: vmovdqu %xmm7,0x120(%esp)
Restore:
0xf34ca247: vmovdqu 0x130(%esp),%xmm0
0xf34ca250: vmovdqu 0x140(%esp),%xmm1
0xf34ca259: vmovdqu 0x150(%esp),%xmm2
0xf34ca262: vmovdqu 0x160(%esp),%xmm3
0xf34ca26b: vmovdqu 0x170(%esp),%xmm4
0xf34ca274: vmovdqu 0x180(%esp),%xmm5
0xf34ca27d: vmovdqu 0x190(%esp),%xmm6
0xf34ca286: vmovdqu 0x1a0(%esp),%xmm7
The stack offsets for the restore operations are wrong, causing the xmm registers to contain wrong values.
Save:
0xf34ca12e: vmovdqu %xmm0,0xb0(%esp)
0xf34ca137: vmovdqu %xmm1,0xc0(%esp)
0xf34ca140: vmovdqu %xmm2,0xd0(%esp)
0xf34ca149: vmovdqu %xmm3,0xe0(%esp)
0xf34ca152: vmovdqu %xmm4,0xf0(%esp)
0xf34ca15b: vmovdqu %xmm5,0x100(%esp)
0xf34ca164: vmovdqu %xmm6,0x110(%esp)
0xf34ca16d: vmovdqu %xmm7,0x120(%esp)
Restore:
0xf34ca247: vmovdqu 0x130(%esp),%xmm0
0xf34ca250: vmovdqu 0x140(%esp),%xmm1
0xf34ca259: vmovdqu 0x150(%esp),%xmm2
0xf34ca262: vmovdqu 0x160(%esp),%xmm3
0xf34ca26b: vmovdqu 0x170(%esp),%xmm4
0xf34ca274: vmovdqu 0x180(%esp),%xmm5
0xf34ca27d: vmovdqu 0x190(%esp),%xmm6
0xf34ca286: vmovdqu 0x1a0(%esp),%xmm7
The stack offsets for the restore operations are wrong, causing the xmm registers to contain wrong values.
- duplicates
-
JDK-8148665 compiler/runtime/7196199/Test7196199.java nightly test execution failure
-
- Closed
-
- relates to
-
JDK-8142980 SKX SpecJvm2008 - Derby
-
- Resolved
-
-
JDK-8258703 Incorrect 512-bit vector registers restore on x86_32
-
- Resolved
-
-
JDK-8149109 [TESTBUG] TestRegisterRestoring.java fails with "VM option 'SafepointALot' is develop"
-
- Resolved
-
-
JDK-8260576 Typo in compiler/runtime/safepoints/TestRegisterRestoring.java
-
- Resolved
-