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

📄 usagemarker.java

📁 j2me 混淆包,用于混淆j2me的原代码用的
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            markCpEntry(classFile, classCpInfo.u2nameIndex);            // Mark the referenced class itself.            classCpInfo.referencedClassAccept(this);        }    }    public void visitNameAndTypeCpInfo(ClassFile classFile, NameAndTypeCpInfo nameAndTypeCpInfo)    {        if (!isUsed(nameAndTypeCpInfo))        {            markAsUsed(nameAndTypeCpInfo);            markCpEntry(classFile, nameAndTypeCpInfo.u2nameIndex);            markCpEntry(classFile, nameAndTypeCpInfo.u2descriptorIndex);            // Mark the classes referenced in the descriptor string.            nameAndTypeCpInfo.referencedClassesAccept(this);        }    }    // Implementations for AttrInfoVisitor.    // Note that attributes are typically only referenced once, so we don't    // test if they have been marked already.    public void visitUnknownAttrInfo(ClassFile classFile, UnknownAttrInfo unknownAttrInfo)    {        // This is the best we can do for unknown attributes.        markAsUsed(unknownAttrInfo);        markCpEntry(classFile, unknownAttrInfo.u2attrNameIndex);    }    public void visitInnerClassesAttrInfo(ClassFile classFile, InnerClassesAttrInfo innerClassesAttrInfo)    {        // Don't mark the attribute and its name yet. We may mark it later, in        // InnerUsageMarker.        //markAsUsed(innerClassesAttrInfo);        //markCpEntry(classFile, innerClassesAttrInfo.u2attrNameIndex);        innerClassesAttrInfo.innerClassEntriesAccept(classFile, this);    }    public void visitEnclosingMethodAttrInfo(ClassFile classFile, EnclosingMethodAttrInfo enclosingMethodAttrInfo)    {        markAsUsed(enclosingMethodAttrInfo);        markCpEntry(classFile, enclosingMethodAttrInfo.u2attrNameIndex);        markCpEntry(classFile, enclosingMethodAttrInfo.u2classIndex);        if (enclosingMethodAttrInfo.u2nameAndTypeIndex != 0)        {            markCpEntry(classFile, enclosingMethodAttrInfo.u2nameAndTypeIndex);        }    }    public void visitConstantValueAttrInfo(ClassFile classFile, FieldInfo fieldInfo, ConstantValueAttrInfo constantValueAttrInfo)    {        markAsUsed(constantValueAttrInfo);        markCpEntry(classFile, constantValueAttrInfo.u2attrNameIndex);        markCpEntry(classFile, constantValueAttrInfo.u2constantValueIndex);    }    public void visitExceptionsAttrInfo(ClassFile classFile, MethodInfo methodInfo, ExceptionsAttrInfo exceptionsAttrInfo)    {        markAsUsed(exceptionsAttrInfo);        markCpEntry(classFile, exceptionsAttrInfo.u2attrNameIndex);        // Mark the constant pool entries referenced by the exceptions.        exceptionsAttrInfo.exceptionEntriesAccept((ProgramClassFile)classFile, this);    }    public void visitCodeAttrInfo(ClassFile classFile, MethodInfo methodInfo, CodeAttrInfo codeAttrInfo)    {        markAsUsed(codeAttrInfo);        markCpEntry(classFile, codeAttrInfo.u2attrNameIndex);        // Mark the constant pool entries referenced by the instructions,        // and the exceptions and attributes.        codeAttrInfo.instructionsAccept(classFile, methodInfo, this);        codeAttrInfo.exceptionsAccept(classFile, methodInfo, this);        codeAttrInfo.attributesAccept(classFile, methodInfo, this);    }    public void visitLineNumberTableAttrInfo(ClassFile classFile, MethodInfo methodInfo, CodeAttrInfo codeAttrInfo, LineNumberTableAttrInfo lineNumberTableAttrInfo)    {        markAsUsed(lineNumberTableAttrInfo);        markCpEntry(classFile, lineNumberTableAttrInfo.u2attrNameIndex);    }    public void visitLocalVariableTableAttrInfo(ClassFile classFile, MethodInfo methodInfo, CodeAttrInfo codeAttrInfo, LocalVariableTableAttrInfo localVariableTableAttrInfo)    {        markAsUsed(localVariableTableAttrInfo);        markCpEntry(classFile, localVariableTableAttrInfo.u2attrNameIndex);        // Mark the constant pool entries referenced by the local variables.        localVariableTableAttrInfo.localVariablesAccept(classFile, methodInfo, codeAttrInfo, this);    }    public void visitLocalVariableTypeTableAttrInfo(ClassFile classFile, MethodInfo methodInfo, CodeAttrInfo codeAttrInfo, LocalVariableTypeTableAttrInfo localVariableTypeTableAttrInfo)    {        markAsUsed(localVariableTypeTableAttrInfo);        markCpEntry(classFile, localVariableTypeTableAttrInfo.u2attrNameIndex);        // Mark the constant pool entries referenced by the local variable types.        localVariableTypeTableAttrInfo.localVariablesAccept(classFile, methodInfo, codeAttrInfo, this);    }    public void visitSourceFileAttrInfo(ClassFile classFile, SourceFileAttrInfo sourceFileAttrInfo)    {        markAsUsed(sourceFileAttrInfo);        markCpEntry(classFile, sourceFileAttrInfo.u2attrNameIndex);        markCpEntry(classFile, sourceFileAttrInfo.u2sourceFileIndex);    }    public void visitSourceDirAttrInfo(ClassFile classFile, SourceDirAttrInfo sourceDirAttrInfo)    {        markAsUsed(sourceDirAttrInfo);        markCpEntry(classFile, sourceDirAttrInfo.u2attrNameIndex);        markCpEntry(classFile, sourceDirAttrInfo.u2sourceDirIndex);    }    public void visitDeprecatedAttrInfo(ClassFile classFile, DeprecatedAttrInfo deprecatedAttrInfo)    {        markAsUsed(deprecatedAttrInfo);        markCpEntry(classFile, deprecatedAttrInfo.u2attrNameIndex);    }    public void visitSyntheticAttrInfo(ClassFile classFile, SyntheticAttrInfo syntheticAttrInfo)    {        markAsUsed(syntheticAttrInfo);        markCpEntry(classFile, syntheticAttrInfo.u2attrNameIndex);    }    public void visitSignatureAttrInfo(ClassFile classFile, SignatureAttrInfo signatureAttrInfo)    {        markAsUsed(signatureAttrInfo);        markCpEntry(classFile, signatureAttrInfo.u2attrNameIndex);        markCpEntry(classFile, signatureAttrInfo.u2signatureIndex);    }    public void visitRuntimeVisibleAnnotationAttrInfo(ClassFile classFile, RuntimeVisibleAnnotationsAttrInfo runtimeVisibleAnnotationsAttrInfo)    {        markAsUsed(runtimeVisibleAnnotationsAttrInfo);        markCpEntry(classFile, runtimeVisibleAnnotationsAttrInfo.u2attrNameIndex);        // Mark the constant pool entries referenced by the annotations.        runtimeVisibleAnnotationsAttrInfo.annotationsAccept(classFile, this);    }    public void visitRuntimeInvisibleAnnotationAttrInfo(ClassFile classFile, RuntimeInvisibleAnnotationsAttrInfo runtimeInvisibleAnnotationsAttrInfo)    {        markAsUsed(runtimeInvisibleAnnotationsAttrInfo);        markCpEntry(classFile, runtimeInvisibleAnnotationsAttrInfo.u2attrNameIndex);        // Mark the constant pool entries referenced by the annotations.        runtimeInvisibleAnnotationsAttrInfo.annotationsAccept(classFile, this);    }    public void visitRuntimeVisibleParameterAnnotationAttrInfo(ClassFile classFile, RuntimeVisibleParameterAnnotationsAttrInfo runtimeVisibleParameterAnnotationsAttrInfo)    {        markAsUsed(runtimeVisibleParameterAnnotationsAttrInfo);        markCpEntry(classFile, runtimeVisibleParameterAnnotationsAttrInfo.u2attrNameIndex);        // Mark the constant pool entries referenced by the annotations.        runtimeVisibleParameterAnnotationsAttrInfo.annotationsAccept(classFile, this);    }    public void visitRuntimeInvisibleParameterAnnotationAttrInfo(ClassFile classFile, RuntimeInvisibleParameterAnnotationsAttrInfo runtimeInvisibleParameterAnnotationsAttrInfo)    {        markAsUsed(runtimeInvisibleParameterAnnotationsAttrInfo);        markCpEntry(classFile, runtimeInvisibleParameterAnnotationsAttrInfo.u2attrNameIndex);        // Mark the constant pool entries referenced by the annotations.        runtimeInvisibleParameterAnnotationsAttrInfo.annotationsAccept(classFile, this);    }    public void visitAnnotationDefaultAttrInfo(ClassFile classFile, AnnotationDefaultAttrInfo annotationDefaultAttrInfo)    {        markAsUsed(annotationDefaultAttrInfo);        markCpEntry(classFile, annotationDefaultAttrInfo.u2attrNameIndex);        // Mark the constant pool entries referenced by the element value.        annotationDefaultAttrInfo.defaultValueAccept(classFile, this);    }    // Implementations for ExceptionInfoVisitor.    public void visitExceptionInfo(ClassFile classFile, MethodInfo methodInfo, CodeAttrInfo codeAttrInfo, ExceptionInfo exceptionInfo)    {        markAsUsed(exceptionInfo);        if (exceptionInfo.u2catchType != 0)        {            markCpEntry(classFile, exceptionInfo.u2catchType);        }    }    // Implementations for InnerClassesInfoVisitor.    public void visitInnerClassesInfo(ClassFile classFile, InnerClassesInfo innerClassesInfo)    {        // At this point, we only mark outer classes of this class.        // Inner class can be marked later, by InnerUsageMarker.        if (innerClassesInfo.u2innerClassInfoIndex == 0 &&            classFile.getName().equals(classFile.getCpClassNameString(innerClassesInfo.u2innerClassInfoIndex)))        {            markAsUsed(innerClassesInfo);            if (innerClassesInfo.u2innerClassInfoIndex != 0)            {                markCpEntry(classFile, innerClassesInfo.u2innerClassInfoIndex);            }            if (innerClassesInfo.u2outerClassInfoIndex != 0)            {                markCpEntry(classFile, innerClassesInfo.u2outerClassInfoIndex);            }            if (innerClassesInfo.u2innerNameIndex != 0)            {                markCpEntry(classFile, innerClassesInfo.u2innerNameIndex);            }        }    }    // Implementations for LocalVariableInfoVisitor.    public void visitLocalVariableInfo(ClassFile classFile, MethodInfo methodInfo, CodeAttrInfo codeAttrInfo, LocalVariableInfo localVariableInfo)    {        markCpEntry(classFile, localVariableInfo.u2nameIndex);        markCpEntry(classFile, localVariableInfo.u2descriptorIndex);    }    // Implementations for LocalVariableTypeInfoVisitor.    public void visitLocalVariableTypeInfo(ClassFile classFile, MethodInfo methodInfo, CodeAttrInfo codeAttrInfo, LocalVariableTypeInfo localVariableTypeInfo)    {        markCpEntry(classFile, localVariableTypeInfo.u2nameIndex);        markCpEntry(classFile, localVariableTypeInfo.u2signatureIndex);    }    // Implementations for AnnotationVisitor.    public void visitAnnotation(ClassFile classFile, Annotation annotation)    {        markCpEntry(classFile, annotation.u2typeIndex);        // Mark the constant pool entries referenced by the element values.        annotation.elementValuesAccept(classFile, this);    }    // Implementations for ElementValueVisitor.    public void visitConstantElementValue(ClassFile classFile, Annotation annotation, ConstantElementValue constantElementValue)    {        if (constantElementValue.u2elementName != 0)        {            markCpEntry(classFile, constantElementValue.u2elementName);        }        markCpEntry(classFile, constantElementValue.u2constantValueIndex);    }    public void visitEnumConstantElementValue(ClassFile classFile, Annotation annotation, EnumConstantElementValue enumConstantElementValue)    {        if (enumConstantElementValue.u2elementName != 0)        {            markCpEntry(classFile, enumConstantElementValue.u2elementName);        }        markCpEntry(classFile, enumConstantElementValue.u2typeNameIndex);        markCpEntry(classFile, enumConstantElementValue.u2constantNameIndex);    }    public void visitClassElementValue(ClassFile classFile, Annotation annotation, ClassElementValue classElementValue)    {        if (classElementValue.u2elementName != 0)        {            markCpEntry(classFile, classElementValue.u2elementName);        }        // Mark the referenced class constant pool entry.        markCpEntry(classFile, classElementValue.u2classInfoIndex);    }    public void visitAnnotationElementValue(ClassFile classFile, Annotation annotation, AnnotationElementValue annotationElementValue)    {        if (annotationElementValue.u2elementName != 0)        {            markCpEntry(classFile, annotationElementValue.u2elementName);        }        // Mark the constant pool entries referenced by the annotation.        annotationElementValue.annotationAccept(classFile, this);    }    public void visitArrayElementValue(ClassFile classFile, Annotation annotation, ArrayElementValue arrayElementValue)    {        if (arrayElementValue.u2elementName != 0)        {            markCpEntry(classFile, arrayElementValue.u2elementName);        }        // Mark the constant pool entries referenced by the element values.        arrayElementValue.elementValuesAccept(classFile, annotation, this);    }    // Implementations for InstructionVisitor.    public void visitSimpleInstruction(ClassFile classFile, MethodInfo methodInfo, CodeAttrInfo codeAttrInfo, int offset, SimpleInstruction simpleInstruction) {}    public void visitVariableInstruction(ClassFile classFile, MethodInfo methodInfo, CodeAttrInfo codeAttrInfo, int offset, VariableInstruction variableInstruction) {}    public void visitBranchInstruction(ClassFile classFile, MethodInfo methodInfo, CodeAttrInfo codeAttrInfo, int offset, BranchInstruction branchInstruction) {}    public void visitTableSwitchInstruction(ClassFile classFile, MethodInfo methodInfo, CodeAttrInfo codeAttrInfo, int offset, TableSwitchInstruction tableSwitchInstruction) {}    public void visitLookUpSwitchInstruction(ClassFile classFile, MethodInfo methodInfo, CodeAttrInfo codeAttrInfo, int offset, LookUpSwitchInstruction lookUpSwitchInstruction) {}    public void visitCpInstruction(ClassFile classFile, MethodInfo methodInfo, CodeAttrInfo codeAttrInfo, int offset, CpInstruction cpInstruction)    {        markCpEntry(classFile, cpInstruction.cpIndex);    }    // Small utility methods.    /**     * Marks the given constant pool entry of the given class. This includes     * visiting any referenced objects.     */    private void markCpEntry(ClassFile classFile, int index)    {         classFile.constantPoolEntryAccept(index, this);    }    static void markAsUnused(VisitorAccepter visitorAccepter)    {        visitorAccepter.setVisitorInfo(null);    }    static void markAsPossiblyUsed(VisitorAccepter visitorAccepter)    {        visitorAccepter.setVisitorInfo(POSSIBLY_USED);    }    static boolean isPossiblyUsed(VisitorAccepter visitorAccepter)    {        return visitorAccepter.getVisitorInfo() == POSSIBLY_USED;    }    static void markAsUsed(VisitorAccepter visitorAccepter)    {        visitorAccepter.setVisitorInfo(USED);    }    static boolean isUsed(VisitorAccepter visitorAccepter)    {        return visitorAccepter.getVisitorInfo() == USED;    }}

⌨️ 快捷键说明

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