-
Bug
-
Resolution: Fixed
-
P4
-
11, 17
-
b08
-
s390x
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8261176 | 11.0.11 | Martin Doerr | P4 | Resolved | Fixed | b02 |
We observed "fatal error: this is not a `NativeMovRegMem' site" in a test which runs without CompressedOops with debug build.
Reason is that NativeMovRegMem::verify() is too strict. With disabled CompressedOops, it checks instructions beyond the 12 Bytes for the patchable load_const. C1 patching stubs place the patching record there so there are no valid instructions. (Note that this was different beforeJDK-8233081.)
Code is fine, verification is wrong. NativeMovRegMem is only used for access_field_patching on s390. The affected code is the patching template which never gets executed.
Stack snippet:
V [libjvm.so+0xf21ca0] NativeMovRegMem::verify()+0x160
V [libjvm.so+0x51a27a] Runtime1::patch_code(JavaThread*, Runtime1::StubID)+0x22ba
V [libjvm.so+0x51ada8] Runtime1::access_field_patching(JavaThread*)+0x48
v ~RuntimeStub::access_field_patching Runtime1 stub
J 691 c1 java.lang.String.<init>([BIILjava/nio/charset/Charset;)V
Reason is that NativeMovRegMem::verify() is too strict. With disabled CompressedOops, it checks instructions beyond the 12 Bytes for the patchable load_const. C1 patching stubs place the patching record there so there are no valid instructions. (Note that this was different before
Code is fine, verification is wrong. NativeMovRegMem is only used for access_field_patching on s390. The affected code is the patching template which never gets executed.
Stack snippet:
V [libjvm.so+0xf21ca0] NativeMovRegMem::verify()+0x160
V [libjvm.so+0x51a27a] Runtime1::patch_code(JavaThread*, Runtime1::StubID)+0x22ba
V [libjvm.so+0x51ada8] Runtime1::access_field_patching(JavaThread*)+0x48
v ~RuntimeStub::access_field_patching Runtime1 stub
J 691 c1 java.lang.String.<init>([BIILjava/nio/charset/Charset;)V
- backported by
-
JDK-8261176 [s390] NativeMovRegMem::verify() fails because it's too strict
- Resolved
- relates to
-
JDK-8233081 C1: PatchingStub for field access copies too much
- Resolved