< prev index next >

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

Print this page

 922                         var bmNode = new MapNodeImpl(FLOW, "bm");
 923                         bmNode.with(leafs(
 924                                 "index", bm.bsmIndex(),
 925                                 "kind", DirectMethodHandleDesc.Kind.valueOf(mh.kind(),
 926                                         mref instanceof InterfaceMethodRefEntry).name(),
 927                                 "owner", mref.owner().asInternalName(),
 928                                 "name", mref.nameAndType().name().stringValue()));
 929                         bmNode.with(list("args", "arg", bm.arguments().stream().map(LoadableConstantEntry::constantValue)));
 930                         return bmNode;
 931                     })));
 932                 case ConstantValueAttribute cva ->
 933                     nodes.add(leaf("constant value", cva.constant().constantValue()));
 934                 case NestHostAttribute nha ->
 935                     nodes.add(leaf("nest host", nha.nestHost().name().stringValue()));
 936                 case NestMembersAttribute nma ->
 937                     nodes.add(list("nest members", "member", nma.nestMembers().stream()
 938                             .map(mp -> mp.name().stringValue())));
 939                 case PermittedSubclassesAttribute psa ->
 940                     nodes.add(list("permitted subclasses", "subclass", psa.permittedSubclasses().stream()
 941                             .map(e -> e.name().stringValue())));



 942                 default -> {}
 943             }
 944             if (verbosity == Verbosity.TRACE_ALL) switch (attr) {
 945                 case EnclosingMethodAttribute ema ->
 946                     nodes.add(map("enclosing method",
 947                             "class", ema.enclosingClass().name().stringValue(),
 948                             "method name", ema.enclosingMethodName()
 949                                     .<ConstantDesc>map(Utf8Entry::stringValue).orElse(BSM_NULL_CONSTANT),
 950                             "method type", ema.enclosingMethodType()
 951                                     .<ConstantDesc>map(Utf8Entry::stringValue).orElse(BSM_NULL_CONSTANT)));
 952                 case ExceptionsAttribute exa ->
 953                     nodes.add(list("exceptions", "exc", exa.exceptions().stream()
 954                             .map(e -> e.name().stringValue())));
 955                 case InnerClassesAttribute ica ->
 956                     nodes.add(new ListNodeImpl(BLOCK, "inner classes", ica.classes().stream()
 957                             .map(ic -> new MapNodeImpl(FLOW, "cls").with(
 958                                 leaf("inner class", ic.innerClass().name().stringValue()),
 959                                 leaf("outer class", ic.outerClass()
 960                                         .map(cle -> (ConstantDesc)cle.name().stringValue()).orElse(BSM_NULL_CONSTANT)),
 961                                 leaf("inner name", ic.innerName().<ConstantDesc>map(Utf8Entry::stringValue).orElse(BSM_NULL_CONSTANT)),

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