RFR: Proposed jimage refresh for JDK9
Jim Laskey (Oracle)
james.laskey at oracle.com
Wed May 20 16:35:44 UTC 2015
> On May 19, 2015, at 8:03 AM, Remi Forax <forax at univ-mlv.fr> wrote:
>
> As Paul said,
> it's a big patch …
Agree.
>
> In ImageBuilder, Option should take the description as 3rd parameter instead of overriding description.
> Once this is done, Option should not be abstract but takes the processing as an argument too
> (as a lambda). i.e instead of
>
> new Option(true, "--cmds") {
> @Override
> void process(ImageBuilder task, String opt, String arg) throws BadArgs {
> task.options.cmds = splitPath(arg, File.pathSeparator);
> }
> @Override
> String description() { return "Location of native commands"; }
> }
> }
>
> it's better to write:
> new Option(true, "--cmds", "Location of native commands",
> (ImageBuilder task, String opt, String arg) -> {
> task.options.cmds = splitPath(arg, File.pathSeparator);
> })
>
> the code is ligther, it uses delegation instead of inheritance and remove a dozen of inner classes on disk.
Done.
>
> In ModuleArchive, close() should continue to close the opened input streams even if one throw an exception,
> @Override
> public void close() throws IOException {
> IOException e = null;
> for(InputStream stream : opened) {
> try {
> stream.close();
> }catch(IOException ex) {
> if (e == null) {
> e = ex;
> } else {
> e.addSuppressed(ex);
> }
> }
> }
> if (e != null) {
> throw e;
> }
> }
Done.
>
> In BasicImageWriter, getString can be simplified to:
> public String getString(int offset) {
> UTF8String utf8 = strings.get(offset);
> if(utf8 != null) {
> return utf8.toString();
> }
> return null;
> }
Done.
>
> also in generatePerfectHash, you don't need to create a Stream to do a forEach on it:
> input.stream().forEach(
> you can write
> input.forEach(
Done.
>
> ImageReader.LinkNode, instead of @SuppressWarnings("LeakingThisInConstructor"),
> the constructor should be private and you should add a static factory method that
> does parent.addChild(linkNode) after calling the constructor.
>
Done.
> in JrtFileAttributeView.get() that takes a Class, you forget to create the JrtFileAttributeViews
> with options as 3 parameters (as you do in get that takes a String).
>
> in JrtPath, instead of
> boolean isSame = Arrays.equals(this.getResolvedPath(),
> ((JrtPath)other).getResolvedPath());
> return isSame? isSame : jrtfs.isSameFile(this, (JrtPath)other);
> the usual code is:
> JrtPath path = (JrtPath) other;
> return Arrays.equals(this.getResolvedPath(), path.getResolvedPath()) ||
> jrtfs.isSameFile(this, path);
>
Done
> and I fully agree with the review of Paul :)
>
> Rémi
>
> On 05/15/2015 05:45 PM, Jim Laskey (Oracle) wrote:
>> http://cr.openjdk.java.net/~jlaskey/jdk9-jimage/top/ <http://cr.openjdk.java.net/~jlaskey/jdk9-jimage/top/>
>> http://cr.openjdk.java.net/~jlaskey/jdk9-jimage/hotspot/ <http://cr.openjdk.java.net/~jlaskey/jdk9-jimage/hotspot/>
>> http://cr.openjdk.java.net/~jlaskey/jdk9-jimage/jdk/ <http://cr.openjdk.java.net/~jlaskey/jdk9-jimage/jdk/>
>> http://cr.openjdk.java.net/~jlaskey/jdk9-jimage/langtools/ <http://cr.openjdk.java.net/~jlaskey/jdk9-jimage/langtools/>
>>
>> There are some issues with regard to the hotspot changes, but I’m working with Coleen and John R. to resolve those.
>>
>> Cheers,
>>
>> — Jim
>>
>
More information about the jigsaw-dev
mailing list