sometsome 3.10.50 → 3.10.50.37
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
- metadata +13 -963
- data/lib/hola.rb +0 -5
- data/lib/proguard4.7/README +0 -33
- data/lib/proguard4.7/bin/proguard.bat +0 -14
- data/lib/proguard4.7/bin/proguard.sh +0 -11
- data/lib/proguard4.7/bin/proguardgui.bat +0 -14
- data/lib/proguard4.7/bin/proguardgui.sh +0 -15
- data/lib/proguard4.7/bin/retrace.bat +0 -14
- data/lib/proguard4.7/bin/retrace.sh +0 -12
- data/lib/proguard4.7/build/build.sh +0 -94
- data/lib/proguard4.7/build/build.xml +0 -171
- data/lib/proguard4.7/build/makefile +0 -94
- data/lib/proguard4.7/docs/FAQ.html +0 -253
- data/lib/proguard4.7/docs/GPL.html +0 -406
- data/lib/proguard4.7/docs/GPL_exception.html +0 -56
- data/lib/proguard4.7/docs/acknowledgements.html +0 -76
- data/lib/proguard4.7/docs/alternatives.html +0 -699
- data/lib/proguard4.7/docs/checkmark.gif +0 -0
- data/lib/proguard4.7/docs/downloads.html +0 -623
- 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 +0 -120
- data/lib/proguard4.7/docs/index.html +0 -92
- data/lib/proguard4.7/docs/license.html +0 -60
- data/lib/proguard4.7/docs/main.html +0 -102
- data/lib/proguard4.7/docs/manual/ant.html +0 -634
- data/lib/proguard4.7/docs/manual/attention.gif +0 -0
- data/lib/proguard4.7/docs/manual/examples.html +0 -1504
- data/lib/proguard4.7/docs/manual/gui.html +0 -479
- data/lib/proguard4.7/docs/manual/index.html +0 -51
- data/lib/proguard4.7/docs/manual/introduction.html +0 -173
- data/lib/proguard4.7/docs/manual/limitations.html +0 -69
- data/lib/proguard4.7/docs/manual/optimizations.html +0 -172
- data/lib/proguard4.7/docs/manual/refcard.html +0 -486
- data/lib/proguard4.7/docs/manual/retrace/examples.html +0 -345
- data/lib/proguard4.7/docs/manual/retrace/index.html +0 -37
- data/lib/proguard4.7/docs/manual/retrace/introduction.html +0 -79
- data/lib/proguard4.7/docs/manual/retrace/usage.html +0 -127
- data/lib/proguard4.7/docs/manual/sections.html +0 -60
- data/lib/proguard4.7/docs/manual/style.css +0 -105
- data/lib/proguard4.7/docs/manual/troubleshooting.html +0 -729
- data/lib/proguard4.7/docs/manual/usage.html +0 -1243
- data/lib/proguard4.7/docs/manual/wtk.html +0 -70
- data/lib/proguard4.7/docs/quality.html +0 -56
- data/lib/proguard4.7/docs/results.html +0 -170
- 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 +0 -67
- data/lib/proguard4.7/docs/screenshots_gui_small.gif +0 -0
- data/lib/proguard4.7/docs/sections.html +0 -64
- 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 +0 -223
- data/lib/proguard4.7/docs/testimonials.html +0 -133
- data/lib/proguard4.7/docs/title.gif +0 -0
- data/lib/proguard4.7/docs/title.html +0 -17
- data/lib/proguard4.7/examples/android.pro +0 -149
- data/lib/proguard4.7/examples/annotations/examples.pro +0 -60
- data/lib/proguard4.7/examples/annotations/examples/Applet.java +0 -22
- data/lib/proguard4.7/examples/annotations/examples/Application.java +0 -20
- data/lib/proguard4.7/examples/annotations/examples/Bean.java +0 -56
- data/lib/proguard4.7/examples/annotations/examples/NativeCallBack.java +0 -44
- data/lib/proguard4.7/examples/annotations/lib/annotations.jar +0 -0
- data/lib/proguard4.7/examples/annotations/lib/annotations.pro +0 -118
- data/lib/proguard4.7/examples/annotations/src/proguard/annotation/Keep.java +0 -18
- data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepApplication.java +0 -18
- data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepClassMemberNames.java +0 -18
- data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepClassMembers.java +0 -18
- data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepGettersSetters.java +0 -18
- data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepImplementations.java +0 -18
- data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepName.java +0 -18
- data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepPublicClassMemberNames.java +0 -18
- data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepPublicClassMembers.java +0 -18
- data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepPublicGettersSetters.java +0 -18
- data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepPublicImplementations.java +0 -18
- data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepPublicProtectedClassMemberNames.java +0 -18
- data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepPublicProtectedClassMembers.java +0 -19
- data/lib/proguard4.7/examples/ant/android-8.xml +0 -177
- data/lib/proguard4.7/examples/ant/applets.xml +0 -88
- data/lib/proguard4.7/examples/ant/applications1.xml +0 -15
- data/lib/proguard4.7/examples/ant/applications2.xml +0 -74
- data/lib/proguard4.7/examples/ant/applications3.xml +0 -98
- data/lib/proguard4.7/examples/ant/library.xml +0 -102
- data/lib/proguard4.7/examples/ant/midlets.xml +0 -52
- data/lib/proguard4.7/examples/ant/proguard.xml +0 -78
- data/lib/proguard4.7/examples/ant/servlets.xml +0 -88
- data/lib/proguard4.7/examples/applets.pro +0 -69
- data/lib/proguard4.7/examples/applications.pro +0 -75
- data/lib/proguard4.7/examples/dictionaries/compact.txt +0 -18
- data/lib/proguard4.7/examples/dictionaries/keywords.txt +0 -58
- data/lib/proguard4.7/examples/dictionaries/shakespeare.txt +0 -23
- data/lib/proguard4.7/examples/dictionaries/windows.txt +0 -209
- data/lib/proguard4.7/examples/library.pro +0 -79
- data/lib/proguard4.7/examples/midlets.pro +0 -67
- data/lib/proguard4.7/examples/proguard.pro +0 -57
- data/lib/proguard4.7/examples/proguardall.pro +0 -62
- data/lib/proguard4.7/examples/proguardgui.pro +0 -50
- data/lib/proguard4.7/examples/retrace.pro +0 -43
- data/lib/proguard4.7/examples/scala.pro +0 -132
- data/lib/proguard4.7/examples/servlets.pro +0 -70
- 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 +0 -111
- data/lib/proguard4.7/src/proguard/ClassPath.java +0 -94
- data/lib/proguard4.7/src/proguard/ClassPathEntry.java +0 -282
- data/lib/proguard4.7/src/proguard/ClassSpecification.java +0 -259
- data/lib/proguard4.7/src/proguard/ClassSpecificationVisitorFactory.java +0 -503
- data/lib/proguard4.7/src/proguard/Configuration.java +0 -328
- data/lib/proguard4.7/src/proguard/ConfigurationConstants.java +0 -123
- data/lib/proguard4.7/src/proguard/ConfigurationParser.java +0 -1285
- data/lib/proguard4.7/src/proguard/ConfigurationWriter.java +0 -651
- data/lib/proguard4.7/src/proguard/DataEntryReaderFactory.java +0 -141
- data/lib/proguard4.7/src/proguard/DataEntryWriterFactory.java +0 -150
- data/lib/proguard4.7/src/proguard/DescriptorKeepChecker.java +0 -169
- data/lib/proguard4.7/src/proguard/DuplicateClassPrinter.java +0 -63
- data/lib/proguard4.7/src/proguard/FileWordReader.java +0 -55
- data/lib/proguard4.7/src/proguard/FullyQualifiedClassNameChecker.java +0 -191
- data/lib/proguard4.7/src/proguard/GPL.java +0 -197
- data/lib/proguard4.7/src/proguard/Initializer.java +0 -424
- data/lib/proguard4.7/src/proguard/InputReader.java +0 -233
- data/lib/proguard4.7/src/proguard/KeepClassMemberChecker.java +0 -87
- data/lib/proguard4.7/src/proguard/KeepClassSpecification.java +0 -137
- data/lib/proguard4.7/src/proguard/LineWordReader.java +0 -74
- data/lib/proguard4.7/src/proguard/MANIFEST.MF +0 -2
- data/lib/proguard4.7/src/proguard/MemberSpecification.java +0 -114
- data/lib/proguard4.7/src/proguard/OutputWriter.java +0 -296
- data/lib/proguard4.7/src/proguard/ParseException.java +0 -51
- data/lib/proguard4.7/src/proguard/ProGuard.java +0 -512
- data/lib/proguard4.7/src/proguard/SeedPrinter.java +0 -97
- data/lib/proguard4.7/src/proguard/SubclassedClassFilter.java +0 -62
- data/lib/proguard4.7/src/proguard/Targeter.java +0 -88
- data/lib/proguard4.7/src/proguard/UpToDateChecker.java +0 -232
- data/lib/proguard4.7/src/proguard/WordReader.java +0 -387
- data/lib/proguard4.7/src/proguard/ant/ClassPathElement.java +0 -191
- data/lib/proguard4.7/src/proguard/ant/ClassSpecificationElement.java +0 -258
- data/lib/proguard4.7/src/proguard/ant/ConfigurationElement.java +0 -53
- data/lib/proguard4.7/src/proguard/ant/ConfigurationTask.java +0 -441
- data/lib/proguard4.7/src/proguard/ant/FilterElement.java +0 -85
- data/lib/proguard4.7/src/proguard/ant/KeepSpecificationElement.java +0 -87
- data/lib/proguard4.7/src/proguard/ant/MemberSpecificationElement.java +0 -218
- data/lib/proguard4.7/src/proguard/ant/ProGuardTask.java +0 -352
- data/lib/proguard4.7/src/proguard/ant/package.html +0 -3
- data/lib/proguard4.7/src/proguard/ant/task.properties +0 -2
- data/lib/proguard4.7/src/proguard/classfile/ClassConstants.java +0 -316
- data/lib/proguard4.7/src/proguard/classfile/ClassPool.java +0 -152
- data/lib/proguard4.7/src/proguard/classfile/Clazz.java +0 -261
- data/lib/proguard4.7/src/proguard/classfile/Field.java +0 -32
- data/lib/proguard4.7/src/proguard/classfile/LibraryClass.java +0 -548
- data/lib/proguard4.7/src/proguard/classfile/LibraryField.java +0 -77
- data/lib/proguard4.7/src/proguard/classfile/LibraryMember.java +0 -108
- data/lib/proguard4.7/src/proguard/classfile/LibraryMethod.java +0 -83
- data/lib/proguard4.7/src/proguard/classfile/Member.java +0 -57
- data/lib/proguard4.7/src/proguard/classfile/Method.java +0 -32
- data/lib/proguard4.7/src/proguard/classfile/ProgramClass.java +0 -572
- data/lib/proguard4.7/src/proguard/classfile/ProgramField.java +0 -93
- data/lib/proguard4.7/src/proguard/classfile/ProgramMember.java +0 -168
- data/lib/proguard4.7/src/proguard/classfile/ProgramMethod.java +0 -99
- data/lib/proguard4.7/src/proguard/classfile/VisitorAccepter.java +0 -47
- data/lib/proguard4.7/src/proguard/classfile/attribute/Attribute.java +0 -142
- data/lib/proguard4.7/src/proguard/classfile/attribute/BootstrapMethodInfo.java +0 -89
- data/lib/proguard4.7/src/proguard/classfile/attribute/BootstrapMethodsAttribute.java +0 -95
- data/lib/proguard4.7/src/proguard/classfile/attribute/CodeAttribute.java +0 -202
- data/lib/proguard4.7/src/proguard/classfile/attribute/ConstantValueAttribute.java +0 -62
- data/lib/proguard4.7/src/proguard/classfile/attribute/DeprecatedAttribute.java +0 -66
- data/lib/proguard4.7/src/proguard/classfile/attribute/EnclosingMethodAttribute.java +0 -132
- data/lib/proguard4.7/src/proguard/classfile/attribute/ExceptionInfo.java +0 -100
- data/lib/proguard4.7/src/proguard/classfile/attribute/ExceptionsAttribute.java +0 -80
- data/lib/proguard4.7/src/proguard/classfile/attribute/InnerClassesAttribute.java +0 -80
- data/lib/proguard4.7/src/proguard/classfile/attribute/InnerClassesInfo.java +0 -119
- data/lib/proguard4.7/src/proguard/classfile/attribute/LineNumberInfo.java +0 -50
- data/lib/proguard4.7/src/proguard/classfile/attribute/LineNumberTableAttribute.java +0 -100
- data/lib/proguard4.7/src/proguard/classfile/attribute/LocalVariableInfo.java +0 -99
- data/lib/proguard4.7/src/proguard/classfile/attribute/LocalVariableTableAttribute.java +0 -79
- data/lib/proguard4.7/src/proguard/classfile/attribute/LocalVariableTypeInfo.java +0 -107
- data/lib/proguard4.7/src/proguard/classfile/attribute/LocalVariableTypeTableAttribute.java +0 -79
- data/lib/proguard4.7/src/proguard/classfile/attribute/SignatureAttribute.java +0 -100
- data/lib/proguard4.7/src/proguard/classfile/attribute/SourceDirAttribute.java +0 -62
- data/lib/proguard4.7/src/proguard/classfile/attribute/SourceFileAttribute.java +0 -62
- data/lib/proguard4.7/src/proguard/classfile/attribute/SyntheticAttribute.java +0 -66
- data/lib/proguard4.7/src/proguard/classfile/attribute/UnknownAttribute.java +0 -82
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/Annotation.java +0 -143
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/AnnotationDefaultAttribute.java +0 -73
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/AnnotationElementValue.java +0 -76
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/AnnotationsAttribute.java +0 -100
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/ArrayElementValue.java +0 -82
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/ClassElementValue.java +0 -95
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/ConstantElementValue.java +0 -71
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/ElementValue.java +0 -126
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/EnumConstantElementValue.java +0 -99
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/ParameterAnnotationsAttribute.java +0 -83
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/RuntimeInvisibleAnnotationsAttribute.java +0 -70
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/RuntimeInvisibleParameterAnnotationsAttribute.java +0 -62
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/RuntimeVisibleAnnotationsAttribute.java +0 -70
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/RuntimeVisibleParameterAnnotationsAttribute.java +0 -62
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/package.html +0 -4
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/AllAnnotationVisitor.java +0 -100
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/AnnotatedClassVisitor.java +0 -62
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/AnnotationToMemberVisitor.java +0 -62
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/AnnotationTypeFilter.java +0 -102
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/AnnotationVisitor.java +0 -40
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/ElementValueVisitor.java +0 -51
- data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/package.html +0 -3
- data/lib/proguard4.7/src/proguard/classfile/attribute/package.html +0 -3
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/DoubleType.java +0 -66
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/FloatType.java +0 -66
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/FullFrame.java +0 -202
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/IntegerType.java +0 -66
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/LessZeroFrame.java +0 -103
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/LongType.java +0 -66
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/MoreZeroFrame.java +0 -161
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/NullType.java +0 -66
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/ObjectType.java +0 -107
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/SameOneFrame.java +0 -115
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/SameZeroFrame.java +0 -74
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/StackMapAttribute.java +0 -91
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/StackMapFrame.java +0 -117
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/StackMapTableAttribute.java +0 -93
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/TopType.java +0 -66
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/UninitializedThisType.java +0 -66
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/UninitializedType.java +0 -106
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/VerificationType.java +0 -103
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/VerificationTypeFactory.java +0 -112
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/visitor/StackMapFrameVisitor.java +0 -40
- data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/visitor/VerificationTypeVisitor.java +0 -65
- data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/AllAttributeVisitor.java +0 -117
- data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/AllBootstrapMethodInfoVisitor.java +0 -55
- data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/AllExceptionInfoVisitor.java +0 -55
- data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/AllInnerClassesInfoVisitor.java +0 -55
- data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/AttributeNameFilter.java +0 -368
- data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/AttributeVisitor.java +0 -90
- data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/BootstrapMethodInfoVisitor.java +0 -40
- data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/ExceptionInfoVisitor.java +0 -37
- data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/InnerClassesInfoVisitor.java +0 -38
- data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/LineNumberInfoVisitor.java +0 -38
- data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/LocalVariableInfoVisitor.java +0 -38
- data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/LocalVariableTypeInfoVisitor.java +0 -38
- data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/MultiAttributeVisitor.java +0 -365
- data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/NonEmptyAttributeFilter.java +0 -293
- data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/RequiredAttributeFilter.java +0 -360
- data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/StackSizeComputer.java +0 -378
- data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/package.html +0 -3
- data/lib/proguard4.7/src/proguard/classfile/constant/ClassConstant.java +0 -105
- data/lib/proguard4.7/src/proguard/classfile/constant/Constant.java +0 -68
- data/lib/proguard4.7/src/proguard/classfile/constant/DoubleConstant.java +0 -82
- data/lib/proguard4.7/src/proguard/classfile/constant/FieldrefConstant.java +0 -71
- data/lib/proguard4.7/src/proguard/classfile/constant/FloatConstant.java +0 -82
- data/lib/proguard4.7/src/proguard/classfile/constant/IntegerConstant.java +0 -82
- data/lib/proguard4.7/src/proguard/classfile/constant/InterfaceMethodrefConstant.java +0 -71
- data/lib/proguard4.7/src/proguard/classfile/constant/InvokeDynamicConstant.java +0 -148
- data/lib/proguard4.7/src/proguard/classfile/constant/LongConstant.java +0 -82
- data/lib/proguard4.7/src/proguard/classfile/constant/MethodHandleConstant.java +0 -124
- data/lib/proguard4.7/src/proguard/classfile/constant/MethodTypeConstant.java +0 -93
- data/lib/proguard4.7/src/proguard/classfile/constant/MethodrefConstant.java +0 -71
- data/lib/proguard4.7/src/proguard/classfile/constant/NameAndTypeConstant.java +0 -119
- data/lib/proguard4.7/src/proguard/classfile/constant/RefConstant.java +0 -130
- data/lib/proguard4.7/src/proguard/classfile/constant/StringConstant.java +0 -135
- data/lib/proguard4.7/src/proguard/classfile/constant/Utf8Constant.java +0 -285
- data/lib/proguard4.7/src/proguard/classfile/constant/visitor/AllConstantVisitor.java +0 -53
- data/lib/proguard4.7/src/proguard/classfile/constant/visitor/BootstrapMethodHandleTraveler.java +0 -100
- data/lib/proguard4.7/src/proguard/classfile/constant/visitor/ConstantTagFilter.java +0 -86
- data/lib/proguard4.7/src/proguard/classfile/constant/visitor/ConstantVisitor.java +0 -49
- data/lib/proguard4.7/src/proguard/classfile/constant/visitor/ExceptClassConstantFilter.java +0 -69
- data/lib/proguard4.7/src/proguard/classfile/constant/visitor/MethodrefTraveler.java +0 -60
- data/lib/proguard4.7/src/proguard/classfile/constant/visitor/package.html +0 -3
- data/lib/proguard4.7/src/proguard/classfile/editor/AccessFixer.java +0 -180
- data/lib/proguard4.7/src/proguard/classfile/editor/AnnotationAdder.java +0 -153
- data/lib/proguard4.7/src/proguard/classfile/editor/AnnotationsAttributeEditor.java +0 -67
- data/lib/proguard4.7/src/proguard/classfile/editor/AttributeAdder.java +0 -457
- data/lib/proguard4.7/src/proguard/classfile/editor/AttributeSorter.java +0 -89
- data/lib/proguard4.7/src/proguard/classfile/editor/AttributesEditor.java +0 -269
- data/lib/proguard4.7/src/proguard/classfile/editor/BridgeMethodFixer.java +0 -117
- data/lib/proguard4.7/src/proguard/classfile/editor/ClassEditor.java +0 -255
- data/lib/proguard4.7/src/proguard/classfile/editor/ClassElementSorter.java +0 -52
- data/lib/proguard4.7/src/proguard/classfile/editor/ClassMemberSorter.java +0 -69
- data/lib/proguard4.7/src/proguard/classfile/editor/ClassReferenceFixer.java +0 -546
- data/lib/proguard4.7/src/proguard/classfile/editor/CodeAttributeComposer.java +0 -843
- data/lib/proguard4.7/src/proguard/classfile/editor/CodeAttributeEditor.java +0 -1104
- data/lib/proguard4.7/src/proguard/classfile/editor/CodeAttributeEditorResetter.java +0 -60
- data/lib/proguard4.7/src/proguard/classfile/editor/ComparableConstant.java +0 -249
- data/lib/proguard4.7/src/proguard/classfile/editor/ConstantAdder.java +0 -239
- data/lib/proguard4.7/src/proguard/classfile/editor/ConstantPoolEditor.java +0 -782
- data/lib/proguard4.7/src/proguard/classfile/editor/ConstantPoolRemapper.java +0 -662
- data/lib/proguard4.7/src/proguard/classfile/editor/ConstantPoolShrinker.java +0 -578
- data/lib/proguard4.7/src/proguard/classfile/editor/ConstantPoolSorter.java +0 -123
- data/lib/proguard4.7/src/proguard/classfile/editor/ElementValueAdder.java +0 -217
- data/lib/proguard4.7/src/proguard/classfile/editor/ElementValuesEditor.java +0 -238
- data/lib/proguard4.7/src/proguard/classfile/editor/ExceptionAdder.java +0 -65
- data/lib/proguard4.7/src/proguard/classfile/editor/ExceptionInfoAdder.java +0 -67
- data/lib/proguard4.7/src/proguard/classfile/editor/ExceptionsAttributeEditor.java +0 -68
- data/lib/proguard4.7/src/proguard/classfile/editor/InnerClassesAccessFixer.java +0 -83
- data/lib/proguard4.7/src/proguard/classfile/editor/InstructionAdder.java +0 -76
- data/lib/proguard4.7/src/proguard/classfile/editor/InstructionWriter.java +0 -278
- data/lib/proguard4.7/src/proguard/classfile/editor/InterfaceAdder.java +0 -62
- data/lib/proguard4.7/src/proguard/classfile/editor/InterfaceSorter.java +0 -152
- data/lib/proguard4.7/src/proguard/classfile/editor/InterfacesEditor.java +0 -122
- data/lib/proguard4.7/src/proguard/classfile/editor/LineNumberInfoAdder.java +0 -59
- data/lib/proguard4.7/src/proguard/classfile/editor/LineNumberTableAttributeEditor.java +0 -67
- data/lib/proguard4.7/src/proguard/classfile/editor/LocalVariableInfoAdder.java +0 -67
- data/lib/proguard4.7/src/proguard/classfile/editor/LocalVariableTableAttributeEditor.java +0 -67
- data/lib/proguard4.7/src/proguard/classfile/editor/LocalVariableTypeInfoAdder.java +0 -68
- data/lib/proguard4.7/src/proguard/classfile/editor/LocalVariableTypeTableAttributeEditor.java +0 -68
- data/lib/proguard4.7/src/proguard/classfile/editor/MemberAdder.java +0 -288
- data/lib/proguard4.7/src/proguard/classfile/editor/MemberReferenceFixer.java +0 -447
- data/lib/proguard4.7/src/proguard/classfile/editor/MethodInvocationFixer.java +0 -243
- data/lib/proguard4.7/src/proguard/classfile/editor/NameAndTypeShrinker.java +0 -188
- data/lib/proguard4.7/src/proguard/classfile/editor/NamedAttributeDeleter.java +0 -54
- data/lib/proguard4.7/src/proguard/classfile/editor/ParameterAnnotationsAttributeEditor.java +0 -71
- data/lib/proguard4.7/src/proguard/classfile/editor/StackSizeUpdater.java +0 -54
- data/lib/proguard4.7/src/proguard/classfile/editor/SubclassAdder.java +0 -59
- data/lib/proguard4.7/src/proguard/classfile/editor/SubclassToAdder.java +0 -60
- data/lib/proguard4.7/src/proguard/classfile/editor/Utf8Shrinker.java +0 -455
- data/lib/proguard4.7/src/proguard/classfile/editor/VariableCleaner.java +0 -267
- data/lib/proguard4.7/src/proguard/classfile/editor/VariableEditor.java +0 -130
- data/lib/proguard4.7/src/proguard/classfile/editor/VariableRemapper.java +0 -156
- data/lib/proguard4.7/src/proguard/classfile/editor/VariableSizeUpdater.java +0 -105
- data/lib/proguard4.7/src/proguard/classfile/editor/package.html +0 -3
- data/lib/proguard4.7/src/proguard/classfile/instruction/BranchInstruction.java +0 -180
- data/lib/proguard4.7/src/proguard/classfile/instruction/ConstantInstruction.java +0 -309
- data/lib/proguard4.7/src/proguard/classfile/instruction/Instruction.java +0 -920
- data/lib/proguard4.7/src/proguard/classfile/instruction/InstructionConstants.java +0 -449
- data/lib/proguard4.7/src/proguard/classfile/instruction/InstructionFactory.java +0 -300
- data/lib/proguard4.7/src/proguard/classfile/instruction/InstructionUtil.java +0 -67
- data/lib/proguard4.7/src/proguard/classfile/instruction/LookUpSwitchInstruction.java +0 -135
- data/lib/proguard4.7/src/proguard/classfile/instruction/SimpleInstruction.java +0 -255
- data/lib/proguard4.7/src/proguard/classfile/instruction/SwitchInstruction.java +0 -83
- data/lib/proguard4.7/src/proguard/classfile/instruction/TableSwitchInstruction.java +0 -139
- data/lib/proguard4.7/src/proguard/classfile/instruction/VariableInstruction.java +0 -372
- data/lib/proguard4.7/src/proguard/classfile/instruction/package.html +0 -9
- data/lib/proguard4.7/src/proguard/classfile/instruction/visitor/AllInstructionVisitor.java +0 -56
- data/lib/proguard4.7/src/proguard/classfile/instruction/visitor/InstructionCounter.java +0 -59
- data/lib/proguard4.7/src/proguard/classfile/instruction/visitor/InstructionVisitor.java +0 -42
- data/lib/proguard4.7/src/proguard/classfile/instruction/visitor/MultiInstructionVisitor.java +0 -131
- data/lib/proguard4.7/src/proguard/classfile/instruction/visitor/package.html +0 -3
- data/lib/proguard4.7/src/proguard/classfile/io/LibraryClassReader.java +0 -383
- data/lib/proguard4.7/src/proguard/classfile/io/ProgramClassReader.java +0 -919
- data/lib/proguard4.7/src/proguard/classfile/io/ProgramClassWriter.java +0 -735
- data/lib/proguard4.7/src/proguard/classfile/io/RuntimeDataInput.java +0 -223
- data/lib/proguard4.7/src/proguard/classfile/io/RuntimeDataOutput.java +0 -224
- data/lib/proguard4.7/src/proguard/classfile/io/package.html +0 -3
- data/lib/proguard4.7/src/proguard/classfile/package.html +0 -15
- data/lib/proguard4.7/src/proguard/classfile/util/AccessUtil.java +0 -105
- data/lib/proguard4.7/src/proguard/classfile/util/ClassReferenceInitializer.java +0 -559
- data/lib/proguard4.7/src/proguard/classfile/util/ClassSubHierarchyInitializer.java +0 -77
- data/lib/proguard4.7/src/proguard/classfile/util/ClassSuperHierarchyInitializer.java +0 -163
- data/lib/proguard4.7/src/proguard/classfile/util/ClassUtil.java +0 -1227
- data/lib/proguard4.7/src/proguard/classfile/util/DescriptorClassEnumeration.java +0 -236
- data/lib/proguard4.7/src/proguard/classfile/util/DynamicClassReferenceInitializer.java +0 -485
- data/lib/proguard4.7/src/proguard/classfile/util/DynamicMemberReferenceInitializer.java +0 -944
- data/lib/proguard4.7/src/proguard/classfile/util/ExternalTypeEnumeration.java +0 -106
- data/lib/proguard4.7/src/proguard/classfile/util/InstructionSequenceMatcher.java +0 -754
- data/lib/proguard4.7/src/proguard/classfile/util/InternalTypeEnumeration.java +0 -204
- data/lib/proguard4.7/src/proguard/classfile/util/MemberFinder.java +0 -197
- data/lib/proguard4.7/src/proguard/classfile/util/MethodLinker.java +0 -160
- data/lib/proguard4.7/src/proguard/classfile/util/SimplifiedVisitor.java +0 -834
- data/lib/proguard4.7/src/proguard/classfile/util/StringReferenceInitializer.java +0 -90
- data/lib/proguard4.7/src/proguard/classfile/util/StringSharer.java +0 -172
- data/lib/proguard4.7/src/proguard/classfile/util/WarningPrinter.java +0 -136
- data/lib/proguard4.7/src/proguard/classfile/util/package.html +0 -3
- data/lib/proguard4.7/src/proguard/classfile/visitor/AllClassVisitor.java +0 -47
- data/lib/proguard4.7/src/proguard/classfile/visitor/AllFieldVisitor.java +0 -55
- data/lib/proguard4.7/src/proguard/classfile/visitor/AllMemberVisitor.java +0 -57
- data/lib/proguard4.7/src/proguard/classfile/visitor/AllMethodVisitor.java +0 -55
- data/lib/proguard4.7/src/proguard/classfile/visitor/BottomClassFilter.java +0 -69
- data/lib/proguard4.7/src/proguard/classfile/visitor/ClassAccessFilter.java +0 -88
- data/lib/proguard4.7/src/proguard/classfile/visitor/ClassCleaner.java +0 -275
- data/lib/proguard4.7/src/proguard/classfile/visitor/ClassCollector.java +0 -58
- data/lib/proguard4.7/src/proguard/classfile/visitor/ClassCounter.java +0 -56
- data/lib/proguard4.7/src/proguard/classfile/visitor/ClassHierarchyTraveler.java +0 -91
- data/lib/proguard4.7/src/proguard/classfile/visitor/ClassNameFilter.java +0 -112
- data/lib/proguard4.7/src/proguard/classfile/visitor/ClassPoolFiller.java +0 -55
- data/lib/proguard4.7/src/proguard/classfile/visitor/ClassPoolVisitor.java +0 -37
- data/lib/proguard4.7/src/proguard/classfile/visitor/ClassPresenceFilter.java +0 -93
- data/lib/proguard4.7/src/proguard/classfile/visitor/ClassPrinter.java +0 -1011
- data/lib/proguard4.7/src/proguard/classfile/visitor/ClassVersionFilter.java +0 -85
- data/lib/proguard4.7/src/proguard/classfile/visitor/ClassVersionSetter.java +0 -83
- data/lib/proguard4.7/src/proguard/classfile/visitor/ClassVisitor.java +0 -36
- data/lib/proguard4.7/src/proguard/classfile/visitor/ConcreteClassDownTraveler.java +0 -100
- data/lib/proguard4.7/src/proguard/classfile/visitor/DotClassClassVisitor.java +0 -89
- data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptClassFilter.java +0 -69
- data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptClassesFilter.java +0 -90
- data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptionCounter.java +0 -52
- data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptionExcludedOffsetFilter.java +0 -64
- data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptionHandlerConstantVisitor.java +0 -62
- data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptionHandlerFilter.java +0 -70
- data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptionOffsetFilter.java +0 -64
- data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptionRangeFilter.java +0 -68
- data/lib/proguard4.7/src/proguard/classfile/visitor/ImplementedClassConstantFilter.java +0 -69
- data/lib/proguard4.7/src/proguard/classfile/visitor/ImplementedClassFilter.java +0 -71
- data/lib/proguard4.7/src/proguard/classfile/visitor/ImplementingClassConstantFilter.java +0 -70
- data/lib/proguard4.7/src/proguard/classfile/visitor/LibraryClassFilter.java +0 -60
- data/lib/proguard4.7/src/proguard/classfile/visitor/LibraryMemberFilter.java +0 -73
- data/lib/proguard4.7/src/proguard/classfile/visitor/MemberAccessFilter.java +0 -122
- data/lib/proguard4.7/src/proguard/classfile/visitor/MemberClassAccessFilter.java +0 -106
- data/lib/proguard4.7/src/proguard/classfile/visitor/MemberCollector.java +0 -59
- data/lib/proguard4.7/src/proguard/classfile/visitor/MemberCounter.java +0 -72
- data/lib/proguard4.7/src/proguard/classfile/visitor/MemberDescriptorFilter.java +0 -113
- data/lib/proguard4.7/src/proguard/classfile/visitor/MemberNameFilter.java +0 -113
- data/lib/proguard4.7/src/proguard/classfile/visitor/MemberToClassVisitor.java +0 -90
- data/lib/proguard4.7/src/proguard/classfile/visitor/MemberVisitor.java +0 -40
- data/lib/proguard4.7/src/proguard/classfile/visitor/MethodImplementationFilter.java +0 -70
- data/lib/proguard4.7/src/proguard/classfile/visitor/MethodImplementationTraveler.java +0 -128
- data/lib/proguard4.7/src/proguard/classfile/visitor/MultiClassPoolVisitor.java +0 -88
- data/lib/proguard4.7/src/proguard/classfile/visitor/MultiClassVisitor.java +0 -97
- data/lib/proguard4.7/src/proguard/classfile/visitor/MultiMemberVisitor.java +0 -113
- data/lib/proguard4.7/src/proguard/classfile/visitor/NamedClassVisitor.java +0 -49
- data/lib/proguard4.7/src/proguard/classfile/visitor/NamedFieldVisitor.java +0 -61
- data/lib/proguard4.7/src/proguard/classfile/visitor/NamedMethodVisitor.java +0 -61
- data/lib/proguard4.7/src/proguard/classfile/visitor/ProgramClassFilter.java +0 -60
- data/lib/proguard4.7/src/proguard/classfile/visitor/ProgramMemberFilter.java +0 -73
- data/lib/proguard4.7/src/proguard/classfile/visitor/ReferencedClassVisitor.java +0 -255
- data/lib/proguard4.7/src/proguard/classfile/visitor/ReferencedMemberVisitor.java +0 -73
- data/lib/proguard4.7/src/proguard/classfile/visitor/SimilarMemberVisitor.java +0 -125
- data/lib/proguard4.7/src/proguard/classfile/visitor/SimpleClassPrinter.java +0 -167
- data/lib/proguard4.7/src/proguard/classfile/visitor/SubclassFilter.java +0 -91
- data/lib/proguard4.7/src/proguard/classfile/visitor/SubclassTraveler.java +0 -60
- data/lib/proguard4.7/src/proguard/classfile/visitor/VariableClassVisitor.java +0 -78
- data/lib/proguard4.7/src/proguard/classfile/visitor/VariableMemberVisitor.java +0 -96
- data/lib/proguard4.7/src/proguard/classfile/visitor/package.html +0 -40
- data/lib/proguard4.7/src/proguard/evaluation/BasicBranchUnit.java +0 -126
- data/lib/proguard4.7/src/proguard/evaluation/BasicInvocationUnit.java +0 -425
- data/lib/proguard4.7/src/proguard/evaluation/BranchUnit.java +0 -63
- data/lib/proguard4.7/src/proguard/evaluation/ClassConstantValueFactory.java +0 -53
- data/lib/proguard4.7/src/proguard/evaluation/ConstantValueFactory.java +0 -113
- data/lib/proguard4.7/src/proguard/evaluation/InvocationUnit.java +0 -62
- data/lib/proguard4.7/src/proguard/evaluation/Processor.java +0 -908
- data/lib/proguard4.7/src/proguard/evaluation/Stack.java +0 -560
- data/lib/proguard4.7/src/proguard/evaluation/TracedStack.java +0 -342
- data/lib/proguard4.7/src/proguard/evaluation/TracedVariables.java +0 -199
- data/lib/proguard4.7/src/proguard/evaluation/Variables.java +0 -347
- data/lib/proguard4.7/src/proguard/evaluation/value/Category1Value.java +0 -41
- data/lib/proguard4.7/src/proguard/evaluation/value/Category2Value.java +0 -41
- data/lib/proguard4.7/src/proguard/evaluation/value/ComparisonValue.java +0 -69
- data/lib/proguard4.7/src/proguard/evaluation/value/CompositeDoubleValue.java +0 -81
- data/lib/proguard4.7/src/proguard/evaluation/value/CompositeFloatValue.java +0 -81
- data/lib/proguard4.7/src/proguard/evaluation/value/CompositeIntegerValue.java +0 -87
- data/lib/proguard4.7/src/proguard/evaluation/value/CompositeLongValue.java +0 -87
- data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedByteValue.java +0 -64
- data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedCharacterValue.java +0 -64
- data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedDoubleValue.java +0 -64
- data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedFloatValue.java +0 -64
- data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedIntegerValue.java +0 -64
- data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedLongValue.java +0 -64
- data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedShortValue.java +0 -64
- data/lib/proguard4.7/src/proguard/evaluation/value/DoubleValue.java +0 -359
- data/lib/proguard4.7/src/proguard/evaluation/value/FloatValue.java +0 -359
- data/lib/proguard4.7/src/proguard/evaluation/value/IdentifiedDoubleValue.java +0 -67
- data/lib/proguard4.7/src/proguard/evaluation/value/IdentifiedFloatValue.java +0 -67
- data/lib/proguard4.7/src/proguard/evaluation/value/IdentifiedIntegerValue.java +0 -67
- data/lib/proguard4.7/src/proguard/evaluation/value/IdentifiedLongValue.java +0 -67
- data/lib/proguard4.7/src/proguard/evaluation/value/IdentifiedReferenceValue.java +0 -102
- data/lib/proguard4.7/src/proguard/evaluation/value/IdentifiedValueFactory.java +0 -75
- data/lib/proguard4.7/src/proguard/evaluation/value/InstructionOffsetValue.java +0 -307
- data/lib/proguard4.7/src/proguard/evaluation/value/IntegerValue.java +0 -1002
- data/lib/proguard4.7/src/proguard/evaluation/value/LongValue.java +0 -554
- data/lib/proguard4.7/src/proguard/evaluation/value/NegatedDoubleValue.java +0 -71
- data/lib/proguard4.7/src/proguard/evaluation/value/NegatedFloatValue.java +0 -71
- data/lib/proguard4.7/src/proguard/evaluation/value/NegatedIntegerValue.java +0 -71
- data/lib/proguard4.7/src/proguard/evaluation/value/NegatedLongValue.java +0 -71
- data/lib/proguard4.7/src/proguard/evaluation/value/ParticularDoubleValue.java +0 -216
- data/lib/proguard4.7/src/proguard/evaluation/value/ParticularFloatValue.java +0 -216
- data/lib/proguard4.7/src/proguard/evaluation/value/ParticularIntegerValue.java +0 -383
- data/lib/proguard4.7/src/proguard/evaluation/value/ParticularLongValue.java +0 -271
- data/lib/proguard4.7/src/proguard/evaluation/value/ReferenceValue.java +0 -540
- data/lib/proguard4.7/src/proguard/evaluation/value/SpecificDoubleValue.java +0 -186
- data/lib/proguard4.7/src/proguard/evaluation/value/SpecificFloatValue.java +0 -186
- data/lib/proguard4.7/src/proguard/evaluation/value/SpecificIntegerValue.java +0 -354
- data/lib/proguard4.7/src/proguard/evaluation/value/SpecificLongValue.java +0 -259
- data/lib/proguard4.7/src/proguard/evaluation/value/SpecificValueFactory.java +0 -97
- data/lib/proguard4.7/src/proguard/evaluation/value/TopValue.java +0 -79
- data/lib/proguard4.7/src/proguard/evaluation/value/UnknownDoubleValue.java +0 -125
- data/lib/proguard4.7/src/proguard/evaluation/value/UnknownFloatValue.java +0 -125
- data/lib/proguard4.7/src/proguard/evaluation/value/UnknownIntegerValue.java +0 -216
- data/lib/proguard4.7/src/proguard/evaluation/value/UnknownLongValue.java +0 -160
- data/lib/proguard4.7/src/proguard/evaluation/value/Value.java +0 -169
- data/lib/proguard4.7/src/proguard/evaluation/value/ValueFactory.java +0 -193
- data/lib/proguard4.7/src/proguard/evaluation/value/package.html +0 -3
- data/lib/proguard4.7/src/proguard/gui/ClassPathPanel.java +0 -441
- data/lib/proguard4.7/src/proguard/gui/ClassSpecificationDialog.java +0 -546
- data/lib/proguard4.7/src/proguard/gui/ClassSpecificationsPanel.java +0 -231
- data/lib/proguard4.7/src/proguard/gui/ExtensionFileFilter.java +0 -78
- data/lib/proguard4.7/src/proguard/gui/FilterBuilder.java +0 -208
- data/lib/proguard4.7/src/proguard/gui/FilterDialog.java +0 -320
- data/lib/proguard4.7/src/proguard/gui/GUIResources.java +0 -56
- data/lib/proguard4.7/src/proguard/gui/GUIResources.properties +0 -643
- data/lib/proguard4.7/src/proguard/gui/KeepSpecificationsPanel.java +0 -81
- data/lib/proguard4.7/src/proguard/gui/ListPanel.java +0 -341
- data/lib/proguard4.7/src/proguard/gui/MANIFEST.MF +0 -3
- data/lib/proguard4.7/src/proguard/gui/MemberSpecificationDialog.java +0 -509
- data/lib/proguard4.7/src/proguard/gui/MemberSpecificationsPanel.java +0 -304
- data/lib/proguard4.7/src/proguard/gui/MessageDialogRunnable.java +0 -90
- data/lib/proguard4.7/src/proguard/gui/OptimizationsDialog.java +0 -251
- data/lib/proguard4.7/src/proguard/gui/ProGuardGUI.java +0 -1777
- data/lib/proguard4.7/src/proguard/gui/ProGuardRunnable.java +0 -154
- data/lib/proguard4.7/src/proguard/gui/ReTraceRunnable.java +0 -149
- data/lib/proguard4.7/src/proguard/gui/SwingUtil.java +0 -82
- data/lib/proguard4.7/src/proguard/gui/TabbedPane.java +0 -229
- data/lib/proguard4.7/src/proguard/gui/TextAreaOutputStream.java +0 -81
- data/lib/proguard4.7/src/proguard/gui/arrow.gif +0 -0
- data/lib/proguard4.7/src/proguard/gui/boilerplate.pro +0 -410
- data/lib/proguard4.7/src/proguard/gui/default.pro +0 -318
- data/lib/proguard4.7/src/proguard/gui/package.html +0 -3
- data/lib/proguard4.7/src/proguard/gui/splash/BufferedSprite.java +0 -145
- data/lib/proguard4.7/src/proguard/gui/splash/CircleSprite.java +0 -74
- data/lib/proguard4.7/src/proguard/gui/splash/ClipSprite.java +0 -85
- data/lib/proguard4.7/src/proguard/gui/splash/ColorSprite.java +0 -65
- data/lib/proguard4.7/src/proguard/gui/splash/CompositeSprite.java +0 -56
- data/lib/proguard4.7/src/proguard/gui/splash/ConstantColor.java +0 -51
- data/lib/proguard4.7/src/proguard/gui/splash/ConstantDouble.java +0 -49
- data/lib/proguard4.7/src/proguard/gui/splash/ConstantFont.java +0 -46
- data/lib/proguard4.7/src/proguard/gui/splash/ConstantInt.java +0 -49
- data/lib/proguard4.7/src/proguard/gui/splash/ConstantString.java +0 -49
- data/lib/proguard4.7/src/proguard/gui/splash/ConstantTiming.java +0 -57
- data/lib/proguard4.7/src/proguard/gui/splash/FontSprite.java +0 -65
- data/lib/proguard4.7/src/proguard/gui/splash/ImageSprite.java +0 -76
- data/lib/proguard4.7/src/proguard/gui/splash/LinearColor.java +0 -72
- data/lib/proguard4.7/src/proguard/gui/splash/LinearDouble.java +0 -55
- data/lib/proguard4.7/src/proguard/gui/splash/LinearInt.java +0 -55
- data/lib/proguard4.7/src/proguard/gui/splash/LinearTiming.java +0 -55
- data/lib/proguard4.7/src/proguard/gui/splash/OverrideGraphics2D.java +0 -598
- data/lib/proguard4.7/src/proguard/gui/splash/RectangleSprite.java +0 -114
- data/lib/proguard4.7/src/proguard/gui/splash/SawToothTiming.java +0 -53
- data/lib/proguard4.7/src/proguard/gui/splash/ShadowedSprite.java +0 -109
- data/lib/proguard4.7/src/proguard/gui/splash/SineTiming.java +0 -53
- data/lib/proguard4.7/src/proguard/gui/splash/SmoothTiming.java +0 -66
- data/lib/proguard4.7/src/proguard/gui/splash/SplashPanel.java +0 -235
- data/lib/proguard4.7/src/proguard/gui/splash/Sprite.java +0 -41
- data/lib/proguard4.7/src/proguard/gui/splash/TextSprite.java +0 -89
- data/lib/proguard4.7/src/proguard/gui/splash/TimeSwitchSprite.java +0 -75
- data/lib/proguard4.7/src/proguard/gui/splash/Timing.java +0 -34
- data/lib/proguard4.7/src/proguard/gui/splash/TypeWriterString.java +0 -71
- data/lib/proguard4.7/src/proguard/gui/splash/VariableColor.java +0 -36
- data/lib/proguard4.7/src/proguard/gui/splash/VariableDouble.java +0 -34
- data/lib/proguard4.7/src/proguard/gui/splash/VariableFont.java +0 -36
- data/lib/proguard4.7/src/proguard/gui/splash/VariableInt.java +0 -34
- data/lib/proguard4.7/src/proguard/gui/splash/VariableSizeFont.java +0 -65
- data/lib/proguard4.7/src/proguard/gui/splash/VariableString.java +0 -34
- data/lib/proguard4.7/src/proguard/gui/splash/package.html +0 -4
- data/lib/proguard4.7/src/proguard/gui/vtitle.png +0 -0
- data/lib/proguard4.7/src/proguard/io/CascadingDataEntryWriter.java +0 -94
- data/lib/proguard4.7/src/proguard/io/ClassFilter.java +0 -59
- data/lib/proguard4.7/src/proguard/io/ClassReader.java +0 -115
- data/lib/proguard4.7/src/proguard/io/ClassRewriter.java +0 -80
- data/lib/proguard4.7/src/proguard/io/DataEntry.java +0 -62
- data/lib/proguard4.7/src/proguard/io/DataEntryClassWriter.java +0 -85
- data/lib/proguard4.7/src/proguard/io/DataEntryCopier.java +0 -247
- data/lib/proguard4.7/src/proguard/io/DataEntryDirectoryFilter.java +0 -40
- data/lib/proguard4.7/src/proguard/io/DataEntryFilter.java +0 -38
- data/lib/proguard4.7/src/proguard/io/DataEntryNameFilter.java +0 -54
- data/lib/proguard4.7/src/proguard/io/DataEntryObfuscator.java +0 -150
- data/lib/proguard4.7/src/proguard/io/DataEntryParentFilter.java +0 -51
- data/lib/proguard4.7/src/proguard/io/DataEntryPump.java +0 -43
- data/lib/proguard4.7/src/proguard/io/DataEntryReader.java +0 -38
- data/lib/proguard4.7/src/proguard/io/DataEntryRenamer.java +0 -104
- data/lib/proguard4.7/src/proguard/io/DataEntryRewriter.java +0 -148
- data/lib/proguard4.7/src/proguard/io/DataEntryWriter.java +0 -73
- data/lib/proguard4.7/src/proguard/io/DirectoryFilter.java +0 -58
- data/lib/proguard4.7/src/proguard/io/DirectoryPump.java +0 -78
- data/lib/proguard4.7/src/proguard/io/DirectoryWriter.java +0 -165
- data/lib/proguard4.7/src/proguard/io/FileDataEntry.java +0 -96
- data/lib/proguard4.7/src/proguard/io/FilteredDataEntryReader.java +0 -90
- data/lib/proguard4.7/src/proguard/io/FilteredDataEntryWriter.java +0 -125
- data/lib/proguard4.7/src/proguard/io/Finisher.java +0 -37
- data/lib/proguard4.7/src/proguard/io/JarReader.java +0 -75
- data/lib/proguard4.7/src/proguard/io/JarWriter.java +0 -235
- data/lib/proguard4.7/src/proguard/io/ManifestRewriter.java +0 -216
- data/lib/proguard4.7/src/proguard/io/NameFilter.java +0 -83
- data/lib/proguard4.7/src/proguard/io/ParentDataEntryWriter.java +0 -75
- data/lib/proguard4.7/src/proguard/io/RenamedDataEntry.java +0 -83
- data/lib/proguard4.7/src/proguard/io/ZipDataEntry.java +0 -98
- data/lib/proguard4.7/src/proguard/io/package.html +0 -4
- data/lib/proguard4.7/src/proguard/obfuscate/AttributeShrinker.java +0 -120
- data/lib/proguard4.7/src/proguard/obfuscate/AttributeUsageMarker.java +0 -71
- data/lib/proguard4.7/src/proguard/obfuscate/ClassObfuscator.java +0 -533
- data/lib/proguard4.7/src/proguard/obfuscate/ClassRenamer.java +0 -109
- data/lib/proguard4.7/src/proguard/obfuscate/DictionaryNameFactory.java +0 -189
- data/lib/proguard4.7/src/proguard/obfuscate/MapCleaner.java +0 -57
- data/lib/proguard4.7/src/proguard/obfuscate/MappingKeeper.java +0 -177
- data/lib/proguard4.7/src/proguard/obfuscate/MappingPrinter.java +0 -147
- data/lib/proguard4.7/src/proguard/obfuscate/MappingProcessor.java +0 -79
- data/lib/proguard4.7/src/proguard/obfuscate/MappingReader.java +0 -199
- data/lib/proguard4.7/src/proguard/obfuscate/MemberNameCleaner.java +0 -60
- data/lib/proguard4.7/src/proguard/obfuscate/MemberNameCollector.java +0 -106
- data/lib/proguard4.7/src/proguard/obfuscate/MemberNameConflictFixer.java +0 -159
- data/lib/proguard4.7/src/proguard/obfuscate/MemberNameFilter.java +0 -120
- data/lib/proguard4.7/src/proguard/obfuscate/MemberObfuscator.java +0 -230
- data/lib/proguard4.7/src/proguard/obfuscate/MemberSpecialNameFilter.java +0 -101
- data/lib/proguard4.7/src/proguard/obfuscate/MultiMappingProcessor.java +0 -96
- data/lib/proguard4.7/src/proguard/obfuscate/NameFactory.java +0 -34
- data/lib/proguard4.7/src/proguard/obfuscate/NameFactoryResetter.java +0 -59
- data/lib/proguard4.7/src/proguard/obfuscate/NameMarker.java +0 -166
- data/lib/proguard4.7/src/proguard/obfuscate/NumericNameFactory.java +0 -49
- data/lib/proguard4.7/src/proguard/obfuscate/Obfuscator.java +0 -445
- data/lib/proguard4.7/src/proguard/obfuscate/ParameterNameMarker.java +0 -128
- data/lib/proguard4.7/src/proguard/obfuscate/SimpleNameFactory.java +0 -156
- data/lib/proguard4.7/src/proguard/obfuscate/SourceFileRenamer.java +0 -84
- data/lib/proguard4.7/src/proguard/obfuscate/SpecialNameFactory.java +0 -83
- data/lib/proguard4.7/src/proguard/obfuscate/package.html +0 -3
- data/lib/proguard4.7/src/proguard/optimize/BootstrapMethodArgumentShrinker.java +0 -103
- data/lib/proguard4.7/src/proguard/optimize/ChangedCodePrinter.java +0 -297
- data/lib/proguard4.7/src/proguard/optimize/ConstantMemberFilter.java +0 -77
- data/lib/proguard4.7/src/proguard/optimize/ConstantParameterFilter.java +0 -79
- data/lib/proguard4.7/src/proguard/optimize/DuplicateInitializerFixer.java +0 -215
- data/lib/proguard4.7/src/proguard/optimize/DuplicateInitializerInvocationFixer.java +0 -161
- data/lib/proguard4.7/src/proguard/optimize/KeepMarker.java +0 -95
- data/lib/proguard4.7/src/proguard/optimize/KeptClassFilter.java +0 -69
- data/lib/proguard4.7/src/proguard/optimize/KeptMemberFilter.java +0 -88
- data/lib/proguard4.7/src/proguard/optimize/MemberDescriptorSpecializer.java +0 -138
- data/lib/proguard4.7/src/proguard/optimize/MethodDescriptorShrinker.java +0 -317
- data/lib/proguard4.7/src/proguard/optimize/MethodStaticizer.java +0 -87
- data/lib/proguard4.7/src/proguard/optimize/OptimizationInfoMemberFilter.java +0 -94
- data/lib/proguard4.7/src/proguard/optimize/Optimizer.java +0 -963
- data/lib/proguard4.7/src/proguard/optimize/ParameterShrinker.java +0 -146
- data/lib/proguard4.7/src/proguard/optimize/TailRecursionSimplifier.java +0 -356
- data/lib/proguard4.7/src/proguard/optimize/WriteOnlyFieldFilter.java +0 -65
- data/lib/proguard4.7/src/proguard/optimize/evaluation/EvaluationShrinker.java +0 -2082
- data/lib/proguard4.7/src/proguard/optimize/evaluation/EvaluationSimplifier.java +0 -973
- data/lib/proguard4.7/src/proguard/optimize/evaluation/LivenessAnalyzer.java +0 -526
- data/lib/proguard4.7/src/proguard/optimize/evaluation/LoadingInvocationUnit.java +0 -195
- data/lib/proguard4.7/src/proguard/optimize/evaluation/PartialEvaluator.java +0 -1282
- data/lib/proguard4.7/src/proguard/optimize/evaluation/StoringInvocationUnit.java +0 -207
- data/lib/proguard4.7/src/proguard/optimize/evaluation/TracedBranchUnit.java +0 -59
- data/lib/proguard4.7/src/proguard/optimize/evaluation/VariableOptimizer.java +0 -345
- data/lib/proguard4.7/src/proguard/optimize/evaluation/package.html +0 -4
- data/lib/proguard4.7/src/proguard/optimize/info/AccessMethodMarker.java +0 -202
- data/lib/proguard4.7/src/proguard/optimize/info/BackwardBranchMarker.java +0 -90
- data/lib/proguard4.7/src/proguard/optimize/info/CatchExceptionMarker.java +0 -69
- data/lib/proguard4.7/src/proguard/optimize/info/CaughtClassFilter.java +0 -63
- data/lib/proguard4.7/src/proguard/optimize/info/CaughtClassMarker.java +0 -64
- data/lib/proguard4.7/src/proguard/optimize/info/ClassOptimizationInfo.java +0 -165
- data/lib/proguard4.7/src/proguard/optimize/info/ClassOptimizationInfoSetter.java +0 -47
- data/lib/proguard4.7/src/proguard/optimize/info/DotClassFilter.java +0 -63
- data/lib/proguard4.7/src/proguard/optimize/info/DotClassMarker.java +0 -96
- data/lib/proguard4.7/src/proguard/optimize/info/ExceptionInstructionChecker.java +0 -193
- data/lib/proguard4.7/src/proguard/optimize/info/FieldOptimizationInfo.java +0 -204
- data/lib/proguard4.7/src/proguard/optimize/info/InstanceofClassFilter.java +0 -63
- data/lib/proguard4.7/src/proguard/optimize/info/InstanceofClassMarker.java +0 -93
- data/lib/proguard4.7/src/proguard/optimize/info/InstantiationClassFilter.java +0 -62
- data/lib/proguard4.7/src/proguard/optimize/info/InstantiationClassMarker.java +0 -93
- data/lib/proguard4.7/src/proguard/optimize/info/MemberOptimizationInfoSetter.java +0 -59
- data/lib/proguard4.7/src/proguard/optimize/info/MethodInvocationMarker.java +0 -107
- data/lib/proguard4.7/src/proguard/optimize/info/MethodOptimizationInfo.java +0 -302
- data/lib/proguard4.7/src/proguard/optimize/info/NoSideEffectMethodMarker.java +0 -91
- data/lib/proguard4.7/src/proguard/optimize/info/NonPrivateMemberMarker.java +0 -171
- data/lib/proguard4.7/src/proguard/optimize/info/PackageVisibleMemberContainingClassMarker.java +0 -85
- data/lib/proguard4.7/src/proguard/optimize/info/PackageVisibleMemberInvokingClassMarker.java +0 -129
- data/lib/proguard4.7/src/proguard/optimize/info/ParameterUsageMarker.java +0 -285
- data/lib/proguard4.7/src/proguard/optimize/info/ReadWriteFieldMarker.java +0 -163
- data/lib/proguard4.7/src/proguard/optimize/info/SideEffectInstructionChecker.java +0 -245
- data/lib/proguard4.7/src/proguard/optimize/info/SideEffectMethodMarker.java +0 -175
- data/lib/proguard4.7/src/proguard/optimize/info/StaticInitializerContainingClassFilter.java +0 -62
- data/lib/proguard4.7/src/proguard/optimize/info/StaticInitializerContainingClassMarker.java +0 -65
- data/lib/proguard4.7/src/proguard/optimize/info/SuperInvocationMarker.java +0 -93
- data/lib/proguard4.7/src/proguard/optimize/info/VariableUsageMarker.java +0 -96
- data/lib/proguard4.7/src/proguard/optimize/info/package.html +0 -4
- data/lib/proguard4.7/src/proguard/optimize/package.html +0 -4
- data/lib/proguard4.7/src/proguard/optimize/peephole/BranchTargetFinder.java +0 -687
- data/lib/proguard4.7/src/proguard/optimize/peephole/ClassFinalizer.java +0 -84
- data/lib/proguard4.7/src/proguard/optimize/peephole/ClassMerger.java +0 -576
- data/lib/proguard4.7/src/proguard/optimize/peephole/GotoCommonCodeReplacer.java +0 -266
- data/lib/proguard4.7/src/proguard/optimize/peephole/GotoGotoReplacer.java +0 -115
- data/lib/proguard4.7/src/proguard/optimize/peephole/GotoReturnReplacer.java +0 -115
- data/lib/proguard4.7/src/proguard/optimize/peephole/HorizontalClassMerger.java +0 -90
- data/lib/proguard4.7/src/proguard/optimize/peephole/InstructionSequenceConstants.java +0 -4424
- data/lib/proguard4.7/src/proguard/optimize/peephole/InstructionSequenceReplacer.java +0 -420
- data/lib/proguard4.7/src/proguard/optimize/peephole/InstructionSequencesReplacer.java +0 -138
- data/lib/proguard4.7/src/proguard/optimize/peephole/MemberPrivatizer.java +0 -103
- data/lib/proguard4.7/src/proguard/optimize/peephole/MethodFinalizer.java +0 -93
- data/lib/proguard4.7/src/proguard/optimize/peephole/MethodInliner.java +0 -597
- data/lib/proguard4.7/src/proguard/optimize/peephole/NopRemover.java +0 -89
- data/lib/proguard4.7/src/proguard/optimize/peephole/PeepholeOptimizer.java +0 -103
- data/lib/proguard4.7/src/proguard/optimize/peephole/ReachableCodeMarker.java +0 -262
- data/lib/proguard4.7/src/proguard/optimize/peephole/RetargetedInnerClassAttributeRemover.java +0 -170
- data/lib/proguard4.7/src/proguard/optimize/peephole/TargetClassChanger.java +0 -455
- data/lib/proguard4.7/src/proguard/optimize/peephole/UnreachableCodeRemover.java +0 -143
- data/lib/proguard4.7/src/proguard/optimize/peephole/UnreachableExceptionRemover.java +0 -163
- data/lib/proguard4.7/src/proguard/optimize/peephole/VariableShrinker.java +0 -129
- data/lib/proguard4.7/src/proguard/optimize/peephole/VerticalClassMerger.java +0 -88
- data/lib/proguard4.7/src/proguard/optimize/peephole/package.html +0 -3
- data/lib/proguard4.7/src/proguard/package.html +0 -5
- data/lib/proguard4.7/src/proguard/preverify/CodePreverifier.java +0 -611
- data/lib/proguard4.7/src/proguard/preverify/CodeSubroutineInliner.java +0 -406
- data/lib/proguard4.7/src/proguard/preverify/Preverifier.java +0 -73
- data/lib/proguard4.7/src/proguard/preverify/SubroutineInliner.java +0 -73
- data/lib/proguard4.7/src/proguard/retrace/MANIFEST.MF +0 -3
- data/lib/proguard4.7/src/proguard/retrace/ReTrace.java +0 -749
- data/lib/proguard4.7/src/proguard/retrace/package.html +0 -4
- data/lib/proguard4.7/src/proguard/shrink/AnnotationUsageMarker.java +0 -333
- data/lib/proguard4.7/src/proguard/shrink/ClassShrinker.java +0 -458
- data/lib/proguard4.7/src/proguard/shrink/InnerUsageMarker.java +0 -174
- data/lib/proguard4.7/src/proguard/shrink/InterfaceUsageMarker.java +0 -152
- data/lib/proguard4.7/src/proguard/shrink/ShortestUsageMark.java +0 -183
- data/lib/proguard4.7/src/proguard/shrink/ShortestUsageMarker.java +0 -277
- data/lib/proguard4.7/src/proguard/shrink/ShortestUsagePrinter.java +0 -210
- data/lib/proguard4.7/src/proguard/shrink/Shrinker.java +0 -181
- data/lib/proguard4.7/src/proguard/shrink/UsageMarker.java +0 -1036
- data/lib/proguard4.7/src/proguard/shrink/UsagePrinter.java +0 -177
- data/lib/proguard4.7/src/proguard/shrink/UsedClassFilter.java +0 -74
- data/lib/proguard4.7/src/proguard/shrink/UsedMemberFilter.java +0 -93
- data/lib/proguard4.7/src/proguard/shrink/package.html +0 -3
- data/lib/proguard4.7/src/proguard/util/AndMatcher.java +0 -49
- data/lib/proguard4.7/src/proguard/util/ClassNameParser.java +0 -216
- data/lib/proguard4.7/src/proguard/util/ConstantMatcher.java +0 -48
- data/lib/proguard4.7/src/proguard/util/EmptyStringMatcher.java +0 -36
- data/lib/proguard4.7/src/proguard/util/ExtensionMatcher.java +0 -63
- data/lib/proguard4.7/src/proguard/util/FileNameParser.java +0 -121
- data/lib/proguard4.7/src/proguard/util/FixedStringMatcher.java +0 -56
- data/lib/proguard4.7/src/proguard/util/ListMatcher.java +0 -69
- data/lib/proguard4.7/src/proguard/util/ListParser.java +0 -137
- data/lib/proguard4.7/src/proguard/util/ListUtil.java +0 -180
- data/lib/proguard4.7/src/proguard/util/NameParser.java +0 -106
- data/lib/proguard4.7/src/proguard/util/NotMatcher.java +0 -46
- data/lib/proguard4.7/src/proguard/util/OrMatcher.java +0 -49
- data/lib/proguard4.7/src/proguard/util/SettableMatcher.java +0 -46
- data/lib/proguard4.7/src/proguard/util/StringMatcher.java +0 -38
- data/lib/proguard4.7/src/proguard/util/StringParser.java +0 -35
- data/lib/proguard4.7/src/proguard/util/VariableStringMatcher.java +0 -126
- data/lib/proguard4.7/src/proguard/util/package.html +0 -3
- data/lib/proguard4.7/src/proguard/wtk/ProGuardObfuscator.java +0 -141
- data/lib/proguard4.7/src/proguard/wtk/default.pro +0 -114
- data/lib/proguard4.7/src/proguard/wtk/package.html +0 -3
@@ -1,87 +0,0 @@
|
|
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.optimize;
|
22
|
-
|
23
|
-
import proguard.classfile.*;
|
24
|
-
import proguard.classfile.attribute.visitor.AttributeVisitor;
|
25
|
-
import proguard.classfile.editor.MethodInvocationFixer;
|
26
|
-
import proguard.classfile.util.SimplifiedVisitor;
|
27
|
-
import proguard.classfile.visitor.MemberVisitor;
|
28
|
-
import proguard.optimize.info.ParameterUsageMarker;
|
29
|
-
import proguard.optimize.peephole.VariableShrinker;
|
30
|
-
|
31
|
-
/**
|
32
|
-
* This MemberVisitor makes all methods that it visits static, if their 'this'
|
33
|
-
* parameters are unused.
|
34
|
-
*
|
35
|
-
* @see ParameterUsageMarker
|
36
|
-
* @see MethodInvocationFixer
|
37
|
-
* @see VariableShrinker
|
38
|
-
* @author Eric Lafortune
|
39
|
-
*/
|
40
|
-
public class MethodStaticizer
|
41
|
-
extends SimplifiedVisitor
|
42
|
-
implements MemberVisitor,
|
43
|
-
AttributeVisitor
|
44
|
-
{
|
45
|
-
private final MemberVisitor extraStaticMemberVisitor;
|
46
|
-
|
47
|
-
|
48
|
-
/**
|
49
|
-
* Creates a new MethodStaticizer.
|
50
|
-
*/
|
51
|
-
public MethodStaticizer()
|
52
|
-
{
|
53
|
-
this(null);
|
54
|
-
}
|
55
|
-
|
56
|
-
|
57
|
-
/**
|
58
|
-
* Creates a new MethodStaticizer with an extra visitor.
|
59
|
-
* @param extraStaticMemberVisitor an optional extra visitor for all
|
60
|
-
* methods that have been made static.
|
61
|
-
*/
|
62
|
-
public MethodStaticizer(MemberVisitor extraStaticMemberVisitor)
|
63
|
-
{
|
64
|
-
this.extraStaticMemberVisitor = extraStaticMemberVisitor;
|
65
|
-
}
|
66
|
-
|
67
|
-
|
68
|
-
// Implementations for MemberVisitor.
|
69
|
-
|
70
|
-
public void visitProgramMethod(ProgramClass programClass, ProgramMethod programMethod)
|
71
|
-
{
|
72
|
-
// Is the 'this' parameter being used?
|
73
|
-
if (!ParameterUsageMarker.isParameterUsed(programMethod, 0))
|
74
|
-
{
|
75
|
-
// Make the method static.
|
76
|
-
programMethod.u2accessFlags =
|
77
|
-
(programMethod.getAccessFlags() & ~ClassConstants.INTERNAL_ACC_FINAL) |
|
78
|
-
ClassConstants.INTERNAL_ACC_STATIC;
|
79
|
-
|
80
|
-
// Visit the method, if required.
|
81
|
-
if (extraStaticMemberVisitor != null)
|
82
|
-
{
|
83
|
-
extraStaticMemberVisitor.visitProgramMethod(programClass, programMethod);
|
84
|
-
}
|
85
|
-
}
|
86
|
-
}
|
87
|
-
}
|
@@ -1,94 +0,0 @@
|
|
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.optimize;
|
22
|
-
|
23
|
-
import proguard.classfile.*;
|
24
|
-
import proguard.classfile.visitor.MemberVisitor;
|
25
|
-
import proguard.optimize.info.*;
|
26
|
-
|
27
|
-
/**
|
28
|
-
* This <code>MemberVisitor</code> delegates its visits to another given
|
29
|
-
* <code>MemberVisitor</code>, but only when the visited member has optimization
|
30
|
-
* info.
|
31
|
-
*
|
32
|
-
* @see FieldOptimizationInfo
|
33
|
-
* @see MethodOptimizationInfo
|
34
|
-
* @author Eric Lafortune
|
35
|
-
*/
|
36
|
-
public class OptimizationInfoMemberFilter
|
37
|
-
implements MemberVisitor
|
38
|
-
{
|
39
|
-
private final MemberVisitor memberVisitor;
|
40
|
-
|
41
|
-
|
42
|
-
/**
|
43
|
-
* Creates a new OptimizationInfoMemberFilter.
|
44
|
-
* @param memberVisitor the <code>MemberVisitor</code> to which visits will
|
45
|
-
* be delegated.
|
46
|
-
*/
|
47
|
-
public OptimizationInfoMemberFilter(MemberVisitor memberVisitor)
|
48
|
-
{
|
49
|
-
this.memberVisitor = memberVisitor;
|
50
|
-
}
|
51
|
-
|
52
|
-
|
53
|
-
// Implementations for MemberVisitor.
|
54
|
-
|
55
|
-
|
56
|
-
public void visitProgramField(ProgramClass programClass, ProgramField programField)
|
57
|
-
{
|
58
|
-
// Does the field have optimization info?
|
59
|
-
if (FieldOptimizationInfo.getFieldOptimizationInfo(programField) != null)
|
60
|
-
{
|
61
|
-
memberVisitor.visitProgramField(programClass, programField);
|
62
|
-
}
|
63
|
-
}
|
64
|
-
|
65
|
-
|
66
|
-
public void visitLibraryField(LibraryClass libraryClass, LibraryField libraryField)
|
67
|
-
{
|
68
|
-
// Does the field have optimization info?
|
69
|
-
if (FieldOptimizationInfo.getFieldOptimizationInfo(libraryField) != null)
|
70
|
-
{
|
71
|
-
memberVisitor.visitLibraryField(libraryClass, libraryField);
|
72
|
-
}
|
73
|
-
}
|
74
|
-
|
75
|
-
|
76
|
-
public void visitProgramMethod(ProgramClass programClass, ProgramMethod programMethod)
|
77
|
-
{
|
78
|
-
// Does the method have optimization info?
|
79
|
-
if (MethodOptimizationInfo.getMethodOptimizationInfo(programMethod) != null)
|
80
|
-
{
|
81
|
-
memberVisitor.visitProgramMethod(programClass, programMethod);
|
82
|
-
}
|
83
|
-
}
|
84
|
-
|
85
|
-
|
86
|
-
public void visitLibraryMethod(LibraryClass libraryClass, LibraryMethod libraryMethod)
|
87
|
-
{
|
88
|
-
// Does the method have optimization info?
|
89
|
-
if (MethodOptimizationInfo.getMethodOptimizationInfo(libraryMethod) != null)
|
90
|
-
{
|
91
|
-
memberVisitor.visitLibraryMethod(libraryClass, libraryMethod);
|
92
|
-
}
|
93
|
-
}
|
94
|
-
}
|
@@ -1,963 +0,0 @@
|
|
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.optimize;
|
22
|
-
|
23
|
-
import proguard.*;
|
24
|
-
import proguard.classfile.*;
|
25
|
-
import proguard.classfile.attribute.visitor.*;
|
26
|
-
import proguard.classfile.constant.Constant;
|
27
|
-
import proguard.classfile.constant.visitor.*;
|
28
|
-
import proguard.classfile.editor.*;
|
29
|
-
import proguard.classfile.instruction.visitor.*;
|
30
|
-
import proguard.classfile.util.MethodLinker;
|
31
|
-
import proguard.classfile.visitor.*;
|
32
|
-
import proguard.evaluation.*;
|
33
|
-
import proguard.evaluation.value.*;
|
34
|
-
import proguard.optimize.evaluation.*;
|
35
|
-
import proguard.optimize.info.*;
|
36
|
-
import proguard.optimize.peephole.*;
|
37
|
-
import proguard.util.*;
|
38
|
-
|
39
|
-
import java.io.IOException;
|
40
|
-
import java.util.*;
|
41
|
-
|
42
|
-
/**
|
43
|
-
* This class optimizes class pools according to a given configuration.
|
44
|
-
*
|
45
|
-
* @author Eric Lafortune
|
46
|
-
*/
|
47
|
-
public class Optimizer
|
48
|
-
{
|
49
|
-
private static final String CLASS_MARKING_FINAL = "class/marking/final";
|
50
|
-
private static final String CLASS_MERGING_VERTICAL = "class/merging/vertical";
|
51
|
-
private static final String CLASS_MERGING_HORIZONTAL = "class/merging/horizontal";
|
52
|
-
private static final String FIELD_REMOVAL_WRITEONLY = "field/removal/writeonly";
|
53
|
-
private static final String FIELD_MARKING_PRIVATE = "field/marking/private";
|
54
|
-
private static final String FIELD_PROPAGATION_VALUE = "field/propagation/value";
|
55
|
-
private static final String METHOD_MARKING_PRIVATE = "method/marking/private";
|
56
|
-
private static final String METHOD_MARKING_STATIC = "method/marking/static";
|
57
|
-
private static final String METHOD_MARKING_FINAL = "method/marking/final";
|
58
|
-
private static final String METHOD_REMOVAL_PARAMETER = "method/removal/parameter";
|
59
|
-
private static final String METHOD_PROPAGATION_PARAMETER = "method/propagation/parameter";
|
60
|
-
private static final String METHOD_PROPAGATION_RETURNVALUE = "method/propagation/returnvalue";
|
61
|
-
private static final String METHOD_INLINING_SHORT = "method/inlining/short";
|
62
|
-
private static final String METHOD_INLINING_UNIQUE = "method/inlining/unique";
|
63
|
-
private static final String METHOD_INLINING_TAILRECURSION = "method/inlining/tailrecursion";
|
64
|
-
private static final String CODE_MERGING = "code/merging";
|
65
|
-
private static final String CODE_SIMPLIFICATION_VARIABLE = "code/simplification/variable";
|
66
|
-
private static final String CODE_SIMPLIFICATION_ARITHMETIC = "code/simplification/arithmetic";
|
67
|
-
private static final String CODE_SIMPLIFICATION_CAST = "code/simplification/cast";
|
68
|
-
private static final String CODE_SIMPLIFICATION_FIELD = "code/simplification/field";
|
69
|
-
private static final String CODE_SIMPLIFICATION_BRANCH = "code/simplification/branch";
|
70
|
-
private static final String CODE_SIMPLIFICATION_STRING = "code/simplification/string";
|
71
|
-
private static final String CODE_SIMPLIFICATION_ADVANCED = "code/simplification/advanced";
|
72
|
-
private static final String CODE_REMOVAL_ADVANCED = "code/removal/advanced";
|
73
|
-
private static final String CODE_REMOVAL_SIMPLE = "code/removal/simple";
|
74
|
-
private static final String CODE_REMOVAL_VARIABLE = "code/removal/variable";
|
75
|
-
private static final String CODE_REMOVAL_EXCEPTION = "code/removal/exception";
|
76
|
-
private static final String CODE_ALLOCATION_VARIABLE = "code/allocation/variable";
|
77
|
-
|
78
|
-
|
79
|
-
public static final String[] OPTIMIZATION_NAMES = new String[]
|
80
|
-
{
|
81
|
-
CLASS_MARKING_FINAL,
|
82
|
-
CLASS_MERGING_VERTICAL,
|
83
|
-
CLASS_MERGING_HORIZONTAL,
|
84
|
-
FIELD_REMOVAL_WRITEONLY,
|
85
|
-
FIELD_MARKING_PRIVATE,
|
86
|
-
FIELD_PROPAGATION_VALUE,
|
87
|
-
METHOD_MARKING_PRIVATE,
|
88
|
-
METHOD_MARKING_STATIC,
|
89
|
-
METHOD_MARKING_FINAL,
|
90
|
-
METHOD_REMOVAL_PARAMETER,
|
91
|
-
METHOD_PROPAGATION_PARAMETER,
|
92
|
-
METHOD_PROPAGATION_RETURNVALUE,
|
93
|
-
METHOD_INLINING_SHORT,
|
94
|
-
METHOD_INLINING_UNIQUE,
|
95
|
-
METHOD_INLINING_TAILRECURSION,
|
96
|
-
CODE_MERGING,
|
97
|
-
CODE_SIMPLIFICATION_VARIABLE,
|
98
|
-
CODE_SIMPLIFICATION_ARITHMETIC,
|
99
|
-
CODE_SIMPLIFICATION_CAST,
|
100
|
-
CODE_SIMPLIFICATION_FIELD,
|
101
|
-
CODE_SIMPLIFICATION_BRANCH,
|
102
|
-
CODE_SIMPLIFICATION_STRING,
|
103
|
-
CODE_SIMPLIFICATION_ADVANCED,
|
104
|
-
CODE_REMOVAL_ADVANCED,
|
105
|
-
CODE_REMOVAL_SIMPLE,
|
106
|
-
CODE_REMOVAL_VARIABLE,
|
107
|
-
CODE_REMOVAL_EXCEPTION,
|
108
|
-
CODE_ALLOCATION_VARIABLE,
|
109
|
-
};
|
110
|
-
|
111
|
-
|
112
|
-
private final Configuration configuration;
|
113
|
-
|
114
|
-
|
115
|
-
/**
|
116
|
-
* Creates a new Optimizer.
|
117
|
-
*/
|
118
|
-
public Optimizer(Configuration configuration)
|
119
|
-
{
|
120
|
-
this.configuration = configuration;
|
121
|
-
}
|
122
|
-
|
123
|
-
|
124
|
-
/**
|
125
|
-
* Performs optimization of the given program class pool.
|
126
|
-
*/
|
127
|
-
public boolean execute(ClassPool programClassPool,
|
128
|
-
ClassPool libraryClassPool) throws IOException
|
129
|
-
{
|
130
|
-
// Check if we have at least some keep commands.
|
131
|
-
if (configuration.keep == null &&
|
132
|
-
configuration.applyMapping == null &&
|
133
|
-
configuration.printMapping == null)
|
134
|
-
{
|
135
|
-
throw new IOException("You have to specify '-keep' options for the optimization step.");
|
136
|
-
}
|
137
|
-
|
138
|
-
// Create a matcher for filtering optimizations.
|
139
|
-
StringMatcher filter = configuration.optimizations != null ?
|
140
|
-
new ListParser(new NameParser()).parse(configuration.optimizations) :
|
141
|
-
new ConstantMatcher(true);
|
142
|
-
|
143
|
-
boolean classMarkingFinal = filter.matches(CLASS_MARKING_FINAL);
|
144
|
-
boolean classMergingVertical = filter.matches(CLASS_MERGING_VERTICAL);
|
145
|
-
boolean classMergingHorizontal = filter.matches(CLASS_MERGING_HORIZONTAL);
|
146
|
-
boolean fieldRemovalWriteonly = filter.matches(FIELD_REMOVAL_WRITEONLY);
|
147
|
-
boolean fieldMarkingPrivate = filter.matches(FIELD_MARKING_PRIVATE);
|
148
|
-
boolean fieldPropagationValue = filter.matches(FIELD_PROPAGATION_VALUE);
|
149
|
-
boolean methodMarkingPrivate = filter.matches(METHOD_MARKING_PRIVATE);
|
150
|
-
boolean methodMarkingStatic = filter.matches(METHOD_MARKING_STATIC);
|
151
|
-
boolean methodMarkingFinal = filter.matches(METHOD_MARKING_FINAL);
|
152
|
-
boolean methodRemovalParameter = filter.matches(METHOD_REMOVAL_PARAMETER);
|
153
|
-
boolean methodPropagationParameter = filter.matches(METHOD_PROPAGATION_PARAMETER);
|
154
|
-
boolean methodPropagationReturnvalue = filter.matches(METHOD_PROPAGATION_RETURNVALUE);
|
155
|
-
boolean methodInliningShort = filter.matches(METHOD_INLINING_SHORT);
|
156
|
-
boolean methodInliningUnique = filter.matches(METHOD_INLINING_UNIQUE);
|
157
|
-
boolean methodInliningTailrecursion = filter.matches(METHOD_INLINING_TAILRECURSION);
|
158
|
-
boolean codeMerging = filter.matches(CODE_MERGING);
|
159
|
-
boolean codeSimplificationVariable = filter.matches(CODE_SIMPLIFICATION_VARIABLE);
|
160
|
-
boolean codeSimplificationArithmetic = filter.matches(CODE_SIMPLIFICATION_ARITHMETIC);
|
161
|
-
boolean codeSimplificationCast = filter.matches(CODE_SIMPLIFICATION_CAST);
|
162
|
-
boolean codeSimplificationField = filter.matches(CODE_SIMPLIFICATION_FIELD);
|
163
|
-
boolean codeSimplificationBranch = filter.matches(CODE_SIMPLIFICATION_BRANCH);
|
164
|
-
boolean codeSimplificationString = filter.matches(CODE_SIMPLIFICATION_STRING);
|
165
|
-
boolean codeSimplificationAdvanced = filter.matches(CODE_SIMPLIFICATION_ADVANCED);
|
166
|
-
boolean codeRemovalAdvanced = filter.matches(CODE_REMOVAL_ADVANCED);
|
167
|
-
boolean codeRemovalSimple = filter.matches(CODE_REMOVAL_SIMPLE);
|
168
|
-
boolean codeRemovalVariable = filter.matches(CODE_REMOVAL_VARIABLE);
|
169
|
-
boolean codeRemovalException = filter.matches(CODE_REMOVAL_EXCEPTION);
|
170
|
-
boolean codeAllocationVariable = filter.matches(CODE_ALLOCATION_VARIABLE);
|
171
|
-
|
172
|
-
// Create counters to count the numbers of optimizations.
|
173
|
-
ClassCounter classMarkingFinalCounter = new ClassCounter();
|
174
|
-
ClassCounter classMergingVerticalCounter = new ClassCounter();
|
175
|
-
ClassCounter classMergingHorizontalCounter = new ClassCounter();
|
176
|
-
MemberCounter fieldRemovalWriteonlyCounter = new MemberCounter();
|
177
|
-
MemberCounter fieldMarkingPrivateCounter = new MemberCounter();
|
178
|
-
MemberCounter fieldPropagationValueCounter = new MemberCounter();
|
179
|
-
MemberCounter methodMarkingPrivateCounter = new MemberCounter();
|
180
|
-
MemberCounter methodMarkingStaticCounter = new MemberCounter();
|
181
|
-
MemberCounter methodMarkingFinalCounter = new MemberCounter();
|
182
|
-
MemberCounter methodRemovalParameterCounter = new MemberCounter();
|
183
|
-
MemberCounter methodPropagationParameterCounter = new MemberCounter();
|
184
|
-
MemberCounter methodPropagationReturnvalueCounter = new MemberCounter();
|
185
|
-
InstructionCounter methodInliningShortCounter = new InstructionCounter();
|
186
|
-
InstructionCounter methodInliningUniqueCounter = new InstructionCounter();
|
187
|
-
InstructionCounter methodInliningTailrecursionCounter = new InstructionCounter();
|
188
|
-
InstructionCounter codeMergingCounter = new InstructionCounter();
|
189
|
-
InstructionCounter codeSimplificationVariableCounter = new InstructionCounter();
|
190
|
-
InstructionCounter codeSimplificationArithmeticCounter = new InstructionCounter();
|
191
|
-
InstructionCounter codeSimplificationCastCounter = new InstructionCounter();
|
192
|
-
InstructionCounter codeSimplificationFieldCounter = new InstructionCounter();
|
193
|
-
InstructionCounter codeSimplificationBranchCounter = new InstructionCounter();
|
194
|
-
InstructionCounter codeSimplificationStringCounter = new InstructionCounter();
|
195
|
-
InstructionCounter codeSimplificationAdvancedCounter = new InstructionCounter();
|
196
|
-
InstructionCounter deletedCounter = new InstructionCounter();
|
197
|
-
InstructionCounter addedCounter = new InstructionCounter();
|
198
|
-
MemberCounter codeRemovalVariableCounter = new MemberCounter();
|
199
|
-
ExceptionCounter codeRemovalExceptionCounter = new ExceptionCounter();
|
200
|
-
MemberCounter codeAllocationVariableCounter = new MemberCounter();
|
201
|
-
MemberCounter initializerFixCounter1 = new MemberCounter();
|
202
|
-
MemberCounter initializerFixCounter2 = new MemberCounter();
|
203
|
-
|
204
|
-
// Some optimizations are required by other optimizations.
|
205
|
-
codeSimplificationAdvanced =
|
206
|
-
codeSimplificationAdvanced ||
|
207
|
-
fieldPropagationValue ||
|
208
|
-
methodPropagationParameter ||
|
209
|
-
methodPropagationReturnvalue;
|
210
|
-
|
211
|
-
codeRemovalAdvanced =
|
212
|
-
codeRemovalAdvanced ||
|
213
|
-
fieldRemovalWriteonly ||
|
214
|
-
methodMarkingStatic ||
|
215
|
-
methodRemovalParameter;
|
216
|
-
|
217
|
-
codeRemovalSimple =
|
218
|
-
codeRemovalSimple ||
|
219
|
-
codeSimplificationBranch;
|
220
|
-
|
221
|
-
codeRemovalException =
|
222
|
-
codeRemovalException ||
|
223
|
-
codeRemovalAdvanced ||
|
224
|
-
codeRemovalSimple;
|
225
|
-
|
226
|
-
// Clean up any old visitor info.
|
227
|
-
programClassPool.classesAccept(new ClassCleaner());
|
228
|
-
libraryClassPool.classesAccept(new ClassCleaner());
|
229
|
-
|
230
|
-
// Link all methods that should get the same optimization info.
|
231
|
-
programClassPool.classesAccept(new BottomClassFilter(
|
232
|
-
new MethodLinker()));
|
233
|
-
libraryClassPool.classesAccept(new BottomClassFilter(
|
234
|
-
new MethodLinker()));
|
235
|
-
|
236
|
-
// Create a visitor for marking the seeds.
|
237
|
-
KeepMarker keepMarker = new KeepMarker();
|
238
|
-
ClassPoolVisitor classPoolvisitor =
|
239
|
-
ClassSpecificationVisitorFactory.createClassPoolVisitor(configuration.keep,
|
240
|
-
keepMarker,
|
241
|
-
keepMarker,
|
242
|
-
false,
|
243
|
-
true,
|
244
|
-
false);
|
245
|
-
// Mark the seeds.
|
246
|
-
programClassPool.accept(classPoolvisitor);
|
247
|
-
libraryClassPool.accept(classPoolvisitor);
|
248
|
-
|
249
|
-
// All library classes and library class members remain unchanged.
|
250
|
-
libraryClassPool.classesAccept(keepMarker);
|
251
|
-
libraryClassPool.classesAccept(new AllMemberVisitor(keepMarker));
|
252
|
-
|
253
|
-
// We also keep all classes that are involved in .class constructs.
|
254
|
-
programClassPool.classesAccept(
|
255
|
-
new AllMethodVisitor(
|
256
|
-
new AllAttributeVisitor(
|
257
|
-
new AllInstructionVisitor(
|
258
|
-
new DotClassClassVisitor(keepMarker)))));
|
259
|
-
|
260
|
-
// We also keep all classes that are accessed dynamically.
|
261
|
-
programClassPool.classesAccept(
|
262
|
-
new AllConstantVisitor(
|
263
|
-
new ConstantTagFilter(ClassConstants.CONSTANT_String,
|
264
|
-
new ReferencedClassVisitor(keepMarker))));
|
265
|
-
|
266
|
-
// We also keep all class members that are accessed dynamically.
|
267
|
-
programClassPool.classesAccept(
|
268
|
-
new AllConstantVisitor(
|
269
|
-
new ConstantTagFilter(ClassConstants.CONSTANT_String,
|
270
|
-
new ReferencedMemberVisitor(keepMarker))));
|
271
|
-
|
272
|
-
// We also keep all bootstrap method signatures.
|
273
|
-
programClassPool.classesAccept(
|
274
|
-
new ClassVersionFilter(ClassConstants.INTERNAL_CLASS_VERSION_1_7,
|
275
|
-
new AllAttributeVisitor(
|
276
|
-
new AttributeNameFilter(ClassConstants.ATTR_BootstrapMethods,
|
277
|
-
new AllBootstrapMethodInfoVisitor(
|
278
|
-
new BootstrapMethodHandleTraveler(
|
279
|
-
new MethodrefTraveler(
|
280
|
-
new ReferencedMemberVisitor(keepMarker))))))));
|
281
|
-
|
282
|
-
// Attach some optimization info to all classes and class members, so
|
283
|
-
// it can be filled out later.
|
284
|
-
programClassPool.classesAccept(new ClassOptimizationInfoSetter());
|
285
|
-
|
286
|
-
programClassPool.classesAccept(new AllMemberVisitor(
|
287
|
-
new MemberOptimizationInfoSetter()));
|
288
|
-
|
289
|
-
if (configuration.assumeNoSideEffects != null)
|
290
|
-
{
|
291
|
-
// Create a visitor for marking methods that don't have any side effects.
|
292
|
-
NoSideEffectMethodMarker noSideEffectMethodMarker = new NoSideEffectMethodMarker();
|
293
|
-
ClassPoolVisitor noClassPoolvisitor =
|
294
|
-
ClassSpecificationVisitorFactory.createClassPoolVisitor(configuration.assumeNoSideEffects,
|
295
|
-
null,
|
296
|
-
noSideEffectMethodMarker);
|
297
|
-
|
298
|
-
// Mark the seeds.
|
299
|
-
programClassPool.accept(noClassPoolvisitor);
|
300
|
-
libraryClassPool.accept(noClassPoolvisitor);
|
301
|
-
}
|
302
|
-
|
303
|
-
if (classMarkingFinal)
|
304
|
-
{
|
305
|
-
// Make classes final, whereever possible.
|
306
|
-
programClassPool.classesAccept(
|
307
|
-
new ClassFinalizer(classMarkingFinalCounter));
|
308
|
-
}
|
309
|
-
|
310
|
-
if (methodMarkingFinal)
|
311
|
-
{
|
312
|
-
// Make methods final, whereever possible.
|
313
|
-
programClassPool.classesAccept(
|
314
|
-
new AllMethodVisitor(
|
315
|
-
new MethodFinalizer(methodMarkingFinalCounter)));
|
316
|
-
}
|
317
|
-
|
318
|
-
if (fieldRemovalWriteonly)
|
319
|
-
{
|
320
|
-
// Mark all fields that are write-only.
|
321
|
-
programClassPool.classesAccept(
|
322
|
-
new AllMethodVisitor(
|
323
|
-
new AllAttributeVisitor(
|
324
|
-
new AllInstructionVisitor(
|
325
|
-
new ReadWriteFieldMarker()))));
|
326
|
-
|
327
|
-
// Count the write-only fields.
|
328
|
-
programClassPool.classesAccept(
|
329
|
-
new AllFieldVisitor(
|
330
|
-
new WriteOnlyFieldFilter(fieldRemovalWriteonlyCounter)));
|
331
|
-
}
|
332
|
-
else
|
333
|
-
{
|
334
|
-
// Mark all fields as read/write.
|
335
|
-
programClassPool.classesAccept(
|
336
|
-
new AllFieldVisitor(
|
337
|
-
new ReadWriteFieldMarker()));
|
338
|
-
}
|
339
|
-
|
340
|
-
// Mark all used parameters, including the 'this' parameters.
|
341
|
-
programClassPool.classesAccept(
|
342
|
-
new AllMethodVisitor(
|
343
|
-
new OptimizationInfoMemberFilter(
|
344
|
-
new ParameterUsageMarker(!methodMarkingStatic,
|
345
|
-
!methodRemovalParameter))));
|
346
|
-
|
347
|
-
// Mark all classes that have static initializers.
|
348
|
-
programClassPool.classesAccept(new StaticInitializerContainingClassMarker());
|
349
|
-
|
350
|
-
// Mark all methods that have side effects.
|
351
|
-
programClassPool.accept(new SideEffectMethodMarker());
|
352
|
-
|
353
|
-
// System.out.println("Optimizer.execute: before evaluation simplification");
|
354
|
-
// programClassPool.classAccept("abc/Def", new NamedMethodVisitor("abc", null, new ClassPrinter()));
|
355
|
-
|
356
|
-
// Perform partial evaluation for filling out fields, method parameters,
|
357
|
-
// and method return values.
|
358
|
-
ValueFactory valueFactory = new IdentifiedValueFactory();
|
359
|
-
|
360
|
-
if (fieldPropagationValue ||
|
361
|
-
methodPropagationParameter ||
|
362
|
-
methodPropagationReturnvalue)
|
363
|
-
{
|
364
|
-
// Fill out fields, method parameters, and return values, so they
|
365
|
-
// can be propagated.
|
366
|
-
InvocationUnit storingInvocationUnit =
|
367
|
-
new StoringInvocationUnit(valueFactory,
|
368
|
-
fieldPropagationValue,
|
369
|
-
methodPropagationParameter,
|
370
|
-
methodPropagationReturnvalue);
|
371
|
-
|
372
|
-
programClassPool.classesAccept(
|
373
|
-
new AllMethodVisitor(
|
374
|
-
new AllAttributeVisitor(
|
375
|
-
new PartialEvaluator(valueFactory, storingInvocationUnit, false))));
|
376
|
-
|
377
|
-
if (fieldPropagationValue)
|
378
|
-
{
|
379
|
-
// Count the constant fields.
|
380
|
-
programClassPool.classesAccept(
|
381
|
-
new AllFieldVisitor(
|
382
|
-
new ConstantMemberFilter(fieldPropagationValueCounter)));
|
383
|
-
}
|
384
|
-
|
385
|
-
if (methodPropagationParameter)
|
386
|
-
{
|
387
|
-
// Count the constant method parameters.
|
388
|
-
programClassPool.classesAccept(
|
389
|
-
new AllMethodVisitor(
|
390
|
-
new ConstantParameterFilter(methodPropagationParameterCounter)));
|
391
|
-
}
|
392
|
-
|
393
|
-
if (methodPropagationReturnvalue)
|
394
|
-
{
|
395
|
-
// Count the constant method return values.
|
396
|
-
programClassPool.classesAccept(
|
397
|
-
new AllMethodVisitor(
|
398
|
-
new ConstantMemberFilter(methodPropagationReturnvalueCounter)));
|
399
|
-
}
|
400
|
-
}
|
401
|
-
|
402
|
-
InvocationUnit loadingInvocationUnit =
|
403
|
-
new LoadingInvocationUnit(valueFactory,
|
404
|
-
fieldPropagationValue,
|
405
|
-
methodPropagationParameter,
|
406
|
-
methodPropagationReturnvalue);
|
407
|
-
|
408
|
-
if (codeSimplificationAdvanced)
|
409
|
-
{
|
410
|
-
// Simplify based on partial evaluation, propagating constant
|
411
|
-
// field values, method parameter values, and return values.
|
412
|
-
programClassPool.classesAccept(
|
413
|
-
new AllMethodVisitor(
|
414
|
-
new AllAttributeVisitor(
|
415
|
-
new EvaluationSimplifier(
|
416
|
-
new PartialEvaluator(valueFactory, loadingInvocationUnit, false),
|
417
|
-
codeSimplificationAdvancedCounter))));
|
418
|
-
}
|
419
|
-
|
420
|
-
if (codeRemovalAdvanced)
|
421
|
-
{
|
422
|
-
// Remove code based on partial evaluation, also removing unused
|
423
|
-
// parameters from method invocations, and making methods static
|
424
|
-
// if possible.
|
425
|
-
programClassPool.classesAccept(
|
426
|
-
new AllMethodVisitor(
|
427
|
-
new AllAttributeVisitor(
|
428
|
-
new EvaluationShrinker(
|
429
|
-
new PartialEvaluator(valueFactory, loadingInvocationUnit, !codeSimplificationAdvanced),
|
430
|
-
deletedCounter, addedCounter))));
|
431
|
-
}
|
432
|
-
|
433
|
-
if (methodRemovalParameter)
|
434
|
-
{
|
435
|
-
// Shrink the parameters in the method descriptors.
|
436
|
-
programClassPool.classesAccept(
|
437
|
-
new AllMethodVisitor(
|
438
|
-
new OptimizationInfoMemberFilter(
|
439
|
-
new MethodDescriptorShrinker())));
|
440
|
-
}
|
441
|
-
|
442
|
-
if (methodMarkingStatic)
|
443
|
-
{
|
444
|
-
// Make all non-static methods that don't require the 'this'
|
445
|
-
// parameter static.
|
446
|
-
programClassPool.classesAccept(
|
447
|
-
new AllMethodVisitor(
|
448
|
-
new OptimizationInfoMemberFilter(
|
449
|
-
new MemberAccessFilter(0, ClassConstants.INTERNAL_ACC_STATIC,
|
450
|
-
new MethodStaticizer(methodMarkingStaticCounter)))));
|
451
|
-
}
|
452
|
-
|
453
|
-
if (methodRemovalParameter)
|
454
|
-
{
|
455
|
-
// Fix all references to class members.
|
456
|
-
// This operation also updates the stack sizes.
|
457
|
-
programClassPool.classesAccept(
|
458
|
-
new MemberReferenceFixer());
|
459
|
-
|
460
|
-
// Remove unused bootstrap method arguments.
|
461
|
-
programClassPool.classesAccept(
|
462
|
-
new AllAttributeVisitor(
|
463
|
-
new AllBootstrapMethodInfoVisitor(
|
464
|
-
new BootstrapMethodArgumentShrinker())));
|
465
|
-
}
|
466
|
-
|
467
|
-
if (methodRemovalParameter ||
|
468
|
-
methodMarkingPrivate ||
|
469
|
-
methodMarkingStatic)
|
470
|
-
{
|
471
|
-
// Remove all unused parameters from the byte code, shifting all
|
472
|
-
// remaining variables.
|
473
|
-
// This operation also updates the local variable frame sizes.
|
474
|
-
programClassPool.classesAccept(
|
475
|
-
new AllMethodVisitor(
|
476
|
-
new AllAttributeVisitor(
|
477
|
-
new ParameterShrinker(methodRemovalParameterCounter))));
|
478
|
-
}
|
479
|
-
else if (codeRemovalAdvanced)
|
480
|
-
{
|
481
|
-
// Just update the local variable frame sizes.
|
482
|
-
programClassPool.classesAccept(
|
483
|
-
new AllMethodVisitor(
|
484
|
-
new AllAttributeVisitor(
|
485
|
-
new StackSizeUpdater())));
|
486
|
-
}
|
487
|
-
|
488
|
-
if (methodRemovalParameter &&
|
489
|
-
methodRemovalParameterCounter.getCount() > 0)
|
490
|
-
{
|
491
|
-
// Tweak the descriptors of duplicate initializers, due to removed
|
492
|
-
// method parameters.
|
493
|
-
programClassPool.classesAccept(
|
494
|
-
new AllMethodVisitor(
|
495
|
-
new DuplicateInitializerFixer(initializerFixCounter1)));
|
496
|
-
|
497
|
-
if (initializerFixCounter1.getCount() > 0)
|
498
|
-
{
|
499
|
-
// Fix all invocations of tweaked initializers.
|
500
|
-
programClassPool.classesAccept(
|
501
|
-
new AllMethodVisitor(
|
502
|
-
new AllAttributeVisitor(
|
503
|
-
new DuplicateInitializerInvocationFixer(addedCounter))));
|
504
|
-
|
505
|
-
// Fix all references to tweaked initializers.
|
506
|
-
programClassPool.classesAccept(new MemberReferenceFixer());
|
507
|
-
}
|
508
|
-
}
|
509
|
-
|
510
|
-
//// Specializing the class member descriptors seems to increase the
|
511
|
-
//// class file size, on average.
|
512
|
-
//// Specialize all class member descriptors.
|
513
|
-
//programClassPool.classesAccept(new AllMemberVisitor(
|
514
|
-
// new OptimizationInfoMemberFilter(
|
515
|
-
// new MemberDescriptorSpecializer())));
|
516
|
-
//
|
517
|
-
//// Fix all references to classes, for MemberDescriptorSpecializer.
|
518
|
-
//programClassPool.classesAccept(new AllMemberVisitor(
|
519
|
-
// new OptimizationInfoMemberFilter(
|
520
|
-
// new ClassReferenceFixer(true))));
|
521
|
-
|
522
|
-
// Mark all classes with package visible members.
|
523
|
-
// Mark all exception catches of methods.
|
524
|
-
// Count all method invocations.
|
525
|
-
// Mark super invocations and other access of methods.
|
526
|
-
programClassPool.classesAccept(
|
527
|
-
new MultiClassVisitor(
|
528
|
-
new ClassVisitor[]
|
529
|
-
{
|
530
|
-
new PackageVisibleMemberContainingClassMarker(),
|
531
|
-
new AllConstantVisitor(
|
532
|
-
new PackageVisibleMemberInvokingClassMarker()),
|
533
|
-
new AllMethodVisitor(
|
534
|
-
new MultiMemberVisitor(
|
535
|
-
new MemberVisitor[]
|
536
|
-
{
|
537
|
-
new AllAttributeVisitor(
|
538
|
-
new MultiAttributeVisitor(
|
539
|
-
new AttributeVisitor[]
|
540
|
-
{
|
541
|
-
new CatchExceptionMarker(),
|
542
|
-
new AllInstructionVisitor(
|
543
|
-
new MultiInstructionVisitor(
|
544
|
-
new InstructionVisitor[]
|
545
|
-
{
|
546
|
-
new InstantiationClassMarker(),
|
547
|
-
new InstanceofClassMarker(),
|
548
|
-
new DotClassMarker(),
|
549
|
-
new MethodInvocationMarker(),
|
550
|
-
new SuperInvocationMarker(),
|
551
|
-
new BackwardBranchMarker(),
|
552
|
-
new AccessMethodMarker(),
|
553
|
-
})),
|
554
|
-
new AllExceptionInfoVisitor(
|
555
|
-
new ExceptionHandlerConstantVisitor(
|
556
|
-
new ReferencedClassVisitor(
|
557
|
-
new CaughtClassMarker()))),
|
558
|
-
})),
|
559
|
-
})),
|
560
|
-
}));
|
561
|
-
|
562
|
-
if (classMergingVertical)
|
563
|
-
{
|
564
|
-
// Merge classes into their superclasses or interfaces.
|
565
|
-
programClassPool.classesAccept(
|
566
|
-
new VerticalClassMerger(configuration.allowAccessModification,
|
567
|
-
configuration.mergeInterfacesAggressively,
|
568
|
-
classMergingVerticalCounter));
|
569
|
-
}
|
570
|
-
|
571
|
-
if (classMergingHorizontal)
|
572
|
-
{
|
573
|
-
// Merge classes into their sibling classes.
|
574
|
-
programClassPool.classesAccept(
|
575
|
-
new HorizontalClassMerger(configuration.allowAccessModification,
|
576
|
-
configuration.mergeInterfacesAggressively,
|
577
|
-
classMergingHorizontalCounter));
|
578
|
-
}
|
579
|
-
|
580
|
-
if (classMergingVerticalCounter .getCount() > 0 ||
|
581
|
-
classMergingHorizontalCounter.getCount() > 0)
|
582
|
-
{
|
583
|
-
// Clean up inner class attributes to avoid loops.
|
584
|
-
programClassPool.classesAccept(new RetargetedInnerClassAttributeRemover());
|
585
|
-
|
586
|
-
// Update references to merged classes.
|
587
|
-
programClassPool.classesAccept(new TargetClassChanger());
|
588
|
-
programClassPool.classesAccept(new ClassReferenceFixer(true));
|
589
|
-
programClassPool.classesAccept(new MemberReferenceFixer());
|
590
|
-
|
591
|
-
if (configuration.allowAccessModification)
|
592
|
-
{
|
593
|
-
// Fix the access flags of referenced merged classes and their
|
594
|
-
// class members.
|
595
|
-
programClassPool.classesAccept(
|
596
|
-
new AllConstantVisitor(
|
597
|
-
new AccessFixer()));
|
598
|
-
}
|
599
|
-
|
600
|
-
// Fix the access flags of the inner classes information.
|
601
|
-
programClassPool.classesAccept(
|
602
|
-
new AllAttributeVisitor(
|
603
|
-
new AllInnerClassesInfoVisitor(
|
604
|
-
new InnerClassesAccessFixer())));
|
605
|
-
|
606
|
-
// Tweak the descriptors of duplicate initializers, due to merged
|
607
|
-
// parameter classes.
|
608
|
-
programClassPool.classesAccept(
|
609
|
-
new AllMethodVisitor(
|
610
|
-
new DuplicateInitializerFixer(initializerFixCounter2)));
|
611
|
-
|
612
|
-
if (initializerFixCounter2.getCount() > 0)
|
613
|
-
{
|
614
|
-
// Fix all invocations of tweaked initializers.
|
615
|
-
programClassPool.classesAccept(
|
616
|
-
new AllMethodVisitor(
|
617
|
-
new AllAttributeVisitor(
|
618
|
-
new DuplicateInitializerInvocationFixer(addedCounter))));
|
619
|
-
|
620
|
-
// Fix all references to tweaked initializers.
|
621
|
-
programClassPool.classesAccept(new MemberReferenceFixer());
|
622
|
-
}
|
623
|
-
}
|
624
|
-
|
625
|
-
if (methodInliningUnique)
|
626
|
-
{
|
627
|
-
// Inline methods that are only invoked once.
|
628
|
-
programClassPool.classesAccept(
|
629
|
-
new AllMethodVisitor(
|
630
|
-
new AllAttributeVisitor(
|
631
|
-
new MethodInliner(configuration.microEdition,
|
632
|
-
configuration.allowAccessModification,
|
633
|
-
true,
|
634
|
-
methodInliningUniqueCounter))));
|
635
|
-
}
|
636
|
-
|
637
|
-
if (methodInliningShort)
|
638
|
-
{
|
639
|
-
// Inline short methods.
|
640
|
-
programClassPool.classesAccept(
|
641
|
-
new AllMethodVisitor(
|
642
|
-
new AllAttributeVisitor(
|
643
|
-
new MethodInliner(configuration.microEdition,
|
644
|
-
configuration.allowAccessModification,
|
645
|
-
false,
|
646
|
-
methodInliningShortCounter))));
|
647
|
-
}
|
648
|
-
|
649
|
-
if (methodInliningTailrecursion)
|
650
|
-
{
|
651
|
-
// Simplify tail recursion calls.
|
652
|
-
programClassPool.classesAccept(
|
653
|
-
new AllMethodVisitor(
|
654
|
-
new AllAttributeVisitor(
|
655
|
-
new TailRecursionSimplifier(methodInliningTailrecursionCounter))));
|
656
|
-
}
|
657
|
-
|
658
|
-
if (fieldMarkingPrivate ||
|
659
|
-
methodMarkingPrivate)
|
660
|
-
{
|
661
|
-
// Mark all class members that can not be made private.
|
662
|
-
programClassPool.classesAccept(
|
663
|
-
new NonPrivateMemberMarker());
|
664
|
-
}
|
665
|
-
|
666
|
-
if (fieldMarkingPrivate)
|
667
|
-
{
|
668
|
-
// Make all non-private fields private, whereever possible.
|
669
|
-
programClassPool.classesAccept(
|
670
|
-
new ClassAccessFilter(0, ClassConstants.INTERNAL_ACC_INTERFACE,
|
671
|
-
new AllFieldVisitor(
|
672
|
-
new MemberAccessFilter(0, ClassConstants.INTERNAL_ACC_PRIVATE,
|
673
|
-
new MemberPrivatizer(fieldMarkingPrivateCounter)))));
|
674
|
-
}
|
675
|
-
|
676
|
-
if (methodMarkingPrivate)
|
677
|
-
{
|
678
|
-
// Make all non-private methods private, whereever possible.
|
679
|
-
programClassPool.classesAccept(
|
680
|
-
new ClassAccessFilter(0, ClassConstants.INTERNAL_ACC_INTERFACE,
|
681
|
-
new AllMethodVisitor(
|
682
|
-
new MemberAccessFilter(0, ClassConstants.INTERNAL_ACC_PRIVATE,
|
683
|
-
new MemberPrivatizer(methodMarkingPrivateCounter)))));
|
684
|
-
}
|
685
|
-
|
686
|
-
if ((methodInliningUniqueCounter .getCount() > 0 ||
|
687
|
-
methodInliningShortCounter .getCount() > 0 ||
|
688
|
-
methodInliningTailrecursionCounter.getCount() > 0) &&
|
689
|
-
configuration.allowAccessModification)
|
690
|
-
{
|
691
|
-
// Fix the access flags of referenced classes and class members,
|
692
|
-
// for MethodInliner.
|
693
|
-
programClassPool.classesAccept(
|
694
|
-
new AllConstantVisitor(
|
695
|
-
new AccessFixer()));
|
696
|
-
}
|
697
|
-
|
698
|
-
if (methodRemovalParameterCounter .getCount() > 0 ||
|
699
|
-
classMergingVerticalCounter .getCount() > 0 ||
|
700
|
-
classMergingHorizontalCounter .getCount() > 0 ||
|
701
|
-
methodMarkingPrivateCounter .getCount() > 0 )
|
702
|
-
{
|
703
|
-
// Fix invocations of interface methods, of methods that have become
|
704
|
-
// non-abstract or private, and of methods that have moved to a
|
705
|
-
// different package.
|
706
|
-
programClassPool.classesAccept(
|
707
|
-
new AllMemberVisitor(
|
708
|
-
new AllAttributeVisitor(
|
709
|
-
new MethodInvocationFixer())));
|
710
|
-
}
|
711
|
-
|
712
|
-
if (codeMerging)
|
713
|
-
{
|
714
|
-
// Share common blocks of code at branches.
|
715
|
-
programClassPool.classesAccept(
|
716
|
-
new AllMethodVisitor(
|
717
|
-
new AllAttributeVisitor(
|
718
|
-
new GotoCommonCodeReplacer(codeMergingCounter))));
|
719
|
-
}
|
720
|
-
|
721
|
-
// Create a branch target marker and a code attribute editor that can
|
722
|
-
// be reused for all code attributes.
|
723
|
-
BranchTargetFinder branchTargetFinder = new BranchTargetFinder();
|
724
|
-
CodeAttributeEditor codeAttributeEditor = new CodeAttributeEditor();
|
725
|
-
|
726
|
-
List peepholeOptimizations = new ArrayList();
|
727
|
-
if (codeSimplificationVariable)
|
728
|
-
{
|
729
|
-
// Peephole optimizations involving local variables.
|
730
|
-
peepholeOptimizations.add(
|
731
|
-
new InstructionSequencesReplacer(InstructionSequenceConstants.CONSTANTS,
|
732
|
-
InstructionSequenceConstants.VARIABLE,
|
733
|
-
branchTargetFinder, codeAttributeEditor, codeSimplificationVariableCounter));
|
734
|
-
}
|
735
|
-
|
736
|
-
if (codeSimplificationArithmetic)
|
737
|
-
{
|
738
|
-
// Peephole optimizations involving arithmetic operations.
|
739
|
-
peepholeOptimizations.add(
|
740
|
-
new InstructionSequencesReplacer(InstructionSequenceConstants.CONSTANTS,
|
741
|
-
InstructionSequenceConstants.ARITHMETIC,
|
742
|
-
branchTargetFinder, codeAttributeEditor, codeSimplificationArithmeticCounter));
|
743
|
-
}
|
744
|
-
|
745
|
-
if (codeSimplificationCast)
|
746
|
-
{
|
747
|
-
// Peephole optimizations involving cast operations.
|
748
|
-
peepholeOptimizations.add(
|
749
|
-
new InstructionSequencesReplacer(InstructionSequenceConstants.CONSTANTS,
|
750
|
-
InstructionSequenceConstants.CAST,
|
751
|
-
branchTargetFinder, codeAttributeEditor, codeSimplificationCastCounter));
|
752
|
-
}
|
753
|
-
|
754
|
-
if (codeSimplificationField)
|
755
|
-
{
|
756
|
-
// Peephole optimizations involving fields.
|
757
|
-
peepholeOptimizations.add(
|
758
|
-
new InstructionSequencesReplacer(InstructionSequenceConstants.CONSTANTS,
|
759
|
-
InstructionSequenceConstants.FIELD,
|
760
|
-
branchTargetFinder, codeAttributeEditor, codeSimplificationFieldCounter));
|
761
|
-
}
|
762
|
-
|
763
|
-
if (codeSimplificationBranch)
|
764
|
-
{
|
765
|
-
// Peephole optimizations involving branches.
|
766
|
-
peepholeOptimizations.add(
|
767
|
-
new InstructionSequencesReplacer(InstructionSequenceConstants.CONSTANTS,
|
768
|
-
InstructionSequenceConstants.BRANCH,
|
769
|
-
branchTargetFinder, codeAttributeEditor, codeSimplificationBranchCounter));
|
770
|
-
|
771
|
-
// Include optimization of branches to branches and returns.
|
772
|
-
peepholeOptimizations.add(
|
773
|
-
new GotoGotoReplacer(codeAttributeEditor, codeSimplificationBranchCounter));
|
774
|
-
peepholeOptimizations.add(
|
775
|
-
new GotoReturnReplacer(codeAttributeEditor, codeSimplificationBranchCounter));
|
776
|
-
}
|
777
|
-
|
778
|
-
if (codeSimplificationString)
|
779
|
-
{
|
780
|
-
// Peephole optimizations involving branches.
|
781
|
-
peepholeOptimizations.add(
|
782
|
-
new InstructionSequencesReplacer(InstructionSequenceConstants.CONSTANTS,
|
783
|
-
InstructionSequenceConstants.STRING,
|
784
|
-
branchTargetFinder, codeAttributeEditor, codeSimplificationStringCounter));
|
785
|
-
}
|
786
|
-
|
787
|
-
if (!peepholeOptimizations.isEmpty())
|
788
|
-
{
|
789
|
-
// Convert the list into an array.
|
790
|
-
InstructionVisitor[] peepholeOptimizationsArray =
|
791
|
-
new InstructionVisitor[peepholeOptimizations.size()];
|
792
|
-
peepholeOptimizations.toArray(peepholeOptimizationsArray);
|
793
|
-
|
794
|
-
// Perform the peephole optimisations.
|
795
|
-
programClassPool.classesAccept(
|
796
|
-
new AllMethodVisitor(
|
797
|
-
new AllAttributeVisitor(
|
798
|
-
new PeepholeOptimizer(branchTargetFinder, codeAttributeEditor,
|
799
|
-
new MultiInstructionVisitor(
|
800
|
-
peepholeOptimizationsArray)))));
|
801
|
-
}
|
802
|
-
|
803
|
-
if (codeRemovalException)
|
804
|
-
{
|
805
|
-
// Remove unnecessary exception handlers.
|
806
|
-
programClassPool.classesAccept(
|
807
|
-
new AllMethodVisitor(
|
808
|
-
new AllAttributeVisitor(
|
809
|
-
new UnreachableExceptionRemover(codeRemovalExceptionCounter))));
|
810
|
-
}
|
811
|
-
|
812
|
-
if (codeRemovalSimple)
|
813
|
-
{
|
814
|
-
// Remove unreachable code.
|
815
|
-
programClassPool.classesAccept(
|
816
|
-
new AllMethodVisitor(
|
817
|
-
new AllAttributeVisitor(
|
818
|
-
new UnreachableCodeRemover(deletedCounter))));
|
819
|
-
}
|
820
|
-
|
821
|
-
if (codeRemovalVariable)
|
822
|
-
{
|
823
|
-
// Remove all unused local variables.
|
824
|
-
programClassPool.classesAccept(
|
825
|
-
new AllMethodVisitor(
|
826
|
-
new AllAttributeVisitor(
|
827
|
-
new VariableShrinker(codeRemovalVariableCounter))));
|
828
|
-
}
|
829
|
-
|
830
|
-
if (codeAllocationVariable)
|
831
|
-
{
|
832
|
-
// Optimize the variables.
|
833
|
-
programClassPool.classesAccept(
|
834
|
-
new AllMethodVisitor(
|
835
|
-
new AllAttributeVisitor(
|
836
|
-
new VariableOptimizer(false, codeAllocationVariableCounter))));
|
837
|
-
}
|
838
|
-
|
839
|
-
|
840
|
-
// Remove unused constants.
|
841
|
-
programClassPool.classesAccept(
|
842
|
-
new ConstantPoolShrinker());
|
843
|
-
|
844
|
-
int classMarkingFinalCount = classMarkingFinalCounter .getCount();
|
845
|
-
int classMergingVerticalCount = classMergingVerticalCounter .getCount();
|
846
|
-
int classMergingHorizontalCount = classMergingHorizontalCounter .getCount();
|
847
|
-
int fieldRemovalWriteonlyCount = fieldRemovalWriteonlyCounter .getCount();
|
848
|
-
int fieldMarkingPrivateCount = fieldMarkingPrivateCounter .getCount();
|
849
|
-
int fieldPropagationValueCount = fieldPropagationValueCounter .getCount();
|
850
|
-
int methodMarkingPrivateCount = methodMarkingPrivateCounter .getCount();
|
851
|
-
int methodMarkingStaticCount = methodMarkingStaticCounter .getCount();
|
852
|
-
int methodMarkingFinalCount = methodMarkingFinalCounter .getCount();
|
853
|
-
int methodRemovalParameterCount = methodRemovalParameterCounter .getCount() - methodMarkingStaticCounter.getCount() - initializerFixCounter1.getCount() - initializerFixCounter2.getCount();
|
854
|
-
int methodPropagationParameterCount = methodPropagationParameterCounter .getCount();
|
855
|
-
int methodPropagationReturnvalueCount = methodPropagationReturnvalueCounter.getCount();
|
856
|
-
int methodInliningShortCount = methodInliningShortCounter .getCount();
|
857
|
-
int methodInliningUniqueCount = methodInliningUniqueCounter .getCount();
|
858
|
-
int methodInliningTailrecursionCount = methodInliningTailrecursionCounter .getCount();
|
859
|
-
int codeMergingCount = codeMergingCounter .getCount();
|
860
|
-
int codeSimplificationVariableCount = codeSimplificationVariableCounter .getCount();
|
861
|
-
int codeSimplificationArithmeticCount = codeSimplificationArithmeticCounter.getCount();
|
862
|
-
int codeSimplificationCastCount = codeSimplificationCastCounter .getCount();
|
863
|
-
int codeSimplificationFieldCount = codeSimplificationFieldCounter .getCount();
|
864
|
-
int codeSimplificationBranchCount = codeSimplificationBranchCounter .getCount();
|
865
|
-
int codeSimplificationStringCount = codeSimplificationStringCounter .getCount();
|
866
|
-
int codeSimplificationAdvancedCount = codeSimplificationAdvancedCounter .getCount();
|
867
|
-
int codeRemovalCount = deletedCounter .getCount() - addedCounter.getCount();
|
868
|
-
int codeRemovalVariableCount = codeRemovalVariableCounter .getCount();
|
869
|
-
int codeRemovalExceptionCount = codeRemovalExceptionCounter .getCount();
|
870
|
-
int codeAllocationVariableCount = codeAllocationVariableCounter .getCount();
|
871
|
-
|
872
|
-
// Forget about constant fields, parameters, and return values, if they
|
873
|
-
// didn't lead to any useful optimizations. We want to avoid fruitless
|
874
|
-
// additional optimization passes.
|
875
|
-
if (codeSimplificationAdvancedCount == 0)
|
876
|
-
{
|
877
|
-
fieldPropagationValueCount = 0;
|
878
|
-
methodPropagationParameterCount = 0;
|
879
|
-
methodPropagationReturnvalueCount = 0;
|
880
|
-
}
|
881
|
-
|
882
|
-
if (configuration.verbose)
|
883
|
-
{
|
884
|
-
System.out.println(" Number of finalized classes: " + classMarkingFinalCount + disabled(classMarkingFinal));
|
885
|
-
System.out.println(" Number of vertically merged classes: " + classMergingVerticalCount + disabled(classMergingVertical));
|
886
|
-
System.out.println(" Number of horizontally merged classes: " + classMergingHorizontalCount + disabled(classMergingHorizontal));
|
887
|
-
System.out.println(" Number of removed write-only fields: " + fieldRemovalWriteonlyCount + disabled(fieldRemovalWriteonly));
|
888
|
-
System.out.println(" Number of privatized fields: " + fieldMarkingPrivateCount + disabled(fieldMarkingPrivate));
|
889
|
-
System.out.println(" Number of inlined constant fields: " + fieldPropagationValueCount + disabled(fieldPropagationValue));
|
890
|
-
System.out.println(" Number of privatized methods: " + methodMarkingPrivateCount + disabled(methodMarkingPrivate));
|
891
|
-
System.out.println(" Number of staticized methods: " + methodMarkingStaticCount + disabled(methodMarkingStatic));
|
892
|
-
System.out.println(" Number of finalized methods: " + methodMarkingFinalCount + disabled(methodMarkingFinal));
|
893
|
-
System.out.println(" Number of removed method parameters: " + methodRemovalParameterCount + disabled(methodRemovalParameter));
|
894
|
-
System.out.println(" Number of inlined constant parameters: " + methodPropagationParameterCount + disabled(methodPropagationParameter));
|
895
|
-
System.out.println(" Number of inlined constant return values: " + methodPropagationReturnvalueCount + disabled(methodPropagationReturnvalue));
|
896
|
-
System.out.println(" Number of inlined short method calls: " + methodInliningShortCount + disabled(methodInliningShort));
|
897
|
-
System.out.println(" Number of inlined unique method calls: " + methodInliningUniqueCount + disabled(methodInliningUnique));
|
898
|
-
System.out.println(" Number of inlined tail recursion calls: " + methodInliningTailrecursionCount + disabled(methodInliningTailrecursion));
|
899
|
-
System.out.println(" Number of merged code blocks: " + codeMergingCount + disabled(codeMerging));
|
900
|
-
System.out.println(" Number of variable peephole optimizations: " + codeSimplificationVariableCount + disabled(codeSimplificationVariable));
|
901
|
-
System.out.println(" Number of arithmetic peephole optimizations: " + codeSimplificationArithmeticCount + disabled(codeSimplificationArithmetic));
|
902
|
-
System.out.println(" Number of cast peephole optimizations: " + codeSimplificationCastCount + disabled(codeSimplificationCast));
|
903
|
-
System.out.println(" Number of field peephole optimizations: " + codeSimplificationFieldCount + disabled(codeSimplificationField));
|
904
|
-
System.out.println(" Number of branch peephole optimizations: " + codeSimplificationBranchCount + disabled(codeSimplificationBranch));
|
905
|
-
System.out.println(" Number of string peephole optimizations: " + codeSimplificationStringCount + disabled(codeSimplificationString));
|
906
|
-
System.out.println(" Number of simplified instructions: " + codeSimplificationAdvancedCount + disabled(codeSimplificationAdvanced));
|
907
|
-
System.out.println(" Number of removed instructions: " + codeRemovalCount + disabled(codeRemovalAdvanced));
|
908
|
-
System.out.println(" Number of removed local variables: " + codeRemovalVariableCount + disabled(codeRemovalVariable));
|
909
|
-
System.out.println(" Number of removed exception blocks: " + codeRemovalExceptionCount + disabled(codeRemovalException));
|
910
|
-
System.out.println(" Number of optimized local variable frames: " + codeAllocationVariableCount + disabled(codeAllocationVariable));
|
911
|
-
}
|
912
|
-
|
913
|
-
return classMarkingFinalCount > 0 ||
|
914
|
-
classMergingVerticalCount > 0 ||
|
915
|
-
classMergingHorizontalCount > 0 ||
|
916
|
-
fieldRemovalWriteonlyCount > 0 ||
|
917
|
-
fieldMarkingPrivateCount > 0 ||
|
918
|
-
methodMarkingPrivateCount > 0 ||
|
919
|
-
methodMarkingStaticCount > 0 ||
|
920
|
-
methodMarkingFinalCount > 0 ||
|
921
|
-
fieldPropagationValueCount > 0 ||
|
922
|
-
methodRemovalParameterCount > 0 ||
|
923
|
-
methodPropagationParameterCount > 0 ||
|
924
|
-
methodPropagationReturnvalueCount > 0 ||
|
925
|
-
methodInliningShortCount > 0 ||
|
926
|
-
methodInliningUniqueCount > 0 ||
|
927
|
-
methodInliningTailrecursionCount > 0 ||
|
928
|
-
codeMergingCount > 0 ||
|
929
|
-
codeSimplificationVariableCount > 0 ||
|
930
|
-
codeSimplificationArithmeticCount > 0 ||
|
931
|
-
codeSimplificationCastCount > 0 ||
|
932
|
-
codeSimplificationFieldCount > 0 ||
|
933
|
-
codeSimplificationBranchCount > 0 ||
|
934
|
-
codeSimplificationStringCount > 0 ||
|
935
|
-
codeSimplificationAdvancedCount > 0 ||
|
936
|
-
codeRemovalCount > 0 ||
|
937
|
-
codeRemovalVariableCount > 0 ||
|
938
|
-
codeRemovalExceptionCount > 0 ||
|
939
|
-
codeAllocationVariableCount > 0;
|
940
|
-
}
|
941
|
-
|
942
|
-
|
943
|
-
/**
|
944
|
-
* Returns a String indicating whether the given flag is enabled or
|
945
|
-
* disabled.
|
946
|
-
*/
|
947
|
-
private String disabled(boolean flag)
|
948
|
-
{
|
949
|
-
return flag ? "" : " (disabled)";
|
950
|
-
}
|
951
|
-
|
952
|
-
|
953
|
-
/**
|
954
|
-
* Returns a String indicating whether the given flags are enabled or
|
955
|
-
* disabled.
|
956
|
-
*/
|
957
|
-
private String disabled(boolean flag1, boolean flag2)
|
958
|
-
{
|
959
|
-
return flag1 && flag2 ? "" :
|
960
|
-
flag1 || flag2 ? " (partially disabled)" :
|
961
|
-
" (disabled)";
|
962
|
-
}
|
963
|
-
}
|