< prev index next >

src/java.base/share/classes/jdk/internal/classfile/impl/ClassPrinterImpl.java

Print this page

 910                         var bmNode = new MapNodeImpl(FLOW, "bm");
 911                         bmNode.with(leafs(
 912                                 "index", bm.bsmIndex(),
 913                                 "kind", DirectMethodHandleDesc.Kind.valueOf(mh.kind(),
 914                                         mref instanceof InterfaceMethodRefEntry).name(),
 915                                 "owner", mref.owner().asInternalName(),
 916                                 "name", mref.nameAndType().name().stringValue()));
 917                         bmNode.with(list("args", "arg", bm.arguments().stream().map(LoadableConstantEntry::constantValue)));
 918                         return bmNode;
 919                     })));
 920                 case ConstantValueAttribute cva ->
 921                     nodes.add(leaf("constant value", cva.constant().constantValue()));
 922                 case NestHostAttribute nha ->
 923                     nodes.add(leaf("nest host", nha.nestHost().name().stringValue()));
 924                 case NestMembersAttribute nma ->
 925                     nodes.add(list("nest members", "member", nma.nestMembers().stream()
 926                             .map(mp -> mp.name().stringValue())));
 927                 case PermittedSubclassesAttribute psa ->
 928                     nodes.add(list("permitted subclasses", "subclass", psa.permittedSubclasses().stream()
 929                             .map(e -> e.name().stringValue())));



 930                 default -> {}
 931             }
 932             if (verbosity == Verbosity.TRACE_ALL) switch (attr) {
 933                 case EnclosingMethodAttribute ema ->
 934                     nodes.add(map("enclosing method",
 935                             "class", ema.enclosingClass().name().stringValue(),
 936                             "method name", ema.enclosingMethodName()
 937                                     .map(Utf8Entry::stringValue).orElse("null"),
 938                             "method type", ema.enclosingMethodType()
 939                                     .map(Utf8Entry::stringValue).orElse("null")));
 940                 case ExceptionsAttribute exa ->
 941                     nodes.add(list("exceptions", "exc", exa.exceptions().stream()
 942                             .map(e -> e.name().stringValue())));
 943                 case InnerClassesAttribute ica ->
 944                     nodes.add(new ListNodeImpl(BLOCK, "inner classes", ica.classes().stream()
 945                             .map(ic -> new MapNodeImpl(FLOW, "cls").with(
 946                                 leaf("inner class", ic.innerClass().name().stringValue()),
 947                                 leaf("outer class", ic.outerClass()
 948                                         .map(cle -> cle.name().stringValue()).orElse("null")),
 949                                 leaf("inner name", ic.innerName().map(Utf8Entry::stringValue).orElse("null")),

 910                         var bmNode = new MapNodeImpl(FLOW, "bm");
 911                         bmNode.with(leafs(
 912                                 "index", bm.bsmIndex(),
 913                                 "kind", DirectMethodHandleDesc.Kind.valueOf(mh.kind(),
 914                                         mref instanceof InterfaceMethodRefEntry).name(),
 915                                 "owner", mref.owner().asInternalName(),
 916                                 "name", mref.nameAndType().name().stringValue()));
 917                         bmNode.with(list("args", "arg", bm.arguments().stream().map(LoadableConstantEntry::constantValue)));
 918                         return bmNode;
 919                     })));
 920                 case ConstantValueAttribute cva ->
 921                     nodes.add(leaf("constant value", cva.constant().constantValue()));
 922                 case NestHostAttribute nha ->
 923                     nodes.add(leaf("nest host", nha.nestHost().name().stringValue()));
 924                 case NestMembersAttribute nma ->
 925                     nodes.add(list("nest members", "member", nma.nestMembers().stream()
 926                             .map(mp -> mp.name().stringValue())));
 927                 case PermittedSubclassesAttribute psa ->
 928                     nodes.add(list("permitted subclasses", "subclass", psa.permittedSubclasses().stream()
 929                             .map(e -> e.name().stringValue())));
 930                 case LoadableDescriptorsAttribute pa ->
 931                     nodes.add(list("loadable descriptors", "descriptor", pa.loadableDescriptors().stream()
 932                             .map(e -> e.stringValue())));
 933                 default -> {}
 934             }
 935             if (verbosity == Verbosity.TRACE_ALL) switch (attr) {
 936                 case EnclosingMethodAttribute ema ->
 937                     nodes.add(map("enclosing method",
 938                             "class", ema.enclosingClass().name().stringValue(),
 939                             "method name", ema.enclosingMethodName()
 940                                     .map(Utf8Entry::stringValue).orElse("null"),
 941                             "method type", ema.enclosingMethodType()
 942                                     .map(Utf8Entry::stringValue).orElse("null")));
 943                 case ExceptionsAttribute exa ->
 944                     nodes.add(list("exceptions", "exc", exa.exceptions().stream()
 945                             .map(e -> e.name().stringValue())));
 946                 case InnerClassesAttribute ica ->
 947                     nodes.add(new ListNodeImpl(BLOCK, "inner classes", ica.classes().stream()
 948                             .map(ic -> new MapNodeImpl(FLOW, "cls").with(
 949                                 leaf("inner class", ic.innerClass().name().stringValue()),
 950                                 leaf("outer class", ic.outerClass()
 951                                         .map(cle -> cle.name().stringValue()).orElse("null")),
 952                                 leaf("inner name", ic.innerName().map(Utf8Entry::stringValue).orElse("null")),
< prev index next >