ruby-internal 0.7.3 → 0.8.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 (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 oclass; /* class that holds the method */
10
22
  VALUE rclass; /* class of the receiver */
@@ -4,37 +4,35 @@ VALUE
4
4
  class2path(VALUE klass)
5
5
  {
6
6
  VALUE path = rb_class_path(klass);
7
- char *n = RSTRING_PTR(path);
7
+ const char *n;
8
8
 
9
- if (n[0] == '#') {
10
- rb_raise(rb_eTypeError, "can't dump anonymous %s %s",
11
- (TYPE(klass) == T_CLASS ? "class" : "module"),
12
- n);
13
- }
14
- if (rb_path2class(n) != rb_class_real(klass)) {
15
- rb_raise(rb_eTypeError, "%s can't be referred", n);
9
+ n = must_not_be_anonymous((TYPE(klass) == T_CLASS ? "class" : "module"), path);
10
+ if (rb_path_to_class(path) != rb_class_real(klass)) {
11
+ rb_raise(rb_eTypeError, "%s can't be referred to", n);
16
12
  }
17
13
  return path;
18
14
  }
19
15
 
20
16
  VALUE
21
- path2class(const char *path)
17
+ path2class(VALUE path)
22
18
  {
23
- VALUE v = rb_path2class(path);
19
+ VALUE v = rb_path_to_class(path);
24
20
 
25
21
  if (TYPE(v) != T_CLASS) {
26
- rb_raise(rb_eArgError, "%s does not refer class", path);
22
+ rb_raise(rb_eArgError, "%.*s does not refer to class",
23
+ (int)RSTRING_LEN(path), RSTRING_PTR(path));
27
24
  }
28
25
  return v;
29
26
  }
30
27
 
31
28
  VALUE
32
- path2module(const char *path)
29
+ path2module(VALUE path)
33
30
  {
34
- VALUE v = rb_path2class(path);
31
+ VALUE v = rb_path_to_class(path);
35
32
 
36
33
  if (TYPE(v) != T_MODULE) {
37
- rb_raise(rb_eArgError, "%s does not refer module", path);
34
+ rb_raise(rb_eArgError, "%.*s does not refer to module",
35
+ (int)RSTRING_LEN(path), RSTRING_PTR(path));
38
36
  }
39
37
  return v;
40
38
  }
@@ -0,0 +1,25 @@
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
+ static rb_control_frame_t *
11
+ getcfp(rb_thread_t *th, rb_control_frame_t *cfp)
12
+ {
13
+ while (!RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(th, cfp)) {
14
+ if (RUBY_VM_NORMAL_ISEQ_P(cfp->iseq)) {
15
+ return cfp;
16
+ }
17
+ cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(cfp);
18
+ }
19
+ return 0;
20
+ }
21
+
22
+
23
+ #endif
24
+
25
+ #endif
@@ -1,10 +1,96 @@
1
1
  #ifndef global_entry__h_
2
2
  #define global_entry__h_
3
3
 
4
+ st_table * rb_global_tbl;
5
+
6
+ #define gvar_getter_t rb_gvar_getter_t
7
+ #define gvar_setter_t rb_gvar_setter_t
8
+ #define gvar_marker_t rb_gvar_marker_t
9
+ struct trace_var {
10
+ int removed;
11
+ void (*func)(VALUE arg, VALUE val);
12
+ VALUE data;
13
+ struct trace_var *next;
14
+ };
15
+ struct global_variable {
16
+ int counter;
17
+ void *data;
18
+ gvar_getter_t *getter;
19
+ gvar_setter_t *setter;
20
+ gvar_marker_t *marker;
21
+ int block_trace;
22
+ struct trace_var *trace;
23
+ };
4
24
  struct global_entry {
5
25
  struct global_variable *var;
6
26
  ID id;
7
27
  };
28
+ #define undef_getter rb_gvar_undef_getter
29
+ #define undef_setter rb_gvar_undef_setter
30
+ #define undef_marker rb_gvar_undef_marker
31
+ struct global_entry*
32
+ rb_global_entry(ID id)
33
+ {
34
+ struct global_entry *entry;
35
+ st_data_t data;
36
+
37
+ if (!st_lookup(rb_global_tbl, id, &data)) {
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
+ else {
54
+ entry = (struct global_entry *)data;
55
+ }
56
+ return entry;
57
+ }
58
+ VALUE
59
+ undef_getter(ID id, void *data, struct global_variable *var)
60
+ {
61
+ rb_warning("global variable `%s' not initialized", rb_id2name(id));
62
+
63
+ return Qnil;
64
+ }
65
+ void
66
+ undef_setter(VALUE val, ID id, void *data, struct global_variable *var)
67
+ {
68
+ var->getter = val_getter;
69
+ var->setter = val_setter;
70
+ var->marker = val_marker;
71
+
72
+ var->data = (void*)val;
73
+ }
74
+ void
75
+ undef_marker(VALUE *var)
76
+ {
77
+ }
78
+ VALUE
79
+ val_getter(ID id, void *data, struct global_variable *var)
80
+ {
81
+ return (VALUE)data;
82
+ }
83
+ void
84
+ val_setter(VALUE val, ID id, void *data, struct global_variable *var)
85
+ {
86
+ var->data = (void*)val;
87
+ }
88
+ void
89
+ val_marker(VALUE *var)
90
+ {
91
+ VALUE data = (VALUE)var;
92
+ if (data) rb_gc_mark_maybe(data);
93
+ }
8
94
 
9
95
  #endif
10
96
 
@@ -2,42 +2,42 @@
2
2
  #include "version.h"
3
3
 
4
4
  Node_Type_Descrip node_type_descrips_unsorted[] = {
5
- { NODE_ALIAS, NEN_1ST, NEN_2ND, NEN_NONE, "ALIAS" },
5
+ { NODE_ALIAS, NEN_2ND, NEN_1ST, NEN_NONE, "ALIAS" },
6
6
  #ifdef HAVE_NODE_ALLOCA
7
- { NODE_ALLOCA, NEN_CFNC, NEN_VALUE, NEN_CNT, "ALLOCA" },
7
+ { NODE_ALLOCA, NEN_CNT, NEN_CFNC, NEN_VALUE, "ALLOCA" },
8
8
  #endif
9
- { NODE_AND, NEN_1ST, NEN_2ND, NEN_NONE, "AND" },
10
- { NODE_ARGS, NEN_REST, NEN_OPT, NEN_CNT, "ARGS" },
9
+ { NODE_AND, NEN_2ND, NEN_1ST, NEN_NONE, "AND" },
10
+ { NODE_ARGS, NEN_CNT, NEN_OPT, NEN_REST, "ARGS" },
11
11
  { NODE_ARGSCAT, NEN_HEAD, NEN_BODY, NEN_NONE, "ARGSCAT" },
12
12
  { NODE_ARGSPUSH, NEN_HEAD, NEN_BODY, NEN_NONE, "ARGSPUSH" },
13
13
  { NODE_ARRAY, NEN_HEAD, NEN_ALEN, NEN_NEXT, "ARRAY" },
14
- { NODE_ATTRASGN, NEN_ARGS, NEN_MID, NEN_RECV, "ATTRASGN" },
14
+ { NODE_ATTRASGN, NEN_MID, NEN_RECV, NEN_ARGS, "ATTRASGN" },
15
15
  { NODE_ATTRSET, NEN_VID, NEN_NONE, NEN_NONE, "ATTRSET" },
16
- { NODE_BACK_REF, NEN_NTH, NEN_CNT, NEN_NONE, "BACK_REF" },
16
+ { NODE_BACK_REF, NEN_CNT, NEN_NTH, NEN_NONE, "BACK_REF" },
17
17
  { NODE_BEGIN, NEN_BODY, NEN_NONE, NEN_NONE, "BEGIN" },
18
18
  { NODE_BLOCK, NEN_HEAD, NEN_NEXT, NEN_NONE, "BLOCK" },
19
19
  { NODE_BLOCK_ARG, NEN_CNT, NEN_NONE, NEN_NONE, "BLOCK_ARG" },
20
- { NODE_BLOCK_PASS, NEN_BODY, NEN_ITER, NEN_NONE, "BLOCK_PASS" },
20
+ { NODE_BLOCK_PASS, NEN_ITER, NEN_BODY, 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" },
23
+ { NODE_CALL, NEN_MID, NEN_RECV, NEN_ARGS, "CALL" },
24
24
  { NODE_CASE, NEN_HEAD, NEN_BODY, NEN_NEXT, "CASE" },
25
- { NODE_CDECL, NEN_VALUE, NEN_VID, NEN_NONE, "CDECL" },
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" },
27
+ { NODE_CLASS, NEN_BODY, NEN_SUPER, NEN_CPATH, "CLASS" },
28
28
  { NODE_COLON2, NEN_HEAD, NEN_MID, 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
31
  { NODE_CVAR, NEN_VID, NEN_NONE, NEN_NONE, "CVAR" },
32
- { NODE_CVASGN, NEN_VALUE, NEN_VID, NEN_NONE, "CVASGN" },
33
- { NODE_CVDECL, NEN_VALUE, NEN_VID, NEN_NONE, "CVDECL" },
34
- { NODE_DASGN, NEN_VALUE, NEN_VID, NEN_NONE, "DASGN" },
35
- { NODE_DASGN_CURR, NEN_VALUE, NEN_VID, NEN_NONE, "DASGN_CURR" },
32
+ { NODE_CVASGN, NEN_VID, NEN_VALUE, NEN_NONE, "CVASGN" },
33
+ { NODE_CVDECL, NEN_VID, NEN_VALUE, NEN_NONE, "CVDECL" },
34
+ { NODE_DASGN, NEN_VID, NEN_VALUE, NEN_NONE, "DASGN" },
35
+ { NODE_DASGN_CURR, NEN_VID, NEN_VALUE, NEN_NONE, "DASGN_CURR" },
36
36
  { NODE_DEFINED, NEN_HEAD, NEN_NONE, NEN_NONE, "DEFINED" },
37
- { NODE_DEFN, NEN_DEFN, NEN_MID, NEN_NOEX, "DEFN" },
38
- { NODE_DEFS, NEN_DEFN, NEN_MID, NEN_RECV, "DEFS" },
39
- { NODE_DOT2, NEN_BEG, NEN_END, NEN_STATE, "DOT2" },
40
- { NODE_DOT3, NEN_BEG, NEN_END, NEN_STATE, "DOT3" },
37
+ { NODE_DEFN, NEN_MID, NEN_DEFN, NEN_NOEX, "DEFN" },
38
+ { NODE_DEFS, NEN_MID, NEN_DEFN, NEN_RECV, "DEFS" },
39
+ { NODE_DOT2, NEN_END, NEN_STATE, NEN_BEG, "DOT2" },
40
+ { NODE_DOT3, NEN_END, NEN_STATE, NEN_BEG, "DOT3" },
41
41
  { NODE_DREGX, NEN_LIT, NEN_CFLAG, NEN_NEXT, "DREGX" },
42
42
  { NODE_DREGX_ONCE, NEN_LIT, NEN_CFLAG, NEN_NEXT, "DREGX_ONCE" },
43
43
  { NODE_DSTR, NEN_LIT, NEN_NEXT, NEN_NONE, "DSTR" },
@@ -47,47 +47,45 @@ Node_Type_Descrip node_type_descrips_unsorted[] = {
47
47
  { NODE_ENSURE, NEN_HEAD, NEN_ENSR, NEN_NONE, "ENSURE" },
48
48
  { NODE_EVSTR, NEN_BODY, NEN_NONE, NEN_NONE, "EVSTR" },
49
49
  { NODE_FALSE, NEN_NONE, NEN_NONE, NEN_NONE, "FALSE" },
50
- { NODE_FBODY, NEN_BODY, NEN_CNT, NEN_OID, "FBODY" },
51
- { NODE_FCALL, NEN_ARGS, NEN_MID, NEN_NONE, "FCALL" },
52
- { NODE_FLIP2, NEN_BEG, NEN_END, NEN_CNT, "FLIP2" },
53
- { NODE_FLIP3, NEN_BEG, NEN_END, NEN_CNT, "FLIP3" },
54
- { NODE_FOR, NEN_BODY, NEN_ITER, NEN_VAR, "FOR" },
55
- { NODE_GASGN, NEN_VALUE, NEN_VID, NEN_ENTRY, "GASGN" },
50
+ { NODE_FCALL, NEN_MID, NEN_ARGS, NEN_NONE, "FCALL" },
51
+ { NODE_FLIP2, NEN_CNT, NEN_END, NEN_BEG, "FLIP2" },
52
+ { NODE_FLIP3, NEN_CNT, NEN_END, NEN_BEG, "FLIP3" },
53
+ { NODE_FOR, NEN_ITER, NEN_BODY, NEN_VAR, "FOR" },
54
+ { NODE_GASGN, NEN_VID, NEN_ENTRY, NEN_VALUE, "GASGN" },
56
55
  { NODE_GVAR, NEN_VID, NEN_ENTRY, NEN_NONE, "GVAR" },
57
56
  { NODE_HASH, NEN_HEAD, NEN_NONE, NEN_NONE, "HASH" },
58
- { NODE_IASGN, NEN_VALUE, NEN_VID, NEN_NONE, "IASGN" },
59
- { NODE_IF, NEN_COND, NEN_BODY, NEN_ELSE, "IF" },
60
- { NODE_IFUNC, NEN_CFNC, NEN_TVAL, NEN_STATE, "IFUNC" },
61
- { NODE_ITER, NEN_BODY, NEN_ITER, NEN_VAR, "ITER" },
57
+ { NODE_IASGN, NEN_VID, NEN_VALUE, NEN_NONE, "IASGN" },
58
+ { NODE_IF, NEN_BODY, NEN_COND, NEN_ELSE, "IF" },
59
+ { NODE_IFUNC, NEN_STATE, NEN_CFNC, NEN_TVAL, "IFUNC" },
60
+ { NODE_ITER, NEN_ITER, NEN_BODY, NEN_VAR, "ITER" },
62
61
  { NODE_IVAR, NEN_VID, NEN_NONE, NEN_NONE, "IVAR" },
63
- { NODE_LASGN, NEN_VALUE, NEN_VID, NEN_CNT, "LASGN" },
62
+ { NODE_LASGN, NEN_CNT, NEN_VID, NEN_VALUE, "LASGN" },
64
63
  { NODE_LIT, NEN_LIT, NEN_NONE, NEN_NONE, "LIT" },
65
- { NODE_LVAR, NEN_VID, NEN_CNT, NEN_NONE, "LVAR" },
66
- { NODE_MASGN, NEN_ARGS, NEN_HEAD, NEN_VALUE, "MASGN" },
64
+ { NODE_LVAR, NEN_CNT, NEN_VID, NEN_NONE, "LVAR" },
65
+ { NODE_MASGN, NEN_HEAD, NEN_ARGS, NEN_VALUE, "MASGN" },
67
66
  { NODE_MATCH, NEN_LIT, NEN_VALUE, NEN_NONE, "MATCH" },
68
- { NODE_MATCH2, NEN_VALUE, NEN_RECV, NEN_NONE, "MATCH2" },
69
- { NODE_MATCH3, NEN_VALUE, NEN_RECV, NEN_NONE, "MATCH3" },
67
+ { NODE_MATCH2, NEN_RECV, NEN_VALUE, NEN_NONE, "MATCH2" },
68
+ { NODE_MATCH3, NEN_RECV, NEN_VALUE, NEN_NONE, "MATCH3" },
70
69
  { NODE_MEMO, NEN_NONE, NEN_NONE, NEN_NONE, "MEMO" },
71
- { NODE_METHOD, NEN_BODY, NEN_CLSS, NEN_NOEX, "METHOD" },
72
- { NODE_MODULE, NEN_CPATH, NEN_BODY, NEN_NONE, "MODULE" },
70
+ { NODE_MODULE, NEN_BODY, NEN_CPATH, NEN_NONE, "MODULE" },
73
71
  { NODE_NEXT, NEN_STTS, NEN_NONE, NEN_NONE, "NEXT" },
74
72
  { NODE_NIL, NEN_NONE, NEN_NONE, NEN_NONE, "NIL" },
75
- { NODE_NTH_REF, NEN_NTH, NEN_CNT, NEN_NONE, "NTH_REF" },
73
+ { NODE_NTH_REF, NEN_CNT, NEN_NTH, NEN_NONE, "NTH_REF" },
76
74
  { NODE_OPT_N, NEN_BODY, NEN_NONE, NEN_NONE, "OPT_N" },
77
- { NODE_OP_ASGN1, NEN_ARGS, NEN_MID, NEN_RECV, "OP_ASGN1" },
78
- { NODE_OP_ASGN2, NEN_VALUE, NEN_NEXT, NEN_RECV, "OP_ASGN2" },
79
- { NODE_OP_ASGN2_ARG, NEN_VID, NEN_AID, NEN_MID, "OP_ASGN2_ARG" },
80
- { NODE_OP_ASGN_AND, NEN_VALUE, NEN_RECV, NEN_NONE, "OP_ASGN_AND" },
81
- { NODE_OP_ASGN_OR, NEN_AID, NEN_VALUE, NEN_RECV, "OP_ASGN_OR" },
82
- { NODE_OR, NEN_1ST, NEN_2ND, NEN_NONE, "OR" },
75
+ { NODE_OP_ASGN1, NEN_MID, NEN_RECV, NEN_ARGS, "OP_ASGN1" },
76
+ { NODE_OP_ASGN2, NEN_RECV, NEN_NEXT, NEN_VALUE, "OP_ASGN2" },
77
+ { NODE_OP_ASGN2_ARG, NEN_MID, NEN_VID, NEN_AID, "OP_ASGN2_ARG" },
78
+ { NODE_OP_ASGN_AND, NEN_RECV, NEN_VALUE, NEN_NONE, "OP_ASGN_AND" },
79
+ { NODE_OP_ASGN_OR, NEN_RECV, NEN_AID, NEN_VALUE, "OP_ASGN_OR" },
80
+ { NODE_OR, NEN_2ND, NEN_1ST, NEN_NONE, "OR" },
83
81
  { NODE_POSTEXE, NEN_NONE, NEN_NONE, NEN_NONE, "POSTEXE" },
84
82
  { NODE_REDO, NEN_NONE, NEN_NONE, NEN_NONE, "REDO" },
85
- { NODE_RESBODY, NEN_HEAD, NEN_ARGS, NEN_BODY, "RESBODY" },
86
- { NODE_RESCUE, NEN_HEAD, NEN_ELSE, NEN_RESQ, "RESCUE" },
83
+ { NODE_RESBODY, NEN_HEAD, NEN_BODY, NEN_ARGS, "RESBODY" },
84
+ { NODE_RESCUE, NEN_HEAD, NEN_RESQ, NEN_ELSE, "RESCUE" },
87
85
  { NODE_RETRY, NEN_NONE, NEN_NONE, NEN_NONE, "RETRY" },
88
86
  { NODE_RETURN, NEN_STTS, NEN_NONE, NEN_NONE, "RETURN" },
89
87
  { NODE_SCLASS, NEN_BODY, NEN_RECV, NEN_NONE, "SCLASS" },
90
- { NODE_SCOPE, NEN_TBL, NEN_RVAL, NEN_NEXT, "SCOPE" },
88
+ { NODE_SCOPE, NEN_RVAL, NEN_TBL, NEN_NEXT, "SCOPE" },
91
89
  { NODE_SELF, NEN_NONE, NEN_NONE, NEN_NONE, "SELF" },
92
90
  { NODE_SPLAT, NEN_HEAD, NEN_NONE, NEN_NONE, "SPLAT" },
93
91
  { NODE_STR, NEN_LIT, NEN_NONE, NEN_NONE, "STR" },
@@ -95,11 +93,11 @@ Node_Type_Descrip node_type_descrips_unsorted[] = {
95
93
  { NODE_TO_ARY, NEN_HEAD, NEN_NONE, NEN_NONE, "TO_ARY" },
96
94
  { NODE_TRUE, NEN_NONE, NEN_NONE, NEN_NONE, "TRUE" },
97
95
  { NODE_UNDEF, NEN_BODY, NEN_NONE, NEN_NONE, "UNDEF" },
98
- { NODE_UNTIL, NEN_BODY, NEN_COND, NEN_STATE, "UNTIL" },
99
- { NODE_VALIAS, NEN_1ST, NEN_2ND, NEN_NONE, "VALIAS" },
96
+ { NODE_UNTIL, NEN_STATE, NEN_BODY, NEN_COND, "UNTIL" },
97
+ { NODE_VALIAS, NEN_2ND, NEN_1ST, NEN_NONE, "VALIAS" },
100
98
  { NODE_VCALL, NEN_MID, NEN_NONE, NEN_NONE, "VCALL" },
101
99
  { NODE_WHEN, NEN_HEAD, NEN_BODY, NEN_NEXT, "WHEN" },
102
- { NODE_WHILE, NEN_BODY, NEN_COND, NEN_STATE, "WHILE" },
100
+ { NODE_WHILE, NEN_STATE, NEN_BODY, NEN_COND, "WHILE" },
103
101
  { NODE_XSTR, NEN_LIT, NEN_NONE, NEN_NONE, "XSTR" },
104
102
  { NODE_YIELD, NEN_HEAD, NEN_STATE, NEN_NONE, "YIELD" },
105
103
  { NODE_ZARRAY, NEN_NONE, NEN_NONE, NEN_NONE, "ZARRAY" },
@@ -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
  }
@@ -521,7 +521,7 @@ VALUE dump_node_elem(enum Node_Elem_Name nen, NODE * n, VALUE node_hash)
521
521
  else
522
522
  {
523
523
  path = rb_class_path(klass);
524
- if(STR2CSTR(path)[0] == '#')
524
+ if(StringValuePtr(path)[0] == '#')
525
525
  {
526
526
  rb_raise(rb_eArgError, "cannot dump anonymous class");
527
527
  }
@@ -658,7 +658,7 @@ VALUE dump_node_elem(enum Node_Elem_Name nen, NODE * n, VALUE node_hash)
658
658
  else
659
659
  {
660
660
  path = rb_class_path(klass);
661
- if(STR2CSTR(path)[0] == '#')
661
+ if(StringValuePtr(path)[0] == '#')
662
662
  {
663
663
  rb_raise(rb_eArgError, "cannot dump anonymous class");
664
664
  }
@@ -872,7 +872,7 @@ VALUE dump_node_elem(enum Node_Elem_Name nen, NODE * n, VALUE node_hash)
872
872
  else
873
873
  {
874
874
  path = rb_class_path(klass);
875
- if(STR2CSTR(path)[0] == '#')
875
+ if(StringValuePtr(path)[0] == '#')
876
876
  {
877
877
  rb_raise(rb_eArgError, "cannot dump anonymous class");
878
878
  }
@@ -1131,20 +1131,23 @@ void load_node_elem(enum Node_Elem_Name nen, VALUE v, NODE * n, VALUE node_hash,
1131
1131
  }
1132
1132
  case NEN_CLSS:
1133
1133
  {
1134
+ int flags;
1134
1135
  Check_Type(v, T_ARRAY);
1135
1136
  if(RARRAY_LEN(v) != 2)
1136
1137
  {
1137
1138
  rb_raise(rb_eArgError, "wrong size for array");
1138
1139
  }
1139
- int flags = NUM2INT(RARRAY_PTR(v)[0]);
1140
+ flags = NUM2INT(RARRAY_PTR(v)[0]);
1140
1141
  switch(flags & T_MASK)
1141
1142
  {
1142
1143
  case T_CLASS:
1143
1144
  case T_MODULE:
1144
1145
  {
1145
- VALUE str = RARRAY_PTR(v)[1];
1146
+ VALUE str, klass;
1147
+
1148
+ str = RARRAY_PTR(v)[1];
1146
1149
  Check_Type(str, T_STRING);
1147
- VALUE klass = rb_path2class(STR2CSTR(str));
1150
+ klass = rb_path2class(StringValuePtr(str));
1148
1151
  if(flags & FL_SINGLETON)
1149
1152
  {
1150
1153
  *(VALUE *)(&n->nd_clss) =
@@ -1220,20 +1223,23 @@ void load_node_elem(enum Node_Elem_Name nen, VALUE v, NODE * n, VALUE node_hash,
1220
1223
  }
1221
1224
  case NEN_CVAL:
1222
1225
  {
1226
+ int flags;
1223
1227
  Check_Type(v, T_ARRAY);
1224
1228
  if(RARRAY_LEN(v) != 2)
1225
1229
  {
1226
1230
  rb_raise(rb_eArgError, "wrong size for array");
1227
1231
  }
1228
- int flags = NUM2INT(RARRAY_PTR(v)[0]);
1232
+ flags = NUM2INT(RARRAY_PTR(v)[0]);
1229
1233
  switch(flags & T_MASK)
1230
1234
  {
1231
1235
  case T_CLASS:
1232
1236
  case T_MODULE:
1233
1237
  {
1234
- VALUE str = RARRAY_PTR(v)[1];
1238
+ VALUE str, klass;
1239
+
1240
+ str = RARRAY_PTR(v)[1];
1235
1241
  Check_Type(str, T_STRING);
1236
- VALUE klass = rb_path2class(STR2CSTR(str));
1242
+ klass = rb_path2class(StringValuePtr(str));
1237
1243
  if(flags & FL_SINGLETON)
1238
1244
  {
1239
1245
  *(VALUE *)(&n->nd_cval) =
@@ -1414,20 +1420,23 @@ void load_node_elem(enum Node_Elem_Name nen, VALUE v, NODE * n, VALUE node_hash,
1414
1420
  }
1415
1421
  case NEN_LIT:
1416
1422
  {
1423
+ int flags;
1417
1424
  Check_Type(v, T_ARRAY);
1418
1425
  if(RARRAY_LEN(v) != 2)
1419
1426
  {
1420
1427
  rb_raise(rb_eArgError, "wrong size for array");
1421
1428
  }
1422
- int flags = NUM2INT(RARRAY_PTR(v)[0]);
1429
+ flags = NUM2INT(RARRAY_PTR(v)[0]);
1423
1430
  switch(flags & T_MASK)
1424
1431
  {
1425
1432
  case T_CLASS:
1426
1433
  case T_MODULE:
1427
1434
  {
1428
- VALUE str = RARRAY_PTR(v)[1];
1435
+ VALUE str, klass;
1436
+
1437
+ str = RARRAY_PTR(v)[1];
1429
1438
  Check_Type(str, T_STRING);
1430
- VALUE klass = rb_path2class(STR2CSTR(str));
1439
+ klass = rb_path2class(StringValuePtr(str));
1431
1440
  if(flags & FL_SINGLETON)
1432
1441
  {
1433
1442
  *(VALUE *)(&n->nd_lit) =
@@ -1556,20 +1565,23 @@ void load_node_elem(enum Node_Elem_Name nen, VALUE v, NODE * n, VALUE node_hash,
1556
1565
  }
1557
1566
  case NEN_ORIG:
1558
1567
  {
1568
+ int flags;
1559
1569
  Check_Type(v, T_ARRAY);
1560
1570
  if(RARRAY_LEN(v) != 2)
1561
1571
  {
1562
1572
  rb_raise(rb_eArgError, "wrong size for array");
1563
1573
  }
1564
- int flags = NUM2INT(RARRAY_PTR(v)[0]);
1574
+ flags = NUM2INT(RARRAY_PTR(v)[0]);
1565
1575
  switch(flags & T_MASK)
1566
1576
  {
1567
1577
  case T_CLASS:
1568
1578
  case T_MODULE:
1569
1579
  {
1570
- VALUE str = RARRAY_PTR(v)[1];
1580
+ VALUE str, klass;
1581
+
1582
+ str = RARRAY_PTR(v)[1];
1571
1583
  Check_Type(str, T_STRING);
1572
- VALUE klass = rb_path2class(STR2CSTR(str));
1584
+ klass = rb_path2class(StringValuePtr(str));
1573
1585
  if(flags & FL_SINGLETON)
1574
1586
  {
1575
1587
  *(VALUE *)(&n->nd_orig) =
@@ -1808,20 +1820,23 @@ void load_node_elem(enum Node_Elem_Name nen, VALUE v, NODE * n, VALUE node_hash,
1808
1820
  }
1809
1821
  case NEN_TVAL:
1810
1822
  {
1823
+ int flags;
1811
1824
  Check_Type(v, T_ARRAY);
1812
1825
  if(RARRAY_LEN(v) != 2)
1813
1826
  {
1814
1827
  rb_raise(rb_eArgError, "wrong size for array");
1815
1828
  }
1816
- int flags = NUM2INT(RARRAY_PTR(v)[0]);
1829
+ flags = NUM2INT(RARRAY_PTR(v)[0]);
1817
1830
  switch(flags & T_MASK)
1818
1831
  {
1819
1832
  case T_CLASS:
1820
1833
  case T_MODULE:
1821
1834
  {
1822
- VALUE str = RARRAY_PTR(v)[1];
1835
+ VALUE str, klass;
1836
+
1837
+ str = RARRAY_PTR(v)[1];
1823
1838
  Check_Type(str, T_STRING);
1824
- VALUE klass = rb_path2class(STR2CSTR(str));
1839
+ klass = rb_path2class(StringValuePtr(str));
1825
1840
  if(flags & FL_SINGLETON)
1826
1841
  {
1827
1842
  *(VALUE *)(&n->nd_tval) =
@@ -2107,33 +2122,6 @@ static VALUE node_cfnc(VALUE self)
2107
2122
  Data_Get_Struct(self, NODE, n);
2108
2123
  return LONG2NUM((long)(n->nd_cfnc));
2109
2124
  }
2110
- /*
2111
- * Return the Node's _clss_ member. The return type is
2112
- * either a Node or an Object.
2113
- */
2114
- static VALUE node_clss(VALUE self)
2115
- {
2116
- NODE * n;
2117
- Data_Get_Struct(self, NODE, n);
2118
-
2119
- if(TYPE(n->nd_clss) == T_NODE)
2120
- {
2121
- if(0 && nd_type(n) == NODE_OP_ASGN2)
2122
- {
2123
- return wrap_node_as(
2124
- (NODE *)n->nd_clss,
2125
- rb_cNodeSubclass[NODE_OP_ASGN2_ARG]);
2126
- }
2127
- else
2128
- {
2129
- return wrap_node((NODE *)n->nd_clss);
2130
- }
2131
- }
2132
- else
2133
- {
2134
- return (VALUE)n->nd_clss;
2135
- }
2136
- }
2137
2125
  /*
2138
2126
  * Return the Node's _cnt_ member. The return type is an
2139
2127
  * Integer.
@@ -2499,27 +2487,6 @@ static VALUE node_nth(VALUE self)
2499
2487
  Data_Get_Struct(self, NODE, n);
2500
2488
  return LONG2NUM(n->nd_nth);
2501
2489
  }
2502
- /*
2503
- * Return the Node's _oid_ member. The return type is a
2504
- * Symbol.
2505
- */
2506
- static VALUE node_oid(VALUE self)
2507
- {
2508
- NODE * n;
2509
- Data_Get_Struct(self, NODE, n);
2510
- if(n->nd_oid == 0)
2511
- {
2512
- return Qfalse;
2513
- }
2514
- else if(n->nd_oid == 1)
2515
- {
2516
- return Qtrue;
2517
- }
2518
- else
2519
- {
2520
- return ID2SYM(n->nd_oid);
2521
- }
2522
- }
2523
2490
  /*
2524
2491
  * Return the Node's _opt_ member. The return type is
2525
2492
  * either a Node or an Object.
@@ -2865,10 +2832,10 @@ void define_node_subclass_methods()
2865
2832
  rb_iv_set(rb_cALIAS, "__member__", members);
2866
2833
  rb_iv_set(rb_cALIAS, "__type__", INT2NUM(NODE_ALIAS));
2867
2834
  rb_define_singleton_method(rb_cALIAS, "members", node_s_members, 0);
2868
- rb_define_method(rb_cALIAS, "first", node_1st, 0);
2869
- rb_ary_push(members, rb_str_new2("first"));
2870
2835
  rb_define_method(rb_cALIAS, "second", node_2nd, 0);
2871
2836
  rb_ary_push(members, rb_str_new2("second"));
2837
+ rb_define_method(rb_cALIAS, "first", node_1st, 0);
2838
+ rb_ary_push(members, rb_str_new2("first"));
2872
2839
  }
2873
2840
 
2874
2841
  /* Document-class: Node::ALLOCA
@@ -2886,6 +2853,12 @@ void define_node_subclass_methods()
2886
2853
  rb_iv_set(rb_cALLOCA, "__type__", INT2NUM(NODE_ALLOCA));
2887
2854
  rb_define_singleton_method(rb_cALLOCA, "members", node_s_members, 0);
2888
2855
 
2856
+ /* Document-method: cnt
2857
+ * the number of bytes allocated
2858
+ */
2859
+ rb_define_method(rb_cALLOCA, "cnt", node_cnt, 0);
2860
+ rb_ary_push(members, rb_str_new2("cnt"));
2861
+
2889
2862
  /* Document-method: cfnc
2890
2863
  * a pointer to the allocated memory
2891
2864
  */
@@ -2897,12 +2870,6 @@ void define_node_subclass_methods()
2897
2870
  */
2898
2871
  rb_define_method(rb_cALLOCA, "value", node_value, 0);
2899
2872
  rb_ary_push(members, rb_str_new2("value"));
2900
-
2901
- /* Document-method: cnt
2902
- * the number of bytes allocated
2903
- */
2904
- rb_define_method(rb_cALLOCA, "cnt", node_cnt, 0);
2905
- rb_ary_push(members, rb_str_new2("cnt"));
2906
2873
  }
2907
2874
  #endif
2908
2875
 
@@ -2921,17 +2888,17 @@ void define_node_subclass_methods()
2921
2888
  rb_iv_set(rb_cAND, "__type__", INT2NUM(NODE_AND));
2922
2889
  rb_define_singleton_method(rb_cAND, "members", node_s_members, 0);
2923
2890
 
2924
- /* Document-method: first
2925
- * the expression on the left hand side
2926
- */
2927
- rb_define_method(rb_cAND, "first", node_1st, 0);
2928
- rb_ary_push(members, rb_str_new2("first"));
2929
-
2930
2891
  /* Document-method: second
2931
2892
  * the expression on the right hand side
2932
2893
  */
2933
2894
  rb_define_method(rb_cAND, "second", node_2nd, 0);
2934
2895
  rb_ary_push(members, rb_str_new2("second"));
2896
+
2897
+ /* Document-method: first
2898
+ * the expression on the left hand side
2899
+ */
2900
+ rb_define_method(rb_cAND, "first", node_1st, 0);
2901
+ rb_ary_push(members, rb_str_new2("first"));
2935
2902
  }
2936
2903
 
2937
2904
  /* Document-class: Node::ARGS
@@ -2945,11 +2912,11 @@ void define_node_subclass_methods()
2945
2912
  rb_iv_set(rb_cARGS, "__type__", INT2NUM(NODE_ARGS));
2946
2913
  rb_define_singleton_method(rb_cARGS, "members", node_s_members, 0);
2947
2914
 
2948
- /* Document-method: rest
2949
- * an assignment node to assign the rest arg, if it is present
2915
+ /* Document-method: cnt
2916
+ * the number of required arguments
2950
2917
  */
2951
- rb_define_method(rb_cARGS, "rest", node_rest, 0);
2952
- rb_ary_push(members, rb_str_new2("rest"));
2918
+ rb_define_method(rb_cARGS, "cnt", node_cnt, 0);
2919
+ rb_ary_push(members, rb_str_new2("cnt"));
2953
2920
 
2954
2921
  /* Document-method: opt
2955
2922
  * a list of assignment nodes to assign default values to the
@@ -2958,11 +2925,11 @@ void define_node_subclass_methods()
2958
2925
  rb_define_method(rb_cARGS, "opt", node_opt, 0);
2959
2926
  rb_ary_push(members, rb_str_new2("opt"));
2960
2927
 
2961
- /* Document-method: cnt
2962
- * the number of required arguments
2928
+ /* Document-method: rest
2929
+ * an assignment node to assign the rest arg, if it is present
2963
2930
  */
2964
- rb_define_method(rb_cARGS, "cnt", node_cnt, 0);
2965
- rb_ary_push(members, rb_str_new2("cnt"));
2931
+ rb_define_method(rb_cARGS, "rest", node_rest, 0);
2932
+ rb_ary_push(members, rb_str_new2("rest"));
2966
2933
  }
2967
2934
 
2968
2935
  /* Document-class: Node::ARGSCAT
@@ -3058,12 +3025,6 @@ void define_node_subclass_methods()
3058
3025
  rb_iv_set(rb_cATTRASGN, "__type__", INT2NUM(NODE_ATTRASGN));
3059
3026
  rb_define_singleton_method(rb_cATTRASGN, "members", node_s_members, 0);
3060
3027
 
3061
- /* Document-method: args
3062
- * the arguments to the method
3063
- */
3064
- rb_define_method(rb_cATTRASGN, "args", node_args, 0);
3065
- rb_ary_push(members, rb_str_new2("args"));
3066
-
3067
3028
  /* Document-method: mid
3068
3029
  * the id of the attribute, with a trailing '=' sign
3069
3030
  */
@@ -3075,6 +3036,12 @@ void define_node_subclass_methods()
3075
3036
  */
3076
3037
  rb_define_method(rb_cATTRASGN, "recv", node_recv, 0);
3077
3038
  rb_ary_push(members, rb_str_new2("recv"));
3039
+
3040
+ /* Document-method: args
3041
+ * the arguments to the method
3042
+ */
3043
+ rb_define_method(rb_cATTRASGN, "args", node_args, 0);
3044
+ rb_ary_push(members, rb_str_new2("args"));
3078
3045
  }
3079
3046
 
3080
3047
  /* Document-class: Node::ATTRSET
@@ -3113,19 +3080,19 @@ void define_node_subclass_methods()
3113
3080
  rb_iv_set(rb_cBACK_REF, "__type__", INT2NUM(NODE_BACK_REF));
3114
3081
  rb_define_singleton_method(rb_cBACK_REF, "members", node_s_members, 0);
3115
3082
 
3116
- /* Document-method: nth
3117
- * the integer representation of the character of the variable to
3118
- * reference, one of '&', '`', '\'', or '+'
3119
- */
3120
- rb_define_method(rb_cBACK_REF, "nth", node_nth, 0);
3121
- rb_ary_push(members, rb_str_new2("nth"));
3122
-
3123
3083
  /* Document-method: cnt
3124
3084
  * the index into the local variable table where the match data is
3125
3085
  * stored
3126
3086
  */
3127
3087
  rb_define_method(rb_cBACK_REF, "cnt", node_cnt, 0);
3128
3088
  rb_ary_push(members, rb_str_new2("cnt"));
3089
+
3090
+ /* Document-method: nth
3091
+ * the integer representation of the character of the variable to
3092
+ * reference, one of '&', '`', '\'', or '+'
3093
+ */
3094
+ rb_define_method(rb_cBACK_REF, "nth", node_nth, 0);
3095
+ rb_ary_push(members, rb_str_new2("nth"));
3129
3096
  }
3130
3097
 
3131
3098
  /* Document-class: Node::BEGIN
@@ -3213,17 +3180,17 @@ void define_node_subclass_methods()
3213
3180
  rb_iv_set(rb_cBLOCK_PASS, "__type__", INT2NUM(NODE_BLOCK_PASS));
3214
3181
  rb_define_singleton_method(rb_cBLOCK_PASS, "members", node_s_members, 0);
3215
3182
 
3216
- /* Document-method: body
3217
- * the object to pass as a block
3218
- */
3219
- rb_define_method(rb_cBLOCK_PASS, "body", node_body, 0);
3220
- rb_ary_push(members, rb_str_new2("body"));
3221
-
3222
3183
  /* Document-method: iter
3223
3184
  * an expression which calls a method
3224
3185
  */
3225
3186
  rb_define_method(rb_cBLOCK_PASS, "iter", node_iter, 0);
3226
3187
  rb_ary_push(members, rb_str_new2("iter"));
3188
+
3189
+ /* Document-method: body
3190
+ * the object to pass as a block
3191
+ */
3192
+ rb_define_method(rb_cBLOCK_PASS, "body", node_body, 0);
3193
+ rb_ary_push(members, rb_str_new2("body"));
3227
3194
  }
3228
3195
 
3229
3196
  /* Document-class: Node::BMETHOD
@@ -3280,12 +3247,6 @@ void define_node_subclass_methods()
3280
3247
  rb_iv_set(rb_cCALL, "__type__", INT2NUM(NODE_CALL));
3281
3248
  rb_define_singleton_method(rb_cCALL, "members", node_s_members, 0);
3282
3249
 
3283
- /* Document-method: args
3284
- * the arguments to the method
3285
- */
3286
- rb_define_method(rb_cCALL, "args", node_args, 0);
3287
- rb_ary_push(members, rb_str_new2("args"));
3288
-
3289
3250
  /* Document-method: mid
3290
3251
  * the method id
3291
3252
  */
@@ -3297,6 +3258,12 @@ void define_node_subclass_methods()
3297
3258
  */
3298
3259
  rb_define_method(rb_cCALL, "recv", node_recv, 0);
3299
3260
  rb_ary_push(members, rb_str_new2("recv"));
3261
+
3262
+ /* Document-method: args
3263
+ * the arguments to the method
3264
+ */
3265
+ rb_define_method(rb_cCALL, "args", node_args, 0);
3266
+ rb_ary_push(members, rb_str_new2("args"));
3300
3267
  }
3301
3268
 
3302
3269
  /* Document-class: Node::CASE
@@ -3342,17 +3309,17 @@ void define_node_subclass_methods()
3342
3309
  rb_iv_set(rb_cCDECL, "__type__", INT2NUM(NODE_CDECL));
3343
3310
  rb_define_singleton_method(rb_cCDECL, "members", node_s_members, 0);
3344
3311
 
3345
- /* Document-method: value
3346
- * the value to be assigned to the constant
3347
- */
3348
- rb_define_method(rb_cCDECL, "value", node_value, 0);
3349
- rb_ary_push(members, rb_str_new2("value"));
3350
-
3351
3312
  /* Document-method: vid
3352
3313
  * the name of the constant to be assigned, all uppercase
3353
3314
  */
3354
3315
  rb_define_method(rb_cCDECL, "vid", node_vid, 0);
3355
3316
  rb_ary_push(members, rb_str_new2("vid"));
3317
+
3318
+ /* Document-method: value
3319
+ * the value to be assigned to the constant
3320
+ */
3321
+ rb_define_method(rb_cCDECL, "value", node_value, 0);
3322
+ rb_ary_push(members, rb_str_new2("value"));
3356
3323
  }
3357
3324
 
3358
3325
  /* Document-class: Node::CFUNC
@@ -3395,12 +3362,6 @@ void define_node_subclass_methods()
3395
3362
  rb_iv_set(rb_cCLASS, "__type__", INT2NUM(NODE_CLASS));
3396
3363
  rb_define_singleton_method(rb_cCLASS, "members", node_s_members, 0);
3397
3364
 
3398
- /* Document-method: cpath
3399
- * the name of the class to define
3400
- */
3401
- rb_define_method(rb_cCLASS, "cpath", node_cpath, 0);
3402
- rb_ary_push(members, rb_str_new2("cpath"));
3403
-
3404
3365
  /* Document-method: body
3405
3366
  * the body of the class definition
3406
3367
  */
@@ -3413,6 +3374,12 @@ void define_node_subclass_methods()
3413
3374
  */
3414
3375
  rb_define_method(rb_cCLASS, "super", node_super, 0);
3415
3376
  rb_ary_push(members, rb_str_new2("super"));
3377
+
3378
+ /* Document-method: cpath
3379
+ * the name of the class to define
3380
+ */
3381
+ rb_define_method(rb_cCLASS, "cpath", node_cpath, 0);
3382
+ rb_ary_push(members, rb_str_new2("cpath"));
3416
3383
  }
3417
3384
 
3418
3385
  /* Document-class: Node::COLON2
@@ -3514,18 +3481,18 @@ void define_node_subclass_methods()
3514
3481
  rb_iv_set(rb_cCVASGN, "__type__", INT2NUM(NODE_CVASGN));
3515
3482
  rb_define_singleton_method(rb_cCVASGN, "members", node_s_members, 0);
3516
3483
 
3484
+ /* Document-method: vid
3485
+ * the name of the class variable to assign
3486
+ */
3487
+ rb_define_method(rb_cCVASGN, "vid", node_vid, 0);
3488
+ rb_ary_push(members, rb_str_new2("vid"));
3489
+
3517
3490
  /* Document-method: value
3518
3491
  * an expression whose result is the new value of the class
3519
3492
  * variable
3520
3493
  */
3521
3494
  rb_define_method(rb_cCVASGN, "value", node_value, 0);
3522
3495
  rb_ary_push(members, rb_str_new2("value"));
3523
-
3524
- /* Document-method: vid
3525
- * the name of the class variable to assign
3526
- */
3527
- rb_define_method(rb_cCVASGN, "vid", node_vid, 0);
3528
- rb_ary_push(members, rb_str_new2("vid"));
3529
3496
  }
3530
3497
 
3531
3498
  /* Document-class: Node::CVDECL
@@ -3541,18 +3508,18 @@ void define_node_subclass_methods()
3541
3508
  rb_iv_set(rb_cCVDECL, "__type__", INT2NUM(NODE_CVDECL));
3542
3509
  rb_define_singleton_method(rb_cCVDECL, "members", node_s_members, 0);
3543
3510
 
3511
+ /* Document-method: vid
3512
+ * the name of the class variable to assign
3513
+ */
3514
+ rb_define_method(rb_cCVDECL, "vid", node_vid, 0);
3515
+ rb_ary_push(members, rb_str_new2("vid"));
3516
+
3544
3517
  /* Document-method: value
3545
3518
  * an expression whose result is the new value of the class
3546
3519
  * variable
3547
3520
  */
3548
3521
  rb_define_method(rb_cCVDECL, "value", node_value, 0);
3549
3522
  rb_ary_push(members, rb_str_new2("value"));
3550
-
3551
- /* Document-method: vid
3552
- * the name of the class variable to assign
3553
- */
3554
- rb_define_method(rb_cCVDECL, "vid", node_vid, 0);
3555
- rb_ary_push(members, rb_str_new2("vid"));
3556
3523
  }
3557
3524
 
3558
3525
  /* Document-class: Node::DASGN
@@ -3575,17 +3542,17 @@ void define_node_subclass_methods()
3575
3542
  rb_iv_set(rb_cDASGN, "__type__", INT2NUM(NODE_DASGN));
3576
3543
  rb_define_singleton_method(rb_cDASGN, "members", node_s_members, 0);
3577
3544
 
3578
- /* Document-method: value
3579
- * the value to assign to the local variable
3580
- */
3581
- rb_define_method(rb_cDASGN, "value", node_value, 0);
3582
- rb_ary_push(members, rb_str_new2("value"));
3583
-
3584
3545
  /* Document-method: vid
3585
3546
  * the name of the local variable
3586
3547
  */
3587
3548
  rb_define_method(rb_cDASGN, "vid", node_vid, 0);
3588
3549
  rb_ary_push(members, rb_str_new2("vid"));
3550
+
3551
+ /* Document-method: value
3552
+ * the value to assign to the local variable
3553
+ */
3554
+ rb_define_method(rb_cDASGN, "value", node_value, 0);
3555
+ rb_ary_push(members, rb_str_new2("value"));
3589
3556
  }
3590
3557
 
3591
3558
  /* Document-class: Node::DASGN_CURR
@@ -3600,17 +3567,17 @@ void define_node_subclass_methods()
3600
3567
  rb_iv_set(rb_cDASGN_CURR, "__type__", INT2NUM(NODE_DASGN_CURR));
3601
3568
  rb_define_singleton_method(rb_cDASGN_CURR, "members", node_s_members, 0);
3602
3569
 
3603
- /* Document-method: value
3604
- * the value to assign to the local variable
3605
- */
3606
- rb_define_method(rb_cDASGN_CURR, "value", node_value, 0);
3607
- rb_ary_push(members, rb_str_new2("value"));
3608
-
3609
3570
  /* Document-method: vid
3610
3571
  * the name of the local variable
3611
3572
  */
3612
3573
  rb_define_method(rb_cDASGN_CURR, "vid", node_vid, 0);
3613
3574
  rb_ary_push(members, rb_str_new2("vid"));
3575
+
3576
+ /* Document-method: value
3577
+ * the value to assign to the local variable
3578
+ */
3579
+ rb_define_method(rb_cDASGN_CURR, "value", node_value, 0);
3580
+ rb_ary_push(members, rb_str_new2("value"));
3614
3581
  }
3615
3582
 
3616
3583
  /* Document-class: Node::DEFINED
@@ -3646,18 +3613,18 @@ void define_node_subclass_methods()
3646
3613
  rb_iv_set(rb_cDEFN, "__type__", INT2NUM(NODE_DEFN));
3647
3614
  rb_define_singleton_method(rb_cDEFN, "members", node_s_members, 0);
3648
3615
 
3649
- /* Document-method: defn
3650
- * the body of the method definition
3651
- */
3652
- rb_define_method(rb_cDEFN, "defn", node_defn, 0);
3653
- rb_ary_push(members, rb_str_new2("defn"));
3654
-
3655
3616
  /* Document-method: mid
3656
3617
  * the name of the method* defn the body of the method
3657
3618
  */
3658
3619
  rb_define_method(rb_cDEFN, "mid", node_mid, 0);
3659
3620
  rb_ary_push(members, rb_str_new2("mid"));
3660
3621
 
3622
+ /* Document-method: defn
3623
+ * the body of the method definition
3624
+ */
3625
+ rb_define_method(rb_cDEFN, "defn", node_defn, 0);
3626
+ rb_ary_push(members, rb_str_new2("defn"));
3627
+
3661
3628
  /* Document-method: noex
3662
3629
  * the flags which should be used to define the method
3663
3630
  */
@@ -3678,14 +3645,14 @@ void define_node_subclass_methods()
3678
3645
  rb_iv_set(rb_cDEFS, "__member__", members);
3679
3646
  rb_iv_set(rb_cDEFS, "__type__", INT2NUM(NODE_DEFS));
3680
3647
  rb_define_singleton_method(rb_cDEFS, "members", node_s_members, 0);
3681
- rb_define_method(rb_cDEFS, "defn", node_defn, 0);
3682
- rb_ary_push(members, rb_str_new2("defn"));
3683
3648
 
3684
3649
  /* Document-method: mid
3685
3650
  * the name of the method* defn the body of the method
3686
3651
  */
3687
3652
  rb_define_method(rb_cDEFS, "mid", node_mid, 0);
3688
3653
  rb_ary_push(members, rb_str_new2("mid"));
3654
+ rb_define_method(rb_cDEFS, "defn", node_defn, 0);
3655
+ rb_ary_push(members, rb_str_new2("defn"));
3689
3656
 
3690
3657
  /* Document-method: recv
3691
3658
  * the object to whose singleton class the new method is to be added
@@ -3707,12 +3674,6 @@ void define_node_subclass_methods()
3707
3674
  rb_iv_set(rb_cDOT2, "__type__", INT2NUM(NODE_DOT2));
3708
3675
  rb_define_singleton_method(rb_cDOT2, "members", node_s_members, 0);
3709
3676
 
3710
- /* Document-method: beg
3711
- * the beginning of the range
3712
- */
3713
- rb_define_method(rb_cDOT2, "beg", node_beg, 0);
3714
- rb_ary_push(members, rb_str_new2("beg"));
3715
-
3716
3677
  /* Document-method: end
3717
3678
  * the end of the range
3718
3679
  */
@@ -3720,6 +3681,12 @@ void define_node_subclass_methods()
3720
3681
  rb_ary_push(members, rb_str_new2("end"));
3721
3682
  rb_define_method(rb_cDOT2, "state", node_state, 0);
3722
3683
  rb_ary_push(members, rb_str_new2("state"));
3684
+
3685
+ /* Document-method: beg
3686
+ * the beginning of the range
3687
+ */
3688
+ rb_define_method(rb_cDOT2, "beg", node_beg, 0);
3689
+ rb_ary_push(members, rb_str_new2("beg"));
3723
3690
  }
3724
3691
 
3725
3692
  /* Document-class: Node::DOT3
@@ -3735,12 +3702,6 @@ void define_node_subclass_methods()
3735
3702
  rb_iv_set(rb_cDOT3, "__type__", INT2NUM(NODE_DOT3));
3736
3703
  rb_define_singleton_method(rb_cDOT3, "members", node_s_members, 0);
3737
3704
 
3738
- /* Document-method: beg
3739
- * the beginning of the range
3740
- */
3741
- rb_define_method(rb_cDOT3, "beg", node_beg, 0);
3742
- rb_ary_push(members, rb_str_new2("beg"));
3743
-
3744
3705
  /* Document-method: end
3745
3706
  * the end of the range
3746
3707
  */
@@ -3748,6 +3709,12 @@ void define_node_subclass_methods()
3748
3709
  rb_ary_push(members, rb_str_new2("end"));
3749
3710
  rb_define_method(rb_cDOT3, "state", node_state, 0);
3750
3711
  rb_ary_push(members, rb_str_new2("state"));
3712
+
3713
+ /* Document-method: beg
3714
+ * the beginning of the range
3715
+ */
3716
+ rb_define_method(rb_cDOT3, "beg", node_beg, 0);
3717
+ rb_ary_push(members, rb_str_new2("beg"));
3751
3718
  }
3752
3719
 
3753
3720
  /* Document-class: Node::DREGX
@@ -4003,64 +3970,32 @@ void define_node_subclass_methods()
4003
3970
  rb_define_singleton_method(rb_cFALSE, "members", node_s_members, 0);
4004
3971
  }
4005
3972
 
4006
- /* Document-class: Node::FBODY
4007
- * A placeholder for a method alias, which can be added to a class by
4008
- * using alias or alias_method:
4009
- * alias old new
3973
+ /* Document-class: Node::FCALL
3974
+ * Represents a method call in the form:
3975
+ * mid(args).
3976
+ *
3977
+ * This makes a method call on an object using self as the implicit
3978
+ * receiver.
4010
3979
  */
4011
3980
  {
4012
- VALUE rb_cFBODY = rb_define_class_under(rb_cNode, "FBODY", rb_cNode);
4013
- members = rb_ary_new();
4014
- rb_cNodeSubclass[NODE_FBODY] = rb_cFBODY;
4015
- rb_iv_set(rb_cFBODY, "__member__", members);
4016
- rb_iv_set(rb_cFBODY, "__type__", INT2NUM(NODE_FBODY));
4017
- rb_define_singleton_method(rb_cFBODY, "members", node_s_members, 0);
4018
-
4019
- /* Document-method: body
4020
- * the method body
4021
- */
4022
- rb_define_method(rb_cFBODY, "body", node_body, 0);
4023
- rb_ary_push(members, rb_str_new2("body"));
4024
-
4025
- /* Document-method: cnt
4026
- * the method's flags
4027
- */
4028
- rb_define_method(rb_cFBODY, "cnt", node_cnt, 0);
4029
- rb_ary_push(members, rb_str_new2("cnt"));
4030
-
4031
- /* Document-method: oid
4032
- * the original name of the method
4033
- */
4034
- rb_define_method(rb_cFBODY, "oid", node_oid, 0);
4035
- rb_ary_push(members, rb_str_new2("oid"));
4036
- }
4037
-
4038
- /* Document-class: Node::FCALL
4039
- * Represents a method call in the form:
4040
- * mid(args).
4041
- *
4042
- * This makes a method call on an object using self as the implicit
4043
- * receiver.
4044
- */
4045
- {
4046
- VALUE rb_cFCALL = rb_define_class_under(rb_cNode, "FCALL", rb_cNode);
3981
+ VALUE rb_cFCALL = rb_define_class_under(rb_cNode, "FCALL", rb_cNode);
4047
3982
  members = rb_ary_new();
4048
3983
  rb_cNodeSubclass[NODE_FCALL] = rb_cFCALL;
4049
3984
  rb_iv_set(rb_cFCALL, "__member__", members);
4050
3985
  rb_iv_set(rb_cFCALL, "__type__", INT2NUM(NODE_FCALL));
4051
3986
  rb_define_singleton_method(rb_cFCALL, "members", node_s_members, 0);
4052
3987
 
4053
- /* Document-method: args
4054
- * the arguments to the method
4055
- */
4056
- rb_define_method(rb_cFCALL, "args", node_args, 0);
4057
- rb_ary_push(members, rb_str_new2("args"));
4058
-
4059
3988
  /* Document-method: mid
4060
3989
  * the method id
4061
3990
  */
4062
3991
  rb_define_method(rb_cFCALL, "mid", node_mid, 0);
4063
3992
  rb_ary_push(members, rb_str_new2("mid"));
3993
+
3994
+ /* Document-method: args
3995
+ * the arguments to the method
3996
+ */
3997
+ rb_define_method(rb_cFCALL, "args", node_args, 0);
3998
+ rb_ary_push(members, rb_str_new2("args"));
4064
3999
  }
4065
4000
 
4066
4001
  /* Document-class: Node::FLIP2
@@ -4077,11 +4012,12 @@ void define_node_subclass_methods()
4077
4012
  rb_iv_set(rb_cFLIP2, "__type__", INT2NUM(NODE_FLIP2));
4078
4013
  rb_define_singleton_method(rb_cFLIP2, "members", node_s_members, 0);
4079
4014
 
4080
- /* Document-method: beg
4081
- * the beginning of the range
4015
+ /* Document-method: cnt
4016
+ * the index into the local variable table of the special variable
4017
+ * to use in the flip-flop expression (usually 2 for $_)
4082
4018
  */
4083
- rb_define_method(rb_cFLIP2, "beg", node_beg, 0);
4084
- rb_ary_push(members, rb_str_new2("beg"));
4019
+ rb_define_method(rb_cFLIP2, "cnt", node_cnt, 0);
4020
+ rb_ary_push(members, rb_str_new2("cnt"));
4085
4021
 
4086
4022
  /* Document-method: end
4087
4023
  * the end of the range
@@ -4089,12 +4025,11 @@ void define_node_subclass_methods()
4089
4025
  rb_define_method(rb_cFLIP2, "end", node_end, 0);
4090
4026
  rb_ary_push(members, rb_str_new2("end"));
4091
4027
 
4092
- /* Document-method: cnt
4093
- * the index into the local variable table of the special variable
4094
- * to use in the flip-flop expression (usually 2 for $_)
4028
+ /* Document-method: beg
4029
+ * the beginning of the range
4095
4030
  */
4096
- rb_define_method(rb_cFLIP2, "cnt", node_cnt, 0);
4097
- rb_ary_push(members, rb_str_new2("cnt"));
4031
+ rb_define_method(rb_cFLIP2, "beg", node_beg, 0);
4032
+ rb_ary_push(members, rb_str_new2("beg"));
4098
4033
  }
4099
4034
 
4100
4035
  /* Document-class: Node::FLIP3
@@ -4111,11 +4046,12 @@ void define_node_subclass_methods()
4111
4046
  rb_iv_set(rb_cFLIP3, "__type__", INT2NUM(NODE_FLIP3));
4112
4047
  rb_define_singleton_method(rb_cFLIP3, "members", node_s_members, 0);
4113
4048
 
4114
- /* Document-method: beg
4115
- * the beginning of the range
4049
+ /* Document-method: cnt
4050
+ * the index into the local variable table of the special variable
4051
+ * to use in the flip-flop expression (usually 2 for $_)
4116
4052
  */
4117
- rb_define_method(rb_cFLIP3, "beg", node_beg, 0);
4118
- rb_ary_push(members, rb_str_new2("beg"));
4053
+ rb_define_method(rb_cFLIP3, "cnt", node_cnt, 0);
4054
+ rb_ary_push(members, rb_str_new2("cnt"));
4119
4055
 
4120
4056
  /* Document-method: end
4121
4057
  * the end of the range
@@ -4123,12 +4059,11 @@ void define_node_subclass_methods()
4123
4059
  rb_define_method(rb_cFLIP3, "end", node_end, 0);
4124
4060
  rb_ary_push(members, rb_str_new2("end"));
4125
4061
 
4126
- /* Document-method: cnt
4127
- * the index into the local variable table of the special variable
4128
- * to use in the flip-flop expression (usually 2 for $_)
4062
+ /* Document-method: beg
4063
+ * the beginning of the range
4129
4064
  */
4130
- rb_define_method(rb_cFLIP3, "cnt", node_cnt, 0);
4131
- rb_ary_push(members, rb_str_new2("cnt"));
4065
+ rb_define_method(rb_cFLIP3, "beg", node_beg, 0);
4066
+ rb_ary_push(members, rb_str_new2("beg"));
4132
4067
  }
4133
4068
 
4134
4069
  /* Document-class: Node::FOR
@@ -4153,18 +4088,18 @@ void define_node_subclass_methods()
4153
4088
  rb_iv_set(rb_cFOR, "__type__", INT2NUM(NODE_FOR));
4154
4089
  rb_define_singleton_method(rb_cFOR, "members", node_s_members, 0);
4155
4090
 
4156
- /* Document-method: body
4157
- * the body of the loop
4158
- */
4159
- rb_define_method(rb_cFOR, "body", node_body, 0);
4160
- rb_ary_push(members, rb_str_new2("body"));
4161
-
4162
4091
  /* Document-method: iter
4163
4092
  * the sequence over which to iterate
4164
4093
  */
4165
4094
  rb_define_method(rb_cFOR, "iter", node_iter, 0);
4166
4095
  rb_ary_push(members, rb_str_new2("iter"));
4167
4096
 
4097
+ /* Document-method: body
4098
+ * the body of the loop
4099
+ */
4100
+ rb_define_method(rb_cFOR, "body", node_body, 0);
4101
+ rb_ary_push(members, rb_str_new2("body"));
4102
+
4168
4103
  /* Document-method: var
4169
4104
  * an assignment node which assigns the next value in the sequence
4170
4105
  * to a variable, which may or may not be local. May also be a
@@ -4185,12 +4120,6 @@ void define_node_subclass_methods()
4185
4120
  rb_iv_set(rb_cGASGN, "__type__", INT2NUM(NODE_GASGN));
4186
4121
  rb_define_singleton_method(rb_cGASGN, "members", node_s_members, 0);
4187
4122
 
4188
- /* Document-method: value
4189
- * an expression whose result is the new value of the global variable
4190
- */
4191
- rb_define_method(rb_cGASGN, "value", node_value, 0);
4192
- rb_ary_push(members, rb_str_new2("value"));
4193
-
4194
4123
  /* Document-method: vid
4195
4124
  * the name of the global variable, with a leading '$' character.
4196
4125
  */
@@ -4198,6 +4127,12 @@ void define_node_subclass_methods()
4198
4127
  rb_ary_push(members, rb_str_new2("vid"));
4199
4128
  rb_define_method(rb_cGASGN, "entry", node_entry, 0);
4200
4129
  rb_ary_push(members, rb_str_new2("entry"));
4130
+
4131
+ /* Document-method: value
4132
+ * an expression whose result is the new value of the global variable
4133
+ */
4134
+ rb_define_method(rb_cGASGN, "value", node_value, 0);
4135
+ rb_ary_push(members, rb_str_new2("value"));
4201
4136
  }
4202
4137
 
4203
4138
  /* Document-class: Node::GVAR
@@ -4250,17 +4185,17 @@ void define_node_subclass_methods()
4250
4185
  rb_iv_set(rb_cIASGN, "__type__", INT2NUM(NODE_IASGN));
4251
4186
  rb_define_singleton_method(rb_cIASGN, "members", node_s_members, 0);
4252
4187
 
4253
- /* Document-method: value
4254
- * the value to assign to the instance variable
4255
- */
4256
- rb_define_method(rb_cIASGN, "value", node_value, 0);
4257
- rb_ary_push(members, rb_str_new2("value"));
4258
-
4259
4188
  /* Document-method: vid
4260
4189
  * the name of the instance variable, with a leading '@' sign
4261
4190
  */
4262
4191
  rb_define_method(rb_cIASGN, "vid", node_vid, 0);
4263
4192
  rb_ary_push(members, rb_str_new2("vid"));
4193
+
4194
+ /* Document-method: value
4195
+ * the value to assign to the instance variable
4196
+ */
4197
+ rb_define_method(rb_cIASGN, "value", node_value, 0);
4198
+ rb_ary_push(members, rb_str_new2("value"));
4264
4199
  }
4265
4200
 
4266
4201
  /* Document-class: Node::IF
@@ -4292,12 +4227,6 @@ void define_node_subclass_methods()
4292
4227
  rb_iv_set(rb_cIF, "__type__", INT2NUM(NODE_IF));
4293
4228
  rb_define_singleton_method(rb_cIF, "members", node_s_members, 0);
4294
4229
 
4295
- /* Document-method: cond
4296
- * the condition to evaluate
4297
- */
4298
- rb_define_method(rb_cIF, "cond", node_cond, 0);
4299
- rb_ary_push(members, rb_str_new2("cond"));
4300
-
4301
4230
  /* Document-method: body
4302
4231
  * the expression to evaluate if the expression is true, or false
4303
4232
  * if the expression is empty
@@ -4305,6 +4234,12 @@ void define_node_subclass_methods()
4305
4234
  rb_define_method(rb_cIF, "body", node_body, 0);
4306
4235
  rb_ary_push(members, rb_str_new2("body"));
4307
4236
 
4237
+ /* Document-method: cond
4238
+ * the condition to evaluate
4239
+ */
4240
+ rb_define_method(rb_cIF, "cond", node_cond, 0);
4241
+ rb_ary_push(members, rb_str_new2("cond"));
4242
+
4308
4243
  /* Document-method: else
4309
4244
  * the expression to evaluate if the expression is false, or false
4310
4245
  * if the expression is empty
@@ -4324,6 +4259,12 @@ void define_node_subclass_methods()
4324
4259
  rb_iv_set(rb_cIFUNC, "__type__", INT2NUM(NODE_IFUNC));
4325
4260
  rb_define_singleton_method(rb_cIFUNC, "members", node_s_members, 0);
4326
4261
 
4262
+ /* Document-method: state
4263
+ * always 0
4264
+ */
4265
+ rb_define_method(rb_cIFUNC, "state", node_state, 0);
4266
+ rb_ary_push(members, rb_str_new2("state"));
4267
+
4327
4268
  /* Document-method: cfnc
4328
4269
  * a pointer to the C function to which to yield
4329
4270
  */
@@ -4336,12 +4277,6 @@ void define_node_subclass_methods()
4336
4277
  */
4337
4278
  rb_define_method(rb_cIFUNC, "tval", node_tval, 0);
4338
4279
  rb_ary_push(members, rb_str_new2("tval"));
4339
-
4340
- /* Document-method: state
4341
- * always 0
4342
- */
4343
- rb_define_method(rb_cIFUNC, "state", node_state, 0);
4344
- rb_ary_push(members, rb_str_new2("state"));
4345
4280
  }
4346
4281
 
4347
4282
  /* Document-class: Node::ITER
@@ -4365,12 +4300,6 @@ void define_node_subclass_methods()
4365
4300
  rb_iv_set(rb_cITER, "__type__", INT2NUM(NODE_ITER));
4366
4301
  rb_define_singleton_method(rb_cITER, "members", node_s_members, 0);
4367
4302
 
4368
- /* Document-method: body
4369
- * the body of the loop
4370
- */
4371
- rb_define_method(rb_cITER, "body", node_body, 0);
4372
- rb_ary_push(members, rb_str_new2("body"));
4373
-
4374
4303
  /* Document-method: iter
4375
4304
  * an expression which calls the desired iteration method, usually
4376
4305
  * recv.each
@@ -4378,6 +4307,12 @@ void define_node_subclass_methods()
4378
4307
  rb_define_method(rb_cITER, "iter", node_iter, 0);
4379
4308
  rb_ary_push(members, rb_str_new2("iter"));
4380
4309
 
4310
+ /* Document-method: body
4311
+ * the body of the loop
4312
+ */
4313
+ rb_define_method(rb_cITER, "body", node_body, 0);
4314
+ rb_ary_push(members, rb_str_new2("body"));
4315
+
4381
4316
  /* Document-method: var
4382
4317
  * an assignment node which assigns the next value in the sequence
4383
4318
  * to a variable, which may or may not be local. May also be a
@@ -4418,20 +4353,20 @@ void define_node_subclass_methods()
4418
4353
  rb_iv_set(rb_cLASGN, "__member__", members);
4419
4354
  rb_iv_set(rb_cLASGN, "__type__", INT2NUM(NODE_LASGN));
4420
4355
  rb_define_singleton_method(rb_cLASGN, "members", node_s_members, 0);
4421
-
4422
- /* Document-method: value
4423
- * the value to assign to the local variable
4424
- */
4425
- rb_define_method(rb_cLASGN, "value", node_value, 0);
4426
- rb_ary_push(members, rb_str_new2("value"));
4356
+ rb_define_method(rb_cLASGN, "cnt", node_cnt, 0);
4357
+ rb_ary_push(members, rb_str_new2("cnt"));
4427
4358
 
4428
4359
  /* Document-method: vid
4429
4360
  * the name of the local variable
4430
4361
  */
4431
4362
  rb_define_method(rb_cLASGN, "vid", node_vid, 0);
4432
4363
  rb_ary_push(members, rb_str_new2("vid"));
4433
- rb_define_method(rb_cLASGN, "cnt", node_cnt, 0);
4434
- rb_ary_push(members, rb_str_new2("cnt"));
4364
+
4365
+ /* Document-method: value
4366
+ * the value to assign to the local variable
4367
+ */
4368
+ rb_define_method(rb_cLASGN, "value", node_value, 0);
4369
+ rb_ary_push(members, rb_str_new2("value"));
4435
4370
  }
4436
4371
 
4437
4372
  /* Document-class: Node::LIT
@@ -4463,14 +4398,14 @@ void define_node_subclass_methods()
4463
4398
  rb_iv_set(rb_cLVAR, "__member__", members);
4464
4399
  rb_iv_set(rb_cLVAR, "__type__", INT2NUM(NODE_LVAR));
4465
4400
  rb_define_singleton_method(rb_cLVAR, "members", node_s_members, 0);
4401
+ rb_define_method(rb_cLVAR, "cnt", node_cnt, 0);
4402
+ rb_ary_push(members, rb_str_new2("cnt"));
4466
4403
 
4467
4404
  /* Document-method: vid
4468
4405
  * the name of the local variable to retrieve.
4469
4406
  */
4470
4407
  rb_define_method(rb_cLVAR, "vid", node_vid, 0);
4471
4408
  rb_ary_push(members, rb_str_new2("vid"));
4472
- rb_define_method(rb_cLVAR, "cnt", node_cnt, 0);
4473
- rb_ary_push(members, rb_str_new2("cnt"));
4474
4409
  }
4475
4410
 
4476
4411
  /* Document-class: Node::MASGN
@@ -4484,18 +4419,18 @@ void define_node_subclass_methods()
4484
4419
  rb_iv_set(rb_cMASGN, "__type__", INT2NUM(NODE_MASGN));
4485
4420
  rb_define_singleton_method(rb_cMASGN, "members", node_s_members, 0);
4486
4421
 
4487
- /* Document-method: args
4488
- * TODO
4489
- */
4490
- rb_define_method(rb_cMASGN, "args", node_args, 0);
4491
- rb_ary_push(members, rb_str_new2("args"));
4492
-
4493
4422
  /* Document-method: head
4494
4423
  * TODO
4495
4424
  */
4496
4425
  rb_define_method(rb_cMASGN, "head", node_head, 0);
4497
4426
  rb_ary_push(members, rb_str_new2("head"));
4498
4427
 
4428
+ /* Document-method: args
4429
+ * TODO
4430
+ */
4431
+ rb_define_method(rb_cMASGN, "args", node_args, 0);
4432
+ rb_ary_push(members, rb_str_new2("args"));
4433
+
4499
4434
  /* Document-method: value
4500
4435
  * TODO
4501
4436
  */
@@ -4563,6 +4498,13 @@ void define_node_subclass_methods()
4563
4498
  rb_iv_set(rb_cMATCH2, "__type__", INT2NUM(NODE_MATCH2));
4564
4499
  rb_define_singleton_method(rb_cMATCH2, "members", node_s_members, 0);
4565
4500
 
4501
+ /* Document-method: recv
4502
+ * the regular expression on the left hand side of the match
4503
+ * operator
4504
+ */
4505
+ rb_define_method(rb_cMATCH2, "recv", node_recv, 0);
4506
+ rb_ary_push(members, rb_str_new2("recv"));
4507
+
4566
4508
  /* Document-method: value
4567
4509
  * the expression on the right hand side of the match operator, or
4568
4510
  * an expression returning $_ if there is nothing on the right hand
@@ -4570,13 +4512,6 @@ void define_node_subclass_methods()
4570
4512
  */
4571
4513
  rb_define_method(rb_cMATCH2, "value", node_value, 0);
4572
4514
  rb_ary_push(members, rb_str_new2("value"));
4573
-
4574
- /* Document-method: recv
4575
- * the regular expression on the left hand side of the match
4576
- * operator
4577
- */
4578
- rb_define_method(rb_cMATCH2, "recv", node_recv, 0);
4579
- rb_ary_push(members, rb_str_new2("recv"));
4580
4515
  }
4581
4516
 
4582
4517
  /* Document-class: Node::MATCH3
@@ -4594,17 +4529,17 @@ void define_node_subclass_methods()
4594
4529
  rb_iv_set(rb_cMATCH3, "__type__", INT2NUM(NODE_MATCH3));
4595
4530
  rb_define_singleton_method(rb_cMATCH3, "members", node_s_members, 0);
4596
4531
 
4597
- /* Document-method: value
4598
- * the right hand side of the match
4599
- */
4600
- rb_define_method(rb_cMATCH3, "value", node_value, 0);
4601
- rb_ary_push(members, rb_str_new2("value"));
4602
-
4603
4532
  /* Document-method: recv
4604
4533
  * the left hand side of the match
4605
4534
  */
4606
4535
  rb_define_method(rb_cMATCH3, "recv", node_recv, 0);
4607
4536
  rb_ary_push(members, rb_str_new2("recv"));
4537
+
4538
+ /* Document-method: value
4539
+ * the right hand side of the match
4540
+ */
4541
+ rb_define_method(rb_cMATCH3, "value", node_value, 0);
4542
+ rb_ary_push(members, rb_str_new2("value"));
4608
4543
  }
4609
4544
 
4610
4545
  /* Document-class: Node::MEMO
@@ -4630,42 +4565,6 @@ void define_node_subclass_methods()
4630
4565
  rb_define_singleton_method(rb_cMEMO, "members", node_s_members, 0);
4631
4566
  }
4632
4567
 
4633
- /* Document-class: Node::METHOD
4634
- * A placeholder for a method entry in a class's method table.
4635
- *
4636
- * On ruby 1.9 this node type is also known as RUBY_VM_METHOD_NODE.
4637
- * Its use differs from that of NODE_METHOD in that it is used as the
4638
- * body of another METHOD node and is used to store the method's
4639
- * instruction sequence.
4640
- */
4641
- {
4642
- VALUE rb_cMETHOD = rb_define_class_under(rb_cNode, "METHOD", rb_cNode);
4643
- members = rb_ary_new();
4644
- rb_cNodeSubclass[NODE_METHOD] = rb_cMETHOD;
4645
- rb_iv_set(rb_cMETHOD, "__member__", members);
4646
- rb_iv_set(rb_cMETHOD, "__type__", INT2NUM(NODE_METHOD));
4647
- rb_define_singleton_method(rb_cMETHOD, "members", node_s_members, 0);
4648
-
4649
- /* Document-method: body
4650
- * the body of the method
4651
- */
4652
- rb_define_method(rb_cMETHOD, "body", node_body, 0);
4653
- rb_ary_push(members, rb_str_new2("body"));
4654
-
4655
- /* Document-method: clss
4656
- * the class to which the method was added or the instruction
4657
- * sequence used to implement this method
4658
- */
4659
- rb_define_method(rb_cMETHOD, "clss", node_clss, 0);
4660
- rb_ary_push(members, rb_str_new2("clss"));
4661
-
4662
- /* Document-method: noex
4663
- * the method's flags
4664
- */
4665
- rb_define_method(rb_cMETHOD, "noex", node_noex, 0);
4666
- rb_ary_push(members, rb_str_new2("noex"));
4667
- }
4668
-
4669
4568
  /* Document-class: Node::MODULE
4670
4569
  * Represents a module definition, e.g.:
4671
4570
  * module cpath
@@ -4685,17 +4584,17 @@ void define_node_subclass_methods()
4685
4584
  rb_iv_set(rb_cMODULE, "__type__", INT2NUM(NODE_MODULE));
4686
4585
  rb_define_singleton_method(rb_cMODULE, "members", node_s_members, 0);
4687
4586
 
4688
- /* Document-method: cpath
4689
- * the name of the module to define
4690
- */
4691
- rb_define_method(rb_cMODULE, "cpath", node_cpath, 0);
4692
- rb_ary_push(members, rb_str_new2("cpath"));
4693
-
4694
4587
  /* Document-method: body
4695
4588
  * the body of the module definition
4696
4589
  */
4697
4590
  rb_define_method(rb_cMODULE, "body", node_body, 0);
4698
4591
  rb_ary_push(members, rb_str_new2("body"));
4592
+
4593
+ /* Document-method: cpath
4594
+ * the name of the module to define
4595
+ */
4596
+ rb_define_method(rb_cMODULE, "cpath", node_cpath, 0);
4597
+ rb_ary_push(members, rb_str_new2("cpath"));
4699
4598
  }
4700
4599
 
4701
4600
  /* Document-class: Node::NEXT
@@ -4737,17 +4636,17 @@ void define_node_subclass_methods()
4737
4636
  rb_iv_set(rb_cNTH_REF, "__type__", INT2NUM(NODE_NTH_REF));
4738
4637
  rb_define_singleton_method(rb_cNTH_REF, "members", node_s_members, 0);
4739
4638
 
4740
- /* Document-method: nth
4741
- * the index of the match data item to retrieve
4742
- */
4743
- rb_define_method(rb_cNTH_REF, "nth", node_nth, 0);
4744
- rb_ary_push(members, rb_str_new2("nth"));
4745
-
4746
4639
  /* Document-method: cnt
4747
4640
  * the index into the local variable table where the match data is stored
4748
4641
  */
4749
4642
  rb_define_method(rb_cNTH_REF, "cnt", node_cnt, 0);
4750
4643
  rb_ary_push(members, rb_str_new2("cnt"));
4644
+
4645
+ /* Document-method: nth
4646
+ * the index of the match data item to retrieve
4647
+ */
4648
+ rb_define_method(rb_cNTH_REF, "nth", node_nth, 0);
4649
+ rb_ary_push(members, rb_str_new2("nth"));
4751
4650
  }
4752
4651
 
4753
4652
  /* Document-class: Node::OPT_N
@@ -4800,12 +4699,6 @@ void define_node_subclass_methods()
4800
4699
  rb_iv_set(rb_cOP_ASGN1, "__type__", INT2NUM(NODE_OP_ASGN1));
4801
4700
  rb_define_singleton_method(rb_cOP_ASGN1, "members", node_s_members, 0);
4802
4701
 
4803
- /* Document-method: args
4804
- * the arguments to the assigment
4805
- */
4806
- rb_define_method(rb_cOP_ASGN1, "args", node_args, 0);
4807
- rb_ary_push(members, rb_str_new2("args"));
4808
-
4809
4702
  /* Document-method: mid
4810
4703
  * 0, 1, or the name a method to call to calculate the value of the
4811
4704
  * rhs
@@ -4818,6 +4711,12 @@ void define_node_subclass_methods()
4818
4711
  */
4819
4712
  rb_define_method(rb_cOP_ASGN1, "recv", node_recv, 0);
4820
4713
  rb_ary_push(members, rb_str_new2("recv"));
4714
+
4715
+ /* Document-method: args
4716
+ * the arguments to the assigment
4717
+ */
4718
+ rb_define_method(rb_cOP_ASGN1, "args", node_args, 0);
4719
+ rb_ary_push(members, rb_str_new2("args"));
4821
4720
  }
4822
4721
 
4823
4722
  /* Document-class: Node::OP_ASGN2
@@ -4840,11 +4739,11 @@ void define_node_subclass_methods()
4840
4739
  rb_iv_set(rb_cOP_ASGN2, "__type__", INT2NUM(NODE_OP_ASGN2));
4841
4740
  rb_define_singleton_method(rb_cOP_ASGN2, "members", node_s_members, 0);
4842
4741
 
4843
- /* Document-method: value
4844
- * the value to assign to the attribute
4742
+ /* Document-method: recv
4743
+ * the receiver of the attribute
4845
4744
  */
4846
- rb_define_method(rb_cOP_ASGN2, "value", node_value, 0);
4847
- rb_ary_push(members, rb_str_new2("value"));
4745
+ rb_define_method(rb_cOP_ASGN2, "recv", node_recv, 0);
4746
+ rb_ary_push(members, rb_str_new2("recv"));
4848
4747
 
4849
4748
  /* Document-method: next
4850
4749
  * another node of type OP_ASGN2 which contains more information
@@ -4853,11 +4752,11 @@ void define_node_subclass_methods()
4853
4752
  rb_define_method(rb_cOP_ASGN2, "next", node_next, 0);
4854
4753
  rb_ary_push(members, rb_str_new2("next"));
4855
4754
 
4856
- /* Document-method: recv
4857
- * the receiver of the attribute
4755
+ /* Document-method: value
4756
+ * the value to assign to the attribute
4858
4757
  */
4859
- rb_define_method(rb_cOP_ASGN2, "recv", node_recv, 0);
4860
- rb_ary_push(members, rb_str_new2("recv"));
4758
+ rb_define_method(rb_cOP_ASGN2, "value", node_value, 0);
4759
+ rb_ary_push(members, rb_str_new2("value"));
4861
4760
  }
4862
4761
 
4863
4762
  /* Document-class: Node::OP_ASGN2_ARG
@@ -4873,6 +4772,14 @@ void define_node_subclass_methods()
4873
4772
  rb_iv_set(rb_cOP_ASGN2_ARG, "__type__", INT2NUM(NODE_OP_ASGN2_ARG));
4874
4773
  rb_define_singleton_method(rb_cOP_ASGN2_ARG, "members", node_s_members, 0);
4875
4774
 
4775
+ /* Document-method: mid
4776
+ * The operation to apply to the attribute before setting it. May
4777
+ * be 0 (false) to indicate "logical or" or 1 (nil) to indicate
4778
+ * "logical and".
4779
+ */
4780
+ rb_define_method(rb_cOP_ASGN2_ARG, "mid", node_mid, 0);
4781
+ rb_ary_push(members, rb_str_new2("mid"));
4782
+
4876
4783
  /* Document-method: vid
4877
4784
  * The method to call on the receiver to retrieve the attribute
4878
4785
  */
@@ -4884,14 +4791,6 @@ void define_node_subclass_methods()
4884
4791
  */
4885
4792
  rb_define_method(rb_cOP_ASGN2_ARG, "aid", node_aid, 0);
4886
4793
  rb_ary_push(members, rb_str_new2("aid"));
4887
-
4888
- /* Document-method: mid
4889
- * The operation to apply to the attribute before setting it. May
4890
- * be 0 (false) to indicate "logical or" or 1 (nil) to indicate
4891
- * "logical and".
4892
- */
4893
- rb_define_method(rb_cOP_ASGN2_ARG, "mid", node_mid, 0);
4894
- rb_ary_push(members, rb_str_new2("mid"));
4895
4794
  }
