ruby-internal 0.7.3 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (254) hide show
  1. data/bin/ruby-internal-node-dump +1 -1
  2. data/bin/ruby-internal-obfuscate +1 -1
  3. data/ext/cached/ruby-1.8.4/internal/method/{method.h → internal_method.h} +12 -0
  4. data/ext/cached/ruby-1.8.4/internal/module/getcfp.h +13 -0
  5. data/ext/cached/ruby-1.8.4/internal/node/global_entry.h +94 -0
  6. data/ext/cached/ruby-1.8.4/internal/node/node_type_descrip.c +41 -41
  7. data/ext/cached/ruby-1.8.4/internal/node/nodeinfo.c +288 -273
  8. data/ext/cached/ruby-1.8.4/internal/vm/instruction/insns_info.c +3 -0
  9. data/ext/cached/ruby-1.8.4/internal/vm/iseq/iseq_load.inc +21 -2
  10. data/ext/cached/{ruby-1.8.3/internal/method/method.h → ruby-1.8.5/internal/method/internal_method.h} +12 -0
  11. data/ext/cached/ruby-1.8.5/internal/module/getcfp.h +13 -0
  12. data/ext/cached/ruby-1.8.5/internal/node/global_entry.h +94 -0
  13. data/ext/cached/ruby-1.8.5/internal/node/node_type_descrip.c +45 -45
  14. data/ext/cached/ruby-1.8.5/internal/node/nodeinfo.c +310 -295
  15. data/ext/cached/ruby-1.8.5/internal/vm/instruction/insns_info.c +3 -0
  16. data/ext/cached/ruby-1.8.5/internal/vm/iseq/iseq_load.inc +21 -2
  17. data/ext/cached/{ruby-1.8.5/internal/method/method.h → ruby-1.8.6/internal/method/internal_method.h} +12 -0
  18. data/ext/cached/ruby-1.8.6/internal/module/getcfp.h +13 -0
  19. data/ext/cached/ruby-1.8.6/internal/node/global_entry.h +94 -0
  20. data/ext/cached/ruby-1.8.6/internal/node/node_type_descrip.c +48 -48
  21. data/ext/cached/ruby-1.8.6/internal/node/nodeinfo.c +323 -308
  22. data/ext/cached/ruby-1.8.6/internal/vm/instruction/insns_info.c +3 -0
  23. data/ext/cached/ruby-1.8.6/internal/vm/iseq/iseq_load.inc +21 -2
  24. data/ext/cached/{ruby-1.8.6/internal/method/method.h → ruby-1.8.7/internal/method/internal_method.h} +12 -0
  25. data/ext/cached/ruby-1.8.7/internal/module/getcfp.h +13 -0
  26. data/ext/cached/ruby-1.8.7/internal/node/global_entry.h +98 -0
  27. data/ext/cached/ruby-1.8.7/internal/node/node_type_descrip.c +42 -42
  28. data/ext/cached/ruby-1.8.7/internal/node/nodeinfo.c +276 -261
  29. data/ext/cached/ruby-1.8.7/internal/vm/instruction/insns_info.c +3 -0
  30. data/ext/cached/ruby-1.8.7/internal/vm/iseq/iseq_load.inc +21 -2
  31. data/ext/cached/{ruby-1.9.0/internal/method/method.h → ruby-1.9.1/internal/method/internal_method.h} +12 -0
  32. data/ext/cached/ruby-1.9.1/internal/module/classpath.c +12 -14
  33. data/ext/cached/ruby-1.9.1/internal/module/getcfp.h +25 -0
  34. data/ext/cached/ruby-1.9.1/internal/node/global_entry.h +86 -0
  35. data/ext/cached/ruby-1.9.1/internal/node/node_type_descrip.c +46 -48
  36. data/ext/cached/ruby-1.9.1/internal/node/nodeinfo.c +311 -412
  37. data/ext/cached/ruby-1.9.1/internal/vm/instruction/insns_info.c +3 -0
  38. data/ext/cached/ruby-1.9.1/internal/vm/iseq/iseq_load.inc +28 -6
  39. data/ext/cached/ruby-1.9.1/internal/yarv-headers/iseq.h +1 -0
  40. data/ext/cached/ruby-1.9.1/internal/yarv-headers/parse.h +6 -6
  41. data/ext/cached/ruby-1.9.1/internal/yarv-headers/revision.h +1 -1
  42. data/ext/cached/ruby-1.9.1/internal/yarv-headers/version.h +6 -5
  43. data/ext/cached/ruby-1.9.1/internal/yarv-headers/vm_core.h +3 -2
  44. data/ext/cached/ruby-1.9.1/internal/yarv-headers/vm_insnhelper.h +1 -0
  45. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/binding/block.h +0 -0
  46. data/ext/cached/{ruby-1.9.1/internal/method/method.h → ruby-1.9.2/internal/method/internal_method.h} +16 -5
  47. data/ext/cached/ruby-1.9.2/internal/module/classpath.c +40 -0
  48. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/module/classpath.h +0 -0
  49. data/ext/cached/ruby-1.9.2/internal/module/getcfp.h +25 -0
  50. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/node/block.h +0 -0
  51. data/ext/cached/ruby-1.9.2/internal/node/global_entry.h +93 -0
  52. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/node/node_type_descrip.c +44 -48
  53. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/node/nodeinfo.c +291 -439
  54. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/node/nodeinfo.h +0 -0
  55. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/proc/block.h +0 -0
  56. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/tag/tag.h +0 -0
  57. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/vm/instruction/insns_info.c +141 -64
  58. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/vm/instruction/insns_info.h +88 -80
  59. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/vm/iseq/insns_info.inc +77 -70
  60. data/ext/cached/ruby-1.9.2/internal/vm/iseq/iseq_load.inc +426 -0
  61. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/debug.h +1 -1
  62. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/dln.h +3 -3
  63. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/encdb.h +18 -2
  64. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/eval_intern.h +39 -28
  65. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/gc.h +7 -5
  66. data/ext/cached/ruby-1.9.2/internal/yarv-headers/id.h +170 -0
  67. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/iseq.h +20 -10
  68. data/ext/cached/ruby-1.9.2/internal/yarv-headers/method.h +103 -0
  69. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/node.h +14 -47
  70. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/parse.h +31 -148
  71. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/regenc.h +7 -3
  72. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/regint.h +16 -17
  73. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/regparse.h +4 -1
  74. data/ext/cached/ruby-1.9.2/internal/yarv-headers/revision.h +1 -0
  75. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/thread_pthread.h +4 -1
  76. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/thread_win32.h +1 -1
  77. data/ext/cached/ruby-1.9.2/internal/yarv-headers/timev.h +21 -0
  78. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/transcode_data.h +20 -10
  79. data/ext/cached/ruby-1.9.2/internal/yarv-headers/transdb.h +179 -0
  80. data/ext/cached/ruby-1.9.2/internal/yarv-headers/version.h +55 -0
  81. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/vm_core.h +127 -84
  82. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/vm_exec.h +4 -7
  83. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/vm_insnhelper.h +53 -36
  84. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/vm_opts.h +1 -1
  85. data/ext/cached/ruby-1.9.3/internal/binding/block.h +12 -0
  86. data/ext/cached/ruby-1.9.3/internal/method/internal_method.h +32 -0
  87. data/ext/cached/ruby-1.9.3/internal/module/classpath.c +40 -0
  88. data/ext/cached/{ruby-1.8.0 → ruby-1.9.3}/internal/module/classpath.h +5 -2
  89. data/ext/cached/ruby-1.9.3/internal/module/getcfp.h +25 -0
  90. data/ext/cached/ruby-1.9.3/internal/node/block.h +12 -0
  91. data/ext/cached/ruby-1.9.3/internal/node/global_entry.h +93 -0
  92. data/ext/cached/{ruby-1.8.3 → ruby-1.9.3}/internal/node/node_type_descrip.c +48 -57
  93. data/ext/cached/{ruby-1.6.8 → ruby-1.9.3}/internal/node/nodeinfo.c +589 -740
  94. data/ext/cached/{ruby-1.8.0 → ruby-1.9.3}/internal/node/nodeinfo.h +4 -3
  95. data/ext/cached/ruby-1.9.3/internal/proc/block.h +12 -0
  96. data/ext/cached/ruby-1.9.3/internal/tag/tag.h +6 -0
  97. data/ext/cached/ruby-1.9.3/internal/vm/instruction/insns_info.c +6013 -0
  98. data/ext/cached/ruby-1.9.3/internal/vm/instruction/insns_info.h +899 -0
  99. data/ext/cached/ruby-1.9.3/internal/vm/iseq/insns_info.inc +707 -0
  100. data/ext/cached/ruby-1.9.3/internal/vm/iseq/iseq_load.inc +423 -0
  101. data/ext/cached/ruby-1.9.3/internal/yarv-headers/addr2line.h +21 -0
  102. data/ext/cached/ruby-1.9.3/internal/yarv-headers/atomic.h +56 -0
  103. data/ext/cached/ruby-1.9.3/internal/yarv-headers/constant.h +34 -0
  104. data/ext/cached/ruby-1.9.3/internal/yarv-headers/debug.h +41 -0
  105. data/ext/cached/ruby-1.9.3/internal/yarv-headers/dln.h +50 -0
  106. data/ext/cached/ruby-1.9.3/internal/yarv-headers/encdb.h +167 -0
  107. data/ext/cached/ruby-1.9.3/internal/yarv-headers/eval_intern.h +234 -0
  108. data/ext/cached/ruby-1.9.3/internal/yarv-headers/gc.h +98 -0
  109. data/ext/cached/ruby-1.9.3/internal/yarv-headers/id.h +175 -0
  110. data/ext/cached/ruby-1.9.3/internal/yarv-headers/internal.h +232 -0
  111. data/ext/cached/ruby-1.9.3/internal/yarv-headers/iseq.h +125 -0
  112. data/ext/cached/ruby-1.9.3/internal/yarv-headers/method.h +105 -0
  113. data/ext/cached/ruby-1.9.3/internal/yarv-headers/node.h +503 -0
  114. data/ext/cached/ruby-1.9.3/internal/yarv-headers/parse.h +186 -0
  115. data/ext/cached/ruby-1.9.3/internal/yarv-headers/regenc.h +219 -0
  116. data/ext/cached/ruby-1.9.3/internal/yarv-headers/regint.h +850 -0
  117. data/ext/cached/ruby-1.9.3/internal/yarv-headers/regparse.h +362 -0
  118. data/ext/cached/ruby-1.9.3/internal/yarv-headers/revision.h +1 -0
  119. data/ext/cached/ruby-1.9.3/internal/yarv-headers/thread_pthread.h +51 -0
  120. data/ext/cached/ruby-1.9.3/internal/yarv-headers/thread_win32.h +40 -0
  121. data/ext/cached/ruby-1.9.3/internal/yarv-headers/timev.h +21 -0
  122. data/ext/cached/ruby-1.9.3/internal/yarv-headers/transcode_data.h +117 -0
  123. data/ext/cached/ruby-1.9.3/internal/yarv-headers/transdb.h +189 -0
  124. data/ext/cached/ruby-1.9.3/internal/yarv-headers/version.h +52 -0
  125. data/ext/cached/ruby-1.9.3/internal/yarv-headers/vm_core.h +756 -0
  126. data/ext/cached/ruby-1.9.3/internal/yarv-headers/vm_exec.h +184 -0
  127. data/ext/cached/ruby-1.9.3/internal/yarv-headers/vm_insnhelper.h +220 -0
  128. data/ext/cached/ruby-1.9.3/internal/yarv-headers/vm_opts.h +51 -0
  129. data/ext/internal/binding/block.h +20 -0
  130. data/ext/internal/method/internal_method.h +5 -38
  131. data/ext/internal/method/internal_method.h.rpp +0 -7
  132. data/ext/internal/method/method.c +52 -32
  133. data/ext/internal/module/classpath.c +18 -13
  134. data/ext/internal/module/classpath.h +3 -3
  135. data/ext/internal/module/extconf.rb +3 -2
  136. data/ext/internal/module/getcfp.h +13 -0
  137. data/ext/internal/module/getcfp.h.rpp +44 -0
  138. data/ext/internal/module/module.c +58 -21
  139. data/ext/internal/node/block.h +20 -0
  140. data/ext/internal/node/extconf.rb +2 -0
  141. data/ext/internal/node/global_entry.h +69 -13
  142. data/ext/internal/node/global_entry.h.rpp +11 -2
  143. data/ext/internal/node/node.c +30 -3
  144. data/ext/internal/node/node_type_descrip.c +47 -38
  145. data/ext/internal/node/nodeinfo.c +622 -306
  146. data/ext/internal/node/nodeinfo.h +1 -4
  147. data/ext/internal/proc/block.h +20 -0
  148. data/ext/internal/tag/tag.h +10 -0
  149. data/ext/internal/thread/thread.c +9 -3
  150. data/ext/internal/vm/extconf.rb +1 -0
  151. data/ext/internal/vm/instruction/insns_info.c +3 -5974
  152. data/ext/internal/vm/instruction/insns_info.h +0 -878
  153. data/ext/internal/vm/iseq/extconf.rb +1 -0
  154. data/ext/internal/vm/iseq/iseq.c +38 -4
  155. data/ext/internal/vm/iseq/iseq_load.inc.rpp +23 -5
  156. data/ext/internal/vm/vm.c +28 -0
  157. data/lib/internal/classtree.rb +28 -0
  158. data/lib/internal/debug.rb +10 -2
  159. data/lib/internal/method/as_code.rb +25 -0
  160. data/lib/internal/method/as_expression.rb +2 -3
  161. data/lib/internal/method/origin.rb +29 -0
  162. data/lib/internal/method/signature.rb +5 -300
  163. data/lib/internal/method/signature/argument.rb +102 -0
  164. data/lib/internal/method/signature/iseq.rb +52 -0
  165. data/lib/internal/method/signature/node.rb +160 -0
  166. data/lib/internal/method/signature/signature.rb +23 -0
  167. data/lib/internal/proc/as_code.rb +2 -0
  168. data/lib/internal/proc/as_expression.rb +2 -0
  169. data/lib/internal/vm/bytedecoder.rb +5 -5
  170. data/lib/internal/vm/iseq/as_code.rb +2 -2
  171. data/lib/internal/vm/iseq/as_expression.rb +2 -2
  172. data/test/test_dump_method.rb +1 -1
  173. data/test/test_method.rb +21 -3
  174. data/test/test_node.rb +20 -4
  175. metadata +152 -155
  176. data/ext/cached/ruby-1.6.8/internal/binding/block.h +0 -35
  177. data/ext/cached/ruby-1.6.8/internal/method/method.h +0 -19
  178. data/ext/cached/ruby-1.6.8/internal/module/classpath.c +0 -3
  179. data/ext/cached/ruby-1.6.8/internal/module/classpath.h +0 -8
  180. data/ext/cached/ruby-1.6.8/internal/node/block.h +0 -35
  181. data/ext/cached/ruby-1.6.8/internal/node/global_entry.h +0 -15
  182. data/ext/cached/ruby-1.6.8/internal/node/node_type_descrip.c +0 -149
  183. data/ext/cached/ruby-1.6.8/internal/node/nodeinfo.h +0 -69
  184. data/ext/cached/ruby-1.6.8/internal/proc/block.h +0 -35
  185. data/ext/cached/ruby-1.6.8/internal/tag/tag.h +0 -15
  186. data/ext/cached/ruby-1.6.8/internal/vm/instruction/insns_info.c +0 -39
  187. data/ext/cached/ruby-1.6.8/internal/vm/instruction/insns_info.h +0 -21
  188. data/ext/cached/ruby-1.6.8/internal/vm/iseq/insns_info.inc +0 -12
  189. data/ext/cached/ruby-1.6.8/internal/vm/iseq/iseq_load.inc +0 -9
  190. data/ext/cached/ruby-1.8.0/internal/binding/block.h +0 -37
  191. data/ext/cached/ruby-1.8.0/internal/method/method.h +0 -19
  192. data/ext/cached/ruby-1.8.0/internal/module/classpath.c +0 -27
  193. data/ext/cached/ruby-1.8.0/internal/node/block.h +0 -37
  194. data/ext/cached/ruby-1.8.0/internal/node/global_entry.h +0 -10
  195. data/ext/cached/ruby-1.8.0/internal/node/node_type_descrip.c +0 -155
  196. data/ext/cached/ruby-1.8.0/internal/node/nodeinfo.c +0 -5744
  197. data/ext/cached/ruby-1.8.0/internal/proc/block.h +0 -37
  198. data/ext/cached/ruby-1.8.0/internal/tag/tag.h +0 -15
  199. data/ext/cached/ruby-1.8.0/internal/vm/instruction/insns_info.c +0 -39
  200. data/ext/cached/ruby-1.8.0/internal/vm/instruction/insns_info.h +0 -21
  201. data/ext/cached/ruby-1.8.0/internal/vm/iseq/insns_info.inc +0 -12
  202. data/ext/cached/ruby-1.8.0/internal/vm/iseq/iseq_load.inc +0 -9
  203. data/ext/cached/ruby-1.8.1/internal/binding/block.h +0 -31
  204. data/ext/cached/ruby-1.8.1/internal/method/method.h +0 -19
  205. data/ext/cached/ruby-1.8.1/internal/module/classpath.c +0 -27
  206. data/ext/cached/ruby-1.8.1/internal/module/classpath.h +0 -14
  207. data/ext/cached/ruby-1.8.1/internal/node/block.h +0 -31
  208. data/ext/cached/ruby-1.8.1/internal/node/global_entry.h +0 -10
  209. data/ext/cached/ruby-1.8.1/internal/node/node_type_descrip.c +0 -154
  210. data/ext/cached/ruby-1.8.1/internal/node/nodeinfo.c +0 -5736
  211. data/ext/cached/ruby-1.8.1/internal/node/nodeinfo.h +0 -69
  212. data/ext/cached/ruby-1.8.1/internal/proc/block.h +0 -31
  213. data/ext/cached/ruby-1.8.1/internal/tag/tag.h +0 -16
  214. data/ext/cached/ruby-1.8.1/internal/vm/instruction/insns_info.c +0 -39
  215. data/ext/cached/ruby-1.8.1/internal/vm/instruction/insns_info.h +0 -21
  216. data/ext/cached/ruby-1.8.1/internal/vm/iseq/insns_info.inc +0 -12
  217. data/ext/cached/ruby-1.8.1/internal/vm/iseq/iseq_load.inc +0 -9
  218. data/ext/cached/ruby-1.8.2/internal/binding/block.h +0 -32
  219. data/ext/cached/ruby-1.8.2/internal/method/method.h +0 -19
  220. data/ext/cached/ruby-1.8.2/internal/module/classpath.c +0 -45
  221. data/ext/cached/ruby-1.8.2/internal/module/classpath.h +0 -17
  222. data/ext/cached/ruby-1.8.2/internal/node/block.h +0 -32
  223. data/ext/cached/ruby-1.8.2/internal/node/global_entry.h +0 -10
  224. data/ext/cached/ruby-1.8.2/internal/node/node_type_descrip.c +0 -154
  225. data/ext/cached/ruby-1.8.2/internal/node/nodeinfo.c +0 -5736
  226. data/ext/cached/ruby-1.8.2/internal/node/nodeinfo.h +0 -69
  227. data/ext/cached/ruby-1.8.2/internal/proc/block.h +0 -32
  228. data/ext/cached/ruby-1.8.2/internal/tag/tag.h +0 -16
  229. data/ext/cached/ruby-1.8.2/internal/vm/instruction/insns_info.c +0 -39
  230. data/ext/cached/ruby-1.8.2/internal/vm/instruction/insns_info.h +0 -21
  231. data/ext/cached/ruby-1.8.2/internal/vm/iseq/insns_info.inc +0 -12
  232. data/ext/cached/ruby-1.8.2/internal/vm/iseq/iseq_load.inc +0 -9
  233. data/ext/cached/ruby-1.8.3/internal/binding/block.h +0 -32
  234. data/ext/cached/ruby-1.8.3/internal/module/classpath.c +0 -45
  235. data/ext/cached/ruby-1.8.3/internal/module/classpath.h +0 -17
  236. data/ext/cached/ruby-1.8.3/internal/node/block.h +0 -32
  237. data/ext/cached/ruby-1.8.3/internal/node/global_entry.h +0 -10
  238. data/ext/cached/ruby-1.8.3/internal/node/nodeinfo.c +0 -5736
  239. data/ext/cached/ruby-1.8.3/internal/node/nodeinfo.h +0 -69
  240. data/ext/cached/ruby-1.8.3/internal/proc/block.h +0 -32
  241. data/ext/cached/ruby-1.8.3/internal/tag/tag.h +0 -16
  242. data/ext/cached/ruby-1.8.3/internal/vm/instruction/insns_info.c +0 -39
  243. data/ext/cached/ruby-1.8.3/internal/vm/instruction/insns_info.h +0 -21
  244. data/ext/cached/ruby-1.8.3/internal/vm/iseq/insns_info.inc +0 -12
  245. data/ext/cached/ruby-1.8.3/internal/vm/iseq/iseq_load.inc +0 -9
  246. data/ext/cached/ruby-1.8.7/internal/method/method.h +0 -20
  247. data/ext/cached/ruby-1.9.0/internal/module/classpath.c +0 -42
  248. data/ext/cached/ruby-1.9.0/internal/node/global_entry.h +0 -10
  249. data/ext/cached/ruby-1.9.0/internal/vm/iseq/iseq_load.inc +0 -13
  250. data/ext/cached/ruby-1.9.0/internal/yarv-headers/id.h +0 -83
  251. data/ext/cached/ruby-1.9.0/internal/yarv-headers/revision.h +0 -1
  252. data/ext/cached/ruby-1.9.0/internal/yarv-headers/transdb.h +0 -67
  253. data/ext/cached/ruby-1.9.0/internal/yarv-headers/version.h +0 -57
  254. data/ext/internal/module/cfp.h +0 -13
