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,108 @@
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
+ st_data_t data;
37
+
38
+ if (!st_lookup(rb_global_tbl, id, &data)) {
39
+ struct global_variable *var;
40
+ entry = ALLOC(struct global_entry);
41
+ var = ALLOC(struct global_variable);
42
+ entry->id = id;
43
+ entry->var = var;
44
+ var->counter = 1;
45
+ var->data = 0;
46
+ var->getter = undef_getter;
47
+ var->setter = undef_setter;
48
+ var->marker = undef_marker;
49
+
50
+ var->block_trace = 0;
51
+ var->trace = 0;
52
+ st_add_direct(rb_global_tbl, id, (st_data_t)entry);
53
+ }
54
+ else {
55
+ entry = (struct global_entry *)data;
56
+ }
57
+ return entry;
58
+ }
59
+ static VALUE
60
+ undef_getter(id)
61
+ ID id;
62
+ {
63
+ rb_warning("global variable `%s' not initialized", rb_id2name(id));
64
+
65
+ return Qnil;
66
+ }
67
+ static void
68
+ undef_setter(val, id, data, var)
69
+ VALUE val;
70
+ ID id;
71
+ void *data;
72
+ struct global_variable *var;
73
+ {
74
+ var->getter = val_getter;
75
+ var->setter = val_setter;
76
+ var->marker = val_marker;
77
+
78
+ var->data = (void*)val;
79
+ }
80
+ static void
81
+ undef_marker()
82
+ {
83
+ }
84
+ static VALUE
85
+ val_getter(id, val)
86
+ ID id;
87
+ VALUE val;
88
+ {
89
+ return val;
90
+ }
91
+ static void
92
+ val_setter(val, id, data, var)
93
+ VALUE val;
94
+ ID id;
95
+ void *data;
96
+ struct global_variable *var;
97
+ {
98
+ var->data = (void*)val;
99
+ }
100
+ static void
101
+ val_marker(data)
102
+ VALUE data;
103
+ {
104
+ if (data) rb_gc_mark_maybe(data);
105
+ }
8
106
 
9
107
  #endif
10
108
 
@@ -2,16 +2,16 @@
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
7
  { NODE_ALLOCA, NEN_CFNC, NEN_VALUE, NEN_CNT, "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_OPT, NEN_REST, NEN_CNT, "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_RECV, NEN_ARGS, NEN_MID, "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" },