4896
4795
 
4897
4796
  /* Document-class: Node::OP_ASGN_AND
@@ -4910,18 +4809,18 @@ void define_node_subclass_methods()
4910
4809
  rb_iv_set(rb_cOP_ASGN_AND, "__type__", INT2NUM(NODE_OP_ASGN_AND));
4911
4810
  rb_define_singleton_method(rb_cOP_ASGN_AND, "members", node_s_members, 0);
4912
4811
 
4812
+ /* Document-method: recv
4813
+ * an expression representing the left hand side of the assignment
4814
+ */
4815
+ rb_define_method(rb_cOP_ASGN_AND, "recv", node_recv, 0);
4816
+ rb_ary_push(members, rb_str_new2("recv"));
4817
+
4913
4818
  /* Document-method: value
4914
4819
  * an expression representing the assignment that should be
4915
4820
  * performed if the left hand side is true
4916
4821
  */
4917
4822
  rb_define_method(rb_cOP_ASGN_AND, "value", node_value, 0);
4918
4823
  rb_ary_push(members, rb_str_new2("value"));
4919
-
4920
- /* Document-method: recv
4921
- * an expression representing the left hand side of the assignment
4922
- */
4923
- rb_define_method(rb_cOP_ASGN_AND, "recv", node_recv, 0);
4924
- rb_ary_push(members, rb_str_new2("recv"));
4925
4824
  }
