- java.lang.Object
-
- org.objectweb.asm.ClassVisitor
-
- kala.compress.harmony.pack200.Segment
-
public class Segment extends org.objectweb.asm.ClassVisitorA Pack200 archive consists of one or more Segments.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description classSegment.ArrayVisitorstatic classSegment.PassExceptionException indicating that the class currently being visited contains an unknown attribute, which means that by default the class file needs to be passed through as-is in the file_bands rather than being packed with pack200.classSegment.SegmentAnnotationVisitorSegmentAnnotationVisitor implementsAnnotationVisitorto visit Annotations found in a class file.classSegment.SegmentFieldVisitorSegmentFieldVisitor implementsFieldVisitorto visit the metadata relating to fields in a class file.classSegment.SegmentMethodVisitorThis class implements MethodVisitor to visit the contents and metadata related to methods in a class file.
-
Field Summary
Fields Modifier and Type Field Description static intASM_APISee https://asm.ow2.io/Javadoc/org/objectweb/asm/Opcodes.html#ASM4private AttributeDefinitionBandsattributeDefinitionBandsprivate BcBandsbcBandsprivate ClassBandsclassBandsprivate CpBandscpBandsprivate Pack200ClassReadercurrentClassReaderprivate Segment.SegmentFieldVisitorfieldVisitorprivate FileBandsfileBandsprivate IcBandsicBandsprivate Segment.SegmentMethodVisitormethodVisitorprivate org.objectweb.asm.Attribute[]nonStandardAttributePrototypesprivate PackingOptionsoptionsprivate SegmentHeadersegmentHeaderprivate booleanstripDebug
-
Constructor Summary
Constructors Constructor Description Segment()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidaddValueAndTag(java.lang.Object value, java.util.List<java.lang.String> tags, java.util.List<java.lang.Object> values)AttributeDefinitionBandsgetAttrBands()ClassBandsgetClassBands()CpBandsgetCpBands()Pack200ClassReadergetCurrentClassReader()IcBandsgetIcBands()SegmentHeadergetSegmentHeader()booleanlastConstantHadWideIndex()voidpack(Archive.SegmentUnit segmentUnit, java.io.OutputStream out, PackingOptions options)The main method on Segment.private voidpassCurrentClass()private voidprocessClasses(Archive.SegmentUnit segmentUnit, org.objectweb.asm.Attribute[] attributes)voidvisit(int version, int access, java.lang.String name, java.lang.String signature, java.lang.String superName, java.lang.String[] interfaces)org.objectweb.asm.AnnotationVisitorvisitAnnotation(java.lang.String desc, boolean visible)voidvisitAttribute(org.objectweb.asm.Attribute attribute)voidvisitEnd()org.objectweb.asm.FieldVisitorvisitField(int flags, java.lang.String name, java.lang.String desc, java.lang.String signature, java.lang.Object value)voidvisitInnerClass(java.lang.String name, java.lang.String outerName, java.lang.String innerName, int flags)org.objectweb.asm.MethodVisitorvisitMethod(int flags, java.lang.String name, java.lang.String desc, java.lang.String signature, java.lang.String[] exceptions)voidvisitOuterClass(java.lang.String owner, java.lang.String name, java.lang.String desc)voidvisitSource(java.lang.String source, java.lang.String debug)
-
-
-
Field Detail
-
ASM_API
public static int ASM_API
See https://asm.ow2.io/Javadoc/org/objectweb/asm/Opcodes.html#ASM4
-
segmentHeader
private SegmentHeader segmentHeader
-
cpBands
private CpBands cpBands
-
attributeDefinitionBands
private AttributeDefinitionBands attributeDefinitionBands
-
icBands
private IcBands icBands
-
classBands
private ClassBands classBands
-
bcBands
private BcBands bcBands
-
fileBands
private FileBands fileBands
-
fieldVisitor
private final Segment.SegmentFieldVisitor fieldVisitor
-
methodVisitor
private final Segment.SegmentMethodVisitor methodVisitor
-
currentClassReader
private Pack200ClassReader currentClassReader
-
options
private PackingOptions options
-
stripDebug
private boolean stripDebug
-
nonStandardAttributePrototypes
private org.objectweb.asm.Attribute[] nonStandardAttributePrototypes
-
-
Method Detail
-
addValueAndTag
private void addValueAndTag(java.lang.Object value, java.util.List<java.lang.String> tags, java.util.List<java.lang.Object> values)
-
getAttrBands
public AttributeDefinitionBands getAttrBands()
-
getClassBands
public ClassBands getClassBands()
-
getCpBands
public CpBands getCpBands()
-
getCurrentClassReader
public Pack200ClassReader getCurrentClassReader()
-
getIcBands
public IcBands getIcBands()
-
getSegmentHeader
public SegmentHeader getSegmentHeader()
-
lastConstantHadWideIndex
public boolean lastConstantHadWideIndex()
-
pack
public void pack(Archive.SegmentUnit segmentUnit, java.io.OutputStream out, PackingOptions options) throws java.io.IOException, Pack200Exception
The main method on Segment. Reads in all the class files, packs them and then writes the packed segment out to the given OutputStream.- Parameters:
segmentUnit- TODOout- the OutputStream to write the packed Segment tooptions- packing options- Throws:
java.io.IOException- If an I/O error occurs.Pack200Exception- TODO
-
passCurrentClass
private void passCurrentClass()
-
processClasses
private void processClasses(Archive.SegmentUnit segmentUnit, org.objectweb.asm.Attribute[] attributes) throws Pack200Exception
- Throws:
Pack200Exception
-
visit
public void visit(int version, int access, java.lang.String name, java.lang.String signature, java.lang.String superName, java.lang.String[] interfaces)- Overrides:
visitin classorg.objectweb.asm.ClassVisitor
-
visitAnnotation
public org.objectweb.asm.AnnotationVisitor visitAnnotation(java.lang.String desc, boolean visible)- Overrides:
visitAnnotationin classorg.objectweb.asm.ClassVisitor
-
visitAttribute
public void visitAttribute(org.objectweb.asm.Attribute attribute)
- Overrides:
visitAttributein classorg.objectweb.asm.ClassVisitor
-
visitEnd
public void visitEnd()
- Overrides:
visitEndin classorg.objectweb.asm.ClassVisitor
-
visitField
public org.objectweb.asm.FieldVisitor visitField(int flags, java.lang.String name, java.lang.String desc, java.lang.String signature, java.lang.Object value)- Overrides:
visitFieldin classorg.objectweb.asm.ClassVisitor
-
visitInnerClass
public void visitInnerClass(java.lang.String name, java.lang.String outerName, java.lang.String innerName, int flags)- Overrides:
visitInnerClassin classorg.objectweb.asm.ClassVisitor
-
visitMethod
public org.objectweb.asm.MethodVisitor visitMethod(int flags, java.lang.String name, java.lang.String desc, java.lang.String signature, java.lang.String[] exceptions)- Overrides:
visitMethodin classorg.objectweb.asm.ClassVisitor
-
visitOuterClass
public void visitOuterClass(java.lang.String owner, java.lang.String name, java.lang.String desc)- Overrides:
visitOuterClassin classorg.objectweb.asm.ClassVisitor
-
visitSource
public void visitSource(java.lang.String source, java.lang.String debug)- Overrides:
visitSourcein classorg.objectweb.asm.ClassVisitor
-
-