JDK-8151622 : AllocatePrefetchStyle 2 is incompatible with AllocatePrefetchInstr 1
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 8u76,9
  • Priority: P3
  • Status: Closed
  • Resolution: Duplicate
  • CPU: sparc
  • Submitted: 2016-03-10
  • Updated: 2016-04-29
  • Resolved: 2016-04-29
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 9
9Resolved
Related Reports
Relates :  
Relates :  
Description
java (fastdebug 9-ea+109) with "-Xcomp -XX:AllocatePrefetchStyle=2" options on Sparcv9 hit assert:
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (/HUDSON/workspace/9-2-build-solaris-sparcv9-phase2/jdk9/4620/hotspot/src/share/vm/classfile/javaClasses.cpp:1069), pid=12292, tid=2
#  assert(java_class == Universe::void_mirror()) failed: only valid non-array primitive
#
# JRE version: Java(TM) SE Runtime Environment (9.0+109) (fastdebug build 9-ea+109-2016-03-10-032101.javare.4620)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 9-ea+109-2016-03-10-032101.javare.4620, compiled mode, tiered, compressed oops, g1 gc, solaris-sparc)
# Core dump will be written. Default location: /tmp/dd/jdk-9/fastdebug/bin/core or core.12292
#
...

AllocatePrefetchStyle is a product option with valid range [0...3]. According to globals.hpp value 2 means "use TLAB watermark to gate allocation prefetch"

hs_err_pid12292.log is attached.
Comments
The AllocatePrefetchStyle 3 was added to support BIS-based prefetching (enabled by AllocatePrefetchInstr 1). For example, only AllocatePrefetchStyle 3 takes care of the alignment of memory addresses (a requirement of BIS instructions). Also, AllocatePrefetchStyle reserves TLAB space to accommodate prefetching instruction. AllocatePrefetchStyle 2 does not take care of alignment and uses a different logic to determine the size of the reserved heap area. As a result, prefetch instructions might access non-heap regions. The usage of AllocatePrefetchStyle 2 in combination with AllocatePrefetchInstr 1 must be prohibited. I plan to address this issue in the scope of JDK-8153340. Once JDK-8153340 is pushed, I plan to close this issue as a duplicate of JDK-8153340.
25-04-2016

ILW = assert in fastdebug; always but with option set; use default value for the option = MMM = P3
05-04-2016