4926
4825
 
4927
4826
  /* Document-class: Node::OP_ASGN_OR
@@ -4940,6 +4839,12 @@ void define_node_subclass_methods()
4940
4839
  rb_iv_set(rb_cOP_ASGN_OR, "__type__", INT2NUM(NODE_OP_ASGN_OR));
4941
4840
  rb_define_singleton_method(rb_cOP_ASGN_OR, "members", node_s_members, 0);
4942
4841
 
4842
+ /* Document-method: recv
4843
+ * the receiver of the assignment
4844
+ */
4845
+ rb_define_method(rb_cOP_ASGN_OR, "recv", node_recv, 0);
4846
+ rb_ary_push(members, rb_str_new2("recv"));
4847
+
4943
4848
  /* Document-method: aid
4944
4849
  * if this indicator is nonzero, ruby will check to see if the
4945
4850
  * provided expression is defined, otherwise it will assume that
@@ -4953,12 +4858,6 @@ void define_node_subclass_methods()
4953
4858
  */
4954
4859
  rb_define_method(rb_cOP_ASGN_OR, "value", node_value, 0);
4955
4860
  rb_ary_push(members, rb_str_new2("value"));
4956
-
4957
- /* Document-method: recv
4958
- * the receiver of the assignment
4959
- */
4960
- rb_define_method(rb_cOP_ASGN_OR, "recv", node_recv, 0);
4961
- rb_ary_push(members, rb_str_new2("recv"));
4962
4861
  }
