RFR (S) JDK-8041623: Solaris Studio 12.4 C++ 5.13, CHECK_UNHANDLED_OOPS use of class oop's copy constructor definitions causing error level diagnostic

Lois Foltan lois.foltan at oracle.com
Thu May 22 17:40:32 UTC 2014


Hello,

Please review the following fix:

Webrev:
     http://cr.openjdk.java.net/~lfoltan/bug_jdk8041623/

Bug: Solaris Studio 12.4 C++ 5.13, CHECK_UNHANDLED_OOPS use of class 
oop's copy constructor definitions causing error level diagnostic
     https://bugs.openjdk.java.net/browse/JDK-8041623

Summary of fix:
A couple of fixes for Solaris C++ 5.13 compilation issues specifically 
related to CHECK_UNHANDLED_OOPS support in non-product JVM builds.  
First, the following diagnostic occurred concerning a volatile oop being 
returned by value.  C++ complained that the return value failed to 
correctly copy construct into a temporary when returning from 
target_volatile().

"javaClasses.hpp", line 1183: Error: Initializing const volatile oop& 
requires an lvalue.
"javaClasses.hpp", line 1183: Error: Formal argument o of type const 
volatile oop& in call to oop::oop(const volatile oop&) is being passed 
volatile oop.

The fix required a user conversion from oop to OopDesc* with immediate 
oop construction to provide the lvalue needed.  Solaris C++ 5.13 also 
complained about the lack of an appropriate assignment operator from 
NULL to volatile oop.  Solution was to explicitly construct NULL prior 
to assignment.

Built with the following versions:
     carrs: g++ 4.4.3
     crocker: g++ 4.4.4
     philli: g++ 4.8.1
     Solaris C++ 5.10 (12u1)
     Solaris C++ 5.12 (12u3)
     Solaris C++ 5.13 - beta
VS2013

Tests:
     JPRT build & test,
     Hotspot jtreg on Solaris,
     Hotspot jtreg on Linux with -XX:+CheckUnhandledOops,
     vm.quick.testlist - 2 runs one with -XX:+CheckUnhandledOops and one 
without

Thank you,
Lois


More information about the hotspot-runtime-dev mailing list