< 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 >