4963
4862
 
4964
4863
  /* Document-class: Node::OR
@@ -4976,17 +4875,17 @@ void define_node_subclass_methods()
4976
4875
  rb_iv_set(rb_cOR, "__type__", INT2NUM(NODE_OR));
4977
4876
  rb_define_singleton_method(rb_cOR, "members", node_s_members, 0);
4978
4877
 
4979
- /* Document-method: first
4980
- * the expression on the left hand side
4981
- */
4982
- rb_define_method(rb_cOR, "first", node_1st, 0);
4983
- rb_ary_push(members, rb_str_new2("first"));
4984
-
4985
4878
  /* Document-method: second
4986
4879
  * the expression on the right hand side
4987
4880
  */
4988
4881
  rb_define_method(rb_cOR, "second", node_2nd, 0);
4989
4882
  rb_ary_push(members, rb_str_new2("second"));
4883
+
4884
+ /* Document-method: first
4885
+ * the expression on the left hand side
4886
+ */
4887
+ rb_define_method(rb_cOR, "first", node_1st, 0);
4888
+ rb_ary_push(members, rb_str_new2("first"));
4990
4889
  }
4991
4890
 
4992
4891
  /* Document-class: Node::POSTEXE
@@ -5044,17 +4943,17 @@ void define_node_subclass_methods()
5044
4943
  rb_define_method(rb_cRESBODY, "head", node_head, 0);
5045
4944
  rb_ary_push(members, rb_str_new2("head"));
5046
4945
 
5047
- /* Document-method: args
5048
- * the expression type to match against
5049
- */
5050
- rb_define_method(rb_cRESBODY, "args", node_args, 0);
5051
- rb_ary_push(members, rb_str_new2("args"));
5052
-
5053
4946
  /* Document-method: body
5054
4947
  * the expresion to evaluate if the exception type matches
5055
4948
  */
