< prev index next >

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

Print this page

 189             super(cf, mapper, pos);
 190         }
 191     }
 192 
 193     public static final class BoundStackMapTableAttribute
 194             extends BoundAttribute<StackMapTableAttribute>
 195             implements StackMapTableAttribute {
 196         final MethodModel method;
 197         final LabelContext ctx;
 198         List<StackMapFrameInfo> entries = null;
 199 
 200         public BoundStackMapTableAttribute(CodeImpl code, ClassReader cf, AttributeMapper<StackMapTableAttribute> mapper, int pos) {
 201             super(cf, mapper, pos);
 202             method = code.parent().orElseThrow();
 203             ctx = code;
 204         }
 205 
 206         @Override
 207         public List<StackMapFrameInfo> entries() {
 208             if (entries == null) {
 209                 entries = new StackMapDecoder(classReader, payloadStart, ctx, StackMapDecoder.initFrameLocals(method)).entries();

 210             }
 211             return entries;
 212         }
 213     }
 214 
 215     public static final class BoundSyntheticAttribute extends BoundAttribute<SyntheticAttribute>
 216             implements SyntheticAttribute {
 217         public BoundSyntheticAttribute(ClassReader cf, AttributeMapper<SyntheticAttribute> mapper, int pos) {
 218             super(cf, mapper, pos);
 219         }
 220     }
 221 
 222     public static final class BoundLineNumberTableAttribute
 223             extends BoundAttribute<LineNumberTableAttribute>
 224             implements LineNumberTableAttribute {
 225         private List<LineNumberInfo> lineNumbers = null;
 226 
 227         public BoundLineNumberTableAttribute(ClassReader cf, AttributeMapper<LineNumberTableAttribute> mapper, int pos) {
 228             super(cf, mapper, pos);
 229         }

 918         }
 919     }
 920 
 921     public static final class BoundPermittedSubclassesAttribute extends BoundAttribute<PermittedSubclassesAttribute>
 922             implements PermittedSubclassesAttribute {
 923         private List<ClassEntry> permittedSubclasses = null;
 924 
 925         public BoundPermittedSubclassesAttribute(ClassReader cf, AttributeMapper<PermittedSubclassesAttribute> mapper, int pos) {
 926             super(cf, mapper, pos);
 927         }
 928 
 929         @Override
 930         public List<ClassEntry> permittedSubclasses() {
 931             if (permittedSubclasses == null) {
 932                 permittedSubclasses = readEntryList(payloadStart, ClassEntry.class);
 933             }
 934             return permittedSubclasses;
 935         }
 936     }
 937 

















 938     public abstract static sealed class BoundCodeAttribute
 939             extends BoundAttribute<CodeAttribute>
 940             implements CodeAttribute
 941             permits CodeImpl {
 942         protected final int codeStart;
 943         protected final int codeLength;
 944         protected final int codeEnd;
 945         protected final int attributePos;
 946         protected final int exceptionHandlerPos;
 947         protected final int exceptionHandlerCnt;
 948         protected final MethodModel enclosingMethod;
 949 
 950         public BoundCodeAttribute(AttributedElement enclosing,
 951                                   ClassReader reader,
 952                                   AttributeMapper<CodeAttribute> mapper,
 953                                   int payloadStart) {
 954             super(reader, mapper, payloadStart);
 955             this.codeLength = classReader.readInt(payloadStart + 4);
 956             this.enclosingMethod = (MethodModel) enclosing;
 957             this.codeStart = payloadStart + 8;

 997             case 0x5208e184 ->
 998                 name.equalsString(NAME_BOOTSTRAP_METHODS) ? bootstrapMethods() : null;
 999             case 0xcb60907a ->
1000                 name.equalsString(NAME_CHARACTER_RANGE_TABLE) ? characterRangeTable() : null;
1001             case 0x4020220d ->
1002                 name.equalsString(NAME_CODE) ? code() : null;
1003             case 0xc20dd1fe ->
1004                 name.equalsString(NAME_COMPILATION_ID) ? compilationId() : null;
1005             case 0xcab1940d ->
1006                 name.equalsString(NAME_CONSTANT_VALUE) ? constantValue() : null;
1007             case 0x558641d3 ->
1008                 name.equalsString(NAME_DEPRECATED) ? deprecated() : null;
1009             case 0x51d443cd ->
1010                 name.equalsString(NAME_ENCLOSING_METHOD) ? enclosingMethod() : null;
1011             case 0x687c1624 ->
1012                 name.equalsString(NAME_EXCEPTIONS) ? exceptions() : null;
1013             case 0x7adb2910 ->
1014                 name.equalsString(NAME_INNER_CLASSES) ? innerClasses() : null;
1015             case 0x653f0551 ->
1016                 name.equalsString(NAME_LINE_NUMBER_TABLE) ? lineNumberTable() : null;


1017             case 0x64c75927 ->
1018                 name.equalsString(NAME_LOCAL_VARIABLE_TABLE) ? localVariableTable() : null;
1019             case 0x6697f98d ->
1020                 name.equalsString(NAME_LOCAL_VARIABLE_TYPE_TABLE) ? localVariableTypeTable() : null;
1021             case 0xdbb0cdcb ->
1022                 name.equalsString(NAME_METHOD_PARAMETERS) ? methodParameters() : null;
1023             case 0xc9b0928c ->
1024                 name.equalsString(NAME_MODULE) ? module() : null;
1025             case 0x41cd27e8 ->
1026                 name.equalsString(NAME_MODULE_HASHES) ? moduleHashes() : null;
1027             case 0x7deb0a13 ->
1028                 name.equalsString(NAME_MODULE_MAIN_CLASS) ? moduleMainClass() : null;
1029             case 0x6706ff99 ->
1030                 name.equalsString(NAME_MODULE_PACKAGES) ? modulePackages() : null;
1031             case 0x60272858 ->
1032                 name.equalsString(NAME_MODULE_RESOLUTION) ? moduleResolution() : null;
1033             case 0x5646d73d ->
1034                 name.equalsString(NAME_MODULE_TARGET) ? moduleTarget() : null;
1035             case 0x50336c40 ->
1036                 name.equalsString(NAME_NEST_HOST) ? nestHost() : null;

 189             super(cf, mapper, pos);
 190         }
 191     }
 192 
 193     public static final class BoundStackMapTableAttribute
 194             extends BoundAttribute<StackMapTableAttribute>
 195             implements StackMapTableAttribute {
 196         final MethodModel method;
 197         final LabelContext ctx;
 198         List<StackMapFrameInfo> entries = null;
 199 
 200         public BoundStackMapTableAttribute(CodeImpl code, ClassReader cf, AttributeMapper<StackMapTableAttribute> mapper, int pos) {
 201             super(cf, mapper, pos);
 202             method = code.parent().orElseThrow();
 203             ctx = code;
 204         }
 205 
 206         @Override
 207         public List<StackMapFrameInfo> entries() {
 208             if (entries == null) {
 209                 entries = new StackMapDecoder(classReader, payloadStart, ctx, StackMapDecoder.initFrameLocals(method),
 210                         StackMapDecoder.initFrameUnsets(method)).entries();
 211             }
 212             return entries;
 213         }
 214     }
 215 
 216     public static final class BoundSyntheticAttribute extends BoundAttribute<SyntheticAttribute>
 217             implements SyntheticAttribute {
 218         public BoundSyntheticAttribute(ClassReader cf, AttributeMapper<SyntheticAttribute> mapper, int pos) {
 219             super(cf, mapper, pos);
 220         }
 221     }
 222 
 223     public static final class BoundLineNumberTableAttribute
 224             extends BoundAttribute<LineNumberTableAttribute>
 225             implements LineNumberTableAttribute {
 226         private List<LineNumberInfo> lineNumbers = null;
 227 
 228         public BoundLineNumberTableAttribute(ClassReader cf, AttributeMapper<LineNumberTableAttribute> mapper, int pos) {
 229             super(cf, mapper, pos);
 230         }

 919         }
 920     }
 921 
 922     public static final class BoundPermittedSubclassesAttribute extends BoundAttribute<PermittedSubclassesAttribute>
 923             implements PermittedSubclassesAttribute {
 924         private List<ClassEntry> permittedSubclasses = null;
 925 
 926         public BoundPermittedSubclassesAttribute(ClassReader cf, AttributeMapper<PermittedSubclassesAttribute> mapper, int pos) {
 927             super(cf, mapper, pos);
 928         }
 929 
 930         @Override
 931         public List<ClassEntry> permittedSubclasses() {
 932             if (permittedSubclasses == null) {
 933                 permittedSubclasses = readEntryList(payloadStart, ClassEntry.class);
 934             }
 935             return permittedSubclasses;
 936         }
 937     }
 938 
 939     public static final class BoundLoadableDescriptorsAttribute extends BoundAttribute<LoadableDescriptorsAttribute>
 940             implements LoadableDescriptorsAttribute {
 941         private List<Utf8Entry> loadableDescriptors = null;
 942 
 943         public BoundLoadableDescriptorsAttribute(ClassReader cf, AttributeMapper<LoadableDescriptorsAttribute> mapper, int pos) {
 944             super(cf, mapper, pos);
 945         }
 946 
 947         @Override
 948         public List<Utf8Entry> loadableDescriptors() {
 949             if (loadableDescriptors == null) {
 950                 loadableDescriptors = readEntryList(payloadStart, Utf8Entry.class);
 951             }
 952             return loadableDescriptors;
 953         }
 954     }
 955 
 956     public abstract static sealed class BoundCodeAttribute
 957             extends BoundAttribute<CodeAttribute>
 958             implements CodeAttribute
 959             permits CodeImpl {
 960         protected final int codeStart;
 961         protected final int codeLength;
 962         protected final int codeEnd;
 963         protected final int attributePos;
 964         protected final int exceptionHandlerPos;
 965         protected final int exceptionHandlerCnt;
 966         protected final MethodModel enclosingMethod;
 967 
 968         public BoundCodeAttribute(AttributedElement enclosing,
 969                                   ClassReader reader,
 970                                   AttributeMapper<CodeAttribute> mapper,
 971                                   int payloadStart) {
 972             super(reader, mapper, payloadStart);
 973             this.codeLength = classReader.readInt(payloadStart + 4);
 974             this.enclosingMethod = (MethodModel) enclosing;
 975             this.codeStart = payloadStart + 8;

1015             case 0x5208e184 ->
1016                 name.equalsString(NAME_BOOTSTRAP_METHODS) ? bootstrapMethods() : null;
1017             case 0xcb60907a ->
1018                 name.equalsString(NAME_CHARACTER_RANGE_TABLE) ? characterRangeTable() : null;
1019             case 0x4020220d ->
1020                 name.equalsString(NAME_CODE) ? code() : null;
1021             case 0xc20dd1fe ->
1022                 name.equalsString(NAME_COMPILATION_ID) ? compilationId() : null;
1023             case 0xcab1940d ->
1024                 name.equalsString(NAME_CONSTANT_VALUE) ? constantValue() : null;
1025             case 0x558641d3 ->
1026                 name.equalsString(NAME_DEPRECATED) ? deprecated() : null;
1027             case 0x51d443cd ->
1028                 name.equalsString(NAME_ENCLOSING_METHOD) ? enclosingMethod() : null;
1029             case 0x687c1624 ->
1030                 name.equalsString(NAME_EXCEPTIONS) ? exceptions() : null;
1031             case 0x7adb2910 ->
1032                 name.equalsString(NAME_INNER_CLASSES) ? innerClasses() : null;
1033             case 0x653f0551 ->
1034                 name.equalsString(NAME_LINE_NUMBER_TABLE) ? lineNumberTable() : null;
1035            case 0x5f348b64 ->
1036                 name.equalsString(NAME_LOADABLE_DESCRIPTORS) ? loadableDescriptors() : null;
1037             case 0x64c75927 ->
1038                 name.equalsString(NAME_LOCAL_VARIABLE_TABLE) ? localVariableTable() : null;
1039             case 0x6697f98d ->
1040                 name.equalsString(NAME_LOCAL_VARIABLE_TYPE_TABLE) ? localVariableTypeTable() : null;
1041             case 0xdbb0cdcb ->
1042                 name.equalsString(NAME_METHOD_PARAMETERS) ? methodParameters() : null;
1043             case 0xc9b0928c ->
1044                 name.equalsString(NAME_MODULE) ? module() : null;
1045             case 0x41cd27e8 ->
1046                 name.equalsString(NAME_MODULE_HASHES) ? moduleHashes() : null;
1047             case 0x7deb0a13 ->
1048                 name.equalsString(NAME_MODULE_MAIN_CLASS) ? moduleMainClass() : null;
1049             case 0x6706ff99 ->
1050                 name.equalsString(NAME_MODULE_PACKAGES) ? modulePackages() : null;
1051             case 0x60272858 ->
1052                 name.equalsString(NAME_MODULE_RESOLUTION) ? moduleResolution() : null;
1053             case 0x5646d73d ->
1054                 name.equalsString(NAME_MODULE_TARGET) ? moduleTarget() : null;
1055             case 0x50336c40 ->
1056                 name.equalsString(NAME_NEST_HOST) ? nestHost() : null;
< prev index next >