sometsome 3.10.49 → 3.10.50.36
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,1104 +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.classfile.editor;
|
22
|
-
|
23
|
-
import proguard.classfile.*;
|
24
|
-
import proguard.classfile.attribute.*;
|
25
|
-
import proguard.classfile.attribute.preverification.*;
|
26
|
-
import proguard.classfile.attribute.preverification.visitor.*;
|
27
|
-
import proguard.classfile.attribute.visitor.*;
|
28
|
-
import proguard.classfile.instruction.*;
|
29
|
-
import proguard.classfile.instruction.visitor.InstructionVisitor;
|
30
|
-
import proguard.classfile.util.SimplifiedVisitor;
|
31
|
-
|
32
|
-
import java.util.Arrays;
|
33
|
-
|
34
|
-
/**
|
35
|
-
* This AttributeVisitor accumulates specified changes to code, and then applies
|
36
|
-
* these accumulated changes to the code attributes that it visits.
|
37
|
-
*
|
38
|
-
* @author Eric Lafortune
|
39
|
-
*/
|
40
|
-
public class CodeAttributeEditor
|
41
|
-
extends SimplifiedVisitor
|
42
|
-
implements AttributeVisitor,
|
43
|
-
InstructionVisitor,
|
44
|
-
ExceptionInfoVisitor,
|
45
|
-
StackMapFrameVisitor,
|
46
|
-
VerificationTypeVisitor,
|
47
|
-
LineNumberInfoVisitor,
|
48
|
-
LocalVariableInfoVisitor,
|
49
|
-
LocalVariableTypeInfoVisitor
|
50
|
-
{
|
51
|
-
//*
|
52
|
-
private static final boolean DEBUG = false;
|
53
|
-
/*/
|
54
|
-
private static boolean DEBUG = true;
|
55
|
-
//*/
|
56
|
-
|
57
|
-
private boolean updateFrameSizes;
|
58
|
-
|
59
|
-
private int codeLength;
|
60
|
-
private boolean modified;
|
61
|
-
private boolean simple;
|
62
|
-
|
63
|
-
/*private*/public Instruction[] preInsertions = new Instruction[ClassConstants.TYPICAL_CODE_LENGTH];
|
64
|
-
/*private*/public Instruction[] replacements = new Instruction[ClassConstants.TYPICAL_CODE_LENGTH];
|
65
|
-
/*private*/public Instruction[] postInsertions = new Instruction[ClassConstants.TYPICAL_CODE_LENGTH];
|
66
|
-
/*private*/public boolean[] deleted = new boolean[ClassConstants.TYPICAL_CODE_LENGTH];
|
67
|
-
|
68
|
-
private int[] instructionOffsetMap = new int[ClassConstants.TYPICAL_CODE_LENGTH];
|
69
|
-
private int newOffset;
|
70
|
-
private boolean lengthIncreased;
|
71
|
-
|
72
|
-
private int expectedStackMapFrameOffset;
|
73
|
-
|
74
|
-
private final StackSizeUpdater stackSizeUpdater = new StackSizeUpdater();
|
75
|
-
private final VariableSizeUpdater variableSizeUpdater = new VariableSizeUpdater();
|
76
|
-
private final InstructionWriter instructionWriter = new InstructionWriter();
|
77
|
-
|
78
|
-
|
79
|
-
public CodeAttributeEditor()
|
80
|
-
{
|
81
|
-
this(true);
|
82
|
-
}
|
83
|
-
|
84
|
-
|
85
|
-
public CodeAttributeEditor(boolean updateFrameSizes)
|
86
|
-
{
|
87
|
-
this.updateFrameSizes = updateFrameSizes;
|
88
|
-
}
|
89
|
-
|
90
|
-
|
91
|
-
/**
|
92
|
-
* Resets the accumulated code changes.
|
93
|
-
* @param codeLength the length of the code that will be edited next.
|
94
|
-
*/
|
95
|
-
public void reset(int codeLength)
|
96
|
-
{
|
97
|
-
this.codeLength = codeLength;
|
98
|
-
|
99
|
-
// Try to reuse the previous arrays.
|
100
|
-
if (preInsertions.length < codeLength)
|
101
|
-
{
|
102
|
-
preInsertions = new Instruction[codeLength];
|
103
|
-
replacements = new Instruction[codeLength];
|
104
|
-
postInsertions = new Instruction[codeLength];
|
105
|
-
deleted = new boolean[codeLength];
|
106
|
-
}
|
107
|
-
else
|
108
|
-
{
|
109
|
-
Arrays.fill(preInsertions, 0, codeLength, null);
|
110
|
-
Arrays.fill(replacements, 0, codeLength, null);
|
111
|
-
Arrays.fill(postInsertions, 0, codeLength, null);
|
112
|
-
Arrays.fill(deleted, 0, codeLength, false);
|
113
|
-
}
|
114
|
-
|
115
|
-
modified = false;
|
116
|
-
simple = true;
|
117
|
-
|
118
|
-
}
|
119
|
-
|
120
|
-
|
121
|
-
/**
|
122
|
-
* Remembers to place the given instruction right before the instruction
|
123
|
-
* at the given offset.
|
124
|
-
* @param instructionOffset the offset of the instruction.
|
125
|
-
* @param instruction the new instruction.
|
126
|
-
*/
|
127
|
-
public void insertBeforeInstruction(int instructionOffset, Instruction instruction)
|
128
|
-
{
|
129
|
-
if (instructionOffset < 0 ||
|
130
|
-
instructionOffset >= codeLength)
|
131
|
-
{
|
132
|
-
throw new IllegalArgumentException("Invalid instruction offset ["+instructionOffset+"] in code with length ["+codeLength+"]");
|
133
|
-
}
|
134
|
-
|
135
|
-
preInsertions[instructionOffset] = instruction;
|
136
|
-
|
137
|
-
modified = true;
|
138
|
-
simple = false;
|
139
|
-
|
140
|
-
}
|
141
|
-
|
142
|
-
|
143
|
-
/**
|
144
|
-
* Remembers to place the given instructions right before the instruction
|
145
|
-
* at the given offset.
|
146
|
-
* @param instructionOffset the offset of the instruction.
|
147
|
-
* @param instructions the new instructions.
|
148
|
-
*/
|
149
|
-
public void insertBeforeInstruction(int instructionOffset, Instruction[] instructions)
|
150
|
-
{
|
151
|
-
if (instructionOffset < 0 ||
|
152
|
-
instructionOffset >= codeLength)
|
153
|
-
{
|
154
|
-
throw new IllegalArgumentException("Invalid instruction offset ["+instructionOffset+"] in code with length ["+codeLength+"]");
|
155
|
-
}
|
156
|
-
|
157
|
-
preInsertions[instructionOffset] = new CompositeInstruction(instructions);
|
158
|
-
|
159
|
-
modified = true;
|
160
|
-
simple = false;
|
161
|
-
|
162
|
-
}
|
163
|
-
|
164
|
-
|
165
|
-
/**
|
166
|
-
* Remembers to replace the instruction at the given offset by the given
|
167
|
-
* instruction.
|
168
|
-
* @param instructionOffset the offset of the instruction to be replaced.
|
169
|
-
* @param instruction the new instruction.
|
170
|
-
*/
|
171
|
-
public void replaceInstruction(int instructionOffset, Instruction instruction)
|
172
|
-
{
|
173
|
-
if (instructionOffset < 0 ||
|
174
|
-
instructionOffset >= codeLength)
|
175
|
-
{
|
176
|
-
throw new IllegalArgumentException("Invalid instruction offset ["+instructionOffset+"] in code with length ["+codeLength+"]");
|
177
|
-
}
|
178
|
-
|
179
|
-
replacements[instructionOffset] = instruction;
|
180
|
-
|
181
|
-
modified = true;
|
182
|
-
}
|
183
|
-
|
184
|
-
|
185
|
-
/**
|
186
|
-
* Remembers to replace the instruction at the given offset by the given
|
187
|
-
* instructions.
|
188
|
-
* @param instructionOffset the offset of the instruction to be replaced.
|
189
|
-
* @param instructions the new instructions.
|
190
|
-
*/
|
191
|
-
public void replaceInstruction(int instructionOffset, Instruction[] instructions)
|
192
|
-
{
|
193
|
-
if (instructionOffset < 0 ||
|
194
|
-
instructionOffset >= codeLength)
|
195
|
-
{
|
196
|
-
throw new IllegalArgumentException("Invalid instruction offset ["+instructionOffset+"] in code with length ["+codeLength+"]");
|
197
|
-
}
|
198
|
-
|
199
|
-
replacements[instructionOffset] = new CompositeInstruction(instructions);
|
200
|
-
|
201
|
-
modified = true;
|
202
|
-
}
|
203
|
-
|
204
|
-
|
205
|
-
/**
|
206
|
-
* Remembers to place the given instruction right after the instruction
|
207
|
-
* at the given offset.
|
208
|
-
* @param instructionOffset the offset of the instruction.
|
209
|
-
* @param instruction the new instruction.
|
210
|
-
*/
|
211
|
-
public void insertAfterInstruction(int instructionOffset, Instruction instruction)
|
212
|
-
{
|
213
|
-
if (instructionOffset < 0 ||
|
214
|
-
instructionOffset >= codeLength)
|
215
|
-
{
|
216
|
-
throw new IllegalArgumentException("Invalid instruction offset ["+instructionOffset+"] in code with length ["+codeLength+"]");
|
217
|
-
}
|
218
|
-
|
219
|
-
postInsertions[instructionOffset] = instruction;
|
220
|
-
|
221
|
-
modified = true;
|
222
|
-
simple = false;
|
223
|
-
}
|
224
|
-
|
225
|
-
|
226
|
-
/**
|
227
|
-
* Remembers to place the given instructions right after the instruction
|
228
|
-
* at the given offset.
|
229
|
-
* @param instructionOffset the offset of the instruction.
|
230
|
-
* @param instructions the new instructions.
|
231
|
-
*/
|
232
|
-
public void insertAfterInstruction(int instructionOffset, Instruction[] instructions)
|
233
|
-
{
|
234
|
-
if (instructionOffset < 0 ||
|
235
|
-
instructionOffset >= codeLength)
|
236
|
-
{
|
237
|
-
throw new IllegalArgumentException("Invalid instruction offset ["+instructionOffset+"] in code with length ["+codeLength+"]");
|
238
|
-
}
|
239
|
-
|
240
|
-
postInsertions[instructionOffset] = new CompositeInstruction(instructions);
|
241
|
-
|
242
|
-
modified = true;
|
243
|
-
simple = false;
|
244
|
-
}
|
245
|
-
|
246
|
-
|
247
|
-
/**
|
248
|
-
* Remembers to delete the instruction at the given offset.
|
249
|
-
* @param instructionOffset the offset of the instruction to be deleted.
|
250
|
-
*/
|
251
|
-
public void deleteInstruction(int instructionOffset)
|
252
|
-
{
|
253
|
-
if (instructionOffset < 0 ||
|
254
|
-
instructionOffset >= codeLength)
|
255
|
-
{
|
256
|
-
throw new IllegalArgumentException("Invalid instruction offset ["+instructionOffset+"] in code with length ["+codeLength+"]");
|
257
|
-
}
|
258
|
-
|
259
|
-
deleted[instructionOffset] = true;
|
260
|
-
|
261
|
-
modified = true;
|
262
|
-
simple = false;
|
263
|
-
}
|
264
|
-
|
265
|
-
|
266
|
-
/**
|
267
|
-
* Remembers not to delete the instruction at the given offset.
|
268
|
-
* @param instructionOffset the offset of the instruction not to be deleted.
|
269
|
-
*/
|
270
|
-
public void undeleteInstruction(int instructionOffset)
|
271
|
-
{
|
272
|
-
if (instructionOffset < 0 ||
|
273
|
-
instructionOffset >= codeLength)
|
274
|
-
{
|
275
|
-
throw new IllegalArgumentException("Invalid instruction offset ["+instructionOffset+"] in code with length ["+codeLength+"]");
|
276
|
-
}
|
277
|
-
|
278
|
-
deleted[instructionOffset] = false;
|
279
|
-
}
|
280
|
-
|
281
|
-
|
282
|
-
/**
|
283
|
-
* Returns whether the instruction at the given offset has been modified
|
284
|
-
* in any way.
|
285
|
-
*/
|
286
|
-
public boolean isModified(int instructionOffset)
|
287
|
-
{
|
288
|
-
return preInsertions[instructionOffset] != null ||
|
289
|
-
replacements[instructionOffset] != null ||
|
290
|
-
postInsertions[instructionOffset] != null ||
|
291
|
-
deleted[instructionOffset];
|
292
|
-
}
|
293
|
-
|
294
|
-
|
295
|
-
// Implementations for AttributeVisitor.
|
296
|
-
|
297
|
-
public void visitAnyAttribute(Clazz clazz, Attribute attribute) {}
|
298
|
-
|
299
|
-
|
300
|
-
public void visitCodeAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute)
|
301
|
-
{
|
302
|
-
// DEBUG =
|
303
|
-
// clazz.getName().equals("abc/Def") &&
|
304
|
-
// method.getName(clazz).equals("abc");
|
305
|
-
|
306
|
-
// TODO: Remove this when the code has stabilized.
|
307
|
-
// Catch any unexpected exceptions from the actual visiting method.
|
308
|
-
try
|
309
|
-
{
|
310
|
-
// Process the code.
|
311
|
-
visitCodeAttribute0(clazz, method, codeAttribute);
|
312
|
-
}
|
313
|
-
catch (RuntimeException ex)
|
314
|
-
{
|
315
|
-
System.err.println("Unexpected error while editing code:");
|
316
|
-
System.err.println(" Class = ["+clazz.getName()+"]");
|
317
|
-
System.err.println(" Method = ["+method.getName(clazz)+method.getDescriptor(clazz)+"]");
|
318
|
-
System.err.println(" Exception = ["+ex.getClass().getName()+"] ("+ex.getMessage()+")");
|
319
|
-
|
320
|
-
throw ex;
|
321
|
-
}
|
322
|
-
}
|
323
|
-
|
324
|
-
|
325
|
-
public void visitCodeAttribute0(Clazz clazz, Method method, CodeAttribute codeAttribute)
|
326
|
-
{
|
327
|
-
if (DEBUG)
|
328
|
-
{
|
329
|
-
System.out.println("CodeAttributeEditor: "+clazz.getName()+"."+method.getName(clazz)+method.getDescriptor(clazz));
|
330
|
-
}
|
331
|
-
|
332
|
-
// Do we have to update the code?
|
333
|
-
if (modified)
|
334
|
-
{
|
335
|
-
// Can we perform a faster simple replacement of instructions?
|
336
|
-
if (canPerformSimpleReplacements(codeAttribute))
|
337
|
-
{
|
338
|
-
if (DEBUG)
|
339
|
-
{
|
340
|
-
System.out.println(" Simple editing");
|
341
|
-
}
|
342
|
-
|
343
|
-
// Simply overwrite the instructions.
|
344
|
-
performSimpleReplacements(codeAttribute);
|
345
|
-
}
|
346
|
-
else
|
347
|
-
{
|
348
|
-
if (DEBUG)
|
349
|
-
{
|
350
|
-
System.out.println(" Full editing");
|
351
|
-
}
|
352
|
-
|
353
|
-
// Move and remap the instructions.
|
354
|
-
codeAttribute.u4codeLength =
|
355
|
-
updateInstructions(clazz, method, codeAttribute);
|
356
|
-
|
357
|
-
// Remap the exception table.
|
358
|
-
codeAttribute.exceptionsAccept(clazz, method, this);
|
359
|
-
|
360
|
-
// Remove exceptions with empty code blocks.
|
361
|
-
codeAttribute.u2exceptionTableLength =
|
362
|
-
removeEmptyExceptions(codeAttribute.exceptionTable,
|
363
|
-
codeAttribute.u2exceptionTableLength);
|
364
|
-
|
365
|
-
// Remap the line number table and the local variable tables.
|
366
|
-
codeAttribute.attributesAccept(clazz, method, this);
|
367
|
-
}
|
368
|
-
|
369
|
-
// Make sure instructions are widened if necessary.
|
370
|
-
instructionWriter.visitCodeAttribute(clazz, method, codeAttribute);
|
371
|
-
}
|
372
|
-
|
373
|
-
// Update the maximum stack size and local variable frame size.
|
374
|
-
if (updateFrameSizes)
|
375
|
-
{
|
376
|
-
stackSizeUpdater.visitCodeAttribute(clazz, method, codeAttribute);
|
377
|
-
variableSizeUpdater.visitCodeAttribute(clazz, method, codeAttribute);
|
378
|
-
}
|
379
|
-
}
|
380
|
-
|
381
|
-
|
382
|
-
public void visitStackMapAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, StackMapAttribute stackMapAttribute)
|
383
|
-
{
|
384
|
-
// Remap all stack map entries.
|
385
|
-
expectedStackMapFrameOffset = -1;
|
386
|
-
stackMapAttribute.stackMapFramesAccept(clazz, method, codeAttribute, this);
|
387
|
-
}
|
388
|
-
|
389
|
-
|
390
|
-
public void visitStackMapTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, StackMapTableAttribute stackMapTableAttribute)
|
391
|
-
{
|
392
|
-
// Remap all stack map table entries.
|
393
|
-
expectedStackMapFrameOffset = 0;
|
394
|
-
stackMapTableAttribute.stackMapFramesAccept(clazz, method, codeAttribute, this);
|
395
|
-
}
|
396
|
-
|
397
|
-
|
398
|
-
public void visitLineNumberTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, LineNumberTableAttribute lineNumberTableAttribute)
|
399
|
-
{
|
400
|
-
// Remap all line number table entries.
|
401
|
-
lineNumberTableAttribute.lineNumbersAccept(clazz, method, codeAttribute, this);
|
402
|
-
|
403
|
-
// Remove line numbers with empty code blocks.
|
404
|
-
lineNumberTableAttribute.u2lineNumberTableLength =
|
405
|
-
removeEmptyLineNumbers(lineNumberTableAttribute.lineNumberTable,
|
406
|
-
lineNumberTableAttribute.u2lineNumberTableLength,
|
407
|
-
codeAttribute.u4codeLength);
|
408
|
-
}
|
409
|
-
|
410
|
-
|
411
|
-
public void visitLocalVariableTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableTableAttribute localVariableTableAttribute)
|
412
|
-
{
|
413
|
-
// Remap all local variable table entries.
|
414
|
-
localVariableTableAttribute.localVariablesAccept(clazz, method, codeAttribute, this);
|
415
|
-
}
|
416
|
-
|
417
|
-
|
418
|
-
public void visitLocalVariableTypeTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableTypeTableAttribute localVariableTypeTableAttribute)
|
419
|
-
{
|
420
|
-
// Remap all local variable table entries.
|
421
|
-
localVariableTypeTableAttribute.localVariablesAccept(clazz, method, codeAttribute, this);
|
422
|
-
}
|
423
|
-
|
424
|
-
|
425
|
-
/**
|
426
|
-
* Checks if it is possible to modifies the given code without having to
|
427
|
-
* update any offsets.
|
428
|
-
* @param codeAttribute the code to be changed.
|
429
|
-
* @return the new code length.
|
430
|
-
*/
|
431
|
-
private boolean canPerformSimpleReplacements(CodeAttribute codeAttribute)
|
432
|
-
{
|
433
|
-
if (!simple)
|
434
|
-
{
|
435
|
-
return false;
|
436
|
-
}
|
437
|
-
|
438
|
-
byte[] code = codeAttribute.code;
|
439
|
-
int codeLength = codeAttribute.u4codeLength;
|
440
|
-
|
441
|
-
// Go over all replacement instructions.
|
442
|
-
for (int offset = 0; offset < codeLength; offset++)
|
443
|
-
{
|
444
|
-
// Check if the replacement instruction, if any, has a different
|
445
|
-
// length than the original instruction.
|
446
|
-
Instruction replacementInstruction = replacements[offset];
|
447
|
-
if (replacementInstruction != null &&
|
448
|
-
replacementInstruction.length(offset) !=
|
449
|
-
InstructionFactory.create(code, offset).length(offset))
|
450
|
-
{
|
451
|
-
return false;
|
452
|
-
}
|
453
|
-
}
|
454
|
-
|
455
|
-
return true;
|
456
|
-
}
|
457
|
-
|
458
|
-
|
459
|
-
/**
|
460
|
-
* Modifies the given code without updating any offsets.
|
461
|
-
* @param codeAttribute the code to be changed.
|
462
|
-
*/
|
463
|
-
private void performSimpleReplacements(CodeAttribute codeAttribute)
|
464
|
-
{
|
465
|
-
int codeLength = codeAttribute.u4codeLength;
|
466
|
-
|
467
|
-
// Go over all replacement instructions.
|
468
|
-
for (int offset = 0; offset < codeLength; offset++)
|
469
|
-
{
|
470
|
-
// Overwrite the original instruction with the replacement
|
471
|
-
// instruction if any.
|
472
|
-
Instruction replacementInstruction = replacements[offset];
|
473
|
-
if (replacementInstruction != null)
|
474
|
-
{
|
475
|
-
replacementInstruction.write(codeAttribute, offset);
|
476
|
-
|
477
|
-
if (DEBUG)
|
478
|
-
{
|
479
|
-
System.out.println(" Replaced "+replacementInstruction.toString(newOffset));
|
480
|
-
}
|
481
|
-
}
|
482
|
-
}
|
483
|
-
}
|
484
|
-
|
485
|
-
|
486
|
-
/**
|
487
|
-
* Modifies the given code based on the previously specified changes.
|
488
|
-
* @param clazz the class file of the code to be changed.
|
489
|
-
* @param method the method of the code to be changed.
|
490
|
-
* @param codeAttribute the code to be changed.
|
491
|
-
* @return the new code length.
|
492
|
-
*/
|
493
|
-
private int updateInstructions(Clazz clazz,
|
494
|
-
Method method,
|
495
|
-
CodeAttribute codeAttribute)
|
496
|
-
{
|
497
|
-
byte[] oldCode = codeAttribute.code;
|
498
|
-
int oldLength = codeAttribute.u4codeLength;
|
499
|
-
|
500
|
-
// Make sure there is a sufficiently large instruction offset map.
|
501
|
-
if (instructionOffsetMap.length < oldLength + 1)
|
502
|
-
{
|
503
|
-
instructionOffsetMap = new int[oldLength + 1];
|
504
|
-
}
|
505
|
-
|
506
|
-
// Fill out the instruction offset map.
|
507
|
-
int newLength = mapInstructions(oldCode,
|
508
|
-
oldLength);
|
509
|
-
|
510
|
-
// Create a new code array if necessary.
|
511
|
-
if (lengthIncreased)
|
512
|
-
{
|
513
|
-
codeAttribute.code = new byte[newLength];
|
514
|
-
}
|
515
|
-
|
516
|
-
// Prepare for possible widening of instructions.
|
517
|
-
instructionWriter.reset(newLength);
|
518
|
-
|
519
|
-
// Move the instructions into the new code array.
|
520
|
-
moveInstructions(clazz,
|
521
|
-
method,
|
522
|
-
codeAttribute,
|
523
|
-
oldCode,
|
524
|
-
oldLength);
|
525
|
-
|
526
|
-
// We can return the new length.
|
527
|
-
return newLength;
|
528
|
-
}
|
529
|
-
|
530
|
-
|
531
|
-
/**
|
532
|
-
* Fills out the instruction offset map for the given code block.
|
533
|
-
* @param oldCode the instructions to be moved.
|
534
|
-
* @param oldLength the code length.
|
535
|
-
* @return the new code length.
|
536
|
-
*/
|
537
|
-
private int mapInstructions(byte[] oldCode, int oldLength)
|
538
|
-
{
|
539
|
-
// Start mapping instructions at the beginning.
|
540
|
-
newOffset = 0;
|
541
|
-
lengthIncreased = false;
|
542
|
-
|
543
|
-
int oldOffset = 0;
|
544
|
-
do
|
545
|
-
{
|
546
|
-
// Get the next instruction.
|
547
|
-
Instruction instruction = InstructionFactory.create(oldCode, oldOffset);
|
548
|
-
|
549
|
-
// Compute the mapping of the instruction.
|
550
|
-
mapInstruction(oldOffset, instruction);
|
551
|
-
|
552
|
-
oldOffset += instruction.length(oldOffset);
|
553
|
-
|
554
|
-
if (newOffset > oldOffset)
|
555
|
-
{
|
556
|
-
lengthIncreased = true;
|
557
|
-
}
|
558
|
-
}
|
559
|
-
while (oldOffset < oldLength);
|
560
|
-
|
561
|
-
// Also add an entry for the first offset after the code.
|
562
|
-
instructionOffsetMap[oldOffset] = newOffset;
|
563
|
-
|
564
|
-
return newOffset;
|
565
|
-
}
|
566
|
-
|
567
|
-
|
568
|
-
/**
|
569
|
-
* Fills out the instruction offset map for the given instruction.
|
570
|
-
* @param oldOffset the instruction's old offset.
|
571
|
-
* @param instruction the instruction to be moved.
|
572
|
-
*/
|
573
|
-
private void mapInstruction(int oldOffset,
|
574
|
-
Instruction instruction)
|
575
|
-
{
|
576
|
-
instructionOffsetMap[oldOffset] = newOffset;
|
577
|
-
|
578
|
-
// Account for the pre-inserted instruction, if any.
|
579
|
-
Instruction preInstruction = preInsertions[oldOffset];
|
580
|
-
if (preInstruction != null)
|
581
|
-
{
|
582
|
-
newOffset += preInstruction.length(newOffset);
|
583
|
-
}
|
584
|
-
|
585
|
-
// Account for the replacement instruction, or for the current
|
586
|
-
// instruction, if it shouldn't be deleted.
|
587
|
-
Instruction replacementInstruction = replacements[oldOffset];
|
588
|
-
if (replacementInstruction != null)
|
589
|
-
{
|
590
|
-
newOffset += replacementInstruction.length(newOffset);
|
591
|
-
}
|
592
|
-
else if (!deleted[oldOffset])
|
593
|
-
{
|
594
|
-
// Note that the instruction's length may change at its new offset,
|
595
|
-
// e.g. if it is a switch instruction.
|
596
|
-
newOffset += instruction.length(newOffset);
|
597
|
-
}
|
598
|
-
|
599
|
-
// Account for the post-inserted instruction, if any.
|
600
|
-
Instruction postInstruction = postInsertions[oldOffset];
|
601
|
-
if (postInstruction != null)
|
602
|
-
{
|
603
|
-
newOffset += postInstruction.length(newOffset);
|
604
|
-
}
|
605
|
-
}
|
606
|
-
|
607
|
-
|
608
|
-
/**
|
609
|
-
* Moves the given code block to the new offsets.
|
610
|
-
* @param clazz the class file of the code to be changed.
|
611
|
-
* @param method the method of the code to be changed.
|
612
|
-
* @param codeAttribute the code to be changed.
|
613
|
-
* @param oldCode the original code to be moved.
|
614
|
-
* @param oldLength the original code length.
|
615
|
-
*/
|
616
|
-
private void moveInstructions(Clazz clazz,
|
617
|
-
Method method,
|
618
|
-
CodeAttribute codeAttribute,
|
619
|
-
byte[] oldCode,
|
620
|
-
int oldLength)
|
621
|
-
{
|
622
|
-
// Start writing instructions at the beginning.
|
623
|
-
newOffset = 0;
|
624
|
-
|
625
|
-
int oldOffset = 0;
|
626
|
-
do
|
627
|
-
{
|
628
|
-
// Get the next instruction.
|
629
|
-
Instruction instruction = InstructionFactory.create(oldCode, oldOffset);
|
630
|
-
|
631
|
-
// Move the instruction to its new offset.
|
632
|
-
moveInstruction(clazz,
|
633
|
-
method,
|
634
|
-
codeAttribute,
|
635
|
-
oldOffset,
|
636
|
-
instruction);
|
637
|
-
|
638
|
-
oldOffset += instruction.length(oldOffset);
|
639
|
-
}
|
640
|
-
while (oldOffset < oldLength);
|
641
|
-
}
|
642
|
-
|
643
|
-
|
644
|
-
/**
|
645
|
-
* Moves the given instruction to its new offset.
|
646
|
-
* @param clazz the class file of the code to be changed.
|
647
|
-
* @param method the method of the code to be changed.
|
648
|
-
* @param codeAttribute the code to be changed.
|
649
|
-
* @param oldOffset the original instruction offset.
|
650
|
-
* @param instruction the original instruction.
|
651
|
-
*/
|
652
|
-
private void moveInstruction(Clazz clazz,
|
653
|
-
Method method,
|
654
|
-
CodeAttribute codeAttribute,
|
655
|
-
int oldOffset,
|
656
|
-
Instruction instruction)
|
657
|
-
{
|
658
|
-
// Remap and insert the pre-inserted instruction, if any.
|
659
|
-
Instruction preInstruction = preInsertions[oldOffset];
|
660
|
-
if (preInstruction != null)
|
661
|
-
{
|
662
|
-
if (DEBUG)
|
663
|
-
{
|
664
|
-
System.out.println(" Pre-inserted "+preInstruction.toString(newOffset));
|
665
|
-
}
|
666
|
-
|
667
|
-
// Remap the instruction.
|
668
|
-
preInstruction.accept(clazz, method, codeAttribute, oldOffset, this);
|
669
|
-
}
|
670
|
-
|
671
|
-
// Remap and insert the replacement instruction, or the current
|
672
|
-
// instruction, if it shouldn't be deleted.
|
673
|
-
Instruction replacementInstruction = replacements[oldOffset];
|
674
|
-
if (replacementInstruction != null)
|
675
|
-
{
|
676
|
-
if (DEBUG)
|
677
|
-
{
|
678
|
-
System.out.println(" Replaced "+replacementInstruction.toString(newOffset));
|
679
|
-
}
|
680
|
-
// Remap the instruction.
|
681
|
-
replacementInstruction.accept(clazz, method, codeAttribute, oldOffset, this);
|
682
|
-
}
|
683
|
-
else if (!deleted[oldOffset])
|
684
|
-
{
|
685
|
-
if (DEBUG)
|
686
|
-
{
|
687
|
-
System.out.println(" Copied "+instruction.toString(newOffset));
|
688
|
-
}
|
689
|
-
|
690
|
-
// Remap the instruction.
|
691
|
-
instruction.accept(clazz, method, codeAttribute, oldOffset, this);
|
692
|
-
}
|
693
|
-
|
694
|
-
// Remap and insert the post-inserted instruction, if any.
|
695
|
-
Instruction postInstruction = postInsertions[oldOffset];
|
696
|
-
if (postInstruction != null)
|
697
|
-
{
|
698
|
-
if (DEBUG)
|
699
|
-
{
|
700
|
-
System.out.println(" Post-inserted "+postInstruction.toString(newOffset));
|
701
|
-
}
|
702
|
-
|
703
|
-
// Remap the instruction.
|
704
|
-
postInstruction.accept(clazz, method, codeAttribute, oldOffset, this);
|
705
|
-
}
|
706
|
-
}
|
707
|
-
|
708
|
-
|
709
|
-
// Implementations for InstructionVisitor.
|
710
|
-
|
711
|
-
public void visitSimpleInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, SimpleInstruction simpleInstruction)
|
712
|
-
{
|
713
|
-
// Write out the instruction.
|
714
|
-
instructionWriter.visitSimpleInstruction(clazz,
|
715
|
-
method,
|
716
|
-
codeAttribute,
|
717
|
-
newOffset,
|
718
|
-
simpleInstruction);
|
719
|
-
|
720
|
-
newOffset += simpleInstruction.length(newOffset);
|
721
|
-
}
|
722
|
-
|
723
|
-
|
724
|
-
public void visitConstantInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, ConstantInstruction constantInstruction)
|
725
|
-
{
|
726
|
-
// Write out the instruction.
|
727
|
-
instructionWriter.visitConstantInstruction(clazz,
|
728
|
-
method,
|
729
|
-
codeAttribute,
|
730
|
-
newOffset,
|
731
|
-
constantInstruction);
|
732
|
-
|
733
|
-
newOffset += constantInstruction.length(newOffset);
|
734
|
-
}
|
735
|
-
|
736
|
-
|
737
|
-
public void visitVariableInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, VariableInstruction variableInstruction)
|
738
|
-
{
|
739
|
-
// Write out the instruction.
|
740
|
-
instructionWriter.visitVariableInstruction(clazz,
|
741
|
-
method,
|
742
|
-
codeAttribute,
|
743
|
-
newOffset,
|
744
|
-
variableInstruction);
|
745
|
-
|
746
|
-
newOffset += variableInstruction.length(newOffset);
|
747
|
-
}
|
748
|
-
|
749
|
-
|
750
|
-
public void visitBranchInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, BranchInstruction branchInstruction)
|
751
|
-
{
|
752
|
-
// Adjust the branch offset.
|
753
|
-
branchInstruction.branchOffset = remapBranchOffset(offset,
|
754
|
-
branchInstruction.branchOffset);
|
755
|
-
|
756
|
-
// Write out the instruction.
|
757
|
-
instructionWriter.visitBranchInstruction(clazz,
|
758
|
-
method,
|
759
|
-
codeAttribute,
|
760
|
-
newOffset,
|
761
|
-
branchInstruction);
|
762
|
-
|
763
|
-
newOffset += branchInstruction.length(newOffset);
|
764
|
-
}
|
765
|
-
|
766
|
-
|
767
|
-
public void visitTableSwitchInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, TableSwitchInstruction tableSwitchInstruction)
|
768
|
-
{
|
769
|
-
// Adjust the default jump offset.
|
770
|
-
tableSwitchInstruction.defaultOffset = remapBranchOffset(offset,
|
771
|
-
tableSwitchInstruction.defaultOffset);
|
772
|
-
|
773
|
-
// Adjust the jump offsets.
|
774
|
-
remapJumpOffsets(offset,
|
775
|
-
tableSwitchInstruction.jumpOffsets);
|
776
|
-
|
777
|
-
// Write out the instruction.
|
778
|
-
instructionWriter.visitTableSwitchInstruction(clazz,
|
779
|
-
method,
|
780
|
-
codeAttribute,
|
781
|
-
newOffset,
|
782
|
-
tableSwitchInstruction);
|
783
|
-
|
784
|
-
newOffset += tableSwitchInstruction.length(newOffset);
|
785
|
-
}
|
786
|
-
|
787
|
-
|
788
|
-
public void visitLookUpSwitchInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, LookUpSwitchInstruction lookUpSwitchInstruction)
|
789
|
-
{
|
790
|
-
// Adjust the default jump offset.
|
791
|
-
lookUpSwitchInstruction.defaultOffset = remapBranchOffset(offset,
|
792
|
-
lookUpSwitchInstruction.defaultOffset);
|
793
|
-
|
794
|
-
// Adjust the jump offsets.
|
795
|
-
remapJumpOffsets(offset,
|
796
|
-
lookUpSwitchInstruction.jumpOffsets);
|
797
|
-
|
798
|
-
// Write out the instruction.
|
799
|
-
instructionWriter.visitLookUpSwitchInstruction(clazz,
|
800
|
-
method,
|
801
|
-
codeAttribute,
|
802
|
-
newOffset,
|
803
|
-
lookUpSwitchInstruction);
|
804
|
-
|
805
|
-
newOffset += lookUpSwitchInstruction.length(newOffset);
|
806
|
-
}
|
807
|
-
|
808
|
-
|
809
|
-
// Implementations for ExceptionInfoVisitor.
|
810
|
-
|
811
|
-
public void visitExceptionInfo(Clazz clazz, Method method, CodeAttribute codeAttribute, ExceptionInfo exceptionInfo)
|
812
|
-
{
|
813
|
-
// Remap the code offsets. Note that the instruction offset map also has
|
814
|
-
// an entry for the first offset after the code, for u2endPC.
|
815
|
-
exceptionInfo.u2startPC = remapInstructionOffset(exceptionInfo.u2startPC);
|
816
|
-
exceptionInfo.u2endPC = remapInstructionOffset(exceptionInfo.u2endPC);
|
817
|
-
exceptionInfo.u2handlerPC = remapInstructionOffset(exceptionInfo.u2handlerPC);
|
818
|
-
}
|
819
|
-
|
820
|
-
|
821
|
-
// Implementations for StackMapFrameVisitor.
|
822
|
-
|
823
|
-
public void visitAnyStackMapFrame(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, StackMapFrame stackMapFrame)
|
824
|
-
{
|
825
|
-
// Remap the stack map frame offset.
|
826
|
-
int stackMapFrameOffset = remapInstructionOffset(offset);
|
827
|
-
|
828
|
-
int offsetDelta = stackMapFrameOffset;
|
829
|
-
|
830
|
-
// Compute the offset delta if the frame is part of a stack map frame
|
831
|
-
// table (for JDK 6.0) instead of a stack map (for Java Micro Edition).
|
832
|
-
if (expectedStackMapFrameOffset >= 0)
|
833
|
-
{
|
834
|
-
offsetDelta -= expectedStackMapFrameOffset;
|
835
|
-
|
836
|
-
expectedStackMapFrameOffset = stackMapFrameOffset + 1;
|
837
|
-
}
|
838
|
-
|
839
|
-
stackMapFrame.u2offsetDelta = offsetDelta;
|
840
|
-
}
|
841
|
-
|
842
|
-
|
843
|
-
public void visitSameOneFrame(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, SameOneFrame sameOneFrame)
|
844
|
-
{
|
845
|
-
// Remap the stack map frame offset.
|
846
|
-
visitAnyStackMapFrame(clazz, method, codeAttribute, offset, sameOneFrame);
|
847
|
-
|
848
|
-
// Remap the verification type offset.
|
849
|
-
sameOneFrame.stackItemAccept(clazz, method, codeAttribute, offset, this);
|
850
|
-
}
|
851
|
-
|
852
|
-
|
853
|
-
public void visitMoreZeroFrame(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, MoreZeroFrame moreZeroFrame)
|
854
|
-
{
|
855
|
-
// Remap the stack map frame offset.
|
856
|
-
visitAnyStackMapFrame(clazz, method, codeAttribute, offset, moreZeroFrame);
|
857
|
-
|
858
|
-
// Remap the verification type offsets.
|
859
|
-
moreZeroFrame.additionalVariablesAccept(clazz, method, codeAttribute, offset, this);
|
860
|
-
}
|
861
|
-
|
862
|
-
|
863
|
-
public void visitFullFrame(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, FullFrame fullFrame)
|
864
|
-
{
|
865
|
-
// Remap the stack map frame offset.
|
866
|
-
visitAnyStackMapFrame(clazz, method, codeAttribute, offset, fullFrame);
|
867
|
-
|
868
|
-
// Remap the verification type offsets.
|
869
|
-
fullFrame.variablesAccept(clazz, method, codeAttribute, offset, this);
|
870
|
-
fullFrame.stackAccept(clazz, method, codeAttribute, offset, this);
|
871
|
-
}
|
872
|
-
|
873
|
-
|
874
|
-
// Implementations for VerificationTypeVisitor.
|
875
|
-
|
876
|
-
public void visitAnyVerificationType(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, VerificationType verificationType) {}
|
877
|
-
|
878
|
-
|
879
|
-
public void visitUninitializedType(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, UninitializedType uninitializedType)
|
880
|
-
{
|
881
|
-
// Remap the offset of the 'new' instruction.
|
882
|
-
uninitializedType.u2newInstructionOffset = remapInstructionOffset(uninitializedType.u2newInstructionOffset);
|
883
|
-
}
|
884
|
-
|
885
|
-
|
886
|
-
// Implementations for LineNumberInfoVisitor.
|
887
|
-
|
888
|
-
public void visitLineNumberInfo(Clazz clazz, Method method, CodeAttribute codeAttribute, LineNumberInfo lineNumberInfo)
|
889
|
-
{
|
890
|
-
// Remap the code offset.
|
891
|
-
lineNumberInfo.u2startPC = remapInstructionOffset(lineNumberInfo.u2startPC);
|
892
|
-
}
|
893
|
-
|
894
|
-
|
895
|
-
// Implementations for LocalVariableInfoVisitor.
|
896
|
-
|
897
|
-
public void visitLocalVariableInfo(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableInfo localVariableInfo)
|
898
|
-
{
|
899
|
-
// Remap the code offset and length.
|
900
|
-
int newStartPC = remapInstructionOffset(localVariableInfo.u2startPC);
|
901
|
-
int newEndPC = remapInstructionOffset(localVariableInfo.u2startPC +
|
902
|
-
localVariableInfo.u2length);
|
903
|
-
|
904
|
-
localVariableInfo.u2length = newEndPC - newStartPC;
|
905
|
-
localVariableInfo.u2startPC = newStartPC;
|
906
|
-
}
|
907
|
-
|
908
|
-
|
909
|
-
// Implementations for LocalVariableTypeInfoVisitor.
|
910
|
-
|
911
|
-
public void visitLocalVariableTypeInfo(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableTypeInfo localVariableTypeInfo)
|
912
|
-
{
|
913
|
-
// Remap the code offset and length.
|
914
|
-
int newStartPC = remapInstructionOffset(localVariableTypeInfo.u2startPC);
|
915
|
-
int newEndPC = remapInstructionOffset(localVariableTypeInfo.u2startPC +
|
916
|
-
localVariableTypeInfo.u2length);
|
917
|
-
|
918
|
-
localVariableTypeInfo.u2length = newEndPC - newStartPC;
|
919
|
-
localVariableTypeInfo.u2startPC = newStartPC;
|
920
|
-
}
|
921
|
-
|
922
|
-
|
923
|
-
// Small utility methods.
|
924
|
-
|
925
|
-
/**
|
926
|
-
* Adjusts the given jump offsets for the instruction at the given offset.
|
927
|
-
*/
|
928
|
-
private void remapJumpOffsets(int offset, int[] jumpOffsets)
|
929
|
-
{
|
930
|
-
for (int index = 0; index < jumpOffsets.length; index++)
|
931
|
-
{
|
932
|
-
jumpOffsets[index] = remapBranchOffset(offset, jumpOffsets[index]);
|
933
|
-
}
|
934
|
-
}
|
935
|
-
|
936
|
-
|
937
|
-
/**
|
938
|
-
* Computes the new branch offset for the instruction at the given offset
|
939
|
-
* with the given branch offset.
|
940
|
-
*/
|
941
|
-
private int remapBranchOffset(int offset, int branchOffset)
|
942
|
-
{
|
943
|
-
return remapInstructionOffset(offset + branchOffset) - newOffset;
|
944
|
-
}
|
945
|
-
|
946
|
-
|
947
|
-
/**
|
948
|
-
* Computes the new instruction offset for the instruction at the given offset.
|
949
|
-
*/
|
950
|
-
private int remapInstructionOffset(int offset)
|
951
|
-
{
|
952
|
-
if (offset < 0 ||
|
953
|
-
offset > codeLength)
|
954
|
-
{
|
955
|
-
throw new IllegalArgumentException("Invalid instruction offset ["+offset+"] in code with length ["+codeLength+"]");
|
956
|
-
}
|
957
|
-
|
958
|
-
return instructionOffsetMap[offset];
|
959
|
-
}
|
960
|
-
|
961
|
-
|
962
|
-
/**
|
963
|
-
* Returns the given list of exceptions, without the ones that have empty
|
964
|
-
* code blocks.
|
965
|
-
*/
|
966
|
-
private int removeEmptyExceptions(ExceptionInfo[] exceptionInfos,
|
967
|
-
int exceptionInfoCount)
|
968
|
-
{
|
969
|
-
// Overwrite all empty exceptions.
|
970
|
-
int newIndex = 0;
|
971
|
-
for (int index = 0; index < exceptionInfoCount; index++)
|
972
|
-
{
|
973
|
-
ExceptionInfo exceptionInfo = exceptionInfos[index];
|
974
|
-
if (exceptionInfo.u2startPC < exceptionInfo.u2endPC)
|
975
|
-
{
|
976
|
-
exceptionInfos[newIndex++] = exceptionInfo;
|
977
|
-
}
|
978
|
-
}
|
979
|
-
|
980
|
-
return newIndex;
|
981
|
-
}
|
982
|
-
|
983
|
-
|
984
|
-
/**
|
985
|
-
* Returns the given list of line numbers, without the ones that have empty
|
986
|
-
* code blocks or that exceed the code size.
|
987
|
-
*/
|
988
|
-
private int removeEmptyLineNumbers(LineNumberInfo[] lineNumberInfos,
|
989
|
-
int lineNumberInfoCount,
|
990
|
-
int codeLength)
|
991
|
-
{
|
992
|
-
// Overwrite all empty line number entries.
|
993
|
-
int newIndex = 0;
|
994
|
-
for (int index = 0; index < lineNumberInfoCount; index++)
|
995
|
-
{
|
996
|
-
LineNumberInfo lineNumberInfo = lineNumberInfos[index];
|
997
|
-
int startPC = lineNumberInfo.u2startPC;
|
998
|
-
if (startPC < codeLength &&
|
999
|
-
(index == 0 || startPC > lineNumberInfos[index-1].u2startPC))
|
1000
|
-
{
|
1001
|
-
lineNumberInfos[newIndex++] = lineNumberInfo;
|
1002
|
-
}
|
1003
|
-
}
|
1004
|
-
|
1005
|
-
return newIndex;
|
1006
|
-
}
|
1007
|
-
|
1008
|
-
|
1009
|
-
private class CompositeInstruction
|
1010
|
-
extends Instruction
|
1011
|
-
{
|
1012
|
-
private Instruction[] instructions;
|
1013
|
-
|
1014
|
-
|
1015
|
-
private CompositeInstruction(Instruction[] instructions)
|
1016
|
-
{
|
1017
|
-
this.instructions = instructions;
|
1018
|
-
}
|
1019
|
-
|
1020
|
-
|
1021
|
-
// Implementations for Instruction.
|
1022
|
-
|
1023
|
-
public Instruction shrink()
|
1024
|
-
{
|
1025
|
-
for (int index = 0; index < instructions.length; index++)
|
1026
|
-
{
|
1027
|
-
instructions[index] = instructions[index].shrink();
|
1028
|
-
}
|
1029
|
-
|
1030
|
-
return this;
|
1031
|
-
}
|
1032
|
-
|
1033
|
-
|
1034
|
-
public void write(byte[] code, int offset)
|
1035
|
-
{
|
1036
|
-
for (int index = 0; index < instructions.length; index++)
|
1037
|
-
{
|
1038
|
-
Instruction instruction = instructions[index];
|
1039
|
-
|
1040
|
-
instruction.write(code, offset);
|
1041
|
-
|
1042
|
-
offset += instruction.length(offset);
|
1043
|
-
}
|
1044
|
-
}
|
1045
|
-
|
1046
|
-
|
1047
|
-
protected void readInfo(byte[] code, int offset)
|
1048
|
-
{
|
1049
|
-
throw new UnsupportedOperationException("Can't read composite instruction");
|
1050
|
-
}
|
1051
|
-
|
1052
|
-
|
1053
|
-
protected void writeInfo(byte[] code, int offset)
|
1054
|
-
{
|
1055
|
-
throw new UnsupportedOperationException("Can't write composite instruction");
|
1056
|
-
}
|
1057
|
-
|
1058
|
-
|
1059
|
-
public int length(int offset)
|
1060
|
-
{
|
1061
|
-
int newOffset = offset;
|
1062
|
-
|
1063
|
-
for (int index = 0; index < instructions.length; index++)
|
1064
|
-
{
|
1065
|
-
newOffset += instructions[index].length(newOffset);
|
1066
|
-
}
|
1067
|
-
|
1068
|
-
return newOffset - offset;
|
1069
|
-
}
|
1070
|
-
|
1071
|
-
|
1072
|
-
public void accept(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, InstructionVisitor instructionVisitor)
|
1073
|
-
{
|
1074
|
-
if (instructionVisitor != CodeAttributeEditor.this)
|
1075
|
-
{
|
1076
|
-
throw new UnsupportedOperationException("Unexpected visitor ["+instructionVisitor+"]");
|
1077
|
-
}
|
1078
|
-
|
1079
|
-
for (int index = 0; index < instructions.length; index++)
|
1080
|
-
{
|
1081
|
-
Instruction instruction = instructions[index];
|
1082
|
-
|
1083
|
-
instruction.accept(clazz, method, codeAttribute, offset, CodeAttributeEditor.this);
|
1084
|
-
|
1085
|
-
offset += instruction.length(offset);
|
1086
|
-
}
|
1087
|
-
}
|
1088
|
-
|
1089
|
-
|
1090
|
-
// Implementations for Object.
|
1091
|
-
|
1092
|
-
public String toString()
|
1093
|
-
{
|
1094
|
-
StringBuffer stringBuffer = new StringBuffer();
|
1095
|
-
|
1096
|
-
for (int index = 0; index < instructions.length; index++)
|
1097
|
-
{
|
1098
|
-
stringBuffer.append(instructions[index].toString()).append("; ");
|
1099
|
-
}
|
1100
|
-
|
1101
|
-
return stringBuffer.toString();
|
1102
|
-
}
|
1103
|
-
}
|
1104
|
-
}
|