@@ -2,6 +2,9 @@
2
2
 
3
3
  #ifdef RUBY_VM
4
4
 
5
+ #include "iseq.h"
6
+ #include "vm_core.h"
7
+
5
8
 
6
9
  VALUE instruction_class[VM_INSTRUCTION_SIZE];
7
10
 
@@ -1,9 +1,28 @@
1
1
  #ifndef ruby_internal_iseq_load__inc_
2
2
  #define ruby_internal_iseq_load__inc_
3
3
 
4
- #include "internal/yarv-headers/gc.h"
5
- #include "internal/yarv-headers/iseq.h"
4
+ #ifdef HAVE_TYPE_STRUCT_RTYPEDDATA
6
5
 
6
+ static rb_data_type_t const * p_iseq_data_type;
7
+
8
+ static void init_iseq_data_type()
9
+ {
10
+ rb_proc_t * p;
11
+ VALUE body;
12
+
13
+ VALUE binding = rb_binding_new();
14
+ VALUE new_proc = rb_funcall(
15
+ rb_cObject, rb_intern("eval"), 2, rb_str_new2("proc { }"), binding);
16
+ GetProcPtr(new_proc, p);
17
+ body = p->block.iseq->self;
18
+
19
+ p_iseq_data_type = RTYPEDDATA_TYPE(body);
20
+ }
21
+
22
+ #else
23
+
24
+ #endif
25
+ #
7
26
 
8
27
  #endif
9
28
 
@@ -3,8 +3,20 @@
3
3
 
4
4
  #include <ruby.h>
5
5
 
6
+ #ifdef RUBY_VM
7
+ #include "method.h"
8
+ #endif
9
+
6
10
  #include "internal/node/ruby_internal_node.h"
7
11
 