@@ -20,78 +20,78 @@ Node_Type_Descrip node_type_descrips_unsorted[] = {
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" },
23
+ { NODE_CALL, NEN_RECV, NEN_ARGS, NEN_MID, "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_CPATH, NEN_SUPER, "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
- { 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_DEFN, NEN_NOEX, NEN_MID, "DEFN" },
39
+ { NODE_DEFS, NEN_DEFN, NEN_RECV, NEN_MID, "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" },
45
- { NODE_DSTR, NEN_LIT, NEN_NEXT, NEN_NONE, "DSTR" },
46
- { NODE_DSYM, NEN_LIT, NEN_NEXT, NEN_NONE, "DSYM" },
41
+ { NODE_DOT2, NEN_STATE, NEN_BEG, NEN_END, "DOT2" },
42
+ { NODE_DOT3, NEN_STATE, NEN_BEG, NEN_END, "DOT3" },
43
+ { NODE_DREGX, NEN_CFLAG, NEN_NEXT, NEN_LIT, "DREGX" },
44
+ { NODE_DREGX_ONCE, NEN_CFLAG, NEN_NEXT, NEN_LIT, "DREGX_ONCE" },
45
+ { NODE_DSTR, NEN_NEXT, NEN_LIT, NEN_NONE, "DSTR" },
46
+ { NODE_DSYM, NEN_NEXT, NEN_LIT, NEN_NONE, "DSYM" },
47
47
  { NODE_DVAR, NEN_VID, NEN_NONE, NEN_NONE, "DVAR" },
48
- { NODE_DXSTR, NEN_LIT, NEN_NEXT, NEN_NONE, "DXSTR" },
48
+ { NODE_DXSTR, NEN_NEXT, NEN_LIT, NEN_NONE, "DXSTR" },
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
52
  { NODE_FBODY, NEN_HEAD, NEN_ORIG, NEN_MID, "FBODY" },
53
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" },
54
+ { NODE_FLIP2, NEN_BEG, NEN_CNT, NEN_END, "FLIP2" },
55
+ { NODE_FLIP3, NEN_BEG, NEN_CNT, NEN_END, "FLIP3" },
56
56
  { NODE_FOR, NEN_BODY, NEN_ITER, NEN_VAR, "FOR" },
57
- { NODE_GASGN, NEN_VALUE, NEN_VID, NEN_ENTRY, "GASGN" },
57
+ { NODE_GASGN, NEN_VID, NEN_VALUE, NEN_ENTRY, "GASGN" },
58
58
  { NODE_GVAR, NEN_VID, NEN_ENTRY, 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_ELSE, NEN_BODY, NEN_COND, "IF" },
62
+ { NODE_IFUNC, NEN_CFNC, NEN_STATE, 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_VID, NEN_VALUE, NEN_CNT, "LASGN" },
66
66
  { NODE_LIT, NEN_LIT, NEN_NONE, NEN_NONE, "LIT" },
67
67
  { NODE_LVAR, NEN_VID, NEN_CNT, NEN_NONE, "LVAR" },
68
- { NODE_MASGN, NEN_ARGS, NEN_HEAD, NEN_VALUE, "MASGN" },
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" },
68
+ { NODE_MASGN, NEN_HEAD, NEN_VALUE, NEN_ARGS, "MASGN" },
69
+ { NODE_MATCH, NEN_VALUE, NEN_LIT, NEN_NONE, "MATCH" },
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" },
81
+ { NODE_OP_ASGN1, NEN_RECV, NEN_ARGS, NEN_MID, "OP_ASGN1" },
82
+ { NODE_OP_ASGN2, NEN_RECV, NEN_VALUE, NEN_NEXT, "OP_ASGN2" },
83
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" },
86
- { NODE_OR, NEN_1ST, NEN_2ND, NEN_NONE, "OR" },
84
+ { NODE_OP_ASGN_AND, NEN_RECV, NEN_VALUE, NEN_NONE, "OP_ASGN_AND" },
85
+ { NODE_OP_ASGN_OR, NEN_RECV, NEN_VALUE, NEN_AID, "OP_ASGN_OR" },
86
+ { NODE_OR, NEN_2ND, NEN_1ST, 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_HEAD, NEN_BODY, NEN_ARGS, "RESBODY" },
90
+ { NODE_RESCUE, NEN_ELSE, NEN_HEAD, NEN_RESQ, "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" },
94
- { NODE_SCOPE, NEN_TBL, NEN_RVAL, NEN_NEXT, "SCOPE" },
94
+ { NODE_SCOPE, NEN_RVAL, NEN_TBL, NEN_NEXT, "SCOPE" },
95
95
  { NODE_SELF, NEN_NONE, NEN_NONE, NEN_NONE, "SELF" },
96
96
  { NODE_SPLAT, NEN_HEAD, NEN_NONE, NEN_NONE, "SPLAT" },
97
97
  { NODE_STR, NEN_LIT, NEN_NONE, NEN_NONE, "STR" },
@@ -101,7 +101,7 @@ Node_Type_Descrip node_type_descrips_unsorted[] = {
101
101
  { NODE_TRUE, NEN_NONE, NEN_NONE, NEN_NONE, "TRUE" },
102
102
  { NODE_UNDEF, NEN_BODY, NEN_NONE, NEN_NONE, "UNDEF" },
103
103
  { NODE_UNTIL, NEN_BODY, NEN_COND, NEN_STATE, "UNTIL" },
104
- { NODE_VALIAS, NEN_1ST, NEN_2ND, NEN_NONE, "VALIAS" },
104
+ { NODE_VALIAS, NEN_2ND, NEN_1ST, NEN_NONE, "VALIAS" },
105
105
  { NODE_VCALL, NEN_MID, NEN_NONE, NEN_NONE, "VCALL" },
106
106
  { NODE_WHEN, NEN_HEAD, NEN_BODY, NEN_NEXT, "WHEN" },
107
107
  { NODE_WHILE, NEN_BODY, NEN_COND, NEN_STATE, "WHILE" },
@@ -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) =
@@ -2910,10 +2925,10 @@ void define_node_subclass_methods()
2910
2925
  rb_iv_set(rb_cALIAS, "__member__", members);
2911
2926
  rb_iv_set(rb_cALIAS, "__type__", INT2NUM(NODE_ALIAS));
2912
2927
  rb_define_singleton_method(rb_cALIAS, "members", node_s_members, 0);
2913
- rb_define_method(rb_cALIAS, "first", node_1st, 0);
2914
- rb_ary_push(members, rb_str_new2("first"));
2915
2928
  rb_define_method(rb_cALIAS, "second", node_2nd, 0);
2916
2929
  rb_ary_push(members, rb_str_new2("second"));
2930
+ rb_define_method(rb_cALIAS, "first", node_1st, 0);
2931
+ rb_ary_push(members, rb_str_new2("first"));
2917
2932
  }
2918
2933
 
2919
2934
  /* Document-class: Node::ALLOCA
@@ -2966,17 +2981,17 @@ void define_node_subclass_methods()
2966
2981
  rb_iv_set(rb_cAND, "__type__", INT2NUM(NODE_AND));
2967
2982
  rb_define_singleton_method(rb_cAND, "members", node_s_members, 0);
2968
2983
 
2969
- /* Document-method: first
2970
- * the expression on the left hand side
2971
- */
2972
- rb_define_method(rb_cAND, "first", node_1st, 0);
2973
- rb_ary_push(members, rb_str_new2("first"));
2974
-
2975
2984
  /* Document-method: second
2976
2985
  * the expression on the right hand side
2977
2986
  */
2978
2987
  rb_define_method(rb_cAND, "second", node_2nd, 0);
2979
2988
  rb_ary_push(members, rb_str_new2("second"));
2989
+
2990
+ /* Document-method: first
2991
+ * the expression on the left hand side
2992
+ */
2993
+ rb_define_method(rb_cAND, "first", node_1st, 0);
2994
+ rb_ary_push(members, rb_str_new2("first"));
2980
2995
  }
2981
2996
 
