clojure 1.0.0

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 (1378) hide show
  1. data/.document +5 -0
  2. data/.gitignore +21 -0
  3. data/LICENSE +23 -0
  4. data/README.rdoc +18 -0
  5. data/Rakefile +18 -0
  6. data/VERSION +1 -0
  7. data/bin/clj +13 -0
  8. data/epl-v10.html +261 -0
  9. data/lib/clojure/asm/AnnotationVisitor.class +0 -0
  10. data/lib/clojure/asm/AnnotationWriter.class +0 -0
  11. data/lib/clojure/asm/Attribute.class +0 -0
  12. data/lib/clojure/asm/ByteVector.class +0 -0
  13. data/lib/clojure/asm/ClassAdapter.class +0 -0
  14. data/lib/clojure/asm/ClassReader.class +0 -0
  15. data/lib/clojure/asm/ClassVisitor.class +0 -0
  16. data/lib/clojure/asm/ClassWriter.class +0 -0
  17. data/lib/clojure/asm/Edge.class +0 -0
  18. data/lib/clojure/asm/FieldVisitor.class +0 -0
  19. data/lib/clojure/asm/FieldWriter.class +0 -0
  20. data/lib/clojure/asm/Frame.class +0 -0
  21. data/lib/clojure/asm/Handler.class +0 -0
  22. data/lib/clojure/asm/Item.class +0 -0
  23. data/lib/clojure/asm/Label.class +0 -0
  24. data/lib/clojure/asm/MethodAdapter.class +0 -0
  25. data/lib/clojure/asm/MethodVisitor.class +0 -0
  26. data/lib/clojure/asm/MethodWriter.class +0 -0
  27. data/lib/clojure/asm/Opcodes.class +0 -0
  28. data/lib/clojure/asm/Type.class +0 -0
  29. data/lib/clojure/asm/commons/AdviceAdapter.class +0 -0
  30. data/lib/clojure/asm/commons/AnalyzerAdapter.class +0 -0
  31. data/lib/clojure/asm/commons/CodeSizeEvaluator.class +0 -0
  32. data/lib/clojure/asm/commons/EmptyVisitor.class +0 -0
  33. data/lib/clojure/asm/commons/GeneratorAdapter.class +0 -0
  34. data/lib/clojure/asm/commons/LocalVariablesSorter.class +0 -0
  35. data/lib/clojure/asm/commons/Method.class +0 -0
  36. data/lib/clojure/asm/commons/SerialVersionUIDAdder$Item.class +0 -0
  37. data/lib/clojure/asm/commons/SerialVersionUIDAdder.class +0 -0
  38. data/lib/clojure/asm/commons/StaticInitMerger.class +0 -0
  39. data/lib/clojure/asm/commons/TableSwitchGenerator.class +0 -0
  40. data/lib/clojure/core$_DOT__DOT___3630.class +0 -0
  41. data/lib/clojure/core$_EQ__EQ___3398.class +0 -0
  42. data/lib/clojure/core$_EQ___3291.class +0 -0
  43. data/lib/clojure/core$_GT__EQ___3390.class +0 -0
  44. data/lib/clojure/core$_GT___3382.class +0 -0
  45. data/lib/clojure/core$_LT__EQ___3374.class +0 -0
  46. data/lib/clojure/core$_LT___3366.class +0 -0
  47. data/lib/clojure/core$_PLUS___3332.class +0 -0
  48. data/lib/clojure/core$_SLASH___3350.class +0 -0
  49. data/lib/clojure/core$_STAR___3341.class +0 -0
  50. data/lib/clojure/core$__GT___3634.class +0 -0
  51. data/lib/clojure/core$___3358.class +0 -0
  52. data/lib/clojure/core$accessor__4294.class +0 -0
  53. data/lib/clojure/core$aclone__4211.class +0 -0
  54. data/lib/clojure/core$add_classpath__4707.class +0 -0
  55. data/lib/clojure/core$add_doc__5153.class +0 -0
  56. data/lib/clojure/core$add_watch__3697.class +0 -0
  57. data/lib/clojure/core$add_watcher__3703$fn__3705.class +0 -0
  58. data/lib/clojure/core$add_watcher__3703.class +0 -0
  59. data/lib/clojure/core$agent__3684.class +0 -0
  60. data/lib/clojure/core$agent_errors__3712.class +0 -0
  61. data/lib/clojure/core$aget__4217.class +0 -0
  62. data/lib/clojure/core$alength__4205.class +0 -0
  63. data/lib/clojure/core$alias__4367.class +0 -0
  64. data/lib/clojure/core$all_ns__4318.class +0 -0
  65. data/lib/clojure/core$alter__3759.class +0 -0
  66. data/lib/clojure/core$alter_meta_BANG___3750.class +0 -0
  67. data/lib/clojure/core$alter_var_root__4827.class +0 -0
  68. data/lib/clojure/core$amap__4725.class +0 -0
  69. data/lib/clojure/core$ancestors__4866$fn__4869.class +0 -0
  70. data/lib/clojure/core$ancestors__4866.class +0 -0
  71. data/lib/clojure/core$and__3308.class +0 -0
  72. data/lib/clojure/core$apply__3243.class +0 -0
  73. data/lib/clojure/core$areduce__4729.class +0 -0
  74. data/lib/clojure/core$array__4040.class +0 -0
  75. data/lib/clojure/core$array_map__4401.class +0 -0
  76. data/lib/clojure/core$aset__4224.class +0 -0
  77. data/lib/clojure/core$aset_boolean__4244.class +0 -0
  78. data/lib/clojure/core$aset_byte__4260.class +0 -0
  79. data/lib/clojure/core$aset_char__4264.class +0 -0
  80. data/lib/clojure/core$aset_double__4252.class +0 -0
  81. data/lib/clojure/core$aset_float__4248.class +0 -0
  82. data/lib/clojure/core$aset_int__4236.class +0 -0
  83. data/lib/clojure/core$aset_long__4240.class +0 -0
  84. data/lib/clojure/core$aset_short__4256.class +0 -0
  85. data/lib/clojure/core$asm_type__5683.class +0 -0
  86. data/lib/clojure/core$assert__4528.class +0 -0
  87. data/lib/clojure/core$assert_args__3659.class +0 -0
  88. data/lib/clojure/core$assoc__3148.class +0 -0
  89. data/lib/clojure/core$assoc_in__5075.class +0 -0
  90. data/lib/clojure/core$associative_QMARK___5102.class +0 -0
  91. data/lib/clojure/core$atom__3728.class +0 -0
  92. data/lib/clojure/core$await1__4014.class +0 -0
  93. data/lib/clojure/core$await__4007$count_down__4009.class +0 -0
  94. data/lib/clojure/core$await__4007.class +0 -0
  95. data/lib/clojure/core$await_for__4017$count_down__4019.class +0 -0
  96. data/lib/clojure/core$await_for__4017.class +0 -0
  97. data/lib/clojure/core$bases__4836.class +0 -0
  98. data/lib/clojure/core$bean__5303$fn__5305$fn__5307.class +0 -0
  99. data/lib/clojure/core$bean__5303$fn__5305.class +0 -0
  100. data/lib/clojure/core$bean__5303$fn__5321$thisfn__5323$fn__5324.class +0 -0
  101. data/lib/clojure/core$bean__5303$fn__5321$thisfn__5323.class +0 -0
  102. data/lib/clojure/core$bean__5303$fn__5321.class +0 -0
  103. data/lib/clojure/core$bean__5303$fn__5330.class +0 -0
  104. data/lib/clojure/core$bean__5303$fn__5333.class +0 -0
  105. data/lib/clojure/core$bean__5303$fn__5336.class +0 -0
  106. data/lib/clojure/core$bean__5303$fn__5339.class +0 -0
  107. data/lib/clojure/core$bean__5303$fn__5342.class +0 -0
  108. data/lib/clojure/core$bean__5303$fn__5346.class +0 -0
  109. data/lib/clojure/core$bean__5303$fn__5349.class +0 -0
  110. data/lib/clojure/core$bean__5303$snapshot__5315$fn__5317.class +0 -0
  111. data/lib/clojure/core$bean__5303$snapshot__5315.class +0 -0
  112. data/lib/clojure/core$bean__5303$v__5312.class +0 -0
  113. data/lib/clojure/core$bean__5303.class +0 -0
  114. data/lib/clojure/core$bigdec__4136.class +0 -0
  115. data/lib/clojure/core$bigint__4133.class +0 -0
  116. data/lib/clojure/core$binding__3672$var_ize__3674.class +0 -0
  117. data/lib/clojure/core$binding__3672.class +0 -0
  118. data/lib/clojure/core$bit_and__3509.class +0 -0
  119. data/lib/clojure/core$bit_and_not__3524.class +0 -0
  120. data/lib/clojure/core$bit_clear__3527.class +0 -0
  121. data/lib/clojure/core$bit_flip__3533.class +0 -0
  122. data/lib/clojure/core$bit_not__3503.class +0 -0
  123. data/lib/clojure/core$bit_or__3515.class +0 -0
  124. data/lib/clojure/core$bit_set__3530.class +0 -0
  125. data/lib/clojure/core$bit_shift_left__3539.class +0 -0
  126. data/lib/clojure/core$bit_shift_right__3542.class +0 -0
  127. data/lib/clojure/core$bit_test__3536.class +0 -0
  128. data/lib/clojure/core$bit_xor__3521.class +0 -0
  129. data/lib/clojure/core$boolean__4101.class +0 -0
  130. data/lib/clojure/core$bound_fn__4679$fn__4681.class +0 -0
  131. data/lib/clojure/core$bound_fn__4679.class +0 -0
  132. data/lib/clojure/core$butlast__3156.class +0 -0
  133. data/lib/clojure/core$byte__4089.class +0 -0
  134. data/lib/clojure/core$cast__3160.class +0 -0
  135. data/lib/clojure/core$char__4095.class +0 -0
  136. data/lib/clojure/core$class_QMARK___4824.class +0 -0
  137. data/lib/clojure/core$class__4043.class +0 -0
  138. data/lib/clojure/core$clear_agent_errors__3715.class +0 -0
  139. data/lib/clojure/core$clojure_version__5781.class +0 -0
  140. data/lib/clojure/core$coll_QMARK___5087.class +0 -0
  141. data/lib/clojure/core$comment__4501.class +0 -0
  142. data/lib/clojure/core$commute__3756.class +0 -0
  143. data/lib/clojure/core$comp__3775$fn__3777.class +0 -0
  144. data/lib/clojure/core$comp__3775.class +0 -0
  145. data/lib/clojure/core$comparator__3965$fn__3967.class +0 -0
  146. data/lib/clojure/core$comparator__3965.class +0 -0
  147. data/lib/clojure/core$compare__3304.class +0 -0
  148. data/lib/clojure/core$compare_and_set_BANG___3738.class +0 -0
  149. data/lib/clojure/core$compile__5065$fn__5067.class +0 -0
  150. data/lib/clojure/core$compile__5065.class +0 -0
  151. data/lib/clojure/core$complement__3551$fn__3553.class +0 -0
  152. data/lib/clojure/core$complement__3551.class +0 -0
  153. data/lib/clojure/core$concat__3255$cat__3269$fn__3270.class +0 -0
  154. data/lib/clojure/core$concat__3255$cat__3269.class +0 -0
  155. data/lib/clojure/core$concat__3255$fn__3257.class +0 -0
  156. data/lib/clojure/core$concat__3255$fn__3261.class +0 -0
  157. data/lib/clojure/core$concat__3255$fn__3265.class +0 -0
  158. data/lib/clojure/core$concat__3255.class +0 -0
  159. data/lib/clojure/core$cond__3237.class +0 -0
  160. data/lib/clojure/core$condp__5146$emit__5148.class +0 -0
  161. data/lib/clojure/core$condp__5146.class +0 -0
  162. data/lib/clojure/core$conj__3121.class +0 -0
  163. data/lib/clojure/core$cons__3107.class +0 -0
  164. data/lib/clojure/core$constantly__3560$fn__3562.class +0 -0
  165. data/lib/clojure/core$constantly__3560.class +0 -0
  166. data/lib/clojure/core$construct_proxy__5265.class +0 -0
  167. data/lib/clojure/core$contains_QMARK___3582.class +0 -0
  168. data/lib/clojure/core$count__3569.class +0 -0
  169. data/lib/clojure/core$counted_QMARK___5111.class +0 -0
  170. data/lib/clojure/core$create_ns__4312.class +0 -0
  171. data/lib/clojure/core$create_struct__4282.class +0 -0
  172. data/lib/clojure/core$ctor_sigs__5565$iter__5567__5569$fn__5570.class +0 -0
  173. data/lib/clojure/core$ctor_sigs__5565$iter__5567__5569.class +0 -0
  174. data/lib/clojure/core$ctor_sigs__5565.class +0 -0
  175. data/lib/clojure/core$cycle__3899$fn__3901.class +0 -0
  176. data/lib/clojure/core$cycle__3899.class +0 -0
  177. data/lib/clojure/core$dec__3422.class +0 -0
  178. data/lib/clojure/core$decimal_QMARK___4121.class +0 -0
  179. data/lib/clojure/core$declare__5118$fn__5120.class +0 -0
  180. data/lib/clojure/core$declare__5118.class +0 -0
  181. data/lib/clojure/core$def_aset__4233.class +0 -0
  182. data/lib/clojure/core$definline__4716.class +0 -0
  183. data/lib/clojure/core$defmacro__3190.class +0 -0
  184. data/lib/clojure/core$defmethod__3641.class +0 -0
  185. data/lib/clojure/core$defmulti__3638.class +0 -0
  186. data/lib/clojure/core$defn__3158.class +0 -0
  187. data/lib/clojure/core$defn___4565.class +0 -0
  188. data/lib/clojure/core$defonce__4973.class +0 -0
  189. data/lib/clojure/core$defstruct__4285.class +0 -0
  190. data/lib/clojure/core$delay_QMARK___3278.class +0 -0
  191. data/lib/clojure/core$delay__3275.class +0 -0
  192. data/lib/clojure/core$deref__3725.class +0 -0
  193. data/lib/clojure/core$derive__4877$tf__4880$fn__4882.class +0 -0
  194. data/lib/clojure/core$derive__4877$tf__4880.class +0 -0
  195. data/lib/clojure/core$derive__4877.class +0 -0
  196. data/lib/clojure/core$descendants__4873.class +0 -0
  197. data/lib/clojure/core$destructure__4413$pb__4415$pmap__4419$fn__4421$fn__4423.class +0 -0
  198. data/lib/clojure/core$destructure__4413$pb__4415$pmap__4419$fn__4421.class +0 -0
  199. data/lib/clojure/core$destructure__4413$pb__4415$pmap__4419$fn__4427.class +0 -0
  200. data/lib/clojure/core$destructure__4413$pb__4415$pmap__4419$fn__4430.class +0 -0
  201. data/lib/clojure/core$destructure__4413$pb__4415$pmap__4419.class +0 -0
  202. data/lib/clojure/core$destructure__4413$pb__4415$pvec__4416.class +0 -0
  203. data/lib/clojure/core$destructure__4413$pb__4415.class +0 -0
  204. data/lib/clojure/core$destructure__4413$process_entry__4436.class +0 -0
  205. data/lib/clojure/core$destructure__4413.class +0 -0
  206. data/lib/clojure/core$disj__3594.class +0 -0
  207. data/lib/clojure/core$dissoc__3589.class +0 -0
  208. data/lib/clojure/core$distinct_QMARK___4901.class +0 -0
  209. data/lib/clojure/core$distinct__4646$step__4648$fn__4649$fn__4652.class +0 -0
  210. data/lib/clojure/core$distinct__4646$step__4648$fn__4649.class +0 -0
  211. data/lib/clojure/core$distinct__4646$step__4648.class +0 -0
  212. data/lib/clojure/core$distinct__4646.class +0 -0
  213. data/lib/clojure/core$doall__4003.class +0 -0
  214. data/lib/clojure/core$doc__4590.class +0 -0
  215. data/lib/clojure/core$dorun__3998.class +0 -0
  216. data/lib/clojure/core$doseq__3993$step__3995.class +0 -0
  217. data/lib/clojure/core$doseq__3993.class +0 -0
  218. data/lib/clojure/core$dosync__4672.class +0 -0
  219. data/lib/clojure/core$dotimes__4025.class +0 -0
  220. data/lib/clojure/core$doto__4187$fn__4189.class +0 -0
  221. data/lib/clojure/core$doto__4187.class +0 -0
  222. data/lib/clojure/core$double__4077.class +0 -0
  223. data/lib/clojure/core$double_array__4742.class +0 -0
  224. data/lib/clojure/core$doubles__4790.class +0 -0
  225. data/lib/clojure/core$drop__3872$fn__3878.class +0 -0
  226. data/lib/clojure/core$drop__3872$step__3874.class +0 -0
  227. data/lib/clojure/core$drop__3872.class +0 -0
  228. data/lib/clojure/core$drop_last__3882$fn__3885.class +0 -0
  229. data/lib/clojure/core$drop_last__3882.class +0 -0
  230. data/lib/clojure/core$drop_while__3889$fn__3895.class +0 -0
  231. data/lib/clojure/core$drop_while__3889$step__3891.class +0 -0
  232. data/lib/clojure/core$drop_while__3889.class +0 -0
  233. data/lib/clojure/core$empty_QMARK___5084.class +0 -0
  234. data/lib/clojure/core$empty__4721.class +0 -0
  235. data/lib/clojure/core$ensure__3765.class +0 -0
  236. data/lib/clojure/core$enumeration_seq__4935.class +0 -0
  237. data/lib/clojure/core$escape_class_name__5576.class +0 -0
  238. data/lib/clojure/core$eval__3990.class +0 -0
  239. data/lib/clojure/core$eval__4760$fn__4762.class +0 -0
  240. data/lib/clojure/core$eval__4760.class +0 -0
  241. data/lib/clojure/core$eval__4772$fn__4774.class +0 -0
  242. data/lib/clojure/core$eval__4772.class +0 -0
  243. data/lib/clojure/core$eval__4784$fn__4786.class +0 -0
  244. data/lib/clojure/core$eval__4784.class +0 -0
  245. data/lib/clojure/core$eval__4796$fn__4798.class +0 -0
  246. data/lib/clojure/core$eval__4796.class +0 -0
  247. data/lib/clojure/core$even_QMARK___3545.class +0 -0
  248. data/lib/clojure/core$every_QMARK___3806.class +0 -0
  249. data/lib/clojure/core$false_QMARK___3202.class +0 -0
  250. data/lib/clojure/core$ffirst__3125.class +0 -0
  251. data/lib/clojure/core$file_seq__4601$fn__4603.class +0 -0
  252. data/lib/clojure/core$file_seq__4601$fn__4606.class +0 -0
  253. data/lib/clojure/core$file_seq__4601.class +0 -0
  254. data/lib/clojure/core$filter__3845$fn__3851.class +0 -0
  255. data/lib/clojure/core$filter__3845$step__3847.class +0 -0
  256. data/lib/clojure/core$filter__3845.class +0 -0
  257. data/lib/clojure/core$filter_key__4306.class +0 -0
  258. data/lib/clojure/core$find__3599.class +0 -0
  259. data/lib/clojure/core$find_doc__4571.class +0 -0
  260. data/lib/clojure/core$find_field__5583$fn__5585.class +0 -0
  261. data/lib/clojure/core$find_field__5583.class +0 -0
  262. data/lib/clojure/core$find_ns__4309.class +0 -0
  263. data/lib/clojure/core$find_var__3678.class +0 -0
  264. data/lib/clojure/core$first__3115.class +0 -0
  265. data/lib/clojure/core$float_QMARK___4124.class +0 -0
  266. data/lib/clojure/core$float__4071.class +0 -0
  267. data/lib/clojure/core$float_array__4735.class +0 -0
  268. data/lib/clojure/core$floats__4766.class +0 -0
  269. data/lib/clojure/core$flush__4156.class +0 -0
  270. data/lib/clojure/core$fn_QMARK___5099.class +0 -0
  271. data/lib/clojure/core$fn__3113.class +0 -0
  272. data/lib/clojure/core$fn__3288.class +0 -0
  273. data/lib/clojure/core$fn__3301.class +0 -0
  274. data/lib/clojure/core$fn__3329.class +0 -0
  275. data/lib/clojure/core$fn__3338.class +0 -0
  276. data/lib/clojure/core$fn__3347.class +0 -0
  277. data/lib/clojure/core$fn__3355.class +0 -0
  278. data/lib/clojure/core$fn__3363.class +0 -0
  279. data/lib/clojure/core$fn__3371.class +0 -0
  280. data/lib/clojure/core$fn__3379.class +0 -0
  281. data/lib/clojure/core$fn__3387.class +0 -0
  282. data/lib/clojure/core$fn__3395.class +0 -0
  283. data/lib/clojure/core$fn__3413.class +0 -0
  284. data/lib/clojure/core$fn__3419.class +0 -0
  285. data/lib/clojure/core$fn__3425.class +0 -0
  286. data/lib/clojure/core$fn__3431.class +0 -0
  287. data/lib/clojure/core$fn__3437.class +0 -0
  288. data/lib/clojure/core$fn__3443.class +0 -0
  289. data/lib/clojure/core$fn__3449.class +0 -0
  290. data/lib/clojure/core$fn__3455.class +0 -0
  291. data/lib/clojure/core$fn__3461.class +0 -0
  292. data/lib/clojure/core$fn__3467.class +0 -0
  293. data/lib/clojure/core$fn__3473.class +0 -0
  294. data/lib/clojure/core$fn__3479.class +0 -0
  295. data/lib/clojure/core$fn__3485.class +0 -0
  296. data/lib/clojure/core$fn__3500.class +0 -0
  297. data/lib/clojure/core$fn__3506.class +0 -0
  298. data/lib/clojure/core$fn__3512.class +0 -0
  299. data/lib/clojure/core$fn__3518.class +0 -0
  300. data/lib/clojure/core$fn__4050.class +0 -0
  301. data/lib/clojure/core$fn__4056.class +0 -0
  302. data/lib/clojure/core$fn__4062.class +0 -0
  303. data/lib/clojure/core$fn__4068.class +0 -0
  304. data/lib/clojure/core$fn__4074.class +0 -0
  305. data/lib/clojure/core$fn__4080.class +0 -0
  306. data/lib/clojure/core$fn__4086.class +0 -0
  307. data/lib/clojure/core$fn__4092.class +0 -0
  308. data/lib/clojure/core$fn__4098.class +0 -0
  309. data/lib/clojure/core$fn__4139.class +0 -0
  310. data/lib/clojure/core$fn__4142.class +0 -0
  311. data/lib/clojure/core$fn__4202.class +0 -0
  312. data/lib/clojure/core$fn__4208.class +0 -0
  313. data/lib/clojure/core$fn__4214.class +0 -0
  314. data/lib/clojure/core$fn__4221.class +0 -0
  315. data/lib/clojure/core$fn__4443$psig__4445.class +0 -0
  316. data/lib/clojure/core$fn__4443.class +0 -0
  317. data/lib/clojure/core$fn__4732.class +0 -0
  318. data/lib/clojure/core$fn__4739.class +0 -0
  319. data/lib/clojure/core$fn__4746.class +0 -0
  320. data/lib/clojure/core$fn__4753.class +0 -0
  321. data/lib/clojure/core$fn__4769.class +0 -0
  322. data/lib/clojure/core$fn__4781.class +0 -0
  323. data/lib/clojure/core$fn__4793.class +0 -0
  324. data/lib/clojure/core$fn__4805.class +0 -0
  325. data/lib/clojure/core$fn__4976.class +0 -0
  326. data/lib/clojure/core$fn__4980.class +0 -0
  327. data/lib/clojure/core$fn__4984.class +0 -0
  328. data/lib/clojure/core$fn__5379$fn__5381.class +0 -0
  329. data/lib/clojure/core$fn__5379.class +0 -0
  330. data/lib/clojure/core$fn__5385.class +0 -0
  331. data/lib/clojure/core$fn__5388.class +0 -0
  332. data/lib/clojure/core$fn__5394.class +0 -0
  333. data/lib/clojure/core$fn__5397.class +0 -0
  334. data/lib/clojure/core$fn__5400.class +0 -0
  335. data/lib/clojure/core$fn__5403.class +0 -0
  336. data/lib/clojure/core$fn__5406$fn__5408.class +0 -0
  337. data/lib/clojure/core$fn__5406.class +0 -0
  338. data/lib/clojure/core$fn__5412$fn__5414.class +0 -0
  339. data/lib/clojure/core$fn__5412.class +0 -0
  340. data/lib/clojure/core$fn__5418.class +0 -0
  341. data/lib/clojure/core$fn__5421.class +0 -0
  342. data/lib/clojure/core$fn__5427.class +0 -0
  343. data/lib/clojure/core$fn__5430.class +0 -0
  344. data/lib/clojure/core$fn__5433.class +0 -0
  345. data/lib/clojure/core$fn__5436.class +0 -0
  346. data/lib/clojure/core$fn__5439.class +0 -0
  347. data/lib/clojure/core$fn__5442.class +0 -0
  348. data/lib/clojure/core$fn__5445.class +0 -0
  349. data/lib/clojure/core$fn__5448.class +0 -0
  350. data/lib/clojure/core$fn__5453$fn__5455.class +0 -0
  351. data/lib/clojure/core$fn__5453.class +0 -0
  352. data/lib/clojure/core$fn__5459.class +0 -0
  353. data/lib/clojure/core$fn__5462.class +0 -0
  354. data/lib/clojure/core$fn__5467.class +0 -0
  355. data/lib/clojure/core$fn__5470.class +0 -0
  356. data/lib/clojure/core$fn__5479.class +0 -0
  357. data/lib/clojure/core$fn__5484$fn__5486.class +0 -0
  358. data/lib/clojure/core$fn__5484.class +0 -0
  359. data/lib/clojure/core$fn__5490.class +0 -0
  360. data/lib/clojure/core$fn__5493.class +0 -0
  361. data/lib/clojure/core$fn__5496.class +0 -0
  362. data/lib/clojure/core$fn__5500.class +0 -0
  363. data/lib/clojure/core$fn__5503.class +0 -0
  364. data/lib/clojure/core$fn__5506.class +0 -0
  365. data/lib/clojure/core$fn__5509.class +0 -0
  366. data/lib/clojure/core$fn__5512.class +0 -0
  367. data/lib/clojure/core$fn__5515.class +0 -0
  368. data/lib/clojure/core$fn__5518.class +0 -0
  369. data/lib/clojure/core$fn__5521.class +0 -0
  370. data/lib/clojure/core$fn__5524.class +0 -0
  371. data/lib/clojure/core$fn__5527.class +0 -0
  372. data/lib/clojure/core$fn__5530.class +0 -0
  373. data/lib/clojure/core$fn__5533.class +0 -0
  374. data/lib/clojure/core$fn__5536.class +0 -0
  375. data/lib/clojure/core$fn__5544.class +0 -0
  376. data/lib/clojure/core$fn__5547.class +0 -0
  377. data/lib/clojure/core$fn__5550.class +0 -0
  378. data/lib/clojure/core$fn__5774$prop__5777.class +0 -0
  379. data/lib/clojure/core$fn__5774.class +0 -0
  380. data/lib/clojure/core$fnext__3129.class +0 -0
  381. data/lib/clojure/core$for__4475$emit_bind__4489$do_mod__4495.class +0 -0
  382. data/lib/clojure/core$for__4475$emit_bind__4489.class +0 -0
  383. data/lib/clojure/core$for__4475$err__4485.class +0 -0
  384. data/lib/clojure/core$for__4475$to_groups__4477$fn__4480.class +0 -0
  385. data/lib/clojure/core$for__4475$to_groups__4477.class +0 -0
  386. data/lib/clojure/core$for__4475.class +0 -0
  387. data/lib/clojure/core$force__3281.class +0 -0
  388. data/lib/clojure/core$format__4938.class +0 -0
  389. data/lib/clojure/core$future__5722.class +0 -0
  390. data/lib/clojure/core$future_call__5702$fn__5704.class +0 -0
  391. data/lib/clojure/core$future_call__5702$fn__5707.class +0 -0
  392. data/lib/clojure/core$future_call__5702$fn__5710.class +0 -0
  393. data/lib/clojure/core$future_call__5702$fn__5713.class +0 -0
  394. data/lib/clojure/core$future_call__5702$fn__5717.class +0 -0
  395. data/lib/clojure/core$future_call__5702.class +0 -0
  396. data/lib/clojure/core$gen_class__5679.class +0 -0
  397. data/lib/clojure/core$gen_interface__5698.class +0 -0
  398. data/lib/clojure/core$generate_class__5596$arg_types__5608.class +0 -0
  399. data/lib/clojure/core$generate_class__5596$emit_forwarding_method__5642.class +0 -0
  400. data/lib/clojure/core$generate_class__5596$emit_get_var__5636.class +0 -0
  401. data/lib/clojure/core$generate_class__5596$emit_unsupported__5639.class +0 -0
  402. data/lib/clojure/core$generate_class__5596$fn__5614.class +0 -0
  403. data/lib/clojure/core$generate_class__5596$fn__5619.class +0 -0
  404. data/lib/clojure/core$generate_class__5596$fn__5624.class +0 -0
  405. data/lib/clojure/core$generate_class__5596$fn__5629$fn__5632.class +0 -0
  406. data/lib/clojure/core$generate_class__5596$fn__5629.class +0 -0
  407. data/lib/clojure/core$generate_class__5596$fn__5651.class +0 -0
  408. data/lib/clojure/core$generate_class__5596$fn__5654.class +0 -0
  409. data/lib/clojure/core$generate_class__5596$fn__5657.class +0 -0
  410. data/lib/clojure/core$generate_class__5596$fn__5664.class +0 -0
  411. data/lib/clojure/core$generate_class__5596$iname__5599.class +0 -0
  412. data/lib/clojure/core$generate_class__5596$to_types__5605.class +0 -0
  413. data/lib/clojure/core$generate_class__5596$totype__5602.class +0 -0
  414. data/lib/clojure/core$generate_class__5596$var_name__5611.class +0 -0
  415. data/lib/clojure/core$generate_class__5596.class +0 -0
  416. data/lib/clojure/core$generate_interface__5689$fn__5692.class +0 -0
  417. data/lib/clojure/core$generate_interface__5689.class +0 -0
  418. data/lib/clojure/core$generate_proxy__5188$fn__5209$fn__5212.class +0 -0
  419. data/lib/clojure/core$generate_proxy__5188$fn__5209.class +0 -0
  420. data/lib/clojure/core$generate_proxy__5188$fn__5237.class +0 -0
  421. data/lib/clojure/core$generate_proxy__5188$fn__5240.class +0 -0
  422. data/lib/clojure/core$generate_proxy__5188$fn__5247.class +0 -0
  423. data/lib/clojure/core$generate_proxy__5188$fn__5251.class +0 -0
  424. data/lib/clojure/core$generate_proxy__5188$gen_bridge__5199.class +0 -0
  425. data/lib/clojure/core$generate_proxy__5188$gen_method__5203.class +0 -0
  426. data/lib/clojure/core$generate_proxy__5188$iname__5190.class +0 -0
  427. data/lib/clojure/core$generate_proxy__5188$iter__5221__5225$fn__5226$iter__5223__5228$fn__5229.class +0 -0
  428. data/lib/clojure/core$generate_proxy__5188$iter__5221__5225$fn__5226$iter__5223__5228.class +0 -0
  429. data/lib/clojure/core$generate_proxy__5188$iter__5221__5225$fn__5226.class +0 -0
  430. data/lib/clojure/core$generate_proxy__5188$iter__5221__5225.class +0 -0
  431. data/lib/clojure/core$generate_proxy__5188$to_types__5196.class +0 -0
  432. data/lib/clojure/core$generate_proxy__5188$totype__5193.class +0 -0
  433. data/lib/clojure/core$generate_proxy__5188.class +0 -0
  434. data/lib/clojure/core$gensym__3233.class +0 -0
  435. data/lib/clojure/core$get__3585.class +0 -0
  436. data/lib/clojure/core$get_in__5071.class +0 -0
  437. data/lib/clojure/core$get_method__3653.class +0 -0
  438. data/lib/clojure/core$get_proxy_class__5259.class +0 -0
  439. data/lib/clojure/core$get_super_and_interfaces__5256.class +0 -0
  440. data/lib/clojure/core$get_validator__3747.class +0 -0
  441. data/lib/clojure/core$group_by_sig__5170$fn__5173.class +0 -0
  442. data/lib/clojure/core$group_by_sig__5170.class +0 -0
  443. data/lib/clojure/core$hash__4710.class +0 -0
  444. data/lib/clojure/core$hash_map__3173.class +0 -0
  445. data/lib/clojure/core$hash_set__3177.class +0 -0
  446. data/lib/clojure/core$identity__3566.class +0 -0
  447. data/lib/clojure/core$if_let__3663.class +0 -0
  448. data/lib/clojure/core$if_not__3284.class +0 -0
  449. data/lib/clojure/core$ifn_QMARK___5096.class +0 -0
  450. data/lib/clojure/core$import__4028.class +0 -0
  451. data/lib/clojure/core$inc__3416.class +0 -0
  452. data/lib/clojure/core$init_proxy__5268.class +0 -0
  453. data/lib/clojure/core$instance_QMARK___3135.class +0 -0
  454. data/lib/clojure/core$int__4059.class +0 -0
  455. data/lib/clojure/core$int_array__4749.class +0 -0
  456. data/lib/clojure/core$integer_QMARK___4107.class +0 -0
  457. data/lib/clojure/core$interleave__4383.class +0 -0
  458. data/lib/clojure/core$intern__5131.class +0 -0
  459. data/lib/clojure/core$interpose__4713.class +0 -0
  460. data/lib/clojure/core$into__4037.class +0 -0
  461. data/lib/clojure/core$into_array__4033.class +0 -0
  462. data/lib/clojure/core$ints__4778.class +0 -0
  463. data/lib/clojure/core$io_BANG___3771.class +0 -0
  464. data/lib/clojure/core$isa_QMARK___4843$fn__4846.class +0 -0
  465. data/lib/clojure/core$isa_QMARK___4843.class +0 -0
  466. data/lib/clojure/core$iterate__3922$fn__3924.class +0 -0
  467. data/lib/clojure/core$iterate__3922.class +0 -0
  468. data/lib/clojure/core$iterator_seq__4932.class +0 -0
  469. data/lib/clojure/core$key__3611.class +0 -0
  470. data/lib/clojure/core$keys__3605.class +0 -0
  471. data/lib/clojure/core$keyword_QMARK___3222.class +0 -0
  472. data/lib/clojure/core$keyword__3229.class +0 -0
  473. data/lib/clojure/core$last__3154.class +0 -0
  474. data/lib/clojure/core$lazy_cat__4466$fn__4468.class +0 -0
  475. data/lib/clojure/core$lazy_cat__4466.class +0 -0
  476. data/lib/clojure/core$lazy_seq__3252.class +0 -0
  477. data/lib/clojure/core$let__3109.class +0 -0
  478. data/lib/clojure/core$let__4440.class +0 -0
  479. data/lib/clojure/core$letfn__5768$fn__5770.class +0 -0
  480. data/lib/clojure/core$letfn__5768.class +0 -0
  481. data/lib/clojure/core$libspec_QMARK___4995.class +0 -0
  482. data/lib/clojure/core$line_seq__3959$fn__3961.class +0 -0
  483. data/lib/clojure/core$line_seq__3959.class +0 -0
  484. data/lib/clojure/core$list_QMARK___5090.class +0 -0
  485. data/lib/clojure/core$list_STAR___3249.class +0 -0
  486. data/lib/clojure/core$load__5058$fn__5061.class +0 -0
  487. data/lib/clojure/core$load__5058.class +0 -0
  488. data/lib/clojure/core$load_all__5019$fn__5021$fn__5023.class +0 -0
  489. data/lib/clojure/core$load_all__5019$fn__5021$fn__5026.class +0 -0
  490. data/lib/clojure/core$load_all__5019$fn__5021.class +0 -0
  491. data/lib/clojure/core$load_all__5019.class +0 -0
  492. data/lib/clojure/core$load_lib__5031.class +0 -0
  493. data/lib/clojure/core$load_libs__5043.class +0 -0
  494. data/lib/clojure/core$load_one__5010$fn__5012.class +0 -0
  495. data/lib/clojure/core$load_one__5010.class +0 -0
  496. data/lib/clojure/core$load_reader__4297.class +0 -0
  497. data/lib/clojure/core$load_string__4300.class +0 -0
  498. data/lib/clojure/core$loaded_libs__5055.class +0 -0
  499. data/lib/clojure/core$locking__3627.class +0 -0
  500. data/lib/clojure/core$long__4065.class +0 -0
  501. data/lib/clojure/core$long_array__4756.class +0 -0
  502. data/lib/clojure/core$longs__4802.class +0 -0
  503. data/lib/clojure/core$loop__3111.class +0 -0
  504. data/lib/clojure/core$loop__4450$fn__4452.class +0 -0
  505. data/lib/clojure/core$loop__4450$fn__4456.class +0 -0
  506. data/lib/clojure/core$loop__4450.class +0 -0
  507. data/lib/clojure/core$macroexpand_1__4276.class +0 -0
  508. data/lib/clojure/core$macroexpand__4279.class +0 -0
  509. data/lib/clojure/core$make_array__4268.class +0 -0
  510. data/lib/clojure/core$make_hierarchy__4830.class +0 -0
  511. data/lib/clojure/core$map_QMARK___3141.class +0 -0
  512. data/lib/clojure/core$map__3815$fn__3817.class +0 -0
  513. data/lib/clojure/core$map__3815$fn__3822.class +0 -0
  514. data/lib/clojure/core$map__3815$fn__3827.class +0 -0
  515. data/lib/clojure/core$map__3815$fn__3838.class +0 -0
  516. data/lib/clojure/core$map__3815$step__3833$fn__3834.class +0 -0
  517. data/lib/clojure/core$map__3815$step__3833.class +0 -0
  518. data/lib/clojure/core$map__3815.class +0 -0
  519. data/lib/clojure/core$mapcat__3842.class +0 -0
  520. data/lib/clojure/core$max__3403.class +0 -0
  521. data/lib/clojure/core$max_key__4628$fn__4632.class +0 -0
  522. data/lib/clojure/core$max_key__4628.class +0 -0
  523. data/lib/clojure/core$memfn__4194.class +0 -0
  524. data/lib/clojure/core$memoize__5138$fn__5140.class +0 -0
  525. data/lib/clojure/core$memoize__5138.class +0 -0
  526. data/lib/clojure/core$merge__3938$fn__3940.class +0 -0
  527. data/lib/clojure/core$merge__3938.class +0 -0
  528. data/lib/clojure/core$merge_with__3945$merge2__3950.class +0 -0
  529. data/lib/clojure/core$merge_with__3945$merge_entry__3947.class +0 -0
  530. data/lib/clojure/core$merge_with__3945.class +0 -0
  531. data/lib/clojure/core$meta__3150.class +0 -0
  532. data/lib/clojure/core$method_sig__5156.class +0 -0
  533. data/lib/clojure/core$methods__3650.class +0 -0
  534. data/lib/clojure/core$min__3408.class +0 -0
  535. data/lib/clojure/core$min_key__4638$fn__4642.class +0 -0
  536. data/lib/clojure/core$min_key__4638.class +0 -0
  537. data/lib/clojure/core$mod__4114.class +0 -0
  538. data/lib/clojure/core$most_specific__5160$fn__5162$fn__5164.class +0 -0
  539. data/lib/clojure/core$most_specific__5160$fn__5162.class +0 -0
  540. data/lib/clojure/core$most_specific__5160.class +0 -0
  541. data/lib/clojure/core$name__3620.class +0 -0
  542. data/lib/clojure/core$namespace__3623.class +0 -0
  543. data/lib/clojure/core$neg_QMARK___3482.class +0 -0
  544. data/lib/clojure/core$newline__4153.class +0 -0
  545. data/lib/clojure/core$next__3117.class +0 -0
  546. data/lib/clojure/core$nfirst__3127.class +0 -0
  547. data/lib/clojure/core$nil_QMARK___3199.class +0 -0
  548. data/lib/clojure/core$nnext__3131.class +0 -0
  549. data/lib/clojure/core$non_private_methods__5553$fn__5556.class +0 -0
  550. data/lib/clojure/core$non_private_methods__5553.class +0 -0
  551. data/lib/clojure/core$not_EQ___3296.class +0 -0
  552. data/lib/clojure/core$not__3208.class +0 -0
  553. data/lib/clojure/core$not_empty__4833.class +0 -0
  554. data/lib/clojure/core$ns__4948$fn__4958.class +0 -0
  555. data/lib/clojure/core$ns__4948$fn__4961.class +0 -0
  556. data/lib/clojure/core$ns__4948$fn__4964.class +0 -0
  557. data/lib/clojure/core$ns__4948$process_reference__4951$fn__4954.class +0 -0
  558. data/lib/clojure/core$ns__4948$process_reference__4951.class +0 -0
  559. data/lib/clojure/core$ns__4948.class +0 -0
  560. data/lib/clojure/core$ns_aliases__4370.class +0 -0
  561. data/lib/clojure/core$ns_imports__4342.class +0 -0
  562. data/lib/clojure/core$ns_interns__4360$fn__4362.class +0 -0
  563. data/lib/clojure/core$ns_interns__4360.class +0 -0
  564. data/lib/clojure/core$ns_map__4328.class +0 -0
  565. data/lib/clojure/core$ns_name__4325.class +0 -0
  566. data/lib/clojure/core$ns_publics__4334$fn__4336.class +0 -0
  567. data/lib/clojure/core$ns_publics__4334.class +0 -0
  568. data/lib/clojure/core$ns_refers__4353$fn__4355.class +0 -0
  569. data/lib/clojure/core$ns_refers__4353.class +0 -0
  570. data/lib/clojure/core$ns_resolve__4395.class +0 -0
  571. data/lib/clojure/core$ns_unalias__4373.class +0 -0
  572. data/lib/clojure/core$ns_unmap__4331.class +0 -0
  573. data/lib/clojure/core$nth__3578.class +0 -0
  574. data/lib/clojure/core$nthnext__4405.class +0 -0
  575. data/lib/clojure/core$num__4053.class +0 -0
  576. data/lib/clojure/core$number_QMARK___4104.class +0 -0
  577. data/lib/clojure/core$odd_QMARK___3548.class +0 -0
  578. data/lib/clojure/core$or__3314.class +0 -0
  579. data/lib/clojure/core$overload_name__5579.class +0 -0
  580. data/lib/clojure/core$parents__4861.class +0 -0
  581. data/lib/clojure/core$partial__3781$fn__3783.class +0 -0
  582. data/lib/clojure/core$partial__3781$fn__3787.class +0 -0
  583. data/lib/clojure/core$partial__3781$fn__3791.class +0 -0
  584. data/lib/clojure/core$partial__3781$fn__3795.class +0 -0
  585. data/lib/clojure/core$partial__3781.class +0 -0
  586. data/lib/clojure/core$partition__3982$fn__3985.class +0 -0
  587. data/lib/clojure/core$partition__3982.class +0 -0
  588. data/lib/clojure/core$pcalls__5754$fn__5756.class +0 -0
  589. data/lib/clojure/core$pcalls__5754.class +0 -0
  590. data/lib/clojure/core$peek__3572.class +0 -0
  591. data/lib/clojure/core$pmap__5727$fn__5729$fn__5731.class +0 -0
  592. data/lib/clojure/core$pmap__5727$fn__5729.class +0 -0
  593. data/lib/clojure/core$pmap__5727$fn__5749.class +0 -0
  594. data/lib/clojure/core$pmap__5727$step__5736$fn__5738.class +0 -0
  595. data/lib/clojure/core$pmap__5727$step__5736.class +0 -0
  596. data/lib/clojure/core$pmap__5727$step__5744$fn__5745.class +0 -0
  597. data/lib/clojure/core$pmap__5727$step__5744.class +0 -0
  598. data/lib/clojure/core$pmap__5727.class +0 -0
  599. data/lib/clojure/core$pop__3575.class +0 -0
  600. data/lib/clojure/core$pos_QMARK___3476.class +0 -0
  601. data/lib/clojure/core$pr__4148.class +0 -0
  602. data/lib/clojure/core$pr_on__4145.class +0 -0
  603. data/lib/clojure/core$pr_str__4512.class +0 -0
  604. data/lib/clojure/core$prefer_method__3647.class +0 -0
  605. data/lib/clojure/core$prefers__3656.class +0 -0
  606. data/lib/clojure/core$prependss__5001.class +0 -0
  607. data/lib/clojure/core$print__4162.class +0 -0
  608. data/lib/clojure/core$print_ctor__5391.class +0 -0
  609. data/lib/clojure/core$print_doc__4568.class +0 -0
  610. data/lib/clojure/core$print_map__5473$fn__5475.class +0 -0
  611. data/lib/clojure/core$print_map__5473.class +0 -0
  612. data/lib/clojure/core$print_meta__5370.class +0 -0
  613. data/lib/clojure/core$print_namespace_doc__4587.class +0 -0
  614. data/lib/clojure/core$print_sequential__5354.class +0 -0
  615. data/lib/clojure/core$print_simple__5424.class +0 -0
  616. data/lib/clojure/core$print_special_doc__4584.class +0 -0
  617. data/lib/clojure/core$print_str__4520.class +0 -0
  618. data/lib/clojure/core$printf__4941.class +0 -0
  619. data/lib/clojure/core$println__4165.class +0 -0
  620. data/lib/clojure/core$println_str__4524.class +0 -0
  621. data/lib/clojure/core$prn__4159.class +0 -0
  622. data/lib/clojure/core$prn_str__4516.class +0 -0
  623. data/lib/clojure/core$proxy__5279$fn__5282.class +0 -0
  624. data/lib/clojure/core$proxy__5279$fn__5287$fn__5291.class +0 -0
  625. data/lib/clojure/core$proxy__5279$fn__5287.class +0 -0
  626. data/lib/clojure/core$proxy__5279.class +0 -0
  627. data/lib/clojure/core$proxy_call_with_super__5297.class +0 -0
  628. data/lib/clojure/core$proxy_mappings__5274.class +0 -0
  629. data/lib/clojure/core$proxy_name__5179$fn__5181.class +0 -0
  630. data/lib/clojure/core$proxy_name__5179.class +0 -0
  631. data/lib/clojure/core$proxy_super__5300.class +0 -0
  632. data/lib/clojure/core$pvalues__5761$fn__5763.class +0 -0
  633. data/lib/clojure/core$pvalues__5761.class +0 -0
  634. data/lib/clojure/core$quot__3491.class +0 -0
  635. data/lib/clojure/core$rand__4558.class +0 -0
  636. data/lib/clojure/core$rand_int__4562.class +0 -0
  637. data/lib/clojure/core$range__3928.class +0 -0
  638. data/lib/clojure/core$ratio_QMARK___4118.class +0 -0
  639. data/lib/clojure/core$rational_QMARK___4128.class +0 -0
  640. data/lib/clojure/core$rationalize__3497.class +0 -0
  641. data/lib/clojure/core$re_find__4554.class +0 -0
  642. data/lib/clojure/core$re_groups__4540.class +0 -0
  643. data/lib/clojure/core$re_matcher__4537.class +0 -0
  644. data/lib/clojure/core$re_matches__4551.class +0 -0
  645. data/lib/clojure/core$re_pattern__4534.class +0 -0
  646. data/lib/clojure/core$re_seq__4543$step__4545$fn__4546.class +0 -0
  647. data/lib/clojure/core$re_seq__4543$step__4545.class +0 -0
  648. data/lib/clojure/core$re_seq__4543.class +0 -0
  649. data/lib/clojure/core$read__4168.class +0 -0
  650. data/lib/clojure/core$read_line__4174.class +0 -0
  651. data/lib/clojure/core$read_string__4177.class +0 -0
  652. data/lib/clojure/core$reduce__3319$fn__3322.class +0 -0
  653. data/lib/clojure/core$reduce__3319.class +0 -0
  654. data/lib/clojure/core$ref__3721.class +0 -0
  655. data/lib/clojure/core$ref_set__3762.class +0 -0
  656. data/lib/clojure/core$refer__4345.class +0 -0
  657. data/lib/clojure/core$refer_clojure__4969.class +0 -0
  658. data/lib/clojure/core$release_pending_sends__3694.class +0 -0
  659. data/lib/clojure/core$rem__3494.class +0 -0
  660. data/lib/clojure/core$remove__3855.class +0 -0
  661. data/lib/clojure/core$remove_method__3644.class +0 -0
  662. data/lib/clojure/core$remove_ns__4315.class +0 -0
  663. data/lib/clojure/core$remove_watch__3700.class +0 -0
  664. data/lib/clojure/core$remove_watcher__3709.class +0 -0
  665. data/lib/clojure/core$repeat__3912$fn__3914.class +0 -0
  666. data/lib/clojure/core$repeat__3912.class +0 -0
  667. data/lib/clojure/core$repeatedly__4701$fn__4703.class +0 -0
  668. data/lib/clojure/core$repeatedly__4701.class +0 -0
  669. data/lib/clojure/core$replace__4661$fn__4663.class +0 -0
  670. data/lib/clojure/core$replace__4661$fn__4667.class +0 -0
  671. data/lib/clojure/core$replace__4661.class +0 -0
  672. data/lib/clojure/core$replicate__3919.class +0 -0
  673. data/lib/clojure/core$require__5049.class +0 -0
  674. data/lib/clojure/core$reset_BANG___3741.class +0 -0
  675. data/lib/clojure/core$reset_meta_BANG___3753.class +0 -0
  676. data/lib/clojure/core$resolve__4398.class +0 -0
  677. data/lib/clojure/core$rest__3119.class +0 -0
  678. data/lib/clojure/core$resultset_seq__4911$fn__4913.class +0 -0
  679. data/lib/clojure/core$resultset_seq__4911$fn__4916.class +0 -0
  680. data/lib/clojure/core$resultset_seq__4911$row_values__4919$fn__4921.class +0 -0
  681. data/lib/clojure/core$resultset_seq__4911$row_values__4919.class +0 -0
  682. data/lib/clojure/core$resultset_seq__4911$thisfn__4925$fn__4926.class +0 -0
  683. data/lib/clojure/core$resultset_seq__4911$thisfn__4925.class +0 -0
  684. data/lib/clojure/core$resultset_seq__4911.class +0 -0
  685. data/lib/clojure/core$reverse__3326.class +0 -0
  686. data/lib/clojure/core$reversible_QMARK___5114.class +0 -0
  687. data/lib/clojure/core$root_directory__5007.class +0 -0
  688. data/lib/clojure/core$root_resource__5004.class +0 -0
  689. data/lib/clojure/core$rseq__3617.class +0 -0
  690. data/lib/clojure/core$rsubseq__4693.class +0 -0
  691. data/lib/clojure/core$second__3123.class +0 -0
  692. data/lib/clojure/core$select_keys__3602.class +0 -0
  693. data/lib/clojure/core$send__3688.class +0 -0
  694. data/lib/clojure/core$send_off__3691.class +0 -0
  695. data/lib/clojure/core$seq_QMARK___3137.class +0 -0
  696. data/lib/clojure/core$seq__3133.class +0 -0
  697. data/lib/clojure/core$seque__4808$drain__4818$fn__4819.class +0 -0
  698. data/lib/clojure/core$seque__4808$drain__4818.class +0 -0
  699. data/lib/clojure/core$seque__4808$fill__4811.class +0 -0
  700. data/lib/clojure/core$seque__4808.class +0 -0
  701. data/lib/clojure/core$sequence__3802.class +0 -0
  702. data/lib/clojure/core$sequential_QMARK___5105.class +0 -0
  703. data/lib/clojure/core$set_QMARK___5093.class +0 -0
  704. data/lib/clojure/core$set__4303.class +0 -0
  705. data/lib/clojure/core$set_validator_BANG___3744.class +0 -0
  706. data/lib/clojure/core$setup_reference__3681.class +0 -0
  707. data/lib/clojure/core$short__4083.class +0 -0
  708. data/lib/clojure/core$shutdown_agents__3718.class +0 -0
  709. data/lib/clojure/core$sigs__3145.class +0 -0
  710. data/lib/clojure/core$slurp__4619.class +0 -0
  711. data/lib/clojure/core$some__3810.class +0 -0
  712. data/lib/clojure/core$sort__3971.class +0 -0
  713. data/lib/clojure/core$sort_by__3975$fn__3978.class +0 -0
  714. data/lib/clojure/core$sort_by__3975.class +0 -0
  715. data/lib/clojure/core$sorted_QMARK___5108.class +0 -0
  716. data/lib/clojure/core$sorted_map__3181.class +0 -0
  717. data/lib/clojure/core$sorted_map_by__3187.class +0 -0
  718. data/lib/clojure/core$sorted_set__3184.class +0 -0
  719. data/lib/clojure/core$special_form_anchor__4578.class +0 -0
  720. data/lib/clojure/core$special_symbol_QMARK___4613.class +0 -0
  721. data/lib/clojure/core$split_at__3906.class +0 -0
  722. data/lib/clojure/core$split_with__3909.class +0 -0
  723. data/lib/clojure/core$spread__3240.class +0 -0
  724. data/lib/clojure/core$str__3211$fn__3215.class +0 -0
  725. data/lib/clojure/core$str__3211.class +0 -0
  726. data/lib/clojure/core$stream_QMARK___3799.class +0 -0
  727. data/lib/clojure/core$string_QMARK___3139.class +0 -0
  728. data/lib/clojure/core$struct__4291.class +0 -0
  729. data/lib/clojure/core$struct_map__4288.class +0 -0
  730. data/lib/clojure/core$subs__4622.class +0 -0
  731. data/lib/clojure/core$subseq__4685.class +0 -0
  732. data/lib/clojure/core$subvec__4180.class +0 -0
  733. data/lib/clojure/core$supers__4839.class +0 -0
  734. data/lib/clojure/core$swap_BANG___3732.class +0 -0
  735. data/lib/clojure/core$symbol_QMARK___3219.class +0 -0
  736. data/lib/clojure/core$symbol__3225.class +0 -0
  737. data/lib/clojure/core$sync__3768.class +0 -0
  738. data/lib/clojure/core$syntax_symbol_anchor__4581.class +0 -0
  739. data/lib/clojure/core$take__3858$fn__3860.class +0 -0
  740. data/lib/clojure/core$take__3858.class +0 -0
  741. data/lib/clojure/core$take_nth__4376$fn__4378.class +0 -0
  742. data/lib/clojure/core$take_nth__4376.class +0 -0
  743. data/lib/clojure/core$take_while__3865$fn__3867.class +0 -0
  744. data/lib/clojure/core$take_while__3865.class +0 -0
  745. data/lib/clojure/core$test__4531.class +0 -0
  746. data/lib/clojure/core$the_class__5590.class +0 -0
  747. data/lib/clojure/core$the_ns__4321.class +0 -0
  748. data/lib/clojure/core$throw_if__4989$boring_QMARK___4991.class +0 -0
  749. data/lib/clojure/core$throw_if__4989.class +0 -0
  750. data/lib/clojure/core$time__4199.class +0 -0
  751. data/lib/clojure/core$to_array_2d__4273.class +0 -0
  752. data/lib/clojure/core$to_array__3163.class +0 -0
  753. data/lib/clojure/core$trampoline__5124$fn__5127.class +0 -0
  754. data/lib/clojure/core$trampoline__5124.class +0 -0
  755. data/lib/clojure/core$tree_seq__4593$walk__4595$fn__4596.class +0 -0
  756. data/lib/clojure/core$tree_seq__4593$walk__4595.class +0 -0
  757. data/lib/clojure/core$tree_seq__4593.class +0 -0
  758. data/lib/clojure/core$true_QMARK___3205.class +0 -0
  759. data/lib/clojure/core$type__4046.class +0 -0
  760. data/lib/clojure/core$unchecked_add__3446.class +0 -0
  761. data/lib/clojure/core$unchecked_dec__3434.class +0 -0
  762. data/lib/clojure/core$unchecked_divide__3464.class +0 -0
  763. data/lib/clojure/core$unchecked_inc__3428.class +0 -0
  764. data/lib/clojure/core$unchecked_multiply__3458.class +0 -0
  765. data/lib/clojure/core$unchecked_negate__3440.class +0 -0
  766. data/lib/clojure/core$unchecked_remainder__3470.class +0 -0
  767. data/lib/clojure/core$unchecked_subtract__3452.class +0 -0
  768. data/lib/clojure/core$underive__4891$tf__4894$fn__4896.class +0 -0
  769. data/lib/clojure/core$underive__4891$tf__4894.class +0 -0
  770. data/lib/clojure/core$underive__4891.class +0 -0
  771. data/lib/clojure/core$update_in__5080.class +0 -0
  772. data/lib/clojure/core$update_proxy__5271.class +0 -0
  773. data/lib/clojure/core$use__5052.class +0 -0
  774. data/lib/clojure/core$val__3614.class +0 -0
  775. data/lib/clojure/core$vals__3608.class +0 -0
  776. data/lib/clojure/core$var_QMARK___4616.class +0 -0
  777. data/lib/clojure/core$var_get__4386.class +0 -0
  778. data/lib/clojure/core$var_set__4389.class +0 -0
  779. data/lib/clojure/core$vary_meta__3246.class +0 -0
  780. data/lib/clojure/core$vec__3170.class +0 -0
  781. data/lib/clojure/core$vector_QMARK___3143.class +0 -0
  782. data/lib/clojure/core$vector__3166.class +0 -0
  783. data/lib/clojure/core$when__3193.class +0 -0
  784. data/lib/clojure/core$when_first__4461.class +0 -0
  785. data/lib/clojure/core$when_let__3669.class +0 -0
  786. data/lib/clojure/core$when_not__3196.class +0 -0
  787. data/lib/clojure/core$while__5135.class +0 -0
  788. data/lib/clojure/core$with_in_str__4509.class +0 -0
  789. data/lib/clojure/core$with_local_vars__4392.class +0 -0
  790. data/lib/clojure/core$with_meta__3152.class +0 -0
  791. data/lib/clojure/core$with_open__4184.class +0 -0
  792. data/lib/clojure/core$with_out_str__4505.class +0 -0
  793. data/lib/clojure/core$with_precision__4675.class +0 -0
  794. data/lib/clojure/core$xml_seq__4610.class +0 -0
  795. data/lib/clojure/core$zero_QMARK___3488.class +0 -0
  796. data/lib/clojure/core$zipmap__3955.class +0 -0
  797. data/lib/clojure/core.clj +4121 -0
  798. data/lib/clojure/core__init.class +0 -0
  799. data/lib/clojure/core_print.clj +317 -0
  800. data/lib/clojure/core_print__init.class +0 -0
  801. data/lib/clojure/core_proxy.clj +394 -0
  802. data/lib/clojure/core_proxy__init.class +0 -0
  803. data/lib/clojure/genclass.clj +683 -0
  804. data/lib/clojure/genclass__init.class +0 -0
  805. data/lib/clojure/inspector$atom_QMARK___6181.class +0 -0
  806. data/lib/clojure/inspector$collection_tag__6184.class +0 -0
  807. data/lib/clojure/inspector$fn__6187.class +0 -0
  808. data/lib/clojure/inspector$fn__6190.class +0 -0
  809. data/lib/clojure/inspector$fn__6193.class +0 -0
  810. data/lib/clojure/inspector$fn__6196.class +0 -0
  811. data/lib/clojure/inspector$fn__6199.class +0 -0
  812. data/lib/clojure/inspector$fn__6202.class +0 -0
  813. data/lib/clojure/inspector$fn__6205.class +0 -0
  814. data/lib/clojure/inspector$fn__6208.class +0 -0
  815. data/lib/clojure/inspector$fn__6211.class +0 -0
  816. data/lib/clojure/inspector$fn__6278$fn__6280.class +0 -0
  817. data/lib/clojure/inspector$fn__6278$fn__6283.class +0 -0
  818. data/lib/clojure/inspector$fn__6278.class +0 -0
  819. data/lib/clojure/inspector$fn__6287$fn__6289.class +0 -0
  820. data/lib/clojure/inspector$fn__6287$fn__6292.class +0 -0
  821. data/lib/clojure/inspector$fn__6287.class +0 -0
  822. data/lib/clojure/inspector$fn__6296$fn__6299.class +0 -0
  823. data/lib/clojure/inspector$fn__6296$fn__6303.class +0 -0
  824. data/lib/clojure/inspector$fn__6296$fn__6306.class +0 -0
  825. data/lib/clojure/inspector$fn__6296.class +0 -0
  826. data/lib/clojure/inspector$fn__6324$fn__6326.class +0 -0
  827. data/lib/clojure/inspector$fn__6324$fn__6329.class +0 -0
  828. data/lib/clojure/inspector$fn__6324$fn__6332.class +0 -0
  829. data/lib/clojure/inspector$fn__6324.class +0 -0
  830. data/lib/clojure/inspector$inspect__6337.class +0 -0
  831. data/lib/clojure/inspector$inspect_table__6274.class +0 -0
  832. data/lib/clojure/inspector$inspect_tree__6270.class +0 -0
  833. data/lib/clojure/inspector$list_model__6310$fn__6313.class +0 -0
  834. data/lib/clojure/inspector$list_model__6310$fn__6316.class +0 -0
  835. data/lib/clojure/inspector$list_model__6310$fn__6319.class +0 -0
  836. data/lib/clojure/inspector$list_model__6310.class +0 -0
  837. data/lib/clojure/inspector$old_table_model__6242$fn__6244.class +0 -0
  838. data/lib/clojure/inspector$old_table_model__6242$fn__6247.class +0 -0
  839. data/lib/clojure/inspector$old_table_model__6242$fn__6250.class +0 -0
  840. data/lib/clojure/inspector$old_table_model__6242$fn__6253.class +0 -0
  841. data/lib/clojure/inspector$old_table_model__6242$fn__6256.class +0 -0
  842. data/lib/clojure/inspector$old_table_model__6242$fn__6259.class +0 -0
  843. data/lib/clojure/inspector$old_table_model__6242$fn__6262.class +0 -0
  844. data/lib/clojure/inspector$old_table_model__6242$fn__6265.class +0 -0
  845. data/lib/clojure/inspector$old_table_model__6242.class +0 -0
  846. data/lib/clojure/inspector$tree_model__6214$fn__6216.class +0 -0
  847. data/lib/clojure/inspector$tree_model__6214$fn__6219.class +0 -0
  848. data/lib/clojure/inspector$tree_model__6214$fn__6222.class +0 -0
  849. data/lib/clojure/inspector$tree_model__6214$fn__6225.class +0 -0
  850. data/lib/clojure/inspector$tree_model__6214$fn__6228.class +0 -0
  851. data/lib/clojure/inspector$tree_model__6214$fn__6231.class +0 -0
  852. data/lib/clojure/inspector$tree_model__6214$fn__6234.class +0 -0
  853. data/lib/clojure/inspector$tree_model__6214$fn__6237.class +0 -0
  854. data/lib/clojure/inspector$tree_model__6214.class +0 -0
  855. data/lib/clojure/inspector.clj +180 -0
  856. data/lib/clojure/inspector__init.class +0 -0
  857. data/lib/clojure/lang/AFn.class +0 -0
  858. data/lib/clojure/lang/AFunction.class +0 -0
  859. data/lib/clojure/lang/AMapEntry.class +0 -0
  860. data/lib/clojure/lang/APersistentMap$1.class +0 -0
  861. data/lib/clojure/lang/APersistentMap$2$1.class +0 -0
  862. data/lib/clojure/lang/APersistentMap$2.class +0 -0
  863. data/lib/clojure/lang/APersistentMap$3$1.class +0 -0
  864. data/lib/clojure/lang/APersistentMap$3.class +0 -0
  865. data/lib/clojure/lang/APersistentMap$KeySeq.class +0 -0
  866. data/lib/clojure/lang/APersistentMap$ValSeq.class +0 -0
  867. data/lib/clojure/lang/APersistentMap.class +0 -0
  868. data/lib/clojure/lang/APersistentSet.class +0 -0
  869. data/lib/clojure/lang/APersistentVector$1.class +0 -0
  870. data/lib/clojure/lang/APersistentVector$2.class +0 -0
  871. data/lib/clojure/lang/APersistentVector$RSeq.class +0 -0
  872. data/lib/clojure/lang/APersistentVector$Seq.class +0 -0
  873. data/lib/clojure/lang/APersistentVector$Src.class +0 -0
  874. data/lib/clojure/lang/APersistentVector$SubVector.class +0 -0
  875. data/lib/clojure/lang/APersistentVector.class +0 -0
  876. data/lib/clojure/lang/ARef.class +0 -0
  877. data/lib/clojure/lang/AReference.class +0 -0
  878. data/lib/clojure/lang/ASeq$Src.class +0 -0
  879. data/lib/clojure/lang/ASeq.class +0 -0
  880. data/lib/clojure/lang/Agent$Action.class +0 -0
  881. data/lib/clojure/lang/Agent.class +0 -0
  882. data/lib/clojure/lang/ArraySeq$ArraySeq_double.class +0 -0
  883. data/lib/clojure/lang/ArraySeq$ArraySeq_float.class +0 -0
  884. data/lib/clojure/lang/ArraySeq$ArraySeq_int.class +0 -0
  885. data/lib/clojure/lang/ArraySeq$ArraySeq_long.class +0 -0
  886. data/lib/clojure/lang/ArraySeq.class +0 -0
  887. data/lib/clojure/lang/ArrayStream$ArrayStream_boolean.class +0 -0
  888. data/lib/clojure/lang/ArrayStream$ArrayStream_byte.class +0 -0
  889. data/lib/clojure/lang/ArrayStream$ArrayStream_char.class +0 -0
  890. data/lib/clojure/lang/ArrayStream$ArrayStream_double.class +0 -0
  891. data/lib/clojure/lang/ArrayStream$ArrayStream_float.class +0 -0
  892. data/lib/clojure/lang/ArrayStream$ArrayStream_int.class +0 -0
  893. data/lib/clojure/lang/ArrayStream$ArrayStream_long.class +0 -0
  894. data/lib/clojure/lang/ArrayStream$ArrayStream_short.class +0 -0
  895. data/lib/clojure/lang/ArrayStream.class +0 -0
  896. data/lib/clojure/lang/Associative.class +0 -0
  897. data/lib/clojure/lang/Atom.class +0 -0
  898. data/lib/clojure/lang/Binding.class +0 -0
  899. data/lib/clojure/lang/Box.class +0 -0
  900. data/lib/clojure/lang/Compile.class +0 -0
  901. data/lib/clojure/lang/Compiler$1.class +0 -0
  902. data/lib/clojure/lang/Compiler$AssignExpr$Parser.class +0 -0
  903. data/lib/clojure/lang/Compiler$AssignExpr.class +0 -0
  904. data/lib/clojure/lang/Compiler$AssignableExpr.class +0 -0
  905. data/lib/clojure/lang/Compiler$BindingInit.class +0 -0
  906. data/lib/clojure/lang/Compiler$BodyExpr$Parser.class +0 -0
  907. data/lib/clojure/lang/Compiler$BodyExpr.class +0 -0
  908. data/lib/clojure/lang/Compiler$BooleanExpr.class +0 -0
  909. data/lib/clojure/lang/Compiler$C.class +0 -0
  910. data/lib/clojure/lang/Compiler$CompilerException.class +0 -0
  911. data/lib/clojure/lang/Compiler$ConstantExpr$Parser.class +0 -0
  912. data/lib/clojure/lang/Compiler$ConstantExpr.class +0 -0
  913. data/lib/clojure/lang/Compiler$DefExpr$Parser.class +0 -0
  914. data/lib/clojure/lang/Compiler$DefExpr.class +0 -0
  915. data/lib/clojure/lang/Compiler$EmptyExpr.class +0 -0
  916. data/lib/clojure/lang/Compiler$Expr.class +0 -0
  917. data/lib/clojure/lang/Compiler$FieldExpr.class +0 -0
  918. data/lib/clojure/lang/Compiler$FnExpr.class +0 -0
  919. data/lib/clojure/lang/Compiler$FnLoaderThunk.class +0 -0
  920. data/lib/clojure/lang/Compiler$FnMethod.class +0 -0
  921. data/lib/clojure/lang/Compiler$HostExpr$Parser.class +0 -0
  922. data/lib/clojure/lang/Compiler$HostExpr.class +0 -0
  923. data/lib/clojure/lang/Compiler$IParser.class +0 -0
  924. data/lib/clojure/lang/Compiler$IfExpr$Parser.class +0 -0
  925. data/lib/clojure/lang/Compiler$IfExpr.class +0 -0
  926. data/lib/clojure/lang/Compiler$InstanceFieldExpr.class +0 -0
  927. data/lib/clojure/lang/Compiler$InstanceMethodExpr.class +0 -0
  928. data/lib/clojure/lang/Compiler$InvokeExpr.class +0 -0
  929. data/lib/clojure/lang/Compiler$KeywordExpr.class +0 -0
  930. data/lib/clojure/lang/Compiler$LetExpr$Parser.class +0 -0
  931. data/lib/clojure/lang/Compiler$LetExpr.class +0 -0
  932. data/lib/clojure/lang/Compiler$LetFnExpr$Parser.class +0 -0
  933. data/lib/clojure/lang/Compiler$LetFnExpr.class +0 -0
  934. data/lib/clojure/lang/Compiler$ListExpr.class +0 -0
  935. data/lib/clojure/lang/Compiler$LiteralExpr.class +0 -0
  936. data/lib/clojure/lang/Compiler$LocalBinding.class +0 -0
  937. data/lib/clojure/lang/Compiler$LocalBindingExpr.class +0 -0
  938. data/lib/clojure/lang/Compiler$MapExpr.class +0 -0
  939. data/lib/clojure/lang/Compiler$MaybePrimitiveExpr.class +0 -0
  940. data/lib/clojure/lang/Compiler$MetaExpr.class +0 -0
  941. data/lib/clojure/lang/Compiler$MethodExpr.class +0 -0
  942. data/lib/clojure/lang/Compiler$MonitorEnterExpr$Parser.class +0 -0
  943. data/lib/clojure/lang/Compiler$MonitorEnterExpr.class +0 -0
  944. data/lib/clojure/lang/Compiler$MonitorExitExpr$Parser.class +0 -0
  945. data/lib/clojure/lang/Compiler$MonitorExitExpr.class +0 -0
  946. data/lib/clojure/lang/Compiler$NewExpr$Parser.class +0 -0
  947. data/lib/clojure/lang/Compiler$NewExpr.class +0 -0
  948. data/lib/clojure/lang/Compiler$NilExpr.class +0 -0
  949. data/lib/clojure/lang/Compiler$PSTATE.class +0 -0
  950. data/lib/clojure/lang/Compiler$RecurExpr$Parser.class +0 -0
  951. data/lib/clojure/lang/Compiler$RecurExpr.class +0 -0
  952. data/lib/clojure/lang/Compiler$SetExpr.class +0 -0
  953. data/lib/clojure/lang/Compiler$SourceDebugExtensionAttribute.class +0 -0
  954. data/lib/clojure/lang/Compiler$StaticFieldExpr.class +0 -0
  955. data/lib/clojure/lang/Compiler$StaticMethodExpr.class +0 -0
  956. data/lib/clojure/lang/Compiler$StringExpr.class +0 -0
  957. data/lib/clojure/lang/Compiler$TheVarExpr$Parser.class +0 -0
  958. data/lib/clojure/lang/Compiler$TheVarExpr.class +0 -0
  959. data/lib/clojure/lang/Compiler$ThrowExpr$Parser.class +0 -0
  960. data/lib/clojure/lang/Compiler$ThrowExpr.class +0 -0
  961. data/lib/clojure/lang/Compiler$TryExpr$CatchClause.class +0 -0
  962. data/lib/clojure/lang/Compiler$TryExpr$Parser.class +0 -0
  963. data/lib/clojure/lang/Compiler$TryExpr.class +0 -0
  964. data/lib/clojure/lang/Compiler$UnresolvedVarExpr.class +0 -0
  965. data/lib/clojure/lang/Compiler$UntypedExpr.class +0 -0
  966. data/lib/clojure/lang/Compiler$VarExpr.class +0 -0
  967. data/lib/clojure/lang/Compiler$VectorExpr.class +0 -0
  968. data/lib/clojure/lang/Compiler.class +0 -0
  969. data/lib/clojure/lang/Cons.class +0 -0
  970. data/lib/clojure/lang/Counted.class +0 -0
  971. data/lib/clojure/lang/Delay.class +0 -0
  972. data/lib/clojure/lang/DynamicClassLoader.class +0 -0
  973. data/lib/clojure/lang/EnumerationSeq$State.class +0 -0
  974. data/lib/clojure/lang/EnumerationSeq.class +0 -0
  975. data/lib/clojure/lang/Fn.class +0 -0
  976. data/lib/clojure/lang/IDeref.class +0 -0
  977. data/lib/clojure/lang/IFn.class +0 -0
  978. data/lib/clojure/lang/IMapEntry.class +0 -0
  979. data/lib/clojure/lang/IMeta.class +0 -0
  980. data/lib/clojure/lang/IObj.class +0 -0
  981. data/lib/clojure/lang/IPersistentCollection.class +0 -0
  982. data/lib/clojure/lang/IPersistentList.class +0 -0
  983. data/lib/clojure/lang/IPersistentMap.class +0 -0
  984. data/lib/clojure/lang/IPersistentSet.class +0 -0
  985. data/lib/clojure/lang/IPersistentStack.class +0 -0
  986. data/lib/clojure/lang/IPersistentVector.class +0 -0
  987. data/lib/clojure/lang/IProxy.class +0 -0
  988. data/lib/clojure/lang/IReduce.class +0 -0
  989. data/lib/clojure/lang/IRef.class +0 -0
  990. data/lib/clojure/lang/IReference.class +0 -0
  991. data/lib/clojure/lang/ISeq.class +0 -0
  992. data/lib/clojure/lang/IndexedSeq.class +0 -0
  993. data/lib/clojure/lang/IteratorSeq$State.class +0 -0
  994. data/lib/clojure/lang/IteratorSeq.class +0 -0
  995. data/lib/clojure/lang/IteratorStream.class +0 -0
  996. data/lib/clojure/lang/Keyword.class +0 -0
  997. data/lib/clojure/lang/LazilyPersistentVector.class +0 -0
  998. data/lib/clojure/lang/LazySeq.class +0 -0
  999. data/lib/clojure/lang/LineNumberingPushbackReader.class +0 -0
  1000. data/lib/clojure/lang/LispReader$ArgReader.class +0 -0
  1001. data/lib/clojure/lang/LispReader$CharacterReader.class +0 -0
  1002. data/lib/clojure/lang/LispReader$CommentReader.class +0 -0
  1003. data/lib/clojure/lang/LispReader$CtorReader.class +0 -0
  1004. data/lib/clojure/lang/LispReader$DiscardReader.class +0 -0
  1005. data/lib/clojure/lang/LispReader$DispatchReader.class +0 -0
  1006. data/lib/clojure/lang/LispReader$EvalReader.class +0 -0
  1007. data/lib/clojure/lang/LispReader$FnReader.class +0 -0
  1008. data/lib/clojure/lang/LispReader$ListReader.class +0 -0
  1009. data/lib/clojure/lang/LispReader$MapReader.class +0 -0
  1010. data/lib/clojure/lang/LispReader$MetaReader.class +0 -0
  1011. data/lib/clojure/lang/LispReader$ReaderException.class +0 -0
  1012. data/lib/clojure/lang/LispReader$RegexReader.class +0 -0
  1013. data/lib/clojure/lang/LispReader$SetReader.class +0 -0
  1014. data/lib/clojure/lang/LispReader$StringReader.class +0 -0
  1015. data/lib/clojure/lang/LispReader$SyntaxQuoteReader.class +0 -0
  1016. data/lib/clojure/lang/LispReader$UnmatchedDelimiterReader.class +0 -0
  1017. data/lib/clojure/lang/LispReader$UnquoteReader.class +0 -0
  1018. data/lib/clojure/lang/LispReader$UnreadableReader.class +0 -0
  1019. data/lib/clojure/lang/LispReader$VarReader.class +0 -0
  1020. data/lib/clojure/lang/LispReader$VectorReader.class +0 -0
  1021. data/lib/clojure/lang/LispReader$WrappingReader.class +0 -0
  1022. data/lib/clojure/lang/LispReader.class +0 -0
  1023. data/lib/clojure/lang/LockingTransaction$AbortException.class +0 -0
  1024. data/lib/clojure/lang/LockingTransaction$CFn.class +0 -0
  1025. data/lib/clojure/lang/LockingTransaction$Info.class +0 -0
  1026. data/lib/clojure/lang/LockingTransaction$Notify.class +0 -0
  1027. data/lib/clojure/lang/LockingTransaction$RetryEx.class +0 -0
  1028. data/lib/clojure/lang/LockingTransaction.class +0 -0
  1029. data/lib/clojure/lang/MapEntry.class +0 -0
  1030. data/lib/clojure/lang/MultiFn.class +0 -0
  1031. data/lib/clojure/lang/Named.class +0 -0
  1032. data/lib/clojure/lang/Namespace.class +0 -0
  1033. data/lib/clojure/lang/Numbers$BigDecimalOps.class +0 -0
  1034. data/lib/clojure/lang/Numbers$BigIntegerBitOps.class +0 -0
  1035. data/lib/clojure/lang/Numbers$BigIntegerOps.class +0 -0
  1036. data/lib/clojure/lang/Numbers$BitOps.class +0 -0
  1037. data/lib/clojure/lang/Numbers$DoubleOps.class +0 -0
  1038. data/lib/clojure/lang/Numbers$FloatOps.class +0 -0
  1039. data/lib/clojure/lang/Numbers$IntegerBitOps.class +0 -0
  1040. data/lib/clojure/lang/Numbers$IntegerOps.class +0 -0
  1041. data/lib/clojure/lang/Numbers$LongBitOps.class +0 -0
  1042. data/lib/clojure/lang/Numbers$LongOps.class +0 -0
  1043. data/lib/clojure/lang/Numbers$Ops.class +0 -0
  1044. data/lib/clojure/lang/Numbers$RatioOps.class +0 -0
  1045. data/lib/clojure/lang/Numbers.class +0 -0
  1046. data/lib/clojure/lang/Obj.class +0 -0
  1047. data/lib/clojure/lang/PersistentArrayMap$Iter.class +0 -0
  1048. data/lib/clojure/lang/PersistentArrayMap$Seq.class +0 -0
  1049. data/lib/clojure/lang/PersistentArrayMap.class +0 -0
  1050. data/lib/clojure/lang/PersistentHashMap$BitmapIndexedNode$Seq.class +0 -0
  1051. data/lib/clojure/lang/PersistentHashMap$BitmapIndexedNode.class +0 -0
  1052. data/lib/clojure/lang/PersistentHashMap$EmptyNode.class +0 -0
  1053. data/lib/clojure/lang/PersistentHashMap$FullNode$Seq.class +0 -0
  1054. data/lib/clojure/lang/PersistentHashMap$FullNode.class +0 -0
  1055. data/lib/clojure/lang/PersistentHashMap$HashCollisionNode.class +0 -0
  1056. data/lib/clojure/lang/PersistentHashMap$INode.class +0 -0
  1057. data/lib/clojure/lang/PersistentHashMap$LeafNode.class +0 -0
  1058. data/lib/clojure/lang/PersistentHashMap.class +0 -0
  1059. data/lib/clojure/lang/PersistentHashSet.class +0 -0
  1060. data/lib/clojure/lang/PersistentList$1.class +0 -0
  1061. data/lib/clojure/lang/PersistentList$EmptyList$1.class +0 -0
  1062. data/lib/clojure/lang/PersistentList$EmptyList.class +0 -0
  1063. data/lib/clojure/lang/PersistentList.class +0 -0
  1064. data/lib/clojure/lang/PersistentQueue$Seq.class +0 -0
  1065. data/lib/clojure/lang/PersistentQueue.class +0 -0
  1066. data/lib/clojure/lang/PersistentStructMap$1.class +0 -0
  1067. data/lib/clojure/lang/PersistentStructMap$Def.class +0 -0
  1068. data/lib/clojure/lang/PersistentStructMap$Seq.class +0 -0
  1069. data/lib/clojure/lang/PersistentStructMap.class +0 -0
  1070. data/lib/clojure/lang/PersistentTreeMap$Black.class +0 -0
  1071. data/lib/clojure/lang/PersistentTreeMap$BlackBranch.class +0 -0
  1072. data/lib/clojure/lang/PersistentTreeMap$BlackBranchVal.class +0 -0
  1073. data/lib/clojure/lang/PersistentTreeMap$BlackVal.class +0 -0
  1074. data/lib/clojure/lang/PersistentTreeMap$KeyIterator.class +0 -0
  1075. data/lib/clojure/lang/PersistentTreeMap$Node.class +0 -0
  1076. data/lib/clojure/lang/PersistentTreeMap$NodeIterator.class +0 -0
  1077. data/lib/clojure/lang/PersistentTreeMap$Red.class +0 -0
  1078. data/lib/clojure/lang/PersistentTreeMap$RedBranch.class +0 -0
  1079. data/lib/clojure/lang/PersistentTreeMap$RedBranchVal.class +0 -0
  1080. data/lib/clojure/lang/PersistentTreeMap$RedVal.class +0 -0
  1081. data/lib/clojure/lang/PersistentTreeMap$Seq.class +0 -0
  1082. data/lib/clojure/lang/PersistentTreeMap$ValIterator.class +0 -0
  1083. data/lib/clojure/lang/PersistentTreeMap.class +0 -0
  1084. data/lib/clojure/lang/PersistentTreeSet.class +0 -0
  1085. data/lib/clojure/lang/PersistentVector.class +0 -0
  1086. data/lib/clojure/lang/ProxyHandler.class +0 -0
  1087. data/lib/clojure/lang/RT$1.class +0 -0
  1088. data/lib/clojure/lang/RT$2.class +0 -0
  1089. data/lib/clojure/lang/RT$3.class +0 -0
  1090. data/lib/clojure/lang/RT$4.class +0 -0
  1091. data/lib/clojure/lang/RT$5.class +0 -0
  1092. data/lib/clojure/lang/RT$6.class +0 -0
  1093. data/lib/clojure/lang/RT.class +0 -0
  1094. data/lib/clojure/lang/Range$Src.class +0 -0
  1095. data/lib/clojure/lang/Range.class +0 -0
  1096. data/lib/clojure/lang/Ratio.class +0 -0
  1097. data/lib/clojure/lang/Ref$TVal.class +0 -0
  1098. data/lib/clojure/lang/Ref.class +0 -0
  1099. data/lib/clojure/lang/Reflector.class +0 -0
  1100. data/lib/clojure/lang/Repl.class +0 -0
  1101. data/lib/clojure/lang/RestFn.class +0 -0
  1102. data/lib/clojure/lang/Reversible.class +0 -0
  1103. data/lib/clojure/lang/Script.class +0 -0
  1104. data/lib/clojure/lang/SeqEnumeration.class +0 -0
  1105. data/lib/clojure/lang/SeqIterator.class +0 -0
  1106. data/lib/clojure/lang/Seqable.class +0 -0
  1107. data/lib/clojure/lang/Sequential.class +0 -0
  1108. data/lib/clojure/lang/Settable.class +0 -0
  1109. data/lib/clojure/lang/Sorted.class +0 -0
  1110. data/lib/clojure/lang/Stream$1.class +0 -0
  1111. data/lib/clojure/lang/Stream$2.class +0 -0
  1112. data/lib/clojure/lang/Stream.class +0 -0
  1113. data/lib/clojure/lang/Streamable.class +0 -0
  1114. data/lib/clojure/lang/StringSeq.class +0 -0
  1115. data/lib/clojure/lang/Symbol.class +0 -0
  1116. data/lib/clojure/lang/TransactionalHashMap$1.class +0 -0
  1117. data/lib/clojure/lang/TransactionalHashMap.class +0 -0
  1118. data/lib/clojure/lang/Util.class +0 -0
  1119. data/lib/clojure/lang/Var$1.class +0 -0
  1120. data/lib/clojure/lang/Var$2.class +0 -0
  1121. data/lib/clojure/lang/Var$Frame.class +0 -0
  1122. data/lib/clojure/lang/Var.class +0 -0
  1123. data/lib/clojure/lang/XMLHandler.class +0 -0
  1124. data/lib/clojure/main$eval_opt__5839.class +0 -0
  1125. data/lib/clojure/main$help_opt__5871.class +0 -0
  1126. data/lib/clojure/main$init_dispatch__5843.class +0 -0
  1127. data/lib/clojure/main$init_opt__5836.class +0 -0
  1128. data/lib/clojure/main$initialize__5846.class +0 -0
  1129. data/lib/clojure/main$legacy_repl__5878.class +0 -0
  1130. data/lib/clojure/main$legacy_script__5883.class +0 -0
  1131. data/lib/clojure/main$load_script__5833.class +0 -0
  1132. data/lib/clojure/main$main__5888.class +0 -0
  1133. data/lib/clojure/main$main_dispatch__5874.class +0 -0
  1134. data/lib/clojure/main$null_opt__5868.class +0 -0
  1135. data/lib/clojure/main$repl__5813$fn__5816.class +0 -0
  1136. data/lib/clojure/main$repl__5813$fn__5819.class +0 -0
  1137. data/lib/clojure/main$repl__5813$fn__5822.class +0 -0
  1138. data/lib/clojure/main$repl__5813$fn__5829.class +0 -0
  1139. data/lib/clojure/main$repl__5813$read_eval_print__5825.class +0 -0
  1140. data/lib/clojure/main$repl__5813.class +0 -0
  1141. data/lib/clojure/main$repl_caught__5810.class +0 -0
  1142. data/lib/clojure/main$repl_exception__5807.class +0 -0
  1143. data/lib/clojure/main$repl_opt__5853$fn__5856.class +0 -0
  1144. data/lib/clojure/main$repl_opt__5853$fn__5859.class +0 -0
  1145. data/lib/clojure/main$repl_opt__5853.class +0 -0
  1146. data/lib/clojure/main$repl_prompt__5789.class +0 -0
  1147. data/lib/clojure/main$repl_read__5799.class +0 -0
  1148. data/lib/clojure/main$root_cause__5803.class +0 -0
  1149. data/lib/clojure/main$script_opt__5864.class +0 -0
  1150. data/lib/clojure/main$skip_if_eol__5792.class +0 -0
  1151. data/lib/clojure/main$skip_whitespace__5795.class +0 -0
  1152. data/lib/clojure/main$with_bindings__5786.class +0 -0
  1153. data/lib/clojure/main.class +0 -0
  1154. data/lib/clojure/main.clj +337 -0
  1155. data/lib/clojure/main__init.class +0 -0
  1156. data/lib/clojure/parallel.clj +248 -0
  1157. data/lib/clojure/proxy/clojure/lang/APersistentMap.class +0 -0
  1158. data/lib/clojure/proxy/java/lang/Object$ContentHandler.class +0 -0
  1159. data/lib/clojure/proxy/java/lang/Object$Future$IDeref.class +0 -0
  1160. data/lib/clojure/proxy/java/lang/Object$TableModel.class +0 -0
  1161. data/lib/clojure/proxy/java/lang/Object$TreeModel.class +0 -0
  1162. data/lib/clojure/proxy/javax/swing/table/AbstractTableModel.class +0 -0
  1163. data/lib/clojure/set$bubble_max_key__5896$fn__5898.class +0 -0
  1164. data/lib/clojure/set$bubble_max_key__5896.class +0 -0
  1165. data/lib/clojure/set$difference__5920$fn__5923.class +0 -0
  1166. data/lib/clojure/set$difference__5920.class +0 -0
  1167. data/lib/clojure/set$index__5956$fn__5958.class +0 -0
  1168. data/lib/clojure/set$index__5956.class +0 -0
  1169. data/lib/clojure/set$intersection__5909$fn__5912.class +0 -0
  1170. data/lib/clojure/set$intersection__5909$fn__5916.class +0 -0
  1171. data/lib/clojure/set$intersection__5909.class +0 -0
  1172. data/lib/clojure/set$join__5974$fn__5977$fn__5979.class +0 -0
  1173. data/lib/clojure/set$join__5974$fn__5977.class +0 -0
  1174. data/lib/clojure/set$join__5974$fn__5985$fn__5987.class +0 -0
  1175. data/lib/clojure/set$join__5974$fn__5985.class +0 -0
  1176. data/lib/clojure/set$join__5974.class +0 -0
  1177. data/lib/clojure/set$map_invert__5962$fn__5965.class +0 -0
  1178. data/lib/clojure/set$map_invert__5962.class +0 -0
  1179. data/lib/clojure/set$project__5935$fn__5937.class +0 -0
  1180. data/lib/clojure/set$project__5935.class +0 -0
  1181. data/lib/clojure/set$rename__5950$fn__5952.class +0 -0
  1182. data/lib/clojure/set$rename__5950.class +0 -0
  1183. data/lib/clojure/set$rename_keys__5941$fn__5944.class +0 -0
  1184. data/lib/clojure/set$rename_keys__5941.class +0 -0
  1185. data/lib/clojure/set$select__5928$fn__5930.class +0 -0
  1186. data/lib/clojure/set$select__5928.class +0 -0
  1187. data/lib/clojure/set$union__5902.class +0 -0
  1188. data/lib/clojure/set.clj +148 -0
  1189. data/lib/clojure/set__init.class +0 -0
  1190. data/lib/clojure/version.properties +5 -0
  1191. data/lib/clojure/xml$emit__6057.class +0 -0
  1192. data/lib/clojure/xml$emit_element__6052.class +0 -0
  1193. data/lib/clojure/xml$fn__5994$fn__6007.class +0 -0
  1194. data/lib/clojure/xml$fn__5994$fn__6010.class +0 -0
  1195. data/lib/clojure/xml$fn__5994$fn__6013.class +0 -0
  1196. data/lib/clojure/xml$fn__5994$fn__6016.class +0 -0
  1197. data/lib/clojure/xml$fn__5994$fn__6019.class +0 -0
  1198. data/lib/clojure/xml$fn__5994$fn__6022.class +0 -0
  1199. data/lib/clojure/xml$fn__5994$fn__6025.class +0 -0
  1200. data/lib/clojure/xml$fn__5994$fn__6028$attrs__6030.class +0 -0
  1201. data/lib/clojure/xml$fn__5994$fn__6028.class +0 -0
  1202. data/lib/clojure/xml$fn__5994$fn__6034.class +0 -0
  1203. data/lib/clojure/xml$fn__5994$fn__6037.class +0 -0
  1204. data/lib/clojure/xml$fn__5994$fn__6040.class +0 -0
  1205. data/lib/clojure/xml$fn__5994$push_chars__6000$fn__6002.class +0 -0
  1206. data/lib/clojure/xml$fn__5994$push_chars__6000.class +0 -0
  1207. data/lib/clojure/xml$fn__5994$push_content__5996.class +0 -0
  1208. data/lib/clojure/xml$fn__5994.class +0 -0
  1209. data/lib/clojure/xml$parse__6048.class +0 -0
  1210. data/lib/clojure/xml$startparse_sax__6045.class +0 -0
  1211. data/lib/clojure/xml.clj +115 -0
  1212. data/lib/clojure/xml__init.class +0 -0
  1213. data/lib/clojure/zip$append_child__6155.class +0 -0
  1214. data/lib/clojure/zip$branch_QMARK___6085.class +0 -0
  1215. data/lib/clojure/zip$children__6088.class +0 -0
  1216. data/lib/clojure/zip$down__6103.class +0 -0
  1217. data/lib/clojure/zip$edit__6149.class +0 -0
  1218. data/lib/clojure/zip$end_QMARK___6171.class +0 -0
  1219. data/lib/clojure/zip$insert_child__6152.class +0 -0
  1220. data/lib/clojure/zip$insert_left__6137.class +0 -0
  1221. data/lib/clojure/zip$insert_right__6141.class +0 -0
  1222. data/lib/clojure/zip$left__6127.class +0 -0
  1223. data/lib/clojure/zip$leftmost__6132.class +0 -0
  1224. data/lib/clojure/zip$lefts__6097.class +0 -0
  1225. data/lib/clojure/zip$make_node__6091.class +0 -0
  1226. data/lib/clojure/zip$next__6158.class +0 -0
  1227. data/lib/clojure/zip$node__6082.class +0 -0
  1228. data/lib/clojure/zip$path__6094.class +0 -0
  1229. data/lib/clojure/zip$prev__6165.class +0 -0
  1230. data/lib/clojure/zip$remove__6174.class +0 -0
  1231. data/lib/clojure/zip$replace__6145.class +0 -0
  1232. data/lib/clojure/zip$right__6116.class +0 -0
  1233. data/lib/clojure/zip$rightmost__6122.class +0 -0
  1234. data/lib/clojure/zip$rights__6100.class +0 -0
  1235. data/lib/clojure/zip$root__6113.class +0 -0
  1236. data/lib/clojure/zip$seq_zip__6063$fn__6065.class +0 -0
  1237. data/lib/clojure/zip$seq_zip__6063.class +0 -0
  1238. data/lib/clojure/zip$up__6108.class +0 -0
  1239. data/lib/clojure/zip$vector_zip__6069$fn__6071.class +0 -0
  1240. data/lib/clojure/zip$vector_zip__6069.class +0 -0
  1241. data/lib/clojure/zip$xml_zip__6075$fn__6077.class +0 -0
  1242. data/lib/clojure/zip$xml_zip__6075.class +0 -0
  1243. data/lib/clojure/zip$zipper__6060.class +0 -0
  1244. data/lib/clojure/zip.clj +278 -0
  1245. data/lib/clojure/zip__init.class +0 -0
  1246. data/src/clj/clojure/core.clj +4121 -0
  1247. data/src/clj/clojure/core_print.clj +317 -0
  1248. data/src/clj/clojure/core_proxy.clj +394 -0
  1249. data/src/clj/clojure/genclass.clj +683 -0
  1250. data/src/clj/clojure/inspector.clj +180 -0
  1251. data/src/clj/clojure/main.clj +337 -0
  1252. data/src/clj/clojure/parallel.clj +248 -0
  1253. data/src/clj/clojure/set.clj +148 -0
  1254. data/src/clj/clojure/version.properties +5 -0
  1255. data/src/clj/clojure/xml.clj +115 -0
  1256. data/src/clj/clojure/zip.clj +278 -0
  1257. data/src/jvm/clojure/asm/AnnotationVisitor.java +97 -0
  1258. data/src/jvm/clojure/asm/AnnotationWriter.java +357 -0
  1259. data/src/jvm/clojure/asm/Attribute.java +253 -0
  1260. data/src/jvm/clojure/asm/ByteVector.java +318 -0
  1261. data/src/jvm/clojure/asm/ClassAdapter.java +115 -0
  1262. data/src/jvm/clojure/asm/ClassReader.java +2224 -0
  1263. data/src/jvm/clojure/asm/ClassVisitor.java +196 -0
  1264. data/src/jvm/clojure/asm/ClassWriter.java +1415 -0
  1265. data/src/jvm/clojure/asm/Edge.java +75 -0
  1266. data/src/jvm/clojure/asm/FieldVisitor.java +64 -0
  1267. data/src/jvm/clojure/asm/FieldWriter.java +290 -0
  1268. data/src/jvm/clojure/asm/Frame.java +1506 -0
  1269. data/src/jvm/clojure/asm/Handler.java +70 -0
  1270. data/src/jvm/clojure/asm/Item.java +258 -0
  1271. data/src/jvm/clojure/asm/Label.java +437 -0
  1272. data/src/jvm/clojure/asm/MethodAdapter.java +186 -0
  1273. data/src/jvm/clojure/asm/MethodVisitor.java +396 -0
  1274. data/src/jvm/clojure/asm/MethodWriter.java +3029 -0
  1275. data/src/jvm/clojure/asm/Opcodes.java +341 -0
  1276. data/src/jvm/clojure/asm/Type.java +872 -0
  1277. data/src/jvm/clojure/asm/commons/AdviceAdapter.java +681 -0
  1278. data/src/jvm/clojure/asm/commons/AnalyzerAdapter.java +938 -0
  1279. data/src/jvm/clojure/asm/commons/CodeSizeEvaluator.java +234 -0
  1280. data/src/jvm/clojure/asm/commons/EmptyVisitor.java +221 -0
  1281. data/src/jvm/clojure/asm/commons/GeneratorAdapter.java +1533 -0
  1282. data/src/jvm/clojure/asm/commons/LocalVariablesSorter.java +330 -0
  1283. data/src/jvm/clojure/asm/commons/Method.java +267 -0
  1284. data/src/jvm/clojure/asm/commons/SerialVersionUIDAdder.java +508 -0
  1285. data/src/jvm/clojure/asm/commons/StaticInitMerger.java +102 -0
  1286. data/src/jvm/clojure/asm/commons/TableSwitchGenerator.java +55 -0
  1287. data/src/jvm/clojure/asm/commons/package.html +48 -0
  1288. data/src/jvm/clojure/asm/package.html +87 -0
  1289. data/src/jvm/clojure/lang/AFn.java +452 -0
  1290. data/src/jvm/clojure/lang/AFunction.java +47 -0
  1291. data/src/jvm/clojure/lang/AMapEntry.java +149 -0
  1292. data/src/jvm/clojure/lang/APersistentMap.java +382 -0
  1293. data/src/jvm/clojure/lang/APersistentSet.java +159 -0
  1294. data/src/jvm/clojure/lang/APersistentVector.java +579 -0
  1295. data/src/jvm/clojure/lang/ARef.java +107 -0
  1296. data/src/jvm/clojure/lang/AReference.java +40 -0
  1297. data/src/jvm/clojure/lang/ASeq.java +282 -0
  1298. data/src/jvm/clojure/lang/Agent.java +194 -0
  1299. data/src/jvm/clojure/lang/ArraySeq.java +316 -0
  1300. data/src/jvm/clojure/lang/ArrayStream.java +184 -0
  1301. data/src/jvm/clojure/lang/Associative.java +22 -0
  1302. data/src/jvm/clojure/lang/Atom.java +104 -0
  1303. data/src/jvm/clojure/lang/Binding.java +26 -0
  1304. data/src/jvm/clojure/lang/Box.java +22 -0
  1305. data/src/jvm/clojure/lang/Compile.java +73 -0
  1306. data/src/jvm/clojure/lang/Compiler.java +5017 -0
  1307. data/src/jvm/clojure/lang/Cons.java +53 -0
  1308. data/src/jvm/clojure/lang/Counted.java +18 -0
  1309. data/src/jvm/clojure/lang/Delay.java +38 -0
  1310. data/src/jvm/clojure/lang/DynamicClassLoader.java +71 -0
  1311. data/src/jvm/clojure/lang/EnumerationSeq.java +71 -0
  1312. data/src/jvm/clojure/lang/Fn.java +16 -0
  1313. data/src/jvm/clojure/lang/IDeref.java +17 -0
  1314. data/src/jvm/clojure/lang/IFn.java +90 -0
  1315. data/src/jvm/clojure/lang/IMapEntry.java +19 -0
  1316. data/src/jvm/clojure/lang/IMeta.java +17 -0
  1317. data/src/jvm/clojure/lang/IObj.java +18 -0
  1318. data/src/jvm/clojure/lang/IPersistentCollection.java +23 -0
  1319. data/src/jvm/clojure/lang/IPersistentList.java +16 -0
  1320. data/src/jvm/clojure/lang/IPersistentMap.java +23 -0
  1321. data/src/jvm/clojure/lang/IPersistentSet.java +19 -0
  1322. data/src/jvm/clojure/lang/IPersistentStack.java +19 -0
  1323. data/src/jvm/clojure/lang/IPersistentVector.java +22 -0
  1324. data/src/jvm/clojure/lang/IProxy.java +21 -0
  1325. data/src/jvm/clojure/lang/IReduce.java +19 -0
  1326. data/src/jvm/clojure/lang/IRef.java +27 -0
  1327. data/src/jvm/clojure/lang/IReference.java +18 -0
  1328. data/src/jvm/clojure/lang/ISeq.java +29 -0
  1329. data/src/jvm/clojure/lang/IndexedSeq.java +16 -0
  1330. data/src/jvm/clojure/lang/IteratorSeq.java +69 -0
  1331. data/src/jvm/clojure/lang/IteratorStream.java +29 -0
  1332. data/src/jvm/clojure/lang/Keyword.java +199 -0
  1333. data/src/jvm/clojure/lang/LazilyPersistentVector.java +79 -0
  1334. data/src/jvm/clojure/lang/LazySeq.java +233 -0
  1335. data/src/jvm/clojure/lang/LineNumberingPushbackReader.java +75 -0
  1336. data/src/jvm/clojure/lang/LispReader.java +1063 -0
  1337. data/src/jvm/clojure/lang/LockingTransaction.java +583 -0
  1338. data/src/jvm/clojure/lang/MapEntry.java +40 -0
  1339. data/src/jvm/clojure/lang/MultiFn.java +308 -0
  1340. data/src/jvm/clojure/lang/Named.java +19 -0
  1341. data/src/jvm/clojure/lang/Namespace.java +178 -0
  1342. data/src/jvm/clojure/lang/Numbers.java +4371 -0
  1343. data/src/jvm/clojure/lang/Obj.java +33 -0
  1344. data/src/jvm/clojure/lang/PersistentArrayMap.java +263 -0
  1345. data/src/jvm/clojure/lang/PersistentHashMap.java +746 -0
  1346. data/src/jvm/clojure/lang/PersistentHashSet.java +72 -0
  1347. data/src/jvm/clojure/lang/PersistentList.java +298 -0
  1348. data/src/jvm/clojure/lang/PersistentQueue.java +304 -0
  1349. data/src/jvm/clojure/lang/PersistentStructMap.java +225 -0
  1350. data/src/jvm/clojure/lang/PersistentTreeMap.java +998 -0
  1351. data/src/jvm/clojure/lang/PersistentTreeSet.java +94 -0
  1352. data/src/jvm/clojure/lang/PersistentVector.java +320 -0
  1353. data/src/jvm/clojure/lang/ProxyHandler.java +72 -0
  1354. data/src/jvm/clojure/lang/RT.java +1676 -0
  1355. data/src/jvm/clojure/lang/Range.java +85 -0
  1356. data/src/jvm/clojure/lang/Ratio.java +74 -0
  1357. data/src/jvm/clojure/lang/Ref.java +335 -0
  1358. data/src/jvm/clojure/lang/Reflector.java +448 -0
  1359. data/src/jvm/clojure/lang/Repl.java +22 -0
  1360. data/src/jvm/clojure/lang/RestFn.java +1335 -0
  1361. data/src/jvm/clojure/lang/Reversible.java +17 -0
  1362. data/src/jvm/clojure/lang/Script.java +22 -0
  1363. data/src/jvm/clojure/lang/SeqEnumeration.java +33 -0
  1364. data/src/jvm/clojure/lang/SeqIterator.java +41 -0
  1365. data/src/jvm/clojure/lang/Seqable.java +17 -0
  1366. data/src/jvm/clojure/lang/Sequential.java +13 -0
  1367. data/src/jvm/clojure/lang/Settable.java +18 -0
  1368. data/src/jvm/clojure/lang/Sorted.java +25 -0
  1369. data/src/jvm/clojure/lang/Stream.java +88 -0
  1370. data/src/jvm/clojure/lang/Streamable.java +17 -0
  1371. data/src/jvm/clojure/lang/StringSeq.java +50 -0
  1372. data/src/jvm/clojure/lang/Symbol.java +121 -0
  1373. data/src/jvm/clojure/lang/TransactionalHashMap.java +197 -0
  1374. data/src/jvm/clojure/lang/Util.java +74 -0
  1375. data/src/jvm/clojure/lang/Var.java +472 -0
  1376. data/src/jvm/clojure/lang/XMLHandler.java +89 -0
  1377. data/src/jvm/clojure/main.java +41 -0
  1378. metadata +1433 -0
