sometsome 1.0.2 → 3.10.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (732) hide show
  1. checksums.yaml +4 -4
  2. data/lib/proguard4.7/README +33 -0
  3. data/lib/proguard4.7/bin/proguard.bat +14 -0
  4. data/lib/proguard4.7/bin/proguard.sh +11 -0
  5. data/lib/proguard4.7/bin/proguardgui.bat +14 -0
  6. data/lib/proguard4.7/bin/proguardgui.sh +15 -0
  7. data/lib/proguard4.7/bin/retrace.bat +14 -0
  8. data/lib/proguard4.7/bin/retrace.sh +12 -0
  9. data/lib/proguard4.7/build/build.sh +94 -0
  10. data/lib/proguard4.7/build/build.xml +171 -0
  11. data/lib/proguard4.7/build/makefile +94 -0
  12. data/lib/proguard4.7/docs/FAQ.html +253 -0
  13. data/lib/proguard4.7/docs/GPL.html +406 -0
  14. data/lib/proguard4.7/docs/GPL_exception.html +56 -0
  15. data/lib/proguard4.7/docs/acknowledgements.html +76 -0
  16. data/lib/proguard4.7/docs/alternatives.html +699 -0
  17. data/lib/proguard4.7/docs/checkmark.gif +0 -0
  18. data/lib/proguard4.7/docs/downloads.html +623 -0
  19. data/lib/proguard4.7/docs/drop1.gif +0 -0
  20. data/lib/proguard4.7/docs/drop2.gif +0 -0
  21. data/lib/proguard4.7/docs/drop3.gif +0 -0
  22. data/lib/proguard4.7/docs/favicon.ico +0 -0
  23. data/lib/proguard4.7/docs/feedback.html +120 -0
  24. data/lib/proguard4.7/docs/index.html +92 -0
  25. data/lib/proguard4.7/docs/license.html +60 -0
  26. data/lib/proguard4.7/docs/main.html +102 -0
  27. data/lib/proguard4.7/docs/manual/ant.html +634 -0
  28. data/lib/proguard4.7/docs/manual/attention.gif +0 -0
  29. data/lib/proguard4.7/docs/manual/examples.html +1504 -0
  30. data/lib/proguard4.7/docs/manual/gui.html +479 -0
  31. data/lib/proguard4.7/docs/manual/index.html +51 -0
  32. data/lib/proguard4.7/docs/manual/introduction.html +173 -0
  33. data/lib/proguard4.7/docs/manual/limitations.html +69 -0
  34. data/lib/proguard4.7/docs/manual/optimizations.html +172 -0
  35. data/lib/proguard4.7/docs/manual/refcard.html +486 -0
  36. data/lib/proguard4.7/docs/manual/retrace/examples.html +345 -0
  37. data/lib/proguard4.7/docs/manual/retrace/index.html +37 -0
  38. data/lib/proguard4.7/docs/manual/retrace/introduction.html +79 -0
  39. data/lib/proguard4.7/docs/manual/retrace/usage.html +127 -0
  40. data/lib/proguard4.7/docs/manual/sections.html +60 -0
  41. data/lib/proguard4.7/docs/manual/style.css +105 -0
  42. data/lib/proguard4.7/docs/manual/troubleshooting.html +729 -0
  43. data/lib/proguard4.7/docs/manual/usage.html +1243 -0
  44. data/lib/proguard4.7/docs/manual/wtk.html +70 -0
  45. data/lib/proguard4.7/docs/quality.html +56 -0
  46. data/lib/proguard4.7/docs/results.html +170 -0
  47. data/lib/proguard4.7/docs/saikoalogo.png +0 -0
  48. data/lib/proguard4.7/docs/screenshot_console.gif +0 -0
  49. data/lib/proguard4.7/docs/screenshot_console_small.gif +0 -0
  50. data/lib/proguard4.7/docs/screenshot_gui1.gif +0 -0
  51. data/lib/proguard4.7/docs/screenshot_gui2.gif +0 -0
  52. data/lib/proguard4.7/docs/screenshot_gui3.gif +0 -0
  53. data/lib/proguard4.7/docs/screenshot_gui4.gif +0 -0
  54. data/lib/proguard4.7/docs/screenshot_gui5.gif +0 -0
  55. data/lib/proguard4.7/docs/screenshot_gui6.gif +0 -0
  56. data/lib/proguard4.7/docs/screenshot_gui7.gif +0 -0
  57. data/lib/proguard4.7/docs/screenshot_gui8.gif +0 -0
  58. data/lib/proguard4.7/docs/screenshots.html +67 -0
  59. data/lib/proguard4.7/docs/screenshots_gui_small.gif +0 -0
  60. data/lib/proguard4.7/docs/sections.html +64 -0
  61. data/lib/proguard4.7/docs/sflogo.png +0 -0
  62. data/lib/proguard4.7/docs/steel.gif +0 -0
  63. data/lib/proguard4.7/docs/style.css +223 -0
  64. data/lib/proguard4.7/docs/testimonials.html +133 -0
  65. data/lib/proguard4.7/docs/title.gif +0 -0
  66. data/lib/proguard4.7/docs/title.html +17 -0
  67. data/lib/proguard4.7/examples/android.pro +149 -0
  68. data/lib/proguard4.7/examples/annotations/examples.pro +60 -0
  69. data/lib/proguard4.7/examples/annotations/examples/Applet.java +22 -0
  70. data/lib/proguard4.7/examples/annotations/examples/Application.java +20 -0
  71. data/lib/proguard4.7/examples/annotations/examples/Bean.java +56 -0
  72. data/lib/proguard4.7/examples/annotations/examples/NativeCallBack.java +44 -0
  73. data/lib/proguard4.7/examples/annotations/lib/annotations.jar +0 -0
  74. data/lib/proguard4.7/examples/annotations/lib/annotations.pro +118 -0
  75. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/Keep.java +18 -0
  76. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepApplication.java +18 -0
  77. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepClassMemberNames.java +18 -0
  78. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepClassMembers.java +18 -0
  79. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepGettersSetters.java +18 -0
  80. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepImplementations.java +18 -0
  81. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepName.java +18 -0
  82. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepPublicClassMemberNames.java +18 -0
  83. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepPublicClassMembers.java +18 -0
  84. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepPublicGettersSetters.java +18 -0
  85. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepPublicImplementations.java +18 -0
  86. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepPublicProtectedClassMemberNames.java +18 -0
  87. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepPublicProtectedClassMembers.java +19 -0
  88. data/lib/proguard4.7/examples/ant/android-8.xml +177 -0
  89. data/lib/proguard4.7/examples/ant/applets.xml +88 -0
  90. data/lib/proguard4.7/examples/ant/applications1.xml +15 -0
  91. data/lib/proguard4.7/examples/ant/applications2.xml +74 -0
  92. data/lib/proguard4.7/examples/ant/applications3.xml +98 -0
  93. data/lib/proguard4.7/examples/ant/library.xml +102 -0
  94. data/lib/proguard4.7/examples/ant/midlets.xml +52 -0
  95. data/lib/proguard4.7/examples/ant/proguard.xml +78 -0
  96. data/lib/proguard4.7/examples/ant/servlets.xml +88 -0
  97. data/lib/proguard4.7/examples/applets.pro +69 -0
  98. data/lib/proguard4.7/examples/applications.pro +75 -0
  99. data/lib/proguard4.7/examples/dictionaries/compact.txt +18 -0
  100. data/lib/proguard4.7/examples/dictionaries/keywords.txt +58 -0
  101. data/lib/proguard4.7/examples/dictionaries/shakespeare.txt +23 -0
  102. data/lib/proguard4.7/examples/dictionaries/windows.txt +209 -0
  103. data/lib/proguard4.7/examples/library.pro +79 -0
  104. data/lib/proguard4.7/examples/midlets.pro +67 -0
  105. data/lib/proguard4.7/examples/proguard.pro +57 -0
  106. data/lib/proguard4.7/examples/proguardall.pro +62 -0
  107. data/lib/proguard4.7/examples/proguardgui.pro +50 -0
  108. data/lib/proguard4.7/examples/retrace.pro +43 -0
  109. data/lib/proguard4.7/examples/scala.pro +132 -0
  110. data/lib/proguard4.7/examples/servlets.pro +70 -0
  111. data/lib/proguard4.7/lib/proguard.jar +0 -0
  112. data/lib/proguard4.7/lib/proguardgui.jar +0 -0
  113. data/lib/proguard4.7/lib/retrace.jar +0 -0
  114. data/lib/proguard4.7/src/proguard/ArgumentWordReader.java +111 -0
  115. data/lib/proguard4.7/src/proguard/ClassPath.java +94 -0
  116. data/lib/proguard4.7/src/proguard/ClassPathEntry.java +282 -0
  117. data/lib/proguard4.7/src/proguard/ClassSpecification.java +259 -0
  118. data/lib/proguard4.7/src/proguard/ClassSpecificationVisitorFactory.java +503 -0
  119. data/lib/proguard4.7/src/proguard/Configuration.java +328 -0
  120. data/lib/proguard4.7/src/proguard/ConfigurationConstants.java +123 -0
  121. data/lib/proguard4.7/src/proguard/ConfigurationParser.java +1285 -0
  122. data/lib/proguard4.7/src/proguard/ConfigurationWriter.java +651 -0
  123. data/lib/proguard4.7/src/proguard/DataEntryReaderFactory.java +141 -0
  124. data/lib/proguard4.7/src/proguard/DataEntryWriterFactory.java +150 -0
  125. data/lib/proguard4.7/src/proguard/DescriptorKeepChecker.java +169 -0
  126. data/lib/proguard4.7/src/proguard/DuplicateClassPrinter.java +63 -0
  127. data/lib/proguard4.7/src/proguard/FileWordReader.java +55 -0
  128. data/lib/proguard4.7/src/proguard/FullyQualifiedClassNameChecker.java +191 -0
  129. data/lib/proguard4.7/src/proguard/GPL.java +197 -0
  130. data/lib/proguard4.7/src/proguard/Initializer.java +424 -0
  131. data/lib/proguard4.7/src/proguard/InputReader.java +233 -0
  132. data/lib/proguard4.7/src/proguard/KeepClassMemberChecker.java +87 -0
  133. data/lib/proguard4.7/src/proguard/KeepClassSpecification.java +137 -0
  134. data/lib/proguard4.7/src/proguard/LineWordReader.java +74 -0
  135. data/lib/proguard4.7/src/proguard/MANIFEST.MF +2 -0
  136. data/lib/proguard4.7/src/proguard/MemberSpecification.java +114 -0
  137. data/lib/proguard4.7/src/proguard/OutputWriter.java +296 -0
  138. data/lib/proguard4.7/src/proguard/ParseException.java +51 -0
  139. data/lib/proguard4.7/src/proguard/ProGuard.java +512 -0
  140. data/lib/proguard4.7/src/proguard/SeedPrinter.java +97 -0
  141. data/lib/proguard4.7/src/proguard/SubclassedClassFilter.java +62 -0
  142. data/lib/proguard4.7/src/proguard/Targeter.java +88 -0
  143. data/lib/proguard4.7/src/proguard/UpToDateChecker.java +232 -0
  144. data/lib/proguard4.7/src/proguard/WordReader.java +387 -0
  145. data/lib/proguard4.7/src/proguard/ant/ClassPathElement.java +191 -0
  146. data/lib/proguard4.7/src/proguard/ant/ClassSpecificationElement.java +258 -0
  147. data/lib/proguard4.7/src/proguard/ant/ConfigurationElement.java +53 -0
  148. data/lib/proguard4.7/src/proguard/ant/ConfigurationTask.java +441 -0
  149. data/lib/proguard4.7/src/proguard/ant/FilterElement.java +85 -0
  150. data/lib/proguard4.7/src/proguard/ant/KeepSpecificationElement.java +87 -0
  151. data/lib/proguard4.7/src/proguard/ant/MemberSpecificationElement.java +218 -0
  152. data/lib/proguard4.7/src/proguard/ant/ProGuardTask.java +352 -0
  153. data/lib/proguard4.7/src/proguard/ant/package.html +3 -0
  154. data/lib/proguard4.7/src/proguard/ant/task.properties +2 -0
  155. data/lib/proguard4.7/src/proguard/classfile/ClassConstants.java +316 -0
  156. data/lib/proguard4.7/src/proguard/classfile/ClassPool.java +152 -0
  157. data/lib/proguard4.7/src/proguard/classfile/Clazz.java +261 -0
  158. data/lib/proguard4.7/src/proguard/classfile/Field.java +32 -0
  159. data/lib/proguard4.7/src/proguard/classfile/LibraryClass.java +548 -0
  160. data/lib/proguard4.7/src/proguard/classfile/LibraryField.java +77 -0
  161. data/lib/proguard4.7/src/proguard/classfile/LibraryMember.java +108 -0
  162. data/lib/proguard4.7/src/proguard/classfile/LibraryMethod.java +83 -0
  163. data/lib/proguard4.7/src/proguard/classfile/Member.java +57 -0
  164. data/lib/proguard4.7/src/proguard/classfile/Method.java +32 -0
  165. data/lib/proguard4.7/src/proguard/classfile/ProgramClass.java +572 -0
  166. data/lib/proguard4.7/src/proguard/classfile/ProgramField.java +93 -0
  167. data/lib/proguard4.7/src/proguard/classfile/ProgramMember.java +168 -0
  168. data/lib/proguard4.7/src/proguard/classfile/ProgramMethod.java +99 -0
  169. data/lib/proguard4.7/src/proguard/classfile/VisitorAccepter.java +47 -0
  170. data/lib/proguard4.7/src/proguard/classfile/attribute/Attribute.java +142 -0
  171. data/lib/proguard4.7/src/proguard/classfile/attribute/BootstrapMethodInfo.java +89 -0
  172. data/lib/proguard4.7/src/proguard/classfile/attribute/BootstrapMethodsAttribute.java +95 -0
  173. data/lib/proguard4.7/src/proguard/classfile/attribute/CodeAttribute.java +202 -0
  174. data/lib/proguard4.7/src/proguard/classfile/attribute/ConstantValueAttribute.java +62 -0
  175. data/lib/proguard4.7/src/proguard/classfile/attribute/DeprecatedAttribute.java +66 -0
  176. data/lib/proguard4.7/src/proguard/classfile/attribute/EnclosingMethodAttribute.java +132 -0
  177. data/lib/proguard4.7/src/proguard/classfile/attribute/ExceptionInfo.java +100 -0
  178. data/lib/proguard4.7/src/proguard/classfile/attribute/ExceptionsAttribute.java +80 -0
  179. data/lib/proguard4.7/src/proguard/classfile/attribute/InnerClassesAttribute.java +80 -0
  180. data/lib/proguard4.7/src/proguard/classfile/attribute/InnerClassesInfo.java +119 -0
  181. data/lib/proguard4.7/src/proguard/classfile/attribute/LineNumberInfo.java +50 -0
  182. data/lib/proguard4.7/src/proguard/classfile/attribute/LineNumberTableAttribute.java +100 -0
  183. data/lib/proguard4.7/src/proguard/classfile/attribute/LocalVariableInfo.java +99 -0
  184. data/lib/proguard4.7/src/proguard/classfile/attribute/LocalVariableTableAttribute.java +79 -0
  185. data/lib/proguard4.7/src/proguard/classfile/attribute/LocalVariableTypeInfo.java +107 -0
  186. data/lib/proguard4.7/src/proguard/classfile/attribute/LocalVariableTypeTableAttribute.java +79 -0
  187. data/lib/proguard4.7/src/proguard/classfile/attribute/SignatureAttribute.java +100 -0
  188. data/lib/proguard4.7/src/proguard/classfile/attribute/SourceDirAttribute.java +62 -0
  189. data/lib/proguard4.7/src/proguard/classfile/attribute/SourceFileAttribute.java +62 -0
  190. data/lib/proguard4.7/src/proguard/classfile/attribute/SyntheticAttribute.java +66 -0
  191. data/lib/proguard4.7/src/proguard/classfile/attribute/UnknownAttribute.java +82 -0
  192. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/Annotation.java +143 -0
  193. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/AnnotationDefaultAttribute.java +73 -0
  194. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/AnnotationElementValue.java +76 -0
  195. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/AnnotationsAttribute.java +100 -0
  196. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/ArrayElementValue.java +82 -0
  197. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/ClassElementValue.java +95 -0
  198. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/ConstantElementValue.java +71 -0
  199. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/ElementValue.java +126 -0
  200. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/EnumConstantElementValue.java +99 -0
  201. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/ParameterAnnotationsAttribute.java +83 -0
  202. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/RuntimeInvisibleAnnotationsAttribute.java +70 -0
  203. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/RuntimeInvisibleParameterAnnotationsAttribute.java +62 -0
  204. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/RuntimeVisibleAnnotationsAttribute.java +70 -0
  205. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/RuntimeVisibleParameterAnnotationsAttribute.java +62 -0
  206. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/package.html +4 -0
  207. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/AllAnnotationVisitor.java +100 -0
  208. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/AnnotatedClassVisitor.java +62 -0
  209. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/AnnotationToMemberVisitor.java +62 -0
  210. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/AnnotationTypeFilter.java +102 -0
  211. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/AnnotationVisitor.java +40 -0
  212. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/ElementValueVisitor.java +51 -0
  213. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/package.html +3 -0
  214. data/lib/proguard4.7/src/proguard/classfile/attribute/package.html +3 -0
  215. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/DoubleType.java +66 -0
  216. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/FloatType.java +66 -0
  217. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/FullFrame.java +202 -0
  218. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/IntegerType.java +66 -0
  219. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/LessZeroFrame.java +103 -0
  220. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/LongType.java +66 -0
  221. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/MoreZeroFrame.java +161 -0
  222. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/NullType.java +66 -0
  223. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/ObjectType.java +107 -0
  224. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/SameOneFrame.java +115 -0
  225. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/SameZeroFrame.java +74 -0
  226. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/StackMapAttribute.java +91 -0
  227. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/StackMapFrame.java +117 -0
  228. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/StackMapTableAttribute.java +93 -0
  229. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/TopType.java +66 -0
  230. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/UninitializedThisType.java +66 -0
  231. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/UninitializedType.java +106 -0
  232. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/VerificationType.java +103 -0
  233. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/VerificationTypeFactory.java +112 -0
  234. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/visitor/StackMapFrameVisitor.java +40 -0
  235. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/visitor/VerificationTypeVisitor.java +65 -0
  236. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/AllAttributeVisitor.java +117 -0
  237. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/AllBootstrapMethodInfoVisitor.java +55 -0
  238. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/AllExceptionInfoVisitor.java +55 -0
  239. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/AllInnerClassesInfoVisitor.java +55 -0
  240. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/AttributeNameFilter.java +368 -0
  241. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/AttributeVisitor.java +90 -0
  242. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/BootstrapMethodInfoVisitor.java +40 -0
  243. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/ExceptionInfoVisitor.java +37 -0
  244. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/InnerClassesInfoVisitor.java +38 -0
  245. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/LineNumberInfoVisitor.java +38 -0
  246. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/LocalVariableInfoVisitor.java +38 -0
  247. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/LocalVariableTypeInfoVisitor.java +38 -0
  248. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/MultiAttributeVisitor.java +365 -0
  249. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/NonEmptyAttributeFilter.java +293 -0
  250. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/RequiredAttributeFilter.java +360 -0
  251. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/StackSizeComputer.java +378 -0
  252. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/package.html +3 -0
  253. data/lib/proguard4.7/src/proguard/classfile/constant/ClassConstant.java +105 -0
  254. data/lib/proguard4.7/src/proguard/classfile/constant/Constant.java +68 -0
  255. data/lib/proguard4.7/src/proguard/classfile/constant/DoubleConstant.java +82 -0
  256. data/lib/proguard4.7/src/proguard/classfile/constant/FieldrefConstant.java +71 -0
  257. data/lib/proguard4.7/src/proguard/classfile/constant/FloatConstant.java +82 -0
  258. data/lib/proguard4.7/src/proguard/classfile/constant/IntegerConstant.java +82 -0
  259. data/lib/proguard4.7/src/proguard/classfile/constant/InterfaceMethodrefConstant.java +71 -0
  260. data/lib/proguard4.7/src/proguard/classfile/constant/InvokeDynamicConstant.java +148 -0
  261. data/lib/proguard4.7/src/proguard/classfile/constant/LongConstant.java +82 -0
  262. data/lib/proguard4.7/src/proguard/classfile/constant/MethodHandleConstant.java +124 -0
  263. data/lib/proguard4.7/src/proguard/classfile/constant/MethodTypeConstant.java +93 -0
  264. data/lib/proguard4.7/src/proguard/classfile/constant/MethodrefConstant.java +71 -0
  265. data/lib/proguard4.7/src/proguard/classfile/constant/NameAndTypeConstant.java +119 -0
  266. data/lib/proguard4.7/src/proguard/classfile/constant/RefConstant.java +130 -0
  267. data/lib/proguard4.7/src/proguard/classfile/constant/StringConstant.java +135 -0
  268. data/lib/proguard4.7/src/proguard/classfile/constant/Utf8Constant.java +285 -0
  269. data/lib/proguard4.7/src/proguard/classfile/constant/visitor/AllConstantVisitor.java +53 -0
  270. data/lib/proguard4.7/src/proguard/classfile/constant/visitor/BootstrapMethodHandleTraveler.java +100 -0
  271. data/lib/proguard4.7/src/proguard/classfile/constant/visitor/ConstantTagFilter.java +86 -0
  272. data/lib/proguard4.7/src/proguard/classfile/constant/visitor/ConstantVisitor.java +49 -0
  273. data/lib/proguard4.7/src/proguard/classfile/constant/visitor/ExceptClassConstantFilter.java +69 -0
  274. data/lib/proguard4.7/src/proguard/classfile/constant/visitor/MethodrefTraveler.java +60 -0
  275. data/lib/proguard4.7/src/proguard/classfile/constant/visitor/package.html +3 -0
  276. data/lib/proguard4.7/src/proguard/classfile/editor/AccessFixer.java +180 -0
  277. data/lib/proguard4.7/src/proguard/classfile/editor/AnnotationAdder.java +153 -0
  278. data/lib/proguard4.7/src/proguard/classfile/editor/AnnotationsAttributeEditor.java +67 -0
  279. data/lib/proguard4.7/src/proguard/classfile/editor/AttributeAdder.java +457 -0
  280. data/lib/proguard4.7/src/proguard/classfile/editor/AttributeSorter.java +89 -0
  281. data/lib/proguard4.7/src/proguard/classfile/editor/AttributesEditor.java +269 -0
  282. data/lib/proguard4.7/src/proguard/classfile/editor/BridgeMethodFixer.java +117 -0
  283. data/lib/proguard4.7/src/proguard/classfile/editor/ClassEditor.java +255 -0
  284. data/lib/proguard4.7/src/proguard/classfile/editor/ClassElementSorter.java +52 -0
  285. data/lib/proguard4.7/src/proguard/classfile/editor/ClassMemberSorter.java +69 -0
  286. data/lib/proguard4.7/src/proguard/classfile/editor/ClassReferenceFixer.java +546 -0
  287. data/lib/proguard4.7/src/proguard/classfile/editor/CodeAttributeComposer.java +843 -0
  288. data/lib/proguard4.7/src/proguard/classfile/editor/CodeAttributeEditor.java +1104 -0
  289. data/lib/proguard4.7/src/proguard/classfile/editor/CodeAttributeEditorResetter.java +60 -0
  290. data/lib/proguard4.7/src/proguard/classfile/editor/ComparableConstant.java +249 -0
  291. data/lib/proguard4.7/src/proguard/classfile/editor/ConstantAdder.java +239 -0
  292. data/lib/proguard4.7/src/proguard/classfile/editor/ConstantPoolEditor.java +782 -0
  293. data/lib/proguard4.7/src/proguard/classfile/editor/ConstantPoolRemapper.java +662 -0
  294. data/lib/proguard4.7/src/proguard/classfile/editor/ConstantPoolShrinker.java +578 -0
  295. data/lib/proguard4.7/src/proguard/classfile/editor/ConstantPoolSorter.java +123 -0
  296. data/lib/proguard4.7/src/proguard/classfile/editor/ElementValueAdder.java +217 -0
  297. data/lib/proguard4.7/src/proguard/classfile/editor/ElementValuesEditor.java +238 -0
  298. data/lib/proguard4.7/src/proguard/classfile/editor/ExceptionAdder.java +65 -0
  299. data/lib/proguard4.7/src/proguard/classfile/editor/ExceptionInfoAdder.java +67 -0
  300. data/lib/proguard4.7/src/proguard/classfile/editor/ExceptionsAttributeEditor.java +68 -0
  301. data/lib/proguard4.7/src/proguard/classfile/editor/InnerClassesAccessFixer.java +83 -0
  302. data/lib/proguard4.7/src/proguard/classfile/editor/InstructionAdder.java +76 -0
  303. data/lib/proguard4.7/src/proguard/classfile/editor/InstructionWriter.java +278 -0
  304. data/lib/proguard4.7/src/proguard/classfile/editor/InterfaceAdder.java +62 -0
  305. data/lib/proguard4.7/src/proguard/classfile/editor/InterfaceSorter.java +152 -0
  306. data/lib/proguard4.7/src/proguard/classfile/editor/InterfacesEditor.java +122 -0
  307. data/lib/proguard4.7/src/proguard/classfile/editor/LineNumberInfoAdder.java +59 -0
  308. data/lib/proguard4.7/src/proguard/classfile/editor/LineNumberTableAttributeEditor.java +67 -0
  309. data/lib/proguard4.7/src/proguard/classfile/editor/LocalVariableInfoAdder.java +67 -0
  310. data/lib/proguard4.7/src/proguard/classfile/editor/LocalVariableTableAttributeEditor.java +67 -0
  311. data/lib/proguard4.7/src/proguard/classfile/editor/LocalVariableTypeInfoAdder.java +68 -0
  312. data/lib/proguard4.7/src/proguard/classfile/editor/LocalVariableTypeTableAttributeEditor.java +68 -0
  313. data/lib/proguard4.7/src/proguard/classfile/editor/MemberAdder.java +288 -0
  314. data/lib/proguard4.7/src/proguard/classfile/editor/MemberReferenceFixer.java +447 -0
  315. data/lib/proguard4.7/src/proguard/classfile/editor/MethodInvocationFixer.java +243 -0
  316. data/lib/proguard4.7/src/proguard/classfile/editor/NameAndTypeShrinker.java +188 -0
  317. data/lib/proguard4.7/src/proguard/classfile/editor/NamedAttributeDeleter.java +54 -0
  318. data/lib/proguard4.7/src/proguard/classfile/editor/ParameterAnnotationsAttributeEditor.java +71 -0
  319. data/lib/proguard4.7/src/proguard/classfile/editor/StackSizeUpdater.java +54 -0
  320. data/lib/proguard4.7/src/proguard/classfile/editor/SubclassAdder.java +59 -0
  321. data/lib/proguard4.7/src/proguard/classfile/editor/SubclassToAdder.java +60 -0
  322. data/lib/proguard4.7/src/proguard/classfile/editor/Utf8Shrinker.java +455 -0
  323. data/lib/proguard4.7/src/proguard/classfile/editor/VariableCleaner.java +267 -0
  324. data/lib/proguard4.7/src/proguard/classfile/editor/VariableEditor.java +130 -0
  325. data/lib/proguard4.7/src/proguard/classfile/editor/VariableRemapper.java +156 -0
  326. data/lib/proguard4.7/src/proguard/classfile/editor/VariableSizeUpdater.java +105 -0
  327. data/lib/proguard4.7/src/proguard/classfile/editor/package.html +3 -0
  328. data/lib/proguard4.7/src/proguard/classfile/instruction/BranchInstruction.java +180 -0
  329. data/lib/proguard4.7/src/proguard/classfile/instruction/ConstantInstruction.java +309 -0
  330. data/lib/proguard4.7/src/proguard/classfile/instruction/Instruction.java +920 -0
  331. data/lib/proguard4.7/src/proguard/classfile/instruction/InstructionConstants.java +449 -0
  332. data/lib/proguard4.7/src/proguard/classfile/instruction/InstructionFactory.java +300 -0
  333. data/lib/proguard4.7/src/proguard/classfile/instruction/InstructionUtil.java +67 -0
  334. data/lib/proguard4.7/src/proguard/classfile/instruction/LookUpSwitchInstruction.java +135 -0
  335. data/lib/proguard4.7/src/proguard/classfile/instruction/SimpleInstruction.java +255 -0
  336. data/lib/proguard4.7/src/proguard/classfile/instruction/SwitchInstruction.java +83 -0
  337. data/lib/proguard4.7/src/proguard/classfile/instruction/TableSwitchInstruction.java +139 -0
  338. data/lib/proguard4.7/src/proguard/classfile/instruction/VariableInstruction.java +372 -0
  339. data/lib/proguard4.7/src/proguard/classfile/instruction/package.html +9 -0
  340. data/lib/proguard4.7/src/proguard/classfile/instruction/visitor/AllInstructionVisitor.java +56 -0
  341. data/lib/proguard4.7/src/proguard/classfile/instruction/visitor/InstructionCounter.java +59 -0
  342. data/lib/proguard4.7/src/proguard/classfile/instruction/visitor/InstructionVisitor.java +42 -0
  343. data/lib/proguard4.7/src/proguard/classfile/instruction/visitor/MultiInstructionVisitor.java +131 -0
  344. data/lib/proguard4.7/src/proguard/classfile/instruction/visitor/package.html +3 -0
  345. data/lib/proguard4.7/src/proguard/classfile/io/LibraryClassReader.java +383 -0
  346. data/lib/proguard4.7/src/proguard/classfile/io/ProgramClassReader.java +919 -0
  347. data/lib/proguard4.7/src/proguard/classfile/io/ProgramClassWriter.java +735 -0
  348. data/lib/proguard4.7/src/proguard/classfile/io/RuntimeDataInput.java +223 -0
  349. data/lib/proguard4.7/src/proguard/classfile/io/RuntimeDataOutput.java +224 -0
  350. data/lib/proguard4.7/src/proguard/classfile/io/package.html +3 -0
  351. data/lib/proguard4.7/src/proguard/classfile/package.html +15 -0
  352. data/lib/proguard4.7/src/proguard/classfile/util/AccessUtil.java +105 -0
  353. data/lib/proguard4.7/src/proguard/classfile/util/ClassReferenceInitializer.java +559 -0
  354. data/lib/proguard4.7/src/proguard/classfile/util/ClassSubHierarchyInitializer.java +77 -0
  355. data/lib/proguard4.7/src/proguard/classfile/util/ClassSuperHierarchyInitializer.java +163 -0
  356. data/lib/proguard4.7/src/proguard/classfile/util/ClassUtil.java +1227 -0
  357. data/lib/proguard4.7/src/proguard/classfile/util/DescriptorClassEnumeration.java +236 -0
  358. data/lib/proguard4.7/src/proguard/classfile/util/DynamicClassReferenceInitializer.java +485 -0
  359. data/lib/proguard4.7/src/proguard/classfile/util/DynamicMemberReferenceInitializer.java +944 -0
  360. data/lib/proguard4.7/src/proguard/classfile/util/ExternalTypeEnumeration.java +106 -0
  361. data/lib/proguard4.7/src/proguard/classfile/util/InstructionSequenceMatcher.java +754 -0
  362. data/lib/proguard4.7/src/proguard/classfile/util/InternalTypeEnumeration.java +204 -0
  363. data/lib/proguard4.7/src/proguard/classfile/util/MemberFinder.java +197 -0
  364. data/lib/proguard4.7/src/proguard/classfile/util/MethodLinker.java +160 -0
  365. data/lib/proguard4.7/src/proguard/classfile/util/SimplifiedVisitor.java +834 -0
  366. data/lib/proguard4.7/src/proguard/classfile/util/StringReferenceInitializer.java +90 -0
  367. data/lib/proguard4.7/src/proguard/classfile/util/StringSharer.java +172 -0
  368. data/lib/proguard4.7/src/proguard/classfile/util/WarningPrinter.java +136 -0
  369. data/lib/proguard4.7/src/proguard/classfile/util/package.html +3 -0
  370. data/lib/proguard4.7/src/proguard/classfile/visitor/AllClassVisitor.java +47 -0
  371. data/lib/proguard4.7/src/proguard/classfile/visitor/AllFieldVisitor.java +55 -0
  372. data/lib/proguard4.7/src/proguard/classfile/visitor/AllMemberVisitor.java +57 -0
  373. data/lib/proguard4.7/src/proguard/classfile/visitor/AllMethodVisitor.java +55 -0
  374. data/lib/proguard4.7/src/proguard/classfile/visitor/BottomClassFilter.java +69 -0
  375. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassAccessFilter.java +88 -0
  376. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassCleaner.java +275 -0
  377. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassCollector.java +58 -0
  378. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassCounter.java +56 -0
  379. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassHierarchyTraveler.java +91 -0
  380. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassNameFilter.java +112 -0
  381. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassPoolFiller.java +55 -0
  382. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassPoolVisitor.java +37 -0
  383. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassPresenceFilter.java +93 -0
  384. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassPrinter.java +1011 -0
  385. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassVersionFilter.java +85 -0
  386. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassVersionSetter.java +83 -0
  387. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassVisitor.java +36 -0
  388. data/lib/proguard4.7/src/proguard/classfile/visitor/ConcreteClassDownTraveler.java +100 -0
  389. data/lib/proguard4.7/src/proguard/classfile/visitor/DotClassClassVisitor.java +89 -0
  390. data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptClassFilter.java +69 -0
  391. data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptClassesFilter.java +90 -0
  392. data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptionCounter.java +52 -0
  393. data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptionExcludedOffsetFilter.java +64 -0
  394. data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptionHandlerConstantVisitor.java +62 -0
  395. data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptionHandlerFilter.java +70 -0
  396. data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptionOffsetFilter.java +64 -0
  397. data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptionRangeFilter.java +68 -0
  398. data/lib/proguard4.7/src/proguard/classfile/visitor/ImplementedClassConstantFilter.java +69 -0
  399. data/lib/proguard4.7/src/proguard/classfile/visitor/ImplementedClassFilter.java +71 -0
  400. data/lib/proguard4.7/src/proguard/classfile/visitor/ImplementingClassConstantFilter.java +70 -0
  401. data/lib/proguard4.7/src/proguard/classfile/visitor/LibraryClassFilter.java +60 -0
  402. data/lib/proguard4.7/src/proguard/classfile/visitor/LibraryMemberFilter.java +73 -0
  403. data/lib/proguard4.7/src/proguard/classfile/visitor/MemberAccessFilter.java +122 -0
  404. data/lib/proguard4.7/src/proguard/classfile/visitor/MemberClassAccessFilter.java +106 -0
  405. data/lib/proguard4.7/src/proguard/classfile/visitor/MemberCollector.java +59 -0
  406. data/lib/proguard4.7/src/proguard/classfile/visitor/MemberCounter.java +72 -0
  407. data/lib/proguard4.7/src/proguard/classfile/visitor/MemberDescriptorFilter.java +113 -0
  408. data/lib/proguard4.7/src/proguard/classfile/visitor/MemberNameFilter.java +113 -0
  409. data/lib/proguard4.7/src/proguard/classfile/visitor/MemberToClassVisitor.java +90 -0
  410. data/lib/proguard4.7/src/proguard/classfile/visitor/MemberVisitor.java +40 -0
  411. data/lib/proguard4.7/src/proguard/classfile/visitor/MethodImplementationFilter.java +70 -0
  412. data/lib/proguard4.7/src/proguard/classfile/visitor/MethodImplementationTraveler.java +128 -0
  413. data/lib/proguard4.7/src/proguard/classfile/visitor/MultiClassPoolVisitor.java +88 -0
  414. data/lib/proguard4.7/src/proguard/classfile/visitor/MultiClassVisitor.java +97 -0
  415. data/lib/proguard4.7/src/proguard/classfile/visitor/MultiMemberVisitor.java +113 -0
  416. data/lib/proguard4.7/src/proguard/classfile/visitor/NamedClassVisitor.java +49 -0
  417. data/lib/proguard4.7/src/proguard/classfile/visitor/NamedFieldVisitor.java +61 -0
  418. data/lib/proguard4.7/src/proguard/classfile/visitor/NamedMethodVisitor.java +61 -0
  419. data/lib/proguard4.7/src/proguard/classfile/visitor/ProgramClassFilter.java +60 -0
  420. data/lib/proguard4.7/src/proguard/classfile/visitor/ProgramMemberFilter.java +73 -0
  421. data/lib/proguard4.7/src/proguard/classfile/visitor/ReferencedClassVisitor.java +255 -0
  422. data/lib/proguard4.7/src/proguard/classfile/visitor/ReferencedMemberVisitor.java +73 -0
  423. data/lib/proguard4.7/src/proguard/classfile/visitor/SimilarMemberVisitor.java +125 -0
  424. data/lib/proguard4.7/src/proguard/classfile/visitor/SimpleClassPrinter.java +167 -0
  425. data/lib/proguard4.7/src/proguard/classfile/visitor/SubclassFilter.java +91 -0
  426. data/lib/proguard4.7/src/proguard/classfile/visitor/SubclassTraveler.java +60 -0
  427. data/lib/proguard4.7/src/proguard/classfile/visitor/VariableClassVisitor.java +78 -0
  428. data/lib/proguard4.7/src/proguard/classfile/visitor/VariableMemberVisitor.java +96 -0
  429. data/lib/proguard4.7/src/proguard/classfile/visitor/package.html +40 -0
  430. data/lib/proguard4.7/src/proguard/evaluation/BasicBranchUnit.java +126 -0
  431. data/lib/proguard4.7/src/proguard/evaluation/BasicInvocationUnit.java +425 -0
  432. data/lib/proguard4.7/src/proguard/evaluation/BranchUnit.java +63 -0
  433. data/lib/proguard4.7/src/proguard/evaluation/ClassConstantValueFactory.java +53 -0
  434. data/lib/proguard4.7/src/proguard/evaluation/ConstantValueFactory.java +113 -0
  435. data/lib/proguard4.7/src/proguard/evaluation/InvocationUnit.java +62 -0
  436. data/lib/proguard4.7/src/proguard/evaluation/Processor.java +908 -0
  437. data/lib/proguard4.7/src/proguard/evaluation/Stack.java +560 -0
  438. data/lib/proguard4.7/src/proguard/evaluation/TracedStack.java +342 -0
  439. data/lib/proguard4.7/src/proguard/evaluation/TracedVariables.java +199 -0
  440. data/lib/proguard4.7/src/proguard/evaluation/Variables.java +347 -0
  441. data/lib/proguard4.7/src/proguard/evaluation/value/Category1Value.java +41 -0
  442. data/lib/proguard4.7/src/proguard/evaluation/value/Category2Value.java +41 -0
  443. data/lib/proguard4.7/src/proguard/evaluation/value/ComparisonValue.java +69 -0
  444. data/lib/proguard4.7/src/proguard/evaluation/value/CompositeDoubleValue.java +81 -0
  445. data/lib/proguard4.7/src/proguard/evaluation/value/CompositeFloatValue.java +81 -0
  446. data/lib/proguard4.7/src/proguard/evaluation/value/CompositeIntegerValue.java +87 -0
  447. data/lib/proguard4.7/src/proguard/evaluation/value/CompositeLongValue.java +87 -0
  448. data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedByteValue.java +64 -0
  449. data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedCharacterValue.java +64 -0
  450. data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedDoubleValue.java +64 -0
  451. data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedFloatValue.java +64 -0
  452. data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedIntegerValue.java +64 -0
  453. data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedLongValue.java +64 -0
  454. data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedShortValue.java +64 -0
  455. data/lib/proguard4.7/src/proguard/evaluation/value/DoubleValue.java +359 -0
  456. data/lib/proguard4.7/src/proguard/evaluation/value/FloatValue.java +359 -0
  457. data/lib/proguard4.7/src/proguard/evaluation/value/IdentifiedDoubleValue.java +67 -0
  458. data/lib/proguard4.7/src/proguard/evaluation/value/IdentifiedFloatValue.java +67 -0
  459. data/lib/proguard4.7/src/proguard/evaluation/value/IdentifiedIntegerValue.java +67 -0
  460. data/lib/proguard4.7/src/proguard/evaluation/value/IdentifiedLongValue.java +67 -0
  461. data/lib/proguard4.7/src/proguard/evaluation/value/IdentifiedReferenceValue.java +102 -0
  462. data/lib/proguard4.7/src/proguard/evaluation/value/IdentifiedValueFactory.java +75 -0
  463. data/lib/proguard4.7/src/proguard/evaluation/value/InstructionOffsetValue.java +307 -0
  464. data/lib/proguard4.7/src/proguard/evaluation/value/IntegerValue.java +1002 -0
  465. data/lib/proguard4.7/src/proguard/evaluation/value/LongValue.java +554 -0
  466. data/lib/proguard4.7/src/proguard/evaluation/value/NegatedDoubleValue.java +71 -0
  467. data/lib/proguard4.7/src/proguard/evaluation/value/NegatedFloatValue.java +71 -0
  468. data/lib/proguard4.7/src/proguard/evaluation/value/NegatedIntegerValue.java +71 -0
  469. data/lib/proguard4.7/src/proguard/evaluation/value/NegatedLongValue.java +71 -0
  470. data/lib/proguard4.7/src/proguard/evaluation/value/ParticularDoubleValue.java +216 -0
  471. data/lib/proguard4.7/src/proguard/evaluation/value/ParticularFloatValue.java +216 -0
  472. data/lib/proguard4.7/src/proguard/evaluation/value/ParticularIntegerValue.java +383 -0
  473. data/lib/proguard4.7/src/proguard/evaluation/value/ParticularLongValue.java +271 -0
  474. data/lib/proguard4.7/src/proguard/evaluation/value/ReferenceValue.java +540 -0
  475. data/lib/proguard4.7/src/proguard/evaluation/value/SpecificDoubleValue.java +186 -0
  476. data/lib/proguard4.7/src/proguard/evaluation/value/SpecificFloatValue.java +186 -0
  477. data/lib/proguard4.7/src/proguard/evaluation/value/SpecificIntegerValue.java +354 -0
  478. data/lib/proguard4.7/src/proguard/evaluation/value/SpecificLongValue.java +259 -0
  479. data/lib/proguard4.7/src/proguard/evaluation/value/SpecificValueFactory.java +97 -0
  480. data/lib/proguard4.7/src/proguard/evaluation/value/TopValue.java +79 -0
  481. data/lib/proguard4.7/src/proguard/evaluation/value/UnknownDoubleValue.java +125 -0
  482. data/lib/proguard4.7/src/proguard/evaluation/value/UnknownFloatValue.java +125 -0
  483. data/lib/proguard4.7/src/proguard/evaluation/value/UnknownIntegerValue.java +216 -0
  484. data/lib/proguard4.7/src/proguard/evaluation/value/UnknownLongValue.java +160 -0
  485. data/lib/proguard4.7/src/proguard/evaluation/value/Value.java +169 -0
  486. data/lib/proguard4.7/src/proguard/evaluation/value/ValueFactory.java +193 -0
  487. data/lib/proguard4.7/src/proguard/evaluation/value/package.html +3 -0
  488. data/lib/proguard4.7/src/proguard/gui/ClassPathPanel.java +441 -0
  489. data/lib/proguard4.7/src/proguard/gui/ClassSpecificationDialog.java +546 -0
  490. data/lib/proguard4.7/src/proguard/gui/ClassSpecificationsPanel.java +231 -0
  491. data/lib/proguard4.7/src/proguard/gui/ExtensionFileFilter.java +78 -0
  492. data/lib/proguard4.7/src/proguard/gui/FilterBuilder.java +208 -0
  493. data/lib/proguard4.7/src/proguard/gui/FilterDialog.java +320 -0
  494. data/lib/proguard4.7/src/proguard/gui/GUIResources.java +56 -0
  495. data/lib/proguard4.7/src/proguard/gui/GUIResources.properties +643 -0
  496. data/lib/proguard4.7/src/proguard/gui/KeepSpecificationsPanel.java +81 -0
  497. data/lib/proguard4.7/src/proguard/gui/ListPanel.java +341 -0
  498. data/lib/proguard4.7/src/proguard/gui/MANIFEST.MF +3 -0
  499. data/lib/proguard4.7/src/proguard/gui/MemberSpecificationDialog.java +509 -0
  500. data/lib/proguard4.7/src/proguard/gui/MemberSpecificationsPanel.java +304 -0
  501. data/lib/proguard4.7/src/proguard/gui/MessageDialogRunnable.java +90 -0
  502. data/lib/proguard4.7/src/proguard/gui/OptimizationsDialog.java +251 -0
  503. data/lib/proguard4.7/src/proguard/gui/ProGuardGUI.java +1777 -0
  504. data/lib/proguard4.7/src/proguard/gui/ProGuardRunnable.java +154 -0
  505. data/lib/proguard4.7/src/proguard/gui/ReTraceRunnable.java +149 -0
  506. data/lib/proguard4.7/src/proguard/gui/SwingUtil.java +82 -0
  507. data/lib/proguard4.7/src/proguard/gui/TabbedPane.java +229 -0
  508. data/lib/proguard4.7/src/proguard/gui/TextAreaOutputStream.java +81 -0
  509. data/lib/proguard4.7/src/proguard/gui/arrow.gif +0 -0
  510. data/lib/proguard4.7/src/proguard/gui/boilerplate.pro +410 -0
  511. data/lib/proguard4.7/src/proguard/gui/default.pro +318 -0
  512. data/lib/proguard4.7/src/proguard/gui/package.html +3 -0
  513. data/lib/proguard4.7/src/proguard/gui/splash/BufferedSprite.java +145 -0
  514. data/lib/proguard4.7/src/proguard/gui/splash/CircleSprite.java +74 -0
  515. data/lib/proguard4.7/src/proguard/gui/splash/ClipSprite.java +85 -0
  516. data/lib/proguard4.7/src/proguard/gui/splash/ColorSprite.java +65 -0
  517. data/lib/proguard4.7/src/proguard/gui/splash/CompositeSprite.java +56 -0
  518. data/lib/proguard4.7/src/proguard/gui/splash/ConstantColor.java +51 -0
  519. data/lib/proguard4.7/src/proguard/gui/splash/ConstantDouble.java +49 -0
  520. data/lib/proguard4.7/src/proguard/gui/splash/ConstantFont.java +46 -0
  521. data/lib/proguard4.7/src/proguard/gui/splash/ConstantInt.java +49 -0
  522. data/lib/proguard4.7/src/proguard/gui/splash/ConstantString.java +49 -0
  523. data/lib/proguard4.7/src/proguard/gui/splash/ConstantTiming.java +57 -0
  524. data/lib/proguard4.7/src/proguard/gui/splash/FontSprite.java +65 -0
  525. data/lib/proguard4.7/src/proguard/gui/splash/ImageSprite.java +76 -0
  526. data/lib/proguard4.7/src/proguard/gui/splash/LinearColor.java +72 -0
  527. data/lib/proguard4.7/src/proguard/gui/splash/LinearDouble.java +55 -0
  528. data/lib/proguard4.7/src/proguard/gui/splash/LinearInt.java +55 -0
  529. data/lib/proguard4.7/src/proguard/gui/splash/LinearTiming.java +55 -0
  530. data/lib/proguard4.7/src/proguard/gui/splash/OverrideGraphics2D.java +598 -0
  531. data/lib/proguard4.7/src/proguard/gui/splash/RectangleSprite.java +114 -0
  532. data/lib/proguard4.7/src/proguard/gui/splash/SawToothTiming.java +53 -0
  533. data/lib/proguard4.7/src/proguard/gui/splash/ShadowedSprite.java +109 -0
  534. data/lib/proguard4.7/src/proguard/gui/splash/SineTiming.java +53 -0
  535. data/lib/proguard4.7/src/proguard/gui/splash/SmoothTiming.java +66 -0
  536. data/lib/proguard4.7/src/proguard/gui/splash/SplashPanel.java +235 -0
  537. data/lib/proguard4.7/src/proguard/gui/splash/Sprite.java +41 -0
  538. data/lib/proguard4.7/src/proguard/gui/splash/TextSprite.java +89 -0
  539. data/lib/proguard4.7/src/proguard/gui/splash/TimeSwitchSprite.java +75 -0
  540. data/lib/proguard4.7/src/proguard/gui/splash/Timing.java +34 -0
  541. data/lib/proguard4.7/src/proguard/gui/splash/TypeWriterString.java +71 -0
  542. data/lib/proguard4.7/src/proguard/gui/splash/VariableColor.java +36 -0
  543. data/lib/proguard4.7/src/proguard/gui/splash/VariableDouble.java +34 -0
  544. data/lib/proguard4.7/src/proguard/gui/splash/VariableFont.java +36 -0
  545. data/lib/proguard4.7/src/proguard/gui/splash/VariableInt.java +34 -0
  546. data/lib/proguard4.7/src/proguard/gui/splash/VariableSizeFont.java +65 -0
  547. data/lib/proguard4.7/src/proguard/gui/splash/VariableString.java +34 -0
  548. data/lib/proguard4.7/src/proguard/gui/splash/package.html +4 -0
  549. data/lib/proguard4.7/src/proguard/gui/vtitle.png +0 -0
  550. data/lib/proguard4.7/src/proguard/io/CascadingDataEntryWriter.java +94 -0
  551. data/lib/proguard4.7/src/proguard/io/ClassFilter.java +59 -0
  552. data/lib/proguard4.7/src/proguard/io/ClassReader.java +115 -0
  553. data/lib/proguard4.7/src/proguard/io/ClassRewriter.java +80 -0
  554. data/lib/proguard4.7/src/proguard/io/DataEntry.java +62 -0
  555. data/lib/proguard4.7/src/proguard/io/DataEntryClassWriter.java +85 -0
  556. data/lib/proguard4.7/src/proguard/io/DataEntryCopier.java +247 -0
  557. data/lib/proguard4.7/src/proguard/io/DataEntryDirectoryFilter.java +40 -0
  558. data/lib/proguard4.7/src/proguard/io/DataEntryFilter.java +38 -0
  559. data/lib/proguard4.7/src/proguard/io/DataEntryNameFilter.java +54 -0
  560. data/lib/proguard4.7/src/proguard/io/DataEntryObfuscator.java +150 -0
  561. data/lib/proguard4.7/src/proguard/io/DataEntryParentFilter.java +51 -0
  562. data/lib/proguard4.7/src/proguard/io/DataEntryPump.java +43 -0
  563. data/lib/proguard4.7/src/proguard/io/DataEntryReader.java +38 -0
  564. data/lib/proguard4.7/src/proguard/io/DataEntryRenamer.java +104 -0
  565. data/lib/proguard4.7/src/proguard/io/DataEntryRewriter.java +148 -0
  566. data/lib/proguard4.7/src/proguard/io/DataEntryWriter.java +73 -0
  567. data/lib/proguard4.7/src/proguard/io/DirectoryFilter.java +58 -0
  568. data/lib/proguard4.7/src/proguard/io/DirectoryPump.java +78 -0
  569. data/lib/proguard4.7/src/proguard/io/DirectoryWriter.java +165 -0
  570. data/lib/proguard4.7/src/proguard/io/FileDataEntry.java +96 -0
  571. data/lib/proguard4.7/src/proguard/io/FilteredDataEntryReader.java +90 -0
  572. data/lib/proguard4.7/src/proguard/io/FilteredDataEntryWriter.java +125 -0
  573. data/lib/proguard4.7/src/proguard/io/Finisher.java +37 -0
  574. data/lib/proguard4.7/src/proguard/io/JarReader.java +75 -0
  575. data/lib/proguard4.7/src/proguard/io/JarWriter.java +235 -0
  576. data/lib/proguard4.7/src/proguard/io/ManifestRewriter.java +216 -0
  577. data/lib/proguard4.7/src/proguard/io/NameFilter.java +83 -0
  578. data/lib/proguard4.7/src/proguard/io/ParentDataEntryWriter.java +75 -0
  579. data/lib/proguard4.7/src/proguard/io/RenamedDataEntry.java +83 -0
  580. data/lib/proguard4.7/src/proguard/io/ZipDataEntry.java +98 -0
  581. data/lib/proguard4.7/src/proguard/io/package.html +4 -0
  582. data/lib/proguard4.7/src/proguard/obfuscate/AttributeShrinker.java +120 -0
  583. data/lib/proguard4.7/src/proguard/obfuscate/AttributeUsageMarker.java +71 -0
  584. data/lib/proguard4.7/src/proguard/obfuscate/ClassObfuscator.java +533 -0
  585. data/lib/proguard4.7/src/proguard/obfuscate/ClassRenamer.java +109 -0
  586. data/lib/proguard4.7/src/proguard/obfuscate/DictionaryNameFactory.java +189 -0
  587. data/lib/proguard4.7/src/proguard/obfuscate/MapCleaner.java +57 -0
  588. data/lib/proguard4.7/src/proguard/obfuscate/MappingKeeper.java +177 -0
  589. data/lib/proguard4.7/src/proguard/obfuscate/MappingPrinter.java +147 -0
  590. data/lib/proguard4.7/src/proguard/obfuscate/MappingProcessor.java +79 -0
  591. data/lib/proguard4.7/src/proguard/obfuscate/MappingReader.java +199 -0
  592. data/lib/proguard4.7/src/proguard/obfuscate/MemberNameCleaner.java +60 -0
  593. data/lib/proguard4.7/src/proguard/obfuscate/MemberNameCollector.java +106 -0
  594. data/lib/proguard4.7/src/proguard/obfuscate/MemberNameConflictFixer.java +159 -0
  595. data/lib/proguard4.7/src/proguard/obfuscate/MemberNameFilter.java +120 -0
  596. data/lib/proguard4.7/src/proguard/obfuscate/MemberObfuscator.java +230 -0
  597. data/lib/proguard4.7/src/proguard/obfuscate/MemberSpecialNameFilter.java +101 -0
  598. data/lib/proguard4.7/src/proguard/obfuscate/MultiMappingProcessor.java +96 -0
  599. data/lib/proguard4.7/src/proguard/obfuscate/NameFactory.java +34 -0
  600. data/lib/proguard4.7/src/proguard/obfuscate/NameFactoryResetter.java +59 -0
  601. data/lib/proguard4.7/src/proguard/obfuscate/NameMarker.java +166 -0
  602. data/lib/proguard4.7/src/proguard/obfuscate/NumericNameFactory.java +49 -0
  603. data/lib/proguard4.7/src/proguard/obfuscate/Obfuscator.java +445 -0
  604. data/lib/proguard4.7/src/proguard/obfuscate/ParameterNameMarker.java +128 -0
  605. data/lib/proguard4.7/src/proguard/obfuscate/SimpleNameFactory.java +156 -0
  606. data/lib/proguard4.7/src/proguard/obfuscate/SourceFileRenamer.java +84 -0
  607. data/lib/proguard4.7/src/proguard/obfuscate/SpecialNameFactory.java +83 -0
  608. data/lib/proguard4.7/src/proguard/obfuscate/package.html +3 -0
  609. data/lib/proguard4.7/src/proguard/optimize/BootstrapMethodArgumentShrinker.java +103 -0
  610. data/lib/proguard4.7/src/proguard/optimize/ChangedCodePrinter.java +297 -0
  611. data/lib/proguard4.7/src/proguard/optimize/ConstantMemberFilter.java +77 -0
  612. data/lib/proguard4.7/src/proguard/optimize/ConstantParameterFilter.java +79 -0
  613. data/lib/proguard4.7/src/proguard/optimize/DuplicateInitializerFixer.java +215 -0
  614. data/lib/proguard4.7/src/proguard/optimize/DuplicateInitializerInvocationFixer.java +161 -0
  615. data/lib/proguard4.7/src/proguard/optimize/KeepMarker.java +95 -0
  616. data/lib/proguard4.7/src/proguard/optimize/KeptClassFilter.java +69 -0
  617. data/lib/proguard4.7/src/proguard/optimize/KeptMemberFilter.java +88 -0
  618. data/lib/proguard4.7/src/proguard/optimize/MemberDescriptorSpecializer.java +138 -0
  619. data/lib/proguard4.7/src/proguard/optimize/MethodDescriptorShrinker.java +317 -0
  620. data/lib/proguard4.7/src/proguard/optimize/MethodStaticizer.java +87 -0
  621. data/lib/proguard4.7/src/proguard/optimize/OptimizationInfoMemberFilter.java +94 -0
  622. data/lib/proguard4.7/src/proguard/optimize/Optimizer.java +963 -0
  623. data/lib/proguard4.7/src/proguard/optimize/ParameterShrinker.java +146 -0
  624. data/lib/proguard4.7/src/proguard/optimize/TailRecursionSimplifier.java +356 -0
  625. data/lib/proguard4.7/src/proguard/optimize/WriteOnlyFieldFilter.java +65 -0
  626. data/lib/proguard4.7/src/proguard/optimize/evaluation/EvaluationShrinker.java +2082 -0
  627. data/lib/proguard4.7/src/proguard/optimize/evaluation/EvaluationSimplifier.java +973 -0
  628. data/lib/proguard4.7/src/proguard/optimize/evaluation/LivenessAnalyzer.java +526 -0
  629. data/lib/proguard4.7/src/proguard/optimize/evaluation/LoadingInvocationUnit.java +195 -0
  630. data/lib/proguard4.7/src/proguard/optimize/evaluation/PartialEvaluator.java +1282 -0
  631. data/lib/proguard4.7/src/proguard/optimize/evaluation/StoringInvocationUnit.java +207 -0
  632. data/lib/proguard4.7/src/proguard/optimize/evaluation/TracedBranchUnit.java +59 -0
  633. data/lib/proguard4.7/src/proguard/optimize/evaluation/VariableOptimizer.java +345 -0
  634. data/lib/proguard4.7/src/proguard/optimize/evaluation/package.html +4 -0
  635. data/lib/proguard4.7/src/proguard/optimize/info/AccessMethodMarker.java +202 -0
  636. data/lib/proguard4.7/src/proguard/optimize/info/BackwardBranchMarker.java +90 -0
  637. data/lib/proguard4.7/src/proguard/optimize/info/CatchExceptionMarker.java +69 -0
  638. data/lib/proguard4.7/src/proguard/optimize/info/CaughtClassFilter.java +63 -0
  639. data/lib/proguard4.7/src/proguard/optimize/info/CaughtClassMarker.java +64 -0
  640. data/lib/proguard4.7/src/proguard/optimize/info/ClassOptimizationInfo.java +165 -0
  641. data/lib/proguard4.7/src/proguard/optimize/info/ClassOptimizationInfoSetter.java +47 -0
  642. data/lib/proguard4.7/src/proguard/optimize/info/DotClassFilter.java +63 -0
  643. data/lib/proguard4.7/src/proguard/optimize/info/DotClassMarker.java +96 -0
  644. data/lib/proguard4.7/src/proguard/optimize/info/ExceptionInstructionChecker.java +193 -0
  645. data/lib/proguard4.7/src/proguard/optimize/info/FieldOptimizationInfo.java +204 -0
  646. data/lib/proguard4.7/src/proguard/optimize/info/InstanceofClassFilter.java +63 -0
  647. data/lib/proguard4.7/src/proguard/optimize/info/InstanceofClassMarker.java +93 -0
  648. data/lib/proguard4.7/src/proguard/optimize/info/InstantiationClassFilter.java +62 -0
  649. data/lib/proguard4.7/src/proguard/optimize/info/InstantiationClassMarker.java +93 -0
  650. data/lib/proguard4.7/src/proguard/optimize/info/MemberOptimizationInfoSetter.java +59 -0
  651. data/lib/proguard4.7/src/proguard/optimize/info/MethodInvocationMarker.java +107 -0
  652. data/lib/proguard4.7/src/proguard/optimize/info/MethodOptimizationInfo.java +302 -0
  653. data/lib/proguard4.7/src/proguard/optimize/info/NoSideEffectMethodMarker.java +91 -0
  654. data/lib/proguard4.7/src/proguard/optimize/info/NonPrivateMemberMarker.java +171 -0
  655. data/lib/proguard4.7/src/proguard/optimize/info/PackageVisibleMemberContainingClassMarker.java +85 -0
  656. data/lib/proguard4.7/src/proguard/optimize/info/PackageVisibleMemberInvokingClassMarker.java +129 -0
  657. data/lib/proguard4.7/src/proguard/optimize/info/ParameterUsageMarker.java +285 -0
  658. data/lib/proguard4.7/src/proguard/optimize/info/ReadWriteFieldMarker.java +163 -0
  659. data/lib/proguard4.7/src/proguard/optimize/info/SideEffectInstructionChecker.java +245 -0
  660. data/lib/proguard4.7/src/proguard/optimize/info/SideEffectMethodMarker.java +175 -0
  661. data/lib/proguard4.7/src/proguard/optimize/info/StaticInitializerContainingClassFilter.java +62 -0
  662. data/lib/proguard4.7/src/proguard/optimize/info/StaticInitializerContainingClassMarker.java +65 -0
  663. data/lib/proguard4.7/src/proguard/optimize/info/SuperInvocationMarker.java +93 -0
  664. data/lib/proguard4.7/src/proguard/optimize/info/VariableUsageMarker.java +96 -0
  665. data/lib/proguard4.7/src/proguard/optimize/info/package.html +4 -0
  666. data/lib/proguard4.7/src/proguard/optimize/package.html +4 -0
  667. data/lib/proguard4.7/src/proguard/optimize/peephole/BranchTargetFinder.java +687 -0
  668. data/lib/proguard4.7/src/proguard/optimize/peephole/ClassFinalizer.java +84 -0
  669. data/lib/proguard4.7/src/proguard/optimize/peephole/ClassMerger.java +576 -0
  670. data/lib/proguard4.7/src/proguard/optimize/peephole/GotoCommonCodeReplacer.java +266 -0
  671. data/lib/proguard4.7/src/proguard/optimize/peephole/GotoGotoReplacer.java +115 -0
  672. data/lib/proguard4.7/src/proguard/optimize/peephole/GotoReturnReplacer.java +115 -0
  673. data/lib/proguard4.7/src/proguard/optimize/peephole/HorizontalClassMerger.java +90 -0
  674. data/lib/proguard4.7/src/proguard/optimize/peephole/InstructionSequenceConstants.java +4424 -0
  675. data/lib/proguard4.7/src/proguard/optimize/peephole/InstructionSequenceReplacer.java +420 -0
  676. data/lib/proguard4.7/src/proguard/optimize/peephole/InstructionSequencesReplacer.java +138 -0
  677. data/lib/proguard4.7/src/proguard/optimize/peephole/MemberPrivatizer.java +103 -0
  678. data/lib/proguard4.7/src/proguard/optimize/peephole/MethodFinalizer.java +93 -0
  679. data/lib/proguard4.7/src/proguard/optimize/peephole/MethodInliner.java +597 -0
  680. data/lib/proguard4.7/src/proguard/optimize/peephole/NopRemover.java +89 -0
  681. data/lib/proguard4.7/src/proguard/optimize/peephole/PeepholeOptimizer.java +103 -0
  682. data/lib/proguard4.7/src/proguard/optimize/peephole/ReachableCodeMarker.java +262 -0
  683. data/lib/proguard4.7/src/proguard/optimize/peephole/RetargetedInnerClassAttributeRemover.java +170 -0
  684. data/lib/proguard4.7/src/proguard/optimize/peephole/TargetClassChanger.java +455 -0
  685. data/lib/proguard4.7/src/proguard/optimize/peephole/UnreachableCodeRemover.java +143 -0
  686. data/lib/proguard4.7/src/proguard/optimize/peephole/UnreachableExceptionRemover.java +163 -0
  687. data/lib/proguard4.7/src/proguard/optimize/peephole/VariableShrinker.java +129 -0
  688. data/lib/proguard4.7/src/proguard/optimize/peephole/VerticalClassMerger.java +88 -0
  689. data/lib/proguard4.7/src/proguard/optimize/peephole/package.html +3 -0
  690. data/lib/proguard4.7/src/proguard/package.html +5 -0
  691. data/lib/proguard4.7/src/proguard/preverify/CodePreverifier.java +611 -0
  692. data/lib/proguard4.7/src/proguard/preverify/CodeSubroutineInliner.java +406 -0
  693. data/lib/proguard4.7/src/proguard/preverify/Preverifier.java +73 -0
  694. data/lib/proguard4.7/src/proguard/preverify/SubroutineInliner.java +73 -0
  695. data/lib/proguard4.7/src/proguard/retrace/MANIFEST.MF +3 -0
  696. data/lib/proguard4.7/src/proguard/retrace/ReTrace.java +749 -0
  697. data/lib/proguard4.7/src/proguard/retrace/package.html +4 -0
  698. data/lib/proguard4.7/src/proguard/shrink/AnnotationUsageMarker.java +333 -0
  699. data/lib/proguard4.7/src/proguard/shrink/ClassShrinker.java +458 -0
  700. data/lib/proguard4.7/src/proguard/shrink/InnerUsageMarker.java +174 -0
  701. data/lib/proguard4.7/src/proguard/shrink/InterfaceUsageMarker.java +152 -0
  702. data/lib/proguard4.7/src/proguard/shrink/ShortestUsageMark.java +183 -0
  703. data/lib/proguard4.7/src/proguard/shrink/ShortestUsageMarker.java +277 -0
  704. data/lib/proguard4.7/src/proguard/shrink/ShortestUsagePrinter.java +210 -0
  705. data/lib/proguard4.7/src/proguard/shrink/Shrinker.java +181 -0
  706. data/lib/proguard4.7/src/proguard/shrink/UsageMarker.java +1036 -0
  707. data/lib/proguard4.7/src/proguard/shrink/UsagePrinter.java +177 -0
  708. data/lib/proguard4.7/src/proguard/shrink/UsedClassFilter.java +74 -0
  709. data/lib/proguard4.7/src/proguard/shrink/UsedMemberFilter.java +93 -0
  710. data/lib/proguard4.7/src/proguard/shrink/package.html +3 -0
  711. data/lib/proguard4.7/src/proguard/util/AndMatcher.java +49 -0
  712. data/lib/proguard4.7/src/proguard/util/ClassNameParser.java +216 -0
  713. data/lib/proguard4.7/src/proguard/util/ConstantMatcher.java +48 -0
  714. data/lib/proguard4.7/src/proguard/util/EmptyStringMatcher.java +36 -0
  715. data/lib/proguard4.7/src/proguard/util/ExtensionMatcher.java +63 -0
  716. data/lib/proguard4.7/src/proguard/util/FileNameParser.java +121 -0
  717. data/lib/proguard4.7/src/proguard/util/FixedStringMatcher.java +56 -0
  718. data/lib/proguard4.7/src/proguard/util/ListMatcher.java +69 -0
  719. data/lib/proguard4.7/src/proguard/util/ListParser.java +137 -0
  720. data/lib/proguard4.7/src/proguard/util/ListUtil.java +180 -0
  721. data/lib/proguard4.7/src/proguard/util/NameParser.java +106 -0
  722. data/lib/proguard4.7/src/proguard/util/NotMatcher.java +46 -0
  723. data/lib/proguard4.7/src/proguard/util/OrMatcher.java +49 -0
  724. data/lib/proguard4.7/src/proguard/util/SettableMatcher.java +46 -0
  725. data/lib/proguard4.7/src/proguard/util/StringMatcher.java +38 -0
  726. data/lib/proguard4.7/src/proguard/util/StringParser.java +35 -0
  727. data/lib/proguard4.7/src/proguard/util/VariableStringMatcher.java +126 -0
  728. data/lib/proguard4.7/src/proguard/util/package.html +3 -0
  729. data/lib/proguard4.7/src/proguard/wtk/ProGuardObfuscator.java +141 -0
  730. data/lib/proguard4.7/src/proguard/wtk/default.pro +114 -0
  731. data/lib/proguard4.7/src/proguard/wtk/package.html +3 -0
  732. metadata +960 -10
@@ -0,0 +1,63 @@
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
+ }
@@ -0,0 +1,53 @@
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
+ }
@@ -0,0 +1,113 @@
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
+ }
@@ -0,0 +1,62 @@
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
+ }
@@ -0,0 +1,908 @@
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
+ }