2982
2997
  /* Document-class: Node::ARGS
@@ -2990,12 +3005,6 @@ 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
 
2993
- /* Document-method: rest
2994
- * an assignment node to assign the rest arg, if it is present
2995
- */
2996
- rb_define_method(rb_cARGS, "rest", node_rest, 0);
2997
- rb_ary_push(members, rb_str_new2("rest"));
2998
-
2999
3008
  /* Document-method: opt
3000
3009
  * a list of assignment nodes to assign default values to the
3001
3010
  * optional arguments if no argument is specified
@@ -3003,6 +3012,12 @@ void define_node_subclass_methods()
3003
3012
  rb_define_method(rb_cARGS, "opt", node_opt, 0);
3004
3013
  rb_ary_push(members, rb_str_new2("opt"));
3005
3014
 
3015
+ /* Document-method: rest
3016
+ * an assignment node to assign the rest arg, if it is present
3017
+ */
3018
+ rb_define_method(rb_cARGS, "rest", node_rest, 0);
3019
+ rb_ary_push(members, rb_str_new2("rest"));
3020
+
3006
3021
  /* Document-method: cnt
3007
3022
  * the number of required arguments
3008
3023
  */
@@ -3103,6 +3118,12 @@ 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
 
3121
+ /* Document-method: recv
3122
+ * the receiver of the method
3123
+ */
3124
+ rb_define_method(rb_cATTRASGN, "recv", node_recv, 0);
3125
+ rb_ary_push(members, rb_str_new2("recv"));
3126
+
3106
3127
  /* Document-method: args
3107
3128
  * the arguments to the method
3108
3129
  */
@@ -3114,12 +3135,6 @@ void define_node_subclass_methods()
3114
3135
  */
3115
3136
  rb_define_method(rb_cATTRASGN, "mid", node_mid, 0);
3116
3137
  rb_ary_push(members, rb_str_new2("mid"));
3117
-
3118
- /* Document-method: recv
3119
- * the receiver of the method
3120
- */
3121
- rb_define_method(rb_cATTRASGN, "recv", node_recv, 0);
3122
- rb_ary_push(members, rb_str_new2("recv"));
3123
3138
  }
3124
3139
 
3125
3140
  /* Document-class: Node::ATTRSET
@@ -3325,6 +3340,12 @@ 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
 
3343
+ /* Document-method: recv
3344
+ * the receiver of the method
3345
+ */
3346
+ rb_define_method(rb_cCALL, "recv", node_recv, 0);
3347
+ rb_ary_push(members, rb_str_new2("recv"));
3348
+
3328
3349
  /* Document-method: args
3329
3350
  * the arguments to the method
3330
3351
  */
@@ -3336,12 +3357,6 @@ void define_node_subclass_methods()
3336
3357
  */
3337
3358
  rb_define_method(rb_cCALL, "mid", node_mid, 0);
3338
3359
  rb_ary_push(members, rb_str_new2("mid"));
3339
-
3340
- /* Document-method: recv
3341
- * the receiver of the method
3342
- */
3343
- rb_define_method(rb_cCALL, "recv", node_recv, 0);
3344
- rb_ary_push(members, rb_str_new2("recv"));
3345
3360
  }
3346
3361
 
3347
3362
  /* Document-class: Node::CASE
@@ -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,18 +3455,18 @@ 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
  */
3452
3461
  rb_define_method(rb_cCLASS, "body", node_body, 0);
3453
3462
  rb_ary_push(members, rb_str_new2("body"));
3454
3463
 
3464
+ /* Document-method: cpath
3465
+ * the name of the class to define
3466
+ */
3467
+ rb_define_method(rb_cCLASS, "cpath", node_cpath, 0);
3468
+ rb_ary_push(members, rb_str_new2("cpath"));
3469
+
3455
3470
  /* Document-method: super
3456
3471
  * an expression returning the base class, or false if there is no
3457
3472
  * base class specified
@@ -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
@@ -3732,17 +3747,17 @@ void define_node_subclass_methods()
3732
3747
  rb_define_method(rb_cDEFN, "defn", node_defn, 0);
3733
3748
  rb_ary_push(members, rb_str_new2("defn"));
3734
3749
 
3735
- /* Document-method: mid
3736
- * the name of the method* defn the body of the method
3737
- */
3738
- rb_define_method(rb_cDEFN, "mid", node_mid, 0);
3739
- rb_ary_push(members, rb_str_new2("mid"));
3740
-
3741
3750
  /* Document-method: noex
3742
3751
  * the flags which should be used to define the method
3743
3752
  */
3744
3753
  rb_define_method(rb_cDEFN, "noex", node_noex, 0);
3745
3754
  rb_ary_push(members, rb_str_new2("noex"));
3755
+
3756
+ /* Document-method: mid
3757
+ * the name of the method* defn the body of the method
3758
+ */
3759
+ rb_define_method(rb_cDEFN, "mid", node_mid, 0);
3760
+ rb_ary_push(members, rb_str_new2("mid"));
3746
3761
  }
3747
3762
 
3748
3763
  /* Document-class: Node::DEFS
@@ -3761,17 +3776,17 @@ void define_node_subclass_methods()
3761
3776
  rb_define_method(rb_cDEFS, "defn", node_defn, 0);
3762
3777
  rb_ary_push(members, rb_str_new2("defn"));
3763
3778
 
3764
- /* Document-method: mid
3765
- * the name of the method* defn the body of the method
3766
- */
3767
- rb_define_method(rb_cDEFS, "mid", node_mid, 0);
3768
- rb_ary_push(members, rb_str_new2("mid"));
3769
-
3770
3779
  /* Document-method: recv
3771
3780
  * the object to whose singleton class the new method is to be added
3772
3781
  */
