Request for reviews (update)(S): 6863420: os::javaTimeNanos() go backward on Solaris x86]
David Holmes - Sun Microsystems
David.Holmes at Sun.COM
Fri Jul 24 19:00:17 PDT 2009
Looks good to me. Thanks Vladimir!
David
Vladimir Kozlov said the following on 07/25/09 04:20:
> I updated the fix to use Atomic::load() always as David H. suggested.
>
> http://cr.openjdk.java.net/~kvn/6863420/webrev.01
>
> Fixed 6863420: os::javaTimeNanos() go backward on Solaris x86
>
> Problem:
> The problem is non atomic load from max_hrtime in getTimeNanos()
> on platforms where long is kept in 2 32-bit register.
> The loaded value could be invalid (> current time) since registers
> are loaded separately and store could happened in between.
> It could be returned as result if it is greater then current time.
> And if the next call getTimeNanos() returns the correct time
> it will be less then previous result.
>
> Solution:
> Use new atomic long load method Atomic::load() which uses
> FPU to move long value atomically on 32-bit x86 or
> simply returns *src in other cases.
>
> Added the regression test which shows the problem.
>
> Reviewed by:
>
> Fix verified (y/n): y, regression test
>
> Other testing:
> JPRT, ScaleHarness(6784100)
>
More information about the hotspot-dev
mailing list