754 // os name, arch, version
755 targetPlatform(md.osName().orElse(null),
756 md.osArch().orElse(null),
757 md.osVersion().orElse(null));
758
759 putModuleDescriptor();
760 }
761
762 void newBuilder() {
763 mv.visitTypeInsn(NEW, MODULE_DESCRIPTOR_BUILDER);
764 mv.visitInsn(DUP);
765 mv.visitLdcInsn(md.name());
766 mv.visitMethodInsn(INVOKESPECIAL, MODULE_DESCRIPTOR_BUILDER,
767 "<init>", "(Ljava/lang/String;)V", false);
768 mv.visitVarInsn(ASTORE, BUILDER_VAR);
769 mv.visitVarInsn(ALOAD, BUILDER_VAR);
770
771 if (md.isOpen()) {
772 setModuleBit("open", true);
773 }
774 if (md.isSynthetic()) {
775 setModuleBit("synthetic", true);
776 }
777 }
778
779 /*
780 * Invoke Builder.<methodName>(boolean value)
781 */
782 void setModuleBit(String methodName, boolean value) {
783 mv.visitVarInsn(ALOAD, BUILDER_VAR);
784 if (value) {
785 mv.visitInsn(ICONST_1);
786 } else {
787 mv.visitInsn(ICONST_0);
788 }
789 mv.visitMethodInsn(INVOKEVIRTUAL, MODULE_DESCRIPTOR_BUILDER,
790 methodName, BOOLEAN_SIG, false);
791 mv.visitInsn(POP);
792 }
793
794 /*
|
754 // os name, arch, version
755 targetPlatform(md.osName().orElse(null),
756 md.osArch().orElse(null),
757 md.osVersion().orElse(null));
758
759 putModuleDescriptor();
760 }
761
762 void newBuilder() {
763 mv.visitTypeInsn(NEW, MODULE_DESCRIPTOR_BUILDER);
764 mv.visitInsn(DUP);
765 mv.visitLdcInsn(md.name());
766 mv.visitMethodInsn(INVOKESPECIAL, MODULE_DESCRIPTOR_BUILDER,
767 "<init>", "(Ljava/lang/String;)V", false);
768 mv.visitVarInsn(ASTORE, BUILDER_VAR);
769 mv.visitVarInsn(ALOAD, BUILDER_VAR);
770
771 if (md.isOpen()) {
772 setModuleBit("open", true);
773 }
774 if (md.modifiers().contains(ModuleDescriptor.Modifier.SYNTHETIC)) {
775 setModuleBit("synthetic", true);
776 }
777 }
778
779 /*
780 * Invoke Builder.<methodName>(boolean value)
781 */
782 void setModuleBit(String methodName, boolean value) {
783 mv.visitVarInsn(ALOAD, BUILDER_VAR);
784 if (value) {
785 mv.visitInsn(ICONST_1);
786 } else {
787 mv.visitInsn(ICONST_0);
788 }
789 mv.visitMethodInsn(INVOKEVIRTUAL, MODULE_DESCRIPTOR_BUILDER,
790 methodName, BOOLEAN_SIG, false);
791 mv.visitInsn(POP);
792 }
793
794 /*
|