3773
3782
  rb_define_method(rb_cDEFS, "recv", node_recv, 0);
3774
3783
  rb_ary_push(members, rb_str_new2("recv"));
3784
+
3785
+ /* Document-method: mid
3786
+ * the name of the method* defn the body of the method
3787
+ */
3788
+ rb_define_method(rb_cDEFS, "mid", node_mid, 0);
3789
+ rb_ary_push(members, rb_str_new2("mid"));
3775
3790
  }
3776
3791
 
3777
3792
  /* Document-class: Node::DMETHOD
@@ -3809,6 +3824,8 @@ 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);
3827
+ rb_define_method(rb_cDOT2, "state", node_state, 0);
3828
+ rb_ary_push(members, rb_str_new2("state"));
3812
3829
 
3813
3830
  /* Document-method: beg
3814
3831
  * the beginning of the range
@@ -3821,8 +3838,6 @@ void define_node_subclass_methods()
3821
3838
  */
3822
3839
  rb_define_method(rb_cDOT2, "end", node_end, 0);
3823
3840
  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"));
3826
3841
  }
3827
3842
 
3828
3843
  /* Document-class: Node::DOT3
@@ -3837,6 +3852,8 @@ 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);
3855
+ rb_define_method(rb_cDOT3, "state", node_state, 0);
3856
+ rb_ary_push(members, rb_str_new2("state"));
3840
3857
 
3841
3858
  /* Document-method: beg
3842
3859
  * the beginning of the range
@@ -3849,8 +3866,6 @@ void define_node_subclass_methods()
3849
3866
  */
3850
3867
  rb_define_method(rb_cDOT3, "end", node_end, 0);
3851
3868
  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"));
3854
3869
  }
3855
3870
 
3856
3871
  /* Document-class: Node::DREGX
@@ -3869,12 +3884,6 @@ void define_node_subclass_methods()
3869
3884
  rb_iv_set(rb_cDREGX, "__type__", INT2NUM(NODE_DREGX));
3870
3885
  rb_define_singleton_method(rb_cDREGX, "members", node_s_members, 0);
3871
3886
 
3872
- /* Document-method: lit
3873
- * a string
3874
- */
3875
- rb_define_method(rb_cDREGX, "lit", node_lit, 0);
3876
- rb_ary_push(members, rb_str_new2("lit"));
3877
-
3878
3887
  /* Document-method: cflag
3879
3888
  * a bitfield containing the options used in the regular
3880
3889
  * expression. Valid values include:
@@ -3897,6 +3906,12 @@ void define_node_subclass_methods()
3897
3906
  */
3898
3907
  rb_define_method(rb_cDREGX, "next", node_next, 0);
3899
3908
  rb_ary_push(members, rb_str_new2("next"));
3909
+
3910
+ /* Document-method: lit
3911
+ * a string
3912
+ */
3913
+ rb_define_method(rb_cDREGX, "lit", node_lit, 0);
3914
+ rb_ary_push(members, rb_str_new2("lit"));
3900
3915
  }
3901
3916
 
3902
3917
  /* Document-class: Node::DREGX_ONCE
@@ -3912,12 +3927,6 @@ void define_node_subclass_methods()
3912
3927
  rb_iv_set(rb_cDREGX_ONCE, "__type__", INT2NUM(NODE_DREGX_ONCE));
3913
3928
  rb_define_singleton_method(rb_cDREGX_ONCE, "members", node_s_members, 0);
3914
3929
 
3915
- /* Document-method: lit
3916
- * a string
3917
- */
3918
- rb_define_method(rb_cDREGX_ONCE, "lit", node_lit, 0);
3919
- rb_ary_push(members, rb_str_new2("lit"));
3920
-
3921
3930
  /* Document-method: cflag
3922
3931
  * a bitfield containing the options used in the regular
3923
3932
  * expression. See DREGX for a list of valid values.
@@ -3930,6 +3939,12 @@ void define_node_subclass_methods()
3930
3939
  */
3931
3940
  rb_define_method(rb_cDREGX_ONCE, "next", node_next, 0);
3932
3941
  rb_ary_push(members, rb_str_new2("next"));
3942
+
3943
+ /* Document-method: lit
3944
+ * a string
3945
+ */
3946
+ rb_define_method(rb_cDREGX_ONCE, "lit", node_lit, 0);
3947
+ rb_ary_push(members, rb_str_new2("lit"));
3933
3948
  }
3934
3949
 
3935
3950
  /* Document-class: Node::DSTR
@@ -3948,17 +3963,17 @@ void define_node_subclass_methods()
3948
3963
  rb_iv_set(rb_cDSTR, "__type__", INT2NUM(NODE_DSTR));
3949
3964
  rb_define_singleton_method(rb_cDSTR, "members", node_s_members, 0);
3950
3965
 
3951
- /* Document-method: lit
3952
- * a string
3953
- */
3954
- rb_define_method(rb_cDSTR, "lit", node_lit, 0);
3955
- rb_ary_push(members, rb_str_new2("lit"));
3956
-
3957
3966
  /* Document-method: next
3958
3967
  * a list of expressions to be appended onto the string
3959
3968
  */
