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 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