RFR [9] 8038459: (sctp) Remove superflous classes on platforms without an implementation [macosx, aix]
Chris Hegarty
chris.hegarty at oracle.com
Thu Mar 27 10:46:59 UTC 2014
While hunting around the build recently, when working on another SCTP bug, I noticed a small issue where SCTP classes are being built on some platforms unnecessarily.
Webrev:
http://cr.openjdk.java.net/~chegar/8038459/webrev.00/webrev/
Mac OS X and AIX contain only stubs for the SCTP channels. There are platform specific versions of the stubs for these platforms, so the build currently filters out the three channel implementation classes, on these platforms. But, there are other implementation classes in src/solaris/classes/sun/nio/ch/sctp that are needed for Linux and Solaris. These classes should be filter out also, on platforms that do not require them ( Mac OS X and AIX ).
Looking at rt. jar from a Mac JRE the superfluous classes can be seen:
$ jar -tvf rt.jar | grep "sun/nio/ch/sctp"
2420 Thu Feb 27 23:47:08 GMT 2014 sun/nio/ch/sctp/AssociationChange.class <<< NOT NEEDED
759 Thu Feb 27 23:47:08 GMT 2014 sun/nio/ch/sctp/AssociationImpl.class <<< NOT NEEDED
2614 Thu Feb 27 23:47:04 GMT 2014 sun/nio/ch/sctp/MessageInfoImpl.class
2607 Thu Feb 27 23:47:08 GMT 2014 sun/nio/ch/sctp/PeerAddrChange.class <<< NOT NEEDED
2793 Thu Feb 27 23:47:08 GMT 2014 sun/nio/ch/sctp/ResultContainer.class <<< NOT NEEDED
2850 Thu Feb 27 23:47:10 GMT 2014 sun/nio/ch/sctp/SctpChannelImpl.class
2987 Thu Feb 27 23:47:10 GMT 2014 sun/nio/ch/sctp/SctpMultiChannelImpl.class
7712 Thu Feb 27 23:47:08 GMT 2014 sun/nio/ch/sctp/SctpNet.class <<< NOT NEEDED
251 Thu Feb 27 23:47:08 GMT 2014 sun/nio/ch/sctp/SctpNotification.class <<< NOT NEEDED
1935 Thu Feb 27 23:47:10 GMT 2014 sun/nio/ch/sctp/SctpServerChannelImpl.class
1379 Thu Feb 27 23:47:04 GMT 2014 sun/nio/ch/sctp/SctpStdSocketOption.class
1953 Thu Feb 27 23:47:08 GMT 2014 sun/nio/ch/sctp/SendFailed.class <<< NOT NEEDED
1239 Thu Feb 27 23:47:08 GMT 2014 sun/nio/ch/sctp/Shutdown.class <<< NOT NEEDED
Note: SctpStdSocketOption.class and MessageInfoImpl.class are platform independent, and needed to support parts of the API that are not dependent on an actual socket implementation.
-Chris.
More information about the net-dev
mailing list