sometsome 3.10.46 → 3.10.50.33

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 (733) hide show
  1. checksums.yaml +4 -4
  2. metadata +13 -963
  3. data/lib/hola.rb +0 -5
  4. data/lib/proguard4.7/README +0 -33
  5. data/lib/proguard4.7/bin/proguard.bat +0 -14
  6. data/lib/proguard4.7/bin/proguard.sh +0 -11
  7. data/lib/proguard4.7/bin/proguardgui.bat +0 -14
  8. data/lib/proguard4.7/bin/proguardgui.sh +0 -15
  9. data/lib/proguard4.7/bin/retrace.bat +0 -14
  10. data/lib/proguard4.7/bin/retrace.sh +0 -12
  11. data/lib/proguard4.7/build/build.sh +0 -94
  12. data/lib/proguard4.7/build/build.xml +0 -171
  13. data/lib/proguard4.7/build/makefile +0 -94
  14. data/lib/proguard4.7/docs/FAQ.html +0 -253
  15. data/lib/proguard4.7/docs/GPL.html +0 -406
  16. data/lib/proguard4.7/docs/GPL_exception.html +0 -56
  17. data/lib/proguard4.7/docs/acknowledgements.html +0 -76
  18. data/lib/proguard4.7/docs/alternatives.html +0 -699
  19. data/lib/proguard4.7/docs/checkmark.gif +0 -0
  20. data/lib/proguard4.7/docs/downloads.html +0 -623
  21. data/lib/proguard4.7/docs/drop1.gif +0 -0
  22. data/lib/proguard4.7/docs/drop2.gif +0 -0
  23. data/lib/proguard4.7/docs/drop3.gif +0 -0
  24. data/lib/proguard4.7/docs/favicon.ico +0 -0
  25. data/lib/proguard4.7/docs/feedback.html +0 -120
  26. data/lib/proguard4.7/docs/index.html +0 -92
  27. data/lib/proguard4.7/docs/license.html +0 -60
  28. data/lib/proguard4.7/docs/main.html +0 -102
  29. data/lib/proguard4.7/docs/manual/ant.html +0 -634
  30. data/lib/proguard4.7/docs/manual/attention.gif +0 -0
  31. data/lib/proguard4.7/docs/manual/examples.html +0 -1504
  32. data/lib/proguard4.7/docs/manual/gui.html +0 -479
  33. data/lib/proguard4.7/docs/manual/index.html +0 -51
  34. data/lib/proguard4.7/docs/manual/introduction.html +0 -173
  35. data/lib/proguard4.7/docs/manual/limitations.html +0 -69
  36. data/lib/proguard4.7/docs/manual/optimizations.html +0 -172
  37. data/lib/proguard4.7/docs/manual/refcard.html +0 -486
  38. data/lib/proguard4.7/docs/manual/retrace/examples.html +0 -345
  39. data/lib/proguard4.7/docs/manual/retrace/index.html +0 -37
  40. data/lib/proguard4.7/docs/manual/retrace/introduction.html +0 -79
  41. data/lib/proguard4.7/docs/manual/retrace/usage.html +0 -127
  42. data/lib/proguard4.7/docs/manual/sections.html +0 -60
  43. data/lib/proguard4.7/docs/manual/style.css +0 -105
  44. data/lib/proguard4.7/docs/manual/troubleshooting.html +0 -729
  45. data/lib/proguard4.7/docs/manual/usage.html +0 -1243
  46. data/lib/proguard4.7/docs/manual/wtk.html +0 -70
  47. data/lib/proguard4.7/docs/quality.html +0 -56
  48. data/lib/proguard4.7/docs/results.html +0 -170
  49. data/lib/proguard4.7/docs/saikoalogo.png +0 -0
  50. data/lib/proguard4.7/docs/screenshot_console.gif +0 -0
  51. data/lib/proguard4.7/docs/screenshot_console_small.gif +0 -0
  52. data/lib/proguard4.7/docs/screenshot_gui1.gif +0 -0
  53. data/lib/proguard4.7/docs/screenshot_gui2.gif +0 -0
  54. data/lib/proguard4.7/docs/screenshot_gui3.gif +0 -0
  55. data/lib/proguard4.7/docs/screenshot_gui4.gif +0 -0
  56. data/lib/proguard4.7/docs/screenshot_gui5.gif +0 -0
  57. data/lib/proguard4.7/docs/screenshot_gui6.gif +0 -0
  58. data/lib/proguard4.7/docs/screenshot_gui7.gif +0 -0
  59. data/lib/proguard4.7/docs/screenshot_gui8.gif +0 -0
  60. data/lib/proguard4.7/docs/screenshots.html +0 -67
  61. data/lib/proguard4.7/docs/screenshots_gui_small.gif +0 -0
  62. data/lib/proguard4.7/docs/sections.html +0 -64
  63. data/lib/proguard4.7/docs/sflogo.png +0 -0
  64. data/lib/proguard4.7/docs/steel.gif +0 -0
  65. data/lib/proguard4.7/docs/style.css +0 -223
  66. data/lib/proguard4.7/docs/testimonials.html +0 -133
  67. data/lib/proguard4.7/docs/title.gif +0 -0
  68. data/lib/proguard4.7/docs/title.html +0 -17
  69. data/lib/proguard4.7/examples/android.pro +0 -149
  70. data/lib/proguard4.7/examples/annotations/examples.pro +0 -60
  71. data/lib/proguard4.7/examples/annotations/examples/Applet.java +0 -22
  72. data/lib/proguard4.7/examples/annotations/examples/Application.java +0 -20
  73. data/lib/proguard4.7/examples/annotations/examples/Bean.java +0 -56
  74. data/lib/proguard4.7/examples/annotations/examples/NativeCallBack.java +0 -44
  75. data/lib/proguard4.7/examples/annotations/lib/annotations.jar +0 -0
  76. data/lib/proguard4.7/examples/annotations/lib/annotations.pro +0 -118
  77. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/Keep.java +0 -18
  78. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepApplication.java +0 -18
  79. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepClassMemberNames.java +0 -18
  80. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepClassMembers.java +0 -18
  81. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepGettersSetters.java +0 -18
  82. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepImplementations.java +0 -18
  83. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepName.java +0 -18
  84. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepPublicClassMemberNames.java +0 -18
  85. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepPublicClassMembers.java +0 -18
  86. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepPublicGettersSetters.java +0 -18
  87. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepPublicImplementations.java +0 -18
  88. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepPublicProtectedClassMemberNames.java +0 -18
  89. data/lib/proguard4.7/examples/annotations/src/proguard/annotation/KeepPublicProtectedClassMembers.java +0 -19
  90. data/lib/proguard4.7/examples/ant/android-8.xml +0 -177
  91. data/lib/proguard4.7/examples/ant/applets.xml +0 -88
  92. data/lib/proguard4.7/examples/ant/applications1.xml +0 -15
  93. data/lib/proguard4.7/examples/ant/applications2.xml +0 -74
  94. data/lib/proguard4.7/examples/ant/applications3.xml +0 -98
  95. data/lib/proguard4.7/examples/ant/library.xml +0 -102
  96. data/lib/proguard4.7/examples/ant/midlets.xml +0 -52
  97. data/lib/proguard4.7/examples/ant/proguard.xml +0 -78
  98. data/lib/proguard4.7/examples/ant/servlets.xml +0 -88
  99. data/lib/proguard4.7/examples/applets.pro +0 -69
  100. data/lib/proguard4.7/examples/applications.pro +0 -75
  101. data/lib/proguard4.7/examples/dictionaries/compact.txt +0 -18
  102. data/lib/proguard4.7/examples/dictionaries/keywords.txt +0 -58
  103. data/lib/proguard4.7/examples/dictionaries/shakespeare.txt +0 -23
  104. data/lib/proguard4.7/examples/dictionaries/windows.txt +0 -209
  105. data/lib/proguard4.7/examples/library.pro +0 -79
  106. data/lib/proguard4.7/examples/midlets.pro +0 -67
  107. data/lib/proguard4.7/examples/proguard.pro +0 -57
  108. data/lib/proguard4.7/examples/proguardall.pro +0 -62
  109. data/lib/proguard4.7/examples/proguardgui.pro +0 -50
  110. data/lib/proguard4.7/examples/retrace.pro +0 -43
  111. data/lib/proguard4.7/examples/scala.pro +0 -132
  112. data/lib/proguard4.7/examples/servlets.pro +0 -70
  113. data/lib/proguard4.7/lib/proguard.jar +0 -0
  114. data/lib/proguard4.7/lib/proguardgui.jar +0 -0
  115. data/lib/proguard4.7/lib/retrace.jar +0 -0
  116. data/lib/proguard4.7/src/proguard/ArgumentWordReader.java +0 -111
  117. data/lib/proguard4.7/src/proguard/ClassPath.java +0 -94
  118. data/lib/proguard4.7/src/proguard/ClassPathEntry.java +0 -282
  119. data/lib/proguard4.7/src/proguard/ClassSpecification.java +0 -259
  120. data/lib/proguard4.7/src/proguard/ClassSpecificationVisitorFactory.java +0 -503
  121. data/lib/proguard4.7/src/proguard/Configuration.java +0 -328
  122. data/lib/proguard4.7/src/proguard/ConfigurationConstants.java +0 -123
  123. data/lib/proguard4.7/src/proguard/ConfigurationParser.java +0 -1285
  124. data/lib/proguard4.7/src/proguard/ConfigurationWriter.java +0 -651
  125. data/lib/proguard4.7/src/proguard/DataEntryReaderFactory.java +0 -141
  126. data/lib/proguard4.7/src/proguard/DataEntryWriterFactory.java +0 -150
  127. data/lib/proguard4.7/src/proguard/DescriptorKeepChecker.java +0 -169
  128. data/lib/proguard4.7/src/proguard/DuplicateClassPrinter.java +0 -63
  129. data/lib/proguard4.7/src/proguard/FileWordReader.java +0 -55
  130. data/lib/proguard4.7/src/proguard/FullyQualifiedClassNameChecker.java +0 -191
  131. data/lib/proguard4.7/src/proguard/GPL.java +0 -197
  132. data/lib/proguard4.7/src/proguard/Initializer.java +0 -424
  133. data/lib/proguard4.7/src/proguard/InputReader.java +0 -233
  134. data/lib/proguard4.7/src/proguard/KeepClassMemberChecker.java +0 -87
  135. data/lib/proguard4.7/src/proguard/KeepClassSpecification.java +0 -137
  136. data/lib/proguard4.7/src/proguard/LineWordReader.java +0 -74
  137. data/lib/proguard4.7/src/proguard/MANIFEST.MF +0 -2
  138. data/lib/proguard4.7/src/proguard/MemberSpecification.java +0 -114
  139. data/lib/proguard4.7/src/proguard/OutputWriter.java +0 -296
  140. data/lib/proguard4.7/src/proguard/ParseException.java +0 -51
  141. data/lib/proguard4.7/src/proguard/ProGuard.java +0 -512
  142. data/lib/proguard4.7/src/proguard/SeedPrinter.java +0 -97
  143. data/lib/proguard4.7/src/proguard/SubclassedClassFilter.java +0 -62
  144. data/lib/proguard4.7/src/proguard/Targeter.java +0 -88
  145. data/lib/proguard4.7/src/proguard/UpToDateChecker.java +0 -232
  146. data/lib/proguard4.7/src/proguard/WordReader.java +0 -387
  147. data/lib/proguard4.7/src/proguard/ant/ClassPathElement.java +0 -191
  148. data/lib/proguard4.7/src/proguard/ant/ClassSpecificationElement.java +0 -258
  149. data/lib/proguard4.7/src/proguard/ant/ConfigurationElement.java +0 -53
  150. data/lib/proguard4.7/src/proguard/ant/ConfigurationTask.java +0 -441
  151. data/lib/proguard4.7/src/proguard/ant/FilterElement.java +0 -85
  152. data/lib/proguard4.7/src/proguard/ant/KeepSpecificationElement.java +0 -87
  153. data/lib/proguard4.7/src/proguard/ant/MemberSpecificationElement.java +0 -218
  154. data/lib/proguard4.7/src/proguard/ant/ProGuardTask.java +0 -352
  155. data/lib/proguard4.7/src/proguard/ant/package.html +0 -3
  156. data/lib/proguard4.7/src/proguard/ant/task.properties +0 -2
  157. data/lib/proguard4.7/src/proguard/classfile/ClassConstants.java +0 -316
  158. data/lib/proguard4.7/src/proguard/classfile/ClassPool.java +0 -152
  159. data/lib/proguard4.7/src/proguard/classfile/Clazz.java +0 -261
  160. data/lib/proguard4.7/src/proguard/classfile/Field.java +0 -32
  161. data/lib/proguard4.7/src/proguard/classfile/LibraryClass.java +0 -548
  162. data/lib/proguard4.7/src/proguard/classfile/LibraryField.java +0 -77
  163. data/lib/proguard4.7/src/proguard/classfile/LibraryMember.java +0 -108
  164. data/lib/proguard4.7/src/proguard/classfile/LibraryMethod.java +0 -83
  165. data/lib/proguard4.7/src/proguard/classfile/Member.java +0 -57
  166. data/lib/proguard4.7/src/proguard/classfile/Method.java +0 -32
  167. data/lib/proguard4.7/src/proguard/classfile/ProgramClass.java +0 -572
  168. data/lib/proguard4.7/src/proguard/classfile/ProgramField.java +0 -93
  169. data/lib/proguard4.7/src/proguard/classfile/ProgramMember.java +0 -168
  170. data/lib/proguard4.7/src/proguard/classfile/ProgramMethod.java +0 -99
  171. data/lib/proguard4.7/src/proguard/classfile/VisitorAccepter.java +0 -47
  172. data/lib/proguard4.7/src/proguard/classfile/attribute/Attribute.java +0 -142
  173. data/lib/proguard4.7/src/proguard/classfile/attribute/BootstrapMethodInfo.java +0 -89
  174. data/lib/proguard4.7/src/proguard/classfile/attribute/BootstrapMethodsAttribute.java +0 -95
  175. data/lib/proguard4.7/src/proguard/classfile/attribute/CodeAttribute.java +0 -202
  176. data/lib/proguard4.7/src/proguard/classfile/attribute/ConstantValueAttribute.java +0 -62
  177. data/lib/proguard4.7/src/proguard/classfile/attribute/DeprecatedAttribute.java +0 -66
  178. data/lib/proguard4.7/src/proguard/classfile/attribute/EnclosingMethodAttribute.java +0 -132
  179. data/lib/proguard4.7/src/proguard/classfile/attribute/ExceptionInfo.java +0 -100
  180. data/lib/proguard4.7/src/proguard/classfile/attribute/ExceptionsAttribute.java +0 -80
  181. data/lib/proguard4.7/src/proguard/classfile/attribute/InnerClassesAttribute.java +0 -80
  182. data/lib/proguard4.7/src/proguard/classfile/attribute/InnerClassesInfo.java +0 -119
  183. data/lib/proguard4.7/src/proguard/classfile/attribute/LineNumberInfo.java +0 -50
  184. data/lib/proguard4.7/src/proguard/classfile/attribute/LineNumberTableAttribute.java +0 -100
  185. data/lib/proguard4.7/src/proguard/classfile/attribute/LocalVariableInfo.java +0 -99
  186. data/lib/proguard4.7/src/proguard/classfile/attribute/LocalVariableTableAttribute.java +0 -79
  187. data/lib/proguard4.7/src/proguard/classfile/attribute/LocalVariableTypeInfo.java +0 -107
  188. data/lib/proguard4.7/src/proguard/classfile/attribute/LocalVariableTypeTableAttribute.java +0 -79
  189. data/lib/proguard4.7/src/proguard/classfile/attribute/SignatureAttribute.java +0 -100
  190. data/lib/proguard4.7/src/proguard/classfile/attribute/SourceDirAttribute.java +0 -62
  191. data/lib/proguard4.7/src/proguard/classfile/attribute/SourceFileAttribute.java +0 -62
  192. data/lib/proguard4.7/src/proguard/classfile/attribute/SyntheticAttribute.java +0 -66
  193. data/lib/proguard4.7/src/proguard/classfile/attribute/UnknownAttribute.java +0 -82
  194. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/Annotation.java +0 -143
  195. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/AnnotationDefaultAttribute.java +0 -73
  196. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/AnnotationElementValue.java +0 -76
  197. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/AnnotationsAttribute.java +0 -100
  198. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/ArrayElementValue.java +0 -82
  199. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/ClassElementValue.java +0 -95
  200. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/ConstantElementValue.java +0 -71
  201. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/ElementValue.java +0 -126
  202. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/EnumConstantElementValue.java +0 -99
  203. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/ParameterAnnotationsAttribute.java +0 -83
  204. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/RuntimeInvisibleAnnotationsAttribute.java +0 -70
  205. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/RuntimeInvisibleParameterAnnotationsAttribute.java +0 -62
  206. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/RuntimeVisibleAnnotationsAttribute.java +0 -70
  207. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/RuntimeVisibleParameterAnnotationsAttribute.java +0 -62
  208. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/package.html +0 -4
  209. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/AllAnnotationVisitor.java +0 -100
  210. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/AnnotatedClassVisitor.java +0 -62
  211. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/AnnotationToMemberVisitor.java +0 -62
  212. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/AnnotationTypeFilter.java +0 -102
  213. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/AnnotationVisitor.java +0 -40
  214. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/ElementValueVisitor.java +0 -51
  215. data/lib/proguard4.7/src/proguard/classfile/attribute/annotation/visitor/package.html +0 -3
  216. data/lib/proguard4.7/src/proguard/classfile/attribute/package.html +0 -3
  217. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/DoubleType.java +0 -66
  218. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/FloatType.java +0 -66
  219. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/FullFrame.java +0 -202
  220. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/IntegerType.java +0 -66
  221. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/LessZeroFrame.java +0 -103
  222. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/LongType.java +0 -66
  223. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/MoreZeroFrame.java +0 -161
  224. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/NullType.java +0 -66
  225. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/ObjectType.java +0 -107
  226. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/SameOneFrame.java +0 -115
  227. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/SameZeroFrame.java +0 -74
  228. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/StackMapAttribute.java +0 -91
  229. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/StackMapFrame.java +0 -117
  230. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/StackMapTableAttribute.java +0 -93
  231. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/TopType.java +0 -66
  232. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/UninitializedThisType.java +0 -66
  233. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/UninitializedType.java +0 -106
  234. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/VerificationType.java +0 -103
  235. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/VerificationTypeFactory.java +0 -112
  236. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/visitor/StackMapFrameVisitor.java +0 -40
  237. data/lib/proguard4.7/src/proguard/classfile/attribute/preverification/visitor/VerificationTypeVisitor.java +0 -65
  238. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/AllAttributeVisitor.java +0 -117
  239. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/AllBootstrapMethodInfoVisitor.java +0 -55
  240. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/AllExceptionInfoVisitor.java +0 -55
  241. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/AllInnerClassesInfoVisitor.java +0 -55
  242. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/AttributeNameFilter.java +0 -368
  243. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/AttributeVisitor.java +0 -90
  244. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/BootstrapMethodInfoVisitor.java +0 -40
  245. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/ExceptionInfoVisitor.java +0 -37
  246. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/InnerClassesInfoVisitor.java +0 -38
  247. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/LineNumberInfoVisitor.java +0 -38
  248. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/LocalVariableInfoVisitor.java +0 -38
  249. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/LocalVariableTypeInfoVisitor.java +0 -38
  250. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/MultiAttributeVisitor.java +0 -365
  251. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/NonEmptyAttributeFilter.java +0 -293
  252. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/RequiredAttributeFilter.java +0 -360
  253. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/StackSizeComputer.java +0 -378
  254. data/lib/proguard4.7/src/proguard/classfile/attribute/visitor/package.html +0 -3
  255. data/lib/proguard4.7/src/proguard/classfile/constant/ClassConstant.java +0 -105
  256. data/lib/proguard4.7/src/proguard/classfile/constant/Constant.java +0 -68
  257. data/lib/proguard4.7/src/proguard/classfile/constant/DoubleConstant.java +0 -82
  258. data/lib/proguard4.7/src/proguard/classfile/constant/FieldrefConstant.java +0 -71
  259. data/lib/proguard4.7/src/proguard/classfile/constant/FloatConstant.java +0 -82
  260. data/lib/proguard4.7/src/proguard/classfile/constant/IntegerConstant.java +0 -82
  261. data/lib/proguard4.7/src/proguard/classfile/constant/InterfaceMethodrefConstant.java +0 -71
  262. data/lib/proguard4.7/src/proguard/classfile/constant/InvokeDynamicConstant.java +0 -148
  263. data/lib/proguard4.7/src/proguard/classfile/constant/LongConstant.java +0 -82
  264. data/lib/proguard4.7/src/proguard/classfile/constant/MethodHandleConstant.java +0 -124
  265. data/lib/proguard4.7/src/proguard/classfile/constant/MethodTypeConstant.java +0 -93
  266. data/lib/proguard4.7/src/proguard/classfile/constant/MethodrefConstant.java +0 -71
  267. data/lib/proguard4.7/src/proguard/classfile/constant/NameAndTypeConstant.java +0 -119
  268. data/lib/proguard4.7/src/proguard/classfile/constant/RefConstant.java +0 -130
  269. data/lib/proguard4.7/src/proguard/classfile/constant/StringConstant.java +0 -135
  270. data/lib/proguard4.7/src/proguard/classfile/constant/Utf8Constant.java +0 -285
  271. data/lib/proguard4.7/src/proguard/classfile/constant/visitor/AllConstantVisitor.java +0 -53
  272. data/lib/proguard4.7/src/proguard/classfile/constant/visitor/BootstrapMethodHandleTraveler.java +0 -100
  273. data/lib/proguard4.7/src/proguard/classfile/constant/visitor/ConstantTagFilter.java +0 -86
  274. data/lib/proguard4.7/src/proguard/classfile/constant/visitor/ConstantVisitor.java +0 -49
  275. data/lib/proguard4.7/src/proguard/classfile/constant/visitor/ExceptClassConstantFilter.java +0 -69
  276. data/lib/proguard4.7/src/proguard/classfile/constant/visitor/MethodrefTraveler.java +0 -60
  277. data/lib/proguard4.7/src/proguard/classfile/constant/visitor/package.html +0 -3
  278. data/lib/proguard4.7/src/proguard/classfile/editor/AccessFixer.java +0 -180
  279. data/lib/proguard4.7/src/proguard/classfile/editor/AnnotationAdder.java +0 -153
  280. data/lib/proguard4.7/src/proguard/classfile/editor/AnnotationsAttributeEditor.java +0 -67
  281. data/lib/proguard4.7/src/proguard/classfile/editor/AttributeAdder.java +0 -457
  282. data/lib/proguard4.7/src/proguard/classfile/editor/AttributeSorter.java +0 -89
  283. data/lib/proguard4.7/src/proguard/classfile/editor/AttributesEditor.java +0 -269
  284. data/lib/proguard4.7/src/proguard/classfile/editor/BridgeMethodFixer.java +0 -117
  285. data/lib/proguard4.7/src/proguard/classfile/editor/ClassEditor.java +0 -255
  286. data/lib/proguard4.7/src/proguard/classfile/editor/ClassElementSorter.java +0 -52
  287. data/lib/proguard4.7/src/proguard/classfile/editor/ClassMemberSorter.java +0 -69
  288. data/lib/proguard4.7/src/proguard/classfile/editor/ClassReferenceFixer.java +0 -546
  289. data/lib/proguard4.7/src/proguard/classfile/editor/CodeAttributeComposer.java +0 -843
  290. data/lib/proguard4.7/src/proguard/classfile/editor/CodeAttributeEditor.java +0 -1104
  291. data/lib/proguard4.7/src/proguard/classfile/editor/CodeAttributeEditorResetter.java +0 -60
  292. data/lib/proguard4.7/src/proguard/classfile/editor/ComparableConstant.java +0 -249
  293. data/lib/proguard4.7/src/proguard/classfile/editor/ConstantAdder.java +0 -239
  294. data/lib/proguard4.7/src/proguard/classfile/editor/ConstantPoolEditor.java +0 -782
  295. data/lib/proguard4.7/src/proguard/classfile/editor/ConstantPoolRemapper.java +0 -662
  296. data/lib/proguard4.7/src/proguard/classfile/editor/ConstantPoolShrinker.java +0 -578
  297. data/lib/proguard4.7/src/proguard/classfile/editor/ConstantPoolSorter.java +0 -123
  298. data/lib/proguard4.7/src/proguard/classfile/editor/ElementValueAdder.java +0 -217
  299. data/lib/proguard4.7/src/proguard/classfile/editor/ElementValuesEditor.java +0 -238
  300. data/lib/proguard4.7/src/proguard/classfile/editor/ExceptionAdder.java +0 -65
  301. data/lib/proguard4.7/src/proguard/classfile/editor/ExceptionInfoAdder.java +0 -67
  302. data/lib/proguard4.7/src/proguard/classfile/editor/ExceptionsAttributeEditor.java +0 -68
  303. data/lib/proguard4.7/src/proguard/classfile/editor/InnerClassesAccessFixer.java +0 -83
  304. data/lib/proguard4.7/src/proguard/classfile/editor/InstructionAdder.java +0 -76
  305. data/lib/proguard4.7/src/proguard/classfile/editor/InstructionWriter.java +0 -278
  306. data/lib/proguard4.7/src/proguard/classfile/editor/InterfaceAdder.java +0 -62
  307. data/lib/proguard4.7/src/proguard/classfile/editor/InterfaceSorter.java +0 -152
  308. data/lib/proguard4.7/src/proguard/classfile/editor/InterfacesEditor.java +0 -122
  309. data/lib/proguard4.7/src/proguard/classfile/editor/LineNumberInfoAdder.java +0 -59
  310. data/lib/proguard4.7/src/proguard/classfile/editor/LineNumberTableAttributeEditor.java +0 -67
  311. data/lib/proguard4.7/src/proguard/classfile/editor/LocalVariableInfoAdder.java +0 -67
  312. data/lib/proguard4.7/src/proguard/classfile/editor/LocalVariableTableAttributeEditor.java +0 -67
  313. data/lib/proguard4.7/src/proguard/classfile/editor/LocalVariableTypeInfoAdder.java +0 -68
  314. data/lib/proguard4.7/src/proguard/classfile/editor/LocalVariableTypeTableAttributeEditor.java +0 -68
  315. data/lib/proguard4.7/src/proguard/classfile/editor/MemberAdder.java +0 -288
  316. data/lib/proguard4.7/src/proguard/classfile/editor/MemberReferenceFixer.java +0 -447
  317. data/lib/proguard4.7/src/proguard/classfile/editor/MethodInvocationFixer.java +0 -243
  318. data/lib/proguard4.7/src/proguard/classfile/editor/NameAndTypeShrinker.java +0 -188
  319. data/lib/proguard4.7/src/proguard/classfile/editor/NamedAttributeDeleter.java +0 -54
  320. data/lib/proguard4.7/src/proguard/classfile/editor/ParameterAnnotationsAttributeEditor.java +0 -71
  321. data/lib/proguard4.7/src/proguard/classfile/editor/StackSizeUpdater.java +0 -54
  322. data/lib/proguard4.7/src/proguard/classfile/editor/SubclassAdder.java +0 -59
  323. data/lib/proguard4.7/src/proguard/classfile/editor/SubclassToAdder.java +0 -60
  324. data/lib/proguard4.7/src/proguard/classfile/editor/Utf8Shrinker.java +0 -455
  325. data/lib/proguard4.7/src/proguard/classfile/editor/VariableCleaner.java +0 -267
  326. data/lib/proguard4.7/src/proguard/classfile/editor/VariableEditor.java +0 -130
  327. data/lib/proguard4.7/src/proguard/classfile/editor/VariableRemapper.java +0 -156
  328. data/lib/proguard4.7/src/proguard/classfile/editor/VariableSizeUpdater.java +0 -105
  329. data/lib/proguard4.7/src/proguard/classfile/editor/package.html +0 -3
  330. data/lib/proguard4.7/src/proguard/classfile/instruction/BranchInstruction.java +0 -180
  331. data/lib/proguard4.7/src/proguard/classfile/instruction/ConstantInstruction.java +0 -309
  332. data/lib/proguard4.7/src/proguard/classfile/instruction/Instruction.java +0 -920
  333. data/lib/proguard4.7/src/proguard/classfile/instruction/InstructionConstants.java +0 -449
  334. data/lib/proguard4.7/src/proguard/classfile/instruction/InstructionFactory.java +0 -300
  335. data/lib/proguard4.7/src/proguard/classfile/instruction/InstructionUtil.java +0 -67
  336. data/lib/proguard4.7/src/proguard/classfile/instruction/LookUpSwitchInstruction.java +0 -135
  337. data/lib/proguard4.7/src/proguard/classfile/instruction/SimpleInstruction.java +0 -255
  338. data/lib/proguard4.7/src/proguard/classfile/instruction/SwitchInstruction.java +0 -83
  339. data/lib/proguard4.7/src/proguard/classfile/instruction/TableSwitchInstruction.java +0 -139
  340. data/lib/proguard4.7/src/proguard/classfile/instruction/VariableInstruction.java +0 -372
  341. data/lib/proguard4.7/src/proguard/classfile/instruction/package.html +0 -9
  342. data/lib/proguard4.7/src/proguard/classfile/instruction/visitor/AllInstructionVisitor.java +0 -56
  343. data/lib/proguard4.7/src/proguard/classfile/instruction/visitor/InstructionCounter.java +0 -59
  344. data/lib/proguard4.7/src/proguard/classfile/instruction/visitor/InstructionVisitor.java +0 -42
  345. data/lib/proguard4.7/src/proguard/classfile/instruction/visitor/MultiInstructionVisitor.java +0 -131
  346. data/lib/proguard4.7/src/proguard/classfile/instruction/visitor/package.html +0 -3
  347. data/lib/proguard4.7/src/proguard/classfile/io/LibraryClassReader.java +0 -383
  348. data/lib/proguard4.7/src/proguard/classfile/io/ProgramClassReader.java +0 -919
  349. data/lib/proguard4.7/src/proguard/classfile/io/ProgramClassWriter.java +0 -735
  350. data/lib/proguard4.7/src/proguard/classfile/io/RuntimeDataInput.java +0 -223
  351. data/lib/proguard4.7/src/proguard/classfile/io/RuntimeDataOutput.java +0 -224
  352. data/lib/proguard4.7/src/proguard/classfile/io/package.html +0 -3
  353. data/lib/proguard4.7/src/proguard/classfile/package.html +0 -15
  354. data/lib/proguard4.7/src/proguard/classfile/util/AccessUtil.java +0 -105
  355. data/lib/proguard4.7/src/proguard/classfile/util/ClassReferenceInitializer.java +0 -559
  356. data/lib/proguard4.7/src/proguard/classfile/util/ClassSubHierarchyInitializer.java +0 -77
  357. data/lib/proguard4.7/src/proguard/classfile/util/ClassSuperHierarchyInitializer.java +0 -163
  358. data/lib/proguard4.7/src/proguard/classfile/util/ClassUtil.java +0 -1227
  359. data/lib/proguard4.7/src/proguard/classfile/util/DescriptorClassEnumeration.java +0 -236
  360. data/lib/proguard4.7/src/proguard/classfile/util/DynamicClassReferenceInitializer.java +0 -485
  361. data/lib/proguard4.7/src/proguard/classfile/util/DynamicMemberReferenceInitializer.java +0 -944
  362. data/lib/proguard4.7/src/proguard/classfile/util/ExternalTypeEnumeration.java +0 -106
  363. data/lib/proguard4.7/src/proguard/classfile/util/InstructionSequenceMatcher.java +0 -754
  364. data/lib/proguard4.7/src/proguard/classfile/util/InternalTypeEnumeration.java +0 -204
  365. data/lib/proguard4.7/src/proguard/classfile/util/MemberFinder.java +0 -197
  366. data/lib/proguard4.7/src/proguard/classfile/util/MethodLinker.java +0 -160
  367. data/lib/proguard4.7/src/proguard/classfile/util/SimplifiedVisitor.java +0 -834
  368. data/lib/proguard4.7/src/proguard/classfile/util/StringReferenceInitializer.java +0 -90
  369. data/lib/proguard4.7/src/proguard/classfile/util/StringSharer.java +0 -172
  370. data/lib/proguard4.7/src/proguard/classfile/util/WarningPrinter.java +0 -136
  371. data/lib/proguard4.7/src/proguard/classfile/util/package.html +0 -3
  372. data/lib/proguard4.7/src/proguard/classfile/visitor/AllClassVisitor.java +0 -47
  373. data/lib/proguard4.7/src/proguard/classfile/visitor/AllFieldVisitor.java +0 -55
  374. data/lib/proguard4.7/src/proguard/classfile/visitor/AllMemberVisitor.java +0 -57
  375. data/lib/proguard4.7/src/proguard/classfile/visitor/AllMethodVisitor.java +0 -55
  376. data/lib/proguard4.7/src/proguard/classfile/visitor/BottomClassFilter.java +0 -69
  377. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassAccessFilter.java +0 -88
  378. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassCleaner.java +0 -275
  379. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassCollector.java +0 -58
  380. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassCounter.java +0 -56
  381. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassHierarchyTraveler.java +0 -91
  382. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassNameFilter.java +0 -112
  383. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassPoolFiller.java +0 -55
  384. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassPoolVisitor.java +0 -37
  385. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassPresenceFilter.java +0 -93
  386. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassPrinter.java +0 -1011
  387. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassVersionFilter.java +0 -85
  388. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassVersionSetter.java +0 -83
  389. data/lib/proguard4.7/src/proguard/classfile/visitor/ClassVisitor.java +0 -36
  390. data/lib/proguard4.7/src/proguard/classfile/visitor/ConcreteClassDownTraveler.java +0 -100
  391. data/lib/proguard4.7/src/proguard/classfile/visitor/DotClassClassVisitor.java +0 -89
  392. data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptClassFilter.java +0 -69
  393. data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptClassesFilter.java +0 -90
  394. data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptionCounter.java +0 -52
  395. data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptionExcludedOffsetFilter.java +0 -64
  396. data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptionHandlerConstantVisitor.java +0 -62
  397. data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptionHandlerFilter.java +0 -70
  398. data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptionOffsetFilter.java +0 -64
  399. data/lib/proguard4.7/src/proguard/classfile/visitor/ExceptionRangeFilter.java +0 -68
  400. data/lib/proguard4.7/src/proguard/classfile/visitor/ImplementedClassConstantFilter.java +0 -69
  401. data/lib/proguard4.7/src/proguard/classfile/visitor/ImplementedClassFilter.java +0 -71
  402. data/lib/proguard4.7/src/proguard/classfile/visitor/ImplementingClassConstantFilter.java +0 -70
  403. data/lib/proguard4.7/src/proguard/classfile/visitor/LibraryClassFilter.java +0 -60
  404. data/lib/proguard4.7/src/proguard/classfile/visitor/LibraryMemberFilter.java +0 -73
  405. data/lib/proguard4.7/src/proguard/classfile/visitor/MemberAccessFilter.java +0 -122
  406. data/lib/proguard4.7/src/proguard/classfile/visitor/MemberClassAccessFilter.java +0 -106
  407. data/lib/proguard4.7/src/proguard/classfile/visitor/MemberCollector.java +0 -59
  408. data/lib/proguard4.7/src/proguard/classfile/visitor/MemberCounter.java +0 -72
  409. data/lib/proguard4.7/src/proguard/classfile/visitor/MemberDescriptorFilter.java +0 -113
  410. data/lib/proguard4.7/src/proguard/classfile/visitor/MemberNameFilter.java +0 -113
  411. data/lib/proguard4.7/src/proguard/classfile/visitor/MemberToClassVisitor.java +0 -90
  412. data/lib/proguard4.7/src/proguard/classfile/visitor/MemberVisitor.java +0 -40
  413. data/lib/proguard4.7/src/proguard/classfile/visitor/MethodImplementationFilter.java +0 -70
  414. data/lib/proguard4.7/src/proguard/classfile/visitor/MethodImplementationTraveler.java +0 -128
  415. data/lib/proguard4.7/src/proguard/classfile/visitor/MultiClassPoolVisitor.java +0 -88
  416. data/lib/proguard4.7/src/proguard/classfile/visitor/MultiClassVisitor.java +0 -97
  417. data/lib/proguard4.7/src/proguard/classfile/visitor/MultiMemberVisitor.java +0 -113
  418. data/lib/proguard4.7/src/proguard/classfile/visitor/NamedClassVisitor.java +0 -49
  419. data/lib/proguard4.7/src/proguard/classfile/visitor/NamedFieldVisitor.java +0 -61
  420. data/lib/proguard4.7/src/proguard/classfile/visitor/NamedMethodVisitor.java +0 -61
  421. data/lib/proguard4.7/src/proguard/classfile/visitor/ProgramClassFilter.java +0 -60
  422. data/lib/proguard4.7/src/proguard/classfile/visitor/ProgramMemberFilter.java +0 -73
  423. data/lib/proguard4.7/src/proguard/classfile/visitor/ReferencedClassVisitor.java +0 -255
  424. data/lib/proguard4.7/src/proguard/classfile/visitor/ReferencedMemberVisitor.java +0 -73
  425. data/lib/proguard4.7/src/proguard/classfile/visitor/SimilarMemberVisitor.java +0 -125
  426. data/lib/proguard4.7/src/proguard/classfile/visitor/SimpleClassPrinter.java +0 -167
  427. data/lib/proguard4.7/src/proguard/classfile/visitor/SubclassFilter.java +0 -91
  428. data/lib/proguard4.7/src/proguard/classfile/visitor/SubclassTraveler.java +0 -60
  429. data/lib/proguard4.7/src/proguard/classfile/visitor/VariableClassVisitor.java +0 -78
  430. data/lib/proguard4.7/src/proguard/classfile/visitor/VariableMemberVisitor.java +0 -96
  431. data/lib/proguard4.7/src/proguard/classfile/visitor/package.html +0 -40
  432. data/lib/proguard4.7/src/proguard/evaluation/BasicBranchUnit.java +0 -126
  433. data/lib/proguard4.7/src/proguard/evaluation/BasicInvocationUnit.java +0 -425
  434. data/lib/proguard4.7/src/proguard/evaluation/BranchUnit.java +0 -63
  435. data/lib/proguard4.7/src/proguard/evaluation/ClassConstantValueFactory.java +0 -53
  436. data/lib/proguard4.7/src/proguard/evaluation/ConstantValueFactory.java +0 -113
  437. data/lib/proguard4.7/src/proguard/evaluation/InvocationUnit.java +0 -62
  438. data/lib/proguard4.7/src/proguard/evaluation/Processor.java +0 -908
  439. data/lib/proguard4.7/src/proguard/evaluation/Stack.java +0 -560
  440. data/lib/proguard4.7/src/proguard/evaluation/TracedStack.java +0 -342
  441. data/lib/proguard4.7/src/proguard/evaluation/TracedVariables.java +0 -199
  442. data/lib/proguard4.7/src/proguard/evaluation/Variables.java +0 -347
  443. data/lib/proguard4.7/src/proguard/evaluation/value/Category1Value.java +0 -41
  444. data/lib/proguard4.7/src/proguard/evaluation/value/Category2Value.java +0 -41
  445. data/lib/proguard4.7/src/proguard/evaluation/value/ComparisonValue.java +0 -69
  446. data/lib/proguard4.7/src/proguard/evaluation/value/CompositeDoubleValue.java +0 -81
  447. data/lib/proguard4.7/src/proguard/evaluation/value/CompositeFloatValue.java +0 -81
  448. data/lib/proguard4.7/src/proguard/evaluation/value/CompositeIntegerValue.java +0 -87
  449. data/lib/proguard4.7/src/proguard/evaluation/value/CompositeLongValue.java +0 -87
  450. data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedByteValue.java +0 -64
  451. data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedCharacterValue.java +0 -64
  452. data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedDoubleValue.java +0 -64
  453. data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedFloatValue.java +0 -64
  454. data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedIntegerValue.java +0 -64
  455. data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedLongValue.java +0 -64
  456. data/lib/proguard4.7/src/proguard/evaluation/value/ConvertedShortValue.java +0 -64
  457. data/lib/proguard4.7/src/proguard/evaluation/value/DoubleValue.java +0 -359
  458. data/lib/proguard4.7/src/proguard/evaluation/value/FloatValue.java +0 -359
  459. data/lib/proguard4.7/src/proguard/evaluation/value/IdentifiedDoubleValue.java +0 -67
  460. data/lib/proguard4.7/src/proguard/evaluation/value/IdentifiedFloatValue.java +0 -67
  461. data/lib/proguard4.7/src/proguard/evaluation/value/IdentifiedIntegerValue.java +0 -67
  462. data/lib/proguard4.7/src/proguard/evaluation/value/IdentifiedLongValue.java +0 -67
  463. data/lib/proguard4.7/src/proguard/evaluation/value/IdentifiedReferenceValue.java +0 -102
  464. data/lib/proguard4.7/src/proguard/evaluation/value/IdentifiedValueFactory.java +0 -75
  465. data/lib/proguard4.7/src/proguard/evaluation/value/InstructionOffsetValue.java +0 -307
  466. data/lib/proguard4.7/src/proguard/evaluation/value/IntegerValue.java +0 -1002
  467. data/lib/proguard4.7/src/proguard/evaluation/value/LongValue.java +0 -554
  468. data/lib/proguard4.7/src/proguard/evaluation/value/NegatedDoubleValue.java +0 -71
  469. data/lib/proguard4.7/src/proguard/evaluation/value/NegatedFloatValue.java +0 -71
  470. data/lib/proguard4.7/src/proguard/evaluation/value/NegatedIntegerValue.java +0 -71
  471. data/lib/proguard4.7/src/proguard/evaluation/value/NegatedLongValue.java +0 -71
  472. data/lib/proguard4.7/src/proguard/evaluation/value/ParticularDoubleValue.java +0 -216
  473. data/lib/proguard4.7/src/proguard/evaluation/value/ParticularFloatValue.java +0 -216
  474. data/lib/proguard4.7/src/proguard/evaluation/value/ParticularIntegerValue.java +0 -383
  475. data/lib/proguard4.7/src/proguard/evaluation/value/ParticularLongValue.java +0 -271
  476. data/lib/proguard4.7/src/proguard/evaluation/value/ReferenceValue.java +0 -540
  477. data/lib/proguard4.7/src/proguard/evaluation/value/SpecificDoubleValue.java +0 -186
  478. data/lib/proguard4.7/src/proguard/evaluation/value/SpecificFloatValue.java +0 -186
  479. data/lib/proguard4.7/src/proguard/evaluation/value/SpecificIntegerValue.java +0 -354
  480. data/lib/proguard4.7/src/proguard/evaluation/value/SpecificLongValue.java +0 -259
  481. data/lib/proguard4.7/src/proguard/evaluation/value/SpecificValueFactory.java +0 -97
  482. data/lib/proguard4.7/src/proguard/evaluation/value/TopValue.java +0 -79
  483. data/lib/proguard4.7/src/proguard/evaluation/value/UnknownDoubleValue.java +0 -125
  484. data/lib/proguard4.7/src/proguard/evaluation/value/UnknownFloatValue.java +0 -125
  485. data/lib/proguard4.7/src/proguard/evaluation/value/UnknownIntegerValue.java +0 -216
  486. data/lib/proguard4.7/src/proguard/evaluation/value/UnknownLongValue.java +0 -160
  487. data/lib/proguard4.7/src/proguard/evaluation/value/Value.java +0 -169
  488. data/lib/proguard4.7/src/proguard/evaluation/value/ValueFactory.java +0 -193
  489. data/lib/proguard4.7/src/proguard/evaluation/value/package.html +0 -3
  490. data/lib/proguard4.7/src/proguard/gui/ClassPathPanel.java +0 -441
  491. data/lib/proguard4.7/src/proguard/gui/ClassSpecificationDialog.java +0 -546
  492. data/lib/proguard4.7/src/proguard/gui/ClassSpecificationsPanel.java +0 -231
  493. data/lib/proguard4.7/src/proguard/gui/ExtensionFileFilter.java +0 -78
  494. data/lib/proguard4.7/src/proguard/gui/FilterBuilder.java +0 -208
  495. data/lib/proguard4.7/src/proguard/gui/FilterDialog.java +0 -320
  496. data/lib/proguard4.7/src/proguard/gui/GUIResources.java +0 -56
  497. data/lib/proguard4.7/src/proguard/gui/GUIResources.properties +0 -643
  498. data/lib/proguard4.7/src/proguard/gui/KeepSpecificationsPanel.java +0 -81
  499. data/lib/proguard4.7/src/proguard/gui/ListPanel.java +0 -341
  500. data/lib/proguard4.7/src/proguard/gui/MANIFEST.MF +0 -3
  501. data/lib/proguard4.7/src/proguard/gui/MemberSpecificationDialog.java +0 -509
  502. data/lib/proguard4.7/src/proguard/gui/MemberSpecificationsPanel.java +0 -304
  503. data/lib/proguard4.7/src/proguard/gui/MessageDialogRunnable.java +0 -90
  504. data/lib/proguard4.7/src/proguard/gui/OptimizationsDialog.java +0 -251
  505. data/lib/proguard4.7/src/proguard/gui/ProGuardGUI.java +0 -1777
  506. data/lib/proguard4.7/src/proguard/gui/ProGuardRunnable.java +0 -154
  507. data/lib/proguard4.7/src/proguard/gui/ReTraceRunnable.java +0 -149
  508. data/lib/proguard4.7/src/proguard/gui/SwingUtil.java +0 -82
  509. data/lib/proguard4.7/src/proguard/gui/TabbedPane.java +0 -229
  510. data/lib/proguard4.7/src/proguard/gui/TextAreaOutputStream.java +0 -81
  511. data/lib/proguard4.7/src/proguard/gui/arrow.gif +0 -0
  512. data/lib/proguard4.7/src/proguard/gui/boilerplate.pro +0 -410
  513. data/lib/proguard4.7/src/proguard/gui/default.pro +0 -318
  514. data/lib/proguard4.7/src/proguard/gui/package.html +0 -3
  515. data/lib/proguard4.7/src/proguard/gui/splash/BufferedSprite.java +0 -145
  516. data/lib/proguard4.7/src/proguard/gui/splash/CircleSprite.java +0 -74
  517. data/lib/proguard4.7/src/proguard/gui/splash/ClipSprite.java +0 -85
  518. data/lib/proguard4.7/src/proguard/gui/splash/ColorSprite.java +0 -65
  519. data/lib/proguard4.7/src/proguard/gui/splash/CompositeSprite.java +0 -56
  520. data/lib/proguard4.7/src/proguard/gui/splash/ConstantColor.java +0 -51
  521. data/lib/proguard4.7/src/proguard/gui/splash/ConstantDouble.java +0 -49
  522. data/lib/proguard4.7/src/proguard/gui/splash/ConstantFont.java +0 -46
  523. data/lib/proguard4.7/src/proguard/gui/splash/ConstantInt.java +0 -49
  524. data/lib/proguard4.7/src/proguard/gui/splash/ConstantString.java +0 -49
  525. data/lib/proguard4.7/src/proguard/gui/splash/ConstantTiming.java +0 -57
  526. data/lib/proguard4.7/src/proguard/gui/splash/FontSprite.java +0 -65
  527. data/lib/proguard4.7/src/proguard/gui/splash/ImageSprite.java +0 -76
  528. data/lib/proguard4.7/src/proguard/gui/splash/LinearColor.java +0 -72
  529. data/lib/proguard4.7/src/proguard/gui/splash/LinearDouble.java +0 -55
  530. data/lib/proguard4.7/src/proguard/gui/splash/LinearInt.java +0 -55
  531. data/lib/proguard4.7/src/proguard/gui/splash/LinearTiming.java +0 -55
  532. data/lib/proguard4.7/src/proguard/gui/splash/OverrideGraphics2D.java +0 -598
  533. data/lib/proguard4.7/src/proguard/gui/splash/RectangleSprite.java +0 -114
  534. data/lib/proguard4.7/src/proguard/gui/splash/SawToothTiming.java +0 -53
  535. data/lib/proguard4.7/src/proguard/gui/splash/ShadowedSprite.java +0 -109
  536. data/lib/proguard4.7/src/proguard/gui/splash/SineTiming.java +0 -53
  537. data/lib/proguard4.7/src/proguard/gui/splash/SmoothTiming.java +0 -66
  538. data/lib/proguard4.7/src/proguard/gui/splash/SplashPanel.java +0 -235
  539. data/lib/proguard4.7/src/proguard/gui/splash/Sprite.java +0 -41
  540. data/lib/proguard4.7/src/proguard/gui/splash/TextSprite.java +0 -89
  541. data/lib/proguard4.7/src/proguard/gui/splash/TimeSwitchSprite.java +0 -75
  542. data/lib/proguard4.7/src/proguard/gui/splash/Timing.java +0 -34
  543. data/lib/proguard4.7/src/proguard/gui/splash/TypeWriterString.java +0 -71
  544. data/lib/proguard4.7/src/proguard/gui/splash/VariableColor.java +0 -36
  545. data/lib/proguard4.7/src/proguard/gui/splash/VariableDouble.java +0 -34
  546. data/lib/proguard4.7/src/proguard/gui/splash/VariableFont.java +0 -36
  547. data/lib/proguard4.7/src/proguard/gui/splash/VariableInt.java +0 -34
  548. data/lib/proguard4.7/src/proguard/gui/splash/VariableSizeFont.java +0 -65
  549. data/lib/proguard4.7/src/proguard/gui/splash/VariableString.java +0 -34
  550. data/lib/proguard4.7/src/proguard/gui/splash/package.html +0 -4
  551. data/lib/proguard4.7/src/proguard/gui/vtitle.png +0 -0
  552. data/lib/proguard4.7/src/proguard/io/CascadingDataEntryWriter.java +0 -94
  553. data/lib/proguard4.7/src/proguard/io/ClassFilter.java +0 -59
  554. data/lib/proguard4.7/src/proguard/io/ClassReader.java +0 -115
  555. data/lib/proguard4.7/src/proguard/io/ClassRewriter.java +0 -80
  556. data/lib/proguard4.7/src/proguard/io/DataEntry.java +0 -62
  557. data/lib/proguard4.7/src/proguard/io/DataEntryClassWriter.java +0 -85
  558. data/lib/proguard4.7/src/proguard/io/DataEntryCopier.java +0 -247
  559. data/lib/proguard4.7/src/proguard/io/DataEntryDirectoryFilter.java +0 -40
  560. data/lib/proguard4.7/src/proguard/io/DataEntryFilter.java +0 -38
  561. data/lib/proguard4.7/src/proguard/io/DataEntryNameFilter.java +0 -54
  562. data/lib/proguard4.7/src/proguard/io/DataEntryObfuscator.java +0 -150
  563. data/lib/proguard4.7/src/proguard/io/DataEntryParentFilter.java +0 -51
  564. data/lib/proguard4.7/src/proguard/io/DataEntryPump.java +0 -43
  565. data/lib/proguard4.7/src/proguard/io/DataEntryReader.java +0 -38
  566. data/lib/proguard4.7/src/proguard/io/DataEntryRenamer.java +0 -104
  567. data/lib/proguard4.7/src/proguard/io/DataEntryRewriter.java +0 -148
  568. data/lib/proguard4.7/src/proguard/io/DataEntryWriter.java +0 -73
  569. data/lib/proguard4.7/src/proguard/io/DirectoryFilter.java +0 -58
  570. data/lib/proguard4.7/src/proguard/io/DirectoryPump.java +0 -78
  571. data/lib/proguard4.7/src/proguard/io/DirectoryWriter.java +0 -165
  572. data/lib/proguard4.7/src/proguard/io/FileDataEntry.java +0 -96
  573. data/lib/proguard4.7/src/proguard/io/FilteredDataEntryReader.java +0 -90
  574. data/lib/proguard4.7/src/proguard/io/FilteredDataEntryWriter.java +0 -125
  575. data/lib/proguard4.7/src/proguard/io/Finisher.java +0 -37
  576. data/lib/proguard4.7/src/proguard/io/JarReader.java +0 -75
  577. data/lib/proguard4.7/src/proguard/io/JarWriter.java +0 -235
  578. data/lib/proguard4.7/src/proguard/io/ManifestRewriter.java +0 -216
  579. data/lib/proguard4.7/src/proguard/io/NameFilter.java +0 -83
  580. data/lib/proguard4.7/src/proguard/io/ParentDataEntryWriter.java +0 -75
  581. data/lib/proguard4.7/src/proguard/io/RenamedDataEntry.java +0 -83
  582. data/lib/proguard4.7/src/proguard/io/ZipDataEntry.java +0 -98
  583. data/lib/proguard4.7/src/proguard/io/package.html +0 -4
  584. data/lib/proguard4.7/src/proguard/obfuscate/AttributeShrinker.java +0 -120
  585. data/lib/proguard4.7/src/proguard/obfuscate/AttributeUsageMarker.java +0 -71
  586. data/lib/proguard4.7/src/proguard/obfuscate/ClassObfuscator.java +0 -533
  587. data/lib/proguard4.7/src/proguard/obfuscate/ClassRenamer.java +0 -109
  588. data/lib/proguard4.7/src/proguard/obfuscate/DictionaryNameFactory.java +0 -189
  589. data/lib/proguard4.7/src/proguard/obfuscate/MapCleaner.java +0 -57
  590. data/lib/proguard4.7/src/proguard/obfuscate/MappingKeeper.java +0 -177
  591. data/lib/proguard4.7/src/proguard/obfuscate/MappingPrinter.java +0 -147
  592. data/lib/proguard4.7/src/proguard/obfuscate/MappingProcessor.java +0 -79
  593. data/lib/proguard4.7/src/proguard/obfuscate/MappingReader.java +0 -199
  594. data/lib/proguard4.7/src/proguard/obfuscate/MemberNameCleaner.java +0 -60
  595. data/lib/proguard4.7/src/proguard/obfuscate/MemberNameCollector.java +0 -106
  596. data/lib/proguard4.7/src/proguard/obfuscate/MemberNameConflictFixer.java +0 -159
  597. data/lib/proguard4.7/src/proguard/obfuscate/MemberNameFilter.java +0 -120
  598. data/lib/proguard4.7/src/proguard/obfuscate/MemberObfuscator.java +0 -230
  599. data/lib/proguard4.7/src/proguard/obfuscate/MemberSpecialNameFilter.java +0 -101
  600. data/lib/proguard4.7/src/proguard/obfuscate/MultiMappingProcessor.java +0 -96
  601. data/lib/proguard4.7/src/proguard/obfuscate/NameFactory.java +0 -34
  602. data/lib/proguard4.7/src/proguard/obfuscate/NameFactoryResetter.java +0 -59
  603. data/lib/proguard4.7/src/proguard/obfuscate/NameMarker.java +0 -166
  604. data/lib/proguard4.7/src/proguard/obfuscate/NumericNameFactory.java +0 -49
  605. data/lib/proguard4.7/src/proguard/obfuscate/Obfuscator.java +0 -445
  606. data/lib/proguard4.7/src/proguard/obfuscate/ParameterNameMarker.java +0 -128
  607. data/lib/proguard4.7/src/proguard/obfuscate/SimpleNameFactory.java +0 -156
  608. data/lib/proguard4.7/src/proguard/obfuscate/SourceFileRenamer.java +0 -84
  609. data/lib/proguard4.7/src/proguard/obfuscate/SpecialNameFactory.java +0 -83
  610. data/lib/proguard4.7/src/proguard/obfuscate/package.html +0 -3
  611. data/lib/proguard4.7/src/proguard/optimize/BootstrapMethodArgumentShrinker.java +0 -103
  612. data/lib/proguard4.7/src/proguard/optimize/ChangedCodePrinter.java +0 -297
  613. data/lib/proguard4.7/src/proguard/optimize/ConstantMemberFilter.java +0 -77
  614. data/lib/proguard4.7/src/proguard/optimize/ConstantParameterFilter.java +0 -79
  615. data/lib/proguard4.7/src/proguard/optimize/DuplicateInitializerFixer.java +0 -215
  616. data/lib/proguard4.7/src/proguard/optimize/DuplicateInitializerInvocationFixer.java +0 -161
  617. data/lib/proguard4.7/src/proguard/optimize/KeepMarker.java +0 -95
  618. data/lib/proguard4.7/src/proguard/optimize/KeptClassFilter.java +0 -69
  619. data/lib/proguard4.7/src/proguard/optimize/KeptMemberFilter.java +0 -88
  620. data/lib/proguard4.7/src/proguard/optimize/MemberDescriptorSpecializer.java +0 -138
  621. data/lib/proguard4.7/src/proguard/optimize/MethodDescriptorShrinker.java +0 -317
  622. data/lib/proguard4.7/src/proguard/optimize/MethodStaticizer.java +0 -87
  623. data/lib/proguard4.7/src/proguard/optimize/OptimizationInfoMemberFilter.java +0 -94
  624. data/lib/proguard4.7/src/proguard/optimize/Optimizer.java +0 -963
  625. data/lib/proguard4.7/src/proguard/optimize/ParameterShrinker.java +0 -146
  626. data/lib/proguard4.7/src/proguard/optimize/TailRecursionSimplifier.java +0 -356
  627. data/lib/proguard4.7/src/proguard/optimize/WriteOnlyFieldFilter.java +0 -65
  628. data/lib/proguard4.7/src/proguard/optimize/evaluation/EvaluationShrinker.java +0 -2082
  629. data/lib/proguard4.7/src/proguard/optimize/evaluation/EvaluationSimplifier.java +0 -973
  630. data/lib/proguard4.7/src/proguard/optimize/evaluation/LivenessAnalyzer.java +0 -526
  631. data/lib/proguard4.7/src/proguard/optimize/evaluation/LoadingInvocationUnit.java +0 -195
  632. data/lib/proguard4.7/src/proguard/optimize/evaluation/PartialEvaluator.java +0 -1282
  633. data/lib/proguard4.7/src/proguard/optimize/evaluation/StoringInvocationUnit.java +0 -207
  634. data/lib/proguard4.7/src/proguard/optimize/evaluation/TracedBranchUnit.java +0 -59
  635. data/lib/proguard4.7/src/proguard/optimize/evaluation/VariableOptimizer.java +0 -345
  636. data/lib/proguard4.7/src/proguard/optimize/evaluation/package.html +0 -4
  637. data/lib/proguard4.7/src/proguard/optimize/info/AccessMethodMarker.java +0 -202
  638. data/lib/proguard4.7/src/proguard/optimize/info/BackwardBranchMarker.java +0 -90
  639. data/lib/proguard4.7/src/proguard/optimize/info/CatchExceptionMarker.java +0 -69
  640. data/lib/proguard4.7/src/proguard/optimize/info/CaughtClassFilter.java +0 -63
  641. data/lib/proguard4.7/src/proguard/optimize/info/CaughtClassMarker.java +0 -64
  642. data/lib/proguard4.7/src/proguard/optimize/info/ClassOptimizationInfo.java +0 -165
  643. data/lib/proguard4.7/src/proguard/optimize/info/ClassOptimizationInfoSetter.java +0 -47
  644. data/lib/proguard4.7/src/proguard/optimize/info/DotClassFilter.java +0 -63
  645. data/lib/proguard4.7/src/proguard/optimize/info/DotClassMarker.java +0 -96
  646. data/lib/proguard4.7/src/proguard/optimize/info/ExceptionInstructionChecker.java +0 -193
  647. data/lib/proguard4.7/src/proguard/optimize/info/FieldOptimizationInfo.java +0 -204
  648. data/lib/proguard4.7/src/proguard/optimize/info/InstanceofClassFilter.java +0 -63
  649. data/lib/proguard4.7/src/proguard/optimize/info/InstanceofClassMarker.java +0 -93
  650. data/lib/proguard4.7/src/proguard/optimize/info/InstantiationClassFilter.java +0 -62
  651. data/lib/proguard4.7/src/proguard/optimize/info/InstantiationClassMarker.java +0 -93
  652. data/lib/proguard4.7/src/proguard/optimize/info/MemberOptimizationInfoSetter.java +0 -59
  653. data/lib/proguard4.7/src/proguard/optimize/info/MethodInvocationMarker.java +0 -107
  654. data/lib/proguard4.7/src/proguard/optimize/info/MethodOptimizationInfo.java +0 -302
  655. data/lib/proguard4.7/src/proguard/optimize/info/NoSideEffectMethodMarker.java +0 -91
  656. data/lib/proguard4.7/src/proguard/optimize/info/NonPrivateMemberMarker.java +0 -171
  657. data/lib/proguard4.7/src/proguard/optimize/info/PackageVisibleMemberContainingClassMarker.java +0 -85
  658. data/lib/proguard4.7/src/proguard/optimize/info/PackageVisibleMemberInvokingClassMarker.java +0 -129
  659. data/lib/proguard4.7/src/proguard/optimize/info/ParameterUsageMarker.java +0 -285
  660. data/lib/proguard4.7/src/proguard/optimize/info/ReadWriteFieldMarker.java +0 -163
  661. data/lib/proguard4.7/src/proguard/optimize/info/SideEffectInstructionChecker.java +0 -245
  662. data/lib/proguard4.7/src/proguard/optimize/info/SideEffectMethodMarker.java +0 -175
  663. data/lib/proguard4.7/src/proguard/optimize/info/StaticInitializerContainingClassFilter.java +0 -62
  664. data/lib/proguard4.7/src/proguard/optimize/info/StaticInitializerContainingClassMarker.java +0 -65
  665. data/lib/proguard4.7/src/proguard/optimize/info/SuperInvocationMarker.java +0 -93
  666. data/lib/proguard4.7/src/proguard/optimize/info/VariableUsageMarker.java +0 -96
  667. data/lib/proguard4.7/src/proguard/optimize/info/package.html +0 -4
  668. data/lib/proguard4.7/src/proguard/optimize/package.html +0 -4
  669. data/lib/proguard4.7/src/proguard/optimize/peephole/BranchTargetFinder.java +0 -687
  670. data/lib/proguard4.7/src/proguard/optimize/peephole/ClassFinalizer.java +0 -84
  671. data/lib/proguard4.7/src/proguard/optimize/peephole/ClassMerger.java +0 -576
  672. data/lib/proguard4.7/src/proguard/optimize/peephole/GotoCommonCodeReplacer.java +0 -266
  673. data/lib/proguard4.7/src/proguard/optimize/peephole/GotoGotoReplacer.java +0 -115
  674. data/lib/proguard4.7/src/proguard/optimize/peephole/GotoReturnReplacer.java +0 -115
  675. data/lib/proguard4.7/src/proguard/optimize/peephole/HorizontalClassMerger.java +0 -90
  676. data/lib/proguard4.7/src/proguard/optimize/peephole/InstructionSequenceConstants.java +0 -4424
  677. data/lib/proguard4.7/src/proguard/optimize/peephole/InstructionSequenceReplacer.java +0 -420
  678. data/lib/proguard4.7/src/proguard/optimize/peephole/InstructionSequencesReplacer.java +0 -138
  679. data/lib/proguard4.7/src/proguard/optimize/peephole/MemberPrivatizer.java +0 -103
  680. data/lib/proguard4.7/src/proguard/optimize/peephole/MethodFinalizer.java +0 -93
  681. data/lib/proguard4.7/src/proguard/optimize/peephole/MethodInliner.java +0 -597
  682. data/lib/proguard4.7/src/proguard/optimize/peephole/NopRemover.java +0 -89
  683. data/lib/proguard4.7/src/proguard/optimize/peephole/PeepholeOptimizer.java +0 -103
  684. data/lib/proguard4.7/src/proguard/optimize/peephole/ReachableCodeMarker.java +0 -262
  685. data/lib/proguard4.7/src/proguard/optimize/peephole/RetargetedInnerClassAttributeRemover.java +0 -170
  686. data/lib/proguard4.7/src/proguard/optimize/peephole/TargetClassChanger.java +0 -455
  687. data/lib/proguard4.7/src/proguard/optimize/peephole/UnreachableCodeRemover.java +0 -143
  688. data/lib/proguard4.7/src/proguard/optimize/peephole/UnreachableExceptionRemover.java +0 -163
  689. data/lib/proguard4.7/src/proguard/optimize/peephole/VariableShrinker.java +0 -129
  690. data/lib/proguard4.7/src/proguard/optimize/peephole/VerticalClassMerger.java +0 -88
  691. data/lib/proguard4.7/src/proguard/optimize/peephole/package.html +0 -3
  692. data/lib/proguard4.7/src/proguard/package.html +0 -5
  693. data/lib/proguard4.7/src/proguard/preverify/CodePreverifier.java +0 -611
  694. data/lib/proguard4.7/src/proguard/preverify/CodeSubroutineInliner.java +0 -406
  695. data/lib/proguard4.7/src/proguard/preverify/Preverifier.java +0 -73
  696. data/lib/proguard4.7/src/proguard/preverify/SubroutineInliner.java +0 -73
  697. data/lib/proguard4.7/src/proguard/retrace/MANIFEST.MF +0 -3
  698. data/lib/proguard4.7/src/proguard/retrace/ReTrace.java +0 -749
  699. data/lib/proguard4.7/src/proguard/retrace/package.html +0 -4
  700. data/lib/proguard4.7/src/proguard/shrink/AnnotationUsageMarker.java +0 -333
  701. data/lib/proguard4.7/src/proguard/shrink/ClassShrinker.java +0 -458
  702. data/lib/proguard4.7/src/proguard/shrink/InnerUsageMarker.java +0 -174
  703. data/lib/proguard4.7/src/proguard/shrink/InterfaceUsageMarker.java +0 -152
  704. data/lib/proguard4.7/src/proguard/shrink/ShortestUsageMark.java +0 -183
  705. data/lib/proguard4.7/src/proguard/shrink/ShortestUsageMarker.java +0 -277
  706. data/lib/proguard4.7/src/proguard/shrink/ShortestUsagePrinter.java +0 -210
  707. data/lib/proguard4.7/src/proguard/shrink/Shrinker.java +0 -181
  708. data/lib/proguard4.7/src/proguard/shrink/UsageMarker.java +0 -1036
  709. data/lib/proguard4.7/src/proguard/shrink/UsagePrinter.java +0 -177
  710. data/lib/proguard4.7/src/proguard/shrink/UsedClassFilter.java +0 -74
  711. data/lib/proguard4.7/src/proguard/shrink/UsedMemberFilter.java +0 -93
  712. data/lib/proguard4.7/src/proguard/shrink/package.html +0 -3
  713. data/lib/proguard4.7/src/proguard/util/AndMatcher.java +0 -49
  714. data/lib/proguard4.7/src/proguard/util/ClassNameParser.java +0 -216
  715. data/lib/proguard4.7/src/proguard/util/ConstantMatcher.java +0 -48
  716. data/lib/proguard4.7/src/proguard/util/EmptyStringMatcher.java +0 -36
  717. data/lib/proguard4.7/src/proguard/util/ExtensionMatcher.java +0 -63
  718. data/lib/proguard4.7/src/proguard/util/FileNameParser.java +0 -121
  719. data/lib/proguard4.7/src/proguard/util/FixedStringMatcher.java +0 -56
  720. data/lib/proguard4.7/src/proguard/util/ListMatcher.java +0 -69
  721. data/lib/proguard4.7/src/proguard/util/ListParser.java +0 -137
  722. data/lib/proguard4.7/src/proguard/util/ListUtil.java +0 -180
  723. data/lib/proguard4.7/src/proguard/util/NameParser.java +0 -106
  724. data/lib/proguard4.7/src/proguard/util/NotMatcher.java +0 -46
  725. data/lib/proguard4.7/src/proguard/util/OrMatcher.java +0 -49
  726. data/lib/proguard4.7/src/proguard/util/SettableMatcher.java +0 -46
  727. data/lib/proguard4.7/src/proguard/util/StringMatcher.java +0 -38
  728. data/lib/proguard4.7/src/proguard/util/StringParser.java +0 -35
  729. data/lib/proguard4.7/src/proguard/util/VariableStringMatcher.java +0 -126
  730. data/lib/proguard4.7/src/proguard/util/package.html +0 -3
  731. data/lib/proguard4.7/src/proguard/wtk/ProGuardObfuscator.java +0 -141
  732. data/lib/proguard4.7/src/proguard/wtk/default.pro +0 -114
  733. data/lib/proguard4.7/src/proguard/wtk/package.html +0 -3