5056
4949
  rb_define_method(rb_cRESBODY, "body", node_body, 0);
5057
4950
  rb_ary_push(members, rb_str_new2("body"));
4951
+
4952
+ /* Document-method: args
4953
+ * the expression type to match against
4954
+ */
4955
+ rb_define_method(rb_cRESBODY, "args", node_args, 0);
4956
+ rb_ary_push(members, rb_str_new2("args"));
5058
4957
  }
5059
4958
 
5060
4959
  /* Document-class: Node::RESCUE
@@ -5100,17 +4999,17 @@ void define_node_subclass_methods()
5100
4999
  rb_define_method(rb_cRESCUE, "head", node_head, 0);
5101
5000
  rb_ary_push(members, rb_str_new2("head"));
5102
5001
 
5103
- /* Document-method: else
5104
- * the expression to be evaluated if no exception is raised
5105
- */
5106
- rb_define_method(rb_cRESCUE, "else", node_else, 0);
5107
- rb_ary_push(members, rb_str_new2("else"));
5108
-
5109
5002
  /* Document-method: resq
5110
5003
  * the expression to be evaluated if an exception is raised
5111
5004
  */
5112
5005
  rb_define_method(rb_cRESCUE, "resq", node_resq, 0);
5113
5006
  rb_ary_push(members, rb_str_new2("resq"));
