Christoph, On 26 Sep 2016, at 18:58, Langer, Christoph <christoph.lan...@sap.com> wrote: > > Hi Chris, > > I agree with your comment on the NPE. It would probably be wrong. So I > restored the old code and also removed the comments suggesting the NPE. Here > is my new webrev: http://cr.openjdk.java.net/~clanger/webrevs/8166584.1/
This looks fine. > What I was thinking a bit more about after I posted my initial webrev was the > fact that the old NET_ThrowSocketException would register a GlobalRef to > java/net/SocketException whereas the other, more generic code would always > use the lookup by name. Would you think it is a performance benefit to keep a > reference to a standard exception class in some place and use it for throwing > or is it better to always look up the class? Throwing those kind of > exceptions is probably not on the hot path anyway - but on the other hand it > should be no issue to keep references to these very basic class types. What's > your view on that? I don’t believe that using a GlobalRef is worth it here. It adds a little complication, while not offering much benefit. JNU_ThrowByName should be fine. > And another probably aesthetic thing: I notice that sometimes a > JNU_JAVANETPKG "SocketException" is used and sometimes a > "java/net/SocketException", even within the same file like > SocketInputStream.c. Maybe I should unify this in the files that I touch here > and if yes, shall I use the literal name or the JNU_JAVANETPKG define? Any > opinion on that? My preference is to remove JNU_JAVANETPKG, and just use "java/net/“. -Chris > Thanks for taking care of this, > Christoph > > >> -----Original Message----- >> From: Chris Hegarty [mailto:chris.hega...@oracle.com] >> Sent: Montag, 26. September 2016 16:51 >> To: Langer, Christoph <christoph.lan...@sap.com>; net-dev@openjdk.java.net >> Subject: Re: RFR(XS): 8166584: Remove obsolete utility function >> NET_ThrowSocketException in windows libnet >> >> Christoph, >> >> On 22/09/16 21:59, Langer, Christoph wrote: >>> Hi, >>> >>> while looking at utility functions for creating exceptions in >>> libjava/libnet I found a small spot that should be consolidated right away. >>> >>> >>> The function NET_ThrowSocketException does only exist in the windows >>> native implementation and is only used in 3 places in >>> SocketInputStream.c. I removed this in favor of directly calling >>> JNU_ThrowByName as the Unix variant of that code already does. >>> >>> >>> In that function Java_java_net_SocketInputStream_socketRead0 I also >>> replaced throwing a SocketException with throwing an NPE in the rare >>> case that a the JNI input for the file descriptor is null. That's >>> probably more natural and should virtually never occur anyways. >> >> Hmmm... I'm not sure about this. SocketException is thrown on >> unix too for a similar situation. More significantly, a null value >> represents that the socket has been, possibly asynchronously, >> closed. >> >>> Bug: https://bugs.openjdk.java.net/browse/JDK-8166584 >>> >>> Webrev: http://cr.openjdk.java.net/~clanger/webrevs/8166584.0/ >> >> Other than the above concern, the remainder of the code looks ok >> to me. >> >> -Chris.