Hi David, Thanks for reviewing! I’ll delay progressing this one a bit until 8199619 is integrated.
Best regards, Robin > On 27 Mar 2018, at 02:57, David Holmes <david.hol...@oracle.com> wrote: > > Looks good to me. > > Thanks, > David > > On 27/03/2018 1:01 AM, Robin Westberg wrote: >> Hi David, >> Thanks for taking a look! >>> On 26 Mar 2018, at 01:03, David Holmes <david.hol...@oracle.com >>> <mailto:david.hol...@oracle.com>> wrote: >>> >>> Hi Robin, >>> >>> On 23/03/2018 10:37 PM, Robin Westberg wrote: >>>> Hi Kim & Erik, >>>> Certainly makes sense to define it from the build system, I’ve updated the >>>> patch accordingly: >>>> Full: http://cr.openjdk.java.net/~rwestberg/8199736/webrev.01/ >>>> <http://cr.openjdk.java.net/~rwestberg/8199736/webrev.01/> >>>> Incremental: http://cr.openjdk.java.net/~rwestberg/8199736/webrev.00-01/ >>>> <http://cr.openjdk.java.net/~rwestberg/8199736/webrev.00-01/> >>> >>> I'm a little unclear on the hotspot changes. If we define >>> WIN32_LEAN_AND_MEAN then certain APIs like sockets are excluded from >>> windows.h so we then have to include the specific header files like >>> winsock2.h - is that right? >> Yep that’s correct, headers like winsock, dde, ole, shellapi and a few other >> uncommon ones are no longer included from windows.h when this is defined. >>> src/hotspot/share/interpreter/bytecodes.cpp >>> >>> I'm curious about this change. u_short comes from types.h on non-Windows, >>> is it simply missing on Windows (at least once we have WIN32_LEAN_AND_MEAN >>> defined) ? >> Yeah, on Windows these comes from winsock(2).h: >> /* >> * Basic system type definitions, taken from the BSD file sys/types.h. >> */ >> typedef unsigned char u_char; >> typedef unsigned short u_short; >> typedef unsigned int u_int; >> typedef unsigned long u_long; >> I noticed that one of these (u_char) is also defined in >> globalDefinitions.hpp so could perhaps define u_short there, or include >> winsock2.h globally again. But since it was only used in a single place in >> the existing code it seemed simple enough to just expand the typedef there. >>> src/hotspot/share/utilities/ostream.cpp >>> >>> 1029 #endif >>> 1030 #if defined(_WINDOWS) >>> >>> Using elif could be marginally faster given the two sets of conditions are >>> mutually exclusive. >> Good point, will change it. >> I also had to move the flag definition to adapt to the latest changes in the >> hs repo, cc’ing build-dev again to make sure I got it right. >> Updated webrev (full): >> http://cr.openjdk.java.net/~rwestberg/8199736/webrev.02/ >> Updated webrev (incremental): >> http://cr.openjdk.java.net/~rwestberg/8199736/webrev.01-02/ >> Best regards, >> Robin >>> >>> Thanks, >>> David >>> >>>> (Not quite sure if the definition belongs where I put it or a bit later >>>> where most other windows-specific JVM flags are defined, but seemed >>>> reasonable to put it close to where it is defined for the JDK libraries). >>>> Best regards, >>>> Robin >>>>> On 22 Mar 2018, at 16:52, Kim Barrett <kim.barr...@oracle.com >>>>> <mailto:kim.barr...@oracle.com>> wrote: >>>>> >>>>>> On Mar 22, 2018, at 10:34 AM, Robin Westberg <robin.westb...@oracle.com >>>>>> <mailto:robin.westb...@oracle.com>> wrote: >>>>>> >>>>>> Hi all, >>>>>> >>>>>> Please review the following change that defines WIN32_LEAN_AND_MEAN [1] >>>>>> before including windows.h. This marginally improves build times, and >>>>>> makes it possible to include winsock2.h. >>>>>> >>>>>> Issue: https://bugs.openjdk.java.net/browse/JDK-8199736 >>>>>> <https://bugs.openjdk.java.net/browse/JDK-8199736> >>>>>> Webrev: http://cr.openjdk.java.net/~rwestberg/8199736/webrev.00/ >>>>>> <http://cr.openjdk.java.net/~rwestberg/8199736/webrev.00/> >>>>>> Testing: hs-tier1 >>>>>> >>>>>> Best regards, >>>>>> Robin >>>>>> >>>>>> [1] >>>>>> https://msdn.microsoft.com/en-us/library/windows/desktop/aa383745%28v=vs.85%29.aspx#faster_builds_with_smaller_header_files >>>>>> >>>>>> <https://msdn.microsoft.com/en-us/library/windows/desktop/aa383745(v=vs.85).aspx#faster_builds_with_smaller_header_files> >>>>> >>>>> I think the addition of the WIN32_LEAN_AND_MEAN definition should be done >>>>> through the build >>>>> system, so that it applies everywhere. >>>>>