JDK-8078113 : 8011102 changes may cause incorrect results.
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 7u80,8u60,9
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic
  • CPU: x86
  • Submitted: 2015-04-17
  • Updated: 2022-01-10
  • Resolved: 2015-04-18
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 7 JDK 8 JDK 9
7u91Fixed 8u60Fixed 9 b64Fixed
Related Reports
Relates :  
Relates :  
Description
With 32 byte width vectorization the JVM produces wrong results under certain circumstances for x86_64.

The Vzeroupper instruction introduced in String.equals, String.compareTo and OptimizeFill intrinsic/stubs in the 8011102 changes is the cause.

For 32 byte vectorization, YMM registers are used by the hotspot compiler and the register allocator can allocate these across intrinsic methods.

Vzeroupper in the intrinsic is clobbering upper 16 bytes in all the other YMM registers that are not touched in these methods and so our customers are seeing unexpected results.
Comments
URL: http://hg.openjdk.java.net/jdk9/jdk9/hotspot/rev/5be37a65b137 User: lana Date: 2015-05-13 21:19:48 +0000
13-05-2015

URL: http://hg.openjdk.java.net/jdk9/hs-comp/hotspot/rev/5be37a65b137 User: kvn Date: 2015-04-18 02:47:14 +0000
18-04-2015

noreg-hard: the problem was reported to Intel by its customer who can't provide small test.
17-04-2015