3960
3969
  rb_define_method(rb_cDSTR, "next", node_next, 0);
3961
3970
  rb_ary_push(members, rb_str_new2("next"));
3971
+
3972
+ /* Document-method: lit
3973
+ * a string
3974
+ */
3975
+ rb_define_method(rb_cDSTR, "lit", node_lit, 0);
3976
+ rb_ary_push(members, rb_str_new2("lit"));
3962
3977
  }
3963
3978
 
3964
3979
  /* Document-class: Node::DSYM
@@ -3979,10 +3994,10 @@ void define_node_subclass_methods()
3979
3994
  rb_iv_set(rb_cDSYM, "__member__", members);
3980
3995
  rb_iv_set(rb_cDSYM, "__type__", INT2NUM(NODE_DSYM));
3981
3996
  rb_define_singleton_method(rb_cDSYM, "members", node_s_members, 0);
3982
- rb_define_method(rb_cDSYM, "lit", node_lit, 0);
3983
- rb_ary_push(members, rb_str_new2("lit"));
3984
3997
  rb_define_method(rb_cDSYM, "next", node_next, 0);
3985
3998
  rb_ary_push(members, rb_str_new2("next"));
3999
+ rb_define_method(rb_cDSYM, "lit", node_lit, 0);
4000
+ rb_ary_push(members, rb_str_new2("lit"));
3986
4001
  }
3987
4002
 
3988
4003
  /* Document-class: Node::DVAR
@@ -4025,17 +4040,17 @@ void define_node_subclass_methods()
4025
4040
  rb_iv_set(rb_cDXSTR, "__type__", INT2NUM(NODE_DXSTR));
4026
4041
  rb_define_singleton_method(rb_cDXSTR, "members", node_s_members, 0);
4027
4042
 
4028
- /* Document-method: lit
4029
- * a string
4030
- */
4031
- rb_define_method(rb_cDXSTR, "lit", node_lit, 0);
4032
- rb_ary_push(members, rb_str_new2("lit"));
4033
-
4034
4043
  /* Document-method: next
4035
4044
  * a list of expressions to be appended onto the string
4036
4045
  */
4037
4046
  rb_define_method(rb_cDXSTR, "next", node_next, 0);
4038
4047
  rb_ary_push(members, rb_str_new2("next"));
4048
+
4049
+ /* Document-method: lit
4050
+ * a string
4051
+ */
4052
+ rb_define_method(rb_cDXSTR, "lit", node_lit, 0);
4053
+ rb_ary_push(members, rb_str_new2("lit"));
4039
4054
  }
4040
4055
 
4041
4056
  /* Document-class: Node::ENSURE
@@ -4186,18 +4201,18 @@ void define_node_subclass_methods()
4186
4201
  rb_define_method(rb_cFLIP2, "beg", node_beg, 0);
4187
4202
  rb_ary_push(members, rb_str_new2("beg"));
4188
4203
 
4189
- /* Document-method: end
4190
- * the end of the range
4191
- */
4192
- rb_define_method(rb_cFLIP2, "end", node_end, 0);
4193
- rb_ary_push(members, rb_str_new2("end"));
4194
-
4195
4204
  /* Document-method: cnt
4196
4205
  * the index into the local variable table of the special variable
4197
4206
  * to use in the flip-flop expression (usually 2 for $_)
4198
4207
  */
4199
4208
  rb_define_method(rb_cFLIP2, "cnt", node_cnt, 0);
4200
4209
  rb_ary_push(members, rb_str_new2("cnt"));
4210
+
4211
+ /* Document-method: end
4212
+ * the end of the range
4213
+ */
4214
+ rb_define_method(rb_cFLIP2, "end", node_end, 0);
4215
+ rb_ary_push(members, rb_str_new2("end"));
4201
4216
  }
4202
4217
 
4203
4218
  /* Document-class: Node::FLIP3
@@ -4220,18 +4235,18 @@ void define_node_subclass_methods()
4220
4235
  rb_define_method(rb_cFLIP3, "beg", node_beg, 0);
4221
4236
  rb_ary_push(members, rb_str_new2("beg"));
4222
4237
 
4223
- /* Document-method: end
4224
- * the end of the range
4225
- */
4226
- rb_define_method(rb_cFLIP3, "end", node_end, 0);
4227
- rb_ary_push(members, rb_str_new2("end"));
4228
-
4229
4238
  /* Document-method: cnt
4230
4239
  * the index into the local variable table of the special variable
4231
4240
  * to use in the flip-flop expression (usually 2 for $_)
4232
4241
  */
4233
4242
  rb_define_method(rb_cFLIP3, "cnt", node_cnt, 0);
4234
4243
  rb_ary_push(members, rb_str_new2("cnt"));
4244
+
4245
+ /* Document-method: end
4246
+ * the end of the range
4247
+ */
4248
+ rb_define_method(rb_cFLIP3, "end", node_end, 0);
4249
+ rb_ary_push(members, rb_str_new2("end"));
4235
4250
  }
4236
4251
 
4237
4252
  /* Document-class: Node::FOR
@@ -4288,17 +4303,17 @@ void define_node_subclass_methods()
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
4305
 
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"));
4296
-
4297
4306
  /* Document-method: vid
4298
4307
  * the name of the global variable, with a leading '$' character.
4299
4308
  */
