RFR: 8000975: (process) Merge UNIXProcess.java.bsd & UNIXProcess.java.linux (& .solaris & .aix)

Peter Levart peter.levart at gmail.com
Wed Apr 2 16:05:29 UTC 2014


On 04/02/2014 03:17 PM, roger riggs wrote:
> Hi,
>
> On 4/2/2014 6:49 AM, Peter Levart wrote:
>> On 04/01/2014 09:47 PM, roger riggs wrote:
>>> Hi,
>>>
>>> A minor point, but the Enum for LaunchMechanism can be simpler; the 
>>> defined enum values (1,2,3)
>>> are never used and can be removed along with the extra constructor.
>>
>> They are used for the "mode" parameter of forkAndExec() native method.
> yes, and could just as easily use the default ordinals (0,1,2).
>>
>>>
>>> With the refactoring so far, this seems more complex and harder to 
>>> understand.
>>
> ...
>>
>>>
>>> Other alternatives would have been to factor the common code 
>>> (Streams handling)
>>> into a utilities class or ProcessImpl and retain the 1st class 
>>> subclasses (with different names)
>>> for each platform or merge more up into ProcessImpl.
>>>
>>> Maybe it will be clearer with additional refactoring.
>>
>> As I said, I believe the consolidation of various Input/OutputStream 
>> wrappers could bring the class files number and size further down.
>
> yes, we can't stop yet.  The only difference between the inner classes 
> per platform
> is the choice of initializing the streams which could be handled with 
> a switch instead
> of a subclass.
>
> Please continue, Roger
>

Right,

Here it is:

http://cr.openjdk.java.net/~plevart/jdk9-dev/UNIXProcess/webrev.06/

This one does away with UNIXProcess subclasses. This allowed me to 
restore private modifier on all fields and methods that were previously 
accessed from subclasses and were changed to package-private to avoid 
compiler generating access methods. I also replaced process reaper 
thread factory with a lambda. Class files produced by compiling now are:

-rw-rw-r--. 1 peter peter  772 Apr  2 17:45 UNIXProcess$1.class
-rw-rw-r--. 1 peter peter 2155 Apr  2 17:45 
UNIXProcess$DeferredCloseInputStream.class
-rw-rw-r--. 1 peter peter 2930 Apr  2 17:45 
UNIXProcess$DeferredCloseProcessPipeInputStream.class
-rw-rw-r--. 1 peter peter 1082 Apr  2 17:45 
UNIXProcess$LaunchMechanism.class
-rw-rw-r--. 1 peter peter 4762 Apr  2 17:45 UNIXProcess$Platform.class
-rw-rw-r--. 1 peter peter 1711 Apr  2 17:45 
UNIXProcess$ProcessPipeInputStream.class
-rw-rw-r--. 1 peter peter  949 Apr  2 17:45 
UNIXProcess$ProcessPipeOutputStream.class
-rw-rw-r--. 1 peter peter 9401 Apr  2 17:45 UNIXProcess.class

...8 class files totaling 23.2 KiB.


Getting close to original code.


Regards, Peter





More information about the core-libs-dev mailing list