- java.lang.Object
-
- kala.compress.harmony.pack200.BandSet
-
- kala.compress.harmony.pack200.ClassBands
-
public class ClassBands extends BandSet
Class bands (corresponds to theclass_bandsset of bands in the pack200 specification)
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static classClassBands.TempParamAnnotation-
Nested classes/interfaces inherited from class kala.compress.harmony.pack200.BandSet
BandSet.BandAnalysisResults, BandSet.BandData
-
-
Field Summary
-
Fields inherited from class kala.compress.harmony.pack200.BandSet
effort, segmentHeader
-
-
Constructor Summary
Constructors Constructor Description ClassBands(Segment segment, int numClasses, int effort, boolean stripDebug)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddAnnotation(int context, java.lang.String desc, boolean visible, java.util.List<java.lang.String> nameRU, java.util.List<java.lang.String> tags, java.util.List<java.lang.Object> values, java.util.List<java.lang.Integer> caseArrayN, java.util.List<java.lang.String> nestTypeRS, java.util.List<java.lang.String> nestNameRU, java.util.List<java.lang.Integer> nestPairN)voidaddAnnotationDefault(java.util.List<java.lang.String> nameRU, java.util.List<java.lang.String> tags, java.util.List<java.lang.Object> values, java.util.List<java.lang.Integer> caseArrayN, java.util.List<java.lang.String> nestTypeRS, java.util.List<java.lang.String> nestNameRU, java.util.List<java.lang.Integer> nestPairN)voidaddClass(int major, int flags, java.lang.String className, java.lang.String signature, java.lang.String superName, java.lang.String[] interfaces)voidaddClassAttribute(NewAttribute attribute)voidaddCode()voidaddCodeAttribute(NewAttribute attribute)voidaddEnclosingMethod(java.lang.String owner, java.lang.String name, java.lang.String desc)voidaddField(int flags, java.lang.String name, java.lang.String desc, java.lang.String signature, java.lang.Object value)voidaddFieldAttribute(NewAttribute attribute)voidaddHandler(org.objectweb.asm.Label start, org.objectweb.asm.Label end, org.objectweb.asm.Label handler, java.lang.String type)voidaddLineNumber(int line, org.objectweb.asm.Label start)voidaddLocalVariable(java.lang.String name, java.lang.String desc, java.lang.String signature, org.objectweb.asm.Label start, org.objectweb.asm.Label end, int indx)voidaddMaxStack(int maxStack, int maxLocals)voidaddMethod(int flags, java.lang.String name, java.lang.String desc, java.lang.String signature, java.lang.String[] exceptions)voidaddMethodAttribute(NewAttribute attribute)voidaddParameterAnnotation(int parameter, java.lang.String desc, boolean visible, java.util.List<java.lang.String> nameRU, java.util.List<java.lang.String> tags, java.util.List<java.lang.Object> values, java.util.List<java.lang.Integer> caseArrayN, java.util.List<java.lang.String> nestTypeRS, java.util.List<java.lang.String> nestNameRU, java.util.List<java.lang.Integer> nestPairN)voidaddSourceFile(java.lang.String source)protected static intcountArgs(java.lang.String descriptor)private voidcreateNewAttributeBands()voidcurrentClassReferencesInnerClass(CPClass inner)voiddoBciRenumbering(IntList bciRenumbering, java.util.Map<org.objectweb.asm.Label,java.lang.Integer> labelsToOffsets)voidendOfClass()voidendOfMethod()voidfinaliseBands()All input classes for the segment have now been read in, so this method is called so that this class can calculate/complete anything it could not do while classes were being read.private int[]getInts(CPClass[] cpClasses)booleanisAnySyntheticClasses()booleanisAnySyntheticFields()booleanisAnySyntheticMethods()private booleanisInnerClass(java.lang.String possibleInner)private booleanisInnerClassOf(java.lang.String possibleInner, CPClass possibleOuter)intnumClassesProcessed()voidpack(java.io.OutputStream out)Write the packed set of bands to the given output streamvoidremoveCurrentClass()Remove all entries for the current classprivate voidrenumberBci(java.util.List<java.lang.Integer> list, IntList bciRenumbering, java.util.Map<org.objectweb.asm.Label,java.lang.Integer> labelsToOffsets)private voidrenumberDoubleOffsetBci(java.util.List<java.lang.Integer> relative, java.util.List<java.lang.Integer> firstOffset, java.util.List<java.lang.Object> list, IntList bciRenumbering, java.util.Map<org.objectweb.asm.Label,java.lang.Integer> labelsToOffsets)private voidrenumberOffsetBci(java.util.List<java.lang.Integer> relative, java.util.List<java.lang.Integer> list, IntList bciRenumbering, java.util.Map<org.objectweb.asm.Label,java.lang.Integer> labelsToOffsets)private intsum(int[] ints)private voidwriteClassAttributeBands(java.io.OutputStream out)private voidwriteCodeAttributeBands(java.io.OutputStream out)private voidwriteCodeBands(java.io.OutputStream out)private voidwriteFieldAttributeBands(java.io.OutputStream out)private voidwriteMethodAttributeBands(java.io.OutputStream out)-
Methods inherited from class kala.compress.harmony.pack200.BandSet
cpEntryListToArray, cpEntryOrNullListToArray, encodeBandInt, encodeFlags, encodeFlags, encodeScalar, encodeScalar, integerListToArray, longListToArray
-
-
-
-
Field Detail
-
EMPTY_LONG_ARRAY
private static final long[] EMPTY_LONG_ARRAY
-
cpBands
private final CpBands cpBands
-
attrBands
private final AttributeDefinitionBands attrBands
-
class_this
private final CPClass[] class_this
-
class_super
private final CPClass[] class_super
-
class_interface
private final CPClass[][] class_interface
-
class_interface_count
private final int[] class_interface_count
-
major_versions
private final int[] major_versions
-
class_flags
private final long[] class_flags
-
class_attr_calls
private int[] class_attr_calls
-
classSourceFile
private final java.util.List<CPUTF8> classSourceFile
-
classEnclosingMethodClass
private final java.util.List<ConstantPoolEntry> classEnclosingMethodClass
-
classEnclosingMethodDesc
private final java.util.List<ConstantPoolEntry> classEnclosingMethodDesc
-
classSignature
private final java.util.List<CPSignature> classSignature
-
classFileVersionMinor
private final IntList classFileVersionMinor
-
classFileVersionMajor
private final IntList classFileVersionMajor
-
class_field_count
private final int[] class_field_count
-
field_descr
private final CPNameAndType[][] field_descr
-
field_flags
private final long[][] field_flags
-
field_attr_calls
private int[] field_attr_calls
-
fieldConstantValueKQ
private final java.util.List<CPConstant<?>> fieldConstantValueKQ
-
fieldSignature
private final java.util.List<CPSignature> fieldSignature
-
class_method_count
private final int[] class_method_count
-
method_descr
private final CPNameAndType[][] method_descr
-
method_flags
private final long[][] method_flags
-
method_attr_calls
private int[] method_attr_calls
-
methodSignature
private final java.util.List<CPSignature> methodSignature
-
methodExceptionNumber
private final IntList methodExceptionNumber
-
methodExceptionClasses
private final java.util.List<CPClass> methodExceptionClasses
-
codeHeaders
private int[] codeHeaders
-
codeMaxStack
private final IntList codeMaxStack
-
codeMaxLocals
private final IntList codeMaxLocals
-
codeHandlerCount
private final IntList codeHandlerCount
-
codeHandlerStartP
private final java.util.List codeHandlerStartP
-
codeHandlerEndPO
private final java.util.List codeHandlerEndPO
-
codeHandlerCatchPO
private final java.util.List codeHandlerCatchPO
-
codeHandlerClass
private final java.util.List<CPClass> codeHandlerClass
-
codeFlags
private final java.util.List<java.lang.Long> codeFlags
-
code_attr_calls
private int[] code_attr_calls
-
codeLineNumberTableN
private final IntList codeLineNumberTableN
-
codeLineNumberTableBciP
private final java.util.List codeLineNumberTableBciP
-
codeLineNumberTableLine
private final IntList codeLineNumberTableLine
-
codeLocalVariableTableN
private final IntList codeLocalVariableTableN
-
codeLocalVariableTableBciP
private final java.util.List codeLocalVariableTableBciP
-
codeLocalVariableTableSpanO
private final java.util.List codeLocalVariableTableSpanO
-
codeLocalVariableTableNameRU
private final java.util.List<ConstantPoolEntry> codeLocalVariableTableNameRU
-
codeLocalVariableTableTypeRS
private final java.util.List<ConstantPoolEntry> codeLocalVariableTableTypeRS
-
codeLocalVariableTableSlot
private final IntList codeLocalVariableTableSlot
-
codeLocalVariableTypeTableN
private final IntList codeLocalVariableTypeTableN
-
codeLocalVariableTypeTableBciP
private final java.util.List codeLocalVariableTypeTableBciP
-
codeLocalVariableTypeTableSpanO
private final java.util.List codeLocalVariableTypeTableSpanO
-
codeLocalVariableTypeTableNameRU
private final java.util.List<ConstantPoolEntry> codeLocalVariableTypeTableNameRU
-
codeLocalVariableTypeTableTypeRS
private final java.util.List<ConstantPoolEntry> codeLocalVariableTypeTableTypeRS
-
codeLocalVariableTypeTableSlot
private final IntList codeLocalVariableTypeTableSlot
-
class_RVA_bands
private final MetadataBandGroup class_RVA_bands
-
class_RIA_bands
private final MetadataBandGroup class_RIA_bands
-
field_RVA_bands
private final MetadataBandGroup field_RVA_bands
-
field_RIA_bands
private final MetadataBandGroup field_RIA_bands
-
method_RVA_bands
private final MetadataBandGroup method_RVA_bands
-
method_RIA_bands
private final MetadataBandGroup method_RIA_bands
-
method_RVPA_bands
private final MetadataBandGroup method_RVPA_bands
-
method_RIPA_bands
private final MetadataBandGroup method_RIPA_bands
-
method_AD_bands
private final MetadataBandGroup method_AD_bands
-
classAttributeBands
private final java.util.List<NewAttributeBands> classAttributeBands
-
methodAttributeBands
private final java.util.List<NewAttributeBands> methodAttributeBands
-
fieldAttributeBands
private final java.util.List<NewAttributeBands> fieldAttributeBands
-
codeAttributeBands
private final java.util.List<NewAttributeBands> codeAttributeBands
-
tempFieldFlags
private final java.util.List<java.lang.Long> tempFieldFlags
-
tempFieldDesc
private final java.util.List<CPNameAndType> tempFieldDesc
-
tempMethodFlags
private final java.util.List<java.lang.Long> tempMethodFlags
-
tempMethodDesc
private final java.util.List<CPNameAndType> tempMethodDesc
-
tempMethodRVPA
private ClassBands.TempParamAnnotation tempMethodRVPA
-
tempMethodRIPA
private ClassBands.TempParamAnnotation tempMethodRIPA
-
anySyntheticClasses
private boolean anySyntheticClasses
-
anySyntheticFields
private boolean anySyntheticFields
-
anySyntheticMethods
private boolean anySyntheticMethods
-
segment
private final Segment segment
-
classReferencesInnerClass
private final java.util.Map<CPClass,java.util.Set<CPClass>> classReferencesInnerClass
-
stripDebug
private final boolean stripDebug
-
index
private int index
-
numMethodArgs
private int numMethodArgs
-
class_InnerClasses_N
private int[] class_InnerClasses_N
-
class_InnerClasses_RC
private CPClass[] class_InnerClasses_RC
-
class_InnerClasses_F
private int[] class_InnerClasses_F
-
classInnerClassesOuterRCN
private java.util.List<CPClass> classInnerClassesOuterRCN
-
classInnerClassesNameRUN
private java.util.List<CPUTF8> classInnerClassesNameRUN
-
-
Constructor Detail
-
ClassBands
public ClassBands(Segment segment, int numClasses, int effort, boolean stripDebug) throws java.io.IOException
- Throws:
java.io.IOException
-
-
Method Detail
-
countArgs
protected static int countArgs(java.lang.String descriptor)
-
addAnnotation
public void addAnnotation(int context, java.lang.String desc, boolean visible, java.util.List<java.lang.String> nameRU, java.util.List<java.lang.String> tags, java.util.List<java.lang.Object> values, java.util.List<java.lang.Integer> caseArrayN, java.util.List<java.lang.String> nestTypeRS, java.util.List<java.lang.String> nestNameRU, java.util.List<java.lang.Integer> nestPairN)
-
addAnnotationDefault
public void addAnnotationDefault(java.util.List<java.lang.String> nameRU, java.util.List<java.lang.String> tags, java.util.List<java.lang.Object> values, java.util.List<java.lang.Integer> caseArrayN, java.util.List<java.lang.String> nestTypeRS, java.util.List<java.lang.String> nestNameRU, java.util.List<java.lang.Integer> nestPairN)
-
addClass
public void addClass(int major, int flags, java.lang.String className, java.lang.String signature, java.lang.String superName, java.lang.String[] interfaces)
-
addClassAttribute
public void addClassAttribute(NewAttribute attribute)
-
addCode
public void addCode()
-
addCodeAttribute
public void addCodeAttribute(NewAttribute attribute)
-
addEnclosingMethod
public void addEnclosingMethod(java.lang.String owner, java.lang.String name, java.lang.String desc)
-
addField
public void addField(int flags, java.lang.String name, java.lang.String desc, java.lang.String signature, java.lang.Object value)
-
addFieldAttribute
public void addFieldAttribute(NewAttribute attribute)
-
addHandler
public void addHandler(org.objectweb.asm.Label start, org.objectweb.asm.Label end, org.objectweb.asm.Label handler, java.lang.String type)
-
addLineNumber
public void addLineNumber(int line, org.objectweb.asm.Label start)
-
addLocalVariable
public void addLocalVariable(java.lang.String name, java.lang.String desc, java.lang.String signature, org.objectweb.asm.Label start, org.objectweb.asm.Label end, int indx)
-
addMaxStack
public void addMaxStack(int maxStack, int maxLocals)
-
addMethod
public void addMethod(int flags, java.lang.String name, java.lang.String desc, java.lang.String signature, java.lang.String[] exceptions)
-
addMethodAttribute
public void addMethodAttribute(NewAttribute attribute)
-
addParameterAnnotation
public void addParameterAnnotation(int parameter, java.lang.String desc, boolean visible, java.util.List<java.lang.String> nameRU, java.util.List<java.lang.String> tags, java.util.List<java.lang.Object> values, java.util.List<java.lang.Integer> caseArrayN, java.util.List<java.lang.String> nestTypeRS, java.util.List<java.lang.String> nestNameRU, java.util.List<java.lang.Integer> nestPairN)
-
addSourceFile
public void addSourceFile(java.lang.String source)
-
createNewAttributeBands
private void createNewAttributeBands() throws java.io.IOException- Throws:
java.io.IOException
-
currentClassReferencesInnerClass
public void currentClassReferencesInnerClass(CPClass inner)
-
doBciRenumbering
public void doBciRenumbering(IntList bciRenumbering, java.util.Map<org.objectweb.asm.Label,java.lang.Integer> labelsToOffsets)
-
endOfClass
public void endOfClass()
-
endOfMethod
public void endOfMethod()
-
finaliseBands
public void finaliseBands()
All input classes for the segment have now been read in, so this method is called so that this class can calculate/complete anything it could not do while classes were being read.
-
getInts
private int[] getInts(CPClass[] cpClasses)
-
isAnySyntheticClasses
public boolean isAnySyntheticClasses()
-
isAnySyntheticFields
public boolean isAnySyntheticFields()
-
isAnySyntheticMethods
public boolean isAnySyntheticMethods()
-
isInnerClass
private boolean isInnerClass(java.lang.String possibleInner)
-
isInnerClassOf
private boolean isInnerClassOf(java.lang.String possibleInner, CPClass possibleOuter)
-
numClassesProcessed
public int numClassesProcessed()
-
pack
public void pack(java.io.OutputStream out) throws java.io.IOException, Pack200ExceptionDescription copied from class:BandSetWrite the packed set of bands to the given output stream- Specified by:
packin classBandSet- Parameters:
out- TODO- Throws:
java.io.IOException- If an I/O error occurs.Pack200Exception- TODO
-
removeCurrentClass
public void removeCurrentClass()
Remove all entries for the current class
-
renumberBci
private void renumberBci(java.util.List<java.lang.Integer> list, IntList bciRenumbering, java.util.Map<org.objectweb.asm.Label,java.lang.Integer> labelsToOffsets)
-
renumberDoubleOffsetBci
private void renumberDoubleOffsetBci(java.util.List<java.lang.Integer> relative, java.util.List<java.lang.Integer> firstOffset, java.util.List<java.lang.Object> list, IntList bciRenumbering, java.util.Map<org.objectweb.asm.Label,java.lang.Integer> labelsToOffsets)
-
renumberOffsetBci
private void renumberOffsetBci(java.util.List<java.lang.Integer> relative, java.util.List<java.lang.Integer> list, IntList bciRenumbering, java.util.Map<org.objectweb.asm.Label,java.lang.Integer> labelsToOffsets)
-
sum
private int sum(int[] ints)
-
writeClassAttributeBands
private void writeClassAttributeBands(java.io.OutputStream out) throws java.io.IOException, Pack200Exception- Throws:
java.io.IOExceptionPack200Exception
-
writeCodeAttributeBands
private void writeCodeAttributeBands(java.io.OutputStream out) throws java.io.IOException, Pack200Exception- Throws:
java.io.IOExceptionPack200Exception
-
writeCodeBands
private void writeCodeBands(java.io.OutputStream out) throws java.io.IOException, Pack200Exception- Throws:
java.io.IOExceptionPack200Exception
-
writeFieldAttributeBands
private void writeFieldAttributeBands(java.io.OutputStream out) throws java.io.IOException, Pack200Exception- Throws:
java.io.IOExceptionPack200Exception
-
writeMethodAttributeBands
private void writeMethodAttributeBands(java.io.OutputStream out) throws java.io.IOException, Pack200Exception- Throws:
java.io.IOExceptionPack200Exception
-
-