sometsome 1.0.2 → 3.10.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/proguard4.7/README +33 -0
- data/lib/proguard4.7/bin/proguard.bat +14 -0
- data/lib/proguard4.7/bin/proguard.sh +11 -0
- data/lib/proguard4.7/bin/proguardgui.bat +14 -0
- data/lib/proguard4.7/bin/proguardgui.sh +15 -0
- data/lib/proguard4.7/bin/retrace.bat +14 -0
- data/lib/proguard4.7/bin/retrace.sh +12 -0
- data/lib/proguard4.7/build/build.sh +94 -0
- data/lib/proguard4.7/build/build.xml +171 -0
- data/lib/proguard4.7/build/makefile +94 -0
- data/lib/proguard4.7/docs/FAQ.html +253 -0
- data/lib/proguard4.7/docs/GPL.html +406 -0
- data/lib/proguard4.7/docs/GPL_exception.html +56 -0
- data/lib/proguard4.7/docs/acknowledgements.html +76 -0
- data/lib/proguard4.7/docs/alternatives.html +699 -0
- data/lib/proguard4.7/docs/checkmark.gif +0 -0
- data/lib/proguard4.7/docs/downloads.html +623 -0
- data/lib/proguard4.7/docs/drop1.gif +0 -0
- data/lib/proguard4.7/docs/drop2.gif +0 -0
- data/lib/proguard4.7/docs/drop3.gif +0 -0
- data/lib/proguard4.7/docs/favicon.ico +0 -0
- data/lib/proguard4.7/docs/feedback.html +120 -0
- data/lib/proguard4.7/docs/index.html +92 -0
- data/lib/proguard4.7/docs/license.html +60 -0
- data/lib/proguard4.7/docs/main.html +102 -0
- data/lib/proguard4.7/docs/manual/ant.html +634 -0
- data/lib/proguard4.7/docs/manual/attention.gif +0 -0
- data/lib/proguard4.7/docs/manual/examples.html +1504 -0
- data/lib/proguard4.7/docs/manual/gui.html +479 -0
- data/lib/proguard4.7/docs/manual/index.html +51 -0
- data/lib/proguard4.7/docs/manual/introduction.html +173 -0
- data/lib/proguard4.7/docs/manual/limitations.html +69 -0
- data/lib/proguard4.7/docs/manual/optimizations.html +172 -0
- data/lib/proguard4.7/docs/manual/refcard.html +486 -0
- data/lib/proguard4.7/docs/manual/retrace/examples.html +345 -0
- data/lib/proguard4.7/docs/manual/retrace/index.html +37 -0
- data/lib/proguard4.7/docs/manual/retrace/introduction.html +79 -0
- data/lib/proguard4.7/docs/manual/retrace/usage.html +127 -0
- data/lib/proguard4.7/docs/manual/sections.html +60 -0
- data/lib/proguard4.7/docs/manual/style.css +105 -0
- data/lib/proguard4.7/docs/manual/troubleshooting.html +729 -0
- data/lib/proguard4.7/docs/manual/usage.html +1243 -0
- data/lib/proguard4.7/docs/manual/wtk.html +70 -0
- data/lib/proguard4.7/docs/quality.html +56 -0
- data/lib/proguard4.7/docs/results.html +170 -0
- data/lib/proguard4.7/docs/saikoalogo.png +0 -0
- data/lib/proguard4.7/docs/screenshot_console.gif +0 -0
- data/lib/proguard4.7/docs/screenshot_console_small.gif +0 -0
- data/lib/proguard4.7/docs/screenshot_gui1.gif +0 -0
- data/lib/proguard4.7/docs/screenshot_gui2.gif +0 -0
- data/lib/proguard4.7/docs/screenshot_gui3.gif +0 -0
- data/lib/proguard4.7/docs/screenshot_gui4.gif +0 -0
- data/lib/proguard4.7/docs/screenshot_gui5.gif +0 -0
- data/lib/proguard4.7/docs/screenshot_gui6.gif +0 -0
- data/lib/proguard4.7/docs/screenshot_gui7.gif +0 -0
- data/lib/proguard4.7/docs/screenshot_gui8.gif +0 -0
- data/lib/proguard4.7/docs/screenshots.html +67 -0
- data/lib/proguard4.7/docs/screenshots_gui_small.gif +0 -0
- data/lib/proguard4.7/docs/sections.html +64 -0
- data/lib/proguard4.7/docs/sflogo.png +0 -0
- data/lib/proguard4.7/docs/steel.gif +0 -0
- data/lib/proguard4.7/docs/style.css +223 -0
- data/lib/proguard4.7/docs/testimonials.html +133 -0
- data/lib/proguard4.7/docs/title.gif +0 -0
- data/lib/proguard4.7/docs/title.html +17 -0
- data/lib/proguard4.7/examples/android.pro +149 -0
- data/lib/proguard4.7/examples/annotations/examples.pro +60 -0
- data/lib/proguard4.7/examples/annotations/examples/Applet.java +22 -0
- data/lib/proguard4.7/examples/annotations/examples/Application.java +20 -0
- data/lib/proguard4.7/examples/annotations/examples/Bean.java +56 -0
- data/lib/proguard4.7/examples/annotations/examples/NativeCallBack.java +44 -0
- data/lib/proguard4.7/examples/annotations/lib/annotations.jar +0 -0
- data/lib/proguard4.7/examples/annotations/lib/annotations.pro +118 -0
- data/lib/proguard4.7/examples/annotations/src/proguard/annotation/Keep.java +18 -0
- data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepApplication.java +18 -0
- data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepClassMemberNames.java +18 -0
- data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepClassMembers.java +18 -0
- data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepGettersSetters.java +18 -0
- data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepImplementations.java +18 -0
- data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepName.java +18 -0
- data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepPublicClassMemberNames.java +18 -0
- data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepPublicClassMembers.java +18 -0
- data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepPublicGettersSetters.java +18 -0
- data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepPublicImplementations.java +18 -0
- data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepPublicProtectedClassMemberNames.java +18 -0
- data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepPublicProtectedClassMembers.java +19 -0
- data/lib/proguard4.7/examples/ant/android-8.xml +177 -0
- data/lib/proguard4.7/examples/ant/applets.xml +88 -0
- data/lib/proguard4.7/examples/ant/applications1.xml +15 -0
- data/lib/proguard4.7/examples/ant/applications2.xml +74 -0
- data/lib/proguard4.7/examples/ant/applications3.xml +98 -0
- data/lib/proguard4.7/examples/ant/library.xml +102 -0
- data/lib/proguard4.7/examples/ant/midlets.xml +52 -0
- data/lib/proguard4.7/examples/ant/proguard.xml +78 -0
- data/lib/proguard4.7/examples/ant/servlets.xml +88 -0
- data/lib/proguard4.7/examples/applets.pro +69 -0
- data/lib/proguard4.7/examples/applications.pro +75 -0
- data/lib/proguard4.7/examples/dictionaries/compact.txt +18 -0
- data/lib/proguard4.7/examples/dictionaries/keywords.txt +58 -0
- data/lib/proguard4.7/examples/dictionaries/shakespeare.txt +23 -0
- data/lib/proguard4.7/examples/dictionaries/windows.txt +209 -0
- data/lib/proguard4.7/examples/library.pro +79 -0
- data/lib/proguard4.7/examples/midlets.pro +67 -0
- data/lib/proguard4.7/examples/proguard.pro +57 -0
- data/lib/proguard4.7/examples/proguardall.pro +62 -0
- data/lib/proguard4.7/examples/proguardgui.pro +50 -0
- data/lib/proguard4.7/examples/retrace.pro +43 -0
- data/lib/proguard4.7/examples/scala.pro +132 -0
- data/lib/proguard4.7/examples/servlets.pro +70 -0
- data/lib/proguard4.7/lib/proguard.jar +0 -0
- data/lib/proguard4.7/lib/proguardgui.jar +0 -0
- data/lib/proguard4.7/lib/retrace.jar +0 -0
- data/lib/proguard4.7/src/proguard/ArgumentWordReader.java +111 -0
- data/lib/proguard4.7/src/proguard/ClassPath.java +94 -0
- data/lib/proguard4.7/src/proguard/ClassPathEntry.java +282 -0
- data/lib/proguard4.7/src/proguard/ClassSpecification.java +259 -0
- data/lib/proguard4.7/src/proguard/ClassSpecificationVisitorFactory.java +503 -0
- data/lib/proguard4.7/src/proguard/Configuration.java +328 -0
- data/lib/proguard4.7/src/proguard/ConfigurationConstants.java +123 -0
- data/lib/proguard4.7/src/proguard/ConfigurationParser.java +1285 -0
- data/lib/proguard4.7/src/proguard/ConfigurationWriter.java +651 -0
- data/lib/proguard4.7/src/proguard/DataEntryReaderFactory.java +141 -0
- data/lib/proguard4.7/src/proguard/DataEntryWriterFactory.java +150 -0
- data/lib/proguard4.7/src/proguard/DescriptorKeepChecker.java +169 -0
- data/lib/proguard4.7/src/proguard/DuplicateClassPrinter.java +63 -0
- data/lib/proguard4.7/src/proguard/FileWordReader.java +55 -0
- data/lib/proguard4.7/src/proguard/FullyQualifiedClassNameChecker.java +191 -0
- data/lib/proguard4.7/src/proguard/GPL.java +197 -0
- data/lib/proguard4.7/src/proguard/Initializer.java +424 -0
- data/lib/proguard4.7/src/proguard/InputReader.java +233 -0
- data/lib/proguard4.7/src/proguard/KeepClassMemberChecker.java +87 -0
- data/lib/proguard4.7/src/proguard/KeepClassSpecification.java +137 -0
- data/lib/proguard4.7/src/proguard/LineWordReader.java +74 -0
- data/lib/proguard4.7/src/proguard/MANIFEST.MF +2 -0
- data/lib/proguard4.7/src/proguard/MemberSpecification.java +114 -0
- data/lib/proguard4.7/src/proguard/OutputWriter.java +296 -0
- data/lib/proguard4.7/src/proguard/ParseException.java +51 -0
- data/lib/proguard4.7/src/proguard/ProGuard.java +512 -0
- data/lib/proguard4.7/src/proguard/SeedPrinter.java +97 -0
- data/lib/proguard4.7/src/proguard/SubclassedClassFilter.java +62 -0
- data/lib/proguard4.7/src/proguard/Targeter.java +88 -0
- data/lib/proguard4.7/src/proguard/UpToDateChecker.java +232 -0
- data/lib/proguard4.7/src/proguard/WordReader.java +387 -0
- data/lib/proguard4.7/src/proguard/ant/ClassPathElement.java +191 -0
- data/lib/proguard4.7/src/proguard/ant/ClassSpecificationElement.java +258 -0
- data/lib/proguard4.7/src/proguard/ant/ConfigurationElement.java +53 -0
- data/lib/proguard4.7/src/proguard/ant/ConfigurationTask.java +441 -0
- data/lib/proguard4.7/src/proguard/ant/FilterElement.java +85 -0
- data/lib/proguard4.7/src/proguard/ant/KeepSpecificationElement.java +87 -0
- data/lib/proguard4.7/src/proguard/ant/MemberSpecificationElement.java +218 -0
- data/lib/proguard4.7/src/proguard/ant/ProGuardTask.java +352 -0
- data/lib/proguard4.7/src/proguard/ant/package.html +3 -0
- data/lib/proguard4.7/src/proguard/ant/task.properties +2 -0
- data/lib/proguard4.7/src/proguard/classfile/ClassConstants.java +316 -0
- data/lib/proguard4.7/src/proguard/classfile/ClassPool.java +152 -0
- data/lib/proguard4.7/src/proguard/classfile/Clazz.java +261 -0
- data/lib/proguard4.7/src/proguard/classfile/Field.java +32 -0
- data/lib/proguard4.7/src/proguard/classfile/LibraryClass.java +548 -0
- data/lib/proguard4.7/src/proguard/classfile/LibraryField.java +77 -0
- data/lib/proguard4.7/src/proguard/classfile/LibraryMember.java +108 -0
- data/lib/proguard4.7/src/proguard/classfile/LibraryMethod.java +83 -0
- data/lib/proguard4.7/src/proguard/classfile/Member.java +57 -0
- data/lib/proguard4.7/src/proguard/classfile/Method.java +32 -0
- data/lib/proguard4.7/src/proguard/classfile/ProgramClass.java +572 -0
- data/lib/proguard4.7/src/proguard/classfile/ProgramField.java +93 -0
- data/lib/proguard4.7/src/proguard/classfile/ProgramMember.java +168 -0
- data/lib/proguard4.7/src/proguard/classfile/ProgramMethod.java +99 -0
- data/lib/proguard4.7/src/proguard/classfile/VisitorAccepter.java +47 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/Attribute.java +142 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/BootstrapMethodInfo.java +89 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/BootstrapMethodsAttribute.java +95 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/CodeAttribute.java +202 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/ConstantValueAttribute.java +62 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/DeprecatedAttribute.java +66 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/EnclosingMethodAttribute.java +132 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/ExceptionInfo.java +100 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/ExceptionsAttribute.java +80 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/InnerClassesAttribute.java +80 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/InnerClassesInfo.java +119 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/LineNumberInfo.java +50 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/LineNumberTableAttribute.java +100 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/LocalVariableInfo.java +99 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/LocalVariableTableAttribute.java +79 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/LocalVariableTypeInfo.java +107 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/LocalVariableTypeTableAttribute.java +79 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/SignatureAttribute.java +100 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/SourceDirAttribute.java +62 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/SourceFileAttribute.java +62 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/SyntheticAttribute.java +66 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/UnknownAttribute.java +82 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/Annotation.java +143 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/AnnotationDefaultAttribute.java +73 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/AnnotationElementValue.java +76 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/AnnotationsAttribute.java +100 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/ArrayElementValue.java +82 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/ClassElementValue.java +95 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/ConstantElementValue.java +71 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/ElementValue.java +126 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/EnumConstantElementValue.java +99 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/ParameterAnnotationsAttribute.java +83 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/RuntimeInvisibleAnnotationsAttribute.java +70 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/RuntimeInvisibleParameterAnnotationsAttribute.java +62 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/RuntimeVisibleAnnotationsAttribute.java +70 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/RuntimeVisibleParameterAnnotationsAttribute.java +62 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/package.html +4 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/AllAnnotationVisitor.java +100 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/AnnotatedClassVisitor.java +62 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/AnnotationToMemberVisitor.java +62 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/AnnotationTypeFilter.java +102 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/AnnotationVisitor.java +40 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/ElementValueVisitor.java +51 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/package.html +3 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/package.html +3 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/DoubleType.java +66 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/FloatType.java +66 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/FullFrame.java +202 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/IntegerType.java +66 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/LessZeroFrame.java +103 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/LongType.java +66 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/MoreZeroFrame.java +161 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/NullType.java +66 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/ObjectType.java +107 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/SameOneFrame.java +115 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/SameZeroFrame.java +74 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/StackMapAttribute.java +91 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/StackMapFrame.java +117 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/StackMapTableAttribute.java +93 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/TopType.java +66 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/UninitializedThisType.java +66 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/UninitializedType.java +106 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/VerificationType.java +103 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/VerificationTypeFactory.java +112 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/visitor/StackMapFrameVisitor.java +40 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/visitor/VerificationTypeVisitor.java +65 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/AllAttributeVisitor.java +117 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/AllBootstrapMethodInfoVisitor.java +55 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/AllExceptionInfoVisitor.java +55 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/AllInnerClassesInfoVisitor.java +55 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/AttributeNameFilter.java +368 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/AttributeVisitor.java +90 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/BootstrapMethodInfoVisitor.java +40 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/ExceptionInfoVisitor.java +37 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/InnerClassesInfoVisitor.java +38 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/LineNumberInfoVisitor.java +38 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/LocalVariableInfoVisitor.java +38 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/LocalVariableTypeInfoVisitor.java +38 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/MultiAttributeVisitor.java +365 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/NonEmptyAttributeFilter.java +293 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/RequiredAttributeFilter.java +360 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/StackSizeComputer.java +378 -0
- data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/package.html +3 -0
- data/lib/proguard4.7/src/proguard/classfile/constant/ClassConstant.java +105 -0
- data/lib/proguard4.7/src/proguard/classfile/constant/Constant.java +68 -0
- data/lib/proguard4.7/src/proguard/classfile/constant/DoubleConstant.java +82 -0
- data/lib/proguard4.7/src/proguard/classfile/constant/FieldrefConstant.java +71 -0
- data/lib/proguard4.7/src/proguard/classfile/constant/FloatConstant.java +82 -0
- data/lib/proguard4.7/src/proguard/classfile/constant/IntegerConstant.java +82 -0
- data/lib/proguard4.7/src/proguard/classfile/constant/InterfaceMethodrefConstant.java +71 -0
- data/lib/proguard4.7/src/proguard/classfile/constant/InvokeDynamicConstant.java +148 -0
- data/lib/proguard4.7/src/proguard/classfile/constant/LongConstant.java +82 -0
- data/lib/proguard4.7/src/proguard/classfile/constant/MethodHandleConstant.java +124 -0
- data/lib/proguard4.7/src/proguard/classfile/constant/MethodTypeConstant.java +93 -0
- data/lib/proguard4.7/src/proguard/classfile/constant/MethodrefConstant.java +71 -0
- data/lib/proguard4.7/src/proguard/classfile/constant/NameAndTypeConstant.java +119 -0
- data/lib/proguard4.7/src/proguard/classfile/constant/RefConstant.java +130 -0
- data/lib/proguard4.7/src/proguard/classfile/constant/StringConstant.java +135 -0
- data/lib/proguard4.7/src/proguard/classfile/constant/Utf8Constant.java +285 -0
- data/lib/proguard4.7/src/proguard/classfile/constant/visitor/AllConstantVisitor.java +53 -0
- data/lib/proguard4.7/src/proguard/classfile/constant/visitor/BootstrapMethodHandleTraveler.java +100 -0
- data/lib/proguard4.7/src/proguard/classfile/constant/visitor/ConstantTagFilter.java +86 -0
- data/lib/proguard4.7/src/proguard/classfile/constant/visitor/ConstantVisitor.java +49 -0
- data/lib/proguard4.7/src/proguard/classfile/constant/visitor/ExceptClassConstantFilter.java +69 -0
- data/lib/proguard4.7/src/proguard/classfile/constant/visitor/MethodrefTraveler.java +60 -0
- data/lib/proguard4.7/src/proguard/classfile/constant/visitor/package.html +3 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/AccessFixer.java +180 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/AnnotationAdder.java +153 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/AnnotationsAttributeEditor.java +67 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/AttributeAdder.java +457 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/AttributeSorter.java +89 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/AttributesEditor.java +269 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/BridgeMethodFixer.java +117 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/ClassEditor.java +255 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/ClassElementSorter.java +52 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/ClassMemberSorter.java +69 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/ClassReferenceFixer.java +546 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/CodeAttributeComposer.java +843 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/CodeAttributeEditor.java +1104 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/CodeAttributeEditorResetter.java +60 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/ComparableConstant.java +249 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/ConstantAdder.java +239 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/ConstantPoolEditor.java +782 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/ConstantPoolRemapper.java +662 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/ConstantPoolShrinker.java +578 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/ConstantPoolSorter.java +123 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/ElementValueAdder.java +217 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/ElementValuesEditor.java +238 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/ExceptionAdder.java +65 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/ExceptionInfoAdder.java +67 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/ExceptionsAttributeEditor.java +68 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/InnerClassesAccessFixer.java +83 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/InstructionAdder.java +76 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/InstructionWriter.java +278 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/InterfaceAdder.java +62 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/InterfaceSorter.java +152 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/InterfacesEditor.java +122 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/LineNumberInfoAdder.java +59 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/LineNumberTableAttributeEditor.java +67 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/LocalVariableInfoAdder.java +67 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/LocalVariableTableAttributeEditor.java +67 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/LocalVariableTypeInfoAdder.java +68 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/LocalVariableTypeTableAttributeEditor.java +68 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/MemberAdder.java +288 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/MemberReferenceFixer.java +447 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/MethodInvocationFixer.java +243 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/NameAndTypeShrinker.java +188 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/NamedAttributeDeleter.java +54 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/ParameterAnnotationsAttributeEditor.java +71 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/StackSizeUpdater.java +54 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/SubclassAdder.java +59 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/SubclassToAdder.java +60 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/Utf8Shrinker.java +455 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/VariableCleaner.java +267 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/VariableEditor.java +130 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/VariableRemapper.java +156 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/VariableSizeUpdater.java +105 -0
- data/lib/proguard4.7/src/proguard/classfile/editor/package.html +3 -0
- data/lib/proguard4.7/src/proguard/classfile/instruction/BranchInstruction.java +180 -0
- data/lib/proguard4.7/src/proguard/classfile/instruction/ConstantInstruction.java +309 -0
- data/lib/proguard4.7/src/proguard/classfile/instruction/Instruction.java +920 -0
- data/lib/proguard4.7/src/proguard/classfile/instruction/InstructionConstants.java +449 -0
- data/lib/proguard4.7/src/proguard/classfile/instruction/InstructionFactory.java +300 -0
- data/lib/proguard4.7/src/proguard/classfile/instruction/InstructionUtil.java +67 -0
- data/lib/proguard4.7/src/proguard/classfile/instruction/LookUpSwitchInstruction.java +135 -0
- data/lib/proguard4.7/src/proguard/classfile/instruction/SimpleInstruction.java +255 -0
- data/lib/proguard4.7/src/proguard/classfile/instruction/SwitchInstruction.java +83 -0
- data/lib/proguard4.7/src/proguard/classfile/instruction/TableSwitchInstruction.java +139 -0
- data/lib/proguard4.7/src/proguard/classfile/instruction/VariableInstruction.java +372 -0
- data/lib/proguard4.7/src/proguard/classfile/instruction/package.html +9 -0
- data/lib/proguard4.7/src/proguard/classfile/instruction/visitor/AllInstructionVisitor.java +56 -0
- data/lib/proguard4.7/src/proguard/classfile/instruction/visitor/InstructionCounter.java +59 -0
- data/lib/proguard4.7/src/proguard/classfile/instruction/visitor/InstructionVisitor.java +42 -0
- data/lib/proguard4.7/src/proguard/classfile/instruction/visitor/MultiInstructionVisitor.java +131 -0
- data/lib/proguard4.7/src/proguard/classfile/instruction/visitor/package.html +3 -0
- data/lib/proguard4.7/src/proguard/classfile/io/LibraryClassReader.java +383 -0
- data/lib/proguard4.7/src/proguard/classfile/io/ProgramClassReader.java +919 -0
- data/lib/proguard4.7/src/proguard/classfile/io/ProgramClassWriter.java +735 -0
- data/lib/proguard4.7/src/proguard/classfile/io/RuntimeDataInput.java +223 -0
- data/lib/proguard4.7/src/proguard/classfile/io/RuntimeDataOutput.java +224 -0
- data/lib/proguard4.7/src/proguard/classfile/io/package.html +3 -0
- data/lib/proguard4.7/src/proguard/classfile/package.html +15 -0
- data/lib/proguard4.7/src/proguard/classfile/util/AccessUtil.java +105 -0
- data/lib/proguard4.7/src/proguard/classfile/util/ClassReferenceInitializer.java +559 -0
- data/lib/proguard4.7/src/proguard/classfile/util/ClassSubHierarchyInitializer.java +77 -0
- data/lib/proguard4.7/src/proguard/classfile/util/ClassSuperHierarchyInitializer.java +163 -0
- data/lib/proguard4.7/src/proguard/classfile/util/ClassUtil.java +1227 -0
- data/lib/proguard4.7/src/proguard/classfile/util/DescriptorClassEnumeration.java +236 -0
- data/lib/proguard4.7/src/proguard/classfile/util/DynamicClassReferenceInitializer.java +485 -0
- data/lib/proguard4.7/src/proguard/classfile/util/DynamicMemberReferenceInitializer.java +944 -0
- data/lib/proguard4.7/src/proguard/classfile/util/ExternalTypeEnumeration.java +106 -0
- data/lib/proguard4.7/src/proguard/classfile/util/InstructionSequenceMatcher.java +754 -0
- data/lib/proguard4.7/src/proguard/classfile/util/InternalTypeEnumeration.java +204 -0
- data/lib/proguard4.7/src/proguard/classfile/util/MemberFinder.java +197 -0
- data/lib/proguard4.7/src/proguard/classfile/util/MethodLinker.java +160 -0
- data/lib/proguard4.7/src/proguard/classfile/util/SimplifiedVisitor.java +834 -0
- data/lib/proguard4.7/src/proguard/classfile/util/StringReferenceInitializer.java +90 -0
- data/lib/proguard4.7/src/proguard/classfile/util/StringSharer.java +172 -0
- data/lib/proguard4.7/src/proguard/classfile/util/WarningPrinter.java +136 -0
- data/lib/proguard4.7/src/proguard/classfile/util/package.html +3 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/AllClassVisitor.java +47 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/AllFieldVisitor.java +55 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/AllMemberVisitor.java +57 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/AllMethodVisitor.java +55 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/BottomClassFilter.java +69 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/ClassAccessFilter.java +88 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/ClassCleaner.java +275 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/ClassCollector.java +58 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/ClassCounter.java +56 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/ClassHierarchyTraveler.java +91 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/ClassNameFilter.java +112 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/ClassPoolFiller.java +55 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/ClassPoolVisitor.java +37 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/ClassPresenceFilter.java +93 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/ClassPrinter.java +1011 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/ClassVersionFilter.java +85 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/ClassVersionSetter.java +83 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/ClassVisitor.java +36 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/ConcreteClassDownTraveler.java +100 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/DotClassClassVisitor.java +89 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptClassFilter.java +69 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptClassesFilter.java +90 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptionCounter.java +52 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptionExcludedOffsetFilter.java +64 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptionHandlerConstantVisitor.java +62 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptionHandlerFilter.java +70 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptionOffsetFilter.java +64 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptionRangeFilter.java +68 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/ImplementedClassConstantFilter.java +69 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/ImplementedClassFilter.java +71 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/ImplementingClassConstantFilter.java +70 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/LibraryClassFilter.java +60 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/LibraryMemberFilter.java +73 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/MemberAccessFilter.java +122 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/MemberClassAccessFilter.java +106 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/MemberCollector.java +59 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/MemberCounter.java +72 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/MemberDescriptorFilter.java +113 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/MemberNameFilter.java +113 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/MemberToClassVisitor.java +90 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/MemberVisitor.java +40 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/MethodImplementationFilter.java +70 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/MethodImplementationTraveler.java +128 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/MultiClassPoolVisitor.java +88 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/MultiClassVisitor.java +97 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/MultiMemberVisitor.java +113 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/NamedClassVisitor.java +49 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/NamedFieldVisitor.java +61 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/NamedMethodVisitor.java +61 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/ProgramClassFilter.java +60 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/ProgramMemberFilter.java +73 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/ReferencedClassVisitor.java +255 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/ReferencedMemberVisitor.java +73 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/SimilarMemberVisitor.java +125 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/SimpleClassPrinter.java +167 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/SubclassFilter.java +91 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/SubclassTraveler.java +60 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/VariableClassVisitor.java +78 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/VariableMemberVisitor.java +96 -0
- data/lib/proguard4.7/src/proguard/classfile/visitor/package.html +40 -0
- data/lib/proguard4.7/src/proguard/evaluation/BasicBranchUnit.java +126 -0
- data/lib/proguard4.7/src/proguard/evaluation/BasicInvocationUnit.java +425 -0
- data/lib/proguard4.7/src/proguard/evaluation/BranchUnit.java +63 -0
- data/lib/proguard4.7/src/proguard/evaluation/ClassConstantValueFactory.java +53 -0
- data/lib/proguard4.7/src/proguard/evaluation/ConstantValueFactory.java +113 -0
- data/lib/proguard4.7/src/proguard/evaluation/InvocationUnit.java +62 -0
- data/lib/proguard4.7/src/proguard/evaluation/Processor.java +908 -0
- data/lib/proguard4.7/src/proguard/evaluation/Stack.java +560 -0
- data/lib/proguard4.7/src/proguard/evaluation/TracedStack.java +342 -0
- data/lib/proguard4.7/src/proguard/evaluation/TracedVariables.java +199 -0
- data/lib/proguard4.7/src/proguard/evaluation/Variables.java +347 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/Category1Value.java +41 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/Category2Value.java +41 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/ComparisonValue.java +69 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/CompositeDoubleValue.java +81 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/CompositeFloatValue.java +81 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/CompositeIntegerValue.java +87 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/CompositeLongValue.java +87 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedByteValue.java +64 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedCharacterValue.java +64 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedDoubleValue.java +64 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedFloatValue.java +64 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedIntegerValue.java +64 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedLongValue.java +64 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedShortValue.java +64 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/DoubleValue.java +359 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/FloatValue.java +359 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/IdentifiedDoubleValue.java +67 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/IdentifiedFloatValue.java +67 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/IdentifiedIntegerValue.java +67 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/IdentifiedLongValue.java +67 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/IdentifiedReferenceValue.java +102 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/IdentifiedValueFactory.java +75 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/InstructionOffsetValue.java +307 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/IntegerValue.java +1002 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/LongValue.java +554 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/NegatedDoubleValue.java +71 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/NegatedFloatValue.java +71 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/NegatedIntegerValue.java +71 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/NegatedLongValue.java +71 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/ParticularDoubleValue.java +216 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/ParticularFloatValue.java +216 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/ParticularIntegerValue.java +383 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/ParticularLongValue.java +271 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/ReferenceValue.java +540 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/SpecificDoubleValue.java +186 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/SpecificFloatValue.java +186 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/SpecificIntegerValue.java +354 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/SpecificLongValue.java +259 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/SpecificValueFactory.java +97 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/TopValue.java +79 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/UnknownDoubleValue.java +125 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/UnknownFloatValue.java +125 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/UnknownIntegerValue.java +216 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/UnknownLongValue.java +160 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/Value.java +169 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/ValueFactory.java +193 -0
- data/lib/proguard4.7/src/proguard/evaluation/value/package.html +3 -0
- data/lib/proguard4.7/src/proguard/gui/ClassPathPanel.java +441 -0
- data/lib/proguard4.7/src/proguard/gui/ClassSpecificationDialog.java +546 -0
- data/lib/proguard4.7/src/proguard/gui/ClassSpecificationsPanel.java +231 -0
- data/lib/proguard4.7/src/proguard/gui/ExtensionFileFilter.java +78 -0
- data/lib/proguard4.7/src/proguard/gui/FilterBuilder.java +208 -0
- data/lib/proguard4.7/src/proguard/gui/FilterDialog.java +320 -0
- data/lib/proguard4.7/src/proguard/gui/GUIResources.java +56 -0
- data/lib/proguard4.7/src/proguard/gui/GUIResources.properties +643 -0
- data/lib/proguard4.7/src/proguard/gui/KeepSpecificationsPanel.java +81 -0
- data/lib/proguard4.7/src/proguard/gui/ListPanel.java +341 -0
- data/lib/proguard4.7/src/proguard/gui/MANIFEST.MF +3 -0
- data/lib/proguard4.7/src/proguard/gui/MemberSpecificationDialog.java +509 -0
- data/lib/proguard4.7/src/proguard/gui/MemberSpecificationsPanel.java +304 -0
- data/lib/proguard4.7/src/proguard/gui/MessageDialogRunnable.java +90 -0
- data/lib/proguard4.7/src/proguard/gui/OptimizationsDialog.java +251 -0
- data/lib/proguard4.7/src/proguard/gui/ProGuardGUI.java +1777 -0
- data/lib/proguard4.7/src/proguard/gui/ProGuardRunnable.java +154 -0
- data/lib/proguard4.7/src/proguard/gui/ReTraceRunnable.java +149 -0
- data/lib/proguard4.7/src/proguard/gui/SwingUtil.java +82 -0
- data/lib/proguard4.7/src/proguard/gui/TabbedPane.java +229 -0
- data/lib/proguard4.7/src/proguard/gui/TextAreaOutputStream.java +81 -0
- data/lib/proguard4.7/src/proguard/gui/arrow.gif +0 -0
- data/lib/proguard4.7/src/proguard/gui/boilerplate.pro +410 -0
- data/lib/proguard4.7/src/proguard/gui/default.pro +318 -0
- data/lib/proguard4.7/src/proguard/gui/package.html +3 -0
- data/lib/proguard4.7/src/proguard/gui/splash/BufferedSprite.java +145 -0
- data/lib/proguard4.7/src/proguard/gui/splash/CircleSprite.java +74 -0
- data/lib/proguard4.7/src/proguard/gui/splash/ClipSprite.java +85 -0
- data/lib/proguard4.7/src/proguard/gui/splash/ColorSprite.java +65 -0
- data/lib/proguard4.7/src/proguard/gui/splash/CompositeSprite.java +56 -0
- data/lib/proguard4.7/src/proguard/gui/splash/ConstantColor.java +51 -0
- data/lib/proguard4.7/src/proguard/gui/splash/ConstantDouble.java +49 -0
- data/lib/proguard4.7/src/proguard/gui/splash/ConstantFont.java +46 -0
- data/lib/proguard4.7/src/proguard/gui/splash/ConstantInt.java +49 -0
- data/lib/proguard4.7/src/proguard/gui/splash/ConstantString.java +49 -0
- data/lib/proguard4.7/src/proguard/gui/splash/ConstantTiming.java +57 -0
- data/lib/proguard4.7/src/proguard/gui/splash/FontSprite.java +65 -0
- data/lib/proguard4.7/src/proguard/gui/splash/ImageSprite.java +76 -0
- data/lib/proguard4.7/src/proguard/gui/splash/LinearColor.java +72 -0
- data/lib/proguard4.7/src/proguard/gui/splash/LinearDouble.java +55 -0
- data/lib/proguard4.7/src/proguard/gui/splash/LinearInt.java +55 -0
- data/lib/proguard4.7/src/proguard/gui/splash/LinearTiming.java +55 -0
- data/lib/proguard4.7/src/proguard/gui/splash/OverrideGraphics2D.java +598 -0
- data/lib/proguard4.7/src/proguard/gui/splash/RectangleSprite.java +114 -0
- data/lib/proguard4.7/src/proguard/gui/splash/SawToothTiming.java +53 -0
- data/lib/proguard4.7/src/proguard/gui/splash/ShadowedSprite.java +109 -0
- data/lib/proguard4.7/src/proguard/gui/splash/SineTiming.java +53 -0
- data/lib/proguard4.7/src/proguard/gui/splash/SmoothTiming.java +66 -0
- data/lib/proguard4.7/src/proguard/gui/splash/SplashPanel.java +235 -0
- data/lib/proguard4.7/src/proguard/gui/splash/Sprite.java +41 -0
- data/lib/proguard4.7/src/proguard/gui/splash/TextSprite.java +89 -0
- data/lib/proguard4.7/src/proguard/gui/splash/TimeSwitchSprite.java +75 -0
- data/lib/proguard4.7/src/proguard/gui/splash/Timing.java +34 -0
- data/lib/proguard4.7/src/proguard/gui/splash/TypeWriterString.java +71 -0
- data/lib/proguard4.7/src/proguard/gui/splash/VariableColor.java +36 -0
- data/lib/proguard4.7/src/proguard/gui/splash/VariableDouble.java +34 -0
- data/lib/proguard4.7/src/proguard/gui/splash/VariableFont.java +36 -0
- data/lib/proguard4.7/src/proguard/gui/splash/VariableInt.java +34 -0
- data/lib/proguard4.7/src/proguard/gui/splash/VariableSizeFont.java +65 -0
- data/lib/proguard4.7/src/proguard/gui/splash/VariableString.java +34 -0
- data/lib/proguard4.7/src/proguard/gui/splash/package.html +4 -0
- data/lib/proguard4.7/src/proguard/gui/vtitle.png +0 -0
- data/lib/proguard4.7/src/proguard/io/CascadingDataEntryWriter.java +94 -0
- data/lib/proguard4.7/src/proguard/io/ClassFilter.java +59 -0
- data/lib/proguard4.7/src/proguard/io/ClassReader.java +115 -0
- data/lib/proguard4.7/src/proguard/io/ClassRewriter.java +80 -0
- data/lib/proguard4.7/src/proguard/io/DataEntry.java +62 -0
- data/lib/proguard4.7/src/proguard/io/DataEntryClassWriter.java +85 -0
- data/lib/proguard4.7/src/proguard/io/DataEntryCopier.java +247 -0
- data/lib/proguard4.7/src/proguard/io/DataEntryDirectoryFilter.java +40 -0
- data/lib/proguard4.7/src/proguard/io/DataEntryFilter.java +38 -0
- data/lib/proguard4.7/src/proguard/io/DataEntryNameFilter.java +54 -0
- data/lib/proguard4.7/src/proguard/io/DataEntryObfuscator.java +150 -0
- data/lib/proguard4.7/src/proguard/io/DataEntryParentFilter.java +51 -0
- data/lib/proguard4.7/src/proguard/io/DataEntryPump.java +43 -0
- data/lib/proguard4.7/src/proguard/io/DataEntryReader.java +38 -0
- data/lib/proguard4.7/src/proguard/io/DataEntryRenamer.java +104 -0
- data/lib/proguard4.7/src/proguard/io/DataEntryRewriter.java +148 -0
- data/lib/proguard4.7/src/proguard/io/DataEntryWriter.java +73 -0
- data/lib/proguard4.7/src/proguard/io/DirectoryFilter.java +58 -0
- data/lib/proguard4.7/src/proguard/io/DirectoryPump.java +78 -0
- data/lib/proguard4.7/src/proguard/io/DirectoryWriter.java +165 -0
- data/lib/proguard4.7/src/proguard/io/FileDataEntry.java +96 -0
- data/lib/proguard4.7/src/proguard/io/FilteredDataEntryReader.java +90 -0
- data/lib/proguard4.7/src/proguard/io/FilteredDataEntryWriter.java +125 -0
- data/lib/proguard4.7/src/proguard/io/Finisher.java +37 -0
- data/lib/proguard4.7/src/proguard/io/JarReader.java +75 -0
- data/lib/proguard4.7/src/proguard/io/JarWriter.java +235 -0
- data/lib/proguard4.7/src/proguard/io/ManifestRewriter.java +216 -0
- data/lib/proguard4.7/src/proguard/io/NameFilter.java +83 -0
- data/lib/proguard4.7/src/proguard/io/ParentDataEntryWriter.java +75 -0
- data/lib/proguard4.7/src/proguard/io/RenamedDataEntry.java +83 -0
- data/lib/proguard4.7/src/proguard/io/ZipDataEntry.java +98 -0
- data/lib/proguard4.7/src/proguard/io/package.html +4 -0
- data/lib/proguard4.7/src/proguard/obfuscate/AttributeShrinker.java +120 -0
- data/lib/proguard4.7/src/proguard/obfuscate/AttributeUsageMarker.java +71 -0
- data/lib/proguard4.7/src/proguard/obfuscate/ClassObfuscator.java +533 -0
- data/lib/proguard4.7/src/proguard/obfuscate/ClassRenamer.java +109 -0
- data/lib/proguard4.7/src/proguard/obfuscate/DictionaryNameFactory.java +189 -0
- data/lib/proguard4.7/src/proguard/obfuscate/MapCleaner.java +57 -0
- data/lib/proguard4.7/src/proguard/obfuscate/MappingKeeper.java +177 -0
- data/lib/proguard4.7/src/proguard/obfuscate/MappingPrinter.java +147 -0
- data/lib/proguard4.7/src/proguard/obfuscate/MappingProcessor.java +79 -0
- data/lib/proguard4.7/src/proguard/obfuscate/MappingReader.java +199 -0
- data/lib/proguard4.7/src/proguard/obfuscate/MemberNameCleaner.java +60 -0
- data/lib/proguard4.7/src/proguard/obfuscate/MemberNameCollector.java +106 -0
- data/lib/proguard4.7/src/proguard/obfuscate/MemberNameConflictFixer.java +159 -0
- data/lib/proguard4.7/src/proguard/obfuscate/MemberNameFilter.java +120 -0
- data/lib/proguard4.7/src/proguard/obfuscate/MemberObfuscator.java +230 -0
- data/lib/proguard4.7/src/proguard/obfuscate/MemberSpecialNameFilter.java +101 -0
- data/lib/proguard4.7/src/proguard/obfuscate/MultiMappingProcessor.java +96 -0
- data/lib/proguard4.7/src/proguard/obfuscate/NameFactory.java +34 -0
- data/lib/proguard4.7/src/proguard/obfuscate/NameFactoryResetter.java +59 -0
- data/lib/proguard4.7/src/proguard/obfuscate/NameMarker.java +166 -0
- data/lib/proguard4.7/src/proguard/obfuscate/NumericNameFactory.java +49 -0
- data/lib/proguard4.7/src/proguard/obfuscate/Obfuscator.java +445 -0
- data/lib/proguard4.7/src/proguard/obfuscate/ParameterNameMarker.java +128 -0
- data/lib/proguard4.7/src/proguard/obfuscate/SimpleNameFactory.java +156 -0
- data/lib/proguard4.7/src/proguard/obfuscate/SourceFileRenamer.java +84 -0
- data/lib/proguard4.7/src/proguard/obfuscate/SpecialNameFactory.java +83 -0
- data/lib/proguard4.7/src/proguard/obfuscate/package.html +3 -0
- data/lib/proguard4.7/src/proguard/optimize/BootstrapMethodArgumentShrinker.java +103 -0
- data/lib/proguard4.7/src/proguard/optimize/ChangedCodePrinter.java +297 -0
- data/lib/proguard4.7/src/proguard/optimize/ConstantMemberFilter.java +77 -0
- data/lib/proguard4.7/src/proguard/optimize/ConstantParameterFilter.java +79 -0
- data/lib/proguard4.7/src/proguard/optimize/DuplicateInitializerFixer.java +215 -0
- data/lib/proguard4.7/src/proguard/optimize/DuplicateInitializerInvocationFixer.java +161 -0
- data/lib/proguard4.7/src/proguard/optimize/KeepMarker.java +95 -0
- data/lib/proguard4.7/src/proguard/optimize/KeptClassFilter.java +69 -0
- data/lib/proguard4.7/src/proguard/optimize/KeptMemberFilter.java +88 -0
- data/lib/proguard4.7/src/proguard/optimize/MemberDescriptorSpecializer.java +138 -0
- data/lib/proguard4.7/src/proguard/optimize/MethodDescriptorShrinker.java +317 -0
- data/lib/proguard4.7/src/proguard/optimize/MethodStaticizer.java +87 -0
- data/lib/proguard4.7/src/proguard/optimize/OptimizationInfoMemberFilter.java +94 -0
- data/lib/proguard4.7/src/proguard/optimize/Optimizer.java +963 -0
- data/lib/proguard4.7/src/proguard/optimize/ParameterShrinker.java +146 -0
- data/lib/proguard4.7/src/proguard/optimize/TailRecursionSimplifier.java +356 -0
- data/lib/proguard4.7/src/proguard/optimize/WriteOnlyFieldFilter.java +65 -0
- data/lib/proguard4.7/src/proguard/optimize/evaluation/EvaluationShrinker.java +2082 -0
- data/lib/proguard4.7/src/proguard/optimize/evaluation/EvaluationSimplifier.java +973 -0
- data/lib/proguard4.7/src/proguard/optimize/evaluation/LivenessAnalyzer.java +526 -0
- data/lib/proguard4.7/src/proguard/optimize/evaluation/LoadingInvocationUnit.java +195 -0
- data/lib/proguard4.7/src/proguard/optimize/evaluation/PartialEvaluator.java +1282 -0
- data/lib/proguard4.7/src/proguard/optimize/evaluation/StoringInvocationUnit.java +207 -0
- data/lib/proguard4.7/src/proguard/optimize/evaluation/TracedBranchUnit.java +59 -0
- data/lib/proguard4.7/src/proguard/optimize/evaluation/VariableOptimizer.java +345 -0
- data/lib/proguard4.7/src/proguard/optimize/evaluation/package.html +4 -0
- data/lib/proguard4.7/src/proguard/optimize/info/AccessMethodMarker.java +202 -0
- data/lib/proguard4.7/src/proguard/optimize/info/BackwardBranchMarker.java +90 -0
- data/lib/proguard4.7/src/proguard/optimize/info/CatchExceptionMarker.java +69 -0
- data/lib/proguard4.7/src/proguard/optimize/info/CaughtClassFilter.java +63 -0
- data/lib/proguard4.7/src/proguard/optimize/info/CaughtClassMarker.java +64 -0
- data/lib/proguard4.7/src/proguard/optimize/info/ClassOptimizationInfo.java +165 -0
- data/lib/proguard4.7/src/proguard/optimize/info/ClassOptimizationInfoSetter.java +47 -0
- data/lib/proguard4.7/src/proguard/optimize/info/DotClassFilter.java +63 -0
- data/lib/proguard4.7/src/proguard/optimize/info/DotClassMarker.java +96 -0
- data/lib/proguard4.7/src/proguard/optimize/info/ExceptionInstructionChecker.java +193 -0
- data/lib/proguard4.7/src/proguard/optimize/info/FieldOptimizationInfo.java +204 -0
- data/lib/proguard4.7/src/proguard/optimize/info/InstanceofClassFilter.java +63 -0
- data/lib/proguard4.7/src/proguard/optimize/info/InstanceofClassMarker.java +93 -0
- data/lib/proguard4.7/src/proguard/optimize/info/InstantiationClassFilter.java +62 -0
- data/lib/proguard4.7/src/proguard/optimize/info/InstantiationClassMarker.java +93 -0
- data/lib/proguard4.7/src/proguard/optimize/info/MemberOptimizationInfoSetter.java +59 -0
- data/lib/proguard4.7/src/proguard/optimize/info/MethodInvocationMarker.java +107 -0
- data/lib/proguard4.7/src/proguard/optimize/info/MethodOptimizationInfo.java +302 -0
- data/lib/proguard4.7/src/proguard/optimize/info/NoSideEffectMethodMarker.java +91 -0
- data/lib/proguard4.7/src/proguard/optimize/info/NonPrivateMemberMarker.java +171 -0
- data/lib/proguard4.7/src/proguard/optimize/info/PackageVisibleMemberContainingClassMarker.java +85 -0
- data/lib/proguard4.7/src/proguard/optimize/info/PackageVisibleMemberInvokingClassMarker.java +129 -0
- data/lib/proguard4.7/src/proguard/optimize/info/ParameterUsageMarker.java +285 -0
- data/lib/proguard4.7/src/proguard/optimize/info/ReadWriteFieldMarker.java +163 -0
- data/lib/proguard4.7/src/proguard/optimize/info/SideEffectInstructionChecker.java +245 -0
- data/lib/proguard4.7/src/proguard/optimize/info/SideEffectMethodMarker.java +175 -0
- data/lib/proguard4.7/src/proguard/optimize/info/StaticInitializerContainingClassFilter.java +62 -0
- data/lib/proguard4.7/src/proguard/optimize/info/StaticInitializerContainingClassMarker.java +65 -0
- data/lib/proguard4.7/src/proguard/optimize/info/SuperInvocationMarker.java +93 -0
- data/lib/proguard4.7/src/proguard/optimize/info/VariableUsageMarker.java +96 -0
- data/lib/proguard4.7/src/proguard/optimize/info/package.html +4 -0
- data/lib/proguard4.7/src/proguard/optimize/package.html +4 -0
- data/lib/proguard4.7/src/proguard/optimize/peephole/BranchTargetFinder.java +687 -0
- data/lib/proguard4.7/src/proguard/optimize/peephole/ClassFinalizer.java +84 -0
- data/lib/proguard4.7/src/proguard/optimize/peephole/ClassMerger.java +576 -0
- data/lib/proguard4.7/src/proguard/optimize/peephole/GotoCommonCodeReplacer.java +266 -0
- data/lib/proguard4.7/src/proguard/optimize/peephole/GotoGotoReplacer.java +115 -0
- data/lib/proguard4.7/src/proguard/optimize/peephole/GotoReturnReplacer.java +115 -0
- data/lib/proguard4.7/src/proguard/optimize/peephole/HorizontalClassMerger.java +90 -0
- data/lib/proguard4.7/src/proguard/optimize/peephole/InstructionSequenceConstants.java +4424 -0
- data/lib/proguard4.7/src/proguard/optimize/peephole/InstructionSequenceReplacer.java +420 -0
- data/lib/proguard4.7/src/proguard/optimize/peephole/InstructionSequencesReplacer.java +138 -0
- data/lib/proguard4.7/src/proguard/optimize/peephole/MemberPrivatizer.java +103 -0
- data/lib/proguard4.7/src/proguard/optimize/peephole/MethodFinalizer.java +93 -0
- data/lib/proguard4.7/src/proguard/optimize/peephole/MethodInliner.java +597 -0
- data/lib/proguard4.7/src/proguard/optimize/peephole/NopRemover.java +89 -0
- data/lib/proguard4.7/src/proguard/optimize/peephole/PeepholeOptimizer.java +103 -0
- data/lib/proguard4.7/src/proguard/optimize/peephole/ReachableCodeMarker.java +262 -0
- data/lib/proguard4.7/src/proguard/optimize/peephole/RetargetedInnerClassAttributeRemover.java +170 -0
- data/lib/proguard4.7/src/proguard/optimize/peephole/TargetClassChanger.java +455 -0
- data/lib/proguard4.7/src/proguard/optimize/peephole/UnreachableCodeRemover.java +143 -0
- data/lib/proguard4.7/src/proguard/optimize/peephole/UnreachableExceptionRemover.java +163 -0
- data/lib/proguard4.7/src/proguard/optimize/peephole/VariableShrinker.java +129 -0
- data/lib/proguard4.7/src/proguard/optimize/peephole/VerticalClassMerger.java +88 -0
- data/lib/proguard4.7/src/proguard/optimize/peephole/package.html +3 -0
- data/lib/proguard4.7/src/proguard/package.html +5 -0
- data/lib/proguard4.7/src/proguard/preverify/CodePreverifier.java +611 -0
- data/lib/proguard4.7/src/proguard/preverify/CodeSubroutineInliner.java +406 -0
- data/lib/proguard4.7/src/proguard/preverify/Preverifier.java +73 -0
- data/lib/proguard4.7/src/proguard/preverify/SubroutineInliner.java +73 -0
- data/lib/proguard4.7/src/proguard/retrace/MANIFEST.MF +3 -0
- data/lib/proguard4.7/src/proguard/retrace/ReTrace.java +749 -0
- data/lib/proguard4.7/src/proguard/retrace/package.html +4 -0
- data/lib/proguard4.7/src/proguard/shrink/AnnotationUsageMarker.java +333 -0
- data/lib/proguard4.7/src/proguard/shrink/ClassShrinker.java +458 -0
- data/lib/proguard4.7/src/proguard/shrink/InnerUsageMarker.java +174 -0
- data/lib/proguard4.7/src/proguard/shrink/InterfaceUsageMarker.java +152 -0
- data/lib/proguard4.7/src/proguard/shrink/ShortestUsageMark.java +183 -0
- data/lib/proguard4.7/src/proguard/shrink/ShortestUsageMarker.java +277 -0
- data/lib/proguard4.7/src/proguard/shrink/ShortestUsagePrinter.java +210 -0
- data/lib/proguard4.7/src/proguard/shrink/Shrinker.java +181 -0
- data/lib/proguard4.7/src/proguard/shrink/UsageMarker.java +1036 -0
- data/lib/proguard4.7/src/proguard/shrink/UsagePrinter.java +177 -0
- data/lib/proguard4.7/src/proguard/shrink/UsedClassFilter.java +74 -0
- data/lib/proguard4.7/src/proguard/shrink/UsedMemberFilter.java +93 -0
- data/lib/proguard4.7/src/proguard/shrink/package.html +3 -0
- data/lib/proguard4.7/src/proguard/util/AndMatcher.java +49 -0
- data/lib/proguard4.7/src/proguard/util/ClassNameParser.java +216 -0
- data/lib/proguard4.7/src/proguard/util/ConstantMatcher.java +48 -0
- data/lib/proguard4.7/src/proguard/util/EmptyStringMatcher.java +36 -0
- data/lib/proguard4.7/src/proguard/util/ExtensionMatcher.java +63 -0
- data/lib/proguard4.7/src/proguard/util/FileNameParser.java +121 -0
- data/lib/proguard4.7/src/proguard/util/FixedStringMatcher.java +56 -0
- data/lib/proguard4.7/src/proguard/util/ListMatcher.java +69 -0
- data/lib/proguard4.7/src/proguard/util/ListParser.java +137 -0
- data/lib/proguard4.7/src/proguard/util/ListUtil.java +180 -0
- data/lib/proguard4.7/src/proguard/util/NameParser.java +106 -0
- data/lib/proguard4.7/src/proguard/util/NotMatcher.java +46 -0
- data/lib/proguard4.7/src/proguard/util/OrMatcher.java +49 -0
- data/lib/proguard4.7/src/proguard/util/SettableMatcher.java +46 -0
- data/lib/proguard4.7/src/proguard/util/StringMatcher.java +38 -0
- data/lib/proguard4.7/src/proguard/util/StringParser.java +35 -0
- data/lib/proguard4.7/src/proguard/util/VariableStringMatcher.java +126 -0
- data/lib/proguard4.7/src/proguard/util/package.html +3 -0
- data/lib/proguard4.7/src/proguard/wtk/ProGuardObfuscator.java +141 -0
- data/lib/proguard4.7/src/proguard/wtk/default.pro +114 -0
- data/lib/proguard4.7/src/proguard/wtk/package.html +3 -0
- metadata +960 -10
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* ProGuard -- shrinking, optimization, obfuscation, and preverification
|
|
3
|
+
* of Java bytecode.
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) 2002-2011 Eric Lafortune (eric@graphics.cornell.edu)
|
|
6
|
+
*
|
|
7
|
+
* This program is free software; you can redistribute it and/or modify it
|
|
8
|
+
* under the terms of the GNU General Public License as published by the Free
|
|
9
|
+
* Software Foundation; either version 2 of the License, or (at your option)
|
|
10
|
+
* any later version.
|
|
11
|
+
*
|
|
12
|
+
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
13
|
+
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
14
|
+
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
15
|
+
* more details.
|
|
16
|
+
*
|
|
17
|
+
* You should have received a copy of the GNU General Public License along
|
|
18
|
+
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
19
|
+
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
20
|
+
*/
|
|
21
|
+
package proguard.classfile.instruction;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* This Instruction represents a simple instruction without variable arguments
|
|
25
|
+
* or constant pool references.
|
|
26
|
+
*
|
|
27
|
+
* @author Eric Lafortune
|
|
28
|
+
*/
|
|
29
|
+
public abstract class SwitchInstruction extends Instruction
|
|
30
|
+
{
|
|
31
|
+
public int defaultOffset;
|
|
32
|
+
public int[] jumpOffsets;
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Creates an uninitialized SwitchInstruction.
|
|
37
|
+
*/
|
|
38
|
+
public SwitchInstruction() {}
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Creates a new SwitchInstruction with the given arguments.
|
|
43
|
+
*/
|
|
44
|
+
public SwitchInstruction(byte opcode,
|
|
45
|
+
int defaultOffset,
|
|
46
|
+
int[] jumpOffsets)
|
|
47
|
+
{
|
|
48
|
+
this.opcode = opcode;
|
|
49
|
+
this.defaultOffset = defaultOffset;
|
|
50
|
+
this.jumpOffsets = jumpOffsets;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Copies the given instruction into this instruction.
|
|
56
|
+
* @param switchInstruction the instruction to be copied.
|
|
57
|
+
* @return this instruction.
|
|
58
|
+
*/
|
|
59
|
+
public SwitchInstruction copy(SwitchInstruction switchInstruction)
|
|
60
|
+
{
|
|
61
|
+
this.opcode = switchInstruction.opcode;
|
|
62
|
+
this.defaultOffset = switchInstruction.defaultOffset;
|
|
63
|
+
this.jumpOffsets = switchInstruction.jumpOffsets;
|
|
64
|
+
|
|
65
|
+
return this;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
// Implementations for Instruction.
|
|
70
|
+
|
|
71
|
+
public String toString(int offset)
|
|
72
|
+
{
|
|
73
|
+
return "["+offset+"] "+toString()+" (target="+(offset+defaultOffset)+")";
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
// Implementations for Object.
|
|
78
|
+
|
|
79
|
+
public String toString()
|
|
80
|
+
{
|
|
81
|
+
return getName()+" ("+jumpOffsets.length+" offsets, default="+defaultOffset+")";
|
|
82
|
+
}
|
|
83
|
+
}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* ProGuard -- shrinking, optimization, obfuscation, and preverification
|
|
3
|
+
* of Java bytecode.
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) 2002-2011 Eric Lafortune (eric@graphics.cornell.edu)
|
|
6
|
+
*
|
|
7
|
+
* This program is free software; you can redistribute it and/or modify it
|
|
8
|
+
* under the terms of the GNU General Public License as published by the Free
|
|
9
|
+
* Software Foundation; either version 2 of the License, or (at your option)
|
|
10
|
+
* any later version.
|
|
11
|
+
*
|
|
12
|
+
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
13
|
+
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
14
|
+
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
15
|
+
* more details.
|
|
16
|
+
*
|
|
17
|
+
* You should have received a copy of the GNU General Public License along
|
|
18
|
+
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
19
|
+
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
20
|
+
*/
|
|
21
|
+
package proguard.classfile.instruction;
|
|
22
|
+
|
|
23
|
+
import proguard.classfile.*;
|
|
24
|
+
import proguard.classfile.attribute.CodeAttribute;
|
|
25
|
+
import proguard.classfile.instruction.visitor.InstructionVisitor;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* This Instruction represents a simple instruction without variable arguments
|
|
29
|
+
* or constant pool references.
|
|
30
|
+
*
|
|
31
|
+
* @author Eric Lafortune
|
|
32
|
+
*/
|
|
33
|
+
public class TableSwitchInstruction extends SwitchInstruction
|
|
34
|
+
{
|
|
35
|
+
public int lowCase;
|
|
36
|
+
public int highCase;
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Creates an uninitialized TableSwitchInstruction.
|
|
41
|
+
*/
|
|
42
|
+
public TableSwitchInstruction() {}
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Creates a new TableSwitchInstruction with the given arguments.
|
|
47
|
+
*/
|
|
48
|
+
public TableSwitchInstruction(byte opcode,
|
|
49
|
+
int defaultOffset,
|
|
50
|
+
int lowCase,
|
|
51
|
+
int highCase,
|
|
52
|
+
int[] jumpOffsets)
|
|
53
|
+
{
|
|
54
|
+
this.opcode = opcode;
|
|
55
|
+
this.defaultOffset = defaultOffset;
|
|
56
|
+
this.lowCase = lowCase;
|
|
57
|
+
this.highCase = highCase;
|
|
58
|
+
this.jumpOffsets = jumpOffsets;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Copies the given instruction into this instruction.
|
|
64
|
+
* @param tableSwitchInstruction the instruction to be copied.
|
|
65
|
+
* @return this instruction.
|
|
66
|
+
*/
|
|
67
|
+
public TableSwitchInstruction copy(TableSwitchInstruction tableSwitchInstruction)
|
|
68
|
+
{
|
|
69
|
+
this.opcode = tableSwitchInstruction.opcode;
|
|
70
|
+
this.defaultOffset = tableSwitchInstruction.defaultOffset;
|
|
71
|
+
this.lowCase = tableSwitchInstruction.lowCase;
|
|
72
|
+
this.highCase = tableSwitchInstruction.highCase;
|
|
73
|
+
this.jumpOffsets = tableSwitchInstruction.jumpOffsets;
|
|
74
|
+
|
|
75
|
+
return this;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
// Implementations for Instruction.
|
|
80
|
+
|
|
81
|
+
public Instruction shrink()
|
|
82
|
+
{
|
|
83
|
+
// There aren't any ways to shrink this instruction.
|
|
84
|
+
return this;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
protected void readInfo(byte[] code, int offset)
|
|
88
|
+
{
|
|
89
|
+
// Skip up to three padding bytes.
|
|
90
|
+
offset += -offset & 3;
|
|
91
|
+
|
|
92
|
+
// Read the three 32-bit arguments.
|
|
93
|
+
defaultOffset = readInt(code, offset); offset += 4;
|
|
94
|
+
lowCase = readInt(code, offset); offset += 4;
|
|
95
|
+
highCase = readInt(code, offset); offset += 4;
|
|
96
|
+
|
|
97
|
+
// Read the jump offsets.
|
|
98
|
+
jumpOffsets = new int[highCase - lowCase + 1];
|
|
99
|
+
|
|
100
|
+
for (int index = 0; index < jumpOffsets.length; index++)
|
|
101
|
+
{
|
|
102
|
+
jumpOffsets[index] = readInt(code, offset); offset += 4;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
protected void writeInfo(byte[] code, int offset)
|
|
108
|
+
{
|
|
109
|
+
// Write up to three padding bytes.
|
|
110
|
+
while ((offset & 3) != 0)
|
|
111
|
+
{
|
|
112
|
+
writeByte(code, offset++, 0);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// Write the three 32-bit arguments.
|
|
116
|
+
writeInt(code, offset, defaultOffset); offset += 4;
|
|
117
|
+
writeInt(code, offset, lowCase); offset += 4;
|
|
118
|
+
writeInt(code, offset, highCase); offset += 4;
|
|
119
|
+
|
|
120
|
+
// Write the jump offsets.
|
|
121
|
+
int length = highCase - lowCase + 1;
|
|
122
|
+
for (int index = 0; index < length; index++)
|
|
123
|
+
{
|
|
124
|
+
writeInt(code, offset, jumpOffsets[index]); offset += 4;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
public int length(int offset)
|
|
130
|
+
{
|
|
131
|
+
return 1 + (-(offset+1) & 3) + 12 + (highCase - lowCase + 1) * 4;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
public void accept(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, InstructionVisitor instructionVisitor)
|
|
136
|
+
{
|
|
137
|
+
instructionVisitor.visitTableSwitchInstruction(clazz, method, codeAttribute, offset, this);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* ProGuard -- shrinking, optimization, obfuscation, and preverification
|
|
3
|
+
* of Java bytecode.
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) 2002-2011 Eric Lafortune (eric@graphics.cornell.edu)
|
|
6
|
+
*
|
|
7
|
+
* This program is free software; you can redistribute it and/or modify it
|
|
8
|
+
* under the terms of the GNU General Public License as published by the Free
|
|
9
|
+
* Software Foundation; either version 2 of the License, or (at your option)
|
|
10
|
+
* any later version.
|
|
11
|
+
*
|
|
12
|
+
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
13
|
+
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
14
|
+
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
15
|
+
* more details.
|
|
16
|
+
*
|
|
17
|
+
* You should have received a copy of the GNU General Public License along
|
|
18
|
+
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
19
|
+
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
20
|
+
*/
|
|
21
|
+
package proguard.classfile.instruction;
|
|
22
|
+
|
|
23
|
+
import proguard.classfile.*;
|
|
24
|
+
import proguard.classfile.attribute.CodeAttribute;
|
|
25
|
+
import proguard.classfile.instruction.visitor.InstructionVisitor;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* This Instruction represents an instruction that refers to a variable on the
|
|
29
|
+
* local variable stack.
|
|
30
|
+
*
|
|
31
|
+
* @author Eric Lafortune
|
|
32
|
+
*/
|
|
33
|
+
public class VariableInstruction extends Instruction
|
|
34
|
+
{
|
|
35
|
+
public boolean wide;
|
|
36
|
+
public int variableIndex;
|
|
37
|
+
public int constant;
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Creates an uninitialized VariableInstruction.
|
|
42
|
+
*/
|
|
43
|
+
public VariableInstruction() {}
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
public VariableInstruction(boolean wide)
|
|
47
|
+
{
|
|
48
|
+
this.wide = wide;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
public VariableInstruction(byte opcode)
|
|
53
|
+
{
|
|
54
|
+
this(opcode, embeddedVariable(opcode), 0);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
public VariableInstruction(byte opcode,
|
|
59
|
+
int variableIndex)
|
|
60
|
+
{
|
|
61
|
+
this(opcode, variableIndex, 0);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
public VariableInstruction(byte opcode,
|
|
66
|
+
int variableIndex,
|
|
67
|
+
int constant)
|
|
68
|
+
{
|
|
69
|
+
this.opcode = opcode;
|
|
70
|
+
this.variableIndex = variableIndex;
|
|
71
|
+
this.constant = constant;
|
|
72
|
+
this.wide = requiredVariableIndexSize() > 1 ||
|
|
73
|
+
requiredConstantSize() > 1;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Copies the given instruction into this instruction.
|
|
79
|
+
* @param variableInstruction the instruction to be copied.
|
|
80
|
+
* @return this instruction.
|
|
81
|
+
*/
|
|
82
|
+
public VariableInstruction copy(VariableInstruction variableInstruction)
|
|
83
|
+
{
|
|
84
|
+
this.opcode = variableInstruction.opcode;
|
|
85
|
+
this.variableIndex = variableInstruction.variableIndex;
|
|
86
|
+
this.constant = variableInstruction.constant;
|
|
87
|
+
this.wide = variableInstruction.wide;
|
|
88
|
+
|
|
89
|
+
return this;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Return the embedded variable of the given opcode, or 0 if the opcode
|
|
95
|
+
* doesn't have one.
|
|
96
|
+
*/
|
|
97
|
+
private static int embeddedVariable(byte opcode)
|
|
98
|
+
{
|
|
99
|
+
switch (opcode)
|
|
100
|
+
{
|
|
101
|
+
case InstructionConstants.OP_ILOAD_1:
|
|
102
|
+
case InstructionConstants.OP_LLOAD_1:
|
|
103
|
+
case InstructionConstants.OP_FLOAD_1:
|
|
104
|
+
case InstructionConstants.OP_DLOAD_1:
|
|
105
|
+
case InstructionConstants.OP_ALOAD_1:
|
|
106
|
+
case InstructionConstants.OP_ISTORE_1:
|
|
107
|
+
case InstructionConstants.OP_LSTORE_1:
|
|
108
|
+
case InstructionConstants.OP_FSTORE_1:
|
|
109
|
+
case InstructionConstants.OP_DSTORE_1:
|
|
110
|
+
case InstructionConstants.OP_ASTORE_1: return 1;
|
|
111
|
+
|
|
112
|
+
case InstructionConstants.OP_ILOAD_2:
|
|
113
|
+
case InstructionConstants.OP_LLOAD_2:
|
|
114
|
+
case InstructionConstants.OP_FLOAD_2:
|
|
115
|
+
case InstructionConstants.OP_DLOAD_2:
|
|
116
|
+
case InstructionConstants.OP_ALOAD_2:
|
|
117
|
+
case InstructionConstants.OP_ISTORE_2:
|
|
118
|
+
case InstructionConstants.OP_LSTORE_2:
|
|
119
|
+
case InstructionConstants.OP_FSTORE_2:
|
|
120
|
+
case InstructionConstants.OP_DSTORE_2:
|
|
121
|
+
case InstructionConstants.OP_ASTORE_2: return 2;
|
|
122
|
+
|
|
123
|
+
case InstructionConstants.OP_ILOAD_3:
|
|
124
|
+
case InstructionConstants.OP_LLOAD_3:
|
|
125
|
+
case InstructionConstants.OP_FLOAD_3:
|
|
126
|
+
case InstructionConstants.OP_DLOAD_3:
|
|
127
|
+
case InstructionConstants.OP_ALOAD_3:
|
|
128
|
+
case InstructionConstants.OP_ISTORE_3:
|
|
129
|
+
case InstructionConstants.OP_LSTORE_3:
|
|
130
|
+
case InstructionConstants.OP_FSTORE_3:
|
|
131
|
+
case InstructionConstants.OP_DSTORE_3:
|
|
132
|
+
case InstructionConstants.OP_ASTORE_3: return 3;
|
|
133
|
+
|
|
134
|
+
default: return 0;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Returns whether this instruction stores the value of a variable.
|
|
141
|
+
* The value is false for the ret instruction, but true for the iinc
|
|
142
|
+
* instruction.
|
|
143
|
+
*/
|
|
144
|
+
public boolean isStore()
|
|
145
|
+
{
|
|
146
|
+
// A store instruction can be recognized as follows. Note that this
|
|
147
|
+
// excludes the ret instruction, which has a negative opcode.
|
|
148
|
+
return opcode >= InstructionConstants.OP_ISTORE ||
|
|
149
|
+
opcode == InstructionConstants.OP_IINC;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Returns whether this instruction loads the value of a variable.
|
|
155
|
+
* The value is true for the ret instruction and for the iinc
|
|
156
|
+
* instruction.
|
|
157
|
+
*/
|
|
158
|
+
public boolean isLoad()
|
|
159
|
+
{
|
|
160
|
+
// A load instruction can be recognized as follows. Note that this
|
|
161
|
+
// includes the ret instruction, which has a negative opcode.
|
|
162
|
+
return opcode < InstructionConstants.OP_ISTORE;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
// Implementations for Instruction.
|
|
167
|
+
|
|
168
|
+
public byte canonicalOpcode()
|
|
169
|
+
{
|
|
170
|
+
// Remove the _0, _1, _2, _3 extension, if any.
|
|
171
|
+
switch (opcode)
|
|
172
|
+
{
|
|
173
|
+
case InstructionConstants.OP_ILOAD_0:
|
|
174
|
+
case InstructionConstants.OP_ILOAD_1:
|
|
175
|
+
case InstructionConstants.OP_ILOAD_2:
|
|
176
|
+
case InstructionConstants.OP_ILOAD_3: return InstructionConstants.OP_ILOAD;
|
|
177
|
+
case InstructionConstants.OP_LLOAD_0:
|
|
178
|
+
case InstructionConstants.OP_LLOAD_1:
|
|
179
|
+
case InstructionConstants.OP_LLOAD_2:
|
|
180
|
+
case InstructionConstants.OP_LLOAD_3: return InstructionConstants.OP_LLOAD;
|
|
181
|
+
case InstructionConstants.OP_FLOAD_0:
|
|
182
|
+
case InstructionConstants.OP_FLOAD_1:
|
|
183
|
+
case InstructionConstants.OP_FLOAD_2:
|
|
184
|
+
case InstructionConstants.OP_FLOAD_3: return InstructionConstants.OP_FLOAD;
|
|
185
|
+
case InstructionConstants.OP_DLOAD_0:
|
|
186
|
+
case InstructionConstants.OP_DLOAD_1:
|
|
187
|
+
case InstructionConstants.OP_DLOAD_2:
|
|
188
|
+
case InstructionConstants.OP_DLOAD_3: return InstructionConstants.OP_DLOAD;
|
|
189
|
+
case InstructionConstants.OP_ALOAD_0:
|
|
190
|
+
case InstructionConstants.OP_ALOAD_1:
|
|
191
|
+
case InstructionConstants.OP_ALOAD_2:
|
|
192
|
+
case InstructionConstants.OP_ALOAD_3: return InstructionConstants.OP_ALOAD;
|
|
193
|
+
|
|
194
|
+
case InstructionConstants.OP_ISTORE_0:
|
|
195
|
+
case InstructionConstants.OP_ISTORE_1:
|
|
196
|
+
case InstructionConstants.OP_ISTORE_2:
|
|
197
|
+
case InstructionConstants.OP_ISTORE_3: return InstructionConstants.OP_ISTORE;
|
|
198
|
+
case InstructionConstants.OP_LSTORE_0:
|
|
199
|
+
case InstructionConstants.OP_LSTORE_1:
|
|
200
|
+
case InstructionConstants.OP_LSTORE_2:
|
|
201
|
+
case InstructionConstants.OP_LSTORE_3: return InstructionConstants.OP_LSTORE;
|
|
202
|
+
case InstructionConstants.OP_FSTORE_0:
|
|
203
|
+
case InstructionConstants.OP_FSTORE_1:
|
|
204
|
+
case InstructionConstants.OP_FSTORE_2:
|
|
205
|
+
case InstructionConstants.OP_FSTORE_3: return InstructionConstants.OP_FSTORE;
|
|
206
|
+
case InstructionConstants.OP_DSTORE_0:
|
|
207
|
+
case InstructionConstants.OP_DSTORE_1:
|
|
208
|
+
case InstructionConstants.OP_DSTORE_2:
|
|
209
|
+
case InstructionConstants.OP_DSTORE_3: return InstructionConstants.OP_DSTORE;
|
|
210
|
+
case InstructionConstants.OP_ASTORE_0:
|
|
211
|
+
case InstructionConstants.OP_ASTORE_1:
|
|
212
|
+
case InstructionConstants.OP_ASTORE_2:
|
|
213
|
+
case InstructionConstants.OP_ASTORE_3: return InstructionConstants.OP_ASTORE;
|
|
214
|
+
|
|
215
|
+
default: return opcode;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
public Instruction shrink()
|
|
220
|
+
{
|
|
221
|
+
opcode = canonicalOpcode();
|
|
222
|
+
|
|
223
|
+
// Is this instruction pointing to a variable with index from 0 to 3?
|
|
224
|
+
if (variableIndex <= 3)
|
|
225
|
+
{
|
|
226
|
+
switch (opcode)
|
|
227
|
+
{
|
|
228
|
+
case InstructionConstants.OP_ILOAD: opcode = (byte)(InstructionConstants.OP_ILOAD_0 + variableIndex); break;
|
|
229
|
+
case InstructionConstants.OP_LLOAD: opcode = (byte)(InstructionConstants.OP_LLOAD_0 + variableIndex); break;
|
|
230
|
+
case InstructionConstants.OP_FLOAD: opcode = (byte)(InstructionConstants.OP_FLOAD_0 + variableIndex); break;
|
|
231
|
+
case InstructionConstants.OP_DLOAD: opcode = (byte)(InstructionConstants.OP_DLOAD_0 + variableIndex); break;
|
|
232
|
+
case InstructionConstants.OP_ALOAD: opcode = (byte)(InstructionConstants.OP_ALOAD_0 + variableIndex); break;
|
|
233
|
+
|
|
234
|
+
case InstructionConstants.OP_ISTORE: opcode = (byte)(InstructionConstants.OP_ISTORE_0 + variableIndex); break;
|
|
235
|
+
case InstructionConstants.OP_LSTORE: opcode = (byte)(InstructionConstants.OP_LSTORE_0 + variableIndex); break;
|
|
236
|
+
case InstructionConstants.OP_FSTORE: opcode = (byte)(InstructionConstants.OP_FSTORE_0 + variableIndex); break;
|
|
237
|
+
case InstructionConstants.OP_DSTORE: opcode = (byte)(InstructionConstants.OP_DSTORE_0 + variableIndex); break;
|
|
238
|
+
case InstructionConstants.OP_ASTORE: opcode = (byte)(InstructionConstants.OP_ASTORE_0 + variableIndex); break;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
// Only make the instruction wide if necessary.
|
|
243
|
+
wide = requiredVariableIndexSize() > 1 ||
|
|
244
|
+
requiredConstantSize() > 1;
|
|
245
|
+
|
|
246
|
+
return this;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
protected boolean isWide()
|
|
251
|
+
{
|
|
252
|
+
return wide;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
protected void readInfo(byte[] code, int offset)
|
|
257
|
+
{
|
|
258
|
+
int variableIndexSize = variableIndexSize();
|
|
259
|
+
int constantSize = constantSize();
|
|
260
|
+
|
|
261
|
+
// Also initialize embedded variable indexes.
|
|
262
|
+
if (variableIndexSize == 0)
|
|
263
|
+
{
|
|
264
|
+
// An embedded variable index can be decoded as follows.
|
|
265
|
+
variableIndex = opcode < InstructionConstants.OP_ISTORE_0 ?
|
|
266
|
+
(opcode - InstructionConstants.OP_ILOAD_0 ) & 3 :
|
|
267
|
+
(opcode - InstructionConstants.OP_ISTORE_0) & 3;
|
|
268
|
+
}
|
|
269
|
+
else
|
|
270
|
+
{
|
|
271
|
+
variableIndex = readValue(code, offset, variableIndexSize); offset += variableIndexSize;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
constant = readSignedValue(code, offset, constantSize);
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
|
|
278
|
+
protected void writeInfo(byte[] code, int offset)
|
|
279
|
+
{
|
|
280
|
+
int variableIndexSize = variableIndexSize();
|
|
281
|
+
int constantSize = constantSize();
|
|
282
|
+
|
|
283
|
+
if (requiredVariableIndexSize() > variableIndexSize)
|
|
284
|
+
{
|
|
285
|
+
throw new IllegalArgumentException("Instruction has invalid variable index size ("+this.toString(offset)+")");
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
if (requiredConstantSize() > constantSize)
|
|
289
|
+
{
|
|
290
|
+
throw new IllegalArgumentException("Instruction has invalid constant size ("+this.toString(offset)+")");
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
writeValue(code, offset, variableIndex, variableIndexSize); offset += variableIndexSize;
|
|
294
|
+
writeSignedValue(code, offset, constant, constantSize);
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
public int length(int offset)
|
|
299
|
+
{
|
|
300
|
+
return (wide ? 2 : 1) + variableIndexSize() + constantSize();
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
public void accept(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, InstructionVisitor instructionVisitor)
|
|
305
|
+
{
|
|
306
|
+
instructionVisitor.visitVariableInstruction(clazz, method, codeAttribute, offset, this);
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
// Implementations for Object.
|
|
311
|
+
|
|
312
|
+
public String toString()
|
|
313
|
+
{
|
|
314
|
+
return getName() +
|
|
315
|
+
(wide ? "_w" : "") +
|
|
316
|
+
" v"+variableIndex +
|
|
317
|
+
(constantSize() > 0 ? ", "+constant : "");
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
// Small utility methods.
|
|
322
|
+
|
|
323
|
+
/**
|
|
324
|
+
* Returns the variable index size for this instruction.
|
|
325
|
+
*/
|
|
326
|
+
private int variableIndexSize()
|
|
327
|
+
{
|
|
328
|
+
return (opcode >= InstructionConstants.OP_ILOAD_0 &&
|
|
329
|
+
opcode <= InstructionConstants.OP_ALOAD_3) ||
|
|
330
|
+
(opcode >= InstructionConstants.OP_ISTORE_0 &&
|
|
331
|
+
opcode <= InstructionConstants.OP_ASTORE_3) ? 0 :
|
|
332
|
+
wide ? 2 :
|
|
333
|
+
1;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
/**
|
|
338
|
+
* Computes the required variable index size for this instruction's variable
|
|
339
|
+
* index.
|
|
340
|
+
*/
|
|
341
|
+
private int requiredVariableIndexSize()
|
|
342
|
+
{
|
|
343
|
+
return (variableIndex & 0x3) == variableIndex ? 0 :
|
|
344
|
+
(variableIndex & 0xff) == variableIndex ? 1 :
|
|
345
|
+
(variableIndex & 0xffff) == variableIndex ? 2 :
|
|
346
|
+
4;
|
|
347
|
+
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* Returns the constant size for this instruction.
|
|
353
|
+
*/
|
|
354
|
+
private int constantSize()
|
|
355
|
+
{
|
|
356
|
+
return opcode != InstructionConstants.OP_IINC ? 0 :
|
|
357
|
+
wide ? 2 :
|
|
358
|
+
1;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
|
|
362
|
+
/**
|
|
363
|
+
* Computes the required constant size for this instruction's constant.
|
|
364
|
+
*/
|
|
365
|
+
private int requiredConstantSize()
|
|
366
|
+
{
|
|
367
|
+
return opcode != InstructionConstants.OP_IINC ? 0 :
|
|
368
|
+
constant << 24 >> 24 == constant ? 1 :
|
|
369
|
+
constant << 16 >> 16 == constant ? 2 :
|
|
370
|
+
4;
|
|
371
|
+
}
|
|
372
|
+
}
|