RFR: 8074319: barrier_set_cast defined via friend injection
Volker Simonis
volker.simonis at gmail.com
Tue Mar 3 17:55:06 UTC 2015
Hi Kim,
I was looking at the same problem today because it also fails on AIX
with xlC 12.1.
I'm not one hundred percent sure but I currently more tend to say it
is a compiler bug although I'll have to dive deeper into the C++
standard before I can give a qualified answer here.
But your change looks good and it also works on AIX. So if you like,
you can consider it reviewed.
However, with your change "barrier_set_cast()" won't be an inline
function any more which may have performance impacts (this is
something you'll have to judge).
I'd like to propose a similar change which keeps "barrier_set_cast()"
as inline function and still works with Xcode5 and xlC 12 on AIX:
diff -r 71f4ed3c627f src/share/vm/memory/barrierSet.hpp
--- a/src/share/vm/memory/barrierSet.hpp Tue Mar 03 13:25:23 2015 +0000
+++ b/src/share/vm/memory/barrierSet.hpp Tue Mar 03 18:51:47 2015 +0100
@@ -32,6 +32,10 @@
// This class provides the interface between a barrier implementation and
// the rest of the system.
+class BarrierSet;
+template<typename T>
+T* barrier_set_cast(BarrierSet* bs);
+
class BarrierSet: public CHeapObj<mtGC> {
friend class VMStructs;
public:
Regards,
Volker
PS: I'm a little bit confused that this error hasn't been catched by
JPRT because the OpenJDK Wiki
(https://wiki.openjdk.java.net/display/Build/Supported+build+platforms)
lists clang 5.1 as official build platform for MacOS X?
On Tue, Mar 3, 2015 at 5:28 PM, Kim Barrett <kim.barrett at oracle.com> wrote:
> On Mar 3, 2015, at 11:26 AM, Kim Barrett <kim.barrett at oracle.com> wrote:
>>
>> Please review this small change to the recently added barrier_set_cast
>> (see https://bugs.openjdk.java.net/browse/JDK-8069016). The way that
>> new function is being defined is unintentionally not standards
>> conforming and should not compile, but all of our present official
>> test platforms accept it anyway. The code is presently only known to
>> fail with the more recent Xcode6.
>
> That should be Xcode5. Xcode4 is the present test platform.
>
More information about the hotspot-gc-dev
mailing list