@@ -0,0 +1,75 @@
1
+ /***
2
+ * ASM: a very small and fast Java bytecode manipulation framework
3
+ * Copyright (c) 2000-2005 INRIA, France Telecom
4
+ * All rights reserved.
5
+ *
6
+ * Redistribution and use in source and binary forms, with or without
7
+ * modification, are permitted provided that the following conditions
8
+ * are met:
9
+ * 1. Redistributions of source code must retain the above copyright
10
+ * notice, this list of conditions and the following disclaimer.
11
+ * 2. Redistributions in binary form must reproduce the above copyright
12
+ * notice, this list of conditions and the following disclaimer in the
13
+ * documentation and/or other materials provided with the distribution.
14
+ * 3. Neither the name of the copyright holders nor the names of its
15
+ * contributors may be used to endorse or promote products derived from
16
+ * this software without specific prior written permission.
17
+ *
18
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
22
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
28
+ * THE POSSIBILITY OF SUCH DAMAGE.
29
+ */
30
+ package clojure.asm;
31
+
32
+ /**
33
+ * An edge in the control flow graph of a method body. See {@link Label Label}.
34
+ *
35
+ * @author Eric Bruneton
36
+ */
37
+ class Edge{
38
+
39
+ /**
40
+ * Denotes a normal control flow graph edge.
41
+ */
42
+ final static int NORMAL = 0;
43
+
44
+ /**
45
+ * Denotes a control flow graph edge corresponding to an exception handler.
46
+ * More precisely any {@link Edge} whose {@link #info} is strictly positive
47
+ * corresponds to an exception handler. The actual value of {@link #info} is
48
+ * the index, in the {@link ClassWriter} type table, of the exception that
49
+ * is catched.
50
+ */
51
+ final static int EXCEPTION = 0x7FFFFFFF;
52
+
53
+ /**
54
+ * Information about this control flow graph edge. If
55
+ * {@link ClassWriter#COMPUTE_MAXS} is used this field is the (relative)
56
+ * stack size in the basic block from which this edge originates. This size
57
+ * is equal to the stack size at the "jump" instruction to which this edge
58
+ * corresponds, relatively to the stack size at the beginning of the
59
+ * originating basic block. If {@link ClassWriter#COMPUTE_FRAMES} is used,
60
+ * this field is the kind of this control flow graph edge (i.e. NORMAL or
61
+ * EXCEPTION).
62
+ */
63
+ int info;
64
+
65
+ /**
66
+ * The successor block of the basic block from which this edge originates.
67
+ */
68
+ Label successor;
69
+
70
+ /**
71
+ * The next edge in the list of successors of the originating basic block.
72
+ * See {@link Label#successors successors}.
73
+ */
74
+ Edge next;
75
+ }
@@ -0,0 +1,64 @@
1
+ /***
2
+ * ASM: a very small and fast Java bytecode manipulation framework
3
+ * Copyright (c) 2000-2005 INRIA, France Telecom
4
+ * All rights reserved.
5
+ *
6
+ * Redistribution and use in source and binary forms, with or without
7
+ * modification, are permitted provided that the following conditions
8
+ * are met:
9
+ * 1. Redistributions of source code must retain the above copyright
10
+ * notice, this list of conditions and the following disclaimer.
11
+ * 2. Redistributions in binary form must reproduce the above copyright
12
+ * notice, this list of conditions and the following disclaimer in the
13
+ * documentation and/or other materials provided with the distribution.
14
+ * 3. Neither the name of the copyright holders nor the names of its
15
+ * contributors may be used to endorse or promote products derived from
16
+ * this software without specific prior written permission.
17
+ *
18
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
22
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
28
+ * THE POSSIBILITY OF SUCH DAMAGE.
29
+ */
30
+ package clojure.asm;
31
+
32
+ /**
33
+ * A visitor to visit a Java field. The methods of this interface must be called
34
+ * in the following order: ( <tt>visitAnnotation</tt> |
35
+ * <tt>visitAttribute</tt> )* <tt>visitEnd</tt>.
36
+ *
37
+ * @author Eric Bruneton
38
+ */
39
+ public interface FieldVisitor{
40
+
41
+ /**
42
+ * Visits an annotation of the field.
43
+ *
44
+ * @param desc the class descriptor of the annotation class.
45
+ * @param visible <tt>true</tt> if the annotation is visible at runtime.
46
+ * @return a visitor to visit the annotation values, or <tt>null</tt> if
47
+ * this visitor is not interested in visiting this annotation.
48
+ */
49
+ AnnotationVisitor visitAnnotation(String desc, boolean visible);
50
+
51
+ /**
52
+ * Visits a non standard attribute of the field.
53
+ *
54
+ * @param attr an attribute.
55
+ */
56
+ void visitAttribute(Attribute attr);
57
+
58
+ /**
59
+ * Visits the end of the field. This method, which is the last one to be
60
+ * called, is used to inform the visitor that all the annotations and
61
+ * attributes of the field have been visited.
62
+ */
63
+ void visitEnd();
64
+ }
@@ -0,0 +1,290 @@
1
+ /***
2
+ * ASM: a very small and fast Java bytecode manipulation framework
3
+ * Copyright (c) 2000-2005 INRIA, France Telecom
4
+ * All rights reserved.
5
+ *
6
+ * Redistribution and use in source and binary forms, with or without
7
+ * modification, are permitted provided that the following conditions
8
+ * are met:
9
+ * 1. Redistributions of source code must retain the above copyright
10
+ * notice, this list of conditions and the following disclaimer.
11
+ * 2. Redistributions in binary form must reproduce the above copyright
12
+ * notice, this list of conditions and the following disclaimer in the
13
+ * documentation and/or other materials provided with the distribution.
14
+ * 3. Neither the name of the copyright holders nor the names of its
15
+ * contributors may be used to endorse or promote products derived from
16
+ * this software without specific prior written permission.
17
+ *
18
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
22
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
28
+ * THE POSSIBILITY OF SUCH DAMAGE.
29
+ */
30
+ package clojure.asm;
31
+
32
+ /**
33
+ * An {@link FieldVisitor} that generates Java fields in bytecode form.
34
+ *
35
+ * @author Eric Bruneton
36
+ */
37
+ final class FieldWriter implements FieldVisitor{
38
+
39
+ /**
40
+ * Next field writer (see {@link ClassWriter#firstField firstField}).
41
+ */
42
+ FieldWriter next;
43
+
44
+ /**
45
+ * The class writer to which this field must be added.
46
+ */
47
+ private ClassWriter cw;
48
+
49
+ /**
50
+ * Access flags of this field.
51
+ */
52
+ private int access;
53
+
54
+ /**
55
+ * The index of the constant pool item that contains the name of this
56
+ * method.
57
+ */
58
+ private int name;
59
+
60
+ /**
61
+ * The index of the constant pool item that contains the descriptor of this
62
+ * field.
63
+ */
64
+ private int desc;
65
+
66
+ /**
67
+ * The index of the constant pool item that contains the signature of this
68
+ * field.
69
+ */
70
+ private int signature;
71
+
72
+ /**
73
+ * The index of the constant pool item that contains the constant value of
74
+ * this field.
75
+ */
76
+ private int value;
77
+
78
+ /**
79
+ * The runtime visible annotations of this field. May be <tt>null</tt>.
80
+ */
81
+ private AnnotationWriter anns;
82
+
83
+ /**
84
+ * The runtime invisible annotations of this field. May be <tt>null</tt>.
85
+ */
86
+ private AnnotationWriter ianns;
87
+
88
+ /**
89
+ * The non standard attributes of this field. May be <tt>null</tt>.
90
+ */
91
+ private Attribute attrs;
92
+
93
+ // ------------------------------------------------------------------------
94
+ // Constructor
95
+ // ------------------------------------------------------------------------
96
+
97
+ /**
98
+ * Constructs a new {@link FieldWriter}.
99
+ *
100
+ * @param cw the class writer to which this field must be added.
101
+ * @param access the field's access flags (see {@link Opcodes}).
102
+ * @param name the field's name.
103
+ * @param desc the field's descriptor (see {@link Type}).
104
+ * @param signature the field's signature. May be <tt>null</tt>.
105
+ * @param value the field's constant value. May be <tt>null</tt>.
106
+ */
107
+ protected FieldWriter(
108
+ final ClassWriter cw,
109
+ final int access,
110
+ final String name,
111
+ final String desc,
112
+ final String signature,
113
+ final Object value){
114
+ if(cw.firstField == null)
115
+ {
116
+ cw.firstField = this;
117
+ }
118
+ else
119
+ {
120
+ cw.lastField.next = this;
121
+ }
122
+ cw.lastField = this;
123
+ this.cw = cw;
124
+ this.access = access;
125
+ this.name = cw.newUTF8(name);
126
+ this.desc = cw.newUTF8(desc);
127
+ if(signature != null)
128
+ {
129
+ this.signature = cw.newUTF8(signature);
130
+ }
131
+ if(value != null)
132
+ {
133
+ this.value = cw.newConstItem(value).index;
134
+ }
135
+ }
136
+
137
+ // ------------------------------------------------------------------------
138
+ // Implementation of the FieldVisitor interface
139
+ // ------------------------------------------------------------------------
140
+
141
+ public AnnotationVisitor visitAnnotation(
142
+ final String desc,
143
+ final boolean visible){
144
+ ByteVector bv = new ByteVector();
145
+ // write type, and reserve space for values count
146
+ bv.putShort(cw.newUTF8(desc)).putShort(0);
147
+ AnnotationWriter aw = new AnnotationWriter(cw, true, bv, bv, 2);
148
+ if(visible)
149
+ {
150
+ aw.next = anns;
151
+ anns = aw;
152
+ }
153
+ else
154
+ {
155
+ aw.next = ianns;
156
+ ianns = aw;
157
+ }
158
+ return aw;
159
+ }
160
+
161
+ public void visitAttribute(final Attribute attr){
162
+ attr.next = attrs;
163
+ attrs = attr;
164
+ }
165
+
166
+ public void visitEnd(){
167
+ }
168
+
169
+ // ------------------------------------------------------------------------
170
+ // Utility methods
171
+ // ------------------------------------------------------------------------
172
+
173
+ /**
174
+ * Returns the size of this field.
175
+ *
176
+ * @return the size of this field.
177
+ */
178
+ int getSize(){
179
+ int size = 8;
180
+ if(value != 0)
181
+ {
182
+ cw.newUTF8("ConstantValue");
183
+ size += 8;
184
+ }
185
+ if((access & Opcodes.ACC_SYNTHETIC) != 0
186
+ && (cw.version & 0xffff) < Opcodes.V1_5)
187
+ {
188
+ cw.newUTF8("Synthetic");
189
+ size += 6;
190
+ }
191
+ if((access & Opcodes.ACC_DEPRECATED) != 0)
192
+ {
193
+ cw.newUTF8("Deprecated");
194
+ size += 6;
195
+ }
196
+ if(signature != 0)
197
+ {
198
+ cw.newUTF8("Signature");
199
+ size += 8;
200
+ }
201
+ if(anns != null)
202
+ {
203
+ cw.newUTF8("RuntimeVisibleAnnotations");
204
+ size += 8 + anns.getSize();
205
+ }
206
+ if(ianns != null)
207
+ {
208
+ cw.newUTF8("RuntimeInvisibleAnnotations");
209
+ size += 8 + ianns.getSize();
210
+ }
211
+ if(attrs != null)
212
+ {
213
+ size += attrs.getSize(cw, null, 0, -1, -1);
214
+ }
215
+ return size;
216
+ }
217
+
218
+ /**
219
+ * Puts the content of this field into the given byte vector.
220
+ *
221
+ * @param out where the content of this field must be put.
222
+ */
223
+ void put(final ByteVector out){
224
+ out.putShort(access).putShort(name).putShort(desc);
225
+ int attributeCount = 0;
226
+ if(value != 0)
227
+ {
228
+ ++attributeCount;
229
+ }
230
+ if((access & Opcodes.ACC_SYNTHETIC) != 0
231
+ && (cw.version & 0xffff) < Opcodes.V1_5)
232
+ {
233
+ ++attributeCount;
234
+ }
235
+ if((access & Opcodes.ACC_DEPRECATED) != 0)
236
+ {
237
+ ++attributeCount;
238
+ }
239
+ if(signature != 0)
240
+ {
241
+ ++attributeCount;
242
+ }
243
+ if(anns != null)
244
+ {
245
+ ++attributeCount;
246
+ }
247
+ if(ianns != null)
248
+ {
249
+ ++attributeCount;
250
+ }
251
+ if(attrs != null)
252
+ {
253
+ attributeCount += attrs.getCount();
254
+ }
255
+ out.putShort(attributeCount);
256
+ if(value != 0)
257
+ {
258
+ out.putShort(cw.newUTF8("ConstantValue"));
259
+ out.putInt(2).putShort(value);
260
+ }
261
+ if((access & Opcodes.ACC_SYNTHETIC) != 0
262
+ && (cw.version & 0xffff) < Opcodes.V1_5)
263
+ {
264
+ out.putShort(cw.newUTF8("Synthetic")).putInt(0);
265
+ }
266
+ if((access & Opcodes.ACC_DEPRECATED) != 0)
267
+ {
268
+ out.putShort(cw.newUTF8("Deprecated")).putInt(0);
269
+ }
270
+ if(signature != 0)
271
+ {
272
+ out.putShort(cw.newUTF8("Signature"));
273
+ out.putInt(2).putShort(signature);
274
+ }
275
+ if(anns != null)
276
+ {
277
+ out.putShort(cw.newUTF8("RuntimeVisibleAnnotations"));
278
+ anns.put(out);
279
+ }
280
+ if(ianns != null)
281
+ {
282
+ out.putShort(cw.newUTF8("RuntimeInvisibleAnnotations"));
283
+ ianns.put(out);
284
+ }
285
+ if(attrs != null)
286
+ {
287
+ attrs.put(cw, null, 0, -1, -1, out);
288
+ }
289
+ }
290
+ }
@@ -0,0 +1,1506 @@
1
+ /***
2
+ * ASM: a very small and fast Java bytecode manipulation framework
3
+ * Copyright (c) 2000-2005 INRIA, France Telecom
4
+ * All rights reserved.
5
+ *
6
+ * Redistribution and use in source and binary forms, with or without
7
+ * modification, are permitted provided that the following conditions
8
+ * are met:
9
+ * 1. Redistributions of source code must retain the above copyright
10
+ * notice, this list of conditions and the following disclaimer.
11
+ * 2. Redistributions in binary form must reproduce the above copyright
12
+ * notice, this list of conditions and the following disclaimer in the
13
+ * documentation and/or other materials provided with the distribution.
14
+ * 3. Neither the name of the copyright holders nor the names of its
15
+ * contributors may be used to endorse or promote products derived from
16
+ * this software without specific prior written permission.
17
+ *
18
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
22
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
28
+ * THE POSSIBILITY OF SUCH DAMAGE.
29
+ */
30
+ package clojure.asm;
31
+
32
+ /**
33
+ * Information about the input and output stack map frames of a basic block.
34
+ *
35
+ * @author Eric Bruneton
36
+ */
37
+ final class Frame{
38
+
39
+ /*
40
+ * Frames are computed in a two steps process: during the visit of each
41
+ * instruction, the state of the frame at the end of current basic block is
42
+ * updated by simulating the action of the instruction on the previous state
43
+ * of this so called "output frame". In visitMaxs, a fix point algorithm is
44
+ * used to compute the "input frame" of each basic block, i.e. the stack map
45
+ * frame at the begining of the basic block, starting from the input frame
46
+ * of the first basic block (which is computed from the method descriptor),
47
+ * and by using the previously computed output frames to compute the input
48
+ * state of the other blocks.
49
+ *
50
+ * All output and input frames are stored as arrays of integers. Reference
51
+ * and array types are represented by an index into a type table (which is
52
+ * not the same as the constant pool of the class, in order to avoid adding
53
+ * unnecessary constants in the pool - not all computed frames will end up
54
+ * being stored in the stack map table). This allows very fast type
55
+ * comparisons.
56
+ *
57
+ * Output stack map frames are computed relatively to the input frame of the
58
+ * basic block, which is not yet known when output frames are computed. It
59
+ * is therefore necessary to be able to represent abstract types such as
60
+ * "the type at position x in the input frame locals" or "the type at
61
+ * position x from the top of the input frame stack" or even "the type at
62
+ * position x in the input frame, with y more (or less) array dimensions".
63
+ * This explains the rather complicated type format used in output frames.
64
+ *
65
+ * This format is the following: DIM KIND VALUE (4, 4 and 24 bits). DIM is a
66
+ * signed number of array dimensions (from -8 to 7). KIND is either BASE,
67
+ * LOCAL or STACK. BASE is used for types that are not relative to the input
68
+ * frame. LOCAL is used for types that are relative to the input local
69
+ * variable types. STACK is used for types that are relative to the input
70
+ * stack types. VALUE depends on KIND. For LOCAL types, it is an index in
71
+ * the input local variable types. For STACK types, it is a position
72
+ * relatively to the top of input frame stack. For BASE types, it is either
73
+ * one of the constants defined in FrameVisitor, or for OBJECT and
74
+ * UNINITIALIZED types, a tag and an index in the type table.
75
+ *
76
+ * Output frames can contain types of any kind and with a positive or
77
+ * negative dimension (and even unassigned types, represented by 0 - which
78
+ * does not correspond to any valid type value). Input frames can only
79
+ * contain BASE types of positive or null dimension. In all cases the type
80
+ * table contains only internal type names (array type descriptors are
81
+ * forbidden - dimensions must be represented through the DIM field).
82
+ *
83
+ * The LONG and DOUBLE types are always represented by using two slots (LONG +
84
+ * TOP or DOUBLE + TOP), for local variable types as well as in the operand
85
+ * stack. This is necessary to be able to simulate DUPx_y instructions,
86
+ * whose effect would be dependent on the actual type values if types were
87
+ * always represented by a single slot in the stack (and this is not
88
+ * possible, since actual type values are not always known - cf LOCAL and
89
+ * STACK type kinds).
90
+ */
91
+
92
+ /**
93
+ * Mask to get the dimension of a frame type. This dimension is a signed
94
+ * integer between -8 and 7.
95
+ */
96
+ final static int DIM = 0xF0000000;
97
+
98
+ /**
99
+ * Constant to be added to a type to get a type with one more dimension.
100
+ */
101
+ final static int ARRAY_OF = 0x10000000;
102
+
103
+ /**
104
+ * Constant to be added to a type to get a type with one less dimension.
105
+ */
106
+ final static int ELEMENT_OF = 0xF0000000;
107
+
108
+ /**
109
+ * Mask to get the kind of a frame type.
110
+ *
111
+ * @see #BASE
112
+ * @see #LOCAL
113
+ * @see #STACK
114
+ */
115
+ final static int KIND = 0xF000000;
116
+
117
+ /**
118
+ * Mask to get the value of a frame type.
119
+ */
120
+ final static int VALUE = 0xFFFFFF;
121
+
122
+ /**
123
+ * Mask to get the kind of base types.
124
+ */
125
+ final static int BASE_KIND = 0xFF00000;
126
+
127
+ /**
128
+ * Mask to get the value of base types.
129
+ */
130
+ final static int BASE_VALUE = 0xFFFFF;
131
+
132
+ /**
133
+ * Kind of the types that are not relative to an input stack map frame.
134
+ */
135
+ final static int BASE = 0x1000000;
136
+
137
+ /**
138
+ * Base kind of the base reference types. The BASE_VALUE of such types is an
139
+ * index into the type table.
140
+ */
141
+ final static int OBJECT = BASE | 0x700000;
142
+
143
+ /**
144
+ * Base kind of the uninitialized base types. The BASE_VALUE of such types
145
+ * in an index into the type table (the Item at that index contains both an
146
+ * instruction offset and an internal class name).
147
+ */
148
+ final static int UNINITIALIZED = BASE | 0x800000;
149
+
150
+ /**
151
+ * Kind of the types that are relative to the local variable types of an
152
+ * input stack map frame. The value of such types is a local variable index.
153
+ */
154
+ private final static int LOCAL = 0x2000000;
155
+
156
+ /**
157
+ * Kind of the the types that are relative to the stack of an input stack
158
+ * map frame. The value of such types is a position relatively to the top of
159
+ * this stack.
160
+ */
161
+ private final static int STACK = 0x3000000;
162
+
163
+ /**
164
+ * The TOP type. This is a BASE type.
165
+ */
166
+ final static int TOP = BASE | 0;
167
+
168
+ /**
169
+ * The BOOLEAN type. This is a BASE type mainly used for array types.
170
+ */
171
+ final static int BOOLEAN = BASE | 9;
172
+
173
+ /**
174
+ * The BYTE type. This is a BASE type mainly used for array types.
175
+ */
176
+ final static int BYTE = BASE | 10;
177
+
178
+ /**
179
+ * The CHAR type. This is a BASE type mainly used for array types.
180
+ */
181
+ final static int CHAR = BASE | 11;
182
+
183
+ /**
184
+ * The SHORT type. This is a BASE type mainly used for array types.
185
+ */
186
+ final static int SHORT = BASE | 12;
187
+
188
+ /**
189
+ * The INTEGER type. This is a BASE type.
190
+ */
191
+ final static int INTEGER = BASE | 1;
192
+
193
+ /**
194
+ * The FLOAT type. This is a BASE type.
195
+ */
196
+ final static int FLOAT = BASE | 2;
197
+
198
+ /**
199
+ * The DOUBLE type. This is a BASE type.
200
+ */
201
+ final static int DOUBLE = BASE | 3;
202
+
203
+ /**
204
+ * The LONG type. This is a BASE type.
205
+ */
206
+ final static int LONG = BASE | 4;
207
+
208
+ /**
209
+ * The NULL type. This is a BASE type.
210
+ */
211
+ final static int NULL = BASE | 5;
212
+
213
+ /**
214
+ * The UNINITIALIZED_THIS type. This is a BASE type.
215
+ */
216
+ final static int UNINITIALIZED_THIS = BASE | 6;
217
+
218
+ /**
219
+ * The stack size variation corresponding to each JVM instruction. This
220
+ * stack variation is equal to the size of the values produced by an
221
+ * instruction, minus the size of the values consumed by this instruction.
222
+ */
223
+ final static int[] SIZE;
224
+
225
+ /**
226
+ * Computes the stack size variation corresponding to each JVM instruction.
227
+ */
228
+ static
229
+ {
230
+ int i;
231
+ int[] b = new int[202];
232
+ String s = "EFFFFFFFFGGFFFGGFFFEEFGFGFEEEEEEEEEEEEEEEEEEEEDEDEDDDDD"
233
+ + "CDCDEEEEEEEEEEEEEEEEEEEEBABABBBBDCFFFGGGEDCDCDCDCDCDCDCDCD"
234
+ + "CDCEEEEDDDDDDDCDCDCEFEFDDEEFFDEDEEEBDDBBDDDDDDCCCCCCCCEFED"
235
+ + "DDCDCDEEEEEEEEEEFEEEEEEDDEEDDEE";
236
+ for(i = 0; i < b.length; ++i)
237
+ {
238
+ b[i] = s.charAt(i) - 'E';
239
+ }
240
+ SIZE = b;
241
+
242
+ // code to generate the above string
243
+ //
244
+ // int NA = 0; // not applicable (unused opcode or variable size opcode)
245
+ //
246
+ // b = new int[] {
247
+ // 0, //NOP, // visitInsn
248
+ // 1, //ACONST_NULL, // -
249
+ // 1, //ICONST_M1, // -
250
+ // 1, //ICONST_0, // -
251
+ // 1, //ICONST_1, // -
252
+ // 1, //ICONST_2, // -
253
+ // 1, //ICONST_3, // -
254
+ // 1, //ICONST_4, // -
255
+ // 1, //ICONST_5, // -
256
+ // 2, //LCONST_0, // -
257
+ // 2, //LCONST_1, // -
258
+ // 1, //FCONST_0, // -
259
+ // 1, //FCONST_1, // -
260
+ // 1, //FCONST_2, // -
261
+ // 2, //DCONST_0, // -
262
+ // 2, //DCONST_1, // -
263
+ // 1, //BIPUSH, // visitIntInsn
264
+ // 1, //SIPUSH, // -
265
+ // 1, //LDC, // visitLdcInsn
266
+ // NA, //LDC_W, // -
267
+ // NA, //LDC2_W, // -
268
+ // 1, //ILOAD, // visitVarInsn
269
+ // 2, //LLOAD, // -
270
+ // 1, //FLOAD, // -
271
+ // 2, //DLOAD, // -
272
+ // 1, //ALOAD, // -
273
+ // NA, //ILOAD_0, // -
274
+ // NA, //ILOAD_1, // -
275
+ // NA, //ILOAD_2, // -
276
+ // NA, //ILOAD_3, // -
277
+ // NA, //LLOAD_0, // -
278
+ // NA, //LLOAD_1, // -
279
+ // NA, //LLOAD_2, // -
280
+ // NA, //LLOAD_3, // -
281
+ // NA, //FLOAD_0, // -
282
+ // NA, //FLOAD_1, // -
283
+ // NA, //FLOAD_2, // -
284
+ // NA, //FLOAD_3, // -
285
+ // NA, //DLOAD_0, // -
286
+ // NA, //DLOAD_1, // -
287
+ // NA, //DLOAD_2, // -
288
+ // NA, //DLOAD_3, // -
289
+ // NA, //ALOAD_0, // -
290
+ // NA, //ALOAD_1, // -
291
+ // NA, //ALOAD_2, // -
292
+ // NA, //ALOAD_3, // -
293
+ // -1, //IALOAD, // visitInsn
294
+ // 0, //LALOAD, // -
295
+ // -1, //FALOAD, // -
296
+ // 0, //DALOAD, // -
297
+ // -1, //AALOAD, // -
298
+ // -1, //BALOAD, // -
299
+ // -1, //CALOAD, // -
300
+ // -1, //SALOAD, // -
301
+ // -1, //ISTORE, // visitVarInsn
302
+ // -2, //LSTORE, // -
303
+ // -1, //FSTORE, // -
304
+ // -2, //DSTORE, // -
305
+ // -1, //ASTORE, // -
306
+ // NA, //ISTORE_0, // -
307
+ // NA, //ISTORE_1, // -
308
+ // NA, //ISTORE_2, // -
309
+ // NA, //ISTORE_3, // -
310
+ // NA, //LSTORE_0, // -
311
+ // NA, //LSTORE_1, // -
312
+ // NA, //LSTORE_2, // -
313
+ // NA, //LSTORE_3, // -
314
+ // NA, //FSTORE_0, // -
315
+ // NA, //FSTORE_1, // -
316
+ // NA, //FSTORE_2, // -
317
+ // NA, //FSTORE_3, // -
318
+ // NA, //DSTORE_0, // -
319
+ // NA, //DSTORE_1, // -
320
+ // NA, //DSTORE_2, // -
321
+ // NA, //DSTORE_3, // -
322
+ // NA, //ASTORE_0, // -
323
+ // NA, //ASTORE_1, // -
324
+ // NA, //ASTORE_2, // -
325
+ // NA, //ASTORE_3, // -
326
+ // -3, //IASTORE, // visitInsn
327
+ // -4, //LASTORE, // -
328
+ // -3, //FASTORE, // -
329
+ // -4, //DASTORE, // -
330
+ // -3, //AASTORE, // -
331
+ // -3, //BASTORE, // -
332
+ // -3, //CASTORE, // -
333
+ // -3, //SASTORE, // -
334
+ // -1, //POP, // -
335
+ // -2, //POP2, // -
336
+ // 1, //DUP, // -
337
+ // 1, //DUP_X1, // -
338
+ // 1, //DUP_X2, // -
339
+ // 2, //DUP2, // -
340
+ // 2, //DUP2_X1, // -
341
+ // 2, //DUP2_X2, // -
342
+ // 0, //SWAP, // -
343
+ // -1, //IADD, // -
344
+ // -2, //LADD, // -
345
+ // -1, //FADD, // -
346
+ // -2, //DADD, // -
347
+ // -1, //ISUB, // -
348
+ // -2, //LSUB, // -
349
+ // -1, //FSUB, // -
350
+ // -2, //DSUB, // -
351
+ // -1, //IMUL, // -
352
+ // -2, //LMUL, // -
353
+ // -1, //FMUL, // -
354
+ // -2, //DMUL, // -
355
+ // -1, //IDIV, // -
356
+ // -2, //LDIV, // -
357
+ // -1, //FDIV, // -
358
+ // -2, //DDIV, // -
359
+ // -1, //IREM, // -
360
+ // -2, //LREM, // -
361
+ // -1, //FREM, // -
362
+ // -2, //DREM, // -
363
+ // 0, //INEG, // -
364
+ // 0, //LNEG, // -
365
+ // 0, //FNEG, // -
366
+ // 0, //DNEG, // -
367
+ // -1, //ISHL, // -
368
+ // -1, //LSHL, // -
369
+ // -1, //ISHR, // -
370
+ // -1, //LSHR, // -
371
+ // -1, //IUSHR, // -
372
+ // -1, //LUSHR, // -
373
+ // -1, //IAND, // -
374
+ // -2, //LAND, // -
375
+ // -1, //IOR, // -
376
+ // -2, //LOR, // -
377
+ // -1, //IXOR, // -
378
+ // -2, //LXOR, // -
379
+ // 0, //IINC, // visitIincInsn
380
+ // 1, //I2L, // visitInsn
381
+ // 0, //I2F, // -
382
+ // 1, //I2D, // -
383
+ // -1, //L2I, // -
384
+ // -1, //L2F, // -
385
+ // 0, //L2D, // -
386
+ // 0, //F2I, // -
387
+ // 1, //F2L, // -
388
+ // 1, //F2D, // -
389
+ // -1, //D2I, // -
390
+ // 0, //D2L, // -
391
+ // -1, //D2F, // -
392
+ // 0, //I2B, // -
393
+ // 0, //I2C, // -
394
+ // 0, //I2S, // -
395
+ // -3, //LCMP, // -
396
+ // -1, //FCMPL, // -
397
+ // -1, //FCMPG, // -
398
+ // -3, //DCMPL, // -
399
+ // -3, //DCMPG, // -
400
+ // -1, //IFEQ, // visitJumpInsn
401
+ // -1, //IFNE, // -
402
+ // -1, //IFLT, // -
403
+ // -1, //IFGE, // -
404
+ // -1, //IFGT, // -
405
+ // -1, //IFLE, // -
406
+ // -2, //IF_ICMPEQ, // -
407
+ // -2, //IF_ICMPNE, // -
408
+ // -2, //IF_ICMPLT, // -
409
+ // -2, //IF_ICMPGE, // -
410
+ // -2, //IF_ICMPGT, // -
411
+ // -2, //IF_ICMPLE, // -
412
+ // -2, //IF_ACMPEQ, // -
413
+ // -2, //IF_ACMPNE, // -
414
+ // 0, //GOTO, // -
415
+ // 1, //JSR, // -
416
+ // 0, //RET, // visitVarInsn
417
+ // -1, //TABLESWITCH, // visiTableSwitchInsn
418
+ // -1, //LOOKUPSWITCH, // visitLookupSwitch
419
+ // -1, //IRETURN, // visitInsn
420
+ // -2, //LRETURN, // -
421
+ // -1, //FRETURN, // -
422
+ // -2, //DRETURN, // -
423
+ // -1, //ARETURN, // -
424
+ // 0, //RETURN, // -
425
+ // NA, //GETSTATIC, // visitFieldInsn
426
+ // NA, //PUTSTATIC, // -
427
+ // NA, //GETFIELD, // -
428
+ // NA, //PUTFIELD, // -
429
+ // NA, //INVOKEVIRTUAL, // visitMethodInsn
430
+ // NA, //INVOKESPECIAL, // -
431
+ // NA, //INVOKESTATIC, // -
432
+ // NA, //INVOKEINTERFACE, // -
433
+ // NA, //UNUSED, // NOT VISITED
434
+ // 1, //NEW, // visitTypeInsn
435
+ // 0, //NEWARRAY, // visitIntInsn
436
+ // 0, //ANEWARRAY, // visitTypeInsn
437
+ // 0, //ARRAYLENGTH, // visitInsn
438
+ // NA, //ATHROW, // -
439
+ // 0, //CHECKCAST, // visitTypeInsn
440
+ // 0, //INSTANCEOF, // -
441
+ // -1, //MONITORENTER, // visitInsn
442
+ // -1, //MONITOREXIT, // -
443
+ // NA, //WIDE, // NOT VISITED
444
+ // NA, //MULTIANEWARRAY, // visitMultiANewArrayInsn
445
+ // -1, //IFNULL, // visitJumpInsn
446
+ // -1, //IFNONNULL, // -
447
+ // NA, //GOTO_W, // -
448
+ // NA, //JSR_W, // -
449
+ // };
450
+ // for (i = 0; i < b.length; ++i) {
451
+ // System.err.print((char)('E' + b[i]));
452
+ // }
453
+ // System.err.println();
454
+ }
455
+
456
+ /**
457
+ * The label (i.e. basic block) to which these input and output stack map
458
+ * frames correspond.
459
+ */
460
+ Label owner;
461
+
462
+ /**
463
+ * The input stack map frame locals.
464
+ */
465
+ int[] inputLocals;
466
+
467
+ /**
468
+ * The input stack map frame stack.
469
+ */
470
+ int[] inputStack;
471
+
472
+ /**
473
+ * The output stack map frame locals.
474
+ */
475
+ private int[] outputLocals;
476
+
477
+ /**
478
+ * The output stack map frame stack.
479
+ */
480
+ private int[] outputStack;
481
+
482
+ /**
483
+ * Relative size of the output stack. The exact semantics of this field
484
+ * depends on the algorithm that is used.
485
+ * <p/>
486
+ * When only the maximum stack size is computed, this field is the size of
487
+ * the output stack relatively to the top of the input stack.
488
+ * <p/>
489
+ * When the stack map frames are completely computed, this field is the
490
+ * actual number of types in {@link #outputStack}.
491
+ */
492
+ private int outputStackTop;
493
+
494
+ /**
495
+ * Number of types that are initialized in the basic block.
496
+ *
497
+ * @see #initializations
498
+ */
499
+ private int initializationCount;
500
+
501
+ /**
502
+ * The types that are initialized in the basic block. A constructor
503
+ * invocation on an UNINITIALIZED or UNINITIALIZED_THIS type must replace
504
+ * <i>every occurence</i> of this type in the local variables and in the
505
+ * operand stack. This cannot be done during the first phase of the
506
+ * algorithm since, during this phase, the local variables and the operand
507
+ * stack are not completely computed. It is therefore necessary to store the
508
+ * types on which constructors are invoked in the basic block, in order to
509
+ * do this replacement during the second phase of the algorithm, where the
510
+ * frames are fully computed. Note that this array can contain types that
511
+ * are relative to input locals or to the input stack (see below for the
512
+ * description of the algorithm).
513
+ */
514
+ private int[] initializations;
515
+
516
+ /**
517
+ * Returns the output frame local variable type at the given index.
518
+ *
519
+ * @param local the index of the local that must be returned.
520
+ * @return the output frame local variable type at the given index.
521
+ */
522
+ private int get(final int local){
523
+ if(outputLocals == null || local >= outputLocals.length)
524
+ {
525
+ // this local has never been assigned in this basic block,
526
+ // so it is still equal to its value in the input frame
527
+ return LOCAL | local;
528
+ }
529
+ else
530
+ {
531
+ int type = outputLocals[local];
532
+ if(type == 0)
533
+ {
534
+ // this local has never been assigned in this basic block,
535
+ // so it is still equal to its value in the input frame
536
+ type = outputLocals[local] = LOCAL | local;
537
+ }
538
+ return type;
539
+ }
540
+ }
541
+
542
+ /**
543
+ * Sets the output frame local variable type at the given index.
544
+ *
545
+ * @param local the index of the local that must be set.
546
+ * @param type the value of the local that must be set.
547
+ */
548
+ private void set(final int local, final int type){
549
+ // creates and/or resizes the output local variables array if necessary
550
+ if(outputLocals == null)
551
+ {
552
+ outputLocals = new int[10];
553
+ }
554
+ int n = outputLocals.length;
555
+ if(local >= n)
556
+ {
557
+ int[] t = new int[Math.max(local + 1, 2 * n)];
558
+ System.arraycopy(outputLocals, 0, t, 0, n);
559
+ outputLocals = t;
560
+ }
561
+ // sets the local variable
562
+ outputLocals[local] = type;
563
+ }
564
+
565
+ /**
566
+ * Pushes a new type onto the output frame stack.
567
+ *
568
+ * @param type the type that must be pushed.
569
+ */
570
+ private void push(final int type){
571
+ // creates and/or resizes the output stack array if necessary
572
+ if(outputStack == null)
573
+ {
574
+ outputStack = new int[10];
575
+ }
576
+ int n = outputStack.length;
577
+ if(outputStackTop >= n)
578
+ {
579
+ int[] t = new int[Math.max(outputStackTop + 1, 2 * n)];
580
+ System.arraycopy(outputStack, 0, t, 0, n);
581
+ outputStack = t;
582
+ }
583
+ // pushes the type on the output stack
584
+ outputStack[outputStackTop++] = type;
585
+ // updates the maximun height reached by the output stack, if needed
586
+ int top = owner.inputStackTop + outputStackTop;
587
+ if(top > owner.outputStackMax)
588
+ {
589
+ owner.outputStackMax = top;
590
+ }
591
+ }
592
+
593
+ /**
594
+ * Pushes a new type onto the output frame stack.
595
+ *
596
+ * @param cw the ClassWriter to which this label belongs.
597
+ * @param desc the descriptor of the type to be pushed. Can also be a method
598
+ * descriptor (in this case this method pushes its return type onto
599
+ * the output frame stack).
600
+ */
601
+ private void push(final ClassWriter cw, final String desc){
602
+ int type = type(cw, desc);
603
+ if(type != 0)
604
+ {
605
+ push(type);
606
+ if(type == LONG || type == DOUBLE)
607
+ {
608
+ push(TOP);
609
+ }
610
+ }
611
+ }
612
+
613
+ /**
614
+ * Returns the int encoding of the given type.
615
+ *
616
+ * @param cw the ClassWriter to which this label belongs.
617
+ * @param desc a type descriptor.
618
+ * @return the int encoding of the given type.
619
+ */
620
+ private int type(final ClassWriter cw, final String desc){
621
+ String t;
622
+ int index = desc.charAt(0) == '(' ? desc.indexOf(')') + 1 : 0;
623
+ switch(desc.charAt(index))
624
+ {
625
+ case'V':
626
+ return 0;
627
+ case'Z':
628
+ case'C':
629
+ case'B':
630
+ case'S':
631
+ case'I':
632
+ return INTEGER;
633
+ case'F':
634
+ return FLOAT;
635
+ case'J':
636
+ return LONG;
637
+ case'D':
638
+ return DOUBLE;
639
+ case'L':
640
+ // stores the internal name, not the descriptor!
641
+ t = desc.substring(index + 1, desc.length() - 1);
642
+ return OBJECT | cw.addType(t);
643
+ // case '[':
644
+ default:
645
+ // extracts the dimensions and the element type
646
+ int data;
647
+ int dims = index + 1;
648
+ while(desc.charAt(dims) == '[')
649
+ {
650
+ ++dims;
651
+ }
652
+ switch(desc.charAt(dims))
653
+ {
654
+ case'Z':
655
+ data = BOOLEAN;
656
+ break;
657
+ case'C':
658
+ data = CHAR;
659
+ break;
660
+ case'B':
661
+ data = BYTE;
662
+ break;
663
+ case'S':
664
+ data = SHORT;
665
+ break;
666
+ case'I':
667
+ data = INTEGER;
668
+ break;
669
+ case'F':
670
+ data = FLOAT;
671
+ break;
672
+ case'J':
673
+ data = LONG;
674
+ break;
675
+ case'D':
676
+ data = DOUBLE;
677
+ break;
678
+ // case 'L':
679
+ default:
680
+ // stores the internal name, not the descriptor
681
+ t = desc.substring(dims + 1, desc.length() - 1);
682
+ data = OBJECT | cw.addType(t);
683
+ }
684
+ return (dims - index) << 28 | data;
685
+ }
686
+ }
687
+
688
+ /**
689
+ * Pops a type from the output frame stack and returns its value.
690
+ *
691
+ * @return the type that has been popped from the output frame stack.
692
+ */
693
+ private int pop(){
694
+ if(outputStackTop > 0)
695
+ {
696
+ return outputStack[--outputStackTop];
697
+ }
698
+ else
699
+ {
700
+ // if the output frame stack is empty, pops from the input stack
701
+ return STACK | -(--owner.inputStackTop);
702
+ }
703
+ }
704
+
705
+ /**
706
+ * Pops the given number of types from the output frame stack.
707
+ *
708
+ * @param elements the number of types that must be popped.
709
+ */
710
+ private void pop(final int elements){
711
+ if(outputStackTop >= elements)
712
+ {
713
+ outputStackTop -= elements;
714
+ }
715
+ else
716
+ {
717
+ // if the number of elements to be popped is greater than the number
718
+ // of elements in the output stack, clear it, and pops the remaining
719
+ // elements from the input stack.
720
+ owner.inputStackTop -= elements - outputStackTop;
721
+ outputStackTop = 0;
722
+ }
723
+ }
724
+
725
+ /**
726
+ * Pops a type from the output frame stack.
727
+ *
728
+ * @param desc the descriptor of the type to be popped. Can also be a method
729
+ * descriptor (in this case this method pops the types corresponding
730
+ * to the method arguments).
731
+ */
732
+ private void pop(final String desc){
733
+ char c = desc.charAt(0);
734
+ if(c == '(')
735
+ {
736
+ pop((MethodWriter.getArgumentsAndReturnSizes(desc) >> 2) - 1);
737
+ }
738
+ else if(c == 'J' || c == 'D')
739
+ {
740
+ pop(2);
741
+ }
742
+ else
743
+ {
744
+ pop(1);
745
+ }
746
+ }
747
+
748
+ /**
749
+ * Adds a new type to the list of types on which a constructor is invoked in
750
+ * the basic block.
751
+ *
752
+ * @param var a type on a which a constructor is invoked.
753
+ */
754
+ private void init(final int var){
755
+ // creates and/or resizes the initializations array if necessary
756
+ if(initializations == null)
757
+ {
758
+ initializations = new int[2];
759
+ }
760
+ int n = initializations.length;
761
+ if(initializationCount >= n)
762
+ {
763
+ int[] t = new int[Math.max(initializationCount + 1, 2 * n)];
764
+ System.arraycopy(initializations, 0, t, 0, n);
765
+ initializations = t;
766
+ }
767
+ // stores the type to be initialized
768
+ initializations[initializationCount++] = var;
769
+ }
770
+
771
+ /**
772
+ * Replaces the given type with the appropriate type if it is one of the
773
+ * types on which a constructor is invoked in the basic block.
774
+ *
775
+ * @param cw the ClassWriter to which this label belongs.
776
+ * @param t a type
777
+ * @return t or, if t is one of the types on which a constructor is invoked
778
+ * in the basic block, the type corresponding to this constructor.
779
+ */
780
+ private int init(final ClassWriter cw, final int t){
781
+ int s;
782
+ if(t == UNINITIALIZED_THIS)
783
+ {
784
+ s = OBJECT | cw.addType(cw.thisName);
785
+ }
786
+ else if((t & (DIM | BASE_KIND)) == UNINITIALIZED)
787
+ {
788
+ String type = cw.typeTable[t & BASE_VALUE].strVal1;
789
+ s = OBJECT | cw.addType(type);
790
+ }
791
+ else
792
+ {
793
+ return t;
794
+ }
795
+ for(int j = 0; j < initializationCount; ++j)
796
+ {
797
+ int u = initializations[j];
798
+ int dim = u & DIM;
799
+ int kind = u & KIND;
800
+ if(kind == LOCAL)
801
+ {
802
+ u = dim + inputLocals[u & VALUE];
803
+ }
804
+ else if(kind == STACK)
805
+ {
806
+ u = dim + inputStack[inputStack.length - (u & VALUE)];
807
+ }
808
+ if(t == u)
809
+ {
810
+ return s;
811
+ }
812
+ }
813
+ return t;
814
+ }
815
+
816
+ /**
817
+ * Initializes the input frame of the first basic block from the method
818
+ * descriptor.
819
+ *
820
+ * @param cw the ClassWriter to which this label belongs.
821
+ * @param access the access flags of the method to which this label belongs.
822
+ * @param args the formal parameter types of this method.
823
+ * @param maxLocals the maximum number of local variables of this method.
824
+ */
825
+ void initInputFrame(
826
+ final ClassWriter cw,
827
+ final int access,
828
+ final Type[] args,
829
+ final int maxLocals){
830
+ inputLocals = new int[maxLocals];
831
+ inputStack = new int[0];
832
+ int i = 0;
833
+ if((access & Opcodes.ACC_STATIC) == 0)
834
+ {
835
+ if((access & MethodWriter.ACC_CONSTRUCTOR) == 0)
836
+ {
837
+ inputLocals[i++] = OBJECT | cw.addType(cw.thisName);
838
+ }
839
+ else
840
+ {
841
+ inputLocals[i++] = UNINITIALIZED_THIS;
842
+ }
843
+ }
844
+ for(int j = 0; j < args.length; ++j)
845
+ {
846
+ int t = type(cw, args[j].getDescriptor());
847
+ inputLocals[i++] = t;
848
+ if(t == LONG || t == DOUBLE)
849
+ {
850
+ inputLocals[i++] = TOP;
851
+ }
852
+ }
853
+ while(i < maxLocals)
854
+ {
855
+ inputLocals[i++] = TOP;
856
+ }
857
+ }
858
+
859
+ /**
860
+ * Simulates the action of the given instruction on the output stack frame.
861
+ *
862
+ * @param opcode the opcode of the instruction.
863
+ * @param arg the operand of the instruction, if any.
864
+ * @param cw the class writer to which this label belongs.
865
+ * @param item the operand of the instructions, if any.
866
+ */
867
+ void execute(
868
+ final int opcode,
869
+ final int arg,
870
+ final ClassWriter cw,
871
+ final Item item){
872
+ int t1, t2, t3, t4;
873
+ switch(opcode)
874
+ {
875
+ case Opcodes.NOP:
876
+ case Opcodes.INEG:
877
+ case Opcodes.LNEG:
878
+ case Opcodes.FNEG:
879
+ case Opcodes.DNEG:
880
+ case Opcodes.I2B:
881
+ case Opcodes.I2C:
882
+ case Opcodes.I2S:
883
+ case Opcodes.GOTO:
884
+ case Opcodes.RETURN:
885
+ break;
886
+ case Opcodes.ACONST_NULL:
887
+ push(NULL);
888
+ break;
889
+ case Opcodes.ICONST_M1:
890
+ case Opcodes.ICONST_0:
891
+ case Opcodes.ICONST_1:
892
+ case Opcodes.ICONST_2:
893
+ case Opcodes.ICONST_3:
894
+ case Opcodes.ICONST_4:
895
+ case Opcodes.ICONST_5:
896
+ case Opcodes.BIPUSH:
897
+ case Opcodes.SIPUSH:
898
+ case Opcodes.ILOAD:
899
+ push(INTEGER);
900
+ break;
901
+ case Opcodes.LCONST_0:
902
+ case Opcodes.LCONST_1:
903
+ case Opcodes.LLOAD:
904
+ push(LONG);
905
+ push(TOP);
906
+ break;
907
+ case Opcodes.FCONST_0:
908
+ case Opcodes.FCONST_1:
909
+ case Opcodes.FCONST_2:
910
+ case Opcodes.FLOAD:
911
+ push(FLOAT);
912
+ break;
913
+ case Opcodes.DCONST_0:
914
+ case Opcodes.DCONST_1:
915
+ case Opcodes.DLOAD:
916
+ push(DOUBLE);
917
+ push(TOP);
918
+ break;
919
+ case Opcodes.LDC:
920
+ switch(item.type)
921
+ {
922
+ case ClassWriter.INT:
923
+ push(INTEGER);
924
+ break;
925
+ case ClassWriter.LONG:
926
+ push(LONG);
927
+ push(TOP);
928
+ break;
929
+ case ClassWriter.FLOAT:
930
+ push(FLOAT);
931
+ break;
932
+ case ClassWriter.DOUBLE:
933
+ push(DOUBLE);
934
+ push(TOP);
935
+ break;
936
+ case ClassWriter.CLASS:
937
+ push(OBJECT | cw.addType("java/lang/Class"));
938
+ break;
939
+ // case ClassWriter.STR:
940
+ default:
941
+ push(OBJECT | cw.addType("java/lang/String"));
942
+ }
943
+ break;
944
+ case Opcodes.ALOAD:
945
+ push(get(arg));
946
+ break;
947
+ case Opcodes.IALOAD:
948
+ case Opcodes.BALOAD:
949
+ case Opcodes.CALOAD:
950
+ case Opcodes.SALOAD:
951
+ pop(2);
952
+ push(INTEGER);
953
+ break;
954
+ case Opcodes.LALOAD:
955
+ case Opcodes.D2L:
956
+ pop(2);
957
+ push(LONG);
958
+ push(TOP);
959
+ break;
960
+ case Opcodes.FALOAD:
961
+ pop(2);
962
+ push(FLOAT);
963
+ break;
964
+ case Opcodes.DALOAD:
965
+ case Opcodes.L2D:
966
+ pop(2);
967
+ push(DOUBLE);
968
+ push(TOP);
969
+ break;
970
+ case Opcodes.AALOAD:
971
+ pop(1);
972
+ t1 = pop();
973
+ push(ELEMENT_OF + t1);
974
+ break;
975
+ case Opcodes.ISTORE:
976
+ case Opcodes.FSTORE:
977
+ case Opcodes.ASTORE:
978
+ t1 = pop();
979
+ set(arg, t1);
980
+ if(arg > 0)
981
+ {
982
+ t2 = get(arg - 1);
983
+ // if t2 is of kind STACK or LOCAL we cannot know its size!
984
+ if(t2 == LONG || t2 == DOUBLE)
985
+ {
986
+ set(arg - 1, TOP);
987
+ }
988
+ }
989
+ break;
990
+ case Opcodes.LSTORE:
991
+ case Opcodes.DSTORE:
992
+ pop(1);
993
+ t1 = pop();
994
+ set(arg, t1);
995
+ set(arg + 1, TOP);
996
+ if(arg > 0)
997
+ {
998
+ t2 = get(arg - 1);
999
+ // if t2 is of kind STACK or LOCAL we cannot know its size!
1000
+ if(t2 == LONG || t2 == DOUBLE)
1001
+ {
1002
+ set(arg - 1, TOP);
1003
+ }
1004
+ }
1005
+ break;
1006
+ case Opcodes.IASTORE:
1007
+ case Opcodes.BASTORE:
1008
+ case Opcodes.CASTORE:
1009
+ case Opcodes.SASTORE:
1010
+ case Opcodes.FASTORE:
1011
+ case Opcodes.AASTORE:
1012
+ pop(3);
1013
+ break;
1014
+ case Opcodes.LASTORE:
1015
+ case Opcodes.DASTORE:
1016
+ pop(4);
1017
+ break;
1018
+ case Opcodes.POP:
1019
+ case Opcodes.IFEQ:
1020
+ case Opcodes.IFNE:
1021
+ case Opcodes.IFLT:
1022
+ case Opcodes.IFGE:
1023
+ case Opcodes.IFGT:
1024
+ case Opcodes.IFLE:
1025
+ case Opcodes.IRETURN:
1026
+ case Opcodes.FRETURN:
1027
+ case Opcodes.ARETURN:
1028
+ case Opcodes.TABLESWITCH:
1029
+ case Opcodes.LOOKUPSWITCH:
1030
+ case Opcodes.ATHROW:
1031
+ case Opcodes.MONITORENTER:
1032
+ case Opcodes.MONITOREXIT:
1033
+ case Opcodes.IFNULL:
1034
+ case Opcodes.IFNONNULL:
1035
+ pop(1);
1036
+ break;
1037
+ case Opcodes.POP2:
1038
+ case Opcodes.IF_ICMPEQ:
1039
+ case Opcodes.IF_ICMPNE:
1040
+ case Opcodes.IF_ICMPLT:
1041
+ case Opcodes.IF_ICMPGE:
1042
+ case Opcodes.IF_ICMPGT:
1043
+ case Opcodes.IF_ICMPLE:
1044
+ case Opcodes.IF_ACMPEQ:
1045
+ case Opcodes.IF_ACMPNE:
1046
+ case Opcodes.LRETURN:
1047
+ case Opcodes.DRETURN:
1048
+ pop(2);
1049
+ break;
1050
+ case Opcodes.DUP:
1051
+ t1 = pop();
1052
+ push(t1);
1053
+ push(t1);
1054
+ break;
1055
+ case Opcodes.DUP_X1:
1056
+ t1 = pop();
1057
+ t2 = pop();
1058
+ push(t1);
1059
+ push(t2);
1060
+ push(t1);
1061
+ break;
1062
+ case Opcodes.DUP_X2:
1063
+ t1 = pop();
1064
+ t2 = pop();
1065
+ t3 = pop();
1066
+ push(t1);
1067
+ push(t3);
1068
+ push(t2);
1069
+ push(t1);
1070
+ break;
1071
+ case Opcodes.DUP2:
1072
+ t1 = pop();
1073
+ t2 = pop();
1074
+ push(t2);
1075
+ push(t1);
1076
+ push(t2);
1077
+ push(t1);
1078
+ break;
1079
+ case Opcodes.DUP2_X1:
1080
+ t1 = pop();
1081
+ t2 = pop();
1082
+ t3 = pop();
1083
+ push(t2);
1084
+ push(t1);
1085
+ push(t3);
1086
+ push(t2);
1087
+ push(t1);
1088
+ break;
1089
+ case Opcodes.DUP2_X2:
1090
+ t1 = pop();
1091
+ t2 = pop();
1092
+ t3 = pop();
1093
+ t4 = pop();
1094
+ push(t2);
1095
+ push(t1);
1096
+ push(t4);
1097
+ push(t3);
1098
+ push(t2);
1099
+ push(t1);
1100
+ break;
1101
+ case Opcodes.SWAP:
1102
+ t1 = pop();
1103
+ t2 = pop();
1104
+ push(t1);
1105
+ push(t2);
1106
+ break;
1107
+ case Opcodes.IADD:
1108
+ case Opcodes.ISUB:
1109
+ case Opcodes.IMUL:
1110
+ case Opcodes.IDIV:
1111
+ case Opcodes.IREM:
1112
+ case Opcodes.IAND:
1113
+ case Opcodes.IOR:
1114
+ case Opcodes.IXOR:
1115
+ case Opcodes.ISHL:
1116
+ case Opcodes.ISHR:
1117
+ case Opcodes.IUSHR:
1118
+ case Opcodes.L2I:
1119
+ case Opcodes.D2I:
1120
+ case Opcodes.FCMPL:
1121
+ case Opcodes.FCMPG:
1122
+ pop(2);
1123
+ push(INTEGER);
1124
+ break;
1125
+ case Opcodes.LADD:
1126
+ case Opcodes.LSUB:
1127
+ case Opcodes.LMUL:
1128
+ case Opcodes.LDIV:
1129
+ case Opcodes.LREM:
1130
+ case Opcodes.LAND:
1131
+ case Opcodes.LOR:
1132
+ case Opcodes.LXOR:
1133
+ pop(4);
1134
+ push(LONG);
1135
+ push(TOP);
1136
+ break;
1137
+ case Opcodes.FADD:
1138
+ case Opcodes.FSUB:
1139
+ case Opcodes.FMUL:
1140
+ case Opcodes.FDIV:
1141
+ case Opcodes.FREM:
1142
+ case Opcodes.L2F:
1143
+ case Opcodes.D2F:
1144
+ pop(2);
1145
+ push(FLOAT);
1146
+ break;
1147
+ case Opcodes.DADD:
1148
+ case Opcodes.DSUB:
1149
+ case Opcodes.DMUL:
1150
+ case Opcodes.DDIV:
1151
+ case Opcodes.DREM:
1152
+ pop(4);
1153
+ push(DOUBLE);
1154
+ push(TOP);
1155
+ break;
1156
+ case Opcodes.LSHL:
1157
+ case Opcodes.LSHR:
1158
+ case Opcodes.LUSHR:
1159
+ pop(3);
1160
+ push(LONG);
1161
+ push(TOP);
1162
+ break;
1163
+ case Opcodes.IINC:
1164
+ set(arg, INTEGER);
1165
+ break;
1166
+ case Opcodes.I2L:
1167
+ case Opcodes.F2L:
1168
+ pop(1);
1169
+ push(LONG);
1170
+ push(TOP);
1171
+ break;
1172
+ case Opcodes.I2F:
1173
+ pop(1);
1174
+ push(FLOAT);
1175
+ break;
1176
+ case Opcodes.I2D:
1177
+ case Opcodes.F2D:
1178
+ pop(1);
1179
+ push(DOUBLE);
1180
+ push(TOP);
1181
+ break;
1182
+ case Opcodes.F2I:
1183
+ case Opcodes.ARRAYLENGTH:
1184
+ case Opcodes.INSTANCEOF:
1185
+ pop(1);
1186
+ push(INTEGER);
1187
+ break;
1188
+ case Opcodes.LCMP:
1189
+ case Opcodes.DCMPL:
1190
+ case Opcodes.DCMPG:
1191
+ pop(4);
1192
+ push(INTEGER);
1193
+ break;
1194
+ case Opcodes.JSR:
1195
+ case Opcodes.RET:
1196
+ throw new RuntimeException("JSR/RET are not supported with computeFrames option");
1197
+ case Opcodes.GETSTATIC:
1198
+ push(cw, item.strVal3);
1199
+ break;
1200
+ case Opcodes.PUTSTATIC:
1201
+ pop(item.strVal3);
1202
+ break;
1203
+ case Opcodes.GETFIELD:
1204
+ pop(1);
1205
+ push(cw, item.strVal3);
1206
+ break;
1207
+ case Opcodes.PUTFIELD:
1208
+ pop(item.strVal3);
1209
+ pop();
1210
+ break;
1211
+ case Opcodes.INVOKEVIRTUAL:
1212
+ case Opcodes.INVOKESPECIAL:
1213
+ case Opcodes.INVOKESTATIC:
1214
+ case Opcodes.INVOKEINTERFACE:
1215
+ pop(item.strVal3);
1216
+ if(opcode != Opcodes.INVOKESTATIC)
1217
+ {
1218
+ t1 = pop();
1219
+ if(opcode == Opcodes.INVOKESPECIAL
1220
+ && item.strVal2.charAt(0) == '<')
1221
+ {
1222
+ init(t1);
1223
+ }
1224
+ }
1225
+ push(cw, item.strVal3);
1226
+ break;
1227
+ case Opcodes.NEW:
1228
+ push(UNINITIALIZED | cw.addUninitializedType(item.strVal1, arg));
1229
+ break;
1230
+ case Opcodes.NEWARRAY:
1231
+ pop();
1232
+ switch(arg)
1233
+ {
1234
+ case Opcodes.T_BOOLEAN:
1235
+ push(ARRAY_OF | BOOLEAN);
1236
+ break;
1237
+ case Opcodes.T_CHAR:
1238
+ push(ARRAY_OF | CHAR);
1239
+ break;
1240
+ case Opcodes.T_BYTE:
1241
+ push(ARRAY_OF | BYTE);
1242
+ break;
1243
+ case Opcodes.T_SHORT:
1244
+ push(ARRAY_OF | SHORT);
1245
+ break;
1246
+ case Opcodes.T_INT:
1247
+ push(ARRAY_OF | INTEGER);
1248
+ break;
1249
+ case Opcodes.T_FLOAT:
1250
+ push(ARRAY_OF | FLOAT);
1251
+ break;
1252
+ case Opcodes.T_DOUBLE:
1253
+ push(ARRAY_OF | DOUBLE);
1254
+ break;
1255
+ // case Opcodes.T_LONG:
1256
+ default:
1257
+ push(ARRAY_OF | LONG);
1258
+ break;
1259
+ }
1260
+ break;
1261
+ case Opcodes.ANEWARRAY:
1262
+ String s = item.strVal1;
1263
+ pop();
1264
+ if(s.charAt(0) == '[')
1265
+ {
1266
+ push(cw, "[" + s);
1267
+ }
1268
+ else
1269
+ {
1270
+ push(ARRAY_OF | OBJECT | cw.addType(s));
1271
+ }
1272
+ break;
1273
+ case Opcodes.CHECKCAST:
1274
+ s = item.strVal1;
1275
+ pop();
1276
+ if(s.charAt(0) == '[')
1277
+ {
1278
+ push(cw, s);
1279
+ }
1280
+ else
1281
+ {
1282
+ push(OBJECT | cw.addType(s));
1283
+ }
1284
+ break;
1285
+ // case Opcodes.MULTIANEWARRAY:
1286
+ default:
1287
+ pop(arg);
1288
+ push(cw, item.strVal1);
1289
+ break;
1290
+ }
1291
+ }
1292
+
1293
+ /**
1294
+ * Merges the input frame of the given basic block with the input and output
1295
+ * frames of this basic block. Returns <tt>true</tt> if the input frame of
1296
+ * the given label has been changed by this operation.
1297
+ *
1298
+ * @param cw the ClassWriter to which this label belongs.
1299
+ * @param frame the basic block whose input frame must be updated.
1300
+ * @param edge the kind of the {@link Edge} between this label and 'label'.
1301
+ * See {@link Edge#info}.
1302
+ * @return <tt>true</tt> if the input frame of the given label has been
1303
+ * changed by this operation.
1304
+ */
1305
+ boolean merge(final ClassWriter cw, final Frame frame, final int edge){
1306
+ boolean changed = false;
1307
+ int i, s, dim, kind, t;
1308
+
1309
+ int nLocal = inputLocals.length;
1310
+ int nStack = inputStack.length;
1311
+ if(frame.inputLocals == null)
1312
+ {
1313
+ frame.inputLocals = new int[nLocal];
1314
+ changed = true;
1315
+ }
1316
+
1317
+ for(i = 0; i < nLocal; ++i)
1318
+ {
1319
+ if(outputLocals != null && i < outputLocals.length)
1320
+ {
1321
+ s = outputLocals[i];
1322
+ if(s == 0)
1323
+ {
1324
+ t = inputLocals[i];
1325
+ }
1326
+ else
1327
+ {
1328
+ dim = s & DIM;
1329
+ kind = s & KIND;
1330
+ if(kind == LOCAL)
1331
+ {
1332
+ t = dim + inputLocals[s & VALUE];
1333
+ }
1334
+ else if(kind == STACK)
1335
+ {
1336
+ t = dim + inputStack[nStack - (s & VALUE)];
1337
+ }
1338
+ else
1339
+ {
1340
+ t = s;
1341
+ }
1342
+ }
1343
+ }
1344
+ else
1345
+ {
1346
+ t = inputLocals[i];
1347
+ }
1348
+ if(initializations != null)
1349
+ {
1350
+ t = init(cw, t);
1351
+ }
1352
+ changed |= merge(cw, t, frame.inputLocals, i);
1353
+ }
1354
+
1355
+ if(edge > 0)
1356
+ {
1357
+ for(i = 0; i < nLocal; ++i)
1358
+ {
1359
+ t = inputLocals[i];
1360
+ changed |= merge(cw, t, frame.inputLocals, i);
1361
+ }
1362
+ if(frame.inputStack == null)
1363
+ {
1364
+ frame.inputStack = new int[1];
1365
+ changed = true;
1366
+ }
1367
+ changed |= merge(cw, edge, frame.inputStack, 0);
1368
+ return changed;
1369
+ }
1370
+
1371
+ int nInputStack = inputStack.length + owner.inputStackTop;
1372
+ if(frame.inputStack == null)
1373
+ {
1374
+ frame.inputStack = new int[nInputStack + outputStackTop];
1375
+ changed = true;
1376
+ }
1377
+
1378
+ for(i = 0; i < nInputStack; ++i)
1379
+ {
1380
+ t = inputStack[i];
1381
+ if(initializations != null)
1382
+ {
1383
+ t = init(cw, t);
1384
+ }
1385
+ changed |= merge(cw, t, frame.inputStack, i);
1386
+ }
1387
+ for(i = 0; i < outputStackTop; ++i)
1388
+ {
1389
+ s = outputStack[i];
1390
+ dim = s & DIM;
1391
+ kind = s & KIND;
1392
+ if(kind == LOCAL)
1393
+ {
1394
+ t = dim + inputLocals[s & VALUE];
1395
+ }
1396
+ else if(kind == STACK)
1397
+ {
1398
+ t = dim + inputStack[nStack - (s & VALUE)];
1399
+ }
1400
+ else
1401
+ {
1402
+ t = s;
1403
+ }
1404
+ if(initializations != null)
1405
+ {
1406
+ t = init(cw, t);
1407
+ }
1408
+ changed |= merge(cw, t, frame.inputStack, nInputStack + i);
1409
+ }
1410
+ return changed;
1411
+ }
1412
+
1413
+ /**
1414
+ * Merges the type at the given index in the given type array with the given
1415
+ * type. Returns <tt>true</tt> if the type array has been modified by this
1416
+ * operation.
1417
+ *
1418
+ * @param cw the ClassWriter to which this label belongs.
1419
+ * @param t the type with which the type array element must be merged.
1420
+ * @param types an array of types.
1421
+ * @param index the index of the type that must be merged in 'types'.
1422
+ * @return <tt>true</tt> if the type array has been modified by this
1423
+ * operation.
1424
+ */
1425
+ private boolean merge(
1426
+ final ClassWriter cw,
1427
+ int t,
1428
+ final int[] types,
1429
+ final int index){
1430
+ int u = types[index];
1431
+ if(u == t)
1432
+ {
1433
+ // if the types are equal, merge(u,t)=u, so there is no change
1434
+ return false;
1435
+ }
1436
+ if((t & ~DIM) == NULL)
1437
+ {
1438
+ if(u == NULL)
1439
+ {
1440
+ return false;
1441
+ }
1442
+ t = NULL;
1443
+ }
1444
+ if(u == 0)
1445
+ {
1446
+ // if types[index] has never been assigned, merge(u,t)=t
1447
+ types[index] = t;
1448
+ return true;
1449
+ }
1450
+ int v;
1451
+ if((u & BASE_KIND) == OBJECT || (u & DIM) != 0)
1452
+ {
1453
+ // if u is a reference type of any dimension
1454
+ if(t == NULL)
1455
+ {
1456
+ // if t is the NULL type, merge(u,t)=u, so there is no change
1457
+ return false;
1458
+ }
1459
+ else if((t & (DIM | BASE_KIND)) == (u & (DIM | BASE_KIND)))
1460
+ {
1461
+ if((u & BASE_KIND) == OBJECT)
1462
+ {
1463
+ // if t is also a reference type, and if u and t have the
1464
+ // same dimension merge(u,t) = dim(t) | common parent of the
1465
+ // element types of u and t
1466
+ v = (t & DIM) | OBJECT
1467
+ | cw.getMergedType(t & BASE_VALUE, u & BASE_VALUE);
1468
+ }
1469
+ else
1470
+ {
1471
+ // if u and t are array types, but not with the same element
1472
+ // type, merge(u,t)=java/lang/Object
1473
+ v = OBJECT | cw.addType("java/lang/Object");
1474
+ }
1475
+ }
1476
+ else if((t & BASE_KIND) == OBJECT || (t & DIM) != 0)
1477
+ {
1478
+ // if t is any other reference or array type,
1479
+ // merge(u,t)=java/lang/Object
1480
+ v = OBJECT | cw.addType("java/lang/Object");
1481
+ }
1482
+ else
1483
+ {
1484
+ // if t is any other type, merge(u,t)=TOP
1485
+ v = TOP;
1486
+ }
1487
+ }
1488
+ else if(u == NULL)
1489
+ {
1490
+ // if u is the NULL type, merge(u,t)=t,
1491
+ // or TOP if t is not a reference type
1492
+ v = (t & BASE_KIND) == OBJECT || (t & DIM) != 0 ? t : TOP;
1493
+ }
1494
+ else
1495
+ {
1496
+ // if u is any other type, merge(u,t)=TOP whatever t
1497
+ v = TOP;
1498
+ }
1499
+ if(u != v)
1500
+ {
1501
+ types[index] = v;
1502
+ return true;
1503
+ }
1504
+ return false;
1505
+ }
1506
+ }