⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usagemarker.java

📁 ProGuard 是一个免费的 Java类文件的压缩
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        markConstant(clazz, sourceFileAttribute.u2attributeNameIndex);        markConstant(clazz, sourceFileAttribute.u2sourceFileIndex);    }    public void visitSourceDirAttribute(Clazz clazz, SourceDirAttribute sourceDirAttribute)    {        markAsUsed(sourceDirAttribute);        markConstant(clazz, sourceDirAttribute.u2attributeNameIndex);        markConstant(clazz, sourceDirAttribute.u2sourceDirIndex);    }    public void visitInnerClassesAttribute(Clazz clazz, InnerClassesAttribute innerClassesAttribute)    {        // Don't mark the attribute and its name yet. We may mark it later, in        // InnerUsageMarker.        //markAsUsed(innerClassesAttribute);        //markConstant(clazz, innerClassesAttribute.u2attrNameIndex);        // Do mark the outer class entries.        innerClassesAttribute.innerClassEntriesAccept(clazz, this);    }    public void visitEnclosingMethodAttribute(Clazz clazz, EnclosingMethodAttribute enclosingMethodAttribute)    {        markAsUsed(enclosingMethodAttribute);        markConstant(clazz, enclosingMethodAttribute.u2attributeNameIndex);        markConstant(clazz, enclosingMethodAttribute.u2classIndex);        if (enclosingMethodAttribute.u2nameAndTypeIndex != 0)        {            markConstant(clazz, enclosingMethodAttribute.u2nameAndTypeIndex);        }    }    public void visitDeprecatedAttribute(Clazz clazz, DeprecatedAttribute deprecatedAttribute)    {        markAsUsed(deprecatedAttribute);        markConstant(clazz, deprecatedAttribute.u2attributeNameIndex);    }    public void visitSyntheticAttribute(Clazz clazz, SyntheticAttribute syntheticAttribute)    {        markAsUsed(syntheticAttribute);        markConstant(clazz, syntheticAttribute.u2attributeNameIndex);    }    public void visitSignatureAttribute(Clazz clazz, SignatureAttribute signatureAttribute)    {        markAsUsed(signatureAttribute);        markConstant(clazz, signatureAttribute.u2attributeNameIndex);        markConstant(clazz, signatureAttribute.u2signatureIndex);    }    public void visitConstantValueAttribute(Clazz clazz, Field field, ConstantValueAttribute constantValueAttribute)    {        markAsUsed(constantValueAttribute);        markConstant(clazz, constantValueAttribute.u2attributeNameIndex);        markConstant(clazz, constantValueAttribute.u2constantValueIndex);    }    public void visitExceptionsAttribute(Clazz clazz, Method method, ExceptionsAttribute exceptionsAttribute)    {        markAsUsed(exceptionsAttribute);        markConstant(clazz, exceptionsAttribute.u2attributeNameIndex);        // Mark the constant pool entries referenced by the exceptions.        exceptionsAttribute.exceptionEntriesAccept((ProgramClass)clazz, this);    }    public void visitCodeAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute)    {        markAsUsed(codeAttribute);        markConstant(clazz, codeAttribute.u2attributeNameIndex);        // Mark the constant pool entries referenced by the instructions,        // by the exceptions, and by the attributes.        codeAttribute.instructionsAccept(clazz, method, this);        codeAttribute.exceptionsAccept(clazz, method, this);        codeAttribute.attributesAccept(clazz, method, this);    }    public void visitStackMapAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, StackMapAttribute stackMapAttribute)    {        markAsUsed(stackMapAttribute);        markConstant(clazz, stackMapAttribute.u2attributeNameIndex);        // Mark the constant pool entries referenced by the stack map frames.        stackMapAttribute.stackMapFramesAccept(clazz, method, codeAttribute, this);    }    public void visitStackMapTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, StackMapTableAttribute stackMapTableAttribute)    {        markAsUsed(stackMapTableAttribute);        markConstant(clazz, stackMapTableAttribute.u2attributeNameIndex);        // Mark the constant pool entries referenced by the stack map frames.        stackMapTableAttribute.stackMapFramesAccept(clazz, method, codeAttribute, this);    }    public void visitLineNumberTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, LineNumberTableAttribute lineNumberTableAttribute)    {        markAsUsed(lineNumberTableAttribute);        markConstant(clazz, lineNumberTableAttribute.u2attributeNameIndex);    }    public void visitLocalVariableTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableTableAttribute localVariableTableAttribute)    {        markAsUsed(localVariableTableAttribute);        markConstant(clazz, localVariableTableAttribute.u2attributeNameIndex);        // Mark the constant pool entries referenced by the local variables.        localVariableTableAttribute.localVariablesAccept(clazz, method, codeAttribute, this);    }    public void visitLocalVariableTypeTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableTypeTableAttribute localVariableTypeTableAttribute)    {        markAsUsed(localVariableTypeTableAttribute);        markConstant(clazz, localVariableTypeTableAttribute.u2attributeNameIndex);        // Mark the constant pool entries referenced by the local variable types.        localVariableTypeTableAttribute.localVariablesAccept(clazz, method, codeAttribute, this);    }    public void visitAnyAnnotationsAttribute(Clazz clazz, AnnotationsAttribute annotationsAttribute)    {        // Don't mark the attribute and its contents yet. We may mark them later,        // in AnnotationUsageMarker.//        markAsUsed(annotationsAttribute);////        markConstant(clazz, annotationsAttribute.u2attributeNameIndex);////        // Mark the constant pool entries referenced by the annotations.//        annotationsAttribute.annotationsAccept(clazz, this);    }    public void visitAnyParameterAnnotationsAttribute(Clazz clazz, Method method, ParameterAnnotationsAttribute parameterAnnotationsAttribute)    {        // Don't mark the attribute and its contents yet. We may mark them later,        // in AnnotationUsageMarker.//        markAsUsed(parameterAnnotationsAttribute);////        markConstant(clazz, parameterAnnotationsAttribute.u2attributeNameIndex);////        // Mark the constant pool entries referenced by the annotations.//        parameterAnnotationsAttribute.annotationsAccept(clazz, method, this);    }    public void visitAnnotationDefaultAttribute(Clazz clazz, Method method, AnnotationDefaultAttribute annotationDefaultAttribute)    {        // Don't mark the attribute and its contents yet. We may mark them later,        // in AnnotationUsageMarker.//        markAsUsed(annotationDefaultAttribute);////        markConstant(clazz, annotationDefaultAttribute.u2attributeNameIndex);////        // Mark the constant pool entries referenced by the element value.//        annotationDefaultAttribute.defaultValueAccept(clazz, this);    }    // Implementations for ExceptionInfoVisitor.    public void visitExceptionInfo(Clazz clazz, Method method, CodeAttribute codeAttribute, ExceptionInfo exceptionInfo)    {        markAsUsed(exceptionInfo);        if (exceptionInfo.u2catchType != 0)        {            markConstant(clazz, exceptionInfo.u2catchType);        }    }    // Implementations for InnerClassesInfoVisitor.    public void visitInnerClassesInfo(Clazz clazz, InnerClassesInfo innerClassesInfo)    {        // At this point, we only mark outer classes of this class.        // Inner class can be marked later, by InnerUsageMarker.        if (innerClassesInfo.u2innerClassIndex == 0 &&            clazz.getName().equals(clazz.getClassName(innerClassesInfo.u2innerClassIndex)))        {            markAsUsed(innerClassesInfo);            if (innerClassesInfo.u2innerClassIndex != 0)            {                markConstant(clazz, innerClassesInfo.u2innerClassIndex);            }            if (innerClassesInfo.u2outerClassIndex != 0)            {                markConstant(clazz, innerClassesInfo.u2outerClassIndex);            }            if (innerClassesInfo.u2innerNameIndex != 0)            {                markConstant(clazz, innerClassesInfo.u2innerNameIndex);            }        }    }    // Implementations for StackMapFrameVisitor.    public void visitAnyStackMapFrame(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, StackMapFrame stackMapFrame) {}    public void visitSameOneFrame(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, SameOneFrame sameOneFrame)    {        // Mark the constant pool entries referenced by the verification types.        sameOneFrame.stackItemAccept(clazz, method, codeAttribute, offset, this);    }    public void visitMoreZeroFrame(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, MoreZeroFrame moreZeroFrame)    {        // Mark the constant pool entries referenced by the verification types.        moreZeroFrame.additionalVariablesAccept(clazz, method, codeAttribute, offset, this);    }    public void visitFullFrame(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, FullFrame fullFrame)    {        // Mark the constant pool entries referenced by the verification types.        fullFrame.variablesAccept(clazz, method, codeAttribute, offset, this);        fullFrame.stackAccept(clazz, method, codeAttribute, offset, this);    }    // Implementations for VerificationTypeVisitor.    public void visitAnyVerificationType(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, VerificationType verificationType) {}    public void visitObjectType(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, ObjectType objectType)    {        markConstant(clazz, objectType.u2classIndex);    }    // Implementations for LocalVariableInfoVisitor.    public void visitLocalVariableInfo(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableInfo localVariableInfo)    {        markConstant(clazz, localVariableInfo.u2nameIndex);        markConstant(clazz, localVariableInfo.u2descriptorIndex);    }    // Implementations for LocalVariableTypeInfoVisitor.    public void visitLocalVariableTypeInfo(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableTypeInfo localVariableTypeInfo)    {        markConstant(clazz, localVariableTypeInfo.u2nameIndex);        markConstant(clazz, localVariableTypeInfo.u2signatureIndex);    }    // Implementations for AnnotationVisitor.    public void visitAnnotation(Clazz clazz, Annotation annotation)    {        markConstant(clazz, annotation.u2typeIndex);        // Mark the constant pool entries referenced by the element values.        annotation.elementValuesAccept(clazz, this);    }    // Implementations for ElementValueVisitor.    public void visitConstantElementValue(Clazz clazz, Annotation annotation, ConstantElementValue constantElementValue)    {        if (constantElementValue.u2elementNameIndex != 0)        {            markConstant(clazz, constantElementValue.u2elementNameIndex);        }        markConstant(clazz, constantElementValue.u2constantValueIndex);    }    public void visitEnumConstantElementValue(Clazz clazz, Annotation annotation, EnumConstantElementValue enumConstantElementValue)    {        if (enumConstantElementValue.u2elementNameIndex != 0)        {            markConstant(clazz, enumConstantElementValue.u2elementNameIndex);        }        markConstant(clazz, enumConstantElementValue.u2typeNameIndex);        markConstant(clazz, enumConstantElementValue.u2constantNameIndex);    }    public void visitClassElementValue(Clazz clazz, Annotation annotation, ClassElementValue classElementValue)    {        if (classElementValue.u2elementNameIndex != 0)        {            markConstant(clazz, classElementValue.u2elementNameIndex);        }        // Mark the referenced class constant pool entry.        markConstant(clazz, classElementValue.u2classInfoIndex);    }    public void visitAnnotationElementValue(Clazz clazz, Annotation annotation, AnnotationElementValue annotationElementValue)    {        if (annotationElementValue.u2elementNameIndex != 0)        {            markConstant(clazz, annotationElementValue.u2elementNameIndex);        }        // Mark the constant pool entries referenced by the annotation.        annotationElementValue.annotationAccept(clazz, this);    }    public void visitArrayElementValue(Clazz clazz, Annotation annotation, ArrayElementValue arrayElementValue)    {        if (arrayElementValue.u2elementNameIndex != 0)        {            markConstant(clazz, arrayElementValue.u2elementNameIndex);        }        // Mark the constant pool entries referenced by the element values.        arrayElementValue.elementValuesAccept(clazz, annotation, this);    }    // Implementations for InstructionVisitor.    public void visitAnyInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, Instruction instruction) {}    public void visitConstantInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, ConstantInstruction constantInstruction)    {        markConstant(clazz, constantInstruction.constantIndex);    }    // Small utility methods.    /**     * Marks the given visitor accepter as being used.     */    protected void markAsUsed(VisitorAccepter visitorAccepter)    {        visitorAccepter.setVisitorInfo(USED);    }    /**     * Returns whether the given visitor accepter should still be marked as     * being used.     */    protected boolean shouldBeMarkedAsUsed(VisitorAccepter visitorAccepter)    {        return visitorAccepter.getVisitorInfo() != USED;    }    /**     * Returns whether the given visitor accepter has been marked as being used.     */    protected boolean isUsed(VisitorAccepter visitorAccepter)    {        return visitorAccepter.getVisitorInfo() == USED;    }    /**     * Marks the given visitor accepter as possibly being used.     */    protected void markAsPossiblyUsed(VisitorAccepter visitorAccepter)    {        visitorAccepter.setVisitorInfo(POSSIBLY_USED);    }    /**     * Returns whether the given visitor accepter should still be marked as     * possibly being used.     */    protected boolean shouldBeMarkedAsPossiblyUsed(VisitorAccepter visitorAccepter)    {        return visitorAccepter.getVisitorInfo() != USED &&               visitorAccepter.getVisitorInfo() != POSSIBLY_USED;    }    /**     * Returns whether the given visitor accepter has been marked as possibly     * being used.     */    protected boolean isPossiblyUsed(VisitorAccepter visitorAccepter)    {        return visitorAccepter.getVisitorInfo() == POSSIBLY_USED;    }    /**     * Clears any usage marks from the given visitor accepter.     */    protected void markAsUnused(VisitorAccepter visitorAccepter)    {        visitorAccepter.setVisitorInfo(null);    }    /**     * Marks the given constant pool entry of the given class. This includes     * visiting any referenced objects.     */    private void markConstant(Clazz clazz, int index)    {         clazz.constantPoolEntryAccept(index, this);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -