--- a/hotspot/src/os/solaris/vm/os_solaris.cpp Sun Jul 26 12:59:41 2009 -0700
+++ b/hotspot/src/os/solaris/vm/os_solaris.cpp Sun Jul 26 16:40:14 2009 -0700
@@ -1643,7 +1643,8 @@
inline hrtime_t getTimeNanos() {
if (VM_Version::supports_cx8()) {
const hrtime_t now = gethrtime();
- const hrtime_t prev = max_hrtime;
+ // Use atomic long load since 32-bit x86 uses 2 registers to keep long.
+ const hrtime_t prev = Atomic::load((volatile jlong*)&max_hrtime);
if (now <= prev) return prev; // same or retrograde time;
const hrtime_t obsv = Atomic::cmpxchg(now, (volatile jlong*)&max_hrtime, prev);
assert(obsv >= prev, "invariant"); // Monotonicity