12
+ #ifndef FALSE
13
+ #define FALSE 0
14
+ #endif
15
+
16
+ #ifndef TRUE
17
+ #define TRUE (!FALSE)
18
+ #endif
19
+
8
20
  struct METHOD {
9
21
  VALUE klass, rklass;
10
22
  VALUE recv;
@@ -0,0 +1,13 @@
1
+ #ifndef getcfp__h
2
+ #define getcfp__h
3
+
4
+ #include "ruby.h"
5
+
6
+ #ifdef RUBY_VM
7
+
8
+ #include "vm_core.h"
9
+
10
+
11
+ #endif
12
+
13
+ #endif
@@ -1,10 +1,104 @@
1
1
  #ifndef global_entry__h_
2
2
  #define global_entry__h_
3
3
 
4
+ st_table * rb_global_tbl;
5
+
6
+ struct trace_var {
7
+ int removed;
8
+ void (*func)();
9
+ VALUE data;
10
+ struct trace_var *next;
11
+ };
12
+ struct global_variable {
13
+ int counter;
14
+ void *data;
15
+ VALUE (*getter)();
16
+ void (*setter)();
17
+ void (*marker)();
18
+ int block_trace;
19
+ struct trace_var *trace;
20
+ };
4
21
  struct global_entry {
5
22
  struct global_variable *var;
6
23
  ID id;
7
24
  };
25
+ static VALUE undef_getter();
26
+ static void undef_setter();
27
+ static void undef_marker();
28
+ static VALUE val_getter();
29
+ static void val_setter();
30
+ static void val_marker();
31
+ struct global_entry*
32
+ rb_global_entry(id)
33
+ ID id;
34
+ {
35
+ struct global_entry *entry;
36
+
37
+ if (!st_lookup(rb_global_tbl, id, (st_data_t *)&entry)) {
38
+ struct global_variable *var;
39
+ entry = ALLOC(struct global_entry);
40
+ var = ALLOC(struct global_variable);
41
+ entry->id = id;
42
+ entry->var = var;
43
+ var->counter = 1;
44
+ var->data = 0;
45
+ var->getter = undef_getter;
46
+ var->setter = undef_setter;
47
+ var->marker = undef_marker;
48
+
49
+ var->block_trace = 0;
50
+ var->trace = 0;
51
+ st_add_direct(rb_global_tbl, id, (st_data_t)entry);
52
+ }
53
+ return entry;
54
+ }
55
+ static VALUE
56
+ undef_getter(id)
57
+ ID id;
58
+ {
59
+ rb_warning("global variable `%s' not initialized", rb_id2name(id));
60
+
61
+ return Qnil;
62
+ }
63
+ static void
64
+ undef_setter(val, id, data, var)
65
+ VALUE val;
66
+ ID id;
67
+ void *data;
68
+ struct global_variable *var;
69
+ {
70
+ var->getter = val_getter;
71
+ var->setter = val_setter;
72
+ var->marker = val_marker;
73
+
74
+ var->data = (void*)val;
75
+ }
76
+ static void
77
+ undef_marker()
78
+ {
79
+ }
80
+ static VALUE
81
+ val_getter(id, val)
82
+ ID id;
83
+ VALUE val;
84
+ {
85
+ return val;
86
+ }
87
+ static void
88
+ val_setter(val, id, data, var)
89
+ VALUE val;
90
+ ID id;
91
+ void *data;
92
+ struct global_variable *var;
93
+ {
94
+ var->data = (void*)val;
95
+ }
96
+ static void
97
+ val_marker(data)
98
+ VALUE data;
99
+ {
100
+ if (data) rb_gc_mark_maybe(data);
101
+ }
8
102
 
9
103
  #endif
10
104
 
@@ -4,44 +4,44 @@
4
4
  Node_Type_Descrip node_type_descrips_unsorted[] = {
5
5
  { NODE_ALIAS, NEN_1ST, NEN_2ND, NEN_NONE, "ALIAS" },
6
6
  #ifdef HAVE_NODE_ALLOCA
7
- { NODE_ALLOCA, NEN_CFNC, NEN_VALUE, NEN_CNT, "ALLOCA" },
7
+ { NODE_ALLOCA, NEN_CFNC, NEN_CNT, NEN_VALUE, "ALLOCA" },
8
8
  #endif
9
9
  { NODE_AND, NEN_1ST, NEN_2ND, NEN_NONE, "AND" },
10
- { NODE_ARGS, NEN_REST, NEN_OPT, NEN_CNT, "ARGS" },
11
- { NODE_ARGSCAT, NEN_HEAD, NEN_BODY, NEN_NONE, "ARGSCAT" },
12
- { NODE_ARGSPUSH, NEN_HEAD, NEN_BODY, NEN_NONE, "ARGSPUSH" },
13
- { NODE_ARRAY, NEN_HEAD, NEN_ALEN, NEN_NEXT, "ARRAY" },
14
- { NODE_ATTRASGN, NEN_ARGS, NEN_MID, NEN_RECV, "ATTRASGN" },
10
+ { NODE_ARGS, NEN_CNT, NEN_REST, NEN_OPT, "ARGS" },
11
+ { NODE_ARGSCAT, NEN_BODY, NEN_HEAD, NEN_NONE, "ARGSCAT" },
12
+ { NODE_ARGSPUSH, NEN_BODY, NEN_HEAD, NEN_NONE, "ARGSPUSH" },
13
+ { NODE_ARRAY, NEN_ALEN, NEN_NEXT, NEN_HEAD, "ARRAY" },
14
+ { NODE_ATTRASGN, NEN_MID, NEN_RECV, NEN_ARGS, "ATTRASGN" },
15
15
  { NODE_ATTRSET, NEN_VID, NEN_NONE, NEN_NONE, "ATTRSET" },
16
16
  { NODE_BACK_REF, NEN_NTH, NEN_CNT, NEN_NONE, "BACK_REF" },
17
17
  { NODE_BEGIN, NEN_BODY, NEN_NONE, NEN_NONE, "BEGIN" },
18
- { NODE_BLOCK, NEN_HEAD, NEN_NEXT, NEN_NONE, "BLOCK" },
18
+ { NODE_BLOCK, NEN_NEXT, NEN_HEAD, NEN_NONE, "BLOCK" },
19
19
  { NODE_BLOCK_ARG, NEN_CNT, NEN_NONE, NEN_NONE, "BLOCK_ARG" },
20
20
  { NODE_BLOCK_PASS, NEN_BODY, NEN_ITER, NEN_NONE, "BLOCK_PASS" },
21
21
  { NODE_BMETHOD, NEN_CVAL, NEN_NONE, NEN_NONE, "BMETHOD" },
22
22
  { NODE_BREAK, NEN_STTS, NEN_NONE, NEN_NONE, "BREAK" },
23
- { NODE_CALL, NEN_ARGS, NEN_MID, NEN_RECV, "CALL" },
24
- { NODE_CASE, NEN_HEAD, NEN_BODY, NEN_NEXT, "CASE" },
25
- { NODE_CDECL, NEN_VALUE, NEN_VID, NEN_NONE, "CDECL" },
23
+ { NODE_CALL, NEN_MID, NEN_RECV, NEN_ARGS, "CALL" },
24
+ { NODE_CASE, NEN_BODY, NEN_NEXT, NEN_HEAD, "CASE" },
25
+ { NODE_CDECL, NEN_VID, NEN_VALUE, NEN_NONE, "CDECL" },
26
26
  { NODE_CFUNC, NEN_CFNC, NEN_ARGC, NEN_NONE, "CFUNC" },
27
- { NODE_CLASS, NEN_CPATH, NEN_BODY, NEN_SUPER, "CLASS" },
28
- { NODE_COLON2, NEN_HEAD, NEN_MID, NEN_NONE, "COLON2" },
27
+ { NODE_CLASS, NEN_BODY, NEN_SUPER, NEN_CPATH, "CLASS" },
28
+ { NODE_COLON2, NEN_MID, NEN_HEAD, NEN_NONE, "COLON2" },
29
29
  { NODE_COLON3, NEN_MID, NEN_NONE, NEN_NONE, "COLON3" },
30
30
  { NODE_CONST, NEN_VID, NEN_NONE, NEN_NONE, "CONST" },
31
- { NODE_CREF, NEN_BODY, NEN_NEXT, NEN_CLSS, "CREF" },
31
+ { NODE_CREF, NEN_BODY, NEN_CLSS, NEN_NEXT, "CREF" },
32
32
  { NODE_CVAR, NEN_VID, NEN_NONE, NEN_NONE, "CVAR" },
33
- { NODE_CVASGN, NEN_VALUE, NEN_VID, NEN_NONE, "CVASGN" },
34
- { NODE_CVDECL, NEN_VALUE, NEN_VID, NEN_NONE, "CVDECL" },
35
- { NODE_DASGN, NEN_VALUE, NEN_VID, NEN_NONE, "DASGN" },
36
- { NODE_DASGN_CURR, NEN_VALUE, NEN_VID, NEN_NONE, "DASGN_CURR" },
33
+ { NODE_CVASGN, NEN_VID, NEN_VALUE, NEN_NONE, "CVASGN" },
34
+ { NODE_CVDECL, NEN_VID, NEN_VALUE, NEN_NONE, "CVDECL" },
35
+ { NODE_DASGN, NEN_VID, NEN_VALUE, NEN_NONE, "DASGN" },
36
+ { NODE_DASGN_CURR, NEN_VID, NEN_VALUE, NEN_NONE, "DASGN_CURR" },
37
37
  { NODE_DEFINED, NEN_HEAD, NEN_NONE, NEN_NONE, "DEFINED" },
38
- { NODE_DEFN, NEN_DEFN, NEN_MID, NEN_NOEX, "DEFN" },
39
- { NODE_DEFS, NEN_DEFN, NEN_MID, NEN_RECV, "DEFS" },
38
+ { NODE_DEFN, NEN_NOEX, NEN_MID, NEN_DEFN, "DEFN" },
39
+ { NODE_DEFS, NEN_MID, NEN_DEFN, NEN_RECV, "DEFS" },
40
40
  { NODE_DMETHOD, NEN_CVAL, NEN_NONE, NEN_NONE, "DMETHOD" },
41
- { NODE_DOT2, NEN_BEG, NEN_END, NEN_STATE, "DOT2" },
42
- { NODE_DOT3, NEN_BEG, NEN_END, NEN_STATE, "DOT3" },
43
- { NODE_DREGX, NEN_LIT, NEN_CFLAG, NEN_NEXT, "DREGX" },
44
- { NODE_DREGX_ONCE, NEN_LIT, NEN_CFLAG, NEN_NEXT, "DREGX_ONCE" },
41
+ { NODE_DOT2, NEN_STATE, NEN_END, NEN_BEG, "DOT2" },
42
+ { NODE_DOT3, NEN_STATE, NEN_END, NEN_BEG, "DOT3" },
43
+ { NODE_DREGX, NEN_LIT, NEN_NEXT, NEN_CFLAG, "DREGX" },
44
+ { NODE_DREGX_ONCE, NEN_LIT, NEN_NEXT, NEN_CFLAG, "DREGX_ONCE" },
45
45
  { NODE_DSTR, NEN_LIT, NEN_NEXT, NEN_NONE, "DSTR" },
46
46
  { NODE_DSYM, NEN_LIT, NEN_NEXT, NEN_NONE, "DSYM" },
47
47
  { NODE_DVAR, NEN_VID, NEN_NONE, NEN_NONE, "DVAR" },
@@ -49,45 +49,45 @@ Node_Type_Descrip node_type_descrips_unsorted[] = {
49
49
  { NODE_ENSURE, NEN_HEAD, NEN_ENSR, NEN_NONE, "ENSURE" },
50
50
  { NODE_EVSTR, NEN_BODY, NEN_NONE, NEN_NONE, "EVSTR" },
51
51
  { NODE_FALSE, NEN_NONE, NEN_NONE, NEN_NONE, "FALSE" },
52
- { NODE_FBODY, NEN_HEAD, NEN_ORIG, NEN_MID, "FBODY" },
53
- { NODE_FCALL, NEN_ARGS, NEN_MID, NEN_NONE, "FCALL" },
54
- { NODE_FLIP2, NEN_BEG, NEN_END, NEN_CNT, "FLIP2" },
55
- { NODE_FLIP3, NEN_BEG, NEN_END, NEN_CNT, "FLIP3" },
52
+ { NODE_FBODY, NEN_MID, NEN_ORIG, NEN_HEAD, "FBODY" },
53
+ { NODE_FCALL, NEN_MID, NEN_ARGS, NEN_NONE, "FCALL" },
54
+ { NODE_FLIP2, NEN_CNT, NEN_END, NEN_BEG, "FLIP2" },
55
+ { NODE_FLIP3, NEN_CNT, NEN_END, NEN_BEG, "FLIP3" },
56
56
  { NODE_FOR, NEN_BODY, NEN_ITER, NEN_VAR, "FOR" },
57
- { NODE_GASGN, NEN_VALUE, NEN_VID, NEN_ENTRY, "GASGN" },
58
- { NODE_GVAR, NEN_VID, NEN_ENTRY, NEN_NONE, "GVAR" },
57
+ { NODE_GASGN, NEN_ENTRY, NEN_VID, NEN_VALUE, "GASGN" },
58
+ { NODE_GVAR, NEN_ENTRY, NEN_VID, NEN_NONE, "GVAR" },
59
59
  { NODE_HASH, NEN_HEAD, NEN_NONE, NEN_NONE, "HASH" },
60
- { NODE_IASGN, NEN_VALUE, NEN_VID, NEN_NONE, "IASGN" },
61
- { NODE_IF, NEN_COND, NEN_BODY, NEN_ELSE, "IF" },
62
- { NODE_IFUNC, NEN_CFNC, NEN_TVAL, NEN_STATE, "IFUNC" },
60
+ { NODE_IASGN, NEN_VID, NEN_VALUE, NEN_NONE, "IASGN" },
61
+ { NODE_IF, NEN_BODY, NEN_COND, NEN_ELSE, "IF" },
62
+ { NODE_IFUNC, NEN_STATE, NEN_CFNC, NEN_TVAL, "IFUNC" },
63
63
  { NODE_ITER, NEN_BODY, NEN_ITER, NEN_VAR, "ITER" },
64
64
  { NODE_IVAR, NEN_VID, NEN_NONE, NEN_NONE, "IVAR" },
65
- { NODE_LASGN, NEN_VALUE, NEN_VID, NEN_CNT, "LASGN" },
65
+ { NODE_LASGN, NEN_CNT, NEN_VID, NEN_VALUE, "LASGN" },
66
66
  { NODE_LIT, NEN_LIT, NEN_NONE, NEN_NONE, "LIT" },
67
- { NODE_LVAR, NEN_VID, NEN_CNT, NEN_NONE, "LVAR" },
67
+ { NODE_LVAR, NEN_CNT, NEN_VID, NEN_NONE, "LVAR" },
68
68
  { NODE_MASGN, NEN_ARGS, NEN_HEAD, NEN_VALUE, "MASGN" },
69
69
  { NODE_MATCH, NEN_LIT, NEN_VALUE, NEN_NONE, "MATCH" },
70
- { NODE_MATCH2, NEN_VALUE, NEN_RECV, NEN_NONE, "MATCH2" },
71
- { NODE_MATCH3, NEN_VALUE, NEN_RECV, NEN_NONE, "MATCH3" },
70
+ { NODE_MATCH2, NEN_RECV, NEN_VALUE, NEN_NONE, "MATCH2" },
71
+ { NODE_MATCH3, NEN_RECV, NEN_VALUE, NEN_NONE, "MATCH3" },
72
72
  { NODE_MEMO, NEN_NONE, NEN_NONE, NEN_NONE, "MEMO" },
73
73
  { NODE_METHOD, NEN_BODY, NEN_NOEX, NEN_NONE, "METHOD" },
74
- { NODE_MODULE, NEN_CPATH, NEN_BODY, NEN_NONE, "MODULE" },
74
+ { NODE_MODULE, NEN_BODY, NEN_CPATH, NEN_NONE, "MODULE" },
75
75
  { NODE_NEWLINE, NEN_NEXT, NEN_NONE, NEN_NONE, "NEWLINE" },
76
76
  { NODE_NEXT, NEN_STTS, NEN_NONE, NEN_NONE, "NEXT" },
77
77
  { NODE_NIL, NEN_NONE, NEN_NONE, NEN_NONE, "NIL" },
78
78
  { NODE_NOT, NEN_BODY, NEN_NONE, NEN_NONE, "NOT" },
79
79
  { NODE_NTH_REF, NEN_NTH, NEN_CNT, NEN_NONE, "NTH_REF" },
80
80
  { NODE_OPT_N, NEN_BODY, NEN_NONE, NEN_NONE, "OPT_N" },
81
- { NODE_OP_ASGN1, NEN_ARGS, NEN_MID, NEN_RECV, "OP_ASGN1" },
82
- { NODE_OP_ASGN2, NEN_VALUE, NEN_NEXT, NEN_RECV, "OP_ASGN2" },
83
- { NODE_OP_ASGN2_ARG, NEN_VID, NEN_AID, NEN_MID, "OP_ASGN2_ARG" },
84
- { NODE_OP_ASGN_AND, NEN_VALUE, NEN_RECV, NEN_NONE, "OP_ASGN_AND" },
85
- { NODE_OP_ASGN_OR, NEN_AID, NEN_VALUE, NEN_RECV, "OP_ASGN_OR" },
81
+ { NODE_OP_ASGN1, NEN_MID, NEN_RECV, NEN_ARGS, "OP_ASGN1" },
82
+ { NODE_OP_ASGN2, NEN_RECV, NEN_NEXT, NEN_VALUE, "OP_ASGN2" },
83
+ { NODE_OP_ASGN2_ARG, NEN_AID, NEN_MID, NEN_VID, "OP_ASGN2_ARG" },
84
+ { NODE_OP_ASGN_AND, NEN_RECV, NEN_VALUE, NEN_NONE, "OP_ASGN_AND" },
85
+ { NODE_OP_ASGN_OR, NEN_AID, NEN_RECV, NEN_VALUE, "OP_ASGN_OR" },
86
86
  { NODE_OR, NEN_1ST, NEN_2ND, NEN_NONE, "OR" },
87
87
  { NODE_POSTEXE, NEN_NONE, NEN_NONE, NEN_NONE, "POSTEXE" },
88
88
  { NODE_REDO, NEN_NONE, NEN_NONE, NEN_NONE, "REDO" },
89
- { NODE_RESBODY, NEN_HEAD, NEN_ARGS, NEN_BODY, "RESBODY" },
90
- { NODE_RESCUE, NEN_HEAD, NEN_ELSE, NEN_RESQ, "RESCUE" },
89
+ { NODE_RESBODY, NEN_BODY, NEN_HEAD, NEN_ARGS, "RESBODY" },
90
+ { NODE_RESCUE, NEN_RESQ, NEN_HEAD, NEN_ELSE, "RESCUE" },
91
91
  { NODE_RETRY, NEN_NONE, NEN_NONE, NEN_NONE, "RETRY" },
92
92
  { NODE_RETURN, NEN_STTS, NEN_NONE, NEN_NONE, "RETURN" },
93
93
  { NODE_SCLASS, NEN_BODY, NEN_RECV, NEN_NONE, "SCLASS" },
@@ -100,13 +100,13 @@ Node_Type_Descrip node_type_descrips_unsorted[] = {
100
100
  { NODE_TO_ARY, NEN_HEAD, NEN_NONE, NEN_NONE, "TO_ARY" },
101
101
  { NODE_TRUE, NEN_NONE, NEN_NONE, NEN_NONE, "TRUE" },
102
102
  { NODE_UNDEF, NEN_BODY, NEN_NONE, NEN_NONE, "UNDEF" },
103
- { NODE_UNTIL, NEN_BODY, NEN_COND, NEN_STATE, "UNTIL" },
103
+ { NODE_UNTIL, NEN_BODY, NEN_STATE, NEN_COND, "UNTIL" },
104
104
  { NODE_VALIAS, NEN_1ST, NEN_2ND, NEN_NONE, "VALIAS" },
105
105
  { NODE_VCALL, NEN_MID, NEN_NONE, NEN_NONE, "VCALL" },
106
- { NODE_WHEN, NEN_HEAD, NEN_BODY, NEN_NEXT, "WHEN" },
107
- { NODE_WHILE, NEN_BODY, NEN_COND, NEN_STATE, "WHILE" },
106
+ { NODE_WHEN, NEN_BODY, NEN_NEXT, NEN_HEAD, "WHEN" },
107
+ { NODE_WHILE, NEN_BODY, NEN_STATE, NEN_COND, "WHILE" },
108
108
  { NODE_XSTR, NEN_LIT, NEN_NONE, NEN_NONE, "XSTR" },
109
- { NODE_YIELD, NEN_HEAD, NEN_STATE, NEN_NONE, "YIELD" },
109
+ { NODE_YIELD, NEN_STATE, NEN_HEAD, NEN_NONE, "YIELD" },
110
110
  { NODE_ZARRAY, NEN_NONE, NEN_NONE, NEN_NONE, "ZARRAY" },
111
111
  { NODE_ZSUPER, NEN_NONE, NEN_NONE, NEN_NONE, "ZSUPER" },
112
112
  { NODE_LAST, NEN_NONE, NEN_NONE, NEN_NONE, "LAST" },
@@ -228,7 +228,7 @@ VALUE dump_node_elem(enum Node_Elem_Name nen, NODE * n, VALUE node_hash)
228
228
  else
229
229
  {
230
230
  path = rb_class_path(klass);
231
- if(STR2CSTR(path)[0] == '#')
231
+ if(StringValuePtr(path)[0] == '#')
232
232
  {
233
233
  rb_raise(rb_eArgError, "cannot dump anonymous class");
234
234
  }
@@ -322,7 +322,7 @@ VALUE dump_node_elem(enum Node_Elem_Name nen, NODE * n, VALUE node_hash)
322
322
  else
323
323
  {
324
324
  path = rb_class_path(klass);
325
- if(STR2CSTR(path)[0] == '#')
325
+ if(StringValuePtr(path)[0] == '#')
326
326
  {
327
327
  rb_raise(rb_eArgError, "cannot dump anonymous class");
328
328
  }
@@ -565,7 +565,7 @@ VALUE dump_node_elem(enum Node_Elem_Name nen, NODE * n, VALUE node_hash)
565
565
  else
566
566
  {
567
567
  path = rb_class_path(klass);
568
- if(STR2CSTR(path)[0] == '#')
568
+ if(StringValuePtr(path)[0] == '#')
569
569
  {
570
570
  rb_raise(rb_eArgError, "cannot dump anonymous class");
571
571
  }
@@ -689,7 +689,7 @@ VALUE dump_node_elem(enum Node_Elem_Name nen, NODE * n, VALUE node_hash)
689
689
  else
690
690
  {
691
691
  path = rb_class_path(klass);
692
- if(STR2CSTR(path)[0] == '#')
692
+ if(StringValuePtr(path)[0] == '#')
693
693
  {
694
694
  rb_raise(rb_eArgError, "cannot dump anonymous class");
695
695
  }
@@ -897,7 +897,7 @@ VALUE dump_node_elem(enum Node_Elem_Name nen, NODE * n, VALUE node_hash)
897
897
  else
898
898
  {
899
899
  path = rb_class_path(klass);
900
- if(STR2CSTR(path)[0] == '#')
900
+ if(StringValuePtr(path)[0] == '#')
901
901
  {
902
902
  rb_raise(rb_eArgError, "cannot dump anonymous class");
903
903
  }
@@ -1152,20 +1152,23 @@ void load_node_elem(enum Node_Elem_Name nen, VALUE v, NODE * n, VALUE node_hash,
1152
1152
  }
1153
1153
  case NEN_CLSS:
1154
1154
  {
1155
+ int flags;
1155
1156
  Check_Type(v, T_ARRAY);
1156
1157
  if(RARRAY_LEN(v) != 2)
1157
1158
  {
1158
1159
  rb_raise(rb_eArgError, "wrong size for array");
1159
1160
  }
1160
- int flags = NUM2INT(RARRAY_PTR(v)[0]);
1161
+ flags = NUM2INT(RARRAY_PTR(v)[0]);
1161
1162
  switch(flags & T_MASK)
1162
1163
  {
1163
1164
  case T_CLASS:
1164
1165
  case T_MODULE:
1165
1166
  {
1166
- VALUE str = RARRAY_PTR(v)[1];
1167
+ VALUE str, klass;
1168
+
1169
+ str = RARRAY_PTR(v)[1];
1167
1170
  Check_Type(str, T_STRING);
1168
- VALUE klass = rb_path2class(STR2CSTR(str));
1171
+ klass = rb_path2class(StringValuePtr(str));
1169
1172
  if(flags & FL_SINGLETON)
1170
1173
  {
1171
1174
  *(VALUE *)(&n->nd_clss) =
@@ -1241,20 +1244,23 @@ void load_node_elem(enum Node_Elem_Name nen, VALUE v, NODE * n, VALUE node_hash,
1241
1244
  }
1242
1245
  case NEN_CVAL:
1243
1246
  {
1247
+ int flags;
1244
1248
  Check_Type(v, T_ARRAY);
1245
1249
  if(RARRAY_LEN(v) != 2)
1246
1250
  {
1247
1251
  rb_raise(rb_eArgError, "wrong size for array");
1248
1252
  }
1249
- int flags = NUM2INT(RARRAY_PTR(v)[0]);
1253
+ flags = NUM2INT(RARRAY_PTR(v)[0]);
1250
1254
  switch(flags & T_MASK)
1251
1255
  {
1252
1256
  case T_CLASS:
1253
1257
  case T_MODULE:
1254
1258
  {
1255
- VALUE str = RARRAY_PTR(v)[1];
1259
+ VALUE str, klass;
1260
+
1261
+ str = RARRAY_PTR(v)[1];
1256
1262
  Check_Type(str, T_STRING);
1257
- VALUE klass = rb_path2class(STR2CSTR(str));
1263
+ klass = rb_path2class(StringValuePtr(str));
1258
1264
  if(flags & FL_SINGLETON)
1259
1265
  {
1260
1266
  *(VALUE *)(&n->nd_cval) =
@@ -1480,20 +1486,23 @@ void load_node_elem(enum Node_Elem_Name nen, VALUE v, NODE * n, VALUE node_hash,
1480
1486
  }
1481
1487
  case NEN_LIT:
1482
1488
  {
1489
+ int flags;
1483
1490
  Check_Type(v, T_ARRAY);
1484
1491
  if(RARRAY_LEN(v) != 2)
1485
1492
  {
1486
1493
  rb_raise(rb_eArgError, "wrong size for array");
1487
1494
  }
1488
- int flags = NUM2INT(RARRAY_PTR(v)[0]);
1495
+ flags = NUM2INT(RARRAY_PTR(v)[0]);
1489
1496
  switch(flags & T_MASK)
1490
1497
  {
1491
1498
  case T_CLASS:
1492
1499
  case T_MODULE:
1493
1500
  {
1494
- VALUE str = RARRAY_PTR(v)[1];
1501
+ VALUE str, klass;
1502
+
1503
+ str = RARRAY_PTR(v)[1];
1495
1504
  Check_Type(str, T_STRING);
1496
- VALUE klass = rb_path2class(STR2CSTR(str));
1505
+ klass = rb_path2class(StringValuePtr(str));
1497
1506
  if(flags & FL_SINGLETON)
1498
1507
  {
1499
1508
  *(VALUE *)(&n->nd_lit) =
@@ -1606,20 +1615,23 @@ void load_node_elem(enum Node_Elem_Name nen, VALUE v, NODE * n, VALUE node_hash,
1606
1615
  }
1607
1616
  case NEN_ORIG:
1608
1617
  {
1618
+ int flags;
1609
1619
  Check_Type(v, T_ARRAY);
1610
1620
  if(RARRAY_LEN(v) != 2)
1611
1621
  {
1612
1622
  rb_raise(rb_eArgError, "wrong size for array");
1613
1623
  }
1614
- int flags = NUM2INT(RARRAY_PTR(v)[0]);
1624
+ flags = NUM2INT(RARRAY_PTR(v)[0]);
1615
1625
  switch(flags & T_MASK)
1616
1626
  {
1617
1627
  case T_CLASS:
1618
1628
  case T_MODULE:
1619
1629
  {
1620
- VALUE str = RARRAY_PTR(v)[1];
1630
+ VALUE str, klass;
1631
+
1632
+ str = RARRAY_PTR(v)[1];
1621
1633
  Check_Type(str, T_STRING);
1622
- VALUE klass = rb_path2class(STR2CSTR(str));
1634
+ klass = rb_path2class(StringValuePtr(str));
1623
1635
  if(flags & FL_SINGLETON)
1624
1636
  {
1625
1637
  *(VALUE *)(&n->nd_orig) =
@@ -1846,20 +1858,23 @@ void load_node_elem(enum Node_Elem_Name nen, VALUE v, NODE * n, VALUE node_hash,
1846
1858
  }
1847
1859
  case NEN_TVAL:
1848
1860
  {
1861
+ int flags;
1849
1862
  Check_Type(v, T_ARRAY);
1850
1863
  if(RARRAY_LEN(v) != 2)
1851
1864
  {
1852
1865
  rb_raise(rb_eArgError, "wrong size for array");
1853
1866
  }
1854
- int flags = NUM2INT(RARRAY_PTR(v)[0]);
1867
+ flags = NUM2INT(RARRAY_PTR(v)[0]);
1855
1868
  switch(flags & T_MASK)
1856
1869
  {
1857
1870
  case T_CLASS:
1858
1871
  case T_MODULE:
1859
1872
  {
1860
- VALUE str = RARRAY_PTR(v)[1];
1873
+ VALUE str, klass;
1874
+
1875
+ str = RARRAY_PTR(v)[1];
1861
1876
  Check_Type(str, T_STRING);
1862
- VALUE klass = rb_path2class(STR2CSTR(str));
1877
+ klass = rb_path2class(StringValuePtr(str));
1863
1878
  if(flags & FL_SINGLETON)
1864
1879
  {
1865
1880
  *(VALUE *)(&n->nd_tval) =
@@ -2937,17 +2952,17 @@ void define_node_subclass_methods()
2937
2952
  rb_define_method(rb_cALLOCA, "cfnc", node_cfnc, 0);
2938
2953
  rb_ary_push(members, rb_str_new2("cfnc"));
2939
2954
 
2940
- /* Document-method: value
2941
- * a pointer to the previously allocated temporary node
2942
- */
2943
- rb_define_method(rb_cALLOCA, "value", node_value, 0);
2944
- rb_ary_push(members, rb_str_new2("value"));
2945
-
2946
2955
  /* Document-method: cnt
2947
2956
  * the number of bytes allocated
2948
2957
  */
2949
2958
  rb_define_method(rb_cALLOCA, "cnt", node_cnt, 0);
2950
2959
  rb_ary_push(members, rb_str_new2("cnt"));
2960
+
2961
+ /* Document-method: value
2962
+ * a pointer to the previously allocated temporary node
2963
+ */
2964
+ rb_define_method(rb_cALLOCA, "value", node_value, 0);
2965
+ rb_ary_push(members, rb_str_new2("value"));
2951
2966
  }
2952
2967
  #endif
2953
2968
 
@@ -2990,6 +3005,12 @@ void define_node_subclass_methods()
2990
3005
  rb_iv_set(rb_cARGS, "__type__", INT2NUM(NODE_ARGS));
2991
3006
  rb_define_singleton_method(rb_cARGS, "members", node_s_members, 0);
2992
3007
 
3008
+ /* Document-method: cnt
3009
+ * the number of required arguments
3010
+ */
3011
+ rb_define_method(rb_cARGS, "cnt", node_cnt, 0);
3012
+ rb_ary_push(members, rb_str_new2("cnt"));
3013
+
2993
3014
  /* Document-method: rest
2994
3015
  * an assignment node to assign the rest arg, if it is present
2995
3016
  */
@@ -3002,12 +3023,6 @@ void define_node_subclass_methods()
3002
3023
  */
3003
3024
  rb_define_method(rb_cARGS, "opt", node_opt, 0);
3004
3025
  rb_ary_push(members, rb_str_new2("opt"));
3005
-
3006
- /* Document-method: cnt
3007
- * the number of required arguments
3008
- */
3009
- rb_define_method(rb_cARGS, "cnt", node_cnt, 0);
3010
- rb_ary_push(members, rb_str_new2("cnt"));
3011
3026
  }
3012
3027
 
3013
3028
  /* Document-class: Node::ARGSCAT
@@ -3027,18 +3042,18 @@ void define_node_subclass_methods()
3027
3042
  rb_iv_set(rb_cARGSCAT, "__type__", INT2NUM(NODE_ARGSCAT));
3028
3043
  rb_define_singleton_method(rb_cARGSCAT, "members", node_s_members, 0);
3029
3044
 
3030
- /* Document-method: head
3031
- * a list of fixed arguments
3032
- */
3033
- rb_define_method(rb_cARGSCAT, "head", node_head, 0);
3034
- rb_ary_push(members, rb_str_new2("head"));
3035
-
3036
3045
  /* Document-method: body
3037
3046
  * the last argument, which will be splatted onto the end of the
3038
3047
  * fixed arguments
3039
3048
  */
3040
3049
  rb_define_method(rb_cARGSCAT, "body", node_body, 0);
3041
3050
  rb_ary_push(members, rb_str_new2("body"));
3051
+
3052
+ /* Document-method: head
3053
+ * a list of fixed arguments
3054
+ */
3055
+ rb_define_method(rb_cARGSCAT, "head", node_head, 0);
3056
+ rb_ary_push(members, rb_str_new2("head"));
3042
3057
  }
3043
3058
 
3044
3059
  /* Document-class: Node::ARGSPUSH
@@ -3055,10 +3070,10 @@ void define_node_subclass_methods()
3055
3070
  rb_iv_set(rb_cARGSPUSH, "__member__", members);
3056
3071
  rb_iv_set(rb_cARGSPUSH, "__type__", INT2NUM(NODE_ARGSPUSH));
3057
3072
  rb_define_singleton_method(rb_cARGSPUSH, "members", node_s_members, 0);
3058
- rb_define_method(rb_cARGSPUSH, "head", node_head, 0);
3059
- rb_ary_push(members, rb_str_new2("head"));
3060
3073
  rb_define_method(rb_cARGSPUSH, "body", node_body, 0);
3061
3074
  rb_ary_push(members, rb_str_new2("body"));
3075
+ rb_define_method(rb_cARGSPUSH, "head", node_head, 0);
3076
+ rb_ary_push(members, rb_str_new2("head"));
3062
3077
  }
3063
3078
 
3064
3079
  /* Document-class: Node::ARRAY
@@ -3073,12 +3088,6 @@ void define_node_subclass_methods()
3073
3088
  rb_iv_set(rb_cARRAY, "__member__", members);
3074
3089
  rb_iv_set(rb_cARRAY, "__type__", INT2NUM(NODE_ARRAY));
3075
3090
  rb_define_singleton_method(rb_cARRAY, "members", node_s_members, 0);
3076
-
3077
- /* Document-method: head
3078
- * the first element of the array
3079
- */
3080
- rb_define_method(rb_cARRAY, "head", node_head, 0);
3081
- rb_ary_push(members, rb_str_new2("head"));
3082
3091
  rb_define_method(rb_cARRAY, "alen", node_alen, 0);
3083
3092
  rb_ary_push(members, rb_str_new2("alen"));
3084
3093
 
@@ -3087,6 +3096,12 @@ void define_node_subclass_methods()
3087
3096
  */
3088
3097
  rb_define_method(rb_cARRAY, "next", node_next, 0);
3089
3098
  rb_ary_push(members, rb_str_new2("next"));
3099
+
3100
+ /* Document-method: head
3101
+ * the first element of the array
3102
+ */
3103
+ rb_define_method(rb_cARRAY, "head", node_head, 0);
3104
+ rb_ary_push(members, rb_str_new2("head"));
3090
3105
  }
3091
3106
 
3092
3107
  /* Document-class: Node::ATTRASGN
@@ -3103,12 +3118,6 @@ void define_node_subclass_methods()
3103
3118
  rb_iv_set(rb_cATTRASGN, "__type__", INT2NUM(NODE_ATTRASGN));
3104
3119
  rb_define_singleton_method(rb_cATTRASGN, "members", node_s_members, 0);
3105
3120
 
3106
- /* Document-method: args
3107
- * the arguments to the method
3108
- */
3109
- rb_define_method(rb_cATTRASGN, "args", node_args, 0);
3110
- rb_ary_push(members, rb_str_new2("args"));
3111
-
3112
3121
  /* Document-method: mid
3113
3122
  * the id of the attribute, with a trailing '=' sign
3114
3123
  */
@@ -3120,6 +3129,12 @@ void define_node_subclass_methods()
3120
3129
  */
3121
3130
  rb_define_method(rb_cATTRASGN, "recv", node_recv, 0);
3122
3131
  rb_ary_push(members, rb_str_new2("recv"));
3132
+
3133
+ /* Document-method: args
3134
+ * the arguments to the method
3135
+ */
3136
+ rb_define_method(rb_cATTRASGN, "args", node_args, 0);
3137
+ rb_ary_push(members, rb_str_new2("args"));
3123
3138
  }
3124
3139
 
3125
3140
  /* Document-class: Node::ATTRSET
@@ -3207,17 +3222,17 @@ void define_node_subclass_methods()
3207
3222
  rb_iv_set(rb_cBLOCK, "__type__", INT2NUM(NODE_BLOCK));
3208
3223
  rb_define_singleton_method(rb_cBLOCK, "members", node_s_members, 0);
3209
3224
 
3210
- /* Document-method: head
3211
- * the first expression in the block of code
3212
- */
3213
- rb_define_method(rb_cBLOCK, "head", node_head, 0);
3214
- rb_ary_push(members, rb_str_new2("head"));
3215
-
3216
3225
  /* Document-method: next
3217
3226
  * the second expression in the block of code
3218
3227
  */
3219
3228
  rb_define_method(rb_cBLOCK, "next", node_next, 0);
3220
3229
  rb_ary_push(members, rb_str_new2("next"));
3230
+
3231
+ /* Document-method: head
3232
+ * the first expression in the block of code
3233
+ */
3234
+ rb_define_method(rb_cBLOCK, "head", node_head, 0);
3235
+ rb_ary_push(members, rb_str_new2("head"));
3221
3236
  }
3222
3237
 
3223
3238
  /* Document-class: Node::BLOCK_ARG
@@ -3325,12 +3340,6 @@ void define_node_subclass_methods()
3325
3340
  rb_iv_set(rb_cCALL, "__type__", INT2NUM(NODE_CALL));
3326
3341
  rb_define_singleton_method(rb_cCALL, "members", node_s_members, 0);
3327
3342
 
3328
- /* Document-method: args
3329
- * the arguments to the method
3330
- */
3331
- rb_define_method(rb_cCALL, "args", node_args, 0);
3332
- rb_ary_push(members, rb_str_new2("args"));
3333
-
3334
3343
  /* Document-method: mid
3335
3344
  * the method id
3336
3345
  */
@@ -3342,6 +3351,12 @@ void define_node_subclass_methods()
3342
3351
  */
3343
3352
  rb_define_method(rb_cCALL, "recv", node_recv, 0);
3344
3353
  rb_ary_push(members, rb_str_new2("recv"));
3354
+
3355
+ /* Document-method: args
3356
+ * the arguments to the method
3357
+ */
3358
+ rb_define_method(rb_cCALL, "args", node_args, 0);
3359
+ rb_ary_push(members, rb_str_new2("args"));
3345
3360
  }
3346
3361
 
3347
3362
  /* Document-class: Node::CASE
@@ -3359,12 +3374,6 @@ void define_node_subclass_methods()
3359
3374
  rb_iv_set(rb_cCASE, "__type__", INT2NUM(NODE_CASE));
3360
3375
  rb_define_singleton_method(rb_cCASE, "members", node_s_members, 0);
3361
3376
 
3362
- /* Document-method: head
3363
- * the value to select on
3364
- */
3365
- rb_define_method(rb_cCASE, "head", node_head, 0);
3366
- rb_ary_push(members, rb_str_new2("head"));
3367
-
3368
3377
  /* Document-method: body
3369
3378
  * a linked list of nodes, each node representing a when
3370
3379
  * conditional
@@ -3373,6 +3382,12 @@ void define_node_subclass_methods()
3373
3382
  rb_ary_push(members, rb_str_new2("body"));
3374
3383
  rb_define_method(rb_cCASE, "next", node_next, 0);
3375
3384
  rb_ary_push(members, rb_str_new2("next"));
3385
+
3386
+ /* Document-method: head
3387
+ * the value to select on
3388
+ */
3389
+ rb_define_method(rb_cCASE, "head", node_head, 0);
3390
+ rb_ary_push(members, rb_str_new2("head"));
3376
3391
  }
3377
3392
 
3378
3393
  /* Document-class: Node::CDECL
@@ -3387,17 +3402,17 @@ void define_node_subclass_methods()
3387
3402
  rb_iv_set(rb_cCDECL, "__type__", INT2NUM(NODE_CDECL));
3388
3403
  rb_define_singleton_method(rb_cCDECL, "members", node_s_members, 0);
3389
3404
 
3390
- /* Document-method: value
3391
- * the value to be assigned to the constant
3392
- */
3393
- rb_define_method(rb_cCDECL, "value", node_value, 0);
3394
- rb_ary_push(members, rb_str_new2("value"));
3395
-
3396
3405
  /* Document-method: vid
3397
3406
  * the name of the constant to be assigned, all uppercase
3398
3407
  */
3399
3408
  rb_define_method(rb_cCDECL, "vid", node_vid, 0);
3400
3409
  rb_ary_push(members, rb_str_new2("vid"));
3410
+
3411
+ /* Document-method: value
3412
+ * the value to be assigned to the constant
3413
+ */
3414
+ rb_define_method(rb_cCDECL, "value", node_value, 0);
3415
+ rb_ary_push(members, rb_str_new2("value"));
3401
3416
  }
3402
3417
 
3403
3418
  /* Document-class: Node::CFUNC
@@ -3440,12 +3455,6 @@ void define_node_subclass_methods()
3440
3455
  rb_iv_set(rb_cCLASS, "__type__", INT2NUM(NODE_CLASS));
3441
3456
  rb_define_singleton_method(rb_cCLASS, "members", node_s_members, 0);
3442
3457
 
3443
- /* Document-method: cpath
3444
- * the name of the class to define
3445
- */
3446
- rb_define_method(rb_cCLASS, "cpath", node_cpath, 0);
3447
- rb_ary_push(members, rb_str_new2("cpath"));
3448
-
3449
3458
  /* Document-method: body
3450
3459
  * the body of the class definition
3451
3460
  */
@@ -3458,6 +3467,12 @@ void define_node_subclass_methods()
3458
3467
  */
3459
3468
  rb_define_method(rb_cCLASS, "super", node_super, 0);
3460
3469
  rb_ary_push(members, rb_str_new2("super"));
3470
+
3471
+ /* Document-method: cpath
3472
+ * the name of the class to define
3473
+ */
3474
+ rb_define_method(rb_cCLASS, "cpath", node_cpath, 0);
3475
+ rb_ary_push(members, rb_str_new2("cpath"));
3461
3476
  }
3462
3477
 
3463
3478
  /* Document-class: Node::COLON2
@@ -3476,17 +3491,17 @@ void define_node_subclass_methods()
3476
3491
  rb_iv_set(rb_cCOLON2, "__type__", INT2NUM(NODE_COLON2));
3477
3492
  rb_define_singleton_method(rb_cCOLON2, "members", node_s_members, 0);
3478
3493
 
3479
- /* Document-method: head
3480
- * an expression specifying the class in which to do the lookup
3481
- */
3482
- rb_define_method(rb_cCOLON2, "head", node_head, 0);
3483
- rb_ary_push(members, rb_str_new2("head"));
3484
-
3485
3494
  /* Document-method: mid
3486
3495
  * the name of the method or constant to call/look up
3487
3496
  */
3488
3497
  rb_define_method(rb_cCOLON2, "mid", node_mid, 0);
3489
3498
  rb_ary_push(members, rb_str_new2("mid"));
3499
+
3500
+ /* Document-method: head
3501
+ * an expression specifying the class in which to do the lookup
3502
+ */
3503
+ rb_define_method(rb_cCOLON2, "head", node_head, 0);
3504
+ rb_ary_push(members, rb_str_new2("head"));
3490
3505
  }
3491
3506
 
3492
3507
  /* Document-class: Node::COLON3
@@ -3551,17 +3566,17 @@ void define_node_subclass_methods()
3551
3566
  rb_define_method(rb_cCREF, "body", node_body, 0);
3552
3567
  rb_ary_push(members, rb_str_new2("body"));
3553
3568
 
3554
- /* Document-method: next
3555
- * the previous value of ruby_cref or ruby_top_cref
3556
- */
3557
- rb_define_method(rb_cCREF, "next", node_next, 0);
3558
- rb_ary_push(members, rb_str_new2("next"));
3559
-
3560
3569
  /* Document-method: clss
3561
3570
  * the new class to use for the cbase.
3562
3571
  */
3563
3572
  rb_define_method(rb_cCREF, "clss", node_clss, 0);
3564
3573
  rb_ary_push(members, rb_str_new2("clss"));
3574
+
3575
+ /* Document-method: next
3576
+ * the previous value of ruby_cref or ruby_top_cref
3577
+ */
3578
+ rb_define_method(rb_cCREF, "next", node_next, 0);
3579
+ rb_ary_push(members, rb_str_new2("next"));
3565
3580
  }
3566
3581
 
3567
3582
  /* Document-class: Node::CVAR
@@ -3594,18 +3609,18 @@ void define_node_subclass_methods()
3594
3609
  rb_iv_set(rb_cCVASGN, "__type__", INT2NUM(NODE_CVASGN));
3595
3610
  rb_define_singleton_method(rb_cCVASGN, "members", node_s_members, 0);
3596
3611
 
3612
+ /* Document-method: vid
3613
+ * the name of the class variable to assign
3614
+ */
3615
+ rb_define_method(rb_cCVASGN, "vid", node_vid, 0);
3616
+ rb_ary_push(members, rb_str_new2("vid"));
3617
+
3597
3618
  /* Document-method: value
3598
3619
  * an expression whose result is the new value of the class
3599
3620
  * variable
3600
3621
  */
3601
3622
  rb_define_method(rb_cCVASGN, "value", node_value, 0);
3602
3623
  rb_ary_push(members, rb_str_new2("value"));
3603
-
3604
- /* Document-method: vid
3605
- * the name of the class variable to assign
3606
- */
3607
- rb_define_method(rb_cCVASGN, "vid", node_vid, 0);
3608
- rb_ary_push(members, rb_str_new2("vid"));
3609
3624
  }
3610
3625
 
3611
3626
  /* Document-class: Node::CVDECL
@@ -3621,18 +3636,18 @@ void define_node_subclass_methods()
3621
3636
  rb_iv_set(rb_cCVDECL, "__type__", INT2NUM(NODE_CVDECL));
3622
3637
  rb_define_singleton_method(rb_cCVDECL, "members", node_s_members, 0);
3623
3638
 
3639
+ /* Document-method: vid
3640
+ * the name of the class variable to assign
3641
+ */
3642
+ rb_define_method(rb_cCVDECL, "vid", node_vid, 0);
3643
+ rb_ary_push(members, rb_str_new2("vid"));
3644
+
3624
3645
  /* Document-method: value
3625
3646
  * an expression whose result is the new value of the class
3626
3647
  * variable
3627
3648
  */
3628
3649
  rb_define_method(rb_cCVDECL, "value", node_value, 0);
3629
3650
  rb_ary_push(members, rb_str_new2("value"));
3630
-
3631
- /* Document-method: vid
3632
- * the name of the class variable to assign
3633
- */
3634
- rb_define_method(rb_cCVDECL, "vid", node_vid, 0);
3635
- rb_ary_push(members, rb_str_new2("vid"));
3636
3651
  }
3637
3652
 
3638
3653
  /* Document-class: Node::DASGN
@@ -3655,17 +3670,17 @@ void define_node_subclass_methods()
3655
3670
  rb_iv_set(rb_cDASGN, "__type__", INT2NUM(NODE_DASGN));
3656
3671
  rb_define_singleton_method(rb_cDASGN, "members", node_s_members, 0);
3657
3672
 
3658
- /* Document-method: value
3659
- * the value to assign to the local variable
3660
- */
3661
- rb_define_method(rb_cDASGN, "value", node_value, 0);
3662
- rb_ary_push(members, rb_str_new2("value"));
3663
-
3664
3673
  /* Document-method: vid
3665
3674
  * the name of the local variable
3666
3675
  */
3667
3676
  rb_define_method(rb_cDASGN, "vid", node_vid, 0);
3668
3677
  rb_ary_push(members, rb_str_new2("vid"));
3678
+
3679
+ /* Document-method: value
3680
+ * the value to assign to the local variable
3681
+ */
3682
+ rb_define_method(rb_cDASGN, "value", node_value, 0);
3683
+ rb_ary_push(members, rb_str_new2("value"));
3669
3684
  }
3670
3685
 
3671
3686
  /* Document-class: Node::DASGN_CURR
@@ -3680,17 +3695,17 @@ void define_node_subclass_methods()
3680
3695
  rb_iv_set(rb_cDASGN_CURR, "__type__", INT2NUM(NODE_DASGN_CURR));
3681
3696
  rb_define_singleton_method(rb_cDASGN_CURR, "members", node_s_members, 0);
3682
3697
 
3683
- /* Document-method: value
3684
- * the value to assign to the local variable
3685
- */
3686
- rb_define_method(rb_cDASGN_CURR, "value", node_value, 0);
3687
- rb_ary_push(members, rb_str_new2("value"));
3688
-
3689
3698
  /* Document-method: vid
3690
3699
  * the name of the local variable
3691
3700
  */
3692
3701
  rb_define_method(rb_cDASGN_CURR, "vid", node_vid, 0);
3693
3702
  rb_ary_push(members, rb_str_new2("vid"));
3703
+
3704
+ /* Document-method: value
3705
+ * the value to assign to the local variable
3706
+ */
3707
+ rb_define_method(rb_cDASGN_CURR, "value", node_value, 0);
3708
+ rb_ary_push(members, rb_str_new2("value"));
3694
3709
  }
3695
3710
 
3696
3711
  /* Document-class: Node::DEFINED
@@ -3726,11 +3741,11 @@ void define_node_subclass_methods()
3726
3741
  rb_iv_set(rb_cDEFN, "__type__", INT2NUM(NODE_DEFN));
3727
3742
  rb_define_singleton_method(rb_cDEFN, "members", node_s_members, 0);
3728
3743
 
3729
- /* Document-method: defn
3730
- * the body of the method definition
3744
+ /* Document-method: noex
3745
+ * the flags which should be used to define the method
3731
3746
  */
3732
- rb_define_method(rb_cDEFN, "defn", node_defn, 0);
3733
- rb_ary_push(members, rb_str_new2("defn"));
3747
+ rb_define_method(rb_cDEFN, "noex", node_noex, 0);
3748
+ rb_ary_push(members, rb_str_new2("noex"));
3734
3749
 
3735
3750
  /* Document-method: mid
3736
3751
  * the name of the method* defn the body of the method
@@ -3738,11 +3753,11 @@ void define_node_subclass_methods()
3738
3753
  rb_define_method(rb_cDEFN, "mid", node_mid, 0);
3739
3754
  rb_ary_push(members, rb_str_new2("mid"));
3740
3755
 
3741
- /* Document-method: noex
3742
- * the flags which should be used to define the method
3756
+ /* Document-method: defn
3757
+ * the body of the method definition
3743
3758
  */
3744
- rb_define_method(rb_cDEFN, "noex", node_noex, 0);
3745
- rb_ary_push(members, rb_str_new2("noex"));
3759
+ rb_define_method(rb_cDEFN, "defn", node_defn, 0);
3760
+ rb_ary_push(members, rb_str_new2("defn"));
3746
3761
  }
3747
3762
 
3748
3763
  /* Document-class: Node::DEFS
@@ -3758,14 +3773,14 @@ void define_node_subclass_methods()
3758
3773
  rb_iv_set(rb_cDEFS, "__member__", members);
3759
3774
  rb_iv_set(rb_cDEFS, "__type__", INT2NUM(NODE_DEFS));
3760
3775
  rb_define_singleton_method(rb_cDEFS, "members", node_s_members, 0);
3761
- rb_define_method(rb_cDEFS, "defn", node_defn, 0);
3762
- rb_ary_push(members, rb_str_new2("defn"));
3763
3776
 
3764
3777
  /* Document-method: mid
3765
3778
  * the name of the method* defn the body of the method
3766
3779
  */
3767
3780
  rb_define_method(rb_cDEFS, "mid", node_mid, 0);
3768
3781
  rb_ary_push(members, rb_str_new2("mid"));
3782
+ rb_define_method(rb_cDEFS, "defn", node_defn, 0);
3783
+ rb_ary_push(members, rb_str_new2("defn"));
3769
3784
 
3770
3785
  /* Document-method: recv
3771
3786
  * the object to whose singleton class the new method is to be added
@@ -3809,20 +3824,20 @@ void define_node_subclass_methods()
3809
3824
  rb_iv_set(rb_cDOT2, "__member__", members);
3810
3825
  rb_iv_set(rb_cDOT2, "__type__", INT2NUM(NODE_DOT2));
3811
3826
  rb_define_singleton_method(rb_cDOT2, "members", node_s_members, 0);
3812
-
3813
- /* Document-method: beg
3814
- * the beginning of the range
3815
- */
3816
- rb_define_method(rb_cDOT2, "beg", node_beg, 0);
3817
- rb_ary_push(members, rb_str_new2("beg"));
3827
+ rb_define_method(rb_cDOT2, "state", node_state, 0);
3828
+ rb_ary_push(members, rb_str_new2("state"));
3818
3829
 
3819
3830
  /* Document-method: end
3820
3831
  * the end of the range
3821
3832
  */
3822
3833
  rb_define_method(rb_cDOT2, "end", node_end, 0);
3823
3834
  rb_ary_push(members, rb_str_new2("end"));
3824
- rb_define_method(rb_cDOT2, "state", node_state, 0);
3825
- rb_ary_push(members, rb_str_new2("state"));
3835
+
3836
+ /* Document-method: beg
3837
+ * the beginning of the range
3838
+ */
3839
+ rb_define_method(rb_cDOT2, "beg", node_beg, 0);
3840
+ rb_ary_push(members, rb_str_new2("beg"));
3826
3841
  }
3827
3842
 
3828
3843
  /* Document-class: Node::DOT3
@@ -3837,20 +3852,20 @@ void define_node_subclass_methods()
3837
3852
  rb_iv_set(rb_cDOT3, "__member__", members);
3838
3853
  rb_iv_set(rb_cDOT3, "__type__", INT2NUM(NODE_DOT3));
3839
3854
  rb_define_singleton_method(rb_cDOT3, "members", node_s_members, 0);
3840
-
3841
- /* Document-method: beg
3842
- * the beginning of the range
3843
- */
3844
- rb_define_method(rb_cDOT3, "beg", node_beg, 0);
3845
- rb_ary_push(members, rb_str_new2("beg"));
3855
+ rb_define_method(rb_cDOT3, "state", node_state, 0);
3856
+ rb_ary_push(members, rb_str_new2("state"));
3846
3857
 
3847
3858
  /* Document-method: end
3848
3859
  * the end of the range
3849
3860
  */
3850
3861
  rb_define_method(rb_cDOT3, "end", node_end, 0);
3851
3862
  rb_ary_push(members, rb_str_new2("end"));
3852
- rb_define_method(rb_cDOT3, "state", node_state, 0);
3853
- rb_ary_push(members, rb_str_new2("state"));
3863
+
3864
+ /* Document-method: beg
3865
+ * the beginning of the range
3866
+ */
3867
+ rb_define_method(rb_cDOT3, "beg", node_beg, 0);
3868
+ rb_ary_push(members, rb_str_new2("beg"));
3854
3869
  }
3855
3870
 
3856
3871
  /* Document-class: Node::DREGX
@@ -3875,9 +3890,15 @@ void define_node_subclass_methods()
3875
3890
  rb_define_method(rb_cDREGX, "lit", node_lit, 0);
3876
3891
  rb_ary_push(members, rb_str_new2("lit"));
3877
3892
 
3878
- /* Document-method: cflag
3879
- * a bitfield containing the options used in the regular
3880
- * expression. Valid values include:
3893
+ /* Document-method: next
3894
+ * a list of expressions to be appended onto the string
3895
+ */
3896
+ rb_define_method(rb_cDREGX, "next", node_next, 0);
3897
+ rb_ary_push(members, rb_str_new2("next"));
3898
+
3899
+ /* Document-method: cflag
3900
+ * a bitfield containing the options used in the regular
3901
+ * expression. Valid values include:
3881
3902
  * * RE_OPTION_IGNORECASE
3882
3903
  * * RE_OPTION_EXTENDED
3883
3904
  * * RE_OPTION_MULTILINE
@@ -3891,12 +3912,6 @@ void define_node_subclass_methods()
3891
3912
  */
3892
3913
  rb_define_method(rb_cDREGX, "cflag", node_cflag, 0);
3893
3914
  rb_ary_push(members, rb_str_new2("cflag"));
3894
-
3895
- /* Document-method: next
3896
- * a list of expressions to be appended onto the string
3897
- */
3898
- rb_define_method(rb_cDREGX, "next", node_next, 0);
3899
- rb_ary_push(members, rb_str_new2("next"));
3900
3915
  }
3901
3916
 
3902
3917
  /* Document-class: Node::DREGX_ONCE
@@ -3918,18 +3933,18 @@ void define_node_subclass_methods()
3918
3933
  rb_define_method(rb_cDREGX_ONCE, "lit", node_lit, 0);
3919
3934
  rb_ary_push(members, rb_str_new2("lit"));
3920
3935
 
3936
+ /* Document-method: next
3937
+ * a list of expressions to be appended onto the string
3938
+ */
3939
+ rb_define_method(rb_cDREGX_ONCE, "next", node_next, 0);
3940
+ rb_ary_push(members, rb_str_new2("next"));
3941
+
3921
3942
  /* Document-method: cflag
3922
3943
  * a bitfield containing the options used in the regular
3923
3944
  * expression. See DREGX for a list of valid values.
3924
3945
  */
3925
3946
  rb_define_method(rb_cDREGX_ONCE, "cflag", node_cflag, 0);
3926
3947
  rb_ary_push(members, rb_str_new2("cflag"));
3927
-
3928
- /* Document-method: next
3929
- * a list of expressions to be appended onto the string
3930
- */
3931
- rb_define_method(rb_cDREGX_ONCE, "next", node_next, 0);
3932
- rb_ary_push(members, rb_str_new2("next"));
3933
3948
  }
3934
3949
 
3935
3950
  /* Document-class: Node::DSTR
@@ -4119,11 +4134,11 @@ void define_node_subclass_methods()
4119
4134
  rb_iv_set(rb_cFBODY, "__type__", INT2NUM(NODE_FBODY));
4120
4135
  rb_define_singleton_method(rb_cFBODY, "members", node_s_members, 0);
4121
4136
 
4122
- /* Document-method: head
4123
- * the method body
4137
+ /* Document-method: mid
4138
+ * the name of the method
4124
4139
  */
4125
- rb_define_method(rb_cFBODY, "head", node_head, 0);
4126
- rb_ary_push(members, rb_str_new2("head"));
4140
+ rb_define_method(rb_cFBODY, "mid", node_mid, 0);
4141
+ rb_ary_push(members, rb_str_new2("mid"));
4127
4142
 
4128
4143
  /* Document-method: orig
4129
4144
  * the origin class
@@ -4131,11 +4146,11 @@ void define_node_subclass_methods()
4131
4146
  rb_define_method(rb_cFBODY, "orig", node_orig, 0);
4132
4147
  rb_ary_push(members, rb_str_new2("orig"));
4133
4148
 
4134
- /* Document-method: mid
4135
- * the name of the method
4149
+ /* Document-method: head
4150
+ * the method body
4136
4151
  */
4137
- rb_define_method(rb_cFBODY, "mid", node_mid, 0);
4138
- rb_ary_push(members, rb_str_new2("mid"));
4152
+ rb_define_method(rb_cFBODY, "head", node_head, 0);
4153
+ rb_ary_push(members, rb_str_new2("head"));
4139
4154
  }
4140
4155
 
4141
4156
  /* Document-class: Node::FCALL
@@ -4153,17 +4168,17 @@ void define_node_subclass_methods()
4153
4168
  rb_iv_set(rb_cFCALL, "__type__", INT2NUM(NODE_FCALL));
4154
4169
  rb_define_singleton_method(rb_cFCALL, "members", node_s_members, 0);
4155
4170
 
4156
- /* Document-method: args
4157
- * the arguments to the method
4158
- */
4159
- rb_define_method(rb_cFCALL, "args", node_args, 0);
4160
- rb_ary_push(members, rb_str_new2("args"));
4161
-
4162
4171
  /* Document-method: mid
4163
4172
  * the method id
4164
4173
  */
4165
4174
  rb_define_method(rb_cFCALL, "mid", node_mid, 0);
4166
4175
  rb_ary_push(members, rb_str_new2("mid"));
4176
+
4177
+ /* Document-method: args
4178
+ * the arguments to the method
4179
+ */
4180
+ rb_define_method(rb_cFCALL, "args", node_args, 0);
4181
+ rb_ary_push(members, rb_str_new2("args"));
4167
4182
  }
4168
4183
 
4169
4184
  /* Document-class: Node::FLIP2
@@ -4180,11 +4195,12 @@ void define_node_subclass_methods()
4180
4195
  rb_iv_set(rb_cFLIP2, "__type__", INT2NUM(NODE_FLIP2));
4181
4196
  rb_define_singleton_method(rb_cFLIP2, "members", node_s_members, 0);
4182
4197
 
4183
- /* Document-method: beg
4184
- * the beginning of the range
4198
+ /* Document-method: cnt
4199
+ * the index into the local variable table of the special variable
4200
+ * to use in the flip-flop expression (usually 2 for $_)
4185
4201
  */
4186
- rb_define_method(rb_cFLIP2, "beg", node_beg, 0);
4187
- rb_ary_push(members, rb_str_new2("beg"));
4202
+ rb_define_method(rb_cFLIP2, "cnt", node_cnt, 0);
4203
+ rb_ary_push(members, rb_str_new2("cnt"));
4188
4204
 
4189
4205
  /* Document-method: end
4190
4206
  * the end of the range
@@ -4192,12 +4208,11 @@ void define_node_subclass_methods()
4192
4208
  rb_define_method(rb_cFLIP2, "end", node_end, 0);
4193
4209
  rb_ary_push(members, rb_str_new2("end"));
4194
4210
 
4195
- /* Document-method: cnt
4196
- * the index into the local variable table of the special variable
4197
- * to use in the flip-flop expression (usually 2 for $_)
4211
+ /* Document-method: beg
4212
+ * the beginning of the range
4198
4213
  */
4199
- rb_define_method(rb_cFLIP2, "cnt", node_cnt, 0);
4200
- rb_ary_push(members, rb_str_new2("cnt"));
4214
+ rb_define_method(rb_cFLIP2, "beg", node_beg, 0);
4215
+ rb_ary_push(members, rb_str_new2("beg"));
4201
4216
  }
4202
4217
 
4203
4218
  /* Document-class: Node::FLIP3
@@ -4214,11 +4229,12 @@ void define_node_subclass_methods()
4214
4229
  rb_iv_set(rb_cFLIP3, "__type__", INT2NUM(NODE_FLIP3));
4215
4230
  rb_define_singleton_method(rb_cFLIP3, "members", node_s_members, 0);
4216
4231
 
4217
- /* Document-method: beg
4218
- * the beginning of the range
4232
+ /* Document-method: cnt
4233
+ * the index into the local variable table of the special variable
4234
+ * to use in the flip-flop expression (usually 2 for $_)
4219
4235
  */
4220
- rb_define_method(rb_cFLIP3, "beg", node_beg, 0);
4221
- rb_ary_push(members, rb_str_new2("beg"));
4236
+ rb_define_method(rb_cFLIP3, "cnt", node_cnt, 0);
4237
+ rb_ary_push(members, rb_str_new2("cnt"));
4222
4238
 
4223
4239
  /* Document-method: end
4224
4240
  * the end of the range
@@ -4226,12 +4242,11 @@ void define_node_subclass_methods()
4226
4242
  rb_define_method(rb_cFLIP3, "end", node_end, 0);
4227
4243
  rb_ary_push(members, rb_str_new2("end"));
4228
4244
 
4229
- /* Document-method: cnt
4230
- * the index into the local variable table of the special variable
4231
- * to use in the flip-flop expression (usually 2 for $_)
4245
+ /* Document-method: beg
4246
+ * the beginning of the range
4232
4247
  */
4233
- rb_define_method(rb_cFLIP3, "cnt", node_cnt, 0);
4234
- rb_ary_push(members, rb_str_new2("cnt"));
4248
+ rb_define_method(rb_cFLIP3, "beg", node_beg, 0);
4249
+ rb_ary_push(members, rb_str_new2("beg"));
4235
4250
  }
4236
4251
 
4237
4252
  /* Document-class: Node::FOR
@@ -4287,20 +4302,20 @@ void define_node_subclass_methods()
4287
4302
  rb_iv_set(rb_cGASGN, "__member__", members);
4288
4303
  rb_iv_set(rb_cGASGN, "__type__", INT2NUM(NODE_GASGN));
4289
4304
  rb_define_singleton_method(rb_cGASGN, "members", node_s_members, 0);
4290
-
4291
- /* Document-method: value
4292
- * an expression whose result is the new value of the global variable
4293
- */
4294
- rb_define_method(rb_cGASGN, "value", node_value, 0);
4295
- rb_ary_push(members, rb_str_new2("value"));
4305
+ rb_define_method(rb_cGASGN, "entry", node_entry, 0);
4306
+ rb_ary_push(members, rb_str_new2("entry"));
4296
4307
 
4297
4308
  /* Document-method: vid
4298
4309
  * the name of the global variable, with a leading '$' character.
4299
4310
  */
4300
4311
  rb_define_method(rb_cGASGN, "vid", node_vid, 0);
4301
4312
  rb_ary_push(members, rb_str_new2("vid"));
4302
- rb_define_method(rb_cGASGN, "entry", node_entry, 0);
4303
- rb_ary_push(members, rb_str_new2("entry"));
4313
+
4314
+ /* Document-method: value
4315
+ * an expression whose result is the new value of the global variable
4316
+ */
4317
+ rb_define_method(rb_cGASGN, "value", node_value, 0);
4318
+ rb_ary_push(members, rb_str_new2("value"));
4304
4319
  }
4305
4320
 
4306
4321
  /* Document-class: Node::GVAR
@@ -4313,14 +4328,14 @@ void define_node_subclass_methods()
4313
4328
  rb_iv_set(rb_cGVAR, "__member__", members);
4314
4329
  rb_iv_set(rb_cGVAR, "__type__", INT2NUM(NODE_GVAR));
4315
4330
  rb_define_singleton_method(rb_cGVAR, "members", node_s_members, 0);
4331
+ rb_define_method(rb_cGVAR, "entry", node_entry, 0);
4332
+ rb_ary_push(members, rb_str_new2("entry"));
4316
4333
 
4317
4334
  /* Document-method: vid
4318
4335
  * the name of the global variable to retrieve, with a leading '$'
4319
4336
  */
4320
4337
  rb_define_method(rb_cGVAR, "vid", node_vid, 0);
4321
4338
  rb_ary_push(members, rb_str_new2("vid"));
4322
- rb_define_method(rb_cGVAR, "entry", node_entry, 0);
4323
- rb_ary_push(members, rb_str_new2("entry"));
4324
4339
  }
4325
4340
 
4326
4341
  /* Document-class: Node::HASH
@@ -4353,17 +4368,17 @@ void define_node_subclass_methods()
4353
4368
  rb_iv_set(rb_cIASGN, "__type__", INT2NUM(NODE_IASGN));
4354
4369
  rb_define_singleton_method(rb_cIASGN, "members", node_s_members, 0);
4355
4370
 
4356
- /* Document-method: value
4357
- * the value to assign to the instance variable
4358
- */
4359
- rb_define_method(rb_cIASGN, "value", node_value, 0);
4360
- rb_ary_push(members, rb_str_new2("value"));
4361
-
4362
4371
  /* Document-method: vid
4363
4372
  * the name of the instance variable, with a leading '@' sign
4364
4373
  */
4365
4374
  rb_define_method(rb_cIASGN, "vid", node_vid, 0);
4366
4375
  rb_ary_push(members, rb_str_new2("vid"));
4376
+
4377
+ /* Document-method: value
4378
+ * the value to assign to the instance variable
4379
+ */
4380
+ rb_define_method(rb_cIASGN, "value", node_value, 0);
4381
+ rb_ary_push(members, rb_str_new2("value"));
4367
4382
  }
4368
4383
 
4369
4384
  /* Document-class: Node::IF
@@ -4395,12 +4410,6 @@ void define_node_subclass_methods()
4395
4410
  rb_iv_set(rb_cIF, "__type__", INT2NUM(NODE_IF));
4396
4411
  rb_define_singleton_method(rb_cIF, "members", node_s_members, 0);
4397
4412
 
4398
- /* Document-method: cond
4399
- * the condition to evaluate
4400
- */
4401
- rb_define_method(rb_cIF, "cond", node_cond, 0);
4402
- rb_ary_push(members, rb_str_new2("cond"));
4403
-
4404
4413
  /* Document-method: body
4405
4414
  * the expression to evaluate if the expression is true, or false
4406
4415
  * if the expression is empty
@@ -4408,6 +4417,12 @@ void define_node_subclass_methods()
4408
4417
  rb_define_method(rb_cIF, "body", node_body, 0);
4409
4418
  rb_ary_push(members, rb_str_new2("body"));
4410
4419
 
4420
+ /* Document-method: cond
4421
+ * the condition to evaluate
4422
+ */
4423
+ rb_define_method(rb_cIF, "cond", node_cond, 0);
4424
+ rb_ary_push(members, rb_str_new2("cond"));
4425
+
4411
4426
  /* Document-method: else
4412
4427
  * the expression to evaluate if the expression is false, or false
4413
4428
  * if the expression is empty
@@ -4427,6 +4442,12 @@ void define_node_subclass_methods()
4427
4442
  rb_iv_set(rb_cIFUNC, "__type__", INT2NUM(NODE_IFUNC));
4428
4443
  rb_define_singleton_method(rb_cIFUNC, "members", node_s_members, 0);
4429
4444
 
4445
+ /* Document-method: state
4446
+ * always 0
4447
+ */
4448
+ rb_define_method(rb_cIFUNC, "state", node_state, 0);
4449
+ rb_ary_push(members, rb_str_new2("state"));
4450
+
4430
4451
  /* Document-method: cfnc
4431
4452
  * a pointer to the C function to which to yield
4432
4453
  */
@@ -4439,12 +4460,6 @@ void define_node_subclass_methods()
4439
4460
  */
4440
4461
  rb_define_method(rb_cIFUNC, "tval", node_tval, 0);
4441
4462
  rb_ary_push(members, rb_str_new2("tval"));
4442
-
4443
- /* Document-method: state
4444
- * always 0
4445
- */
4446
- rb_define_method(rb_cIFUNC, "state", node_state, 0);
4447
- rb_ary_push(members, rb_str_new2("state"));
4448
4463
  }
