< prev index next >

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

Print this page

 884                     bm -> {
 885                         var mh = bm.bootstrapMethod();
 886                         var mref = mh.reference();
 887                         return map("bm",
 888                                 "kind", DirectMethodHandleDesc.Kind.valueOf(mh.kind(),
 889                                         mref instanceof InterfaceMethodRefEntry).name(),
 890                                 "owner", mref.owner().name().stringValue(),
 891                                 "name", mref.nameAndType().name().stringValue(),
 892                                 "type", mref.nameAndType().type().stringValue());
 893                     })));
 894                 case ConstantValueAttribute cva ->
 895                     nodes.add(leaf("constant value", cva.constant().constantValue()));
 896                 case NestHostAttribute nha ->
 897                     nodes.add(leaf("nest host", nha.nestHost().name().stringValue()));
 898                 case NestMembersAttribute nma ->
 899                     nodes.add(list("nest members", "member", nma.nestMembers().stream()
 900                             .map(mp -> mp.name().stringValue())));
 901                 case PermittedSubclassesAttribute psa ->
 902                     nodes.add(list("permitted subclasses", "subclass", psa.permittedSubclasses().stream()
 903                             .map(e -> e.name().stringValue())));



 904                 default -> {}
 905             }
 906             if (verbosity == Verbosity.TRACE_ALL) switch (attr) {
 907                 case EnclosingMethodAttribute ema ->
 908                     nodes.add(map("enclosing method",
 909                             "class", ema.enclosingClass().name().stringValue(),
 910                             "method name", ema.enclosingMethodName()
 911                                     .map(Utf8Entry::stringValue).orElse("null"),
 912                             "method type", ema.enclosingMethodType()
 913                                     .map(Utf8Entry::stringValue).orElse("null")));
 914                 case ExceptionsAttribute exa ->
 915                     nodes.add(list("exceptions", "exc", exa.exceptions().stream()
 916                             .map(e -> e.name().stringValue())));
 917                 case InnerClassesAttribute ica ->
 918                     nodes.add(new ListNodeImpl(BLOCK, "inner classes", ica.classes().stream()
 919                             .map(ic -> new MapNodeImpl(FLOW, "cls").with(
 920                                 leaf("inner class", ic.innerClass().name().stringValue()),
 921                                 leaf("outer class", ic.outerClass()
 922                                         .map(cle -> cle.name().stringValue()).orElse("null")),
 923                                 leaf("inner name", ic.innerName().map(Utf8Entry::stringValue).orElse("null")),

 884                     bm -> {
 885                         var mh = bm.bootstrapMethod();
 886                         var mref = mh.reference();
 887                         return map("bm",
 888                                 "kind", DirectMethodHandleDesc.Kind.valueOf(mh.kind(),
 889                                         mref instanceof InterfaceMethodRefEntry).name(),
 890                                 "owner", mref.owner().name().stringValue(),
 891                                 "name", mref.nameAndType().name().stringValue(),
 892                                 "type", mref.nameAndType().type().stringValue());
 893                     })));
 894                 case ConstantValueAttribute cva ->
 895                     nodes.add(leaf("constant value", cva.constant().constantValue()));
 896                 case NestHostAttribute nha ->
 897                     nodes.add(leaf("nest host", nha.nestHost().name().stringValue()));
 898                 case NestMembersAttribute nma ->
 899                     nodes.add(list("nest members", "member", nma.nestMembers().stream()
 900                             .map(mp -> mp.name().stringValue())));
 901                 case PermittedSubclassesAttribute psa ->
 902                     nodes.add(list("permitted subclasses", "subclass", psa.permittedSubclasses().stream()
 903                             .map(e -> e.name().stringValue())));
 904                 case PreloadAttribute pa ->
 905                     nodes.add(list("preload classes", "class", pa.preloads().stream()
 906                             .map(e -> e.name().stringValue())));
 907                 default -> {}
 908             }
 909             if (verbosity == Verbosity.TRACE_ALL) switch (attr) {
 910                 case EnclosingMethodAttribute ema ->
 911                     nodes.add(map("enclosing method",
 912                             "class", ema.enclosingClass().name().stringValue(),
 913                             "method name", ema.enclosingMethodName()
 914                                     .map(Utf8Entry::stringValue).orElse("null"),
 915                             "method type", ema.enclosingMethodType()
 916                                     .map(Utf8Entry::stringValue).orElse("null")));
 917                 case ExceptionsAttribute exa ->
 918                     nodes.add(list("exceptions", "exc", exa.exceptions().stream()
 919                             .map(e -> e.name().stringValue())));
 920                 case InnerClassesAttribute ica ->
 921                     nodes.add(new ListNodeImpl(BLOCK, "inner classes", ica.classes().stream()
 922                             .map(ic -> new MapNodeImpl(FLOW, "cls").with(
 923                                 leaf("inner class", ic.innerClass().name().stringValue()),
 924                                 leaf("outer class", ic.outerClass()
 925                                         .map(cle -> cle.name().stringValue()).orElse("null")),
 926                                 leaf("inner name", ic.innerName().map(Utf8Entry::stringValue).orElse("null")),
< prev index next >