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;
}
:-)
Andrew.