4449
4464
 
4450
4465
  /* Document-class: Node::ITER
@@ -4521,20 +4536,20 @@ void define_node_subclass_methods()
4521
4536
  rb_iv_set(rb_cLASGN, "__member__", members);
4522
4537
  rb_iv_set(rb_cLASGN, "__type__", INT2NUM(NODE_LASGN));
4523
4538
  rb_define_singleton_method(rb_cLASGN, "members", node_s_members, 0);
4524
-
4525
- /* Document-method: value
4526
- * the value to assign to the local variable
4527
- */
4528
- rb_define_method(rb_cLASGN, "value", node_value, 0);
4529
- rb_ary_push(members, rb_str_new2("value"));
4539
+ rb_define_method(rb_cLASGN, "cnt", node_cnt, 0);
4540
+ rb_ary_push(members, rb_str_new2("cnt"));
4530
4541
 
4531
4542
  /* Document-method: vid
4532
4543
  * the name of the local variable
4533
4544
  */
4534
4545
  rb_define_method(rb_cLASGN, "vid", node_vid, 0);
4535
4546
  rb_ary_push(members, rb_str_new2("vid"));
4536
- rb_define_method(rb_cLASGN, "cnt", node_cnt, 0);
4537
- rb_ary_push(members, rb_str_new2("cnt"));
4547
+
4548
+ /* Document-method: value
4549
+ * the value to assign to the local variable
4550
+ */
4551
+ rb_define_method(rb_cLASGN, "value", node_value, 0);
4552
+ rb_ary_push(members, rb_str_new2("value"));
4538
4553
  }
