On Thu, 30 Apr 2026 00:52:23 GMT, David Holmes <[email protected]> wrote:
>> On Linux, various `stat()` calls allow probing information about files >> without opening them, but until recently, there wasn't an equivalent API >> available on Windows. Now that `GetFileInformationByName()` exists, >> we can use it instead of `GetFileInformationByHandle()`, which required >> first opening the file to create a file handle, then reading the file >> attributes, and finally closing the file handle. >> >> Since `GetFileInformationByName()` is available on only newer versions >> of Windows, this patch uses conditional compilation and `LoadLibrary()` >> / `GetProcAddress()` to dynamically set the pointer to the API function. >> If the dynamic loading fails, we fall back to the old API. To avoid >> problems with race conditions, we use Windows' `INIT_ONCE` and >> `InitOnceExecuteOnce()` to initialize the function pointer exactly once. >> >> The rest of the patch is similar to the addition of any new JNI function >> call. WindowsConstants.java adds the relevant flags and error codes, >> WindowsFileAttributes.java adds the Java entry point, >> WindowsNativeDispatcher.java links the Java function with the C >> function, and WindowsNativeDispatcher.c calls the Win32 API function. >> >> --------- >> - [x] I confirm that I make this contribution in accordance with the >> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai). > > Hotspot changes look generally okay - though a couple of queries. > > Unfortunate there is so much code duplication due to the conditionalization. > Don't see a way to avoid that as we have no general sharing mechanism between > libnio and the VM. @dholmes-ora @AlanBateman Thanks for taking the time to look through the changes. I'll create a separate JBS issue for the NIO changes and come back to the HotSpot integration once we're confident about the NIO changes. I'm closing this PR and I'll open another one once the NIO changes have landed. ------------- PR Comment: https://git.openjdk.org/jdk/pull/30994#issuecomment-4354343274
