< prev index next >
src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassWriter.java
Print this page
*** 472,481 ****
--- 472,489 ----
} else if (value instanceof MethodHandle) {
MethodHandle ref = (MethodHandle)value;
poolbuf.appendByte(CONSTANT_MethodHandle);
poolbuf.appendByte(ref.refKind);
poolbuf.appendChar(pool.put(ref.refSym));
+ } else if (value instanceof ModuleSymbol) {
+ ModuleSymbol m = (ModuleSymbol)value;
+ poolbuf.appendByte(CONSTANT_Module);
+ poolbuf.appendChar(pool.put(m.name));
+ } else if (value instanceof PackageSymbol) {
+ PackageSymbol m = (PackageSymbol)value;
+ poolbuf.appendByte(CONSTANT_Package);
+ poolbuf.appendChar(pool.put(names.fromUtf(externalize(m.fullname))));
} else {
Assert.error("writePool " + value);
}
i++;
}
*** 952,1001 ****
int writeModuleAttribute(ClassSymbol c) {
ModuleSymbol m = (ModuleSymbol) c.owner;
int alenIdx = writeAttr(names.Module);
! databuf.appendChar(pool.put(names.fromUtf(externalize(m.name))));
databuf.appendChar(ModuleFlags.value(m.flags)); // module_flags
ListBuffer<RequiresDirective> requires = new ListBuffer<>();
for (RequiresDirective r: m.requires) {
if (!r.flags.contains(RequiresFlag.EXTRA))
requires.add(r);
}
databuf.appendChar(requires.size());
for (RequiresDirective r: requires) {
! databuf.appendChar(pool.put(names.fromUtf(externalize(r.module.name))));
databuf.appendChar(RequiresFlag.value(r.flags));
}
List<ExportsDirective> exports = m.exports;
databuf.appendChar(exports.size());
for (ExportsDirective e: exports) {
! databuf.appendChar(pool.put(names.fromUtf(externalize(e.packge.flatName()))));
databuf.appendChar(ExportsFlag.value(e.flags));
if (e.modules == null) {
databuf.appendChar(0);
} else {
databuf.appendChar(e.modules.size());
for (ModuleSymbol msym: e.modules) {
! databuf.appendChar(pool.put(names.fromUtf(externalize(msym.name))));
}
}
}
List<OpensDirective> opens = m.opens;
databuf.appendChar(opens.size());
for (OpensDirective o: opens) {
! databuf.appendChar(pool.put(names.fromUtf(externalize(o.packge.flatName()))));
databuf.appendChar(OpensFlag.value(o.flags));
if (o.modules == null) {
databuf.appendChar(0);
} else {
databuf.appendChar(o.modules.size());
for (ModuleSymbol msym: o.modules) {
! databuf.appendChar(pool.put(names.fromUtf(externalize(msym.name))));
}
}
}
List<UsesDirective> uses = m.uses;
--- 960,1011 ----
int writeModuleAttribute(ClassSymbol c) {
ModuleSymbol m = (ModuleSymbol) c.owner;
int alenIdx = writeAttr(names.Module);
! databuf.appendChar(pool.put(m));
databuf.appendChar(ModuleFlags.value(m.flags)); // module_flags
+ databuf.appendChar(m.version != null ? pool.put(m.version) : 0);
ListBuffer<RequiresDirective> requires = new ListBuffer<>();
for (RequiresDirective r: m.requires) {
if (!r.flags.contains(RequiresFlag.EXTRA))
requires.add(r);
}
databuf.appendChar(requires.size());
for (RequiresDirective r: requires) {
! databuf.appendChar(pool.put(r.module));
databuf.appendChar(RequiresFlag.value(r.flags));
+ databuf.appendChar(r.module.version != null ? pool.put(r.module.version) : 0);
}
List<ExportsDirective> exports = m.exports;
databuf.appendChar(exports.size());
for (ExportsDirective e: exports) {
! databuf.appendChar(pool.put(e.packge));
databuf.appendChar(ExportsFlag.value(e.flags));
if (e.modules == null) {
databuf.appendChar(0);
} else {
databuf.appendChar(e.modules.size());
for (ModuleSymbol msym: e.modules) {
! databuf.appendChar(pool.put(msym));
}
}
}
List<OpensDirective> opens = m.opens;
databuf.appendChar(opens.size());
for (OpensDirective o: opens) {
! databuf.appendChar(pool.put(o.packge));
databuf.appendChar(OpensFlag.value(o.flags));
if (o.modules == null) {
databuf.appendChar(0);
} else {
databuf.appendChar(o.modules.size());
for (ModuleSymbol msym: o.modules) {
! databuf.appendChar(pool.put(msym));
}
}
}
List<UsesDirective> uses = m.uses;
*** 1716,1726 ****
pw.println("---" + flagNames(flags));
}
databuf.appendChar(flags);
if (c.owner.kind == MDL) {
! databuf.appendChar(0);
} else {
databuf.appendChar(pool.put(c));
}
databuf.appendChar(supertype.hasTag(CLASS) ? pool.put(supertype.tsym) : 0);
databuf.appendChar(interfaces.length());
--- 1726,1737 ----
pw.println("---" + flagNames(flags));
}
databuf.appendChar(flags);
if (c.owner.kind == MDL) {
! PackageSymbol unnamed = ((ModuleSymbol) c.owner).unnamedPackage;
! databuf.appendChar(pool.put(new ClassSymbol(0, names.module_info, unnamed)));
} else {
databuf.appendChar(pool.put(c));
}
databuf.appendChar(supertype.hasTag(CLASS) ? pool.put(supertype.tsym) : 0);
databuf.appendChar(interfaces.length());
< prev index next >