4539
4554
 
4540
4555
  /* Document-class: Node::LIT
@@ -4566,14 +4581,14 @@ void define_node_subclass_methods()
4566
4581
  rb_iv_set(rb_cLVAR, "__member__", members);
4567
4582
  rb_iv_set(rb_cLVAR, "__type__", INT2NUM(NODE_LVAR));
4568
4583
  rb_define_singleton_method(rb_cLVAR, "members", node_s_members, 0);
4584
+ rb_define_method(rb_cLVAR, "cnt", node_cnt, 0);
4585
+ rb_ary_push(members, rb_str_new2("cnt"));
4569
4586
 
4570
4587
  /* Document-method: vid
4571
4588
  * the name of the local variable to retrieve.
4572
4589
  */
4573
4590
  rb_define_method(rb_cLVAR, "vid", node_vid, 0);
4574
4591
  rb_ary_push(members, rb_str_new2("vid"));
4575
- rb_define_method(rb_cLVAR, "cnt", node_cnt, 0);
4576
- rb_ary_push(members, rb_str_new2("cnt"));
4577
4592
  }
4578
4593
 
4579
4594
  /* Document-class: Node::MASGN
@@ -4666,6 +4681,13 @@ void define_node_subclass_methods()
4666
4681
  rb_iv_set(rb_cMATCH2, "__type__", INT2NUM(NODE_MATCH2));
4667
4682
  rb_define_singleton_method(rb_cMATCH2, "members", node_s_members, 0);
4668
4683
 
4684
+ /* Document-method: recv
4685
+ * the regular expression on the left hand side of the match
4686
+ * operator
4687
+ */
4688
+ rb_define_method(rb_cMATCH2, "recv", node_recv, 0);
4689
+ rb_ary_push(members, rb_str_new2("recv"));
4690
+
4669
4691
  /* Document-method: value
4670
4692
  * the expression on the right hand side of the match operator, or
4671
4693
  * an expression returning $_ if there is nothing on the right hand
@@ -4673,13 +4695,6 @@ void define_node_subclass_methods()
4673
4695
  */