4300
4309
  rb_define_method(rb_cGASGN, "vid", node_vid, 0);
4301
4310
  rb_ary_push(members, rb_str_new2("vid"));
4311
+
4312
+ /* Document-method: value
4313
+ * an expression whose result is the new value of the global variable
4314
+ */
4315
+ rb_define_method(rb_cGASGN, "value", node_value, 0);
4316
+ rb_ary_push(members, rb_str_new2("value"));
4302
4317
  rb_define_method(rb_cGASGN, "entry", node_entry, 0);
4303
4318
  rb_ary_push(members, rb_str_new2("entry"));
4304
4319
  }
@@ -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,11 +4410,12 @@ 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
4413
+ /* Document-method: else
4414
+ * the expression to evaluate if the expression is false, or false
4415
+ * if the expression is empty
4400
4416
  */
4401
- rb_define_method(rb_cIF, "cond", node_cond, 0);
4402
- rb_ary_push(members, rb_str_new2("cond"));
4417
+ rb_define_method(rb_cIF, "else", node_else, 0);
4418
+ rb_ary_push(members, rb_str_new2("else"));
4403
4419
 
4404
4420
  /* Document-method: body
4405
4421
  * the expression to evaluate if the expression is true, or false
@@ -4408,12 +4424,11 @@ void define_node_subclass_methods()
4408
4424
  rb_define_method(rb_cIF, "body", node_body, 0);
4409
4425
  rb_ary_push(members, rb_str_new2("body"));
4410
4426
 
4411
- /* Document-method: else
4412
- * the expression to evaluate if the expression is false, or false
4413
- * if the expression is empty
4427
+ /* Document-method: cond
4428
+ * the condition to evaluate
4414
4429
  */
4415
- rb_define_method(rb_cIF, "else", node_else, 0);
4416
- rb_ary_push(members, rb_str_new2("else"));
4430
+ rb_define_method(rb_cIF, "cond", node_cond, 0);
4431
+ rb_ary_push(members, rb_str_new2("cond"));
4417
4432
  }
4418
4433
 
4419
4434
  /* Document-class: Node::IFUNC
@@ -4433,18 +4448,18 @@ void define_node_subclass_methods()
4433
4448
  rb_define_method(rb_cIFUNC, "cfnc", node_cfnc, 0);
4434
4449
  rb_ary_push(members, rb_str_new2("cfnc"));
4435
4450
 
4451
+ /* Document-method: state
4452
+ * always 0
4453
+ */
4454
+ rb_define_method(rb_cIFUNC, "state", node_state, 0);
4455
+ rb_ary_push(members, rb_str_new2("state"));
4456
+
4436
4457
  /* Document-method: tval
4437
4458
  * the user-specified data to be passed as the second argument to
4438
4459
  * cfnc
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
@@ -4522,17 +4537,17 @@ void define_node_subclass_methods()
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
4539
 
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"));
4530
-
4531
4540
  /* Document-method: vid
4532
4541
  * the name of the local variable
4533
4542
  */
4534
4543
  rb_define_method(rb_cLASGN, "vid", node_vid, 0);
4535
4544
  rb_ary_push(members, rb_str_new2("vid"));
4545
+
4546
+ /* Document-method: value
4547
+ * the value to assign to the local variable
4548
+ */
4549
+ rb_define_method(rb_cLASGN, "value", node_value, 0);
4550
+ rb_ary_push(members, rb_str_new2("value"));
4536
4551
  rb_define_method(rb_cLASGN, "cnt", node_cnt, 0);
4537
4552
  rb_ary_push(members, rb_str_new2("cnt"));
4538
4553
  }
@@ -4587,12 +4602,6 @@ void define_node_subclass_methods()
4587
4602
  rb_iv_set(rb_cMASGN, "__type__", INT2NUM(NODE_MASGN));
4588
4603
  rb_define_singleton_method(rb_cMASGN, "members", node_s_members, 0);
4589
4604
 
4590
- /* Document-method: args
4591
- * TODO
4592
- */
4593
- rb_define_method(rb_cMASGN, "args", node_args, 0);
4594
- rb_ary_push(members, rb_str_new2("args"));
4595
-
4596
4605
  /* Document-method: head
4597
4606
  * TODO
4598
4607
  */
@@ -4604,6 +4613,12 @@ void define_node_subclass_methods()
4604
4613
  */
4605
4614
  rb_define_method(rb_cMASGN, "value", node_value, 0);
4606
4615
  rb_ary_push(members, rb_str_new2("value"));
4616
+
4617
+ /* Document-method: args
4618
+ * TODO
4619
+ */
4620
+ rb_define_method(rb_cMASGN, "args", node_args, 0);
4621
+ rb_ary_push(members, rb_str_new2("args"));
4607
4622
  }
4608
4623
 
4609
4624
  /* Document-class: Node::MATCH
@@ -4628,17 +4643,17 @@ void define_node_subclass_methods()
4628
4643
  rb_iv_set(rb_cMATCH, "__type__", INT2NUM(NODE_MATCH));
4629
4644
  rb_define_singleton_method(rb_cMATCH, "members", node_s_members, 0);
4630
4645
 
4631
- /* Document-method: lit
4632
- * the regular expression to use in the condition.
4633
- */
4634
- rb_define_method(rb_cMATCH, "lit", node_lit, 0);
4635
- rb_ary_push(members, rb_str_new2("lit"));
4636
-
4637
4646
  /* Document-method: value
4638
4647
  * the value to compare against
4639
4648
  */
