hotspot/src/share/vm/runtime/mutex.cpp
// Simplistic low-quality Marsaglia SHIFT-XOR RNG.
// Bijective except for the trailing mask operation.
// Useful for spin loops as the compiler can't optimize it away.
static inline jint MarsagliaXORV (jint x) {
コメントによると, これは Marsaglia 氏による乱数生成アルゴリズムを簡略化したもの.
コンパイラが最適化によって消すことが難しいので, スピンループ内での使用に適している, とのこと.
{- -------------------------------------------
(1)
---------------------------------------- -}
if (x == 0) x = 1|os::random() ;
x ^= x << 6;
x ^= ((unsigned)x) >> 21;
x ^= x << 7 ;
return x & 0x7FFFFFFF ;
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.