4674
4696
  rb_define_method(rb_cMATCH2, "value", node_value, 0);
4675
4697
  rb_ary_push(members, rb_str_new2("value"));
4676
-
4677
- /* Document-method: recv
4678
- * the regular expression on the left hand side of the match
4679
- * operator
4680
- */
4681
- rb_define_method(rb_cMATCH2, "recv", node_recv, 0);
4682
- rb_ary_push(members, rb_str_new2("recv"));
4683
4698
  }
4684
4699
 
4685
4700
  /* Document-class: Node::MATCH3
@@ -4697,17 +4712,17 @@ void define_node_subclass_methods()
4697
4712
  rb_iv_set(rb_cMATCH3, "__type__", INT2NUM(NODE_MATCH3));
4698
4713
  rb_define_singleton_method(rb_cMATCH3, "members", node_s_members, 0);
4699
4714
 
4700
- /* Document-method: value
4701
- * the right hand side of the match
4702
- */
4703
- rb_define_method(rb_cMATCH3, "value", node_value, 0);
4704
- rb_ary_push(members, rb_str_new2("value"));
4705
-
4706
4715
  /* Document-method: recv
4707
4716
  * the left hand side of the match
4708
4717
  */
4709
4718
  rb_define_method(rb_cMATCH3, "recv", node_recv, 0);