4640
4649
  rb_define_method(rb_cMATCH, "value", node_value, 0);
4641
4650
  rb_ary_push(members, rb_str_new2("value"));
4651
+
4652
+ /* Document-method: lit
4653
+ * the regular expression to use in the condition.
4654
+ */
4655
+ rb_define_method(rb_cMATCH, "lit", node_lit, 0);
4656
+ rb_ary_push(members, rb_str_new2("lit"));
4642
4657
  }
4643
4658
 
4644
4659
  /* Document-class: Node::MATCH2
@@ -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,6 +4943,12 @@ 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
 
4946
+ /* Document-method: recv
4947
+ * the receiver of the assignment
4948
+ */
4949
+ rb_define_method(rb_cOP_ASGN1, "recv", node_recv, 0);
4950
+ rb_ary_push(members, rb_str_new2("recv"));
4951
+
4931
4952
  /* Document-method: args
4932
4953
  * the arguments to the assigment
4933
4954
  */
@@ -4940,12 +4961,6 @@ void define_node_subclass_methods()
4940
4961
  */
4941
4962
  rb_define_method(rb_cOP_ASGN1, "mid", node_mid, 0);
4942
4963
  rb_ary_push(members, rb_str_new2("mid"));
4943
-
4944
- /* Document-method: recv
4945
- * the receiver of the assignment
4946
- */
4947
- rb_define_method(rb_cOP_ASGN1, "recv", node_recv, 0);
4948
- rb_ary_push(members, rb_str_new2("recv"));
4949
4964
  }
4950
4965
 
4951
4966
  /* Document-class: Node::OP_ASGN2
@@ -4968,6 +4983,12 @@ 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
 
4986
+ /* Document-method: recv
4987
+ * the receiver of the attribute
4988
+ */
4989
+ rb_define_method(rb_cOP_ASGN2, "recv", node_recv, 0);
4990
+ rb_ary_push(members, rb_str_new2("recv"));
4991
+
4971
4992
  /* Document-method: value
4972
4993
  * the value to assign to the attribute
4973
4994
  */
@@ -4980,12 +5001,6 @@ void define_node_subclass_methods()
4980
5001
  */
4981
5002
  rb_define_method(rb_cOP_ASGN2, "next", node_next, 0);
4982
5003
  rb_ary_push(members, rb_str_new2("next"));
4983
-
4984
- /* Document-method: recv
4985
- * the receiver of the attribute
4986
- */
4987
- rb_define_method(rb_cOP_ASGN2, "recv", node_recv, 0);
4988
- rb_ary_push(members, rb_str_new2("recv"));
4989
5004
  }
4990
5005
 
4991
5006
  /* Document-class: Node::OP_ASGN2_ARG
@@ -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
@@ -5068,13 +5083,11 @@ void define_node_subclass_methods()
5068
5083
  rb_iv_set(rb_cOP_ASGN_OR, "__type__", INT2NUM(NODE_OP_ASGN_OR));
5069
5084
  rb_define_singleton_method(rb_cOP_ASGN_OR, "members", node_s_members, 0);
5070
5085
 
5071
- /* Document-method: aid
5072
- * if this indicator is nonzero, ruby will check to see if the
5073
- * provided expression is defined, otherwise it will assume that
5074
- * the provided expression is defined.
5086
+ /* Document-method: recv
5087
+ * the receiver of the assignment
5075
5088
  */
5076
- rb_define_method(rb_cOP_ASGN_OR, "aid", node_aid, 0);
5077
- rb_ary_push(members, rb_str_new2("aid"));
5089
+ rb_define_method(rb_cOP_ASGN_OR, "recv", node_recv, 0);
5090
+ rb_ary_push(members, rb_str_new2("recv"));
5078
5091
 
5079
5092
  /* Document-method: value
5080
5093
  * the right hand side of the assignment
@@ -5082,11 +5095,13 @@ void define_node_subclass_methods()
5082
5095
  rb_define_method(rb_cOP_ASGN_OR, "value", node_value, 0);
5083
5096
  rb_ary_push(members, rb_str_new2("value"));
5084
5097
 
5085
- /* Document-method: recv
5086
- * the receiver of the assignment
5098
+ /* Document-method: aid
5099
+ * if this indicator is nonzero, ruby will check to see if the
5100
+ * provided expression is defined, otherwise it will assume that
5101
+ * the provided expression is defined.
5087
5102
  */
5088
- rb_define_method(rb_cOP_ASGN_OR, "recv", node_recv, 0);
5089
- rb_ary_push(members, rb_str_new2("recv"));
5103
+ rb_define_method(rb_cOP_ASGN_OR, "aid", node_aid, 0);
5104
+ rb_ary_push(members, rb_str_new2("aid"));
5090
5105
  }
5091
5106
 
5092
5107
  /* Document-class: Node::OR
@@ -5104,17 +5119,17 @@ void define_node_subclass_methods()
5104
5119
  rb_iv_set(rb_cOR, "__type__", INT2NUM(NODE_OR));
5105
5120
  rb_define_singleton_method(rb_cOR, "members", node_s_members, 0);
5106
5121
 
5107
- /* Document-method: first
5108
- * the expression on the left hand side
5109
- */
5110
- rb_define_method(rb_cOR, "first", node_1st, 0);
5111
- rb_ary_push(members, rb_str_new2("first"));
5112
-
5113
5122
  /* Document-method: second
5114
5123
  * the expression on the right hand side
5115
5124
  */