@@ -1,195 +0,0 @@
1
- /*
2
- * ProGuard -- shrinking, optimization, obfuscation, and preverification
3
- * of Java bytecode.
4
- *
5
- * Copyright (c) 2002-2011 Eric Lafortune (eric@graphics.cornell.edu)
6
- *
7
- * This program is free software; you can redistribute it and/or modify it
8
- * under the terms of the GNU General Public License as published by the Free
9
- * Software Foundation; either version 2 of the License, or (at your option)
10
- * any later version.
11
- *
12
- * This program is distributed in the hope that it will be useful, but WITHOUT
13
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
15
- * more details.
16
- *
17
- * You should have received a copy of the GNU General Public License along
18
- * with this program; if not, write to the Free Software Foundation, Inc.,
19
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20
- */
21
- package proguard.optimize.evaluation;
22
-
23
- import proguard.classfile.*;
24
- import proguard.classfile.constant.RefConstant;
25
- import proguard.evaluation.BasicInvocationUnit;
26
- import proguard.evaluation.value.*;
27
-
28
- /**
29
- * This InvocationUbit loads parameter values and return values that were
30
- * previously stored with the methods that are invoked.
31
- *
32
- * @see StoringInvocationUnit
33
- * @author Eric Lafortune
34
- */
35
- public class LoadingInvocationUnit
36
- extends BasicInvocationUnit
37
- {
38
- private final boolean loadFieldValues;
39
- private final boolean loadMethodParameterValues;
40
- private final boolean loadMethodReturnValues;
41
-
42
-
43
- /**
44
- * Creates a new LoadingInvocationUnit with the given value factory.
45
- */
46
- public LoadingInvocationUnit(ValueFactory valueFactory)
47
- {
48
- this(valueFactory, false, false, false);
49
- }
50
-
51
-
52
- /**
53
- * Creates a new LoadingInvocationUnit with the given value factory, for
54
- * loading the specified values.
55
- */
56
- public LoadingInvocationUnit(ValueFactory valueFactory,
57
- boolean loadFieldValues,
58
- boolean loadMethodParameterValues,
59
- boolean loadMethodReturnValues)
60
- {
61
- super(valueFactory);
62
-
63
- this.loadFieldValues = loadFieldValues;
64
- this.loadMethodParameterValues = loadMethodParameterValues;
65
- this.loadMethodReturnValues = loadMethodReturnValues;
66
- }
67
-
68
-
69
- // Implementations for BasicInvocationUnit.
70
-
71
- protected Value getFieldClassValue(Clazz clazz,
72
- RefConstant refConstant,
73
- String type)
74
- {
75
- if (loadFieldValues)
76
- {
77
- // Do we know this field?
78
- Member referencedMember = refConstant.referencedMember;
79
- if (referencedMember != null)
80
- {
81
- // Retrieve the stored field class value.
82
- ReferenceValue value = StoringInvocationUnit.getFieldClassValue((Field)referencedMember);
83
- if (value != null &&
84
- value.isParticular())
85
- {
86
- return value;
87
- }
88
- }
89
- }
90
-
91
- return super.getFieldClassValue(clazz, refConstant, type);
92
- }
93
-
94
-
95
- protected Value getFieldValue(Clazz clazz,
96
- RefConstant refConstant,
97
- String type)
98
- {
99
- if (loadFieldValues)
100
- {
101
- // Do we know this field?
102
- Member referencedMember = refConstant.referencedMember;
103
- if (referencedMember != null)
104
- {
105
- // Retrieve the stored field value.
106
- Value value = StoringInvocationUnit.getFieldValue((Field)referencedMember);
107
- if (value != null &&
108
- value.isParticular())
109
- {
110
- return value;
111
- }
112
- }
113
- }
114
-
115
- return super.getFieldValue(clazz, refConstant, type);
116
- }
117
-
118
-
119
- protected Value getMethodParameterValue(Clazz clazz,
120
- Method method,
121
- int parameterIndex,
122
- String type,
123
- Clazz referencedClass)
124
- {
125
- if (loadMethodParameterValues)
126
- {
127
- // Retrieve the stored method parameter value.
128
- Value value = StoringInvocationUnit.getMethodParameterValue(method, parameterIndex);
129
- if (value != null &&
130
- value.isParticular())
131
- {
132
- return value;
133
- }
134
- }
135
-
136
- return super.getMethodParameterValue(clazz,
137
- method,
138
- parameterIndex,
139
- type,
140
- referencedClass);
141
- }
142
-
143
-
144
- protected Value getMethodReturnValue(Clazz clazz,
145
- RefConstant refConstant,
146
- String type)
147
- {
148
- if (loadMethodReturnValues)
149
- {
150
- // Do we know this method?
151
- Member referencedMember = refConstant.referencedMember;
152
- if (referencedMember != null)
153
- {
154
- // Retrieve the stored method return value.
155
- Value value = StoringInvocationUnit.getMethodReturnValue((Method)referencedMember);
156
- if (value != null &&
157
- value.isParticular())
158
- {
159
- return value;
160
- }
161
- }
162
- }
163
-
164
- return super.getMethodReturnValue(clazz,
165
- refConstant,
166
- type);
167
- }
168
-
169
-
170
- // // Small utility methods.
171
- //
172
- // private Value refresh(Value value)
173
- // {
174
- // if (value.isParticular())
175
- // {
176
- // return value;
177
- // }
178
- //
179
- // switch (value.computationalType())
180
- // {
181
- // case Value.TYPE_INTEGER: return valueFactory.createIntegerValue();
182
- // case Value.TYPE_LONG: return valueFactory.createLongValue();
183
- // case Value.TYPE_FLOAT: return valueFactory.createFloatValue();
184
- // case Value.TYPE_DOUBLE: return valueFactory.createDoubleValue();
185
- // default:
186
- // {
187
- // ReferenceValue referenceValue = value.referenceValue();
188
- //
189
- // return valueFactory.createReferenceValue(referenceValue.getType(),
190
- // referenceValue.getReferencedClass(),
191
- // referenceValue.isNull() != Value.NEVER);
192
- // }
193
- // }
194
- // }
195
- }
@@ -1,1282 +0,0 @@
1
- /*
2
- * ProGuard -- shrinking, optimization, obfuscation, and preverification
3
- * of Java bytecode.
4
- *
5
- * Copyright (c) 2002-2011 Eric Lafortune (eric@graphics.cornell.edu)
6
- *
7
- * This program is free software; you can redistribute it and/or modify it
8
- * under the terms of the GNU General Public License as published by the Free
9
- * Software Foundation; either version 2 of the License, or (at your option)
10
- * any later version.
11
- *
12
- * This program is distributed in the hope that it will be useful, but WITHOUT
13
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
15
- * more details.
16
- *
17
- * You should have received a copy of the GNU General Public License along
18
- * with this program; if not, write to the Free Software Foundation, Inc.,
19
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20
- */
21
- package proguard.optimize.evaluation;
22
-
23
- import proguard.classfile.*;
24
- import proguard.classfile.attribute.*;
25
- import proguard.classfile.attribute.visitor.*;
26
- import proguard.classfile.constant.ClassConstant;
27
- import proguard.classfile.instruction.*;
28
- import proguard.classfile.util.*;
29
- import proguard.classfile.visitor.*;
30
- import proguard.evaluation.*;
31
- import proguard.evaluation.value.*;
32
- import proguard.optimize.peephole.BranchTargetFinder;
33
-
34
- import java.util.Arrays;
35
-
36
- /**
37
- * This AttributeVisitor performs partial evaluation on the code attributes
38
- * that it visits.
39
- *
40
- * @author Eric Lafortune
41
- */
42
- public class PartialEvaluator
43
- extends SimplifiedVisitor
44
- implements AttributeVisitor,
45
- ExceptionInfoVisitor
46
- {
47
- //*
48
- private static final boolean DEBUG = false;
49
- private static final boolean DEBUG_RESULTS = false;
50
- /*/
51
- private static boolean DEBUG = true;
52
- private static boolean DEBUG_RESULTS = true;
53
- //*/
54
-
55
- private static final int MAXIMUM_EVALUATION_COUNT = 5;
56
-
57
- public static final int NONE = -2;
58
- public static final int AT_METHOD_ENTRY = -1;
59
- public static final int AT_CATCH_ENTRY = -1;
60
-
61
- private final ValueFactory valueFactory;
62
- private final InvocationUnit invocationUnit;
63
- private final boolean evaluateAllCode;
64
-
65
- private InstructionOffsetValue[] branchOriginValues = new InstructionOffsetValue[ClassConstants.TYPICAL_CODE_LENGTH];
66
- private InstructionOffsetValue[] branchTargetValues = new InstructionOffsetValue[ClassConstants.TYPICAL_CODE_LENGTH];
67
- private TracedVariables[] variablesBefore = new TracedVariables[ClassConstants.TYPICAL_CODE_LENGTH];
68
- private TracedStack[] stacksBefore = new TracedStack[ClassConstants.TYPICAL_CODE_LENGTH];
69
- private TracedVariables[] variablesAfter = new TracedVariables[ClassConstants.TYPICAL_CODE_LENGTH];
70
- private TracedStack[] stacksAfter = new TracedStack[ClassConstants.TYPICAL_CODE_LENGTH];
71
- private boolean[] generalizedContexts = new boolean[ClassConstants.TYPICAL_CODE_LENGTH];
72
- private int[] evaluationCounts = new int[ClassConstants.TYPICAL_CODE_LENGTH];
73
- private boolean evaluateExceptions;
74
-
75
- private final BasicBranchUnit branchUnit;
76
- private final BranchTargetFinder branchTargetFinder;
77
-
78
- private final java.util.Stack callingInstructionBlockStack;
79
- private final java.util.Stack instructionBlockStack = new java.util.Stack();
80
-
81
-
82
- /**
83
- * Creates a simple PartialEvaluator.
84
- */
85
- public PartialEvaluator()
86
- {
87
- this(new ValueFactory(),
88
- new BasicInvocationUnit(new ValueFactory()),
89
- true);
90
- }
91
-
92
-
93
- /**
94
- * Creates a new PartialEvaluator.
95
- * @param valueFactory the value factory that will create all values
96
- * during evaluation.
97
- * @param invocationUnit the invocation unit that will handle all
98
- * communication with other fields and methods.
99
- * @param evaluateAllCode a flag that specifies whether all branch targets
100
- * and exception handlers should be evaluated,
101
- * even if they are unreachable.
102
- */
103
- public PartialEvaluator(ValueFactory valueFactory,
104
- InvocationUnit invocationUnit,
105
- boolean evaluateAllCode)
106
- {
107
- this(valueFactory,
108
- invocationUnit,
109
- evaluateAllCode,
110
- evaluateAllCode ?
111
- new BasicBranchUnit() :
112
- new TracedBranchUnit(),
113
- new BranchTargetFinder(),
114
- null);
115
- }
116
-
117
-
118
- /**
119
- * Creates a new PartialEvaluator, based on an existing one.
120
- * @param partialEvaluator the subroutine calling partial evaluator.
121
- */
122
- private PartialEvaluator(PartialEvaluator partialEvaluator)
123
- {
124
- this(partialEvaluator.valueFactory,
125
- partialEvaluator.invocationUnit,
126
- partialEvaluator.evaluateAllCode,
127
- partialEvaluator.branchUnit,
128
- partialEvaluator.branchTargetFinder,
129
- partialEvaluator.instructionBlockStack);
130
- }
131
-
132
-
133
- /**
134
- * Creates a new PartialEvaluator.
135
- * @param valueFactory the value factory that will create all
136
- * values during evaluation.
137
- * @param invocationUnit the invocation unit that will handle all
138
- * communication with other fields and methods.
139
- * @param evaluateAllCode a flag that specifies whether all branch
140
- * targets and exception handlers should be
141
- * evaluated, even if they are unreachable.
142
- * @param branchUnit the branch unit that will handle all
143
- * branches.
144
- * @param branchTargetFinder the utility class that will find all
145
- * branches.
146
- */
147
- private PartialEvaluator(ValueFactory valueFactory,
148
- InvocationUnit invocationUnit,
149
- boolean evaluateAllCode,
150
- BasicBranchUnit branchUnit,
151
- BranchTargetFinder branchTargetFinder,
152
- java.util.Stack callingInstructionBlockStack)
153
- {
154
- this.valueFactory = valueFactory;
155
- this.invocationUnit = invocationUnit;
156
- this.evaluateAllCode = evaluateAllCode;
157
- this.branchUnit = branchUnit;
158
- this.branchTargetFinder = branchTargetFinder;
159
- this.callingInstructionBlockStack = callingInstructionBlockStack == null ?
160
- this.instructionBlockStack :
161
- callingInstructionBlockStack;
162
- }
163
-
164
-
165
- // Implementations for AttributeVisitor.
166
-
167
- public void visitAnyAttribute(Clazz clazz, Attribute attribute) {}
168
-
169
-
170
- public void visitCodeAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute)
171
- {
172
- // DEBUG = DEBUG_RESULTS =
173
- // clazz.getName().equals("abc/Def") &&
174
- // method.getName(clazz).equals("abc");
175
-
176
- // TODO: Remove this when the partial evaluator has stabilized.
177
- // Catch any unexpected exceptions from the actual visiting method.
178
- try
179
- {
180
- // Process the code.
181
- visitCodeAttribute0(clazz, method, codeAttribute);
182
- }
183
- catch (RuntimeException ex)
184
- {
185
- System.err.println("Unexpected error while performing partial evaluation:");
186
- System.err.println(" Class = ["+clazz.getName()+"]");
187
- System.err.println(" Method = ["+method.getName(clazz)+method.getDescriptor(clazz)+"]");
188
- System.err.println(" Exception = ["+ex.getClass().getName()+"] ("+ex.getMessage()+")");
189
-
190
- if (DEBUG)
191
- {
192
- method.accept(clazz, new ClassPrinter());
193
-
194
- System.out.println("Evaluation results:");
195
-
196
- int offset = 0;
197
- do
198
- {
199
- if (isBranchOrExceptionTarget(offset))
200
- {
201
- System.out.println("Branch target from ["+branchOriginValues[offset]+"]:");
202
- if (isTraced(offset))
203
- {
204
- System.out.println(" Vars: "+variablesBefore[offset]);
205
- System.out.println(" Stack: "+stacksBefore[offset]);
206
- }
207
- }
208
-
209
- Instruction instruction = InstructionFactory.create(codeAttribute.code,
210
- offset);
211
- System.out.println(instruction.toString(offset));
212
-
213
- if (isTraced(offset))
214
- {
215
- int initializationOffset = branchTargetFinder.initializationOffset(offset);
216
- if (initializationOffset != NONE)
217
- {
218
- System.out.println(" is to be initialized at ["+initializationOffset+"]");
219
- }
220
-
221
- InstructionOffsetValue branchTargets = branchTargets(offset);
222
- if (branchTargets != null)
223
- {
224
- System.out.println(" has overall been branching to "+branchTargets);
225
- }
226
-
227
- System.out.println(" Vars: "+variablesAfter[offset]);
228
- System.out.println(" Stack: "+stacksAfter[offset]);
229
- }
230
-
231
- offset += instruction.length(offset);
232
- }
233
- while (offset < codeAttribute.u4codeLength);
234
- }
235
-
236
- throw ex;
237
- }
238
- }
239
-
240
-
241
- public void visitCodeAttribute0(Clazz clazz, Method method, CodeAttribute codeAttribute)
242
- {
243
- // Evaluate the instructions, starting at the entry point.
244
- if (DEBUG)
245
- {
246
- System.out.println();
247
- System.out.println("Partial evaluation: "+clazz.getName()+"."+method.getName(clazz)+method.getDescriptor(clazz));
248
- System.out.println(" Max locals = "+codeAttribute.u2maxLocals);
249
- System.out.println(" Max stack = "+codeAttribute.u2maxStack);
250
- }
251
-
252
- // Reuse the existing variables and stack objects, ensuring the right size.
253
- TracedVariables variables = new TracedVariables(codeAttribute.u2maxLocals);
254
- TracedStack stack = new TracedStack(codeAttribute.u2maxStack);
255
-
256
- // Initialize the reusable arrays and variables.
257
- initializeArrays(codeAttribute);
258
- initializeParameters(clazz, method, codeAttribute, variables);
259
-
260
- // Find all instruction offsets,...
261
- codeAttribute.accept(clazz, method, branchTargetFinder);
262
-
263
- // Start executing the first instruction block.
264
- evaluateInstructionBlockAndExceptionHandlers(clazz,
265
- method,
266
- codeAttribute,
267
- variables,
268
- stack,
269
- 0,
270
- codeAttribute.u4codeLength);
271
-
272
- if (DEBUG_RESULTS)
273
- {
274
- System.out.println("Evaluation results:");
275
-
276
- int offset = 0;
277
- do
278
- {
279
- if (isBranchOrExceptionTarget(offset))
280
- {
281
- System.out.println("Branch target from ["+branchOriginValues[offset]+"]:");
282
- if (isTraced(offset))
283
- {
284
- System.out.println(" Vars: "+variablesBefore[offset]);
285
- System.out.println(" Stack: "+stacksBefore[offset]);
286
- }
287
- }
288
-
289
- Instruction instruction = InstructionFactory.create(codeAttribute.code,
290
- offset);
291
- System.out.println(instruction.toString(offset));
292
-
293
- if (isTraced(offset))
294
- {
295
- int initializationOffset = branchTargetFinder.initializationOffset(offset);
296
- if (initializationOffset != NONE)
297
- {
298
- System.out.println(" is to be initialized at ["+initializationOffset+"]");
299
- }
300
-
301
- InstructionOffsetValue branchTargets = branchTargets(offset);
302
- if (branchTargets != null)
303
- {
304
- System.out.println(" has overall been branching to "+branchTargets);
305
- }
306
-
307
- System.out.println(" Vars: "+variablesAfter[offset]);
308
- System.out.println(" Stack: "+stacksAfter[offset]);
309
- }
310
-
311
- offset += instruction.length(offset);
312
- }
313
- while (offset < codeAttribute.u4codeLength);
314
- }
315
- }
316
-
317
-
318
- /**
319
- * Returns whether a block of instructions is ever used.
320
- */
321
- public boolean isTraced(int startOffset, int endOffset)
322
- {
323
- for (int index = startOffset; index < endOffset; index++)
324
- {
325
- if (isTraced(index))
326
- {
327
- return true;
328
- }
329
- }
330
-
331
- return false;
332
- }
333
-
334
-
335
- /**
336
- * Returns whether the instruction at the given offset has ever been
337
- * executed during the partial evaluation.
338
- */
339
- public boolean isTraced(int instructionOffset)
340
- {
341
- return evaluationCounts[instructionOffset] > 0;
342
- }
343
-
344
-
345
- /**
346
- * Returns whether there is an instruction at the given offset.
347
- */
348
- public boolean isInstruction(int instructionOffset)
349
- {
350
- return branchTargetFinder.isInstruction(instructionOffset);
351
- }
352
-
353
-
354
- /**
355
- * Returns whether the instruction at the given offset is the target of a
356
- * branch instruction or an exception.
357
- */
358
- public boolean isBranchOrExceptionTarget(int instructionOffset)
359
- {
360
- return branchTargetFinder.isBranchTarget(instructionOffset) ||
361
- branchTargetFinder.isExceptionHandler(instructionOffset);
362
- }
363
-
364
-
365
- /**
366
- * Returns whether the instruction at the given offset is the start of a
367
- * subroutine.
368
- */
369
- public boolean isSubroutineStart(int instructionOffset)
370
- {
371
- return branchTargetFinder.isSubroutineStart(instructionOffset);
372
- }
373
-
374
-
375
- /**
376
- * Returns whether the instruction at the given offset is a subroutine
377
- * invocation.
378
- */
379
- public boolean isSubroutineInvocation(int instructionOffset)
380
- {
381
- return branchTargetFinder.isSubroutineInvocation(instructionOffset);
382
- }
383
-
384
-
385
- /**
386
- * Returns whether the instruction at the given offset is part of a
387
- * subroutine.
388
- */
389
- public boolean isSubroutine(int instructionOffset)
390
- {
391
- return branchTargetFinder.isSubroutine(instructionOffset);
392
- }
393
-
394
-
395
- /**
396
- * Returns whether the subroutine at the given offset is ever returning
397
- * by means of a regular 'ret' instruction.
398
- */
399
- public boolean isSubroutineReturning(int instructionOffset)
400
- {
401
- return branchTargetFinder.isSubroutineReturning(instructionOffset);
402
- }
403
-
404
-
405
- /**
406
- * Returns the offset after the subroutine that starts at the given
407
- * offset.
408
- */
409
- public int subroutineEnd(int instructionOffset)
410
- {
411
- return branchTargetFinder.subroutineEnd(instructionOffset);
412
- }
413
-
414
-
415
- /**
416
- * Returns the instruction offset at which the object instance that is
417
- * created at the given 'new' instruction offset is initialized, or
418
- * <code>NONE</code> if it is not being created.
419
- */
420
- public int initializationOffset(int instructionOffset)
421
- {
422
- return branchTargetFinder.initializationOffset(instructionOffset);
423
- }
424
-
425
-
426
- /**
427
- * Returns whether the method is an instance initializer.
428
- */
429
- public boolean isInitializer()
430
- {
431
- return branchTargetFinder.isInitializer();
432
- }
433
-
434
-
435
- /**
436
- * Returns the instruction offset at which this initializer is calling
437
- * the "super" or "this" initializer method, or <code>NONE</code> if it is
438
- * not an initializer.
439
- */
440
- public int superInitializationOffset()
441
- {
442
- return branchTargetFinder.superInitializationOffset();
443
- }
444
-
445
-
446
- /**
447
- * Returns the offset of the 'new' instruction that corresponds to the
448
- * invocation of the instance initializer at the given offset, or
449
- * <code>AT_METHOD_ENTRY</code> if the invocation is calling the "super" or
450
- * "this" initializer method, , or <code>NONE</code> if it is not a 'new'
451
- * instruction.
452
- */
453
- public int creationOffset(int offset)
454
- {
455
- return branchTargetFinder.creationOffset(offset);
456
- }
457
-
458
-
459
- /**
460
- * Returns the variables before execution of the instruction at the given
461
- * offset.
462
- */
463
- public TracedVariables getVariablesBefore(int instructionOffset)
464
- {
465
- return variablesBefore[instructionOffset];
466
- }
467
-
468
-
469
- /**
470
- * Returns the variables after execution of the instruction at the given
471
- * offset.
472
- */
473
- public TracedVariables getVariablesAfter(int instructionOffset)
474
- {
475
- return variablesAfter[instructionOffset];
476
- }
477
-
478
-
479
- /**
480
- * Returns the stack before execution of the instruction at the given
481
- * offset.
482
- */
483
- public TracedStack getStackBefore(int instructionOffset)
484
- {
485
- return stacksBefore[instructionOffset];
486
- }
487
-
488
-
489
- /**
490
- * Returns the stack after execution of the instruction at the given
491
- * offset.
492
- */
493
- public TracedStack getStackAfter(int instructionOffset)
494
- {
495
- return stacksAfter[instructionOffset];
496
- }
497
-
498
-
499
- /**
500
- * Returns the instruction offsets that branch to the given instruction
501
- * offset.
502
- */
503
- public InstructionOffsetValue branchOrigins(int instructionOffset)
504
- {
505
- return branchOriginValues[instructionOffset];
506
- }
507
-
508
-
509
- /**
510
- * Returns the instruction offsets to which the given instruction offset
511
- * branches.
512
- */
513
- public InstructionOffsetValue branchTargets(int instructionOffset)
514
- {
515
- return branchTargetValues[instructionOffset];
516
- }
517
-
518
-
519
- // Utility methods to evaluate instruction blocks.
520
-
521
- /**
522
- * Pushes block of instructions to be executed in the calling partial
523
- * evaluator.
524
- */
525
- private void pushCallingInstructionBlock(TracedVariables variables,
526
- TracedStack stack,
527
- int startOffset)
528
- {
529
- callingInstructionBlockStack.push(new MyInstructionBlock(variables,
530
- stack,
531
- startOffset));
532
- }
533
-
534
-
535
- /**
536
- * Pushes block of instructions to be executed in this partial evaluator.
537
- */
538
- private void pushInstructionBlock(TracedVariables variables,
539
- TracedStack stack,
540
- int startOffset)
541
- {
542
- instructionBlockStack.push(new MyInstructionBlock(variables,
543
- stack,
544
- startOffset));
545
- }
546
-
547
-
548
- /**
549
- * Evaluates the instruction block and the exception handlers covering the
550
- * given instruction range in the given code.
551
- */
552
- private void evaluateInstructionBlockAndExceptionHandlers(Clazz clazz,
553
- Method method,
554
- CodeAttribute codeAttribute,
555
- TracedVariables variables,
556
- TracedStack stack,
557
- int startOffset,
558
- int endOffset)
559
- {
560
- evaluateInstructionBlock(clazz,
561
- method,
562
- codeAttribute,
563
- variables,
564
- stack,
565
- startOffset);
566
-
567
- evaluateExceptionHandlers(clazz,
568
- method,
569
- codeAttribute,
570
- startOffset,
571
- endOffset);
572
- }
573
-
574
-
575
- /**
576
- * Evaluates a block of instructions, starting at the given offset and ending
577
- * at a branch instruction, a return instruction, or a throw instruction.
578
- */
579
- private void evaluateInstructionBlock(Clazz clazz,
580
- Method method,
581
- CodeAttribute codeAttribute,
582
- TracedVariables variables,
583
- TracedStack stack,
584
- int startOffset)
585
- {
586
- // Execute the initial instruction block.
587
- evaluateSingleInstructionBlock(clazz,
588
- method,
589
- codeAttribute,
590
- variables,
591
- stack,
592
- startOffset);
593
-
594
- // Execute all resulting instruction blocks on the execution stack.
595
- while (!instructionBlockStack.empty())
596
- {
597
- if (DEBUG) System.out.println("Popping alternative branch out of "+instructionBlockStack.size()+" blocks");
598
-
599
- MyInstructionBlock instructionBlock =
600
- (MyInstructionBlock)instructionBlockStack.pop();
601
-
602
- evaluateSingleInstructionBlock(clazz,
603
- method,
604
- codeAttribute,
605
- instructionBlock.variables,
606
- instructionBlock.stack,
607
- instructionBlock.startOffset);
608
- }
609
- }
610
-
611
-
612
- /**
613
- * Evaluates a block of instructions, starting at the given offset and ending
614
- * at a branch instruction, a return instruction, or a throw instruction.
615
- * Instruction blocks that are to be evaluated as a result are pushed on
616
- * the given stack.
617
- */
618
- private void evaluateSingleInstructionBlock(Clazz clazz,
619
- Method method,
620
- CodeAttribute codeAttribute,
621
- TracedVariables variables,
622
- TracedStack stack,
623
- int startOffset)
624
- {
625
- byte[] code = codeAttribute.code;
626
-
627
- if (DEBUG)
628
- {
629
- System.out.println("Instruction block starting at ["+startOffset+"] in "+
630
- ClassUtil.externalFullMethodDescription(clazz.getName(),
631
- 0,
632
- method.getName(clazz),
633
- method.getDescriptor(clazz)));
634
- System.out.println("Init vars: "+variables);
635
- System.out.println("Init stack: "+stack);
636
- }
637
-
638
- Processor processor = new Processor(variables,
639
- stack,
640
- valueFactory,
641
- branchUnit,
642
- invocationUnit);
643
-
644
- int instructionOffset = startOffset;
645
-
646
- int maxOffset = startOffset;
647
-
648
- // Evaluate the subsequent instructions.
649
- while (true)
650
- {
651
- if (maxOffset < instructionOffset)
652
- {
653
- maxOffset = instructionOffset;
654
- }
655
-
656
- // Maintain a generalized local variable frame and stack at this
657
- // instruction offset, before execution.
658
- int evaluationCount = evaluationCounts[instructionOffset];
659
- if (evaluationCount == 0)
660
- {
661
- // First time we're passing by this instruction.
662
- if (variablesBefore[instructionOffset] == null)
663
- {
664
- // There's not even a context at this index yet.
665
- variablesBefore[instructionOffset] = new TracedVariables(variables);
666
- stacksBefore[instructionOffset] = new TracedStack(stack);
667
- }
668
- else
669
- {
670
- // Reuse the context objects at this index.
671
- variablesBefore[instructionOffset].initialize(variables);
672
- stacksBefore[instructionOffset].copy(stack);
673
- }
674
-
675
- // We'll execute in the generalized context, because it is
676
- // the same as the current context.
677
- generalizedContexts[instructionOffset] = true;
678
- }
679
- else
680
- {
681
- // Merge in the current context.
682
- boolean variablesChanged = variablesBefore[instructionOffset].generalize(variables, true);
683
- boolean stackChanged = stacksBefore[instructionOffset].generalize(stack);
684
-
685
- //System.out.println("GVars: "+variablesBefore[instructionOffset]);
686
- //System.out.println("GStack: "+stacksBefore[instructionOffset]);
687
-
688
- // Bail out if the current context is the same as last time.
689
- if (!variablesChanged &&
690
- !stackChanged &&
691
- generalizedContexts[instructionOffset])
692
- {
693
- if (DEBUG) System.out.println("Repeated variables, stack, and branch targets");
694
-
695
- break;
696
- }
697
-
698
- // See if this instruction has been evaluated an excessive number
699
- // of times.
700
- if (evaluationCount >= MAXIMUM_EVALUATION_COUNT)
701
- {
702
- if (DEBUG) System.out.println("Generalizing current context after "+evaluationCount+" evaluations");
703
-
704
- // Continue, but generalize the current context.
705
- // Note that the most recent variable values have to remain
706
- // last in the generalizations, for the sake of the ret
707
- // instruction.
708
- variables.generalize(variablesBefore[instructionOffset], false);
709
- stack.generalize(stacksBefore[instructionOffset]);
710
-
711
- // We'll execute in the generalized context.
712
- generalizedContexts[instructionOffset] = true;
713
- }
714
- else
715
- {
716
- // We'll execute in the current context.
717
- generalizedContexts[instructionOffset] = false;
718
- }
719
- }
720
-
721
- // We'll evaluate this instruction.
722
- evaluationCounts[instructionOffset]++;
723
-
724
- // Remember this instruction's offset with any stored value.
725
- Value storeValue = new InstructionOffsetValue(instructionOffset);
726
- variables.setProducerValue(storeValue);
727
- stack.setProducerValue(storeValue);
728
-
729
- // Reset the trace value.
730
- InstructionOffsetValue traceValue = InstructionOffsetValue.EMPTY_VALUE;
731
-
732
- // Note that the instruction is only volatile.
733
- Instruction instruction = InstructionFactory.create(code, instructionOffset);
734
-
735
- // By default, the next instruction will be the one after this
736
- // instruction.
737
- int nextInstructionOffset = instructionOffset +
738
- instruction.length(instructionOffset);
739
- InstructionOffsetValue nextInstructionOffsetValue = new InstructionOffsetValue(nextInstructionOffset);
740
- branchUnit.resetCalled();
741
- branchUnit.setTraceBranchTargets(nextInstructionOffsetValue);
742
-
743
- if (DEBUG)
744
- {
745
- System.out.println(instruction.toString(instructionOffset));
746
- }
747
-
748
- try
749
- {
750
- // Process the instruction. The processor may modify the
751
- // variables and the stack, and it may call the branch unit
752
- // and the invocation unit.
753
- instruction.accept(clazz,
754
- method,
755
- codeAttribute,
756
- instructionOffset,
757
- processor);
758
- }
759
- catch (RuntimeException ex)
760
- {
761
- System.err.println("Unexpected error while evaluating instruction:");
762
- System.err.println(" Class = ["+clazz.getName()+"]");
763
- System.err.println(" Method = ["+method.getName(clazz)+method.getDescriptor(clazz)+"]");
764
- System.err.println(" Instruction = "+instruction.toString(instructionOffset));
765
- System.err.println(" Exception = ["+ex.getClass().getName()+"] ("+ex.getMessage()+")");
766
-
767
- throw ex;
768
- }
769
-
770
- // Collect the branch targets from the branch unit.
771
- InstructionOffsetValue branchTargets = branchUnit.getTraceBranchTargets();
772
- int branchTargetCount = branchTargets.instructionOffsetCount();
773
-
774
- // Stop tracing.
775
- branchUnit.setTraceBranchTargets(traceValue);
776
-
777
- if (DEBUG)
778
- {
779
- if (branchUnit.wasCalled())
780
- {
781
- System.out.println(" is branching to "+branchTargets);
782
- }
783
- if (branchTargetValues[instructionOffset] != null)
784
- {
785
- System.out.println(" has up till now been branching to "+branchTargetValues[instructionOffset]);
786
- }
787
-
788
- System.out.println(" Vars: "+variables);
789
- System.out.println(" Stack: "+stack);
790
- }
791
-
792
- // Maintain a generalized local variable frame and stack at this
793
- // instruction offset, after execution.
794
- if (evaluationCount == 0)
795
- {
796
- // First time we're passing by this instruction.
797
- if (variablesAfter[instructionOffset] == null)
798
- {
799
- // There's not even a context at this index yet.
800
- variablesAfter[instructionOffset] = new TracedVariables(variables);
801
- stacksAfter[instructionOffset] = new TracedStack(stack);
802
- }
803
- else
804
- {
805
- // Reuse the context objects at this index.
806
- variablesAfter[instructionOffset].initialize(variables);
807
- stacksAfter[instructionOffset].copy(stack);
808
- }
809
- }
810
- else
811
- {
812
- // Merge in the current context.
813
- variablesAfter[instructionOffset].generalize(variables, true);
814
- stacksAfter[instructionOffset].generalize(stack);
815
- }
816
-
817
- // Did the branch unit get called?
818
- if (branchUnit.wasCalled())
819
- {
820
- // Accumulate the branch targets at this offset.
821
- branchTargetValues[instructionOffset] = branchTargetValues[instructionOffset] == null ?
822
- branchTargets :
823
- branchTargetValues[instructionOffset].generalize(branchTargets).instructionOffsetValue();
824
-
825
- // Are there no branch targets at all?
826
- if (branchTargetCount == 0)
827
- {
828
- // Exit from this code block.
829
- break;
830
- }
831
-
832
- // Accumulate the branch origins at the branch target offsets.
833
- InstructionOffsetValue instructionOffsetValue = new InstructionOffsetValue(instructionOffset);
834
- for (int index = 0; index < branchTargetCount; index++)
835
- {
836
- int branchTarget = branchTargets.instructionOffset(index);
837
- branchOriginValues[branchTarget] = branchOriginValues[branchTarget] == null ?
838
- instructionOffsetValue:
839
- branchOriginValues[branchTarget].generalize(instructionOffsetValue).instructionOffsetValue();
840
- }
841
-
842
- // Are there multiple branch targets?
843
- if (branchTargetCount > 1)
844
- {
845
- // Push them on the execution stack and exit from this block.
846
- for (int index = 0; index < branchTargetCount; index++)
847
- {
848
- if (DEBUG) System.out.println("Pushing alternative branch #"+index+" out of "+branchTargetCount+", from ["+instructionOffset+"] to ["+branchTargets.instructionOffset(index)+"]");
849
-
850
- pushInstructionBlock(new TracedVariables(variables),
851
- new TracedStack(stack),
852
- branchTargets.instructionOffset(index));
853
- }
854
-
855
- break;
856
- }
857
-
858
- if (DEBUG) System.out.println("Definite branch from ["+instructionOffset+"] to ["+branchTargets.instructionOffset(0)+"]");
859
- }
860
-
861
- // Just continue with the next instruction.
862
- instructionOffset = branchTargets.instructionOffset(0);
863
-
864
- // Is this a subroutine invocation?
865
- if (instruction.opcode == InstructionConstants.OP_JSR ||
866
- instruction.opcode == InstructionConstants.OP_JSR_W)
867
- {
868
- // Evaluate the subroutine, possibly in another partial
869
- // evaluator.
870
- evaluateSubroutine(clazz,
871
- method,
872
- codeAttribute,
873
- variables,
874
- stack,
875
- instructionOffset,
876
- instructionBlockStack);
877
-
878
- break;
879
- }
880
- else if (instruction.opcode == InstructionConstants.OP_RET)
881
- {
882
- // Let the partial evaluator that has called the subroutine
883
- // handle the evaluation after the return.
884
- pushCallingInstructionBlock(new TracedVariables(variables),
885
- new TracedStack(stack),
886
- instructionOffset);
887
- break;
888
- }
889
- }
890
-
891
- if (DEBUG) System.out.println("Ending processing of instruction block starting at ["+startOffset+"]");
892
- }
893
-
894
-
895
- /**
896
- * Evaluates a subroutine and its exception handlers, starting at the given
897
- * offset and ending at a subroutine return instruction.
898
- */
899
- private void evaluateSubroutine(Clazz clazz,
900
- Method method,
901
- CodeAttribute codeAttribute,
902
- TracedVariables variables,
903
- TracedStack stack,
904
- int subroutineStart,
905
- java.util.Stack instructionBlockStack)
906
- {
907
- int subroutineEnd = branchTargetFinder.subroutineEnd(subroutineStart);
908
-
909
- if (DEBUG) System.out.println("Evaluating subroutine from "+subroutineStart+" to "+subroutineEnd);
910
-
911
- PartialEvaluator subroutinePartialEvaluator = this;
912
-
913
- // Create a temporary partial evaluator if necessary.
914
- if (evaluationCounts[subroutineStart] > 0)
915
- {
916
- if (DEBUG) System.out.println("Creating new partial evaluator for subroutine");
917
-
918
- subroutinePartialEvaluator = new PartialEvaluator(this);
919
-
920
- subroutinePartialEvaluator.initializeArrays(codeAttribute);
921
- }
922
-
923
- // Evaluate the subroutine.
924
- subroutinePartialEvaluator.evaluateInstructionBlockAndExceptionHandlers(clazz,
925
- method,
926
- codeAttribute,
927
- variables,
928
- stack,
929
- subroutineStart,
930
- subroutineEnd);
931
-
932
- // Merge back the temporary partial evaluator if necessary.
933
- if (subroutinePartialEvaluator != this)
934
- {
935
- generalize(subroutinePartialEvaluator, 0, codeAttribute.u4codeLength);
936
- }
937
-
938
- if (DEBUG) System.out.println("Ending subroutine from "+subroutineStart+" to "+subroutineEnd);
939
- }
940
-
941
-
942
- /**
943
- * Generalizes the results of this partial evaluator with those of another
944
- * given partial evaluator, over a given range of instructions.
945
- */
946
- private void generalize(PartialEvaluator other,
947
- int codeStart,
948
- int codeEnd)
949
- {
950
- if (DEBUG) System.out.println("Generalizing with temporary partial evaluation");
951
-
952
- for (int offset = codeStart; offset < codeEnd; offset++)
953
- {
954
- if (other.branchOriginValues[offset] != null)
955
- {
956
- branchOriginValues[offset] = branchOriginValues[offset] == null ?
957
- other.branchOriginValues[offset] :
958
- branchOriginValues[offset].generalize(other.branchOriginValues[offset]).instructionOffsetValue();
959
- }
960
-
961
- if (other.isTraced(offset))
962
- {
963
- if (other.branchTargetValues[offset] != null)
964
- {
965
- branchTargetValues[offset] = branchTargetValues[offset] == null ?
966
- other.branchTargetValues[offset] :
967
- branchTargetValues[offset].generalize(other.branchTargetValues[offset]).instructionOffsetValue();
968
- }
969
-
970
- if (evaluationCounts[offset] == 0)
971
- {
972
- variablesBefore[offset] = other.variablesBefore[offset];
973
- stacksBefore[offset] = other.stacksBefore[offset];
974
- variablesAfter[offset] = other.variablesAfter[offset];
975
- stacksAfter[offset] = other.stacksAfter[offset];
976
- generalizedContexts[offset] = other.generalizedContexts[offset];
977
- evaluationCounts[offset] = other.evaluationCounts[offset];
978
- }
979
- else
980
- {
981
- variablesBefore[offset].generalize(other.variablesBefore[offset], false);
982
- stacksBefore[offset] .generalize(other.stacksBefore[offset]);
983
- variablesAfter[offset] .generalize(other.variablesAfter[offset], false);
984
- stacksAfter[offset] .generalize(other.stacksAfter[offset]);
985
- //generalizedContexts[offset]
986
- evaluationCounts[offset] += other.evaluationCounts[offset];
987
- }
988
- }
989
- }
990
- }
991
-
992
-
993
- /**
994
- * Evaluates the exception handlers covering and targeting the given
995
- * instruction range in the given code.
996
- */
997
- private void evaluateExceptionHandlers(Clazz clazz,
998
- Method method,
999
- CodeAttribute codeAttribute,
1000
- int startOffset,
1001
- int endOffset)
1002
- {
1003
- if (DEBUG) System.out.println("Evaluating exceptions covering ["+startOffset+" -> "+endOffset+"]:");
1004
-
1005
- ExceptionHandlerFilter exceptionEvaluator =
1006
- new ExceptionHandlerFilter(startOffset,
1007
- endOffset,
1008
- this);
1009
-
1010
- // Evaluate the exception catch blocks, until their entry variables
1011
- // have stabilized.
1012
- do
1013
- {
1014
- // Reset the flag to stop evaluating.
1015
- evaluateExceptions = false;
1016
-
1017
- // Evaluate all relevant exception catch blocks once.
1018
- codeAttribute.exceptionsAccept(clazz,
1019
- method,
1020
- startOffset,
1021
- endOffset,
1022
- exceptionEvaluator);
1023
- }
1024
- while (evaluateExceptions);
1025
- }
1026
-
1027
-
1028
- // Implementations for ExceptionInfoVisitor.
1029
-
1030
- public void visitExceptionInfo(Clazz clazz, Method method, CodeAttribute codeAttribute, ExceptionInfo exceptionInfo)
1031
- {
1032
- int startPC = exceptionInfo.u2startPC;
1033
- int endPC = exceptionInfo.u2endPC;
1034
-
1035
- // Do we have to evaluate this exception catch block?
1036
- if (isTraced(startPC, endPC))
1037
- {
1038
- int handlerPC = exceptionInfo.u2handlerPC;
1039
- int catchType = exceptionInfo.u2catchType;
1040
-
1041
- if (DEBUG) System.out.println("Evaluating exception ["+startPC +" -> "+endPC +": "+handlerPC+"]:");
1042
-
1043
- // Reuse the existing variables and stack objects, ensuring the
1044
- // right size.
1045
- TracedVariables variables = new TracedVariables(codeAttribute.u2maxLocals);
1046
- TracedStack stack = new TracedStack(codeAttribute.u2maxStack);
1047
-
1048
- // Initialize the trace values.
1049
- Value storeValue = new InstructionOffsetValue(AT_CATCH_ENTRY);
1050
- variables.setProducerValue(storeValue);
1051
- stack.setProducerValue(storeValue);
1052
-
1053
- // Initialize the variables by generalizing the variables of the
1054
- // try block. Make sure to include the results of the last
1055
- // instruction for preverification.
1056
- generalizeVariables(startPC,
1057
- endPC,
1058
- evaluateAllCode,
1059
- variables);
1060
-
1061
- // Initialize the the stack.
1062
- //stack.push(valueFactory.createReference((ClassConstant)((ProgramClass)clazz).getConstant(exceptionInfo.u2catchType), false));
1063
- String catchClassName = catchType != 0 ?
1064
- clazz.getClassName(catchType) :
1065
- ClassConstants.INTERNAL_NAME_JAVA_LANG_THROWABLE;
1066
-
1067
- Clazz catchClass = catchType != 0 ?
1068
- ((ClassConstant)((ProgramClass)clazz).getConstant(catchType)).referencedClass :
1069
- null;
1070
-
1071
- stack.push(valueFactory.createReferenceValue(catchClassName,
1072
- catchClass,
1073
- false));
1074
-
1075
- int evaluationCount = evaluationCounts[handlerPC];
1076
-
1077
- // Evaluate the instructions, starting at the entry point.
1078
- evaluateInstructionBlock(clazz,
1079
- method,
1080
- codeAttribute,
1081
- variables,
1082
- stack,
1083
- handlerPC);
1084
-
1085
- // Remember to evaluate all exception handlers once more.
1086
- if (!evaluateExceptions)
1087
- {
1088
- evaluateExceptions = evaluationCount < evaluationCounts[handlerPC];
1089
- }
1090
- }
1091
- // else if (evaluateAllCode)
1092
- // {
1093
- // if (DEBUG) System.out.println("No information for partial evaluation of exception ["+startPC +" -> "+endPC +": "+exceptionInfo.u2handlerPC+"] yet");
1094
- //
1095
- // // We don't have any information on the try block yet, but we do
1096
- // // have to evaluate the exception handler.
1097
- // // Remember to evaluate all exception handlers once more.
1098
- // evaluateExceptions = true;
1099
- // }
1100
- else
1101
- {
1102
- if (DEBUG) System.out.println("No information for partial evaluation of exception ["+startPC +" -> "+endPC +": "+exceptionInfo.u2handlerPC+"]");
1103
- }
1104
- }
1105
-
1106
-
1107
- // Small utility methods.
1108
-
1109
- /**
1110
- * Initializes the data structures for the variables, stack, etc.
1111
- */
1112
- private void initializeArrays(CodeAttribute codeAttribute)
1113
- {
1114
- int codeLength = codeAttribute.u4codeLength;
1115
-
1116
- // Create new arrays for storing information at each instruction offset.
1117
- if (variablesAfter.length < codeLength)
1118
- {
1119
- // Create new arrays.
1120
- branchOriginValues = new InstructionOffsetValue[codeLength];
1121
- branchTargetValues = new InstructionOffsetValue[codeLength];
1122
- variablesBefore = new TracedVariables[codeLength];
1123
- stacksBefore = new TracedStack[codeLength];
1124
- variablesAfter = new TracedVariables[codeLength];
1125
- stacksAfter = new TracedStack[codeLength];
1126
- generalizedContexts = new boolean[codeLength];
1127
- evaluationCounts = new int[codeLength];
1128
- }
1129
- else
1130
- {
1131
- // Reset the arrays.
1132
- Arrays.fill(branchOriginValues, null);
1133
- Arrays.fill(branchTargetValues, null);
1134
- Arrays.fill(generalizedContexts, false);
1135
- Arrays.fill(evaluationCounts, 0);
1136
-
1137
- for (int index = 0; index < codeLength; index++)
1138
- {
1139
- if (variablesBefore[index] != null)
1140
- {
1141
- variablesBefore[index].reset(codeAttribute.u2maxLocals);
1142
- }
1143
-
1144
- if (stacksBefore[index] != null)
1145
- {
1146
- stacksBefore[index].reset(codeAttribute.u2maxStack);
1147
- }
1148
-
1149
- if (variablesAfter[index] != null)
1150
- {
1151
- variablesAfter[index].reset(codeAttribute.u2maxLocals);
1152
- }
1153
-
1154
- if (stacksAfter[index] != null)
1155
- {
1156
- stacksAfter[index].reset(codeAttribute.u2maxStack);
1157
- }
1158
- }
1159
- }
1160
- }
1161
-
1162
-
1163
- /**
1164
- * Initializes the data structures for the variables, stack, etc.
1165
- */
1166
- private void initializeParameters(Clazz clazz,
1167
- Method method,
1168
- CodeAttribute codeAttribute,
1169
- TracedVariables variables)
1170
- {
1171
- // Create the method parameters.
1172
- TracedVariables parameters = new TracedVariables(codeAttribute.u2maxLocals);
1173
-
1174
- // Remember this instruction's offset with any stored value.
1175
- Value storeValue = new InstructionOffsetValue(AT_METHOD_ENTRY);
1176
- parameters.setProducerValue(storeValue);
1177
-
1178
- // Initialize the method parameters.
1179
- invocationUnit.enterMethod(clazz, method, parameters);
1180
-
1181
- if (DEBUG)
1182
- {
1183
- System.out.println(" Params: "+parameters);
1184
- }
1185
-
1186
- // Initialize the variables with the parameters.
1187
- variables.initialize(parameters);
1188
-
1189
- // Set the store value of each parameter variable.
1190
- InstructionOffsetValue atMethodEntry = new InstructionOffsetValue(AT_METHOD_ENTRY);
1191
-
1192
- for (int index = 0; index < parameters.size(); index++)
1193
- {
1194
- variables.setProducerValue(index, atMethodEntry);
1195
- }
1196
- }
1197
-
1198
-
1199
- /**
1200
- * Generalize the local variable frames of a block of instructions.
1201
- */
1202
- private void generalizeVariables(int startOffset,
1203
- int endOffset,
1204
- boolean includeAfterLastInstruction,
1205
- TracedVariables generalizedVariables)
1206
- {
1207
- boolean first = true;
1208
- int lastIndex = -1;
1209
-
1210
- // Generalize the variables before each of the instructions in the block.
1211
- for (int index = startOffset; index < endOffset; index++)
1212
- {
1213
- if (isTraced(index))
1214
- {
1215
- TracedVariables tracedVariables = variablesBefore[index];
1216
-
1217
- if (first)
1218
- {
1219
- // Initialize the variables with the first traced local
1220
- // variable frame.
1221
- generalizedVariables.initialize(tracedVariables);
1222
-
1223
- first = false;
1224
- }
1225
- else
1226
- {
1227
- // Generalize the variables with the traced local variable
1228
- // frame. We can't use the return value, because local
1229
- // generalization can be different a couple of times,
1230
- // with the global generalization being the same.
1231
- generalizedVariables.generalize(tracedVariables, false);
1232
- }
1233
-
1234
- lastIndex = index;
1235
- }
1236
- }
1237
-
1238
- // Generalize the variables after the last instruction in the block,
1239
- // if required.
1240
- if (includeAfterLastInstruction &&
1241
- lastIndex >= 0)
1242
- {
1243
- TracedVariables tracedVariables = variablesAfter[lastIndex];
1244
-
1245
- if (first)
1246
- {
1247
- // Initialize the variables with the local variable frame.
1248
- generalizedVariables.initialize(tracedVariables);
1249
- }
1250
- else
1251
- {
1252
- // Generalize the variables with the local variable frame.
1253
- generalizedVariables.generalize(tracedVariables, false);
1254
- }
1255
- }
1256
-
1257
- // Just clear the variables if there aren't any traced instructions
1258
- // in the block.
1259
- if (first)
1260
- {
1261
- generalizedVariables.reset(generalizedVariables.size());
1262
- }
1263
- }
1264
-
1265
-
1266
- private static class MyInstructionBlock
1267
- {
1268
- private TracedVariables variables;
1269
- private TracedStack stack;
1270
- private int startOffset;
1271
-
1272
-
1273
- private MyInstructionBlock(TracedVariables variables,
1274
- TracedStack stack,
1275
- int startOffset)
1276
- {
1277
- this.variables = variables;
1278
- this.stack = stack;
1279
- this.startOffset = startOffset;
1280
- }
1281
- }
1282
- }