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