--- old/src/java.base/share/classes/jdk/internal/org/objectweb/asm/commons/ClassRemapper.java Fri Oct 27 09:23:58 2017 +++ new/src/java.base/share/classes/jdk/internal/org/objectweb/asm/commons/ClassRemapper.java Fri Oct 27 09:23:57 2017 @@ -59,10 +59,14 @@ package jdk.internal.org.objectweb.asm.commons; +import java.util.List; + import jdk.internal.org.objectweb.asm.AnnotationVisitor; +import jdk.internal.org.objectweb.asm.Attribute; import jdk.internal.org.objectweb.asm.ClassVisitor; import jdk.internal.org.objectweb.asm.FieldVisitor; import jdk.internal.org.objectweb.asm.MethodVisitor; +import jdk.internal.org.objectweb.asm.ModuleVisitor; import jdk.internal.org.objectweb.asm.Opcodes; import jdk.internal.org.objectweb.asm.TypePath; @@ -78,7 +82,7 @@ protected String className; public ClassRemapper(final ClassVisitor cv, final Remapper remapper) { - this(Opcodes.ASM5, cv, remapper); + this(Opcodes.ASM6, cv, remapper); } protected ClassRemapper(final int api, final ClassVisitor cv, @@ -97,6 +101,12 @@ } @Override + public ModuleVisitor visitModule(String name, int flags, String version) { + ModuleVisitor mv = super.visitModule(remapper.mapModuleName(name), flags, version); + return mv == null ? null : createModuleRemapper(mv); + } + + @Override public AnnotationVisitor visitAnnotation(String desc, boolean visible) { AnnotationVisitor av = super.visitAnnotation(remapper.mapDesc(desc), visible); @@ -112,6 +122,18 @@ } @Override + public void visitAttribute(Attribute attr) { + if (attr instanceof ModuleHashesAttribute) { + ModuleHashesAttribute hashesAttr = new ModuleHashesAttribute(); + List modules = hashesAttr.modules; + for(int i = 0; i < modules.size(); i++) { + modules.set(i, remapper.mapModuleName(modules.get(i))); + } + } + super.visitAttribute(attr); + } + + @Override public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) { FieldVisitor fv = super.visitField(access, @@ -158,4 +180,8 @@ protected AnnotationVisitor createAnnotationRemapper(AnnotationVisitor av) { return new AnnotationRemapper(av, remapper); } + + protected ModuleVisitor createModuleRemapper(ModuleVisitor mv) { + return new ModuleRemapper(mv, remapper); + } }