Class ClassFile
java.lang.Object
org.aspectj.org.eclipse.jdt.internal.compiler.ClassFile
- All Implemented Interfaces:
TypeConstants,TypeIds
- Direct Known Subclasses:
AjClassFile,CodeSnippetClassFile
Represents a class file wrapper on bytes, it is aware of its actual
type name.
Public APIs are listed below:
byte[] getBytes();
Answer the actual bytes of the class file
char[][] getCompoundName();
Answer the compound name of the class file.
For example, {{java}, {util}, {Hashtable}}.
byte[] getReducedBytes();
Answer a smaller byte format, which is only contains some structural
information. Those bytes are decodable with a regular class file reader,
such as DietClassFileReader
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants
TypeConstants.BoundCheckStatus, TypeConstants.CloseMethodRecord, TypeConstants.DangerousMethod -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Stringstatic final String[]static final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringintbyte[]intprotected booleanstatic final Stringstatic final Stringbyte[]intstatic final intstatic final intstatic final intstatic final Stringbooleanstatic final Stringintintstatic final intintlongstatic final StringFields inherited from interface org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants
ANNOTATION, ANNOTATION_PREFIX, ANNOTATION_SUFFIX, ANONYM_PREFIX, ANONYM_SUFFIX, ANONYMOUS_METHOD, APACHE, APACHE_DBUTILS, APACHE_IOUTILS, API, ASSERT_CLASS, ASSERT_FALSE, ASSERT_NOTNULL, ASSERT_NULL, ASSERT_TRUE, ASSERTIONS_CLASS, AUTOMATIC_MODULE_NAME, AUTOWIRED, BASE, BEANS, BOOLEAN, BYTE, CAPTURE18, CHANNELS, CHAR, CharArray_JAVA_IO_OBJECTINPUTSTREAM, CharArray_JAVA_IO_OBJECTOUTPUTSTREAM, CharArray_JAVA_IO_OBJECTSTREAMFIELD, CharArray_JAVA_LANG_ANNOTATION_ANNOTATION, CharArray_JAVA_LANG_ENUM, CharArray_JAVA_LANG_OBJECT, CharArray_JAVA_LANG_RECORD, CharArray_JAVA_LANG_RECORD_SLASH, CHECK_ARGUMENT, CHECK_NOT_NULL, CHECK_STATE, CLINIT, CLONE, CLOSE, CLOSE_QUIETLY, closeMethods, COM, COM_GOOGLE_COMMON_BASE_PRECONDITIONS, COM_GOOGLE_INJECT_INJECT, COMMONS, COMPILER, CONSTRAINT_EQUAL, CONSTRAINT_EXTENDS, CONSTRAINT_SUPER, CONTAINS, CONTAINS_ALL, CONTAINS_KEY, CONTAINS_VALUE, CORE, DEFAULT_LOCATION__ARRAY_CONTENTS, DEFAULT_LOCATION__FIELD, DEFAULT_LOCATION__PARAMETER, DEFAULT_LOCATION__RETURN_TYPE, DEFAULT_LOCATION__TYPE_ARGUMENT, DEFAULT_LOCATION__TYPE_BOUND, DEFAULT_LOCATION__TYPE_PARAMETER, DESERIALIZE_LAMBDA, DOM, DOUBLE, ECLIPSE, EQUALS, FACTORY, FILTER, FLOAT, FLUENT_RESOURCE_CLASSES, FOR_REMOVAL, FRAMEWORK, GET, GET_STATIC_FINAL, GET_STATIC_FINAL__SIGNATURE, GETCLASS, GOOGLE, GUAVA_CLOSEABLES, HASHCODE, IMPLEMENTS, INDEX_OF, INIT, INJECT_PACKAGE, INJECT_TYPE, INT, INTERNAL, INVOKE, IO, IS_INSTANCE, IS_NOTNULL, IS_NULL, IS_TRUE, ITYPEBINDING, JAKARTA, JAKARTA_ANNOTATION_INJECT_INJECT, JAVA, JAVA_BASE, JAVA_DOT_BASE, JAVA_IO, JAVA_IO_CLOSEABLE, JAVA_IO_EXTERNALIZABLE, JAVA_IO_IO, JAVA_IO_IOEXCEPTION, JAVA_IO_OBJECTINPUTSTREAM, JAVA_IO_OBJECTOUTPUTSTREAM, JAVA_IO_OBJECTSTREAMEXCEPTION, JAVA_IO_PRINTSTREAM, JAVA_IO_RESOURCE_FREE_CLOSEABLES, JAVA_IO_SERIALIZABLE, JAVA_IO_WRAPPER_CLOSEABLES, JAVA_LANG, JAVA_LANG_ANNOTATION, JAVA_LANG_ANNOTATION_ANNOTATION, JAVA_LANG_ANNOTATION_DOCUMENTED, JAVA_LANG_ANNOTATION_ELEMENTTYPE, JAVA_LANG_ANNOTATION_INHERITED, JAVA_LANG_ANNOTATION_REPEATABLE, JAVA_LANG_ANNOTATION_RETENTION, JAVA_LANG_ANNOTATION_RETENTIONPOLICY, JAVA_LANG_ANNOTATION_TARGET, JAVA_LANG_ASSERTIONERROR, JAVA_LANG_AUTOCLOSEABLE, JAVA_LANG_BOOLEAN, JAVA_LANG_BYTE, JAVA_LANG_CHARACTER, JAVA_LANG_CLASS, JAVA_LANG_CLASSNOTFOUNDEXCEPTION, JAVA_LANG_CLONEABLE, JAVA_LANG_CONSTANT_CLASSDESC, JAVA_LANG_DEPRECATED, JAVA_LANG_DOUBLE, JAVA_LANG_ENUM, JAVA_LANG_ENUM_ENUMDESC, JAVA_LANG_ERROR, JAVA_LANG_EXCEPTION, JAVA_LANG_FLOAT, JAVA_LANG_FUNCTIONAL_INTERFACE, JAVA_LANG_ILLEGALARGUMENTEXCEPTION, JAVA_LANG_INCOMPATIBLECLASSCHANGEERROR, JAVA_LANG_INTEGER, JAVA_LANG_INVOKE_CONSTANTBOOTSTRAP, JAVA_LANG_INVOKE_LAMBDAMETAFACTORY, JAVA_LANG_INVOKE_METHODHANDLE, JAVA_LANG_INVOKE_METHODHANDLE_$_POLYMORPHICSIGNATURE, JAVA_LANG_INVOKE_METHODHANDLE_POLYMORPHICSIGNATURE, JAVA_LANG_INVOKE_METHODHANDLES, JAVA_LANG_INVOKE_SERIALIZEDLAMBDA, JAVA_LANG_INVOKE_STRING_CONCAT_FACTORY, JAVA_LANG_INVOKE_VARHANDLE, JAVA_LANG_ITERABLE, JAVA_LANG_LONG, JAVA_LANG_NOCLASSDEFFOUNDERROR, JAVA_LANG_NOSUCHFIELDERROR, JAVA_LANG_OBJECT, JAVA_LANG_OVERRIDE, JAVA_LANG_RECORD, JAVA_LANG_REFLECT_CONSTRUCTOR, JAVA_LANG_REFLECT_FIELD, JAVA_LANG_REFLECT_METHOD, JAVA_LANG_RUNTIME_OBJECTMETHODS, JAVA_LANG_RUNTIME_SWITCHBOOTSTRAPS, JAVA_LANG_RUNTIMEEXCEPTION, JAVA_LANG_SAFEVARARGS, JAVA_LANG_SHORT, JAVA_LANG_STRING, JAVA_LANG_STRINGBUFFER, JAVA_LANG_STRINGBUILDER, JAVA_LANG_SUPPRESSWARNINGS, JAVA_LANG_SYSTEM, JAVA_LANG_THROWABLE, JAVA_LANG_VOID, JAVA_NIO_FILE_FILES, JAVA_UTIL_ARRAYS, JAVA_UTIL_COLLECTION, JAVA_UTIL_ITERATOR, JAVA_UTIL_LIST, JAVA_UTIL_MAP, JAVA_UTIL_OBJECTS, JAVA_UTIL_STREAM, JAVA_UTIL_STREAM__STREAM, JAVA_UTIL_ZIP_WRAPPER_CLOSEABLES, JAVAC, JAVAX, JAVAX_ANNOTATION_INJECT_INJECT, JAVAX_RMI_CORBA_STUB, JDK, JDK_INTERNAL_JAVAC_PREVIEW_FEATURE, JDK_INTERNAL_PREVIEW_FEATURE, JDK_INTERNAL_VALUEBASED, JDT, JUNIT, JUNIT_FRAMEWORK_ASSERT, JUPITER, KEYWORD_EXTENDS, LAMBDA_TYPE, LANG, LANG3, LAST_INDEX_OF, LENGTH, LONG, LOOKUP, MAIN, META_INF_MANIFEST_MF, METHOD_SOURCE, MODULE_INFO_CLASS_NAME, MODULE_INFO_CLASS_NAME_STRING, MODULE_INFO_FILE_NAME, MODULE_INFO_FILE_NAME_STRING, MODULE_INFO_NAME, MODULE_INFO_NAME_STRING, NEXT, NIO, NON_NULL, NON_SEALED, NOT_NULL, NULL, OBJECT, ONE_UTIL_STREAMEX, OPTIONAL, ORG, ORG_APACHE_COMMONS_LANG_VALIDATE, ORG_APACHE_COMMONS_LANG3_VALIDATE, ORG_ECLIPSE_CORE_RUNTIME_ASSERT, ORG_ECLIPSE_JDT_CORE_DOM_ITYPEBINDING, ORG_ECLIPSE_JDT_INTERNAL_COMPILER_LOOKUP_TYPEBINDING, ORG_JUNIT_ASSERT, ORG_JUNIT_JUPITER_API_ASSERTIONS, ORG_JUNIT_METHOD_SOURCE, ORG_SPRING_AUTOWIRED, OTHER_WRAPPER_CLOSEABLES, PACKAGE_INFO_NAME, PARAMS, PERMITS, PRIMITIVE_CLASS, PRIMITIVE_CLASS__SIGNATURE, PROVIDER, READOBJECT, READRESOLVE, RECORD_CLASS, RECORD_RESTRICTED_IDENTIFIER, REFLECT, REMOVE, REMOVE_ALL, REQUIRE_NON_NULL, REQUIRED, RESOURCE_FREE_CLOSEABLE_J_U_STREAMS, RESOURCE_FREE_CLOSEABLE_STREAMEX, RETAIN_ALL, RUNTIME, SEALED, SERIALPERSISTENTFIELDS, SERIALVERSIONUID, SHORT, SINCE, SPRING, STRING_CONCAT_MARKER_1, SYNTHETIC_ACCESS_METHOD_PREFIX, SYNTHETIC_ASSERT_DISABLED, SYNTHETIC_CLASS, SYNTHETIC_ENCLOSING_INSTANCE_PREFIX, SYNTHETIC_ENUM_CONSTANT_INITIALIZATION_METHOD_PREFIX, SYNTHETIC_ENUM_VALUES, SYNTHETIC_OUTER_LOCAL_PREFIX, SYNTHETIC_STATIC_FACTORY, SYNTHETIC_SWITCH_ENUM_TABLE, TOSTRING, TYPE, TYPE_PARAMETER_TARGET, TYPE_USE_TARGET, TYPEBINDING, UPPER_ANNOTATION_TYPE, UPPER_CLASS, UPPER_CONSTRUCTOR, UPPER_FIELD, UPPER_LOCAL_VARIABLE, UPPER_METHOD, UPPER_MODULE, UPPER_PACKAGE, UPPER_PARAMETER, UPPER_RECORD_COMPONENT, UPPER_RUNTIME, UPPER_SOURCE, UTIL, VALIDATE_CLASS, VALUE, VALUEOF, VALUES, VAR, VOID, WILDCARD_CAPTURE, WILDCARD_CAPTURE_NAME_PREFIX, WILDCARD_CAPTURE_NAME_SUFFIX, WILDCARD_CAPTURE_SIGNABLE_NAME_SUFFIX, WILDCARD_EXTENDS, WILDCARD_MINUS, WILDCARD_NAME, WILDCARD_PLUS, WILDCARD_STAR, WILDCARD_SUPER, WRITEOBJECT, WRITEREPLACE, YIELD, ZIPFields inherited from interface org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeIds
BitAnyNullAnnotation, BitAnyOwningAnnotation, BitAutoCloseable, BitCloseable, BitCollection, BitList, BitMap, BitNonNullAnnotation, BitNonNullByDefaultAnnotation, BitNotOwningAnnotation, BitNullableAnnotation, BitOwningAnnotation, BitResourceFreeCloseable, BitUninitialized, BitUninternedType, BitWrapperCloseable, Boolean2Boolean, Boolean2Int, Boolean2String, BOXING, Byte2Byte, Byte2Char, Byte2Double, Byte2Float, Byte2Int, Byte2Long, Byte2Short, Byte2String, Char2Byte, Char2Char, Char2Double, Char2Float, Char2Int, Char2Long, Char2Short, Char2String, COMPILE_TYPE_MASK, Double2Byte, Double2Char, Double2Double, Double2Float, Double2Int, Double2Long, Double2Short, Double2String, Float2Byte, Float2Char, Float2Double, Float2Float, Float2Int, Float2Long, Float2Short, Float2String, IMPLICIT_CONVERSION_MASK, InheritableBits, Int2Byte, Int2Char, Int2Double, Int2Float, Int2Int, Int2Long, Int2Short, Int2String, Long2Byte, Long2Char, Long2Double, Long2Float, Long2Int, Long2Long, Long2Short, Long2String, NoId, Null2Null, Null2String, Object2boolean, Object2byte, Object2char, Object2double, Object2float, Object2int, Object2long, Object2Object, Object2short, Object2String, Short2Byte, Short2Char, Short2Double, Short2Float, Short2Int, Short2Long, Short2Short, Short2String, String2String, T_boolean, T_byte, T_char, T_ComGoogleCommonBasePreconditions, T_ComGoogleInjectInject, T_double, T_float, T_int, T_JavaIoException, T_JavaIoExternalizable, T_JavaIoObjectStreamException, T_JavaIoPrintStream, T_JavaIoSerializable, T_JavaLangAnnotationAnnotation, T_JavaLangAnnotationDocumented, T_JavaLangAnnotationElementType, T_JavaLangAnnotationInherited, T_JavaLangAnnotationRepeatable, T_JavaLangAnnotationRetention, T_JavaLangAnnotationRetentionPolicy, T_JavaLangAnnotationTarget, T_JavaLangAssertionError, T_JavaLangAutoCloseable, T_JavaLangBoolean, T_JavaLangByte, T_JavaLangCharacter, T_JavaLangClass, T_JavaLangClassNotFoundException, T_JavaLangCloneable, T_JavaLangDeprecated, T_JavaLangDouble, T_JavaLangEnum, T_JavaLangError, T_JavaLangException, T_JavaLangFloat, T_JavaLangFunctionalInterface, T_JavaLangIllegalArgumentException, T_JavaLangInteger, T_JavaLangInvokeMethodHandlePolymorphicSignature, T_JavaLangIterable, T_JavaLangLong, T_JavaLangNoClassDefFoundError, T_JavaLangObject, T_JavaLangOverride, T_JavaLangRecord, T_JavaLangReflectConstructor, T_JavaLangReflectField, T_JavaLangReflectMethod, T_JavaLangRuntimeException, T_JavaLangSafeVarargs, T_JavaLangShort, T_JavaLangString, T_JavaLangStringBuffer, T_JavaLangStringBuilder, T_JavaLangSuppressWarnings, T_JavaLangSystem, T_JavaLangThrowable, T_JavaLangVoid, T_JavaUtilCollection, T_JavaUtilIterator, T_JavaUtilList, T_JavaUtilMap, T_JavaUtilObjects, T_JavaxInjectInject, T_JunitFrameworkAssert, T_LastWellKnownTypeId, T_long, T_null, T_OrgApacheCommonsLang3Validate, T_OrgApacheCommonsLangValidate, T_OrgEclipseCoreRuntimeAssert, T_OrgJunitAssert, T_OrgJunitJupiterApiAssertions, T_OrgJunitJupiterParamsProviderMethodSource, T_OrgSpringframeworkBeansFactoryAnnotationAutowired, T_short, T_undefined, T_void, UNBOXING -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedINTERNAL USE-ONLY This methods creates a new instance of the receiver.ClassFile(ModuleBinding moduleBinding, CompilerOptions options) ClassFile(SourceTypeBinding typeBinding) -
Method Summary
Modifier and TypeMethodDescriptionvoidaddAbstractMethod(AbstractMethodDeclaration method, MethodBinding methodBinding) INTERNAL USE-ONLY Generate the byte for a problem method info that correspond to a bogus method.voidINTERNAL USE-ONLY This methods generate all the attributes for the receiver.voidINTERNAL USE-ONLY This methods generate all the default abstract method infos that correpond to the abstract methods inherited from superinterfaces.voidINTERNAL USE-ONLY This methods generate all the fields infos for the receiver.voidaddModuleAttributes(ModuleBinding module, Annotation[] annotations, CompilationUnitDeclaration cud) INTERNAL USE-ONLY This methods generate all the module attributes for the receiver.voidaddProblemClinit(CategorizedProblem[] problems) INTERNAL USE-ONLY Generate the byte for a problem clinit method info that correspond to a boggus method.voidaddProblemConstructor(AbstractMethodDeclaration method, MethodBinding methodBinding, CategorizedProblem[] problems) INTERNAL USE-ONLY Generate the byte for a problem method info that correspond to a boggus constructor.voidaddProblemConstructor(AbstractMethodDeclaration method, MethodBinding methodBinding, CategorizedProblem[] problems, int savedOffset) INTERNAL USE-ONLY Generate the byte for a problem method info that correspond to a boggus constructor.voidaddProblemMethod(AbstractMethodDeclaration method, MethodBinding methodBinding, CategorizedProblem[] problems) INTERNAL USE-ONLY Generate the byte for a problem method info that correspond to a boggus method.voidaddProblemMethod(AbstractMethodDeclaration method, MethodBinding methodBinding, CategorizedProblem[] problems, int savedOffset) INTERNAL USE-ONLY Generate the byte for a problem method info that correspond to a boggus method.voidaddSpecialMethods(TypeDeclaration typeDecl) INTERNAL USE-ONLY Generate the byte for all the special method infos.voidaddSyntheticArrayClone(SyntheticMethodBinding methodBinding) voidaddSyntheticArrayConstructor(SyntheticMethodBinding methodBinding) voidaddSyntheticConstructorAccessMethod(SyntheticMethodBinding methodBinding) INTERNAL USE-ONLY Generate the bytes for a synthetic method that provides an access to a private constructor.voidaddSyntheticDeserializeLambda(SyntheticMethodBinding methodBinding, SyntheticMethodBinding[] syntheticMethodBindings) voidaddSyntheticEnumInitializationMethod(SyntheticMethodBinding methodBinding) voidaddSyntheticEnumValueOfMethod(SyntheticMethodBinding methodBinding) INTERNAL USE-ONLY Generate the bytes for a synthetic method that implements Enum#valueOf(String) for a given enum typevoidaddSyntheticEnumValuesMethod(SyntheticMethodBinding methodBinding) INTERNAL USE-ONLY Generate the bytes for a synthetic method that implements Enum#values() for a given enum typevoidaddSyntheticFactoryMethod(SyntheticMethodBinding methodBinding) voidaddSyntheticFieldReadAccessMethod(SyntheticMethodBinding methodBinding) INTERNAL USE-ONLY Generate the byte for a problem method info that correspond to a synthetic method that generate an read access to a private field.voidaddSyntheticFieldWriteAccessMethod(SyntheticMethodBinding methodBinding) INTERNAL USE-ONLY Generate the byte for a problem method info that correspond to a synthetic method that generate an write access to a private field.voidaddSyntheticMethodAccessMethod(SyntheticMethodBinding methodBinding) INTERNAL USE-ONLY Generate the bytes for a synthetic method that provides access to a private method.voidaddSyntheticSwitchTable(SyntheticMethodBinding methodBinding) voidcompleteCodeAttribute(int codeAttributeOffset, MethodScope scope) INTERNAL USE-ONLY That method completes the creation of the code attribute by setting - the attribute_length - max_stack - max_locals - code_length - exception table - and debug attributes if necessary.voidcompleteCodeAttributeForClinit(int codeAttributeOffset, int problemLine, MethodScope scope) INTERNAL USE-ONLY That method completes the creation of the code attribute by setting - the attribute_length - max_stack - max_locals - code_length - exception table - and debug attributes if necessary.voidcompleteCodeAttributeForClinit(int codeAttributeOffset, Scope scope) INTERNAL USE-ONLY That method completes the creation of the code attribute by setting - the attribute_length - max_stack - max_locals - code_length - exception table - and debug attributes if necessary.voidcompleteCodeAttributeForMissingAbstractProblemMethod(MethodBinding binding, int codeAttributeOffset, int[] startLineIndexes, int problemLine) voidcompleteCodeAttributeForProblemMethod(AbstractMethodDeclaration method, MethodBinding binding, int codeAttributeOffset, int[] startLineIndexes, int problemLine) INTERNAL USE-ONLY That method completes the creation of the code attribute by setting - the attribute_length - max_stack - max_locals - code_length - exception table - and debug attributes if necessary.voidcompleteCodeAttributeForSyntheticMethod(boolean hasExceptionHandlers, SyntheticMethodBinding binding, int codeAttributeOffset, int[] startLineIndexes, Scope scope) INTERNAL USE-ONLY That method completes the creation of the code attribute by setting - the attribute_length - max_stack - max_locals - code_length - exception table - and debug attributes if necessary.voidcompleteCodeAttributeForSyntheticMethod(SyntheticMethodBinding binding, int codeAttributeOffset, int[] startLineIndexes) INTERNAL USE-ONLY That method completes the creation of the code attribute by setting - the attribute_length - max_stack - max_locals - code_length - exception table - and debug attributes if necessary.voidcompleteMethodInfo(MethodBinding binding, int methodAttributeOffset, int attributesNumber) INTERNAL USE-ONLY Complete the creation of a method info by setting up the number of attributes at the right offset.static voidcreateProblemType(TypeDeclaration typeDeclaration, CompilationResult unitResult) INTERNAL USE-ONLY Request the creation of a ClassFile compatible representation of a problematic typechar[]fileName()INTERNAL USE-ONLY This methods returns a char[] representing the file name of the receivervoidINTERNAL USE-ONLY That method generates the header of a code attribute.intgenerateMethodInfoAttributes(MethodBinding methodBinding) intgenerateMethodInfoAttributes(MethodBinding methodBinding, List extraAttributes) INTERNAL USE-ONLY That method generates the attributes of a code attribute.intgenerateMethodInfoAttributes(MethodBinding methodBinding, AnnotationMethodDeclaration declaration) voidgenerateMethodInfoHeader(MethodBinding methodBinding) INTERNAL USE-ONLY That method generates the header of a method info: The header consists in: - the access flags - the name index of the method name inside the constant pool - the descriptor index of the signature of the method inside the constant pool.voidgenerateMethodInfoHeader(MethodBinding methodBinding, int accessFlags) INTERNAL USE-ONLY That method generates the header of a method info: The header consists in: - the access flags - the name index of the method name inside the constant pool - the descriptor index of the signature of the method inside the constant pool.voidINTERNAL USE-ONLY That method generates the method info header of a clinit: The header consists in: - the access flags (always default access + static) - the name index of the method name (always<clinit>) inside the constant pool - the descriptor index of the signature (always ()V) of the method inside the constant pool.voidgenerateMissingAbstractMethods(MethodDeclaration[] methodDeclarations, CompilationResult compilationResult) INTERNAL USE-ONLY Generate the byte for problem method infos that correspond to missing abstract methods.intbyte[]getBytes()EXTERNAL API Answer the actual bytes of the class file This method encodes the receiver structure into a byte array which is the content of the classfile.char[][]EXTERNAL API Answer the compound name of the class file.static ClassFilegetNewInstance(SourceTypeBinding typeBinding) protected voidinitByteArrays(int members) voidinitialize(SourceTypeBinding aType, ClassFile parentClassFile, boolean createProblemType) voidinitializeForModule(ModuleBinding module) voidinternalSetBytes(byte[] newBytes) Sets the actual bytes of the class file.INTERNAL USE-ONLY Returns the most enclosing classfile of the receiver.intrecordBootstrapMethod(String expression) intrecordBootstrapMethod(CaseStatement.LabelExpression resolvedCase) intrecordBootstrapMethod(FunctionalExpression expression) intrecordBootstrapMethod(SwitchStatement switchStatement) intvoidrecordInnerClasses(TypeBinding binding) voidrecordInnerClasses(TypeBinding binding, boolean onBottomForBug445231) voidrecordNestMember(SourceTypeBinding binding) intRecord a singleton bootstrap method for the given token.voidreset(SourceTypeBinding typeBinding, CompilerOptions options) voidINTERNAL USE-ONLY This methods leaves the space for method counts recording.traverse(MethodBinding methodBinding, int maxLocals, byte[] bytecodes, int codeOffset, int codeLength, Map<Integer, StackMapFrame> frames, boolean isClinit, Scope scope) char[]utf8At(byte[] reference, int absoluteOffset, int bytesAvailable)
-
Field Details
-
codeStream
-
constantPool
-
constantPoolOffset
public int constantPoolOffset -
contents
public byte[] contents -
contentsOffset
public int contentsOffset -
creatingProblemType
protected boolean creatingProblemType -
enclosingClassFile
-
header
public byte[] header -
headerOffset
public int headerOffset -
innerClassesBindings
-
nestMembers
-
bootstrapMethods
-
methodCount
public int methodCount -
methodCountOffset
public int methodCountOffset -
produceAttributes
public int produceAttributes -
referenceBinding
-
isNestedType
public boolean isNestedType -
targetJDK
public long targetJDK -
missingTypes
-
visitedTypes
-
INITIAL_CONTENTS_SIZE
public static final int INITIAL_CONTENTS_SIZE- See Also:
-
INITIAL_HEADER_SIZE
public static final int INITIAL_HEADER_SIZE- See Also:
-
INNER_CLASSES_SIZE
public static final int INNER_CLASSES_SIZE- See Also:
-
NESTED_MEMBER_SIZE
public static final int NESTED_MEMBER_SIZE- See Also:
-
ALTMETAFACTORY_STRING
-
METAFACTORY_STRING
-
BOOTSTRAP_STRING
-
TYPESWITCH_STRING
-
ENUMSWITCH_STRING
-
CONCAT_CONSTANTS
-
INVOKE_STRING
-
ENUMDESC_OF
- See Also:
-
CLASSDESC
- See Also:
-
CLASSDESC_OF
- See Also:
-
CONSTANT_BOOTSTRAP__GET_STATIC_FINAL
- See Also:
-
CONSTANT_BOOTSTRAP__PRIMITIVE_CLASS
- See Also:
-
BOOTSTRAP_METHODS
-
extraAttributes
-
-
Constructor Details
-
ClassFile
protected ClassFile()INTERNAL USE-ONLY This methods creates a new instance of the receiver. -
ClassFile
-
ClassFile
-
-
Method Details
-
createProblemType
INTERNAL USE-ONLY Request the creation of a ClassFile compatible representation of a problematic type- Parameters:
typeDeclaration- org.eclipse.jdt.internal.compiler.ast.TypeDeclarationunitResult- org.eclipse.jdt.internal.compiler.CompilationUnitResult
-
getNewInstance
-
addAbstractMethod
INTERNAL USE-ONLY Generate the byte for a problem method info that correspond to a bogus method.- Parameters:
method- org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclarationmethodBinding- org.eclipse.jdt.internal.compiler.nameloopkup.MethodBinding
-
addAttributes
public void addAttributes()INTERNAL USE-ONLY This methods generate all the attributes for the receiver. For a class they could be: - source file attribute - inner classes attribute - deprecated attribute -
addModuleAttributes
public void addModuleAttributes(ModuleBinding module, Annotation[] annotations, CompilationUnitDeclaration cud) INTERNAL USE-ONLY This methods generate all the module attributes for the receiver. -
addDefaultAbstractMethods
public void addDefaultAbstractMethods()INTERNAL USE-ONLY This methods generate all the default abstract method infos that correpond to the abstract methods inherited from superinterfaces. -
addFieldInfos
public void addFieldInfos()INTERNAL USE-ONLY This methods generate all the fields infos for the receiver. This includes: - a field info for each defined field of that class - a field info for each synthetic field (e.g. this$0) -
addProblemClinit
INTERNAL USE-ONLY Generate the byte for a problem clinit method info that correspond to a boggus method.- Parameters:
problems- org.eclipse.jdt.internal.compiler.problem.Problem[]
-
addProblemConstructor
public void addProblemConstructor(AbstractMethodDeclaration method, MethodBinding methodBinding, CategorizedProblem[] problems) INTERNAL USE-ONLY Generate the byte for a problem method info that correspond to a boggus constructor.- Parameters:
method- org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclarationmethodBinding- org.eclipse.jdt.internal.compiler.nameloopkup.MethodBindingproblems- org.eclipse.jdt.internal.compiler.problem.Problem[]
-
addProblemConstructor
public void addProblemConstructor(AbstractMethodDeclaration method, MethodBinding methodBinding, CategorizedProblem[] problems, int savedOffset) INTERNAL USE-ONLY Generate the byte for a problem method info that correspond to a boggus constructor. Reset the position inside the contents byte array to the savedOffset.- Parameters:
method- org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclarationmethodBinding- org.eclipse.jdt.internal.compiler.nameloopkup.MethodBindingproblems- org.eclipse.jdt.internal.compiler.problem.Problem[]savedOffset-int
-
addProblemMethod
public void addProblemMethod(AbstractMethodDeclaration method, MethodBinding methodBinding, CategorizedProblem[] problems) INTERNAL USE-ONLY Generate the byte for a problem method info that correspond to a boggus method.- Parameters:
method- org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclarationmethodBinding- org.eclipse.jdt.internal.compiler.nameloopkup.MethodBindingproblems- org.eclipse.jdt.internal.compiler.problem.Problem[]
-
addProblemMethod
public void addProblemMethod(AbstractMethodDeclaration method, MethodBinding methodBinding, CategorizedProblem[] problems, int savedOffset) INTERNAL USE-ONLY Generate the byte for a problem method info that correspond to a boggus method. Reset the position inside the contents byte array to the savedOffset.- Parameters:
method- org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclarationmethodBinding- org.eclipse.jdt.internal.compiler.nameloopkup.MethodBindingproblems- org.eclipse.jdt.internal.compiler.problem.Problem[]savedOffset-int
-
addSpecialMethods
INTERNAL USE-ONLY Generate the byte for all the special method infos. They are: - synthetic access methods - default abstract methods - lambda methods. -
addSyntheticArrayConstructor
-
addSyntheticArrayClone
-
addSyntheticFactoryMethod
-
addSyntheticConstructorAccessMethod
INTERNAL USE-ONLY Generate the bytes for a synthetic method that provides an access to a private constructor.- Parameters:
methodBinding- org.eclipse.jdt.internal.compiler.nameloopkup.SyntheticAccessMethodBinding
-
addSyntheticEnumValueOfMethod
INTERNAL USE-ONLY Generate the bytes for a synthetic method that implements Enum#valueOf(String) for a given enum type- Parameters:
methodBinding- org.eclipse.jdt.internal.compiler.nameloopkup.SyntheticAccessMethodBinding
-
addSyntheticEnumValuesMethod
INTERNAL USE-ONLY Generate the bytes for a synthetic method that implements Enum#values() for a given enum type- Parameters:
methodBinding- org.eclipse.jdt.internal.compiler.nameloopkup.SyntheticAccessMethodBinding
-
addSyntheticEnumInitializationMethod
-
addSyntheticFieldReadAccessMethod
INTERNAL USE-ONLY Generate the byte for a problem method info that correspond to a synthetic method that generate an read access to a private field.- Parameters:
methodBinding- org.eclipse.jdt.internal.compiler.nameloopkup.SyntheticAccessMethodBinding
-
addSyntheticFieldWriteAccessMethod
INTERNAL USE-ONLY Generate the byte for a problem method info that correspond to a synthetic method that generate an write access to a private field.- Parameters:
methodBinding- org.eclipse.jdt.internal.compiler.nameloopkup.SyntheticAccessMethodBinding
-
addSyntheticMethodAccessMethod
INTERNAL USE-ONLY Generate the bytes for a synthetic method that provides access to a private method.- Parameters:
methodBinding- org.eclipse.jdt.internal.compiler.nameloopkup.SyntheticAccessMethodBinding
-
addSyntheticSwitchTable
-
completeCodeAttribute
INTERNAL USE-ONLY That method completes the creation of the code attribute by setting - the attribute_length - max_stack - max_locals - code_length - exception table - and debug attributes if necessary.- Parameters:
codeAttributeOffset-int
-
generateTypeAnnotationsOnCodeAttribute
public int generateTypeAnnotationsOnCodeAttribute() -
completeCodeAttributeForClinit
INTERNAL USE-ONLY That method completes the creation of the code attribute by setting - the attribute_length - max_stack - max_locals - code_length - exception table - and debug attributes if necessary.- Parameters:
codeAttributeOffset-int
-
completeCodeAttributeForClinit
public void completeCodeAttributeForClinit(int codeAttributeOffset, int problemLine, MethodScope scope) INTERNAL USE-ONLY That method completes the creation of the code attribute by setting - the attribute_length - max_stack - max_locals - code_length - exception table - and debug attributes if necessary. -
completeCodeAttributeForMissingAbstractProblemMethod
public void completeCodeAttributeForMissingAbstractProblemMethod(MethodBinding binding, int codeAttributeOffset, int[] startLineIndexes, int problemLine) -
completeCodeAttributeForProblemMethod
public void completeCodeAttributeForProblemMethod(AbstractMethodDeclaration method, MethodBinding binding, int codeAttributeOffset, int[] startLineIndexes, int problemLine) INTERNAL USE-ONLY That method completes the creation of the code attribute by setting - the attribute_length - max_stack - max_locals - code_length - exception table - and debug attributes if necessary.- Parameters:
codeAttributeOffset-int
-
completeCodeAttributeForSyntheticMethod
public void completeCodeAttributeForSyntheticMethod(boolean hasExceptionHandlers, SyntheticMethodBinding binding, int codeAttributeOffset, int[] startLineIndexes, Scope scope) INTERNAL USE-ONLY That method completes the creation of the code attribute by setting - the attribute_length - max_stack - max_locals - code_length - exception table - and debug attributes if necessary.- Parameters:
binding- org.eclipse.jdt.internal.compiler.lookup.SyntheticAccessMethodBindingcodeAttributeOffset-int
-
completeCodeAttributeForSyntheticMethod
public void completeCodeAttributeForSyntheticMethod(SyntheticMethodBinding binding, int codeAttributeOffset, int[] startLineIndexes) INTERNAL USE-ONLY That method completes the creation of the code attribute by setting - the attribute_length - max_stack - max_locals - code_length - exception table - and debug attributes if necessary.- Parameters:
binding- org.eclipse.jdt.internal.compiler.lookup.SyntheticAccessMethodBindingcodeAttributeOffset-int
-
completeMethodInfo
public void completeMethodInfo(MethodBinding binding, int methodAttributeOffset, int attributesNumber) INTERNAL USE-ONLY Complete the creation of a method info by setting up the number of attributes at the right offset.- Parameters:
methodAttributeOffset-intattributesNumber-int
-
fileName
public char[] fileName()INTERNAL USE-ONLY This methods returns a char[] representing the file name of the receiver- Returns:
- char[]
-
generateCodeAttributeHeader
public void generateCodeAttributeHeader()INTERNAL USE-ONLY That method generates the header of a code attribute. - the index inside the constant pool for the attribute name ("Code") - leave some space for attribute_length(4), max_stack(2), max_locals(2), code_length(4). -
generateMethodInfoAttributes
INTERNAL USE-ONLY That method generates the attributes of a code attribute. They could be: - an exception attribute for each try/catch found inside the method - a deprecated attribute - a synthetic attribute for synthetic access methods It returns the number of attributes created for the code attribute.- Parameters:
methodBinding- org.eclipse.jdt.internal.compiler.lookup.MethodBinding- Returns:
int
-
generateMethodInfoAttributes
-
generateMethodInfoAttributes
public int generateMethodInfoAttributes(MethodBinding methodBinding, AnnotationMethodDeclaration declaration) -
generateMethodInfoHeader
INTERNAL USE-ONLY That method generates the header of a method info: The header consists in: - the access flags - the name index of the method name inside the constant pool - the descriptor index of the signature of the method inside the constant pool.- Parameters:
methodBinding- org.eclipse.jdt.internal.compiler.lookup.MethodBinding
-
generateMethodInfoHeader
INTERNAL USE-ONLY That method generates the header of a method info: The header consists in: - the access flags - the name index of the method name inside the constant pool - the descriptor index of the signature of the method inside the constant pool.- Parameters:
methodBinding- org.eclipse.jdt.internal.compiler.lookup.MethodBindingaccessFlags- the access flags
-
addSyntheticDeserializeLambda
public void addSyntheticDeserializeLambda(SyntheticMethodBinding methodBinding, SyntheticMethodBinding[] syntheticMethodBindings) -
generateMethodInfoHeaderForClinit
public void generateMethodInfoHeaderForClinit()INTERNAL USE-ONLY That method generates the method info header of a clinit: The header consists in: - the access flags (always default access + static) - the name index of the method name (always<clinit>) inside the constant pool - the descriptor index of the signature (always ()V) of the method inside the constant pool. -
generateMissingAbstractMethods
public void generateMissingAbstractMethods(MethodDeclaration[] methodDeclarations, CompilationResult compilationResult) INTERNAL USE-ONLY Generate the byte for problem method infos that correspond to missing abstract methods. http://dev.eclipse.org/bugs/show_bug.cgi?id=3179- Parameters:
methodDeclarations- Array of all missing abstract methods
-
getBytes
public byte[] getBytes()EXTERNAL API Answer the actual bytes of the class file This method encodes the receiver structure into a byte array which is the content of the classfile. Returns the byte array that represents the encoded structure of the receiver.- Returns:
- byte[]
-
internalSetBytes
public void internalSetBytes(byte[] newBytes) Sets the actual bytes of the class file. This method is made public only to be accessible from org.eclipse.jdt.internal.core.builder.AbstractImageBuilder during compilation post processing to store the modified byte representation of the class. Using this method for any other purpose is discouraged and may lead to unpredictable results.- Parameters:
newBytes- array containing new bytes, will be stored "as is", all subsequent modification on given array will be reflected and vice versa.
-
getCompoundName
public char[][] getCompoundName()EXTERNAL API Answer the compound name of the class file.- Returns:
- char[][] e.g. {{java}, {util}, {Hashtable}}.
-
initByteArrays
protected void initByteArrays(int members) -
initialize
public void initialize(SourceTypeBinding aType, ClassFile parentClassFile, boolean createProblemType) -
initializeForModule
-
outerMostEnclosingClassFile
INTERNAL USE-ONLY Returns the most enclosing classfile of the receiver. This is used know to store the constant pool name for all inner types of the receiver.- Returns:
- org.eclipse.jdt.internal.compiler.codegen.ClassFile
-
recordInnerClasses
-
recordInnerClasses
-
recordNestMember
-
getNestMembers
-
recordBootstrapMethod
-
recordBootstrapMethod
-
recordBootstrapMethod
-
recordBootstrapMethod
-
recordSingletonBootstrapMethod
Record a singleton bootstrap method for the given token.- Parameters:
descriptor- represents the method to be bootstrapped- Returns:
- the bootstrap index
-
recordBootstrapMethod
-
reset
-
setForMethodInfos
public void setForMethodInfos()INTERNAL USE-ONLY This methods leaves the space for method counts recording. -
traverse
public List<StackMapFrame> traverse(MethodBinding methodBinding, int maxLocals, byte[] bytecodes, int codeOffset, int codeLength, Map<Integer, StackMapFrame> frames, boolean isClinit, Scope scope) -
utf8At
public char[] utf8At(byte[] reference, int absoluteOffset, int bytesAvailable)
-