< prev index next >
src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/SystemModuleDescriptorPlugin.java
Print this page
*** 44,53 ****
--- 44,54 ----
import jdk.internal.misc.JavaLangModuleAccess;
import jdk.internal.misc.SharedSecrets;
import jdk.internal.module.Checks;
import jdk.internal.module.ModuleInfoExtender;
import jdk.internal.module.SystemModules;
+ import jdk.internal.module.WarnIfResolvedReason;
import jdk.internal.org.objectweb.asm.ClassWriter;
import jdk.internal.org.objectweb.asm.MethodVisitor;
import jdk.internal.org.objectweb.asm.Opcodes;
import static jdk.internal.org.objectweb.asm.Opcodes.*;
*** 521,530 ****
--- 522,539 ----
JLMA.hashes(md).ifPresent(mh -> {
algorithm(mh.algorithm());
mh.names().forEach(mn -> moduleHash(mn, mh.hashFor(mn)));
});
+ // DO_NOT_RESOLVE_BY_DEFAULT
+ if (JLMA.doNotResolveByDefault(md)) {
+ setModuleBit("doNotResolveByDefault", true);
+ }
+
+ // WARN_IF_RESOLVED reason
+ if (JLMA.warnIfResolvedReason(md) != WarnIfResolvedReason.NONE)
+ warnIfResolved(JLMA.warnIfResolvedReason(md));
putModuleDescriptor();
}
void newBuilder() {
mv.visitTypeInsn(NEW, MODULE_DESCRIPTOR_BUILDER);
*** 844,853 ****
--- 853,886 ----
}
mv.visitMethodInsn(INVOKEVIRTUAL, MODULE_DESCRIPTOR_BUILDER,
"moduleHash", STRING_BYTE_ARRAY_SIG, false);
mv.visitInsn(POP);
}
+
+ static final String WARN_IF_RESOLVED_REASON_CLASSNAME =
+ "jdk/internal/module/WarnIfResolvedReason";
+ static final String WARN_IF_RESOLVED_REASON_TYPE =
+ "Ljdk/internal/module/WarnIfResolvedReason;";
+ static final String WARN_METHOD_SIG =
+ "(" + WARN_IF_RESOLVED_REASON_TYPE + ")" + BUILDER_TYPE;
+
+ /*
+ * Invoke Builder.warnIfResolved(WarnIfResolvedReason reason)
+ */
+ void warnIfResolved(WarnIfResolvedReason reason) {
+ mv.visitVarInsn(ALOAD, BUILDER_VAR);
+ mv.visitFieldInsn(GETSTATIC,
+ WARN_IF_RESOLVED_REASON_CLASSNAME,
+ reason.name(),
+ WARN_IF_RESOLVED_REASON_TYPE);
+ mv.visitMethodInsn(INVOKEVIRTUAL,
+ MODULE_DESCRIPTOR_BUILDER,
+ "warnIfResolved",
+ WARN_METHOD_SIG,
+ false);
+ mv.visitInsn(POP);
+ }
}
/*
* Wraps set creation, ensuring identical sets are properly deduplicated.
*/
< prev index next >