On Wed, 19 Apr 2023 06:14:37 GMT, David Holmes <dhol...@openjdk.org> wrote:
>> Aleksey Shipilev has updated the pull request incrementally with one >> additional commit since the last revision: >> >> Fix gtests > > src/hotspot/os/posix/os_posix.cpp line 1545: > >> 1543: >> 1544: int PlatformEvent::park_nanos(jlong nanos) { >> 1545: assert(0 <= nanos, "nanos are in range"); > > `nanos` should never be zero else you call the untimed park. OK, I see how is that guaranteed in the Windows case. In POSIX case, calling `park()` is untimed wait, but `park(0)` is converted to absolute time that is already passed, and so `pthread_cond_timedwait` would return immediately, right? So `park(0)` is not equivalent to just `park()`? Still, the strongest behavior from Windows case takes precedence here. Changed the assert. > src/hotspot/os/posix/park_posix.hpp line 57: > >> 55: void park(); >> 56: int park_millis(jlong millis); >> 57: int park_nanos(jlong nanos); > > Still not sure we need this API split but if we keep `park(jlong millis)` and > just add `park_nanos(jlong nanos)` then you can avoid touching so many places > in the code. I thought the exposure to `park` -> `park_millis` renames would be smaller, but apparently there is a considerable number of uses. I left `park(millis)` (old) and added `park_nanos(nanos)` (new), and reverted `park_millis` changes. > src/hotspot/share/runtime/javaThread.hpp line 1145: > >> 1143: public: >> 1144: bool sleep_millis(jlong millis); >> 1145: bool sleep_nanos(jlong nanos); > > I prefer just one sleep that takes nanos. If we do only `sleep(jlong nanos)`, then there is an accident waiting to happen, when some unfixed code would call `sleep` with `millis` argument, not knowing it is now `nanos`. That was the reason why I made the names explicit. `sleep_millis` also does the conversion to nanos that does not overflow. But, like with `park` above, I think there is an argument to keep `sleep(millis)` and add `sleep_nanos(nanos)`, to keep code changes at minimum. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/13225#discussion_r1171103473 PR Review Comment: https://git.openjdk.org/jdk/pull/13225#discussion_r1171103664 PR Review Comment: https://git.openjdk.org/jdk/pull/13225#discussion_r1171103560