JDK-6760773 : UseCompressedOops is broken with UseParNewGC
  • Type: Bug
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: hs14
  • Priority: P2
  • Status: Closed
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2008-10-17
  • Updated: 2011-03-08
  • Resolved: 2011-03-08
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 6 JDK 7 Other
6u14Fixed 7Fixed hs14Fixed
Also, UseCompressedOops was supposed to be turned on by default in hs14, bug somehow that changeset was lost.

Coleen Phillimore - Sun Microsystems wrote:
> On 09/26/08 20:07, Vladimir Kozlov wrote:
>> First, UseParNewGC does not work with compressed oops:
> It is supposed to.  Is it broken or just not performant?
> thanks,
> Coleen
>> pf-t5120-1% gamma -XX:InlineSmallCode=1400 -XX:FreqInlineSize=210 -XX:+UseCompressedOops -XX:+AggressiveOpts -XX:ParallelGCThreads=40 -XX:+UseLargePages -XX:LargePageSizeInBytes=256m -XX:+AlwaysPreTouch -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xmx28g -Xms28g -Xmn22g -XX:+UseParNewGC -XX:+PrintTenuringDistribution -Xss256k -cp jbb.jar:check.jar spec.jbb.JBBmain
>> Exception in thread "main" java.lang.ClassCastException: java.util.LinkedHashMap$Entry cannot be cast to java.util.Map$Entry
>>         at java.security.Provider.ensureLegacyParsed(Provider.java:536)

EVALUATION 6760773: UseCompressedOops is broken with UseParNewGC Summary: sparc code for gen_subtype_check was doing an ld for a compressed oop with the sign bit set so not comparing, leading to a ClassCastException. Reviewed-by: phh, never, acorn, kvn, xlu Fixed in b08, I think.

EVALUATION http://hg.openjdk.java.net/jdk7/hotspot-rt/hotspot/rev/05db98ed59ba

EVALUATION Can't turn on compressed oops by default because it fails with JDK build. Will file another bug for that.

EVALUATION In gen_subtype_check there was an ld() for a compressed oop rather than an lduw() before comparing to another compressed oop. I also want to turn on cmopressed oops by default by this fix.