5116
5125
  rb_define_method(rb_cOR, "second", node_2nd, 0);
5117
5126
  rb_ary_push(members, rb_str_new2("second"));
5127
+
5128
+ /* Document-method: first
5129
+ * the expression on the left hand side
5130
+ */
5131
+ rb_define_method(rb_cOR, "first", node_1st, 0);
5132
+ rb_ary_push(members, rb_str_new2("first"));
5118
5133
  }
5119
5134
 
5120
5135
  /* Document-class: Node::POSTEXE
@@ -5172,17 +5187,17 @@ void define_node_subclass_methods()
5172
5187
  rb_define_method(rb_cRESBODY, "head", node_head, 0);
5173
5188
  rb_ary_push(members, rb_str_new2("head"));
5174
5189
 
5175
- /* Document-method: args
5176
- * the expression type to match against
5177
- */
5178
- rb_define_method(rb_cRESBODY, "args", node_args, 0);
5179
- rb_ary_push(members, rb_str_new2("args"));
5180
-
5181
5190
  /* Document-method: body
5182
5191
  * the expresion to evaluate if the exception type matches
5183
5192
  */
5184
5193
  rb_define_method(rb_cRESBODY, "body", node_body, 0);
5185
5194
  rb_ary_push(members, rb_str_new2("body"));
5195
+
5196
+ /* Document-method: args
5197
+ * the expression type to match against
5198
+ */
5199
+ rb_define_method(rb_cRESBODY, "args", node_args, 0);
5200
+ rb_ary_push(members, rb_str_new2("args"));
5186
5201
  }
5187
5202
 
5188
5203
  /* Document-class: Node::RESCUE
@@ -5222,18 +5237,18 @@ 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
 
5225
- /* Document-method: head
5226
- * the body of the block to evaluate
5227
- */
5228
- rb_define_method(rb_cRESCUE, "head", node_head, 0);
5229
- rb_ary_push(members, rb_str_new2("head"));
5230
-
5231
5240
  /* Document-method: else
5232
5241
  * the expression to be evaluated if no exception is raised
5233
5242
  */
5234
5243
  rb_define_method(rb_cRESCUE, "else", node_else, 0);
5235
5244
  rb_ary_push(members, rb_str_new2("else"));
5236
5245
 
5246
+ /* Document-method: head
5247
+ * the body of the block to evaluate
5248
+ */
5249
+ rb_define_method(rb_cRESCUE, "head", node_head, 0);
5250
+ rb_ary_push(members, rb_str_new2("head"));
5251
+
5237
5252
  /* Document-method: resq
5238
5253
  * the expression to be evaluated if an exception is raised
5239
5254
  */
@@ -5328,13 +5343,6 @@ void define_node_subclass_methods()
5328
5343
  rb_iv_set(rb_cSCOPE, "__type__", INT2NUM(NODE_SCOPE));
5329
5344
  rb_define_singleton_method(rb_cSCOPE, "members", node_s_members, 0);
5330
5345
 
5331
- /* Document-method: tbl
5332
- * the names of the local variables* next the first expression in
5333
- * the scope
5334
- */
5335
- rb_define_method(rb_cSCOPE, "tbl", node_tbl, 0);
5336
- rb_ary_push(members, rb_str_new2("tbl"));
5337
-
5338
5346
  /* Document-method: rval
5339
5347
  * holds information about which class(es) to search for constants
5340
5348
  * in this scope
@@ -5342,6 +5350,13 @@ void define_node_subclass_methods()
5342
5350
  rb_define_method(rb_cSCOPE, "rval", node_rval, 0);
5343
5351
  rb_ary_push(members, rb_str_new2("rval"));
5344
5352
 
5353
+ /* Document-method: tbl
5354
+ * the names of the local variables* next the first expression in
5355
+ * the scope
5356
+ */
5357
+ rb_define_method(rb_cSCOPE, "tbl", node_tbl, 0);
5358
+ rb_ary_push(members, rb_str_new2("tbl"));
5359
+
5345
5360
  /* Document-method: next
5346
5361
  * the body of the lexical scope
5347
5362
  */
@@ -5542,10 +5557,10 @@ void define_node_subclass_methods()
5542
5557
  rb_iv_set(rb_cVALIAS, "__member__", members);
5543
5558
  rb_iv_set(rb_cVALIAS, "__type__", INT2NUM(NODE_VALIAS));
5544
5559
  rb_define_singleton_method(rb_cVALIAS, "members", node_s_members, 0);
5545
- rb_define_method(rb_cVALIAS, "first", node_1st, 0);
5546
- rb_ary_push(members, rb_str_new2("first"));
5547
5560
  rb_define_method(rb_cVALIAS, "second", node_2nd, 0);
5548
5561
  rb_ary_push(members, rb_str_new2("second"));
5562
+ rb_define_method(rb_cVALIAS, "first", node_1st, 0);
5563
+ rb_ary_push(members, rb_str_new2("first"));
5549
5564
  }
5550
5565
 
5551
5566
  /* Document-class: Node::VCALL