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
Modifier and TypeFieldDescriptionstatic final String
static final String[]
static final String
static final String
static final String
static final String
int
byte[]
int
protected boolean
static final String
static final String
byte[]
int
static final int
static final int
static final int
static final String
boolean
static final String
int
int
static final int
static final String
static final String
int
long
static final String
Fields 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, 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, ESSENTIAL_API, FACTORY, FILTER, FLOAT, FLUENT_RESOURCE_CLASSES, FOR_REMOVAL, FRAMEWORK, GET, 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_IO, JAVA_IO_CLOSEABLE, JAVA_IO_EXTERNALIZABLE, 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_NOCLASSDEFERROR, 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_RUNTIME_TEMPLATERUNTIME, JAVA_LANG_RUNTIMEEXCEPTION, JAVA_LANG_SAFEVARARGS, JAVA_LANG_SHORT, JAVA_LANG_STRING, JAVA_LANG_STRING_TEMPLATE_STR, JAVA_LANG_STRINGBUFFER, JAVA_LANG_STRINGBUILDER, JAVA_LANG_STRINGTEMPLATE, JAVA_LANG_STRINGTEMPLATE_PROCESSOR, 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, 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, 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, ZIP
Fields inherited from interface org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeIds
BitAnyNullAnnotation, 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_JavaLangNoClassDefError, 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_JdkInternalPreviewFeature, 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
ModifierConstructorDescriptionprotected
INTERNAL USE-ONLY This methods creates a new instance of the receiver.ClassFile
(ModuleBinding moduleBinding, CompilerOptions options) ClassFile
(SourceTypeBinding typeBinding) -
Method Summary
Modifier and TypeMethodDescriptionvoid
addAbstractMethod
(AbstractMethodDeclaration method, MethodBinding methodBinding) INTERNAL USE-ONLY Generate the byte for a problem method info that correspond to a bogus method.void
INTERNAL USE-ONLY This methods generate all the attributes for the receiver.void
INTERNAL USE-ONLY This methods generate all the default abstract method infos that correpond to the abstract methods inherited from superinterfaces.void
INTERNAL USE-ONLY This methods generate all the fields infos for the receiver.void
addModuleAttributes
(ModuleBinding module, Annotation[] annotations, CompilationUnitDeclaration cud) INTERNAL USE-ONLY This methods generate all the module attributes for the receiver.void
addProblemClinit
(CategorizedProblem[] problems) INTERNAL USE-ONLY Generate the byte for a problem clinit method info that correspond to a boggus method.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.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.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.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.void
addSpecialMethods
(TypeDeclaration typeDecl) INTERNAL USE-ONLY Generate the byte for all the special method infos.void
addSyntheticArrayClone
(SyntheticMethodBinding methodBinding) void
addSyntheticArrayConstructor
(SyntheticMethodBinding methodBinding) void
addSyntheticConstructorAccessMethod
(SyntheticMethodBinding methodBinding) INTERNAL USE-ONLY Generate the bytes for a synthetic method that provides an access to a private constructor.void
addSyntheticDeserializeLambda
(SyntheticMethodBinding methodBinding, SyntheticMethodBinding[] syntheticMethodBindings) void
addSyntheticEnumInitializationMethod
(SyntheticMethodBinding methodBinding) void
addSyntheticEnumValueOfMethod
(SyntheticMethodBinding methodBinding) INTERNAL USE-ONLY Generate the bytes for a synthetic method that implements Enum#valueOf(String) for a given enum typevoid
addSyntheticEnumValuesMethod
(SyntheticMethodBinding methodBinding) INTERNAL USE-ONLY Generate the bytes for a synthetic method that implements Enum#values() for a given enum typevoid
addSyntheticFactoryMethod
(SyntheticMethodBinding methodBinding) void
addSyntheticFieldReadAccessMethod
(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.void
addSyntheticFieldWriteAccessMethod
(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.void
addSyntheticMethodAccessMethod
(SyntheticMethodBinding methodBinding) INTERNAL USE-ONLY Generate the bytes for a synthetic method that provides access to a private method.void
addSyntheticSwitchTable
(SyntheticMethodBinding methodBinding) void
completeCodeAttribute
(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.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.void
completeCodeAttributeForClinit
(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.void
completeCodeAttributeForMissingAbstractProblemMethod
(MethodBinding binding, int codeAttributeOffset, int[] startLineIndexes, int problemLine) 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.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.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.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.static void
createProblemType
(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 receivervoid
INTERNAL USE-ONLY That method generates the header of a code attribute.int
generateMethodInfoAttributes
(MethodBinding methodBinding) int
generateMethodInfoAttributes
(MethodBinding methodBinding, List extraAttributes) INTERNAL USE-ONLY That method generates the attributes of a code attribute.int
generateMethodInfoAttributes
(MethodBinding methodBinding, AnnotationMethodDeclaration declaration) void
generateMethodInfoHeader
(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.void
generateMethodInfoHeader
(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.void
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.void
generateMissingAbstractMethods
(MethodDeclaration[] methodDeclarations, CompilationResult compilationResult) INTERNAL USE-ONLY Generate the byte for problem method infos that correspond to missing abstract methods.int
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.char[][]
EXTERNAL API Answer the compound name of the class file.static ClassFile
getNewInstance
(SourceTypeBinding typeBinding) protected void
initByteArrays
(int members) void
initialize
(SourceTypeBinding aType, ClassFile parentClassFile, boolean createProblemType) void
initializeForModule
(ModuleBinding module) void
internalSetBytes
(byte[] newBytes) Sets the actual bytes of the class file.INTERNAL USE-ONLY Returns the most enclosing classfile of the receiver.int
recordBootstrapMethod
(String expression) int
recordBootstrapMethod
(CaseStatement.ResolvedCase resolvedCase) int
recordBootstrapMethod
(FunctionalExpression expression) int
recordBootstrapMethod
(StringTemplate template) int
recordBootstrapMethod
(SwitchStatement switchStatement) int
void
recordInnerClasses
(TypeBinding binding) void
recordInnerClasses
(TypeBinding binding, boolean onBottomForBug445231) void
recordNestMember
(SourceTypeBinding binding) void
reset
(SourceTypeBinding typeBinding, CompilerOptions options) void
INTERNAL 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:
-
PROCESS_STRING
- See Also:
-
NEW_STRING_TEMPLATE
- 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
-int
attributesNumber
-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
-
recordBootstrapMethod
-
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)
-