4710
4719
  rb_ary_push(members, rb_str_new2("recv"));
4720
+
4721
+ /* Document-method: value
4722
+ * the right hand side of the match
4723
+ */
4724
+ rb_define_method(rb_cMATCH3, "value", node_value, 0);
4725
+ rb_ary_push(members, rb_str_new2("value"));
4711
4726
  }
4712
4727
 
4713
4728
  /* Document-class: Node::MEMO
@@ -4776,17 +4791,17 @@ void define_node_subclass_methods()
4776
4791
  rb_iv_set(rb_cMODULE, "__type__", INT2NUM(NODE_MODULE));
4777
4792
  rb_define_singleton_method(rb_cMODULE, "members", node_s_members, 0);
4778
4793
 
4779
- /* Document-method: cpath
4780
- * the name of the module to define
4781
- */
4782
- rb_define_method(rb_cMODULE, "cpath", node_cpath, 0);
4783
- rb_ary_push(members, rb_str_new2("cpath"));
4784
-
4785
4794
  /* Document-method: body
4786
4795
  * the body of the module definition
4787
4796
  */
4788
4797
  rb_define_method(rb_cMODULE, "body", node_body, 0);
4789
4798
  rb_ary_push(members, rb_str_new2("body"));
4799
+
4800
+ /* Document-method: cpath
4801
+ * the name of the module to define
4802
+ */
4803
+ rb_define_method(rb_cMODULE, "cpath", node_cpath, 0);
4804
+ rb_ary_push(members, rb_str_new2("cpath"));
4790
4805
  }
