Re: Search for the missing native code

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Andrew Haley writes:
 > Andrew John Hughes writes:
 >  > Hi everyone,
 >  > 
 >  > I've recently been trying to build JikesRVM on a Free platform (using CACAO 
 >  > and some hacked up tools from OpenJDK in the form of IcePick).  I've got it 
 >  > just about there now, but I've been let down by a missing native method.
 >  > 
 >  > Within the java.util.concurrent framework, the class AtomicLong has a native 
 >  > method, VMSupportsCS8 which CACAO at least doesn't provide.  It's basically 
 >  > just a check method to find out whether the VM supports lockless compare-set 
 >  > operations on longs.
 >  > 
 >  > >From java.util.concurrent.atomic.AtomicLong:
 >  > 
 >  >     /**
 >  >      * Records whether the underlying JVM supports lockless
 >  >      * CompareAndSet for longs. While the unsafe.CompareAndSetLong
 >  >      * method works in either case, some constructions should be
 >  >      * handled at Java level to avoid locking user-visible locks.
 >  >      */
 >  >     static final boolean VM_SUPPORTS_LONG_CAS = VMSupportsCS8();
 >  > 
 >  >     /**
 >  >      * Returns whether underlying JVM supports lockless CompareAndSet
 >  >      * for longs. Called only once and cached in VM_SUPPORTS_LONG_CAS.
 >  >      */
 >  >     private static native boolean VMSupportsCS8();
 >  > 
 >  > Has anyone implemented this so far?  So near, but yet so far!
 > 
 > Yes, it's in libgcj, of course.
 > 
 > jboolean
 > java::util::concurrent::atomic::AtomicLong::VMSupportsCS8 ()
 > {
 >   // FIXME
 >   return false;
 > }

Actually, I didn't quite tell you the *whole* truth: VMSupportsCS8 is
also a gcj builtin.  The code in libgcj is a fallback that gets called
only if libgcj is built with no optimization.

Andrew.


[Index of Archives]     [Linux Kernel]     [Linux Cryptography]     [Fedora]     [Fedora Directory]     [Red Hat Development]

  Powered by Linux