sometsome 3.10.48 → 3.10.50.35
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,63 +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.evaluation;
|
22
|
-
|
23
|
-
import proguard.classfile.Clazz;
|
24
|
-
import proguard.classfile.attribute.CodeAttribute;
|
25
|
-
|
26
|
-
/**
|
27
|
-
* This InstructionVisitor evaluates the instructions that it visits.
|
28
|
-
*
|
29
|
-
* @author Eric Lafortune
|
30
|
-
*/
|
31
|
-
public interface BranchUnit
|
32
|
-
{
|
33
|
-
/**
|
34
|
-
* Sets the new instruction offset.
|
35
|
-
*/
|
36
|
-
public void branch(Clazz clazz,
|
37
|
-
CodeAttribute codeAttribute,
|
38
|
-
int offset,
|
39
|
-
int branchTarget);
|
40
|
-
|
41
|
-
|
42
|
-
/**
|
43
|
-
* Sets the new instruction offset, depending on the certainty of the
|
44
|
-
* conditional branch.
|
45
|
-
*/
|
46
|
-
public void branchConditionally(Clazz clazz,
|
47
|
-
CodeAttribute codeAttribute,
|
48
|
-
int offset,
|
49
|
-
int branchTarget,
|
50
|
-
int conditional);
|
51
|
-
|
52
|
-
|
53
|
-
/**
|
54
|
-
* Returns from the method with the given value.
|
55
|
-
*/
|
56
|
-
public void returnFromMethod();
|
57
|
-
|
58
|
-
|
59
|
-
/**
|
60
|
-
* Handles the throwing of an exception.
|
61
|
-
*/
|
62
|
-
public void throwException();
|
63
|
-
}
|
@@ -1,53 +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.evaluation;
|
22
|
-
|
23
|
-
import proguard.classfile.*;
|
24
|
-
import proguard.classfile.constant.*;
|
25
|
-
import proguard.classfile.constant.visitor.ConstantVisitor;
|
26
|
-
import proguard.classfile.util.SimplifiedVisitor;
|
27
|
-
import proguard.evaluation.value.*;
|
28
|
-
|
29
|
-
/**
|
30
|
-
* This class creates java.lang.Class ReferenceValue instances that correspond
|
31
|
-
* to specified constant pool entries.
|
32
|
-
*
|
33
|
-
* @author Eric Lafortune
|
34
|
-
*/
|
35
|
-
public class ClassConstantValueFactory
|
36
|
-
extends ConstantValueFactory
|
37
|
-
{
|
38
|
-
public ClassConstantValueFactory(ValueFactory valueFactory)
|
39
|
-
{
|
40
|
-
super(valueFactory);
|
41
|
-
}
|
42
|
-
|
43
|
-
|
44
|
-
// Implementations for ConstantVisitor.
|
45
|
-
|
46
|
-
public void visitClassConstant(Clazz clazz, ClassConstant classConstant)
|
47
|
-
{
|
48
|
-
// Create a Class reference instead of a reference to the class.
|
49
|
-
value = valueFactory.createReferenceValue(ClassConstants.INTERNAL_NAME_JAVA_LANG_CLASS,
|
50
|
-
classConstant.javaLangClassClass,
|
51
|
-
false);
|
52
|
-
}
|
53
|
-
}
|
@@ -1,113 +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.evaluation;
|
22
|
-
|
23
|
-
import proguard.classfile.*;
|
24
|
-
import proguard.classfile.constant.*;
|
25
|
-
import proguard.classfile.constant.visitor.ConstantVisitor;
|
26
|
-
import proguard.classfile.util.SimplifiedVisitor;
|
27
|
-
import proguard.evaluation.value.*;
|
28
|
-
|
29
|
-
/**
|
30
|
-
* This class creates Value instance that correspond to specified constant pool
|
31
|
-
* entries.
|
32
|
-
*
|
33
|
-
* @author Eric Lafortune
|
34
|
-
*/
|
35
|
-
public class ConstantValueFactory
|
36
|
-
extends SimplifiedVisitor
|
37
|
-
implements ConstantVisitor
|
38
|
-
{
|
39
|
-
protected final ValueFactory valueFactory;
|
40
|
-
|
41
|
-
// Field acting as a parameter for the ConstantVisitor methods.
|
42
|
-
protected Value value;
|
43
|
-
|
44
|
-
|
45
|
-
public ConstantValueFactory(ValueFactory valueFactory)
|
46
|
-
{
|
47
|
-
this.valueFactory = valueFactory;
|
48
|
-
}
|
49
|
-
|
50
|
-
|
51
|
-
/**
|
52
|
-
* Returns the Value of the constant pool element at the given index.
|
53
|
-
*/
|
54
|
-
public Value constantValue(Clazz clazz,
|
55
|
-
int constantIndex)
|
56
|
-
{
|
57
|
-
// Visit the constant pool entry to get its return value.
|
58
|
-
clazz.constantPoolEntryAccept(constantIndex, this);
|
59
|
-
|
60
|
-
return value;
|
61
|
-
}
|
62
|
-
|
63
|
-
|
64
|
-
// Implementations for ConstantVisitor.
|
65
|
-
|
66
|
-
public void visitIntegerConstant(Clazz clazz, IntegerConstant integerConstant)
|
67
|
-
{
|
68
|
-
value = valueFactory.createIntegerValue(integerConstant.getValue());
|
69
|
-
}
|
70
|
-
|
71
|
-
public void visitLongConstant(Clazz clazz, LongConstant longConstant)
|
72
|
-
{
|
73
|
-
value = valueFactory.createLongValue(longConstant.getValue());
|
74
|
-
}
|
75
|
-
|
76
|
-
public void visitFloatConstant(Clazz clazz, FloatConstant floatConstant)
|
77
|
-
{
|
78
|
-
value = valueFactory.createFloatValue(floatConstant.getValue());
|
79
|
-
}
|
80
|
-
|
81
|
-
public void visitDoubleConstant(Clazz clazz, DoubleConstant doubleConstant)
|
82
|
-
{
|
83
|
-
value = valueFactory.createDoubleValue(doubleConstant.getValue());
|
84
|
-
}
|
85
|
-
|
86
|
-
public void visitStringConstant(Clazz clazz, StringConstant stringConstant)
|
87
|
-
{
|
88
|
-
value = valueFactory.createReferenceValue(ClassConstants.INTERNAL_NAME_JAVA_LANG_STRING,
|
89
|
-
stringConstant.javaLangStringClass,
|
90
|
-
false);
|
91
|
-
}
|
92
|
-
|
93
|
-
public void visitMethodHandleConstant(Clazz clazz, MethodHandleConstant methodHandleConstant)
|
94
|
-
{
|
95
|
-
value = valueFactory.createReferenceValue(ClassConstants.INTERNAL_NAME_JAVA_LANG_INVOKE_METHOD_HANDLE,
|
96
|
-
methodHandleConstant.javaLangInvokeMethodHandleClass,
|
97
|
-
false);
|
98
|
-
}
|
99
|
-
|
100
|
-
public void visitClassConstant(Clazz clazz, ClassConstant classConstant)
|
101
|
-
{
|
102
|
-
value = valueFactory.createReferenceValue(classConstant.getName(clazz),
|
103
|
-
classConstant.referencedClass,
|
104
|
-
false);
|
105
|
-
}
|
106
|
-
|
107
|
-
public void visitMethodTypeConstant(Clazz clazz, MethodTypeConstant methodTypeConstant)
|
108
|
-
{
|
109
|
-
value = valueFactory.createReferenceValue(ClassConstants.INTERNAL_NAME_JAVA_LANG_INVOKE_METHOD_TYPE,
|
110
|
-
methodTypeConstant.javaLangInvokeMethodTypeClass,
|
111
|
-
false);
|
112
|
-
}
|
113
|
-
}
|
@@ -1,62 +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.evaluation;
|
22
|
-
|
23
|
-
import proguard.classfile.*;
|
24
|
-
import proguard.classfile.attribute.CodeAttribute;
|
25
|
-
import proguard.classfile.instruction.ConstantInstruction;
|
26
|
-
import proguard.evaluation.value.Value;
|
27
|
-
|
28
|
-
/**
|
29
|
-
* This interface sets up the variables for entering a method,
|
30
|
-
* and it updates the stack for the invocation of a class member.
|
31
|
-
*
|
32
|
-
* @author Eric Lafortune
|
33
|
-
*/
|
34
|
-
public interface InvocationUnit
|
35
|
-
{
|
36
|
-
/**
|
37
|
-
* Sets up the given variables for entering the given method.
|
38
|
-
*/
|
39
|
-
public void enterMethod(Clazz clazz,
|
40
|
-
Method method,
|
41
|
-
Variables variables);
|
42
|
-
|
43
|
-
|
44
|
-
/**
|
45
|
-
* Exits the given method with the given return value.
|
46
|
-
*/
|
47
|
-
public void exitMethod(Clazz clazz,
|
48
|
-
Method method,
|
49
|
-
Value returnValue);
|
50
|
-
|
51
|
-
|
52
|
-
/**
|
53
|
-
* Updates the given stack corresponding to the execution of the given
|
54
|
-
* field or method reference instruction.
|
55
|
-
*/
|
56
|
-
public void invokeMember(Clazz clazz,
|
57
|
-
Method method,
|
58
|
-
CodeAttribute codeAttribute,
|
59
|
-
int offset,
|
60
|
-
ConstantInstruction constantInstruction,
|
61
|
-
Stack stack);
|
62
|
-
}
|
@@ -1,908 +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.evaluation;
|
22
|
-
|
23
|
-
import proguard.classfile.*;
|
24
|
-
import proguard.classfile.attribute.CodeAttribute;
|
25
|
-
import proguard.classfile.instruction.*;
|
26
|
-
import proguard.classfile.instruction.visitor.InstructionVisitor;
|
27
|
-
import proguard.evaluation.value.*;
|
28
|
-
|
29
|
-
/**
|
30
|
-
* This InstructionVisitor executes the instructions that it visits on a given
|
31
|
-
* local variable frame and stack.
|
32
|
-
*
|
33
|
-
* @author Eric Lafortune
|
34
|
-
*/
|
35
|
-
public class Processor
|
36
|
-
implements InstructionVisitor
|
37
|
-
{
|
38
|
-
private final Variables variables;
|
39
|
-
private final Stack stack;
|
40
|
-
private final ValueFactory valueFactory;
|
41
|
-
private final BranchUnit branchUnit;
|
42
|
-
private final InvocationUnit invocationUnit;
|
43
|
-
|
44
|
-
private final ConstantValueFactory constantValueFactory;
|
45
|
-
private final ClassConstantValueFactory classConstantValueFactory;
|
46
|
-
|
47
|
-
|
48
|
-
/**
|
49
|
-
* Creates a new processor that operates on the given environment.
|
50
|
-
* @param variables the local variable frame.
|
51
|
-
* @param stack the local stack.
|
52
|
-
* @param branchUnit the class that can affect the program counter.
|
53
|
-
* @param invocationUnit the class that can access other program members.
|
54
|
-
*/
|
55
|
-
public Processor(Variables variables,
|
56
|
-
Stack stack,
|
57
|
-
ValueFactory valueFactory,
|
58
|
-
BranchUnit branchUnit,
|
59
|
-
InvocationUnit invocationUnit)
|
60
|
-
{
|
61
|
-
this.variables = variables;
|
62
|
-
this.stack = stack;
|
63
|
-
this.valueFactory = valueFactory;
|
64
|
-
this.branchUnit = branchUnit;
|
65
|
-
this.invocationUnit = invocationUnit;
|
66
|
-
|
67
|
-
constantValueFactory = new ConstantValueFactory(valueFactory);
|
68
|
-
classConstantValueFactory = new ClassConstantValueFactory(valueFactory);
|
69
|
-
}
|
70
|
-
|
71
|
-
|
72
|
-
// Implementations for InstructionVisitor.
|
73
|
-
|
74
|
-
public void visitSimpleInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, SimpleInstruction simpleInstruction)
|
75
|
-
{
|
76
|
-
switch (simpleInstruction.opcode)
|
77
|
-
{
|
78
|
-
case InstructionConstants.OP_NOP:
|
79
|
-
break;
|
80
|
-
|
81
|
-
case InstructionConstants.OP_ACONST_NULL:
|
82
|
-
stack.push(valueFactory.createReferenceValueNull());
|
83
|
-
break;
|
84
|
-
|
85
|
-
case InstructionConstants.OP_ICONST_M1:
|
86
|
-
case InstructionConstants.OP_ICONST_0:
|
87
|
-
case InstructionConstants.OP_ICONST_1:
|
88
|
-
case InstructionConstants.OP_ICONST_2:
|
89
|
-
case InstructionConstants.OP_ICONST_3:
|
90
|
-
case InstructionConstants.OP_ICONST_4:
|
91
|
-
case InstructionConstants.OP_ICONST_5:
|
92
|
-
case InstructionConstants.OP_BIPUSH:
|
93
|
-
case InstructionConstants.OP_SIPUSH:
|
94
|
-
stack.push(valueFactory.createIntegerValue(simpleInstruction.constant));
|
95
|
-
break;
|
96
|
-
|
97
|
-
case InstructionConstants.OP_LCONST_0:
|
98
|
-
case InstructionConstants.OP_LCONST_1:
|
99
|
-
stack.push(valueFactory.createLongValue(simpleInstruction.constant));
|
100
|
-
break;
|
101
|
-
|
102
|
-
case InstructionConstants.OP_FCONST_0:
|
103
|
-
case InstructionConstants.OP_FCONST_1:
|
104
|
-
case InstructionConstants.OP_FCONST_2:
|
105
|
-
stack.push(valueFactory.createFloatValue((float)simpleInstruction.constant));
|
106
|
-
break;
|
107
|
-
|
108
|
-
case InstructionConstants.OP_DCONST_0:
|
109
|
-
case InstructionConstants.OP_DCONST_1:
|
110
|
-
stack.push(valueFactory.createDoubleValue((double)simpleInstruction.constant));
|
111
|
-
break;
|
112
|
-
|
113
|
-
case InstructionConstants.OP_IALOAD:
|
114
|
-
case InstructionConstants.OP_BALOAD:
|
115
|
-
case InstructionConstants.OP_CALOAD:
|
116
|
-
case InstructionConstants.OP_SALOAD:
|
117
|
-
stack.ipop();
|
118
|
-
stack.apop();
|
119
|
-
stack.push(valueFactory.createIntegerValue());
|
120
|
-
break;
|
121
|
-
|
122
|
-
case InstructionConstants.OP_LALOAD:
|
123
|
-
stack.ipop();
|
124
|
-
stack.apop();
|
125
|
-
stack.push(valueFactory.createLongValue());
|
126
|
-
break;
|
127
|
-
|
128
|
-
case InstructionConstants.OP_FALOAD:
|
129
|
-
stack.ipop();
|
130
|
-
stack.apop();
|
131
|
-
stack.push(valueFactory.createFloatValue());
|
132
|
-
break;
|
133
|
-
|
134
|
-
case InstructionConstants.OP_DALOAD:
|
135
|
-
stack.ipop();
|
136
|
-
stack.apop();
|
137
|
-
stack.push(valueFactory.createDoubleValue());
|
138
|
-
break;
|
139
|
-
|
140
|
-
case InstructionConstants.OP_AALOAD:
|
141
|
-
{
|
142
|
-
IntegerValue arrayIndex = stack.ipop();
|
143
|
-
ReferenceValue arrayReference = stack.apop();
|
144
|
-
stack.push(arrayReference.arrayLoad(arrayIndex, valueFactory));
|
145
|
-
break;
|
146
|
-
}
|
147
|
-
|
148
|
-
case InstructionConstants.OP_IASTORE:
|
149
|
-
case InstructionConstants.OP_BASTORE:
|
150
|
-
case InstructionConstants.OP_CASTORE:
|
151
|
-
case InstructionConstants.OP_SASTORE:
|
152
|
-
stack.ipop();
|
153
|
-
stack.ipop();
|
154
|
-
stack.apop();
|
155
|
-
break;
|
156
|
-
|
157
|
-
case InstructionConstants.OP_LASTORE:
|
158
|
-
stack.lpop();
|
159
|
-
stack.ipop();
|
160
|
-
stack.apop();
|
161
|
-
break;
|
162
|
-
|
163
|
-
case InstructionConstants.OP_FASTORE:
|
164
|
-
stack.fpop();
|
165
|
-
stack.ipop();
|
166
|
-
stack.apop();
|
167
|
-
break;
|
168
|
-
|
169
|
-
case InstructionConstants.OP_DASTORE:
|
170
|
-
stack.dpop();
|
171
|
-
stack.ipop();
|
172
|
-
stack.apop();
|
173
|
-
break;
|
174
|
-
|
175
|
-
case InstructionConstants.OP_AASTORE:
|
176
|
-
stack.apop();
|
177
|
-
stack.ipop();
|
178
|
-
stack.apop();
|
179
|
-
break;
|
180
|
-
|
181
|
-
case InstructionConstants.OP_POP:
|
182
|
-
stack.pop1();
|
183
|
-
break;
|
184
|
-
|
185
|
-
case InstructionConstants.OP_POP2:
|
186
|
-
stack.pop2();
|
187
|
-
break;
|
188
|
-
|
189
|
-
case InstructionConstants.OP_DUP:
|
190
|
-
stack.dup();
|
191
|
-
break;
|
192
|
-
|
193
|
-
case InstructionConstants.OP_DUP_X1:
|
194
|
-
stack.dup_x1();
|
195
|
-
break;
|
196
|
-
|
197
|
-
case InstructionConstants.OP_DUP_X2:
|
198
|
-
stack.dup_x2();
|
199
|
-
break;
|
200
|
-
|
201
|
-
case InstructionConstants.OP_DUP2:
|
202
|
-
stack.dup2();
|
203
|
-
break;
|
204
|
-
|
205
|
-
case InstructionConstants.OP_DUP2_X1:
|
206
|
-
stack.dup2_x1();
|
207
|
-
break;
|
208
|
-
|
209
|
-
case InstructionConstants.OP_DUP2_X2:
|
210
|
-
stack.dup2_x2();
|
211
|
-
break;
|
212
|
-
|
213
|
-
case InstructionConstants.OP_SWAP:
|
214
|
-
stack.swap();
|
215
|
-
break;
|
216
|
-
|
217
|
-
case InstructionConstants.OP_IADD:
|
218
|
-
stack.push(stack.ipop().add(stack.ipop()));
|
219
|
-
break;
|
220
|
-
|
221
|
-
case InstructionConstants.OP_LADD:
|
222
|
-
stack.push(stack.lpop().add(stack.lpop()));
|
223
|
-
break;
|
224
|
-
|
225
|
-
case InstructionConstants.OP_FADD:
|
226
|
-
stack.push(stack.fpop().add(stack.fpop()));
|
227
|
-
break;
|
228
|
-
|
229
|
-
case InstructionConstants.OP_DADD:
|
230
|
-
stack.push(stack.dpop().add(stack.dpop()));
|
231
|
-
break;
|
232
|
-
|
233
|
-
case InstructionConstants.OP_ISUB:
|
234
|
-
stack.push(stack.ipop().subtractFrom(stack.ipop()));
|
235
|
-
break;
|
236
|
-
|
237
|
-
case InstructionConstants.OP_LSUB:
|
238
|
-
stack.push(stack.lpop().subtractFrom(stack.lpop()));
|
239
|
-
break;
|
240
|
-
|
241
|
-
case InstructionConstants.OP_FSUB:
|
242
|
-
stack.push(stack.fpop().subtractFrom(stack.fpop()));
|
243
|
-
break;
|
244
|
-
|
245
|
-
case InstructionConstants.OP_DSUB:
|
246
|
-
stack.push(stack.dpop().subtractFrom(stack.dpop()));
|
247
|
-
break;
|
248
|
-
|
249
|
-
case InstructionConstants.OP_IMUL:
|
250
|
-
stack.push(stack.ipop().multiply(stack.ipop()));
|
251
|
-
break;
|
252
|
-
|
253
|
-
case InstructionConstants.OP_LMUL:
|
254
|
-
stack.push(stack.lpop().multiply(stack.lpop()));
|
255
|
-
break;
|
256
|
-
|
257
|
-
case InstructionConstants.OP_FMUL:
|
258
|
-
stack.push(stack.fpop().multiply(stack.fpop()));
|
259
|
-
break;
|
260
|
-
|
261
|
-
case InstructionConstants.OP_DMUL:
|
262
|
-
stack.push(stack.dpop().multiply(stack.dpop()));
|
263
|
-
break;
|
264
|
-
|
265
|
-
case InstructionConstants.OP_IDIV:
|
266
|
-
try
|
267
|
-
{
|
268
|
-
stack.push(stack.ipop().divideOf(stack.ipop()));
|
269
|
-
}
|
270
|
-
catch (ArithmeticException ex)
|
271
|
-
{
|
272
|
-
stack.push(valueFactory.createIntegerValue());
|
273
|
-
// TODO: Forward ArithmeticExceptions.
|
274
|
-
//stack.clear();
|
275
|
-
//stack.push(valueFactory.createReference(false));
|
276
|
-
//branchUnit.throwException();
|
277
|
-
}
|
278
|
-
break;
|
279
|
-
|
280
|
-
case InstructionConstants.OP_LDIV:
|
281
|
-
try
|
282
|
-
{
|
283
|
-
stack.push(stack.lpop().divideOf(stack.lpop()));
|
284
|
-
}
|
285
|
-
catch (ArithmeticException ex)
|
286
|
-
{
|
287
|
-
stack.push(valueFactory.createLongValue());
|
288
|
-
// TODO: Forward ArithmeticExceptions.
|
289
|
-
//stack.clear();
|
290
|
-
//stack.push(valueFactory.createReference(false));
|
291
|
-
//branchUnit.throwException();
|
292
|
-
}
|
293
|
-
break;
|
294
|
-
|
295
|
-
case InstructionConstants.OP_FDIV:
|
296
|
-
stack.push(stack.fpop().divideOf(stack.fpop()));
|
297
|
-
break;
|
298
|
-
|
299
|
-
case InstructionConstants.OP_DDIV:
|
300
|
-
stack.push(stack.dpop().divideOf(stack.dpop()));
|
301
|
-
break;
|
302
|
-
|
303
|
-
case InstructionConstants.OP_IREM:
|
304
|
-
try
|
305
|
-
{
|
306
|
-
stack.push(stack.ipop().remainderOf(stack.ipop()));
|
307
|
-
}
|
308
|
-
catch (ArithmeticException ex)
|
309
|
-
{
|
310
|
-
stack.push(valueFactory.createIntegerValue());
|
311
|
-
// TODO: Forward ArithmeticExceptions.
|
312
|
-
//stack.clear();
|
313
|
-
//stack.push(valueFactory.createReference(false));
|
314
|
-
//branchUnit.throwException();
|
315
|
-
}
|
316
|
-
break;
|
317
|
-
|
318
|
-
case InstructionConstants.OP_LREM:
|
319
|
-
try
|
320
|
-
{
|
321
|
-
stack.push(stack.lpop().remainderOf(stack.lpop()));
|
322
|
-
}
|
323
|
-
catch (ArithmeticException ex)
|
324
|
-
{
|
325
|
-
stack.push(valueFactory.createLongValue());
|
326
|
-
// TODO: Forward ArithmeticExceptions.
|
327
|
-
//stack.clear();
|
328
|
-
//stack.push(valueFactory.createReference(false));
|
329
|
-
//branchUnit.throwException();
|
330
|
-
}
|
331
|
-
break;
|
332
|
-
|
333
|
-
case InstructionConstants.OP_FREM:
|
334
|
-
stack.push(stack.fpop().remainderOf(stack.fpop()));
|
335
|
-
break;
|
336
|
-
|
337
|
-
case InstructionConstants.OP_DREM:
|
338
|
-
stack.push(stack.dpop().remainderOf(stack.dpop()));
|
339
|
-
break;
|
340
|
-
|
341
|
-
case InstructionConstants.OP_INEG:
|
342
|
-
stack.push(stack.ipop().negate());
|
343
|
-
break;
|
344
|
-
|
345
|
-
case InstructionConstants.OP_LNEG:
|
346
|
-
stack.push(stack.lpop().negate());
|
347
|
-
break;
|
348
|
-
|
349
|
-
case InstructionConstants.OP_FNEG:
|
350
|
-
stack.push(stack.fpop().negate());
|
351
|
-
break;
|
352
|
-
|
353
|
-
case InstructionConstants.OP_DNEG:
|
354
|
-
stack.push(stack.dpop().negate());
|
355
|
-
break;
|
356
|
-
|
357
|
-
case InstructionConstants.OP_ISHL:
|
358
|
-
stack.push(stack.ipop().shiftLeftOf(stack.ipop()));
|
359
|
-
break;
|
360
|
-
|
361
|
-
case InstructionConstants.OP_LSHL:
|
362
|
-
stack.push(stack.ipop().shiftLeftOf(stack.lpop()));
|
363
|
-
break;
|
364
|
-
|
365
|
-
case InstructionConstants.OP_ISHR:
|
366
|
-
stack.push(stack.ipop().shiftRightOf(stack.ipop()));
|
367
|
-
break;
|
368
|
-
|
369
|
-
case InstructionConstants.OP_LSHR:
|
370
|
-
stack.push(stack.ipop().shiftRightOf(stack.lpop()));
|
371
|
-
break;
|
372
|
-
|
373
|
-
case InstructionConstants.OP_IUSHR:
|
374
|
-
stack.push(stack.ipop().unsignedShiftRightOf(stack.ipop()));
|
375
|
-
break;
|
376
|
-
|
377
|
-
case InstructionConstants.OP_LUSHR:
|
378
|
-
stack.push(stack.ipop().unsignedShiftRightOf(stack.lpop()));
|
379
|
-
break;
|
380
|
-
|
381
|
-
case InstructionConstants.OP_IAND:
|
382
|
-
stack.push(stack.ipop().and(stack.ipop()));
|
383
|
-
break;
|
384
|
-
|
385
|
-
case InstructionConstants.OP_LAND:
|
386
|
-
stack.push(stack.lpop().and(stack.lpop()));
|
387
|
-
break;
|
388
|
-
|
389
|
-
case InstructionConstants.OP_IOR:
|
390
|
-
stack.push(stack.ipop().or(stack.ipop()));
|
391
|
-
break;
|
392
|
-
|
393
|
-
case InstructionConstants.OP_LOR:
|
394
|
-
stack.push(stack.lpop().or(stack.lpop()));
|
395
|
-
break;
|
396
|
-
|
397
|
-
case InstructionConstants.OP_IXOR:
|
398
|
-
stack.push(stack.ipop().xor(stack.ipop()));
|
399
|
-
break;
|
400
|
-
|
401
|
-
case InstructionConstants.OP_LXOR:
|
402
|
-
stack.push(stack.lpop().xor(stack.lpop()));
|
403
|
-
break;
|
404
|
-
|
405
|
-
case InstructionConstants.OP_I2L:
|
406
|
-
stack.push(stack.ipop().convertToLong());
|
407
|
-
break;
|
408
|
-
|
409
|
-
case InstructionConstants.OP_I2F:
|
410
|
-
stack.push(stack.ipop().convertToFloat());
|
411
|
-
break;
|
412
|
-
|
413
|
-
case InstructionConstants.OP_I2D:
|
414
|
-
stack.push(stack.ipop().convertToDouble());
|
415
|
-
break;
|
416
|
-
|
417
|
-
case InstructionConstants.OP_L2I:
|
418
|
-
stack.push(stack.lpop().convertToInteger());
|
419
|
-
break;
|
420
|
-
|
421
|
-
case InstructionConstants.OP_L2F:
|
422
|
-
stack.push(stack.lpop().convertToFloat());
|
423
|
-
break;
|
424
|
-
|
425
|
-
case InstructionConstants.OP_L2D:
|
426
|
-
stack.push(stack.lpop().convertToDouble());
|
427
|
-
break;
|
428
|
-
|
429
|
-
case InstructionConstants.OP_F2I:
|
430
|
-
stack.push(stack.fpop().convertToInteger());
|
431
|
-
break;
|
432
|
-
|
433
|
-
case InstructionConstants.OP_F2L:
|
434
|
-
stack.push(stack.fpop().convertToLong());
|
435
|
-
break;
|
436
|
-
|
437
|
-
case InstructionConstants.OP_F2D:
|
438
|
-
stack.push(stack.fpop().convertToDouble());
|
439
|
-
break;
|
440
|
-
|
441
|
-
case InstructionConstants.OP_D2I:
|
442
|
-
stack.push(stack.dpop().convertToInteger());
|
443
|
-
break;
|
444
|
-
|
445
|
-
case InstructionConstants.OP_D2L:
|
446
|
-
stack.push(stack.dpop().convertToLong());
|
447
|
-
break;
|
448
|
-
|
449
|
-
case InstructionConstants.OP_D2F:
|
450
|
-
stack.push(stack.dpop().convertToFloat());
|
451
|
-
break;
|
452
|
-
|
453
|
-
case InstructionConstants.OP_I2B:
|
454
|
-
stack.push(stack.ipop().convertToByte());
|
455
|
-
break;
|
456
|
-
|
457
|
-
case InstructionConstants.OP_I2C:
|
458
|
-
stack.push(stack.ipop().convertToCharacter());
|
459
|
-
break;
|
460
|
-
|
461
|
-
case InstructionConstants.OP_I2S:
|
462
|
-
stack.push(stack.ipop().convertToShort());
|
463
|
-
break;
|
464
|
-
|
465
|
-
case InstructionConstants.OP_LCMP:
|
466
|
-
// stack.push(stack.lpop().compareReverse(stack.lpop()));
|
467
|
-
|
468
|
-
LongValue longValue1 = stack.lpop();
|
469
|
-
LongValue longValue2 = stack.lpop();
|
470
|
-
stack.push(longValue2.compare(longValue1));
|
471
|
-
break;
|
472
|
-
|
473
|
-
case InstructionConstants.OP_FCMPL:
|
474
|
-
FloatValue floatValue1 = stack.fpop();
|
475
|
-
FloatValue floatValue2 = stack.fpop();
|
476
|
-
stack.push(floatValue2.compare(floatValue1));
|
477
|
-
break;
|
478
|
-
|
479
|
-
case InstructionConstants.OP_FCMPG:
|
480
|
-
stack.push(stack.fpop().compareReverse(stack.fpop()));
|
481
|
-
break;
|
482
|
-
|
483
|
-
case InstructionConstants.OP_DCMPL:
|
484
|
-
DoubleValue doubleValue1 = stack.dpop();
|
485
|
-
DoubleValue doubleValue2 = stack.dpop();
|
486
|
-
stack.push(doubleValue2.compare(doubleValue1));
|
487
|
-
break;
|
488
|
-
|
489
|
-
case InstructionConstants.OP_DCMPG:
|
490
|
-
stack.push(stack.dpop().compareReverse(stack.dpop()));
|
491
|
-
break;
|
492
|
-
|
493
|
-
case InstructionConstants.OP_IRETURN:
|
494
|
-
invocationUnit.exitMethod(clazz, method, stack.ipop());
|
495
|
-
branchUnit.returnFromMethod();
|
496
|
-
break;
|
497
|
-
|
498
|
-
case InstructionConstants.OP_LRETURN:
|
499
|
-
invocationUnit.exitMethod(clazz, method, stack.lpop());
|
500
|
-
branchUnit.returnFromMethod();
|
501
|
-
break;
|
502
|
-
|
503
|
-
case InstructionConstants.OP_FRETURN:
|
504
|
-
invocationUnit.exitMethod(clazz, method, stack.fpop());
|
505
|
-
branchUnit.returnFromMethod();
|
506
|
-
break;
|
507
|
-
|
508
|
-
case InstructionConstants.OP_DRETURN:
|
509
|
-
invocationUnit.exitMethod(clazz, method, stack.dpop());
|
510
|
-
branchUnit.returnFromMethod();
|
511
|
-
break;
|
512
|
-
|
513
|
-
case InstructionConstants.OP_ARETURN:
|
514
|
-
invocationUnit.exitMethod(clazz, method, stack.apop());
|
515
|
-
branchUnit.returnFromMethod();
|
516
|
-
break;
|
517
|
-
|
518
|
-
case InstructionConstants.OP_RETURN:
|
519
|
-
branchUnit.returnFromMethod();
|
520
|
-
break;
|
521
|
-
|
522
|
-
case InstructionConstants.OP_NEWARRAY:
|
523
|
-
IntegerValue arrayLength = stack.ipop();
|
524
|
-
stack.push(valueFactory.createArrayReferenceValue(String.valueOf(InstructionUtil.internalTypeFromArrayType((byte)simpleInstruction.constant)),
|
525
|
-
null,
|
526
|
-
arrayLength));
|
527
|
-
break;
|
528
|
-
|
529
|
-
case InstructionConstants.OP_ARRAYLENGTH:
|
530
|
-
stack.apop();
|
531
|
-
stack.push(valueFactory.createIntegerValue());
|
532
|
-
break;
|
533
|
-
|
534
|
-
case InstructionConstants.OP_ATHROW:
|
535
|
-
ReferenceValue exceptionReferenceValue = stack.apop();
|
536
|
-
stack.clear();
|
537
|
-
stack.push(exceptionReferenceValue);
|
538
|
-
branchUnit.throwException();
|
539
|
-
break;
|
540
|
-
|
541
|
-
case InstructionConstants.OP_MONITORENTER:
|
542
|
-
case InstructionConstants.OP_MONITOREXIT:
|
543
|
-
stack.apop();
|
544
|
-
break;
|
545
|
-
|
546
|
-
default:
|
547
|
-
throw new IllegalArgumentException("Unknown simple instruction ["+simpleInstruction.opcode+"]");
|
548
|
-
}
|
549
|
-
}
|
550
|
-
|
551
|
-
|
552
|
-
public void visitConstantInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, ConstantInstruction constantInstruction)
|
553
|
-
{
|
554
|
-
int constantIndex = constantInstruction.constantIndex;
|
555
|
-
|
556
|
-
switch (constantInstruction.opcode)
|
557
|
-
{
|
558
|
-
case InstructionConstants.OP_LDC:
|
559
|
-
case InstructionConstants.OP_LDC_W:
|
560
|
-
case InstructionConstants.OP_LDC2_W:
|
561
|
-
stack.push(classConstantValueFactory.constantValue(clazz, constantIndex));
|
562
|
-
break;
|
563
|
-
|
564
|
-
case InstructionConstants.OP_GETSTATIC:
|
565
|
-
case InstructionConstants.OP_PUTSTATIC:
|
566
|
-
case InstructionConstants.OP_GETFIELD:
|
567
|
-
case InstructionConstants.OP_PUTFIELD:
|
568
|
-
case InstructionConstants.OP_INVOKEVIRTUAL:
|
569
|
-
case InstructionConstants.OP_INVOKESPECIAL:
|
570
|
-
case InstructionConstants.OP_INVOKESTATIC:
|
571
|
-
case InstructionConstants.OP_INVOKEINTERFACE:
|
572
|
-
case InstructionConstants.OP_INVOKEDYNAMIC:
|
573
|
-
invocationUnit.invokeMember(clazz, method, codeAttribute, offset, constantInstruction, stack);
|
574
|
-
break;
|
575
|
-
|
576
|
-
case InstructionConstants.OP_NEW:
|
577
|
-
stack.push(constantValueFactory.constantValue(clazz, constantIndex).referenceValue());
|
578
|
-
break;
|
579
|
-
|
580
|
-
case InstructionConstants.OP_ANEWARRAY:
|
581
|
-
{
|
582
|
-
ReferenceValue referenceValue = constantValueFactory.constantValue(clazz, constantIndex).referenceValue();
|
583
|
-
|
584
|
-
stack.push(valueFactory.createArrayReferenceValue(referenceValue.internalType(),
|
585
|
-
referenceValue.getReferencedClass(),
|
586
|
-
stack.ipop()));
|
587
|
-
break;
|
588
|
-
}
|
589
|
-
|
590
|
-
case InstructionConstants.OP_CHECKCAST:
|
591
|
-
// TODO: Check cast.
|
592
|
-
ReferenceValue castValue = stack.apop();
|
593
|
-
ReferenceValue castResultValue =
|
594
|
-
castValue.isNull() == Value.ALWAYS ? castValue :
|
595
|
-
castValue.isNull() == Value.NEVER ? constantValueFactory.constantValue(clazz, constantIndex).referenceValue() :
|
596
|
-
constantValueFactory.constantValue(clazz, constantIndex).referenceValue().generalize(valueFactory.createReferenceValueNull());
|
597
|
-
stack.push(castResultValue);
|
598
|
-
break;
|
599
|
-
|
600
|
-
case InstructionConstants.OP_INSTANCEOF:
|
601
|
-
{
|
602
|
-
ReferenceValue referenceValue = constantValueFactory.constantValue(clazz, constantIndex).referenceValue();
|
603
|
-
|
604
|
-
int instanceOf = stack.apop().instanceOf(referenceValue.getType(),
|
605
|
-
referenceValue.getReferencedClass());
|
606
|
-
|
607
|
-
stack.push(instanceOf == Value.NEVER ? valueFactory.createIntegerValue(0) :
|
608
|
-
instanceOf == Value.ALWAYS ? valueFactory.createIntegerValue(1) :
|
609
|
-
valueFactory.createIntegerValue());
|
610
|
-
break;
|
611
|
-
}
|
612
|
-
|
613
|
-
case InstructionConstants.OP_MULTIANEWARRAY:
|
614
|
-
{
|
615
|
-
int dimensionCount = constantInstruction.constant;
|
616
|
-
for (int dimension = 0; dimension < dimensionCount; dimension++)
|
617
|
-
{
|
618
|
-
// TODO: Use array lengths.
|
619
|
-
IntegerValue arrayLength = stack.ipop();
|
620
|
-
}
|
621
|
-
|
622
|
-
stack.push(constantValueFactory.constantValue(clazz, constantIndex).referenceValue());
|
623
|
-
break;
|
624
|
-
}
|
625
|
-
|
626
|
-
default:
|
627
|
-
throw new IllegalArgumentException("Unknown constant pool instruction ["+constantInstruction.opcode+"]");
|
628
|
-
}
|
629
|
-
}
|
630
|
-
|
631
|
-
|
632
|
-
public void visitVariableInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, VariableInstruction variableInstruction)
|
633
|
-
{
|
634
|
-
int variableIndex = variableInstruction.variableIndex;
|
635
|
-
|
636
|
-
switch (variableInstruction.opcode)
|
637
|
-
{
|
638
|
-
case InstructionConstants.OP_ILOAD:
|
639
|
-
case InstructionConstants.OP_ILOAD_0:
|
640
|
-
case InstructionConstants.OP_ILOAD_1:
|
641
|
-
case InstructionConstants.OP_ILOAD_2:
|
642
|
-
case InstructionConstants.OP_ILOAD_3:
|
643
|
-
stack.push(variables.iload(variableIndex));
|
644
|
-
break;
|
645
|
-
|
646
|
-
case InstructionConstants.OP_LLOAD:
|
647
|
-
case InstructionConstants.OP_LLOAD_0:
|
648
|
-
case InstructionConstants.OP_LLOAD_1:
|
649
|
-
case InstructionConstants.OP_LLOAD_2:
|
650
|
-
case InstructionConstants.OP_LLOAD_3:
|
651
|
-
stack.push(variables.lload(variableIndex));
|
652
|
-
break;
|
653
|
-
|
654
|
-
case InstructionConstants.OP_FLOAD:
|
655
|
-
case InstructionConstants.OP_FLOAD_0:
|
656
|
-
case InstructionConstants.OP_FLOAD_1:
|
657
|
-
case InstructionConstants.OP_FLOAD_2:
|
658
|
-
case InstructionConstants.OP_FLOAD_3:
|
659
|
-
stack.push(variables.fload(variableIndex));
|
660
|
-
break;
|
661
|
-
|
662
|
-
case InstructionConstants.OP_DLOAD:
|
663
|
-
case InstructionConstants.OP_DLOAD_0:
|
664
|
-
case InstructionConstants.OP_DLOAD_1:
|
665
|
-
case InstructionConstants.OP_DLOAD_2:
|
666
|
-
case InstructionConstants.OP_DLOAD_3:
|
667
|
-
stack.push(variables.dload(variableIndex));
|
668
|
-
break;
|
669
|
-
|
670
|
-
case InstructionConstants.OP_ALOAD:
|
671
|
-
case InstructionConstants.OP_ALOAD_0:
|
672
|
-
case InstructionConstants.OP_ALOAD_1:
|
673
|
-
case InstructionConstants.OP_ALOAD_2:
|
674
|
-
case InstructionConstants.OP_ALOAD_3:
|
675
|
-
stack.push(variables.aload(variableIndex));
|
676
|
-
break;
|
677
|
-
|
678
|
-
case InstructionConstants.OP_ISTORE:
|
679
|
-
case InstructionConstants.OP_ISTORE_0:
|
680
|
-
case InstructionConstants.OP_ISTORE_1:
|
681
|
-
case InstructionConstants.OP_ISTORE_2:
|
682
|
-
case InstructionConstants.OP_ISTORE_3:
|
683
|
-
variables.store(variableIndex, stack.ipop());
|
684
|
-
break;
|
685
|
-
|
686
|
-
case InstructionConstants.OP_LSTORE:
|
687
|
-
case InstructionConstants.OP_LSTORE_0:
|
688
|
-
case InstructionConstants.OP_LSTORE_1:
|
689
|
-
case InstructionConstants.OP_LSTORE_2:
|
690
|
-
case InstructionConstants.OP_LSTORE_3:
|
691
|
-
variables.store(variableIndex, stack.lpop());
|
692
|
-
break;
|
693
|
-
|
694
|
-
case InstructionConstants.OP_FSTORE:
|
695
|
-
case InstructionConstants.OP_FSTORE_0:
|
696
|
-
case InstructionConstants.OP_FSTORE_1:
|
697
|
-
case InstructionConstants.OP_FSTORE_2:
|
698
|
-
case InstructionConstants.OP_FSTORE_3:
|
699
|
-
variables.store(variableIndex, stack.fpop());
|
700
|
-
break;
|
701
|
-
|
702
|
-
case InstructionConstants.OP_DSTORE:
|
703
|
-
case InstructionConstants.OP_DSTORE_0:
|
704
|
-
case InstructionConstants.OP_DSTORE_1:
|
705
|
-
case InstructionConstants.OP_DSTORE_2:
|
706
|
-
case InstructionConstants.OP_DSTORE_3:
|
707
|
-
variables.store(variableIndex, stack.dpop());
|
708
|
-
break;
|
709
|
-
|
710
|
-
case InstructionConstants.OP_ASTORE:
|
711
|
-
case InstructionConstants.OP_ASTORE_0:
|
712
|
-
case InstructionConstants.OP_ASTORE_1:
|
713
|
-
case InstructionConstants.OP_ASTORE_2:
|
714
|
-
case InstructionConstants.OP_ASTORE_3:
|
715
|
-
// The operand on the stack can be a reference or a return
|
716
|
-
// address, so we'll relax the pop operation.
|
717
|
-
//variables.store(variableIndex, stack.apop());
|
718
|
-
variables.store(variableIndex, stack.pop());
|
719
|
-
break;
|
720
|
-
|
721
|
-
case InstructionConstants.OP_IINC:
|
722
|
-
variables.store(variableIndex,
|
723
|
-
variables.iload(variableIndex).add(
|
724
|
-
valueFactory.createIntegerValue(variableInstruction.constant)));
|
725
|
-
break;
|
726
|
-
|
727
|
-
case InstructionConstants.OP_RET:
|
728
|
-
// The return address should be in the last offset of the
|
729
|
-
// given instruction offset variable (even though there may
|
730
|
-
// be other offsets).
|
731
|
-
InstructionOffsetValue instructionOffsetValue = variables.oload(variableIndex);
|
732
|
-
branchUnit.branch(clazz,
|
733
|
-
codeAttribute,
|
734
|
-
offset,
|
735
|
-
instructionOffsetValue.instructionOffset(instructionOffsetValue.instructionOffsetCount()-1));
|
736
|
-
break;
|
737
|
-
|
738
|
-
default:
|
739
|
-
throw new IllegalArgumentException("Unknown variable instruction ["+variableInstruction.opcode+"]");
|
740
|
-
}
|
741
|
-
}
|
742
|
-
|
743
|
-
|
744
|
-
public void visitBranchInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, BranchInstruction branchInstruction)
|
745
|
-
{
|
746
|
-
int branchTarget = offset + branchInstruction.branchOffset;
|
747
|
-
|
748
|
-
switch (branchInstruction.opcode)
|
749
|
-
{
|
750
|
-
case InstructionConstants.OP_IFEQ:
|
751
|
-
branchUnit.branchConditionally(clazz, codeAttribute, offset, branchTarget,
|
752
|
-
stack.ipop().equal(valueFactory.createIntegerValue(0)));
|
753
|
-
break;
|
754
|
-
|
755
|
-
case InstructionConstants.OP_IFNE:
|
756
|
-
branchUnit.branchConditionally(clazz, codeAttribute, offset, branchTarget,
|
757
|
-
stack.ipop().notEqual(valueFactory.createIntegerValue(0)));
|
758
|
-
break;
|
759
|
-
|
760
|
-
case InstructionConstants.OP_IFLT:
|
761
|
-
branchUnit.branchConditionally(clazz, codeAttribute, offset, branchTarget,
|
762
|
-
stack.ipop().lessThan(valueFactory.createIntegerValue(0)));
|
763
|
-
break;
|
764
|
-
|
765
|
-
case InstructionConstants.OP_IFGE:
|
766
|
-
branchUnit.branchConditionally(clazz, codeAttribute, offset, branchTarget,
|
767
|
-
stack.ipop().greaterThanOrEqual(valueFactory.createIntegerValue(0)));
|
768
|
-
break;
|
769
|
-
|
770
|
-
case InstructionConstants.OP_IFGT:
|
771
|
-
branchUnit.branchConditionally(clazz, codeAttribute, offset, branchTarget,
|
772
|
-
stack.ipop().greaterThan(valueFactory.createIntegerValue(0)));
|
773
|
-
break;
|
774
|
-
|
775
|
-
case InstructionConstants.OP_IFLE:
|
776
|
-
branchUnit.branchConditionally(clazz, codeAttribute, offset, branchTarget,
|
777
|
-
stack.ipop().lessThanOrEqual(valueFactory.createIntegerValue(0)));
|
778
|
-
break;
|
779
|
-
|
780
|
-
|
781
|
-
case InstructionConstants.OP_IFICMPEQ:
|
782
|
-
branchUnit.branchConditionally(clazz, codeAttribute, offset, branchTarget,
|
783
|
-
stack.ipop().equal(stack.ipop()));
|
784
|
-
break;
|
785
|
-
|
786
|
-
case InstructionConstants.OP_IFICMPNE:
|
787
|
-
branchUnit.branchConditionally(clazz, codeAttribute, offset, branchTarget,
|
788
|
-
stack.ipop().notEqual(stack.ipop()));
|
789
|
-
break;
|
790
|
-
|
791
|
-
case InstructionConstants.OP_IFICMPLT:
|
792
|
-
// Note that the stack entries are popped in reverse order.
|
793
|
-
branchUnit.branchConditionally(clazz, codeAttribute, offset, branchTarget,
|
794
|
-
stack.ipop().greaterThan(stack.ipop()));
|
795
|
-
break;
|
796
|
-
|
797
|
-
case InstructionConstants.OP_IFICMPGE:
|
798
|
-
// Note that the stack entries are popped in reverse order.
|
799
|
-
branchUnit.branchConditionally(clazz, codeAttribute, offset, branchTarget,
|
800
|
-
stack.ipop().lessThanOrEqual(stack.ipop()));
|
801
|
-
break;
|
802
|
-
|
803
|
-
case InstructionConstants.OP_IFICMPGT:
|
804
|
-
// Note that the stack entries are popped in reverse order.
|
805
|
-
branchUnit.branchConditionally(clazz, codeAttribute, offset, branchTarget,
|
806
|
-
stack.ipop().lessThan(stack.ipop()));
|
807
|
-
break;
|
808
|
-
|
809
|
-
case InstructionConstants.OP_IFICMPLE:
|
810
|
-
// Note that the stack entries are popped in reverse order.
|
811
|
-
branchUnit.branchConditionally(clazz, codeAttribute, offset, branchTarget,
|
812
|
-
stack.ipop().greaterThanOrEqual(stack.ipop()));
|
813
|
-
break;
|
814
|
-
|
815
|
-
case InstructionConstants.OP_IFACMPEQ:
|
816
|
-
branchUnit.branchConditionally(clazz, codeAttribute, offset, branchTarget,
|
817
|
-
stack.apop().equal(stack.apop()));
|
818
|
-
break;
|
819
|
-
|
820
|
-
case InstructionConstants.OP_IFACMPNE:
|
821
|
-
branchUnit.branchConditionally(clazz, codeAttribute, offset, branchTarget,
|
822
|
-
stack.apop().notEqual(stack.apop()));
|
823
|
-
break;
|
824
|
-
|
825
|
-
case InstructionConstants.OP_GOTO:
|
826
|
-
case InstructionConstants.OP_GOTO_W:
|
827
|
-
branchUnit.branch(clazz, codeAttribute, offset, branchTarget);
|
828
|
-
break;
|
829
|
-
|
830
|
-
|
831
|
-
case InstructionConstants.OP_JSR:
|
832
|
-
case InstructionConstants.OP_JSR_W:
|
833
|
-
stack.push(new InstructionOffsetValue(offset +
|
834
|
-
branchInstruction.length(offset)));
|
835
|
-
branchUnit.branch(clazz, codeAttribute, offset, branchTarget);
|
836
|
-
break;
|
837
|
-
|
838
|
-
case InstructionConstants.OP_IFNULL:
|
839
|
-
branchUnit.branchConditionally(clazz, codeAttribute, offset, branchTarget,
|
840
|
-
stack.apop().isNull());
|
841
|
-
break;
|
842
|
-
|
843
|
-
case InstructionConstants.OP_IFNONNULL:
|
844
|
-
branchUnit.branchConditionally(clazz, codeAttribute, offset, branchTarget,
|
845
|
-
stack.apop().isNotNull());
|
846
|
-
break;
|
847
|
-
|
848
|
-
default:
|
849
|
-
throw new IllegalArgumentException("Unknown branch instruction ["+branchInstruction.opcode+"]");
|
850
|
-
}
|
851
|
-
}
|
852
|
-
|
853
|
-
|
854
|
-
public void visitTableSwitchInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, TableSwitchInstruction tableSwitchInstruction)
|
855
|
-
{
|
856
|
-
IntegerValue indexValue = stack.ipop();
|
857
|
-
|
858
|
-
// If there is no definite branch in any of the cases below,
|
859
|
-
// branch to the default offset.
|
860
|
-
branchUnit.branch(clazz, codeAttribute,
|
861
|
-
offset,
|
862
|
-
offset + tableSwitchInstruction.defaultOffset);
|
863
|
-
|
864
|
-
for (int index = 0; index < tableSwitchInstruction.jumpOffsets.length; index++)
|
865
|
-
{
|
866
|
-
int conditional = indexValue.equal(valueFactory.createIntegerValue(
|
867
|
-
tableSwitchInstruction.lowCase + index));
|
868
|
-
branchUnit.branchConditionally(clazz, codeAttribute,
|
869
|
-
offset,
|
870
|
-
offset + tableSwitchInstruction.jumpOffsets[index],
|
871
|
-
conditional);
|
872
|
-
|
873
|
-
// If this branch is always taken, we can skip the rest.
|
874
|
-
if (conditional == Value.ALWAYS)
|
875
|
-
{
|
876
|
-
break;
|
877
|
-
}
|
878
|
-
}
|
879
|
-
}
|
880
|
-
|
881
|
-
|
882
|
-
public void visitLookUpSwitchInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, LookUpSwitchInstruction lookUpSwitchInstruction)
|
883
|
-
{
|
884
|
-
IntegerValue indexValue = stack.ipop();
|
885
|
-
|
886
|
-
// If there is no definite branch in any of the cases below,
|
887
|
-
// branch to the default offset.
|
888
|
-
branchUnit.branch(clazz, codeAttribute,
|
889
|
-
offset,
|
890
|
-
offset + lookUpSwitchInstruction.defaultOffset);
|
891
|
-
|
892
|
-
for (int index = 0; index < lookUpSwitchInstruction.jumpOffsets.length; index++)
|
893
|
-
{
|
894
|
-
int conditional = indexValue.equal(valueFactory.createIntegerValue(
|
895
|
-
lookUpSwitchInstruction.cases[index]));
|
896
|
-
branchUnit.branchConditionally(clazz, codeAttribute,
|
897
|
-
offset,
|
898
|
-
offset + lookUpSwitchInstruction.jumpOffsets[index],
|
899
|
-
conditional);
|
900
|
-
|
901
|
-
// If this branch is always taken, we can skip the rest.
|
902
|
-
if (conditional == Value.ALWAYS)
|
903
|
-
{
|
904
|
-
break;
|
905
|
-
}
|
906
|
-
}
|
907
|
-
}
|
908
|
-
}
|