4791
4806
 
4792
4807
  /* Document-class: Node::NEWLINE
@@ -4928,12 +4943,6 @@ void define_node_subclass_methods()
4928
4943
  rb_iv_set(rb_cOP_ASGN1, "__type__", INT2NUM(NODE_OP_ASGN1));
4929
4944
  rb_define_singleton_method(rb_cOP_ASGN1, "members", node_s_members, 0);
4930
4945
 
4931
- /* Document-method: args
4932
- * the arguments to the assigment
4933
- */
4934
- rb_define_method(rb_cOP_ASGN1, "args", node_args, 0);
4935
- rb_ary_push(members, rb_str_new2("args"));
4936
-
4937
4946
  /* Document-method: mid
4938
4947
  * 0, 1, or the name a method to call to calculate the value of the
4939
4948
  * rhs
@@ -4946,6 +4955,12 @@ void define_node_subclass_methods()
4946
4955
  */
4947
4956
  rb_define_method(rb_cOP_ASGN1, "recv", node_recv, 0);
4948
4957
  rb_ary_push(members, rb_str_new2("recv"));
4958
+
4959
+ /* Document-method: args
4960
+ * the arguments to the assigment
4961
+ */
4962
+ rb_define_method(rb_cOP_ASGN1, "args", node_args, 0);
4963
+ rb_ary_push(members, rb_str_new2("args"));
4949
4964
  }
4950
4965
 
4951
4966
  /* Document-class: Node::OP_ASGN2
@@ -4968,11 +4983,11 @@ void define_node_subclass_methods()
4968
4983
  rb_iv_set(rb_cOP_ASGN2, "__type__", INT2NUM(NODE_OP_ASGN2));
4969
4984
  rb_define_singleton_method(rb_cOP_ASGN2, "members", node_s_members, 0);
4970
4985
 
4971
- /* Document-method: value
4972
- * the value to assign to the attribute
4986
+ /* Document-method: recv
4987
+ * the receiver of the attribute
4973
4988
  */
4974
- rb_define_method(rb_cOP_ASGN2, "value", node_value, 0);
4975
- rb_ary_push(members, rb_str_new2("value"));
4989
+ rb_define_method(rb_cOP_ASGN2, "recv", node_recv, 0);
4990
+ rb_ary_push(members, rb_str_new2("recv"));
4976
4991
 
4977
4992
  /* Document-method: next
4978
4993
  * another node of type OP_ASGN2 which contains more information
@@ -4981,11 +4996,11 @@ void define_node_subclass_methods()
4981
4996
  rb_define_method(rb_cOP_ASGN2, "next", node_next, 0);
4982
4997
  rb_ary_push(members, rb_str_new2("next"));
4983
4998
 
4984
- /* Document-method: recv
4985
- * the receiver of the attribute
4999
+ /* Document-method: value
5000
+ * the value to assign to the attribute
4986
5001
  */
4987
- rb_define_method(rb_cOP_ASGN2, "recv", node_recv, 0);
4988
- rb_ary_push(members, rb_str_new2("recv"));
5002
+ rb_define_method(rb_cOP_ASGN2, "value", node_value, 0);
5003
+ rb_ary_push(members, rb_str_new2("value"));
4989
5004
  }
4990
5005
 
4991
5006
  /* Document-class: Node::OP_ASGN2_ARG
@@ -5001,12 +5016,6 @@ void define_node_subclass_methods()
5001
5016
  rb_iv_set(rb_cOP_ASGN2_ARG, "__type__", INT2NUM(NODE_OP_ASGN2_ARG));
5002
5017
  rb_define_singleton_method(rb_cOP_ASGN2_ARG, "members", node_s_members, 0);
5003
5018
 
5004
- /* Document-method: vid
5005
- * The method to call on the receiver to retrieve the attribute
5006
- */
5007
- rb_define_method(rb_cOP_ASGN2_ARG, "vid", node_vid, 0);
5008
- rb_ary_push(members, rb_str_new2("vid"));
5009
-
5010
5019
  /* Document-method: aid
5011
5020
  * The method to call on the receiver to set the attribute
5012
5021
  */
@@ -5020,6 +5029,12 @@ void define_node_subclass_methods()
5020
5029
  */
5021
5030
  rb_define_method(rb_cOP_ASGN2_ARG, "mid", node_mid, 0);
5022
5031
  rb_ary_push(members, rb_str_new2("mid"));
5032
+
5033
+ /* Document-method: vid
5034
+ * The method to call on the receiver to retrieve the attribute
5035
+ */
5036
+ rb_define_method(rb_cOP_ASGN2_ARG, "vid", node_vid, 0);
5037
+ rb_ary_push(members, rb_str_new2("vid"));
5023
5038
  }
5024
5039
 
5025
5040
  /* Document-class: Node::OP_ASGN_AND
@@ -5038,18 +5053,18 @@ void define_node_subclass_methods()
5038
5053
  rb_iv_set(rb_cOP_ASGN_AND, "__type__", INT2NUM(NODE_OP_ASGN_AND));
5039
5054
  rb_define_singleton_method(rb_cOP_ASGN_AND, "members", node_s_members, 0);
5040
5055
 
5056
+ /* Document-method: recv
5057
+ * an expression representing the left hand side of the assignment
5058
+ */
5059
+ rb_define_method(rb_cOP_ASGN_AND, "recv", node_recv, 0);
5060
+ rb_ary_push(members, rb_str_new2("recv"));
5061
+
5041
5062
  /* Document-method: value
5042
5063
  * an expression representing the assignment that should be
5043
5064
  * performed if the left hand side is true
5044
5065
  */
5045
5066
  rb_define_method(rb_cOP_ASGN_AND, "value", node_value, 0);
5046
5067
  rb_ary_push(members, rb_str_new2("value"));
5047
-
5048
- /* Document-method: recv
5049
- * an expression representing the left hand side of the assignment
5050
- */
5051
- rb_define_method(rb_cOP_ASGN_AND, "recv", node_recv, 0);
5052
- rb_ary_push(members, rb_str_new2("recv"));
5053
5068
  }
5054
5069
 
5055
5070
  /* Document-class: Node::OP_ASGN_OR
@@ -5076,17 +5091,17 @@ void define_node_subclass_methods()
5076
5091
  rb_define_method(rb_cOP_ASGN_OR, "aid", node_aid, 0);
5077
5092
  rb_ary_push(members, rb_str_new2("aid"));
5078
5093
 
5079
- /* Document-method: value
5080
- * the right hand side of the assignment
5081
- */
5082
- rb_define_method(rb_cOP_ASGN_OR, "value", node_value, 0);
5083
- rb_ary_push(members, rb_str_new2("value"));
5084
-
5085
5094
  /* Document-method: recv
5086
5095
  * the receiver of the assignment
5087
5096
  */
5088
5097
  rb_define_method(rb_cOP_ASGN_OR, "recv", node_recv, 0);
5089
5098
  rb_ary_push(members, rb_str_new2("recv"));
5099
+
5100
+ /* Document-method: value
5101
+ * the right hand side of the assignment
5102
+ */
5103
+ rb_define_method(rb_cOP_ASGN_OR, "value", node_value, 0);
5104
+ rb_ary_push(members, rb_str_new2("value"));
5090
5105
  }
5091
5106
 
5092
5107
  /* Document-class: Node::OR
@@ -5166,6 +5181,12 @@ void define_node_subclass_methods()
5166
5181
  rb_iv_set(rb_cRESBODY, "__type__", INT2NUM(NODE_RESBODY));
5167
5182
  rb_define_singleton_method(rb_cRESBODY, "members", node_s_members, 0);
5168
5183
 
5184
+ /* Document-method: body
5185
+ * the expresion to evaluate if the exception type matches
5186
+ */
5187
+ rb_define_method(rb_cRESBODY, "body", node_body, 0);
5188
+ rb_ary_push(members, rb_str_new2("body"));
5189
+
5169
5190
  /* Document-method: head
5170
5191
  * the next rescue
5171
5192
  */
@@ -5177,12 +5198,6 @@ void define_node_subclass_methods()
5177
5198
  */
5178
5199
  rb_define_method(rb_cRESBODY, "args", node_args, 0);
5179
5200
  rb_ary_push(members, rb_str_new2("args"));
5180
-
5181
- /* Document-method: body
5182
- * the expresion to evaluate if the exception type matches
5183
- */
5184
- rb_define_method(rb_cRESBODY, "body", node_body, 0);
5185
- rb_ary_push(members, rb_str_new2("body"));
5186
5201
  }
5187
5202
 
5188
5203
  /* Document-class: Node::RESCUE
@@ -5222,6 +5237,12 @@ void define_node_subclass_methods()
5222
5237
  rb_iv_set(rb_cRESCUE, "__type__", INT2NUM(NODE_RESCUE));
5223
5238
  rb_define_singleton_method(rb_cRESCUE, "members", node_s_members, 0);
5224
5239
 
5240
+ /* Document-method: resq
5241
+ * the expression to be evaluated if an exception is raised
5242
+ */
5243
+ rb_define_method(rb_cRESCUE, "resq", node_resq, 0);
5244
+ rb_ary_push(members, rb_str_new2("resq"));
5245
+
5225
5246
  /* Document-method: head
5226
5247
  * the body of the block to evaluate
5227
5248
  */
@@ -5233,12 +5254,6 @@ void define_node_subclass_methods()
5233
5254
  */
5234
5255
  rb_define_method(rb_cRESCUE, "else", node_else, 0);
5235
5256
  rb_ary_push(members, rb_str_new2("else"));
5236
-
5237
- /* Document-method: resq
5238
- * the expression to be evaluated if an exception is raised
5239
- */
5240
- rb_define_method(rb_cRESCUE, "resq", node_resq, 0);
5241
- rb_ary_push(members, rb_str_new2("resq"));
5242
5257
  }
5243
5258
 
5244
5259
  /* Document-class: Node::RETRY
@@ -5519,14 +5534,14 @@ void define_node_subclass_methods()
5519
5534
  */
5520
5535
  rb_define_method(rb_cUNTIL, "body", node_body, 0);
5521
5536
  rb_ary_push(members, rb_str_new2("body"));
5537
+ rb_define_method(rb_cUNTIL, "state", node_state, 0);
5538
+ rb_ary_push(members, rb_str_new2("state"));
5522
5539
 
5523
5540
  /* Document-method: cond
5524
5541
  * a condition to terminate the loop when it becomes true
5525
5542
  */
5526
5543
  rb_define_method(rb_cUNTIL, "cond", node_cond, 0);
5527
5544
  rb_ary_push(members, rb_str_new2("cond"));
5528
- rb_define_method(rb_cUNTIL, "state", node_state, 0);
5529
- rb_ary_push(members, rb_str_new2("state"));
5530
5545
  }
5531
5546
 
5532
5547
  /* Document-class: Node::VALIAS
@@ -5605,12 +5620,6 @@ void define_node_subclass_methods()
5605
5620
  rb_iv_set(rb_cWHEN, "__type__", INT2NUM(NODE_WHEN));
5606
5621
  rb_define_singleton_method(rb_cWHEN, "members", node_s_members, 0);
5607
5622
 
5608
- /* Document-method: head
5609
- * a value to compare against, or a condition to be tested
5610
- */
5611
- rb_define_method(rb_cWHEN, "head", node_head, 0);
5612
- rb_ary_push(members, rb_str_new2("head"));
5613
-
5614
5623
  /* Document-method: body
5615
5624
  * an expression to evaluate if the condition evaluates to true
5616
5625
  */
@@ -5622,6 +5631,12 @@ void define_node_subclass_methods()
5622
5631
  */
5623
5632
  rb_define_method(rb_cWHEN, "next", node_next, 0);
5624
5633
  rb_ary_push(members, rb_str_new2("next"));
5634
+
5635
+ /* Document-method: head
5636
+ * a value to compare against, or a condition to be tested
5637
+ */
5638
+ rb_define_method(rb_cWHEN, "head", node_head, 0);
5639
+ rb_ary_push(members, rb_str_new2("head"));
5625
5640
  }
5626
5641
 
5627
5642
  /* Document-class: Node::WHILE
@@ -5643,14 +5658,14 @@ void define_node_subclass_methods()
5643
5658
  */
5644
5659
  rb_define_method(rb_cWHILE, "body", node_body, 0);
5645
5660
  rb_ary_push(members, rb_str_new2("body"));
5661
+ rb_define_method(rb_cWHILE, "state", node_state, 0);
5662
+ rb_ary_push(members, rb_str_new2("state"));
5646
5663
 
5647
5664
  /* Document-method: cond
5648
5665
  * a condition to terminate the loop when it becomes false
5649
5666
  */
5650
5667
  rb_define_method(rb_cWHILE, "cond", node_cond, 0);
5651
5668
  rb_ary_push(members, rb_str_new2("cond"));
5652
- rb_define_method(rb_cWHILE, "state", node_state, 0);
5653
- rb_ary_push(members, rb_str_new2("state"));
5654
5669
  }
5655
5670
 
5656
5671
  /* Document-class: Node::XSTR
@@ -5687,17 +5702,17 @@ void define_node_subclass_methods()
5687
5702
  rb_iv_set(rb_cYIELD, "__type__", INT2NUM(NODE_YIELD));
5688
5703
  rb_define_singleton_method(rb_cYIELD, "members", node_s_members, 0);
5689
5704
 
5690
- /* Document-method: head
5691
- * the value to yield
5692
- */
5693
- rb_define_method(rb_cYIELD, "head", node_head, 0);
5694
- rb_ary_push(members, rb_str_new2("head"));
5695
-
5696
5705
  /* Document-method: state
5697
5706
  * if nonzero, splats the value before yielding
5698
5707
  */
5699
5708
  rb_define_method(rb_cYIELD, "state", node_state, 0);
5700
5709
  rb_ary_push(members, rb_str_new2("state"));
5710
+
5711
+ /* Document-method: head
5712
+ * the value to yield
5713
+ */
5714
+ rb_define_method(rb_cYIELD, "head", node_head, 0);
5715
+ rb_ary_push(members, rb_str_new2("head"));
5701
5716
  }
5702
5717
 
5703
5718
  /* Document-class: Node::ZARRAY