5007
+
5008
+ /* Document-method: else
5009
+ * the expression to be evaluated if no exception is raised
5010
+ */
5011
+ rb_define_method(rb_cRESCUE, "else", node_else, 0);
5012
+ rb_ary_push(members, rb_str_new2("else"));
5114
5013
  }
5115
5014
 
5116
5015
  /* Document-class: Node::RETRY
@@ -5200,13 +5099,6 @@ void define_node_subclass_methods()
5200
5099
  rb_iv_set(rb_cSCOPE, "__type__", INT2NUM(NODE_SCOPE));
5201
5100
  rb_define_singleton_method(rb_cSCOPE, "members", node_s_members, 0);
5202
5101
 
5203
- /* Document-method: tbl
5204
- * the names of the local variables* next the first expression in
5205
- * the scope
5206
- */
5207
- rb_define_method(rb_cSCOPE, "tbl", node_tbl, 0);
5208
- rb_ary_push(members, rb_str_new2("tbl"));
5209
-
5210
5102
  /* Document-method: rval
5211
5103
  * holds information about which class(es) to search for constants
5212
5104
  * in this scope
@@ -5214,6 +5106,13 @@ void define_node_subclass_methods()
5214
5106
  rb_define_method(rb_cSCOPE, "rval", node_rval, 0);
5215
5107
  rb_ary_push(members, rb_str_new2("rval"));
5216
5108
 
5109
+ /* Document-method: tbl
5110
+ * the names of the local variables* next the first expression in
5111
+ * the scope
5112
+ */
5113
+ rb_define_method(rb_cSCOPE, "tbl", node_tbl, 0);
5114
+ rb_ary_push(members, rb_str_new2("tbl"));
5115
+
5217
5116
  /* Document-method: next
5218
5117
  * the body of the lexical scope
5219
5118
  */
@@ -5360,6 +5259,8 @@ void define_node_subclass_methods()
5360
5259
  rb_iv_set(rb_cUNTIL, "__member__", members);
5361
5260
  rb_iv_set(rb_cUNTIL, "__type__", INT2NUM(NODE_UNTIL));
5362
5261
  rb_define_singleton_method(rb_cUNTIL, "members", node_s_members, 0);
5262
+ rb_define_method(rb_cUNTIL, "state", node_state, 0);
5263
+ rb_ary_push(members, rb_str_new2("state"));
5363
5264
 
5364
5265
  /* Document-method: body
5365
5266
  * the body of the loop
@@ -5372,8 +5273,6 @@ void define_node_subclass_methods()
5372
5273
  */
5373
5274
  rb_define_method(rb_cUNTIL, "cond", node_cond, 0);
5374
5275
  rb_ary_push(members, rb_str_new2("cond"));
5375
- rb_define_method(rb_cUNTIL, "state", node_state, 0);
5376
- rb_ary_push(members, rb_str_new2("state"));
5377
5276
  }
5378
5277
 
5379
5278
  /* Document-class: Node::VALIAS
@@ -5389,10 +5288,10 @@ void define_node_subclass_methods()
5389
5288
  rb_iv_set(rb_cVALIAS, "__member__", members);
5390
5289
  rb_iv_set(rb_cVALIAS, "__type__", INT2NUM(NODE_VALIAS));
5391
5290
  rb_define_singleton_method(rb_cVALIAS, "members", node_s_members, 0);
5392
- rb_define_method(rb_cVALIAS, "first", node_1st, 0);
5393
- rb_ary_push(members, rb_str_new2("first"));
5394
5291
  rb_define_method(rb_cVALIAS, "second", node_2nd, 0);
5395
5292
  rb_ary_push(members, rb_str_new2("second"));
5293
+ rb_define_method(rb_cVALIAS, "first", node_1st, 0);
5294
+ rb_ary_push(members, rb_str_new2("first"));
5396
5295
  }
5397
5296
 
5398
5297
  /* Document-class: Node::VCALL
@@ -5484,6 +5383,8 @@ void define_node_subclass_methods()
5484
5383
  rb_iv_set(rb_cWHILE, "__member__", members);
5485
5384
  rb_iv_set(rb_cWHILE, "__type__", INT2NUM(NODE_WHILE));
5486
5385
  rb_define_singleton_method(rb_cWHILE, "members", node_s_members, 0);
5386
+ rb_define_method(rb_cWHILE, "state", node_state, 0);
5387
+ rb_ary_push(members, rb_str_new2("state"));
5487
5388
 
5488
5389
  /* Document-method: body
5489
5390
  * the body of the loop
@@ -5496,8 +5397,6 @@ void define_node_subclass_methods()
5496
5397
  */
5497
5398
  rb_define_method(rb_cWHILE, "cond", node_cond, 0);
5498
5399
  rb_ary_push(members, rb_str_new2("cond"));
5499
- rb_define_method(rb_cWHILE, "state", node_state, 0);
5500
- rb_ary_push(members, rb_str_new2("state"));
5501
5400
  }
5502
5401
 
5503
5402
  /* Document-class: Node::XSTR