rubyduino 0.1.3 → 0.2.1

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 (1628) hide show
  1. checksums.yaml +4 -4
  2. data/.gitmodules +1 -0
  3. data/CHANGELOG.md +12 -0
  4. data/README.md +1 -2
  5. data/examples/hc_sr04.rb +39 -0
  6. data/lib/rubyduino/arduino_uno.rb +76 -0
  7. data/lib/rubyduino/sp_runtime.h +287 -0
  8. data/lib/rubyduino/spinel.rb +1 -1
  9. data/lib/rubyduino/spinel_arduino_codegen.rb +53 -13
  10. data/lib/rubyduino/version.rb +1 -1
  11. data/vendor/spinel/Makefile +463 -54
  12. data/vendor/spinel/README.md +248 -68
  13. data/vendor/spinel/benchmark/bm_jekyll_lite.rb +241 -0
  14. data/vendor/spinel/benchmark/bm_micro_lisp.rb +282 -0
  15. data/vendor/spinel/benchmark/bm_poly_cells.rb +75 -0
  16. data/vendor/spinel/benchmark/bm_range_each.rb +15 -0
  17. data/vendor/spinel/benchmark/bm_sinatra_mini.rb +126 -0
  18. data/vendor/spinel/compiler_helpers.rb +1506 -0
  19. data/vendor/spinel/docs/ANALYZE-IR.md +411 -0
  20. data/vendor/spinel/docs/AST.md +360 -0
  21. data/vendor/spinel/docs/CLASS-OBJECT.md +521 -0
  22. data/vendor/spinel/docs/FFI.md +9 -0
  23. data/vendor/spinel/docs/FLOAT-ROUNDING.md +47 -0
  24. data/vendor/spinel/docs/HASH-NULLABLE.md +379 -0
  25. data/vendor/spinel/docs/INCOMPATIBILITIES.md +102 -0
  26. data/vendor/spinel/docs/RBS-EXTRACT.md +128 -0
  27. data/vendor/spinel/docs/fast-bootstrap.md +74 -0
  28. data/vendor/spinel/docs/issue-646-plan.md +159 -0
  29. data/vendor/spinel/docs/promote-mode-plan.md +227 -0
  30. data/vendor/spinel/docs/setbyte-semantic-plan.md +203 -0
  31. data/vendor/spinel/examples/ffi/sqlite/README.md +7 -6
  32. data/vendor/spinel/examples/ffi/sqlite/sqlite3_lib.rb +7 -4
  33. data/vendor/spinel/experiments/rbs/box.rb +32 -0
  34. data/vendor/spinel/experiments/rbs/box.seed +18 -0
  35. data/vendor/spinel/experiments/rbs/harness.rb +117 -0
  36. data/vendor/spinel/lib/regexp/re_compile.c +265 -25
  37. data/vendor/spinel/lib/regexp/re_exec.c +80 -19
  38. data/vendor/spinel/lib/regexp/re_internal.h +22 -2
  39. data/vendor/spinel/lib/regexp/re_utf8.c +21 -2
  40. data/vendor/spinel/lib/sp_bigint.c +67 -3
  41. data/vendor/spinel/lib/sp_core.c +248 -0
  42. data/vendor/spinel/lib/sp_core.h +37 -0
  43. data/vendor/spinel/lib/sp_crypto.c +583 -0
  44. data/vendor/spinel/lib/sp_crypto.h +79 -0
  45. data/vendor/spinel/lib/sp_fiber.c +95 -0
  46. data/vendor/spinel/lib/sp_fiber.h +41 -0
  47. data/vendor/spinel/lib/sp_gc.c +89 -0
  48. data/vendor/spinel/lib/sp_gc.h +81 -0
  49. data/vendor/spinel/lib/sp_io.c +98 -0
  50. data/vendor/spinel/lib/sp_io.h +31 -0
  51. data/vendor/spinel/lib/sp_net.c +350 -0
  52. data/vendor/spinel/lib/sp_net.h +97 -0
  53. data/vendor/spinel/lib/sp_pack.c +431 -0
  54. data/vendor/spinel/lib/sp_runtime.h +3485 -341
  55. data/vendor/spinel/lib/sp_strscan.c +320 -0
  56. data/vendor/spinel/lib/sp_system.c +173 -0
  57. data/vendor/spinel/lib/sp_system.h +16 -0
  58. data/vendor/spinel/lib/sp_time.c +204 -0
  59. data/vendor/spinel/lib/sp_time.h +63 -0
  60. data/vendor/spinel/lib/sp_types.h +144 -0
  61. data/vendor/spinel/lib/stringio.c +31 -3
  62. data/vendor/spinel/lib/strscan.c +34 -7
  63. data/vendor/spinel/lib/strscan.rb +6 -53
  64. data/vendor/spinel/node_table_loader.rb +150 -0
  65. data/vendor/spinel/spinel +319 -21
  66. data/vendor/spinel/spinel_analyze.rb +37556 -0
  67. data/vendor/spinel/spinel_codegen.rb +47620 -33346
  68. data/vendor/spinel/spinel_parse +0 -0
  69. data/vendor/spinel/spinel_parse.c +801 -91
  70. data/vendor/spinel/spinel_rbs_extract.c +931 -0
  71. data/vendor/spinel/test/alias_attr_reader_source.rb +38 -0
  72. data/vendor/spinel/test/alias_attr_reader_source.rb.expected +7 -0
  73. data/vendor/spinel/test/alias_inherited_method.rb +20 -0
  74. data/vendor/spinel/test/alias_inherited_method.rb.expected +3 -0
  75. data/vendor/spinel/test/alias_method_dispatch.rb +14 -0
  76. data/vendor/spinel/test/analyze_fail/attributes_non_symbol.rb +3 -0
  77. data/vendor/spinel/test/analyze_fail/attributes_non_symbol.stderr.expected +1 -0
  78. data/vendor/spinel/test/analyze_fail/dynamic_define_method.rb +4 -0
  79. data/vendor/spinel/test/analyze_fail/dynamic_define_method.stderr.expected +1 -0
  80. data/vendor/spinel/test/analyze_fail/instance_exec_def_in_block.rb +14 -0
  81. data/vendor/spinel/test/analyze_fail/instance_exec_def_in_block.stderr.expected +1 -0
  82. data/vendor/spinel/test/analyze_fail/instance_exec_define_method.rb +15 -0
  83. data/vendor/spinel/test/analyze_fail/instance_exec_define_method.stderr.expected +1 -0
  84. data/vendor/spinel/test/analyze_fail/instance_exec_no_block.rb +13 -0
  85. data/vendor/spinel/test/analyze_fail/instance_exec_no_block.stderr.expected +1 -0
  86. data/vendor/spinel/test/analyze_fail/nonliteral_define_method_each.rb +7 -0
  87. data/vendor/spinel/test/analyze_fail/nonliteral_define_method_each.stderr.expected +1 -0
  88. data/vendor/spinel/test/argv_gc.rb +45 -0
  89. data/vendor/spinel/test/argv_gc.rb.args +1 -0
  90. data/vendor/spinel/test/argv_gc.rb.expected +6 -0
  91. data/vendor/spinel/test/array_at_out_of_bounds.rb +23 -0
  92. data/vendor/spinel/test/array_at_out_of_bounds.rb.expected +12 -0
  93. data/vendor/spinel/test/array_clear_expr.rb +26 -0
  94. data/vendor/spinel/test/array_clear_expr.rb.expected +10 -0
  95. data/vendor/spinel/test/array_combination_block.rb +11 -0
  96. data/vendor/spinel/test/array_compact_eq.rb +16 -0
  97. data/vendor/spinel/test/array_compact_eq.rb.expected +10 -0
  98. data/vendor/spinel/test/array_fill_poly.rb.expected +1 -0
  99. data/vendor/spinel/test/array_first_last_empty.rb +12 -0
  100. data/vendor/spinel/test/array_first_last_empty.rb.expected +8 -0
  101. data/vendor/spinel/test/array_flatten_typed_elements.rb +19 -0
  102. data/vendor/spinel/test/array_frozen_mutate_raises.rb +36 -0
  103. data/vendor/spinel/test/array_frozen_mutate_raises.rb.expected +20 -0
  104. data/vendor/spinel/test/array_frozen_slice_bang.rb +19 -0
  105. data/vendor/spinel/test/array_frozen_slice_bang.rb.expected +2 -0
  106. data/vendor/spinel/test/array_get_oob_negative.rb +22 -0
  107. data/vendor/spinel/test/array_get_oob_negative.rb.expected +6 -0
  108. data/vendor/spinel/test/array_grep.rb +12 -0
  109. data/vendor/spinel/test/array_grep.rb.expected +8 -0
  110. data/vendor/spinel/test/array_index_int_opt_narrow.rb +30 -0
  111. data/vendor/spinel/test/array_index_int_opt_narrow.rb.expected +7 -0
  112. data/vendor/spinel/test/array_map_bang.rb +28 -0
  113. data/vendor/spinel/test/array_map_bang.rb.expected +7 -0
  114. data/vendor/spinel/test/array_minmax_block.rb +14 -0
  115. data/vendor/spinel/test/array_negative_index_too_small.rb +22 -0
  116. data/vendor/spinel/test/array_negative_index_too_small.rb.expected +5 -0
  117. data/vendor/spinel/test/array_object_id.rb +12 -0
  118. data/vendor/spinel/test/array_object_id.rb.expected +6 -0
  119. data/vendor/spinel/test/array_pack_returns_string.expected +2 -0
  120. data/vendor/spinel/test/array_pack_returns_string.rb +4 -0
  121. data/vendor/spinel/test/array_pack_string_unpack.rb +12 -0
  122. data/vendor/spinel/test/array_pattern_match_basic.rb +27 -0
  123. data/vendor/spinel/test/array_predicate_no_block.rb +14 -0
  124. data/vendor/spinel/test/array_predicate_no_block.rb.expected +11 -0
  125. data/vendor/spinel/test/array_predicate_no_block_param.rb +14 -0
  126. data/vendor/spinel/test/array_predicate_no_block_param.rb.expected +10 -0
  127. data/vendor/spinel/test/array_product.rb +5 -0
  128. data/vendor/spinel/test/array_push_multi_arg.rb +32 -0
  129. data/vendor/spinel/test/array_push_multi_arg.rb.expected +10 -0
  130. data/vendor/spinel/test/array_select_bang.rb +34 -0
  131. data/vendor/spinel/test/array_select_bang.rb.expected +8 -0
  132. data/vendor/spinel/test/array_slice_before_after.rb +6 -0
  133. data/vendor/spinel/test/array_slice_when_chunk.rb +7 -0
  134. data/vendor/spinel/test/array_to_h_sort_bang_block.rb +26 -0
  135. data/vendor/spinel/test/array_to_h_sort_bang_block.rb.expected +10 -0
  136. data/vendor/spinel/test/array_transpose_poly_elements.rb +34 -0
  137. data/vendor/spinel/test/array_transpose_typed_elements.rb +19 -0
  138. data/vendor/spinel/test/array_unresolved_inspect_no_segv.rb +9 -0
  139. data/vendor/spinel/test/array_unresolved_inspect_no_segv.rb.expected +2 -0
  140. data/vendor/spinel/test/at_exit_lifo.rb +6 -0
  141. data/vendor/spinel/test/at_exit_lifo.rb.expected +4 -0
  142. data/vendor/spinel/test/back_ref.rb +15 -1
  143. data/vendor/spinel/test/back_ref.rb.expected +5 -0
  144. data/vendor/spinel/test/bang_op_ruby_truthy.expected +7 -0
  145. data/vendor/spinel/test/bang_op_ruby_truthy.rb +10 -0
  146. data/vendor/spinel/test/bare_arg_in_module_body.rb +29 -0
  147. data/vendor/spinel/test/bare_sibling_cls_method_call.rb +67 -0
  148. data/vendor/spinel/test/bare_sibling_cls_method_call.rb.expected +4 -0
  149. data/vendor/spinel/test/begin_rescue_as_expression.expected +5 -0
  150. data/vendor/spinel/test/begin_rescue_as_expression.rb +14 -0
  151. data/vendor/spinel/test/begin_rescue_else_clause.rb +63 -0
  152. data/vendor/spinel/test/begin_rescue_else_clause.rb.expected +7 -0
  153. data/vendor/spinel/test/bigint_propagation_chain.rb +33 -0
  154. data/vendor/spinel/test/bigint_propagation_chain.rb.expected +9 -0
  155. data/vendor/spinel/test/bigint_volatile_combo.rb +69 -0
  156. data/vendor/spinel/test/bigint_volatile_combo.rb.expected +18 -0
  157. data/vendor/spinel/test/block_given_block_param.rb +21 -3
  158. data/vendor/spinel/test/block_given_block_param.rb.expected +2 -0
  159. data/vendor/spinel/test/block_given_inline_call_site.expected +2 -0
  160. data/vendor/spinel/test/block_given_inline_call_site.rb +9 -0
  161. data/vendor/spinel/test/block_optional_unused.rb +18 -0
  162. data/vendor/spinel/test/block_optional_unused.rb.expected +4 -0
  163. data/vendor/spinel/test/block_param_call_block_given.rb +46 -0
  164. data/vendor/spinel/test/block_param_call_block_given.rb.expected +6 -0
  165. data/vendor/spinel/test/block_param_call_value_return.rb +32 -0
  166. data/vendor/spinel/test/block_param_call_value_return.rb.expected +5 -0
  167. data/vendor/spinel/test/bm_instance_eval.rb +9 -8
  168. data/vendor/spinel/test/bool_case_equality.rb +10 -0
  169. data/vendor/spinel/test/bool_logical_operators.rb +9 -0
  170. data/vendor/spinel/test/bool_logical_operators.rb.expected +8 -0
  171. data/vendor/spinel/test/builtin_array_method_capture.rb +38 -0
  172. data/vendor/spinel/test/builtin_array_method_capture.rb.expected +11 -0
  173. data/vendor/spinel/test/bundle_array_e.rb +250 -0
  174. data/vendor/spinel/test/bundle_array_e.rb.expected +57 -0
  175. data/vendor/spinel/test/bundle_array_f.rb +169 -0
  176. data/vendor/spinel/test/bundle_class_01.rb +43 -0
  177. data/vendor/spinel/test/bundle_class_01.rb.expected +4 -0
  178. data/vendor/spinel/test/bundle_class_03.rb +57 -0
  179. data/vendor/spinel/test/bundle_class_03.rb.expected +6 -0
  180. data/vendor/spinel/test/bundle_class_05.rb +187 -0
  181. data/vendor/spinel/test/bundle_class_05.rb.expected +14 -0
  182. data/vendor/spinel/test/bundle_class_06.rb +201 -0
  183. data/vendor/spinel/test/bundle_class_06.rb.expected +12 -0
  184. data/vendor/spinel/test/bundle_class_07.rb +72 -0
  185. data/vendor/spinel/test/bundle_class_07.rb.expected +6 -0
  186. data/vendor/spinel/test/bundle_class_08.rb +101 -0
  187. data/vendor/spinel/test/bundle_class_08.rb.expected +9 -0
  188. data/vendor/spinel/test/bundle_class_09.rb +171 -0
  189. data/vendor/spinel/test/bundle_class_09.rb.expected +9 -0
  190. data/vendor/spinel/test/bundle_class_10.rb +189 -0
  191. data/vendor/spinel/test/bundle_class_10.rb.expected +5 -0
  192. data/vendor/spinel/test/bundle_class_11.rb +191 -0
  193. data/vendor/spinel/test/bundle_class_11.rb.expected +8 -0
  194. data/vendor/spinel/test/bundle_class_12.rb +234 -0
  195. data/vendor/spinel/test/bundle_class_12.rb.expected +15 -0
  196. data/vendor/spinel/test/bundle_class_13.rb +61 -0
  197. data/vendor/spinel/test/bundle_class_13.rb.expected +2 -0
  198. data/vendor/spinel/test/bundle_class_14.rb +162 -0
  199. data/vendor/spinel/test/bundle_class_14.rb.expected +10 -0
  200. data/vendor/spinel/test/bundle_class_15.rb +184 -0
  201. data/vendor/spinel/test/bundle_class_15.rb.expected +8 -0
  202. data/vendor/spinel/test/bundle_class_18.rb +101 -0
  203. data/vendor/spinel/test/bundle_class_18.rb.expected +13 -0
  204. data/vendor/spinel/test/bundle_class_19.rb +67 -0
  205. data/vendor/spinel/test/bundle_class_19.rb.expected +8 -0
  206. data/vendor/spinel/test/bundle_class_20.rb +122 -0
  207. data/vendor/spinel/test/bundle_class_20.rb.expected +6 -0
  208. data/vendor/spinel/test/bundle_class_21.rb +208 -0
  209. data/vendor/spinel/test/bundle_class_21.rb.expected +27 -0
  210. data/vendor/spinel/test/bundle_class_22.rb +218 -0
  211. data/vendor/spinel/test/bundle_class_22.rb.expected +23 -0
  212. data/vendor/spinel/test/bundle_class_23.rb +187 -0
  213. data/vendor/spinel/test/bundle_class_23.rb.expected +19 -0
  214. data/vendor/spinel/test/bundle_class_a.rb +111 -0
  215. data/vendor/spinel/test/bundle_class_a.rb.expected +14 -0
  216. data/vendor/spinel/test/bundle_classd_04.rb +149 -0
  217. data/vendor/spinel/test/bundle_classd_04.rb.expected +15 -0
  218. data/vendor/spinel/test/bundle_classd_05.rb +65 -0
  219. data/vendor/spinel/test/bundle_classd_05.rb.expected +15 -0
  220. data/vendor/spinel/test/bundle_classd_08.rb +44 -0
  221. data/vendor/spinel/test/bundle_classd_08.rb.expected +4 -0
  222. data/vendor/spinel/test/bundle_classd_09.rb +221 -0
  223. data/vendor/spinel/test/bundle_classd_09.rb.expected +16 -0
  224. data/vendor/spinel/test/bundle_classd_10.rb +77 -0
  225. data/vendor/spinel/test/bundle_classd_10.rb.expected +10 -0
  226. data/vendor/spinel/test/bundle_classd_11.rb +89 -0
  227. data/vendor/spinel/test/bundle_classd_11.rb.expected +6 -0
  228. data/vendor/spinel/test/bundle_classd_12.rb +211 -0
  229. data/vendor/spinel/test/bundle_classd_12.rb.expected +19 -0
  230. data/vendor/spinel/test/bundle_classd_13.rb +246 -0
  231. data/vendor/spinel/test/bundle_classd_13.rb.expected +20 -0
  232. data/vendor/spinel/test/bundle_classd_14.rb +72 -0
  233. data/vendor/spinel/test/bundle_classd_14.rb.expected +10 -0
  234. data/vendor/spinel/test/bundle_classd_17.rb +206 -0
  235. data/vendor/spinel/test/bundle_classd_17.rb.expected +17 -0
  236. data/vendor/spinel/test/bundle_classd_18.rb +89 -0
  237. data/vendor/spinel/test/bundle_classd_18.rb.expected +3 -0
  238. data/vendor/spinel/test/bundle_classd_19.rb +134 -0
  239. data/vendor/spinel/test/bundle_classd_19.rb.expected +23 -0
  240. data/vendor/spinel/test/bundle_classd_26.rb +103 -0
  241. data/vendor/spinel/test/bundle_classd_26.rb.expected +7 -0
  242. data/vendor/spinel/test/bundle_classd_27.rb +241 -0
  243. data/vendor/spinel/test/bundle_classd_27.rb.expected +15 -0
  244. data/vendor/spinel/test/bundle_classd_28.rb +80 -0
  245. data/vendor/spinel/test/bundle_classd_28.rb.expected +10 -0
  246. data/vendor/spinel/test/bundle_classd_32.rb +63 -0
  247. data/vendor/spinel/test/bundle_classd_32.rb.expected +7 -0
  248. data/vendor/spinel/test/bundle_classd_33.rb +117 -0
  249. data/vendor/spinel/test/bundle_classd_33.rb.expected +17 -0
  250. data/vendor/spinel/test/bundle_classd_35.rb +90 -0
  251. data/vendor/spinel/test/bundle_classd_35.rb.expected +5 -0
  252. data/vendor/spinel/test/bundle_classd_36.rb +97 -0
  253. data/vendor/spinel/test/bundle_classd_36.rb.expected +5 -0
  254. data/vendor/spinel/test/bundle_classd_38.rb +50 -0
  255. data/vendor/spinel/test/bundle_classd_38.rb.expected +7 -0
  256. data/vendor/spinel/test/bundle_classd_39.rb +76 -0
  257. data/vendor/spinel/test/bundle_classd_39.rb.expected +15 -0
  258. data/vendor/spinel/test/bundle_classd_43.rb +84 -0
  259. data/vendor/spinel/test/bundle_classd_43.rb.expected +7 -0
  260. data/vendor/spinel/test/bundle_classd_45.rb +115 -0
  261. data/vendor/spinel/test/bundle_classd_45.rb.expected +7 -0
  262. data/vendor/spinel/test/bundle_classd_46.rb +72 -0
  263. data/vendor/spinel/test/bundle_classd_46.rb.expected +5 -0
  264. data/vendor/spinel/test/bundle_classd_48.rb +85 -0
  265. data/vendor/spinel/test/bundle_classd_49.rb +153 -0
  266. data/vendor/spinel/test/bundle_classd_50.rb +200 -0
  267. data/vendor/spinel/test/bundle_classd_50.rb.expected +10 -0
  268. data/vendor/spinel/test/bundle_classd_51.rb +191 -0
  269. data/vendor/spinel/test/bundle_classd_51.rb.expected +12 -0
  270. data/vendor/spinel/test/bundle_file_a.rb +119 -0
  271. data/vendor/spinel/test/bundle_file_a.rb.expected +23 -0
  272. data/vendor/spinel/test/bundle_hash_b1.rb +99 -0
  273. data/vendor/spinel/test/bundle_hash_b2.rb +107 -0
  274. data/vendor/spinel/test/bundle_int_a.rb +104 -0
  275. data/vendor/spinel/test/bundle_int_a.rb.expected +23 -0
  276. data/vendor/spinel/test/bundle_misc_c_08.rb +170 -0
  277. data/vendor/spinel/test/bundle_misc_c_08.rb.expected +33 -0
  278. data/vendor/spinel/test/bundle_misc_c_09.rb +72 -0
  279. data/vendor/spinel/test/bundle_misc_c_09.rb.expected +6 -0
  280. data/vendor/spinel/test/bundle_misc_c_10.rb +73 -0
  281. data/vendor/spinel/test/bundle_misc_c_10.rb.expected +8 -0
  282. data/vendor/spinel/test/bundle_misc_c_17.rb +124 -0
  283. data/vendor/spinel/test/bundle_misc_c_17.rb.expected +18 -0
  284. data/vendor/spinel/test/bundle_misc_c_23.rb +97 -0
  285. data/vendor/spinel/test/bundle_misc_c_23.rb.expected +10 -0
  286. data/vendor/spinel/test/bundle_misc_c_26.rb +107 -0
  287. data/vendor/spinel/test/bundle_misc_c_26.rb.expected +24 -0
  288. data/vendor/spinel/test/bundle_misc_c_30.rb +94 -0
  289. data/vendor/spinel/test/bundle_misc_c_31.rb +89 -0
  290. data/vendor/spinel/test/bundle_misc_c_31.rb.expected +14 -0
  291. data/vendor/spinel/test/bundle_misc_c_33.rb +163 -0
  292. data/vendor/spinel/test/bundle_misc_c_33.rb.expected +53 -0
  293. data/vendor/spinel/test/bundle_misc_c_34.rb +106 -0
  294. data/vendor/spinel/test/bundle_misc_c_34.rb.expected +11 -0
  295. data/vendor/spinel/test/bundle_misc_c_35.rb +143 -0
  296. data/vendor/spinel/test/bundle_misc_c_35.rb.expected +44 -0
  297. data/vendor/spinel/test/bundle_misc_c_36.rb +165 -0
  298. data/vendor/spinel/test/bundle_misc_c_36.rb.expected +59 -0
  299. data/vendor/spinel/test/bundle_misc_c_37.rb +119 -0
  300. data/vendor/spinel/test/bundle_misc_c_37.rb.expected +22 -0
  301. data/vendor/spinel/test/bundle_poly_b1.rb +44 -0
  302. data/vendor/spinel/test/bundle_poly_b1.rb.expected +7 -0
  303. data/vendor/spinel/test/bundle_string_c.rb +250 -0
  304. data/vendor/spinel/test/bundle_string_c.rb.expected +51 -0
  305. data/vendor/spinel/test/bundle_sym.rb +2 -4
  306. data/vendor/spinel/test/bundle_tiny_array.rb +160 -0
  307. data/vendor/spinel/test/bundle_tiny_array.rb.expected +53 -0
  308. data/vendor/spinel/test/bundle_tiny_misc.rb +187 -0
  309. data/vendor/spinel/test/bundle_tiny_misc.rb.expected +59 -0
  310. data/vendor/spinel/test/bundle_tiny_num.rb +87 -0
  311. data/vendor/spinel/test/bundle_tiny_num.rb.expected +27 -0
  312. data/vendor/spinel/test/bundle_tiny_string.rb +226 -0
  313. data/vendor/spinel/test/bundle_tiny_string.rb.expected +78 -0
  314. data/vendor/spinel/test/captured_block_call_value.rb +45 -0
  315. data/vendor/spinel/test/captured_block_call_value.rb.expected +5 -0
  316. data/vendor/spinel/test/case_fallthrough_returns_nil.expected +5 -0
  317. data/vendor/spinel/test/case_fallthrough_returns_nil.rb +8 -0
  318. data/vendor/spinel/test/case_in_no_match_error.rb +54 -0
  319. data/vendor/spinel/test/case_in_no_match_error.rb.expected +6 -0
  320. data/vendor/spinel/test/case_local_in_lambda.rb +57 -0
  321. data/vendor/spinel/test/case_local_in_lambda.rb.expected +5 -0
  322. data/vendor/spinel/test/case_when_class.rb +28 -66
  323. data/vendor/spinel/test/case_when_class.rb.expected +5 -5
  324. data/vendor/spinel/test/case_when_class_scalar_predicate.rb +53 -0
  325. data/vendor/spinel/test/case_when_class_scalar_predicate.rb.expected +3 -0
  326. data/vendor/spinel/test/case_when_poly_scrutinee_bound_to_local.rb +36 -0
  327. data/vendor/spinel/test/case_when_poly_scrutinee_bound_to_local.rb.expected +5 -0
  328. data/vendor/spinel/test/case_when_qualified_class.rb +47 -0
  329. data/vendor/spinel/test/case_when_qualified_class.rb.expected +2 -0
  330. data/vendor/spinel/test/case_when_regex.rb +23 -0
  331. data/vendor/spinel/test/case_when_regex.rb.expected +3 -0
  332. data/vendor/spinel/test/chained_aset_on_poly_hash_recv.rb +19 -0
  333. data/vendor/spinel/test/chained_aset_on_poly_hash_recv.rb.expected +1 -0
  334. data/vendor/spinel/test/clamp_string_and_range.rb +14 -0
  335. data/vendor/spinel/test/clamp_string_and_range.rb.expected +8 -0
  336. data/vendor/spinel/test/class_const_as_value.rb +58 -0
  337. data/vendor/spinel/test/class_const_as_value.rb.expected +4 -0
  338. data/vendor/spinel/test/class_hierarchy.rb +41 -0
  339. data/vendor/spinel/test/class_hierarchy.rb.expected +10 -0
  340. data/vendor/spinel/test/class_hierarchy_builtin.rb +43 -0
  341. data/vendor/spinel/test/class_hierarchy_builtin.rb.expected +14 -0
  342. data/vendor/spinel/test/class_hierarchy_module.rb +55 -0
  343. data/vendor/spinel/test/class_hierarchy_module.rb.expected +6 -0
  344. data/vendor/spinel/test/class_in_collection.rb +22 -0
  345. data/vendor/spinel/test/class_in_collection.rb.expected +10 -0
  346. data/vendor/spinel/test/class_ivar_in_class_method.rb +66 -0
  347. data/vendor/spinel/test/class_ivar_in_class_method.rb.expected +11 -0
  348. data/vendor/spinel/test/class_lt_builtin_parent.rb +13 -0
  349. data/vendor/spinel/test/class_name_in_cmeth.rb +30 -0
  350. data/vendor/spinel/test/class_name_in_cmeth.rb.expected +3 -0
  351. data/vendor/spinel/test/class_of_primitive.rb +14 -0
  352. data/vendor/spinel/test/class_of_primitive.rb.expected +9 -0
  353. data/vendor/spinel/test/class_phase2_name_eq.rb +61 -0
  354. data/vendor/spinel/test/class_phase2_name_eq.rb.expected +15 -0
  355. data/vendor/spinel/test/class_reopen_replaces_methods.rb +40 -0
  356. data/vendor/spinel/test/class_reopen_replaces_methods.rb.expected +3 -0
  357. data/vendor/spinel/test/class_singleton_def.rb +27 -0
  358. data/vendor/spinel/test/class_singleton_def.rb.expected +4 -0
  359. data/vendor/spinel/test/class_superclass.rb +15 -0
  360. data/vendor/spinel/test/class_superclass.rb.expected +3 -0
  361. data/vendor/spinel/test/class_value_builtin_and_nested.rb +36 -0
  362. data/vendor/spinel/test/cls_method_specialization_boxer.expected +2 -0
  363. data/vendor/spinel/test/cls_method_specialization_boxer.rb +47 -0
  364. data/vendor/spinel/test/cmeth_name_collision_with_kernel.rb +56 -0
  365. data/vendor/spinel/test/cmeth_name_collision_with_kernel.rb.expected +5 -0
  366. data/vendor/spinel/test/cmeth_return_nil_or_obj_via_intermediate.rb +89 -0
  367. data/vendor/spinel/test/cmeth_return_nil_or_obj_via_intermediate.rb.expected +6 -0
  368. data/vendor/spinel/test/comparable_between_user_type.rb +26 -0
  369. data/vendor/spinel/test/comparable_between_user_type.rb.expected +10 -0
  370. data/vendor/spinel/test/compile_time_attribute_singular.rb +12 -0
  371. data/vendor/spinel/test/compile_time_attribute_singular.rb.expected +2 -0
  372. data/vendor/spinel/test/compile_time_attribute_wrapped_record.rb +72 -0
  373. data/vendor/spinel/test/compile_time_attribute_wrapped_record.rb.expected +2 -0
  374. data/vendor/spinel/test/compile_time_attributes.rb +14 -0
  375. data/vendor/spinel/test/compile_time_attributes.rb.expected +3 -0
  376. data/vendor/spinel/test/compile_time_define_method_direct.rb +8 -0
  377. data/vendor/spinel/test/compile_time_define_method_direct.rb.expected +2 -0
  378. data/vendor/spinel/test/compile_time_define_method_int.rb +9 -0
  379. data/vendor/spinel/test/compile_time_define_method_int.rb.expected +2 -0
  380. data/vendor/spinel/test/compile_time_define_method_predicates.rb +18 -0
  381. data/vendor/spinel/test/compile_time_define_method_predicates.rb.expected +4 -0
  382. data/vendor/spinel/test/compile_time_define_method_strings.rb +9 -0
  383. data/vendor/spinel/test/compile_time_define_method_strings.rb.expected +2 -0
  384. data/vendor/spinel/test/complex_polar.rb +37 -0
  385. data/vendor/spinel/test/complex_polar.rb.expected +10 -0
  386. data/vendor/spinel/test/concat_chain_operand_gc_root.rb +16 -0
  387. data/vendor/spinel/test/concat_chain_operand_gc_root.rb.expected +4 -0
  388. data/vendor/spinel/test/concat_print_poly_unbox.rb +115 -0
  389. data/vendor/spinel/test/concat_print_poly_unbox.rb.expected +9 -0
  390. data/vendor/spinel/test/const_aliased_class_reopen_include.rb +33 -0
  391. data/vendor/spinel/test/const_aliased_class_reopen_include.rb.expected +2 -0
  392. data/vendor/spinel/test/const_compound_assign.rb +34 -0
  393. data/vendor/spinel/test/const_path_compound_assign.rb +15 -0
  394. data/vendor/spinel/test/const_path_deep_nesting.rb +30 -0
  395. data/vendor/spinel/test/const_path_deep_nesting.rb.expected +2 -0
  396. data/vendor/spinel/test/const_path_unresolved_require.rb +11 -0
  397. data/vendor/spinel/test/const_path_unresolved_require.rb.expected +2 -0
  398. data/vendor/spinel/test/const_self_ref_raises_name_error.rb +44 -0
  399. data/vendor/spinel/test/const_self_ref_raises_name_error.rb.expected +3 -0
  400. data/vendor/spinel/test/crashers_536.rb +32 -0
  401. data/vendor/spinel/test/crashers_536.rb.expected +4 -0
  402. data/vendor/spinel/test/cvar_method_first_assign.rb +6 -0
  403. data/vendor/spinel/test/data_define.rb +27 -0
  404. data/vendor/spinel/test/data_define.rb.expected +5 -0
  405. data/vendor/spinel/test/default_nil_param_with_str_return.rb +30 -0
  406. data/vendor/spinel/test/default_nil_param_with_str_return.rb.expected +4 -0
  407. data/vendor/spinel/test/defined_globals_methods.rb +15 -0
  408. data/vendor/spinel/test/defined_globals_methods.rb.expected +5 -0
  409. data/vendor/spinel/test/defined_op.rb +17 -0
  410. data/vendor/spinel/test/defined_op.rb.expected +8 -0
  411. data/vendor/spinel/test/destructure_typed_ptr_array_return.rb +30 -0
  412. data/vendor/spinel/test/destructure_typed_ptr_array_return.rb.expected +2 -0
  413. data/vendor/spinel/test/dir_exist.rb +2 -0
  414. data/vendor/spinel/test/dir_methods.rb +15 -0
  415. data/vendor/spinel/test/double_splat_kwargs.rb +26 -0
  416. data/vendor/spinel/test/double_splat_kwargs.rb.expected +6 -0
  417. data/vendor/spinel/test/dynamic_class_new.rb +44 -0
  418. data/vendor/spinel/test/dynamic_class_new.rb.expected +4 -0
  419. data/vendor/spinel/test/dynamic_is_a.rb +41 -0
  420. data/vendor/spinel/test/dynamic_is_a.rb.expected +5 -0
  421. data/vendor/spinel/test/each_cons_block_destructure.rb +10 -0
  422. data/vendor/spinel/test/each_cons_with_index_map_no_double_gets.rb +21 -0
  423. data/vendor/spinel/test/each_cons_with_index_map_no_double_gets.rb.expected +3 -0
  424. data/vendor/spinel/test/each_entry_reverse_each.rb +8 -0
  425. data/vendor/spinel/test/each_slice_map.rb +7 -0
  426. data/vendor/spinel/test/empty_array_local_arg_widen.rb +57 -0
  427. data/vendor/spinel/test/empty_array_local_arg_widen.rb.expected +2 -0
  428. data/vendor/spinel/test/empty_array_loop_intermediate_push.rb +103 -0
  429. data/vendor/spinel/test/empty_array_loop_intermediate_push.rb.expected +5 -0
  430. data/vendor/spinel/test/empty_array_push_container_elem.rb +35 -0
  431. data/vendor/spinel/test/empty_array_push_ptr.rb +26 -0
  432. data/vendor/spinel/test/empty_array_push_ptr.rb.expected +3 -0
  433. data/vendor/spinel/test/empty_hash_arg_param_widen.rb +44 -0
  434. data/vendor/spinel/test/empty_hash_arg_param_widen.rb.expected +6 -0
  435. data/vendor/spinel/test/empty_hash_int_int_no_widen.rb +46 -0
  436. data/vendor/spinel/test/empty_hash_int_int_no_widen.rb.expected +4 -0
  437. data/vendor/spinel/test/empty_hash_int_int_promote.rb +32 -0
  438. data/vendor/spinel/test/empty_hash_int_int_promote.rb.expected +8 -0
  439. data/vendor/spinel/test/empty_int_array_min_max.rb +15 -0
  440. data/vendor/spinel/test/empty_int_array_min_max.rb.expected +4 -0
  441. data/vendor/spinel/test/empty_method_returns_nil.rb +8 -0
  442. data/vendor/spinel/test/empty_method_returns_nil.rb.expected +3 -0
  443. data/vendor/spinel/test/empty_symbol_literal.rb +23 -0
  444. data/vendor/spinel/test/empty_symbol_literal.rb.expected +9 -0
  445. data/vendor/spinel/test/eq_string_vs_int.rb +20 -0
  446. data/vendor/spinel/test/eq_string_vs_int.rb.expected +9 -0
  447. data/vendor/spinel/test/exception_backtrace_empty.rb +12 -0
  448. data/vendor/spinel/test/exception_backtrace_empty.rb.expected +4 -0
  449. data/vendor/spinel/test/exception_class_new.rb +46 -0
  450. data/vendor/spinel/test/exception_class_new.rb.expected +10 -0
  451. data/vendor/spinel/test/exception_namespaced_default_message.rb +28 -0
  452. data/vendor/spinel/test/exception_namespaced_default_message.rb.expected +4 -0
  453. data/vendor/spinel/test/exception_object_methods.rb +3 -2
  454. data/vendor/spinel/test/exception_object_methods.rb.expected +1 -1
  455. data/vendor/spinel/test/exception_super_interpolated_message.rb +41 -0
  456. data/vendor/spinel/test/exception_super_interpolated_message.rb.expected +5 -0
  457. data/vendor/spinel/test/exception_user_subclass.rb +35 -0
  458. data/vendor/spinel/test/exception_user_subclass.rb.expected +10 -0
  459. data/vendor/spinel/test/extend_module.rb +30 -0
  460. data/vendor/spinel/test/extend_module.rb.expected +4 -0
  461. data/vendor/spinel/test/ffi_array_specs_decl.rb +25 -0
  462. data/vendor/spinel/test/ffi_int_arg_poly_value.rb +27 -0
  463. data/vendor/spinel/test/ffi_ptr_array.rb +35 -0
  464. data/vendor/spinel/test/ffi_ptr_int_literal.rb +31 -0
  465. data/vendor/spinel/test/ffi_str_arg_poly_value.rb +26 -0
  466. data/vendor/spinel/test/fiber_capture_no_leak_to_sibling.rb +27 -0
  467. data/vendor/spinel/test/fiber_capture_no_leak_to_sibling.rb.expected +1 -0
  468. data/vendor/spinel/test/fiber_gc_root_isolation.rb +76 -0
  469. data/vendor/spinel/test/file_dir_methods.rb +11 -0
  470. data/vendor/spinel/test/file_dir_methods.rb.expected +8 -0
  471. data/vendor/spinel/test/file_expand_path.rb +10 -0
  472. data/vendor/spinel/test/file_expand_path.rb.expected +8 -0
  473. data/vendor/spinel/test/file_mtime.rb +10 -0
  474. data/vendor/spinel/test/file_mtime.rb.expected +2 -0
  475. data/vendor/spinel/test/file_read_count.rb +19 -0
  476. data/vendor/spinel/test/file_read_count.rb.expected +5 -0
  477. data/vendor/spinel/test/file_readlines.rb +15 -0
  478. data/vendor/spinel/test/file_readlines.rb.expected +4 -0
  479. data/vendor/spinel/test/file_write_at_tail_position.rb +16 -0
  480. data/vendor/spinel/test/float_array_first_last_nil.rb +20 -0
  481. data/vendor/spinel/test/float_array_first_last_nil.rb.expected +8 -0
  482. data/vendor/spinel/test/float_divmod_zerodiv.rb +57 -0
  483. data/vendor/spinel/test/float_divmod_zerodiv.rb.expected +7 -0
  484. data/vendor/spinel/test/float_limit_constants.rb +14 -0
  485. data/vendor/spinel/test/float_round_ndigits_return_type.rb +24 -0
  486. data/vendor/spinel/test/float_round_ndigits_return_type.rb.expected +14 -0
  487. data/vendor/spinel/test/float_round_value_based_type.rb +17 -0
  488. data/vendor/spinel/test/float_round_value_based_type.rb.expected +14 -0
  489. data/vendor/spinel/test/float_round_zero.rb +18 -0
  490. data/vendor/spinel/test/float_round_zero.rb.expected +11 -0
  491. data/vendor/spinel/test/float_spaceship.rb +13 -0
  492. data/vendor/spinel/test/float_step_block.rb +16 -0
  493. data/vendor/spinel/test/float_step_block.rb.expected +3 -0
  494. data/vendor/spinel/test/float_step_to_a.rb +20 -0
  495. data/vendor/spinel/test/float_step_to_a.rb.expected +10 -0
  496. data/vendor/spinel/test/gc_grandparent_ivar_scan.rb +28 -0
  497. data/vendor/spinel/test/gc_grandparent_ivar_scan.rb.expected +2 -0
  498. data/vendor/spinel/test/gc_poly_local_int.rb +11 -0
  499. data/vendor/spinel/test/gc_poly_local_int.rb.expected +1 -0
  500. data/vendor/spinel/test/gc_poly_local_root.rb +19 -0
  501. data/vendor/spinel/test/gc_poly_local_root.rb.expected +1 -0
  502. data/vendor/spinel/test/gc_poly_local_setjmp.rb +16 -0
  503. data/vendor/spinel/test/gc_poly_local_setjmp.rb.expected +1 -0
  504. data/vendor/spinel/test/gc_root_call_args.rb +35 -0
  505. data/vendor/spinel/test/gc_root_call_args.rb.expected +3 -0
  506. data/vendor/spinel/test/gc_root_heap_param.rb +21 -0
  507. data/vendor/spinel/test/gc_root_heap_param.rb.expected +1 -0
  508. data/vendor/spinel/test/global_multi_assign.rb +28 -0
  509. data/vendor/spinel/test/global_var_punct.rb +9 -0
  510. data/vendor/spinel/test/gsub_sub_block.rb +14 -0
  511. data/vendor/spinel/test/gsub_sub_block.rb.expected +7 -0
  512. data/vendor/spinel/test/gsub_with_hash_replacement.rb +19 -0
  513. data/vendor/spinel/test/gsub_with_hash_replacement.rb.expected +3 -0
  514. data/vendor/spinel/test/hangs_548.rb +66 -0
  515. data/vendor/spinel/test/hangs_548.rb.expected +4 -0
  516. data/vendor/spinel/test/hash_block_methods_variants.rb +15 -0
  517. data/vendor/spinel/test/hash_block_methods_variants.rb.expected +12 -0
  518. data/vendor/spinel/test/hash_clear.rb +43 -0
  519. data/vendor/spinel/test/hash_clear.rb.expected +12 -0
  520. data/vendor/spinel/test/hash_compound_assign_more.rb +21 -0
  521. data/vendor/spinel/test/hash_delete_if_select_reject_bang.rb +19 -0
  522. data/vendor/spinel/test/hash_delete_if_select_reject_bang.rb.expected +4 -0
  523. data/vendor/spinel/test/hash_delete_returns_value.rb +21 -0
  524. data/vendor/spinel/test/hash_delete_returns_value.rb.expected +8 -0
  525. data/vendor/spinel/test/hash_dispatch_missing_cells.rb +24 -0
  526. data/vendor/spinel/test/hash_dispatch_missing_cells.rb.expected +8 -0
  527. data/vendor/spinel/test/hash_each_key_value.rb +85 -0
  528. data/vendor/spinel/test/hash_each_key_value.rb.expected +72 -0
  529. data/vendor/spinel/test/hash_each_with_object.rb +16 -0
  530. data/vendor/spinel/test/hash_each_with_object.rb.expected +2 -0
  531. data/vendor/spinel/test/hash_fetch_block.rb +31 -0
  532. data/vendor/spinel/test/hash_fetch_block.rb.expected +13 -0
  533. data/vendor/spinel/test/hash_fetch_block_key.rb +9 -0
  534. data/vendor/spinel/test/hash_fetch_block_key.rb.expected +4 -0
  535. data/vendor/spinel/test/hash_fetch_block_key_type.rb +37 -0
  536. data/vendor/spinel/test/hash_fetch_block_key_type.rb.expected +7 -0
  537. data/vendor/spinel/test/hash_fetch_keyerror.rb +23 -0
  538. data/vendor/spinel/test/hash_flatten_rassoc_compact.rb +33 -0
  539. data/vendor/spinel/test/hash_float_value_preserved.rb +27 -0
  540. data/vendor/spinel/test/hash_float_value_preserved.rb.expected +6 -0
  541. data/vendor/spinel/test/hash_index_assign_expression.rb +21 -0
  542. data/vendor/spinel/test/hash_inspect_poly.rb +13 -0
  543. data/vendor/spinel/test/hash_inspect_poly.rb.expected +6 -0
  544. data/vendor/spinel/test/hash_int_and_or_assign.rb +30 -0
  545. data/vendor/spinel/test/hash_int_and_or_assign.rb.expected +8 -0
  546. data/vendor/spinel/test/hash_invert.rb +16 -0
  547. data/vendor/spinel/test/hash_invert.rb.expected +4 -0
  548. data/vendor/spinel/test/hash_key_via_intermediate_local.rb +32 -0
  549. data/vendor/spinel/test/hash_map_block.rb +6 -0
  550. data/vendor/spinel/test/hash_merge_with_block.rb +10 -0
  551. data/vendor/spinel/test/hash_new_default_block_assign.rb +16 -0
  552. data/vendor/spinel/test/hash_param_each_kv_inference.rb +67 -0
  553. data/vendor/spinel/test/hash_param_each_kv_inference.rb.expected +3 -0
  554. data/vendor/spinel/test/hash_param_each_kv_weak_default.rb +75 -0
  555. data/vendor/spinel/test/hash_param_each_kv_weak_default.rb.expected +6 -0
  556. data/vendor/spinel/test/hash_param_widen_from_callee_slot.rb +43 -0
  557. data/vendor/spinel/test/hash_replace_variants.rb +17 -0
  558. data/vendor/spinel/test/hash_replace_variants.rb.expected +6 -0
  559. data/vendor/spinel/test/hash_temp_gc_root.rb +26 -0
  560. data/vendor/spinel/test/hash_transform_keys_cross.rb +12 -0
  561. data/vendor/spinel/test/hash_transform_keys_cross.rb.expected +5 -0
  562. data/vendor/spinel/test/hash_value_p.rb +19 -0
  563. data/vendor/spinel/test/hash_value_p.rb.expected +7 -0
  564. data/vendor/spinel/test/hash_value_split_widen.rb +22 -0
  565. data/vendor/spinel/test/hash_value_split_widen.rb.expected +2 -0
  566. data/vendor/spinel/test/hash_values_at_fetch_values.rb +23 -0
  567. data/vendor/spinel/test/hash_variant_call_boundary_sym.rb +27 -0
  568. data/vendor/spinel/test/hash_variant_call_boundary_sym.rb.expected +2 -0
  569. data/vendor/spinel/test/heterogeneous_tuple_return.rb +32 -0
  570. data/vendor/spinel/test/heterogeneous_tuple_return.rb.expected +7 -0
  571. data/vendor/spinel/test/i1006.rb +21 -0
  572. data/vendor/spinel/test/i1006.rb.expected +7 -0
  573. data/vendor/spinel/test/i1007.rb +25 -0
  574. data/vendor/spinel/test/i1007.rb.expected +4 -0
  575. data/vendor/spinel/test/i1009.rb +9 -0
  576. data/vendor/spinel/test/i1009.rb.expected +4 -0
  577. data/vendor/spinel/test/i1011.rb +12 -0
  578. data/vendor/spinel/test/i1011.rb.expected +2 -0
  579. data/vendor/spinel/test/i1015.rb +11 -0
  580. data/vendor/spinel/test/i1015.rb.expected +2 -0
  581. data/vendor/spinel/test/i1017.rb +37 -0
  582. data/vendor/spinel/test/i1017.rb.expected +1 -0
  583. data/vendor/spinel/test/i1020.rb +31 -0
  584. data/vendor/spinel/test/i1020.rb.expected +2 -0
  585. data/vendor/spinel/test/i1021.rb +12 -0
  586. data/vendor/spinel/test/i1021.rb.expected +9 -0
  587. data/vendor/spinel/test/i1027.rb +28 -0
  588. data/vendor/spinel/test/i1027.rb.expected +1 -0
  589. data/vendor/spinel/test/i1031.rb +64 -0
  590. data/vendor/spinel/test/i1031.rb.expected +4 -0
  591. data/vendor/spinel/test/i1035.rb +18 -0
  592. data/vendor/spinel/test/i1035.rb.expected +3 -0
  593. data/vendor/spinel/test/i1038.rb +7 -0
  594. data/vendor/spinel/test/i1038.rb.expected +4 -0
  595. data/vendor/spinel/test/i1041.rb +31 -0
  596. data/vendor/spinel/test/i1041.rb.expected +4 -0
  597. data/vendor/spinel/test/i709.rb +41 -0
  598. data/vendor/spinel/test/i709.rb.expected +3 -0
  599. data/vendor/spinel/test/i898.rb +23 -0
  600. data/vendor/spinel/test/i898.rb.expected +7 -0
  601. data/vendor/spinel/test/i912.rb +15 -0
  602. data/vendor/spinel/test/i912.rb.expected +8 -0
  603. data/vendor/spinel/test/i916.rb +14 -0
  604. data/vendor/spinel/test/i916.rb.expected +4 -0
  605. data/vendor/spinel/test/i918.rb +45 -0
  606. data/vendor/spinel/test/i918.rb.expected +13 -0
  607. data/vendor/spinel/test/i919.rb +12 -0
  608. data/vendor/spinel/test/i919.rb.expected +5 -0
  609. data/vendor/spinel/test/i920.rb +9 -0
  610. data/vendor/spinel/test/i920.rb.expected +4 -0
  611. data/vendor/spinel/test/i960.rb +13 -0
  612. data/vendor/spinel/test/i960.rb.expected +5 -0
  613. data/vendor/spinel/test/i972.rb +38 -0
  614. data/vendor/spinel/test/i972.rb.expected +11 -0
  615. data/vendor/spinel/test/i974.rb +23 -0
  616. data/vendor/spinel/test/i974.rb.expected +19 -0
  617. data/vendor/spinel/test/i994.rb +18 -0
  618. data/vendor/spinel/test/i994.rb.expected +9 -0
  619. data/vendor/spinel/test/i997.rb +20 -0
  620. data/vendor/spinel/test/i997.rb.expected +6 -0
  621. data/vendor/spinel/test/if_expr_multi_stmt_body.rb +78 -0
  622. data/vendor/spinel/test/if_expr_multi_stmt_body.rb.expected +13 -0
  623. data/vendor/spinel/test/implicit_alloc_site_cache_helper_specialization.rb +112 -0
  624. data/vendor/spinel/test/implicit_alloc_site_cache_helper_specialization.rb.expected +6 -0
  625. data/vendor/spinel/test/implicit_alloc_site_escape_layout.rb +30 -0
  626. data/vendor/spinel/test/implicit_alloc_site_escape_layout.rb.expected +2 -0
  627. data/vendor/spinel/test/implicit_alloc_site_escape_param.rb +27 -0
  628. data/vendor/spinel/test/implicit_alloc_site_escape_param.rb.expected +2 -0
  629. data/vendor/spinel/test/implicit_alloc_site_escape_scoped_locals.rb +44 -0
  630. data/vendor/spinel/test/implicit_alloc_site_escape_scoped_locals.rb.expected +2 -0
  631. data/vendor/spinel/test/implicit_alloc_site_holder_poly_array.rb +23 -0
  632. data/vendor/spinel/test/implicit_alloc_site_holder_poly_array.rb.expected +3 -0
  633. data/vendor/spinel/test/implicit_alloc_site_holder_shared_method.rb +23 -0
  634. data/vendor/spinel/test/implicit_alloc_site_holder_shared_method.rb.expected +3 -0
  635. data/vendor/spinel/test/implicit_alloc_site_holder_specialization.rb +19 -0
  636. data/vendor/spinel/test/implicit_alloc_site_holder_specialization.rb.expected +3 -0
  637. data/vendor/spinel/test/implicit_alloc_site_ivar_helper_return_specialization.rb +46 -0
  638. data/vendor/spinel/test/implicit_alloc_site_ivar_helper_return_specialization.rb.expected +3 -0
  639. data/vendor/spinel/test/implicit_alloc_site_store_specialization.rb +28 -0
  640. data/vendor/spinel/test/implicit_alloc_site_store_specialization.rb.expected +4 -0
  641. data/vendor/spinel/test/implicit_new_local_method_scope.rb +65 -0
  642. data/vendor/spinel/test/implicit_new_local_method_scope.rb.expected +2 -0
  643. data/vendor/spinel/test/include_chain_const_lookup.rb +48 -0
  644. data/vendor/spinel/test/include_chain_const_lookup.rb.expected +3 -0
  645. data/vendor/spinel/test/include_chain_module_nested_const.rb +62 -0
  646. data/vendor/spinel/test/include_chain_module_nested_const.rb.expected +2 -0
  647. data/vendor/spinel/test/include_constant_path.rb +98 -0
  648. data/vendor/spinel/test/include_constant_path.rb.expected +5 -0
  649. data/vendor/spinel/test/include_nested_module.rb +99 -0
  650. data/vendor/spinel/test/include_nested_module.rb.expected +3 -0
  651. data/vendor/spinel/test/include_skips_module_class_methods.rb +27 -0
  652. data/vendor/spinel/test/include_skips_module_class_methods.rb.expected +3 -0
  653. data/vendor/spinel/test/inherited_factory_poly_param_narrow_attr.rb +25 -0
  654. data/vendor/spinel/test/inherited_kwarg_nil_default_string_ivar.rb +61 -0
  655. data/vendor/spinel/test/inherited_kwarg_nil_default_string_ivar.rb.expected +2 -0
  656. data/vendor/spinel/test/inherited_method_kwarg_block_self.rb +67 -0
  657. data/vendor/spinel/test/inherited_method_kwarg_block_self.rb.expected +2 -0
  658. data/vendor/spinel/test/initialize_override_param_inference.rb +68 -0
  659. data/vendor/spinel/test/inject_symbol_op.rb +11 -0
  660. data/vendor/spinel/test/inject_symbol_op.rb.expected +7 -0
  661. data/vendor/spinel/test/inject_symbol_to_proc.rb +41 -0
  662. data/vendor/spinel/test/inject_symbol_to_proc.rb.expected +12 -0
  663. data/vendor/spinel/test/inlined_yield_block_param_type.rb +32 -0
  664. data/vendor/spinel/test/inlined_yield_block_param_type.rb.expected +2 -0
  665. data/vendor/spinel/test/inlined_yield_self_locals.rb +49 -0
  666. data/vendor/spinel/test/inlined_yield_self_locals.rb.expected +5 -0
  667. data/vendor/spinel/test/instance_eval_block_params.rb +93 -0
  668. data/vendor/spinel/test/instance_eval_block_params.rb.expected +10 -0
  669. data/vendor/spinel/test/instance_eval_trampoline.rb +17 -0
  670. data/vendor/spinel/test/instance_eval_trampoline.rb.expected +1 -0
  671. data/vendor/spinel/test/instance_exec_capture.rb +48 -0
  672. data/vendor/spinel/test/instance_exec_capture.rb.expected +7 -0
  673. data/vendor/spinel/test/instance_exec_direct.rb +72 -0
  674. data/vendor/spinel/test/instance_exec_direct.rb.expected +5 -0
  675. data/vendor/spinel/test/instance_exec_override.rb +69 -0
  676. data/vendor/spinel/test/instance_exec_override.rb.expected +4 -0
  677. data/vendor/spinel/test/instance_exec_parity.rb +44 -0
  678. data/vendor/spinel/test/instance_exec_parity.rb.expected +6 -0
  679. data/vendor/spinel/test/instance_exec_return.rb +54 -0
  680. data/vendor/spinel/test/instance_exec_return.rb.expected +7 -0
  681. data/vendor/spinel/test/instance_exec_trampoline.rb +101 -0
  682. data/vendor/spinel/test/instance_exec_trampoline.rb.expected +6 -0
  683. data/vendor/spinel/test/instance_exec_valuetype.rb +48 -0
  684. data/vendor/spinel/test/instance_exec_valuetype.rb.expected +7 -0
  685. data/vendor/spinel/test/instance_methods_false.rb +41 -0
  686. data/vendor/spinel/test/instance_methods_false.rb.expected +14 -0
  687. data/vendor/spinel/test/int_array_bracket_assign_expr.rb +30 -0
  688. data/vendor/spinel/test/int_array_bracket_assign_expr.rb.expected +8 -0
  689. data/vendor/spinel/test/int_array_tally.rb +14 -0
  690. data/vendor/spinel/test/int_array_tally.rb.expected +8 -0
  691. data/vendor/spinel/test/int_array_uniq_bang.rb +15 -0
  692. data/vendor/spinel/test/int_array_uniq_bang.rb.expected +3 -0
  693. data/vendor/spinel/test/int_ceil_floor_round.rb +11 -0
  694. data/vendor/spinel/test/int_ceil_floor_round.rb.expected +8 -0
  695. data/vendor/spinel/test/int_ceil_floor_round_truncate_ndigits.rb +17 -0
  696. data/vendor/spinel/test/int_ceil_floor_round_truncate_ndigits.rb.expected +12 -0
  697. data/vendor/spinel/test/int_hash_missing_nil_check.rb +27 -0
  698. data/vendor/spinel/test/int_hash_missing_nil_check.rb.expected +14 -0
  699. data/vendor/spinel/test/int_int_hash_literal.rb +13 -0
  700. data/vendor/spinel/test/int_int_hash_literal.rb.expected +7 -0
  701. data/vendor/spinel/test/int_int_hash_missing_key_nil.rb +10 -0
  702. data/vendor/spinel/test/int_int_hash_missing_key_nil.rb.expected +8 -0
  703. data/vendor/spinel/test/int_opt_p_inspect.rb +8 -0
  704. data/vendor/spinel/test/int_opt_p_inspect.rb.expected +5 -0
  705. data/vendor/spinel/test/int_overflow_promote.rb +41 -0
  706. data/vendor/spinel/test/int_overflow_raises.rb +34 -0
  707. data/vendor/spinel/test/int_overflow_raises.rb.expected +6 -0
  708. data/vendor/spinel/test/int_round_large_precision.rb +11 -0
  709. data/vendor/spinel/test/int_round_large_precision.rb.expected +8 -0
  710. data/vendor/spinel/test/integer_argument_error.rb +116 -0
  711. data/vendor/spinel/test/integer_argument_error.rb.expected +36 -0
  712. data/vendor/spinel/test/integer_extra_methods.rb +12 -0
  713. data/vendor/spinel/test/integer_extra_methods.rb.expected +8 -0
  714. data/vendor/spinel/test/integer_pow_negative_exponent.rb +17 -0
  715. data/vendor/spinel/test/integer_pow_negative_exponent.rb.expected +6 -0
  716. data/vendor/spinel/test/integer_times_as_expr.rb +9 -0
  717. data/vendor/spinel/test/integer_times_as_expr.rb.expected +3 -0
  718. data/vendor/spinel/test/interp_array_container.rb +41 -0
  719. data/vendor/spinel/test/interp_array_container.rb.expected +8 -0
  720. data/vendor/spinel/test/interpolation_multistmt.rb +15 -0
  721. data/vendor/spinel/test/interpolation_multistmt.rb.expected +3 -0
  722. data/vendor/spinel/test/interpolation_symbol_name.rb +23 -0
  723. data/vendor/spinel/test/interpolation_symbol_name.rb.expected +6 -0
  724. data/vendor/spinel/test/introspection_constant_path.rb +60 -0
  725. data/vendor/spinel/test/introspection_constant_path.rb.expected +13 -0
  726. data/vendor/spinel/test/io_pipe.rb +6 -0
  727. data/vendor/spinel/test/io_pipe.rb.expected +3 -0
  728. data/vendor/spinel/test/is_a_descendant_runtime.rb +59 -0
  729. data/vendor/spinel/test/is_a_descendant_runtime.rb.expected +11 -0
  730. data/vendor/spinel/test/is_a_included_module.rb +28 -0
  731. data/vendor/spinel/test/is_a_included_module.rb.expected +9 -0
  732. data/vendor/spinel/test/ivar_assign_and_expr.rb +22 -0
  733. data/vendor/spinel/test/ivar_assign_and_expr.rb.expected +3 -0
  734. data/vendor/spinel/test/ivar_lazy_init_push_via_inherited_getter.rb +67 -0
  735. data/vendor/spinel/test/ivar_lazy_init_push_via_inherited_getter.rb.expected +6 -0
  736. data/vendor/spinel/test/json_generate_basic.rb +16 -0
  737. data/vendor/spinel/test/json_generate_basic.rb.expected +12 -0
  738. data/vendor/spinel/test/json_generate_struct_record.rb +9 -0
  739. data/vendor/spinel/test/json_generate_struct_record.rb.expected +4 -0
  740. data/vendor/spinel/test/kernel_complex.rb +9 -0
  741. data/vendor/spinel/test/kernel_dir.rb +9 -0
  742. data/vendor/spinel/test/kernel_dir.rb.expected +2 -0
  743. data/vendor/spinel/test/kernel_float_strict.rb +16 -0
  744. data/vendor/spinel/test/kernel_float_strict.rb.expected +6 -0
  745. data/vendor/spinel/test/kernel_integer_with_base.rb +16 -0
  746. data/vendor/spinel/test/kernel_integer_with_base.rb.expected +6 -0
  747. data/vendor/spinel/test/kwarg_back_propagate_callee_type.rb +26 -0
  748. data/vendor/spinel/test/kwarg_back_propagate_callee_type.rb.expected +1 -0
  749. data/vendor/spinel/test/kwargs_double_splat.rb +15 -0
  750. data/vendor/spinel/test/kwargs_double_splat.rb.expected +2 -0
  751. data/vendor/spinel/test/kwargs_merge_default_hash.rb +51 -0
  752. data/vendor/spinel/test/lambda_arrow_string_return.rb +8 -0
  753. data/vendor/spinel/test/lambda_arrow_string_return.rb.expected +2 -0
  754. data/vendor/spinel/test/lambda_inference_chain.rb +35 -0
  755. data/vendor/spinel/test/lambda_inference_chain.rb.expected +5 -0
  756. data/vendor/spinel/test/local_empty_array_push_promotion_propagates.rb +61 -0
  757. data/vendor/spinel/test/local_empty_array_push_promotion_propagates.rb.expected +3 -0
  758. data/vendor/spinel/test/logical_pointer_guard.rb +20 -0
  759. data/vendor/spinel/test/logical_pointer_guard.rb.expected +2 -0
  760. data/vendor/spinel/test/logical_value_return.rb +15 -0
  761. data/vendor/spinel/test/lv_widen_from_callee_arg_slot.rb +56 -0
  762. data/vendor/spinel/test/lv_widen_from_callee_arg_slot.rb.expected +1 -0
  763. data/vendor/spinel/test/map_block_string_new_join.rb +33 -0
  764. data/vendor/spinel/test/map_block_string_new_join.rb.expected +3 -0
  765. data/vendor/spinel/test/map_obj_array_poly_field.rb +28 -0
  766. data/vendor/spinel/test/map_recv_emitted_once.rb +44 -0
  767. data/vendor/spinel/test/map_recv_emitted_once.rb.expected +7 -0
  768. data/vendor/spinel/test/map_to_heap_objects.rb +16 -0
  769. data/vendor/spinel/test/map_to_heap_objects.rb.expected +4 -0
  770. data/vendor/spinel/test/map_to_value_type_objects.rb +26 -0
  771. data/vendor/spinel/test/map_to_value_type_objects.rb.expected +7 -0
  772. data/vendor/spinel/test/masgn_classvar_target.rb +13 -0
  773. data/vendor/spinel/test/masgn_constpath_target.rb +11 -0
  774. data/vendor/spinel/test/method_level_rescue_return.rb +42 -0
  775. data/vendor/spinel/test/method_level_rescue_return.rb.expected +6 -0
  776. data/vendor/spinel/test/method_level_rescue_return_string.rb +39 -0
  777. data/vendor/spinel/test/method_level_rescue_return_string.rb.expected +6 -0
  778. data/vendor/spinel/test/method_return_mixed_int_string.rb +65 -0
  779. data/vendor/spinel/test/method_return_mixed_int_string.rb.expected +10 -0
  780. data/vendor/spinel/test/middle_splat_param.rb +14 -0
  781. data/vendor/spinel/test/middle_splat_param.rb.expected +4 -0
  782. data/vendor/spinel/test/missing_positional_arg_warns.rb +23 -0
  783. data/vendor/spinel/test/missing_positional_arg_warns.rb.expected +2 -0
  784. data/vendor/spinel/test/module_accessor_delete_chain.rb +32 -0
  785. data/vendor/spinel/test/module_accessor_delete_chain.rb.expected +1 -0
  786. data/vendor/spinel/test/module_accessor_nil_check.rb +40 -0
  787. data/vendor/spinel/test/module_accessor_nil_check.rb.expected +2 -0
  788. data/vendor/spinel/test/module_body_string_const_interp.rb +40 -0
  789. data/vendor/spinel/test/module_body_string_const_interp.rb.expected +5 -0
  790. data/vendor/spinel/test/module_class_body_side_effects.rb +32 -0
  791. data/vendor/spinel/test/module_class_body_side_effects.rb.expected +7 -0
  792. data/vendor/spinel/test/module_class_reflection.rb +27 -0
  793. data/vendor/spinel/test/module_class_reflection.rb.expected +14 -0
  794. data/vendor/spinel/test/module_const_defined.rb +13 -0
  795. data/vendor/spinel/test/module_const_defined.rb.expected +4 -0
  796. data/vendor/spinel/test/module_cvars.rb +32 -0
  797. data/vendor/spinel/test/module_cvars.rb.expected +4 -0
  798. data/vendor/spinel/test/module_def_self_ivar.rb +14 -0
  799. data/vendor/spinel/test/module_def_self_ivar.rb.expected +2 -0
  800. data/vendor/spinel/test/module_function_dead_method_dce.rb +29 -0
  801. data/vendor/spinel/test/module_function_dead_method_dce.rb.expected +2 -0
  802. data/vendor/spinel/test/module_function_namespace.rb.expected +3 -0
  803. data/vendor/spinel/test/module_function_str_method_param.rb +14 -0
  804. data/vendor/spinel/test/module_function_str_method_param.rb.expected +1 -0
  805. data/vendor/spinel/test/module_ivar_empty_hash_reset.rb +64 -0
  806. data/vendor/spinel/test/module_ivar_empty_hash_reset.rb.expected +7 -0
  807. data/vendor/spinel/test/module_ivar_nil_poly.rb +17 -0
  808. data/vendor/spinel/test/module_ivar_op_write.rb +53 -0
  809. data/vendor/spinel/test/module_ivar_op_write.rb.expected +3 -0
  810. data/vendor/spinel/test/module_reopen_after_include_ivar.rb +33 -0
  811. data/vendor/spinel/test/module_reopen_after_include_ivar.rb.expected +2 -0
  812. data/vendor/spinel/test/module_reopen_after_include_namespaced.rb +33 -0
  813. data/vendor/spinel/test/module_reopen_after_include_namespaced.rb.expected +1 -0
  814. data/vendor/spinel/test/module_reopen_cmeth_redefine.rb +26 -0
  815. data/vendor/spinel/test/module_reopen_cmeth_redefine.rb.expected +2 -0
  816. data/vendor/spinel/test/module_singleton_attr_accessor.rb +41 -0
  817. data/vendor/spinel/test/module_singleton_attr_accessor.rb.expected +4 -0
  818. data/vendor/spinel/test/module_singleton_new_user_method.rb +23 -0
  819. data/vendor/spinel/test/module_singleton_new_user_method.rb.expected +2 -0
  820. data/vendor/spinel/test/module_singleton_self_accessor.rb +31 -0
  821. data/vendor/spinel/test/module_singleton_self_accessor.rb.expected +4 -0
  822. data/vendor/spinel/test/more_truthies_nil_compare.rb +31 -0
  823. data/vendor/spinel/test/more_truthies_nil_compare.rb.expected +9 -0
  824. data/vendor/spinel/test/multi_arg_lambda.rb +31 -0
  825. data/vendor/spinel/test/multi_arg_lambda.rb.expected +6 -0
  826. data/vendor/spinel/test/multi_assign_ivar_type.rb +21 -0
  827. data/vendor/spinel/test/multi_assign_ivar_type.rb.expected +3 -0
  828. data/vendor/spinel/test/multi_write_call_rhs_as_expr.rb +31 -0
  829. data/vendor/spinel/test/multi_write_call_rhs_as_expr.rb.expected +10 -0
  830. data/vendor/spinel/test/multi_write_scalar_rhs.rb +12 -0
  831. data/vendor/spinel/test/multi_write_scalar_rhs.rb.expected +5 -0
  832. data/vendor/spinel/test/mutable_str_alias_uaf.rb +62 -0
  833. data/vendor/spinel/test/mutable_str_alias_uaf.rb.expected +4 -0
  834. data/vendor/spinel/test/mutable_str_force_encoding_return.rb +21 -0
  835. data/vendor/spinel/test/mutable_str_force_encoding_return.rb.expected +1 -0
  836. data/vendor/spinel/test/mutable_str_into_str_array.rb +46 -0
  837. data/vendor/spinel/test/mutable_str_into_str_array.rb.expected +7 -0
  838. data/vendor/spinel/test/mutex_synchronize_block.rb +29 -0
  839. data/vendor/spinel/test/mutex_synchronize_block.rb.expected +6 -0
  840. data/vendor/spinel/test/narrow_and_predicate.rb +23 -0
  841. data/vendor/spinel/test/narrow_and_predicate.rb.expected +1 -0
  842. data/vendor/spinel/test/negative_range_slice.rb +32 -0
  843. data/vendor/spinel/test/negative_range_slice.rb.expected +12 -0
  844. data/vendor/spinel/test/nested_array_eq.rb +22 -0
  845. data/vendor/spinel/test/nested_array_eq.rb.expected +12 -0
  846. data/vendor/spinel/test/nested_yield_with_block_param.rb +33 -0
  847. data/vendor/spinel/test/nil_default_param_widens_to_poly.rb +26 -0
  848. data/vendor/spinel/test/nil_default_param_widens_to_poly.rb.expected +4 -0
  849. data/vendor/spinel/test/nil_guard_narrows_int_or_nil.rb +40 -0
  850. data/vendor/spinel/test/nil_guard_narrows_int_or_nil.rb.expected +5 -0
  851. data/vendor/spinel/test/not_match_op.rb +8 -0
  852. data/vendor/spinel/test/not_match_op.rb.expected +4 -0
  853. data/vendor/spinel/test/nullable_hash_recv_bracket.expected +3 -0
  854. data/vendor/spinel/test/nullable_hash_recv_bracket.rb +33 -0
  855. data/vendor/spinel/test/nullable_obj_nil_compare.rb +92 -0
  856. data/vendor/spinel/test/nullable_obj_nil_compare.rb.expected +8 -0
  857. data/vendor/spinel/test/nullable_poly_hash_arg_unbox.rb +85 -0
  858. data/vendor/spinel/test/nullable_poly_hash_arg_unbox.rb.expected +4 -0
  859. data/vendor/spinel/test/numeric_coerce.rb +24 -0
  860. data/vendor/spinel/test/numeric_coerce.rb.expected +9 -0
  861. data/vendor/spinel/test/obj_class_dispatch.rb +69 -0
  862. data/vendor/spinel/test/obj_class_dispatch.rb.expected +4 -0
  863. data/vendor/spinel/test/object_id_basic.rb +19 -0
  864. data/vendor/spinel/test/object_id_basic.rb.expected +8 -0
  865. data/vendor/spinel/test/object_method_gaps_callee_clone_itself.rb +23 -0
  866. data/vendor/spinel/test/object_method_gaps_callee_clone_itself.rb.expected +7 -0
  867. data/vendor/spinel/test/op_assign_user_operator.rb.expected +2 -0
  868. data/vendor/spinel/test/op_method_bitwise.rb +30 -0
  869. data/vendor/spinel/test/op_method_bitwise.rb.expected +8 -0
  870. data/vendor/spinel/test/op_method_shift.rb +30 -0
  871. data/vendor/spinel/test/op_method_shift.rb.expected +3 -0
  872. data/vendor/spinel/test/open_class_array_builtin.rb +11 -0
  873. data/vendor/spinel/test/open_class_array_builtin.rb.expected +1 -0
  874. data/vendor/spinel/test/open_class_bool_builtin.rb +28 -0
  875. data/vendor/spinel/test/open_class_bool_builtin.rb.expected +6 -0
  876. data/vendor/spinel/test/open_class_default_arg.rb +47 -0
  877. data/vendor/spinel/test/open_class_default_arg.rb.expected +9 -0
  878. data/vendor/spinel/test/open_class_object.rb +26 -0
  879. data/vendor/spinel/test/open_class_object.rb.expected +5 -0
  880. data/vendor/spinel/test/pack_utf8.rb +12 -0
  881. data/vendor/spinel/test/pack_utf8.rb.expected +10 -0
  882. data/vendor/spinel/test/param_body_array_hash_inference.rb +58 -0
  883. data/vendor/spinel/test/param_body_array_hash_inference.rb.expected +3 -0
  884. data/vendor/spinel/test/param_body_hash_inference.rb +72 -0
  885. data/vendor/spinel/test/param_body_hash_inference.rb.expected +6 -0
  886. data/vendor/spinel/test/param_include_body_widen.rb +32 -0
  887. data/vendor/spinel/test/param_include_body_widen.rb.expected +5 -0
  888. data/vendor/spinel/test/param_lengthlike_body_widen.rb +53 -0
  889. data/vendor/spinel/test/param_lengthlike_body_widen.rb.expected +6 -0
  890. data/vendor/spinel/test/param_ptr_from_callee_slot.rb +42 -0
  891. data/vendor/spinel/test/param_ptr_from_callee_slot.rb.expected +6 -0
  892. data/vendor/spinel/test/parser_long_ast_record.rb +132 -0
  893. data/vendor/spinel/test/parser_long_ast_record.rb.expected +3 -0
  894. data/vendor/spinel/test/pattern_match_as_and_guard.rb +33 -0
  895. data/vendor/spinel/test/pattern_match_as_and_guard.rb.expected +4 -0
  896. data/vendor/spinel/test/pattern_match_splat_rest.rb +15 -0
  897. data/vendor/spinel/test/pattern_match_splat_rest.rb.expected +4 -0
  898. data/vendor/spinel/test/pattern_pin.rb +105 -0
  899. data/vendor/spinel/test/pattern_pin.rb.expected +11 -0
  900. data/vendor/spinel/test/poly_arg_int_keyed_hash.rb +42 -0
  901. data/vendor/spinel/test/poly_arg_int_keyed_hash.rb.expected +5 -0
  902. data/vendor/spinel/test/poly_arg_to_typed_method_param.rb +28 -0
  903. data/vendor/spinel/test/poly_arg_to_typed_method_param.rb.expected +4 -0
  904. data/vendor/spinel/test/poly_array_assoc.rb +9 -0
  905. data/vendor/spinel/test/poly_array_compact.rb +15 -0
  906. data/vendor/spinel/test/poly_array_compact.rb.expected +3 -0
  907. data/vendor/spinel/test/poly_array_compact_bang.rb +17 -0
  908. data/vendor/spinel/test/poly_array_compact_bang.rb.expected +3 -0
  909. data/vendor/spinel/test/poly_array_dup.rb +52 -0
  910. data/vendor/spinel/test/poly_array_dup.rb.expected +5 -0
  911. data/vendor/spinel/test/poly_array_flatten.rb +17 -0
  912. data/vendor/spinel/test/poly_array_flatten.rb.expected +4 -0
  913. data/vendor/spinel/test/poly_attr_reader_box_dispatch.expected +1 -0
  914. data/vendor/spinel/test/poly_attr_reader_box_dispatch.rb +35 -0
  915. data/vendor/spinel/test/poly_attr_writer.rb +95 -0
  916. data/vendor/spinel/test/poly_attr_writer.rb.expected +5 -0
  917. data/vendor/spinel/test/poly_class_dispatch.rb +11 -0
  918. data/vendor/spinel/test/poly_class_dispatch.rb.expected +7 -0
  919. data/vendor/spinel/test/poly_dispatch_inherited_attr_reader.rb +20 -0
  920. data/vendor/spinel/test/poly_dispatch_inherited_attr_reader.rb.expected +2 -0
  921. data/vendor/spinel/test/poly_dispatch_inherited_method.rb +19 -0
  922. data/vendor/spinel/test/poly_dispatch_inherited_method.rb.expected +2 -0
  923. data/vendor/spinel/test/poly_dispatch_multilevel_inheritance.rb +28 -0
  924. data/vendor/spinel/test/poly_dispatch_multilevel_inheritance.rb.expected +4 -0
  925. data/vendor/spinel/test/poly_dispatch_narrow_return_type.rb +53 -0
  926. data/vendor/spinel/test/poly_dispatch_narrow_return_type.rb.expected +3 -0
  927. data/vendor/spinel/test/poly_each_receiver_gc_root.rb +40 -0
  928. data/vendor/spinel/test/poly_each_receiver_gc_root.rb.expected +1 -0
  929. data/vendor/spinel/test/poly_gsub_str_arm.rb +24 -0
  930. data/vendor/spinel/test/poly_gsub_str_arm.rb.expected +1 -0
  931. data/vendor/spinel/test/poly_gsub_str_str_hash.rb +37 -0
  932. data/vendor/spinel/test/poly_gsub_str_str_hash.rb.expected +1 -0
  933. data/vendor/spinel/test/poly_idx_int_nullable.rb +14 -0
  934. data/vendor/spinel/test/poly_idx_int_nullable.rb.expected +1 -0
  935. data/vendor/spinel/test/poly_length_string_tag.rb +20 -0
  936. data/vendor/spinel/test/poly_length_string_tag.rb.expected +3 -0
  937. data/vendor/spinel/test/poly_local_is_a_string_narrow_in_non_tail_if.rb +39 -0
  938. data/vendor/spinel/test/poly_local_is_a_string_narrow_in_non_tail_if.rb.expected +1 -0
  939. data/vendor/spinel/test/poly_local_is_a_string_narrow_in_tail_if.rb +23 -0
  940. data/vendor/spinel/test/poly_local_is_a_string_narrow_in_tail_if.rb.expected +1 -0
  941. data/vendor/spinel/test/poly_local_is_a_string_narrow_in_y1_inline.rb +27 -0
  942. data/vendor/spinel/test/poly_local_is_a_string_narrow_in_y1_inline.rb.expected +1 -0
  943. data/vendor/spinel/test/poly_poly_hash_each_value.rb +34 -0
  944. data/vendor/spinel/test/poly_poly_hash_each_value.rb.expected +11 -0
  945. data/vendor/spinel/test/poly_poly_hash_fetch_dup.rb +26 -0
  946. data/vendor/spinel/test/poly_poly_hash_fetch_dup.rb.expected +2 -0
  947. data/vendor/spinel/test/poly_recv_aset_poly_key.rb +30 -0
  948. data/vendor/spinel/test/poly_recv_aset_poly_key.rb.expected +1 -0
  949. data/vendor/spinel/test/poly_recv_dispatch_narrow_module.rb +37 -0
  950. data/vendor/spinel/test/poly_recv_dispatch_narrow_module.rb.expected +3 -0
  951. data/vendor/spinel/test/poly_recv_fetch_arm_incompat.rb +37 -0
  952. data/vendor/spinel/test/poly_recv_fetch_arm_incompat.rb.expected +1 -0
  953. data/vendor/spinel/test/poly_recv_fetch_hash_arms.rb +31 -0
  954. data/vendor/spinel/test/poly_recv_fetch_hash_arms.rb.expected +2 -0
  955. data/vendor/spinel/test/poly_recv_hash_dup.rb +48 -0
  956. data/vendor/spinel/test/poly_recv_hash_each_dispatch.rb +40 -0
  957. data/vendor/spinel/test/poly_recv_hash_each_dispatch.rb.expected +5 -0
  958. data/vendor/spinel/test/poly_recv_map_join.rb +31 -0
  959. data/vendor/spinel/test/poly_recv_map_join.rb.expected +5 -0
  960. data/vendor/spinel/test/poly_recv_range_sym_hash_dispatch.rb +55 -0
  961. data/vendor/spinel/test/poly_recv_range_sym_hash_dispatch.rb.expected +9 -0
  962. data/vendor/spinel/test/poly_recv_two_arg_slice.rb +27 -0
  963. data/vendor/spinel/test/poly_value_into_str_str_hash.rb +44 -0
  964. data/vendor/spinel/test/poly_value_into_str_str_hash.rb.expected +2 -0
  965. data/vendor/spinel/test/prepend_super_basic.rb +18 -0
  966. data/vendor/spinel/test/prepend_super_basic.rb.expected +1 -0
  967. data/vendor/spinel/test/prepend_super_chain.rb +23 -0
  968. data/vendor/spinel/test/prepend_super_chain.rb.expected +1 -0
  969. data/vendor/spinel/test/prepend_super_forward.rb +17 -0
  970. data/vendor/spinel/test/prepend_super_forward.rb.expected +1 -0
  971. data/vendor/spinel/test/prepend_super_multi.rb +25 -0
  972. data/vendor/spinel/test/prepend_super_multi.rb.expected +1 -0
  973. data/vendor/spinel/test/prepend_super_subclass.rb +21 -0
  974. data/vendor/spinel/test/prepend_super_subclass.rb.expected +1 -0
  975. data/vendor/spinel/test/primitive_eq_user_class.rb +84 -0
  976. data/vendor/spinel/test/primitive_eq_user_class.rb.expected +49 -0
  977. data/vendor/spinel/test/proc_anon_dot_call.rb +50 -0
  978. data/vendor/spinel/test/proc_anon_dot_call.rb.expected +5 -0
  979. data/vendor/spinel/test/proc_arg_object.rb +17 -0
  980. data/vendor/spinel/test/proc_arg_object.rb.expected +1 -0
  981. data/vendor/spinel/test/proc_call_value_return.rb +20 -0
  982. data/vendor/spinel/test/proc_call_value_return.rb.expected +5 -0
  983. data/vendor/spinel/test/proc_introspection.rb +11 -0
  984. data/vendor/spinel/test/proc_introspection.rb.expected +6 -0
  985. data/vendor/spinel/test/process_pid.rb +5 -0
  986. data/vendor/spinel/test/process_pid.rb.expected +2 -0
  987. data/vendor/spinel/test/ptr_array_to_poly_array_at_call.rb +39 -0
  988. data/vendor/spinel/test/ptr_array_to_poly_array_at_call.rb.expected +2 -0
  989. data/vendor/spinel/test/public_send.rb +12 -0
  990. data/vendor/spinel/test/public_send.rb.expected +4 -0
  991. data/vendor/spinel/test/puts_class_value.rb +10 -0
  992. data/vendor/spinel/test/puts_class_value.rb.expected +2 -0
  993. data/vendor/spinel/test/puts_nil.rb +7 -0
  994. data/vendor/spinel/test/raise_reraise_in_def.rb +44 -0
  995. data/vendor/spinel/test/raise_unless_isa_narrow.rb +72 -0
  996. data/vendor/spinel/test/raise_unless_isa_narrow.rb.expected +3 -0
  997. data/vendor/spinel/test/range_and_array_range_args.rb +43 -0
  998. data/vendor/spinel/test/range_and_array_range_args.rb.expected +18 -0
  999. data/vendor/spinel/test/range_begin_end_polyarr_include_delete_bang.rb +21 -0
  1000. data/vendor/spinel/test/range_bsearch.rb +11 -0
  1001. data/vendor/spinel/test/range_bsearch.rb.expected +8 -0
  1002. data/vendor/spinel/test/range_case_eq_type_mismatch.rb +10 -0
  1003. data/vendor/spinel/test/range_case_eq_type_mismatch.rb.expected +7 -0
  1004. data/vendor/spinel/test/range_each_fusion.rb +109 -0
  1005. data/vendor/spinel/test/range_each_fusion.rb.expected +16 -0
  1006. data/vendor/spinel/test/range_each_no_block.rb +5 -0
  1007. data/vendor/spinel/test/range_equality.rb +9 -0
  1008. data/vendor/spinel/test/range_exclude_end_size.rb +24 -0
  1009. data/vendor/spinel/test/range_exclude_end_size.rb.expected +18 -0
  1010. data/vendor/spinel/test/range_exclusive_nonliteral.rb +34 -0
  1011. data/vendor/spinel/test/range_overlap_array_flatten_depth.rb +14 -0
  1012. data/vendor/spinel/test/range_overlap_array_flatten_depth.rb.expected +8 -0
  1013. data/vendor/spinel/test/range_step.rb +15 -0
  1014. data/vendor/spinel/test/range_step.rb.expected +5 -0
  1015. data/vendor/spinel/test/range_string_cover.rb +10 -0
  1016. data/vendor/spinel/test/rational_complex_literals.rb +27 -0
  1017. data/vendor/spinel/test/rational_complex_literals.rb.expected +12 -0
  1018. data/vendor/spinel/test/rbs/README.md +45 -0
  1019. data/vendor/spinel/test/rbs/arrays.rbs +10 -0
  1020. data/vendor/spinel/test/rbs/arrays.seed.expected +7 -0
  1021. data/vendor/spinel/test/rbs/dropped_members.rbs +13 -0
  1022. data/vendor/spinel/test/rbs/dropped_members.seed.expected +2 -0
  1023. data/vendor/spinel/test/rbs/dropped_sigs.rbs +14 -0
  1024. data/vendor/spinel/test/rbs/dropped_sigs.seed.expected +2 -0
  1025. data/vendor/spinel/test/rbs/dropped_types.rbs +14 -0
  1026. data/vendor/spinel/test/rbs/dropped_types.seed.expected +2 -0
  1027. data/vendor/spinel/test/rbs/hashes.rbs +11 -0
  1028. data/vendor/spinel/test/rbs/hashes.seed.expected +7 -0
  1029. data/vendor/spinel/test/rbs/ivars.rbs +8 -0
  1030. data/vendor/spinel/test/rbs/ivars.seed.expected +5 -0
  1031. data/vendor/spinel/test/rbs/members.rbs +7 -0
  1032. data/vendor/spinel/test/rbs/members.seed.expected +5 -0
  1033. data/vendor/spinel/test/rbs/nominal.rbs +7 -0
  1034. data/vendor/spinel/test/rbs/nominal.seed.expected +3 -0
  1035. data/vendor/spinel/test/rbs/nullable.rbs +8 -0
  1036. data/vendor/spinel/test/rbs/nullable.seed.expected +5 -0
  1037. data/vendor/spinel/test/rbs/overloads.rbs +13 -0
  1038. data/vendor/spinel/test/rbs/overloads.seed.expected +3 -0
  1039. data/vendor/spinel/test/rbs/scalars.rbs +12 -0
  1040. data/vendor/spinel/test/rbs/scalars.seed.expected +9 -0
  1041. data/vendor/spinel/test/rbs/union_poly.rbs +9 -0
  1042. data/vendor/spinel/test/rbs/union_poly.seed.expected +4 -0
  1043. data/vendor/spinel/test/rbs/unqualified.rbs +13 -0
  1044. data/vendor/spinel/test/rbs/unqualified.seed.expected +4 -0
  1045. data/vendor/spinel/test/recursive_block_forward_value.rb +19 -0
  1046. data/vendor/spinel/test/recursive_block_forward_value.rb.expected +3 -0
  1047. data/vendor/spinel/test/recursive_implicit_yield_value.rb +35 -0
  1048. data/vendor/spinel/test/recursive_implicit_yield_value.rb.expected +7 -0
  1049. data/vendor/spinel/test/regex.rb +7 -0
  1050. data/vendor/spinel/test/regex.rb.expected +2 -0
  1051. data/vendor/spinel/test/regex_backref_oob_nil.rb +13 -0
  1052. data/vendor/spinel/test/regex_backref_oob_nil.rb.expected +5 -0
  1053. data/vendor/spinel/test/regex_const_freeze.rb +17 -0
  1054. data/vendor/spinel/test/regex_const_freeze.rb.expected +3 -0
  1055. data/vendor/spinel/test/regex_hex_shorthand.rb +13 -0
  1056. data/vendor/spinel/test/regex_hex_shorthand.rb.expected +12 -0
  1057. data/vendor/spinel/test/regex_match_nonstring.rb +18 -0
  1058. data/vendor/spinel/test/regex_match_nonstring.rb.expected +3 -0
  1059. data/vendor/spinel/test/regex_namespaced_const.rb +17 -0
  1060. data/vendor/spinel/test/regex_namespaced_const.rb.expected +4 -0
  1061. data/vendor/spinel/test/regex_negated_shorthand_toplevel.rb +9 -0
  1062. data/vendor/spinel/test/regex_negated_shorthand_toplevel.rb.expected +13 -0
  1063. data/vendor/spinel/test/regex_sub_backref.rb +11 -0
  1064. data/vendor/spinel/test/regex_unanchored_class_seq.rb +13 -0
  1065. data/vendor/spinel/test/regex_unanchored_class_seq.rb.expected +6 -0
  1066. data/vendor/spinel/test/regexp_capture_ivar_hash.rb +48 -0
  1067. data/vendor/spinel/test/regexp_capture_ivar_hash.rb.expected +7 -0
  1068. data/vendor/spinel/test/regexp_error_catchable.rb +14 -0
  1069. data/vendor/spinel/test/regexp_error_catchable.rb.expected +3 -0
  1070. data/vendor/spinel/test/regexp_gsub_zero_width.rb +27 -0
  1071. data/vendor/spinel/test/regexp_gsub_zero_width.rb.expected +12 -0
  1072. data/vendor/spinel/test/regexp_last_match_capture.rb +21 -0
  1073. data/vendor/spinel/test/regexp_last_match_capture.rb.expected +7 -0
  1074. data/vendor/spinel/test/regexp_line_anchors.rb +34 -0
  1075. data/vendor/spinel/test/regexp_line_anchors.rb.expected +15 -0
  1076. data/vendor/spinel/test/regexp_local_if_else_union.rb +36 -0
  1077. data/vendor/spinel/test/regexp_local_if_else_union.rb.expected +5 -0
  1078. data/vendor/spinel/test/regexp_match_data.rb +17 -0
  1079. data/vendor/spinel/test/regexp_match_data.rb.expected +8 -0
  1080. data/vendor/spinel/test/regexp_match_p_position.rb +7 -0
  1081. data/vendor/spinel/test/regexp_match_p_position.rb.expected +4 -0
  1082. data/vendor/spinel/test/regexp_new_literal.rb +72 -0
  1083. data/vendor/spinel/test/regexp_new_literal.rb.expected +24 -0
  1084. data/vendor/spinel/test/regexp_source_options.rb +10 -0
  1085. data/vendor/spinel/test/regexp_source_options.rb.expected +5 -0
  1086. data/vendor/spinel/test/regexp_sub_gsub_length.rb +17 -0
  1087. data/vendor/spinel/test/regexp_sub_gsub_length.rb.expected +10 -0
  1088. data/vendor/spinel/test/regexp_sub_gsub_realloc.rb +25 -0
  1089. data/vendor/spinel/test/regexp_sub_gsub_realloc.rb.expected +6 -0
  1090. data/vendor/spinel/test/regexp_threeq.rb +15 -0
  1091. data/vendor/spinel/test/regexp_threeq.rb.expected +4 -0
  1092. data/vendor/spinel/test/require_first_line.rb +7 -0
  1093. data/vendor/spinel/test/require_first_line.rb.expected +1 -0
  1094. data/vendor/spinel/test/require_modifier.rb +12 -0
  1095. data/vendor/spinel/test/require_same_line.rb +5 -0
  1096. data/vendor/spinel/test/require_same_line.rb.expected +2 -0
  1097. data/vendor/spinel/test/require_unsupported_lib.rb +8 -0
  1098. data/vendor/spinel/test/require_unsupported_lib.rb.expected +2 -0
  1099. data/vendor/spinel/test/rescue_bind_in_fiber_body.rb +24 -0
  1100. data/vendor/spinel/test/rescue_bind_in_fiber_body.rb.expected +6 -0
  1101. data/vendor/spinel/test/rescue_bind_in_lambda_proc_body.rb +16 -0
  1102. data/vendor/spinel/test/rescue_bind_in_lambda_proc_body.rb.expected +4 -0
  1103. data/vendor/spinel/test/rescue_walks_class_hierarchy.rb +37 -0
  1104. data/vendor/spinel/test/rescue_walks_class_hierarchy.rb.expected +7 -0
  1105. data/vendor/spinel/test/rescue_widens_nil_local_to_exception.expected +1 -0
  1106. data/vendor/spinel/test/rescue_widens_nil_local_to_exception.rb +11 -0
  1107. data/vendor/spinel/test/respond_to_def_self_method.rb +14 -0
  1108. data/vendor/spinel/test/respond_to_module_singleton_accessor.rb +10 -0
  1109. data/vendor/spinel/test/respond_to_module_singleton_accessor.rb.expected +3 -0
  1110. data/vendor/spinel/test/respond_to_primitive.rb +9 -0
  1111. data/vendor/spinel/test/respond_to_primitive.rb.expected +5 -0
  1112. data/vendor/spinel/test/return_unify_int_vs_pointer.rb +37 -0
  1113. data/vendor/spinel/test/return_unify_int_vs_pointer.rb.expected +4 -0
  1114. data/vendor/spinel/test/return_unify_isa_early_return.rb +29 -0
  1115. data/vendor/spinel/test/return_unify_isa_early_return.rb.expected +2 -0
  1116. data/vendor/spinel/test/rightward_assign_destructure.rb +27 -0
  1117. data/vendor/spinel/test/rightward_assign_destructure.rb.expected +8 -0
  1118. data/vendor/spinel/test/safe_navigation_returns_nil.expected +6 -0
  1119. data/vendor/spinel/test/safe_navigation_returns_nil.rb +28 -0
  1120. data/vendor/spinel/test/same_named_attr_no_widen.rb +24 -0
  1121. data/vendor/spinel/test/same_named_attr_no_widen.rb.expected +1 -0
  1122. data/vendor/spinel/test/scan_locals_def_boundary.rb +58 -0
  1123. data/vendor/spinel/test/scan_locals_def_boundary.rb.expected +2 -0
  1124. data/vendor/spinel/test/scan_walkers_def_boundary.rb +52 -0
  1125. data/vendor/spinel/test/scan_walkers_def_boundary.rb.expected +4 -0
  1126. data/vendor/spinel/test/self_class_divergent_returns.rb +61 -0
  1127. data/vendor/spinel/test/self_class_divergent_returns.rb.expected +3 -0
  1128. data/vendor/spinel/test/self_class_new_construction.rb +16 -0
  1129. data/vendor/spinel/test/self_class_new_construction.rb.expected +2 -0
  1130. data/vendor/spinel/test/self_operator_subclass_dispatch.rb +40 -0
  1131. data/vendor/spinel/test/self_operator_subclass_dispatch.rb.expected +2 -0
  1132. data/vendor/spinel/test/signal_trap_stub.rb +30 -0
  1133. data/vendor/spinel/test/signal_trap_stub.rb.expected +3 -0
  1134. data/vendor/spinel/test/sort_min_max_block_comparator.rb +18 -0
  1135. data/vendor/spinel/test/sort_min_max_block_comparator.rb.expected +7 -0
  1136. data/vendor/spinel/test/source_encoding.rb +19 -0
  1137. data/vendor/spinel/test/source_encoding.rb.expected +9 -0
  1138. data/vendor/spinel/test/sp_crypto_basic.rb +45 -0
  1139. data/vendor/spinel/test/sp_crypto_basic.rb.expected +6 -0
  1140. data/vendor/spinel/test/sp_crypto_sha1.rb +18 -0
  1141. data/vendor/spinel/test/sp_crypto_sha1.rb.expected +3 -0
  1142. data/vendor/spinel/test/sp_net_basic.rb +17 -0
  1143. data/vendor/spinel/test/sp_net_basic.rb.expected +2 -0
  1144. data/vendor/spinel/test/splat_heterogeneous_call.rb +14 -0
  1145. data/vendor/spinel/test/splat_params_instance.rb +21 -0
  1146. data/vendor/spinel/test/splat_params_instance.rb.expected +8 -0
  1147. data/vendor/spinel/test/sprintf_long_interp.rb +23 -0
  1148. data/vendor/spinel/test/sprintf_long_interp.rb.expected +3 -0
  1149. data/vendor/spinel/test/stdlib_class_in_ivar.rb +85 -0
  1150. data/vendor/spinel/test/stdlib_class_in_ivar.rb.expected +7 -0
  1151. data/vendor/spinel/test/str_array_max_min_by.rb +6 -0
  1152. data/vendor/spinel/test/str_array_sort_by.rb +11 -0
  1153. data/vendor/spinel/test/str_array_sort_by.rb.expected +5 -0
  1154. data/vendor/spinel/test/str_chomp_paragraph_mode.rb +16 -0
  1155. data/vendor/spinel/test/str_chomp_paragraph_mode.rb.expected +9 -0
  1156. data/vendor/spinel/test/str_count_multi_arg.rb +11 -0
  1157. data/vendor/spinel/test/str_count_multi_arg.rb.expected +4 -0
  1158. data/vendor/spinel/test/str_delete_count_negation.rb +16 -0
  1159. data/vendor/spinel/test/str_delete_count_negation.rb.expected +6 -0
  1160. data/vendor/spinel/test/str_force_encoding_return.rb +26 -0
  1161. data/vendor/spinel/test/str_force_encoding_return.rb.expected +3 -0
  1162. data/vendor/spinel/test/str_int_hash_missing_key_nil.rb +16 -0
  1163. data/vendor/spinel/test/str_int_hash_missing_key_nil.rb.expected +10 -0
  1164. data/vendor/spinel/test/str_match_position.rb +15 -0
  1165. data/vendor/spinel/test/str_match_position.rb.expected +8 -0
  1166. data/vendor/spinel/test/str_method_nil_arg_no_segv.rb +47 -0
  1167. data/vendor/spinel/test/str_method_nil_arg_no_segv.rb.expected +7 -0
  1168. data/vendor/spinel/test/str_oct_prefix.rb +11 -0
  1169. data/vendor/spinel/test/str_oct_prefix.rb.expected +5 -0
  1170. data/vendor/spinel/test/str_ord_empty.rb +11 -0
  1171. data/vendor/spinel/test/str_ord_empty.rb.expected +3 -0
  1172. data/vendor/spinel/test/str_poly_hash_dup_widen.rb +21 -0
  1173. data/vendor/spinel/test/str_poly_hash_dup_widen.rb.expected +4 -0
  1174. data/vendor/spinel/test/str_poly_hash_dup_widen_from_int.rb +17 -0
  1175. data/vendor/spinel/test/str_poly_hash_dup_widen_from_int.rb.expected +3 -0
  1176. data/vendor/spinel/test/str_rindex_position.rb +23 -0
  1177. data/vendor/spinel/test/str_rindex_position.rb.expected +17 -0
  1178. data/vendor/spinel/test/str_split_space_whitespace.rb +10 -0
  1179. data/vendor/spinel/test/str_split_space_whitespace.rb.expected +4 -0
  1180. data/vendor/spinel/test/str_split_trailing_empty.rb +12 -0
  1181. data/vendor/spinel/test/str_split_trailing_empty.rb.expected +7 -0
  1182. data/vendor/spinel/test/str_squeeze_arg.rb +18 -0
  1183. data/vendor/spinel/test/str_squeeze_arg.rb.expected +7 -0
  1184. data/vendor/spinel/test/str_str_hash_nullable_bracket_assign.rb +39 -0
  1185. data/vendor/spinel/test/str_str_hash_nullable_bracket_assign.rb.expected +5 -0
  1186. data/vendor/spinel/test/str_to_i_overflow.rb +32 -0
  1187. data/vendor/spinel/test/str_to_i_overflow.rb.expected +6 -0
  1188. data/vendor/spinel/test/str_tr_negation.rb +10 -0
  1189. data/vendor/spinel/test/str_tr_negation.rb.expected +4 -0
  1190. data/vendor/spinel/test/string_byteslice.rb +9 -0
  1191. data/vendor/spinel/test/string_byteslice.rb.expected +6 -0
  1192. data/vendor/spinel/test/string_casecmp.rb +9 -0
  1193. data/vendor/spinel/test/string_casecmp.rb.expected +7 -0
  1194. data/vendor/spinel/test/string_charset_range_notation.rb +9 -0
  1195. data/vendor/spinel/test/string_charset_range_notation.rb.expected +5 -0
  1196. data/vendor/spinel/test/string_chomp_bang_mutates.rb +20 -0
  1197. data/vendor/spinel/test/string_chomp_bang_mutates.rb.expected +4 -0
  1198. data/vendor/spinel/test/string_crypt.rb +22 -0
  1199. data/vendor/spinel/test/string_crypt.rb.expected +7 -0
  1200. data/vendor/spinel/test/string_delete_prefix_suffix_bang.rb +29 -0
  1201. data/vendor/spinel/test/string_delete_prefix_suffix_bang.rb.expected +5 -0
  1202. data/vendor/spinel/test/string_each_char_returns_self.rb +15 -0
  1203. data/vendor/spinel/test/string_each_line_expr.rb +25 -0
  1204. data/vendor/spinel/test/string_each_line_expr.rb.expected +19 -0
  1205. data/vendor/spinel/test/string_each_line_keeps_newline.rb +15 -0
  1206. data/vendor/spinel/test/string_encoding.rb +8 -0
  1207. data/vendor/spinel/test/string_encoding.rb.expected +5 -0
  1208. data/vendor/spinel/test/string_enum_block_returns_self.rb +27 -0
  1209. data/vendor/spinel/test/string_enum_block_returns_self.rb.expected +11 -0
  1210. data/vendor/spinel/test/string_format_polyarr.rb +6 -0
  1211. data/vendor/spinel/test/string_frozen_mutation_raises.rb +27 -0
  1212. data/vendor/spinel/test/string_frozen_mutation_raises.rb.expected +4 -0
  1213. data/vendor/spinel/test/string_gsub_block.rb +8 -0
  1214. data/vendor/spinel/test/string_index_nil_typeerror.rb +9 -0
  1215. data/vendor/spinel/test/string_index_nil_typeerror.rb.expected +1 -0
  1216. data/vendor/spinel/test/string_index_regex.rb +9 -0
  1217. data/vendor/spinel/test/string_index_regex.rb.expected +6 -0
  1218. data/vendor/spinel/test/string_lshift_int_codepoint.rb +9 -0
  1219. data/vendor/spinel/test/string_lshift_int_codepoint.rb.expected +2 -0
  1220. data/vendor/spinel/test/string_multiply_overflow.rb +14 -0
  1221. data/vendor/spinel/test/string_multiply_overflow.rb.expected +4 -0
  1222. data/vendor/spinel/test/string_nil_arg_typeerror.rb +38 -0
  1223. data/vendor/spinel/test/string_nil_arg_typeerror.rb.expected +5 -0
  1224. data/vendor/spinel/test/string_param_inference_from_body.rb +40 -0
  1225. data/vendor/spinel/test/string_param_inference_from_body.rb.expected +3 -0
  1226. data/vendor/spinel/test/string_partition_regex_and_puts.rb +8 -0
  1227. data/vendor/spinel/test/string_partition_regex_and_puts.rb.expected +6 -0
  1228. data/vendor/spinel/test/string_range_to_a.rb +10 -0
  1229. data/vendor/spinel/test/string_range_to_a.rb.expected +4 -0
  1230. data/vendor/spinel/test/string_replace_prepend_insert_clear.rb +34 -0
  1231. data/vendor/spinel/test/string_rpartition_regex.rb +10 -0
  1232. data/vendor/spinel/test/string_scanner_basic.rb +35 -0
  1233. data/vendor/spinel/test/string_scanner_check_unscan.rb +24 -0
  1234. data/vendor/spinel/test/string_scanner_getch_utf8.rb +26 -0
  1235. data/vendor/spinel/test/string_scanner_nullable.rb +75 -0
  1236. data/vendor/spinel/test/string_scanner_nullable.rb.expected +37 -0
  1237. data/vendor/spinel/test/string_scanner_scan_to_local.rb +11 -0
  1238. data/vendor/spinel/test/string_scanner_unscan_error.rb +54 -0
  1239. data/vendor/spinel/test/string_scrub.rb +7 -0
  1240. data/vendor/spinel/test/string_slice_range.rb +18 -0
  1241. data/vendor/spinel/test/string_split_capture.rb +8 -0
  1242. data/vendor/spinel/test/string_split_inline_arg_gc_root.rb +77 -0
  1243. data/vendor/spinel/test/string_split_inline_arg_gc_root.rb.expected +1 -0
  1244. data/vendor/spinel/test/string_squeeze_no_trailing_nul.rb +12 -0
  1245. data/vendor/spinel/test/string_sub_hash_replacement.rb +8 -0
  1246. data/vendor/spinel/test/string_to_i_base.rb +9 -0
  1247. data/vendor/spinel/test/string_to_i_base.rb.expected +6 -0
  1248. data/vendor/spinel/test/string_to_i_base_zero.rb +9 -0
  1249. data/vendor/spinel/test/string_to_i_overflow_raises.rb +30 -0
  1250. data/vendor/spinel/test/string_to_i_overflow_raises.rb.expected +6 -0
  1251. data/vendor/spinel/test/string_undump.rb +9 -0
  1252. data/vendor/spinel/test/string_upto.rb +20 -0
  1253. data/vendor/spinel/test/string_with_embedded_nul.rb +46 -0
  1254. data/vendor/spinel/test/string_with_embedded_nul.rb.expected +16 -0
  1255. data/vendor/spinel/test/stringio_new_mode.rb +21 -0
  1256. data/vendor/spinel/test/stringio_new_mode.rb.expected +5 -0
  1257. data/vendor/spinel/test/stringio_new_nil.rb +14 -0
  1258. data/vendor/spinel/test/stringio_new_nil.rb.expected +2 -0
  1259. data/vendor/spinel/test/stringio_open.rb +30 -0
  1260. data/vendor/spinel/test/stringio_open.rb.expected +10 -0
  1261. data/vendor/spinel/test/stringio_putc_fsync.rb +24 -0
  1262. data/vendor/spinel/test/stringio_putc_fsync.rb.expected +3 -0
  1263. data/vendor/spinel/test/strip_nul.rb +13 -0
  1264. data/vendor/spinel/test/strip_nul.rb.expected +8 -0
  1265. data/vendor/spinel/test/struct_dig.rb +16 -0
  1266. data/vendor/spinel/test/struct_int_member_unboxed.rb +14 -0
  1267. data/vendor/spinel/test/struct_int_member_unboxed.rb.expected +6 -0
  1268. data/vendor/spinel/test/struct_member_name_no_global_merge.rb +28 -0
  1269. data/vendor/spinel/test/struct_member_name_no_global_merge.rb.expected +3 -0
  1270. data/vendor/spinel/test/struct_to_a_values.rb +12 -0
  1271. data/vendor/spinel/test/struct_to_a_values.rb.expected +6 -0
  1272. data/vendor/spinel/test/struct_to_h.rb +8 -0
  1273. data/vendor/spinel/test/struct_to_h.rb.expected +4 -0
  1274. data/vendor/spinel/test/struct_to_h_block.rb +30 -0
  1275. data/vendor/spinel/test/super_in_non_initialize.rb +44 -0
  1276. data/vendor/spinel/test/super_in_non_initialize.rb.expected +3 -0
  1277. data/vendor/spinel/test/super_with_args.rb +25 -0
  1278. data/vendor/spinel/test/super_with_args.rb.expected +4 -0
  1279. data/vendor/spinel/test/sym_hash_cross_variant_merge.rb +40 -0
  1280. data/vendor/spinel/test/sym_hash_cross_variant_merge.rb.expected +3 -0
  1281. data/vendor/spinel/test/sym_int_hash_merge.rb +52 -0
  1282. data/vendor/spinel/test/sym_int_hash_merge.rb.expected +11 -0
  1283. data/vendor/spinel/test/sym_int_hash_missing_key_nil.rb +15 -0
  1284. data/vendor/spinel/test/sym_int_hash_missing_key_nil.rb.expected +11 -0
  1285. data/vendor/spinel/test/sym_poly_hash_merge_sym_int.rb +18 -0
  1286. data/vendor/spinel/test/sym_poly_hash_merge_sym_int.rb.expected +4 -0
  1287. data/vendor/spinel/test/symbol_id2name_ruby_desc_minmax.rb +13 -0
  1288. data/vendor/spinel/test/symbol_id2name_ruby_desc_minmax.rb.expected +7 -0
  1289. data/vendor/spinel/test/symbol_to_proc_after_positional.rb +18 -0
  1290. data/vendor/spinel/test/symbol_to_proc_after_positional.rb.expected +5 -0
  1291. data/vendor/spinel/test/symbol_upcase_interpolation.rb +24 -0
  1292. data/vendor/spinel/test/symbol_upcase_interpolation.rb.expected +5 -0
  1293. data/vendor/spinel/test/system_argument_list.rb +15 -0
  1294. data/vendor/spinel/test/system_argument_list.rb.expected +7 -0
  1295. data/vendor/spinel/test/thread_new_value.rb +5 -0
  1296. data/vendor/spinel/test/thread_new_value.rb.expected +2 -0
  1297. data/vendor/spinel/test/time_localtime_gmtime.rb +19 -0
  1298. data/vendor/spinel/test/time_mktime_local_utc.rb +24 -0
  1299. data/vendor/spinel/test/time_mktime_local_utc.rb.expected +13 -0
  1300. data/vendor/spinel/test/time_strftime_long_format.rb +21 -0
  1301. data/vendor/spinel/test/time_strftime_long_format.rb.expected +5 -0
  1302. data/vendor/spinel/test/time_subsec_utc.rb +19 -0
  1303. data/vendor/spinel/test/time_subsec_utc.rb.expected +9 -0
  1304. data/vendor/spinel/test/time_to_s.rb +5 -0
  1305. data/vendor/spinel/test/toplevel_include_module_function.rb +101 -0
  1306. data/vendor/spinel/test/toplevel_include_module_function.rb.expected +8 -0
  1307. data/vendor/spinel/test/toplevel_kwrest_block_param.rb +19 -0
  1308. data/vendor/spinel/test/toplevel_kwrest_block_param.rb.expected +2 -0
  1309. data/vendor/spinel/test/tuple_inspect.rb +9 -0
  1310. data/vendor/spinel/test/tuple_inspect.rb.expected +4 -0
  1311. data/vendor/spinel/test/typed_array_empty_returns_nil.rb +19 -0
  1312. data/vendor/spinel/test/typed_array_empty_returns_nil.rb.expected +8 -0
  1313. data/vendor/spinel/test/typed_array_include_cross_type.rb +6 -0
  1314. data/vendor/spinel/test/typed_hash_caller_no_body_widen.rb +46 -0
  1315. data/vendor/spinel/test/typed_hash_caller_no_body_widen.rb.expected +1 -0
  1316. data/vendor/spinel/test/typed_hash_inspect_and_each_value.rb +12 -0
  1317. data/vendor/spinel/test/typed_hash_inspect_and_each_value.rb.expected +6 -0
  1318. data/vendor/spinel/test/typed_hash_missing_returns_nil.rb +17 -0
  1319. data/vendor/spinel/test/typed_hash_missing_returns_nil.rb.expected +4 -0
  1320. data/vendor/spinel/test/unary_operator_methods.rb +19 -0
  1321. data/vendor/spinel/test/unary_operator_methods.rb.expected +3 -0
  1322. data/vendor/spinel/test/undef_method_raises.rb +34 -0
  1323. data/vendor/spinel/test/undef_method_raises.rb.expected +3 -0
  1324. data/vendor/spinel/test/uninit_const_raises_nameerror.rb +18 -0
  1325. data/vendor/spinel/test/uninit_ivar_returns_nil.rb +23 -0
  1326. data/vendor/spinel/test/uninit_ivar_returns_nil.rb.expected +4 -0
  1327. data/vendor/spinel/test/unless_return_path_hash.rb +39 -0
  1328. data/vendor/spinel/test/unless_return_path_hash.rb.expected +6 -0
  1329. data/vendor/spinel/test/user_class_aset_dispatch.rb +75 -0
  1330. data/vendor/spinel/test/user_class_aset_dispatch.rb.expected +3 -0
  1331. data/vendor/spinel/test/value_type_tuple_gc_scan.rb +28 -0
  1332. data/vendor/spinel/test/value_type_tuple_gc_scan.rb.expected +2 -0
  1333. data/vendor/spinel/test/values_at.rb +19 -0
  1334. data/vendor/spinel/test/values_at.rb.expected +4 -0
  1335. data/vendor/spinel/test/volatile_strip_skips_coerced_arg.expected +1 -0
  1336. data/vendor/spinel/test/volatile_strip_skips_coerced_arg.rb +30 -0
  1337. data/vendor/spinel/test/warn_kernel.rb +13 -0
  1338. data/vendor/spinel/test/warn_kernel.rb.expected +3 -0
  1339. data/vendor/spinel/test/warn_unresolved_call_context.rb +20 -0
  1340. data/vendor/spinel/test/when_splat_rational_complex.rb +30 -0
  1341. data/vendor/spinel/test/when_splat_rational_complex.rb.expected +6 -0
  1342. data/vendor/spinel/test/yield_call_assigned_return.rb +41 -0
  1343. data/vendor/spinel/test/yield_call_assigned_return.rb.expected +6 -0
  1344. data/vendor/spinel/test/yield_typed_hash_block_local.rb +41 -0
  1345. data/vendor/spinel/test/yield_typed_hash_block_local.rb.expected +2 -0
  1346. data/vendor/spinel/test/yield_value_return.rb +52 -0
  1347. data/vendor/spinel/test/yield_value_return.rb.expected +8 -0
  1348. data/vendor/spinel/test/yield_value_returns_from_method.expected +6 -0
  1349. data/vendor/spinel/test/yield_value_returns_from_method.rb +27 -0
  1350. data/vendor/spinel/tools/fast-bootstrap +74 -0
  1351. metadata +1326 -279
  1352. data/vendor/spinel/test/alias_method.rb +0 -28
  1353. data/vendor/spinel/test/alias_method.rb.expected +0 -5
  1354. data/vendor/spinel/test/and_node_poly_operand.rb +0 -24
  1355. data/vendor/spinel/test/array_3d_nested.rb +0 -48
  1356. data/vendor/spinel/test/array_clear_typed.rb +0 -40
  1357. data/vendor/spinel/test/array_clear_typed.rb.expected +0 -7
  1358. data/vendor/spinel/test/array_concat.rb +0 -18
  1359. data/vendor/spinel/test/array_concat.rb.expected +0 -2
  1360. data/vendor/spinel/test/array_each_with_object.rb +0 -17
  1361. data/vendor/spinel/test/array_flat_map.rb +0 -16
  1362. data/vendor/spinel/test/array_flat_map.rb.expected +0 -2
  1363. data/vendor/spinel/test/array_keyed_hash_int_array_eql.rb +0 -29
  1364. data/vendor/spinel/test/array_keyed_hash_int_array_eql.rb.expected +0 -6
  1365. data/vendor/spinel/test/array_method_name_clash.rb +0 -15
  1366. data/vendor/spinel/test/array_new_block_typed_container.rb +0 -37
  1367. data/vendor/spinel/test/array_new_block_typed_container.rb.expected +0 -7
  1368. data/vendor/spinel/test/array_new_empty_inner_deferred.rb +0 -47
  1369. data/vendor/spinel/test/array_new_empty_inner_deferred.rb.expected +0 -8
  1370. data/vendor/spinel/test/array_partition_gc.rb +0 -20
  1371. data/vendor/spinel/test/array_partition_gc.rb.expected +0 -3
  1372. data/vendor/spinel/test/array_plus.rb +0 -18
  1373. data/vendor/spinel/test/array_plus.rb.expected +0 -2
  1374. data/vendor/spinel/test/array_rotate_bang.rb +0 -54
  1375. data/vendor/spinel/test/array_rotate_bang.rb.expected +0 -34
  1376. data/vendor/spinel/test/array_shuffle_ptr.rb +0 -11
  1377. data/vendor/spinel/test/attr_writer_poly_box.rb +0 -24
  1378. data/vendor/spinel/test/attr_writer_poly_no_double_eval.rb +0 -29
  1379. data/vendor/spinel/test/attr_writer_poly_no_double_eval.rb.expected +0 -3
  1380. data/vendor/spinel/test/attr_writer_returns_rhs.rb +0 -23
  1381. data/vendor/spinel/test/auto_unbox_keeps_int_slot.rb +0 -38
  1382. data/vendor/spinel/test/auto_unbox_keeps_int_slot.rb.expected +0 -3
  1383. data/vendor/spinel/test/auto_unbox_poly_to_int_local.rb +0 -36
  1384. data/vendor/spinel/test/auto_unbox_poly_to_int_local.rb.expected +0 -2
  1385. data/vendor/spinel/test/bare_return_in_cls_method.rb +0 -46
  1386. data/vendor/spinel/test/bare_return_in_cls_method.rb.expected +0 -2
  1387. data/vendor/spinel/test/bare_return_in_poly_method.rb +0 -26
  1388. data/vendor/spinel/test/bare_return_in_poly_method.rb.expected +0 -2
  1389. data/vendor/spinel/test/bound_method_array.rb +0 -22
  1390. data/vendor/spinel/test/bound_method_array.rb.expected +0 -4
  1391. data/vendor/spinel/test/bound_method_basic.rb +0 -27
  1392. data/vendor/spinel/test/bound_method_basic.rb.expected +0 -2
  1393. data/vendor/spinel/test/call_op_write.rb +0 -51
  1394. data/vendor/spinel/test/call_op_write.rb.expected +0 -11
  1395. data/vendor/spinel/test/chained_attr_setter.rb +0 -55
  1396. data/vendor/spinel/test/chained_ivar_op_assign_emits_inner_write.rb +0 -28
  1397. data/vendor/spinel/test/chained_ivar_op_assign_emits_inner_write.rb.expected +0 -3
  1398. data/vendor/spinel/test/chained_ivar_write_split.rb +0 -26
  1399. data/vendor/spinel/test/chained_ivar_write_split.rb.expected +0 -3
  1400. data/vendor/spinel/test/chained_ivar_write_subclass.rb +0 -26
  1401. data/vendor/spinel/test/chained_ivar_write_subclass.rb.expected +0 -2
  1402. data/vendor/spinel/test/chained_or_assign_collection_array_nested.rb +0 -32
  1403. data/vendor/spinel/test/chained_or_assign_collection_array_nested.rb.expected +0 -3
  1404. data/vendor/spinel/test/chained_or_assign_collection_element.rb +0 -29
  1405. data/vendor/spinel/test/chained_or_assign_collection_element.rb.expected +0 -2
  1406. data/vendor/spinel/test/chained_or_assign_collection_poly_array.rb +0 -25
  1407. data/vendor/spinel/test/chained_or_assign_collection_poly_array.rb.expected +0 -3
  1408. data/vendor/spinel/test/chained_or_assign_collection_str_keys.rb +0 -24
  1409. data/vendor/spinel/test/chained_or_assign_collection_str_keys.rb.expected +0 -3
  1410. data/vendor/spinel/test/class_constant_sym_array.rb +0 -19
  1411. data/vendor/spinel/test/class_var_write.rb +0 -19
  1412. data/vendor/spinel/test/cls_ivar_type_parent_defer.rb +0 -32
  1413. data/vendor/spinel/test/cls_method_object.rb +0 -31
  1414. data/vendor/spinel/test/cls_method_object.rb.expected +0 -2
  1415. data/vendor/spinel/test/comparable.rb +0 -21
  1416. data/vendor/spinel/test/comparable.rb.expected +0 -5
  1417. data/vendor/spinel/test/default_argv_narrows_from_string_call_site.rb +0 -32
  1418. data/vendor/spinel/test/each_poly_recv_block_auto_splat.rb +0 -43
  1419. data/vendor/spinel/test/each_poly_recv_block_auto_splat.rb.expected +0 -2
  1420. data/vendor/spinel/test/each_with_object_seed_shadow.rb +0 -14
  1421. data/vendor/spinel/test/each_with_object_seed_shadow.rb.expected +0 -4
  1422. data/vendor/spinel/test/empty_hash_ivar_string_value.rb +0 -51
  1423. data/vendor/spinel/test/empty_hash_ivar_string_value.rb.expected +0 -4
  1424. data/vendor/spinel/test/ensure_raise_overrides_body_raise.rb +0 -19
  1425. data/vendor/spinel/test/ensure_raise_overrides_body_raise.rb.expected +0 -1
  1426. data/vendor/spinel/test/ensure_runs_on_raise.rb +0 -32
  1427. data/vendor/spinel/test/ensure_runs_on_raise.rb.expected +0 -3
  1428. data/vendor/spinel/test/ensure_runs_on_raise_nested.rb +0 -38
  1429. data/vendor/spinel/test/ensure_runs_on_raise_nested.rb.expected +0 -4
  1430. data/vendor/spinel/test/ensure_runs_on_return_from_rescue.rb +0 -26
  1431. data/vendor/spinel/test/ensure_runs_on_return_from_rescue.rb.expected +0 -2
  1432. data/vendor/spinel/test/ensure_runs_on_return_nested.rb +0 -37
  1433. data/vendor/spinel/test/ensure_runs_on_return_nested.rb.expected +0 -3
  1434. data/vendor/spinel/test/enumerable.rb +0 -19
  1435. data/vendor/spinel/test/enumerable.rb.expected +0 -2
  1436. data/vendor/spinel/test/exceptions.rb +0 -34
  1437. data/vendor/spinel/test/exceptions.rb.expected +0 -4
  1438. data/vendor/spinel/test/fiber_ivar_persists_across_yield.rb +0 -22
  1439. data/vendor/spinel/test/fiber_ivar_persists_across_yield.rb.expected +0 -3
  1440. data/vendor/spinel/test/fiber_yield_across_method_call.rb +0 -28
  1441. data/vendor/spinel/test/fiber_yield_across_method_call.rb.expected +0 -3
  1442. data/vendor/spinel/test/file_class_methods_int_recv.rb +0 -20
  1443. data/vendor/spinel/test/file_class_methods_int_recv.rb.expected +0 -3
  1444. data/vendor/spinel/test/float_array_sort.rb +0 -18
  1445. data/vendor/spinel/test/float_array_sort.rb.expected +0 -8
  1446. data/vendor/spinel/test/forward_call_class_method_inherited_init.rb +0 -36
  1447. data/vendor/spinel/test/forward_call_class_method_inherited_init.rb.expected +0 -1
  1448. data/vendor/spinel/test/forward_call_class_method_inherited_init_int_array.rb +0 -32
  1449. data/vendor/spinel/test/forward_call_class_method_inherited_init_obj.rb +0 -41
  1450. data/vendor/spinel/test/forward_call_class_method_inherited_init_obj.rb.expected +0 -1
  1451. data/vendor/spinel/test/forward_call_class_method_int_array.rb +0 -26
  1452. data/vendor/spinel/test/forward_call_class_method_int_array.rb.expected +0 -1
  1453. data/vendor/spinel/test/forward_call_class_method_nested.rb +0 -35
  1454. data/vendor/spinel/test/forward_call_class_method_obj.rb +0 -36
  1455. data/vendor/spinel/test/forward_call_class_method_obj.rb.expected +0 -1
  1456. data/vendor/spinel/test/forward_call_param_type_int_array.rb +0 -34
  1457. data/vendor/spinel/test/forward_call_param_type_int_array.rb.expected +0 -1
  1458. data/vendor/spinel/test/forward_call_param_type_obj.rb +0 -38
  1459. data/vendor/spinel/test/forward_call_param_type_obj.rb.expected +0 -1
  1460. data/vendor/spinel/test/gc_save_double_in_new.rb +0 -13
  1461. data/vendor/spinel/test/gc_save_double_in_new.rb.expected +0 -1
  1462. data/vendor/spinel/test/gc_scan_skip_inherited_ivar.rb +0 -54
  1463. data/vendor/spinel/test/gc_scan_skip_inherited_ivar.rb.expected +0 -2
  1464. data/vendor/spinel/test/heterogeneous_dispatch_int_return_narrow.rb +0 -46
  1465. data/vendor/spinel/test/heterogeneous_dispatch_int_return_narrow.rb.expected +0 -2
  1466. data/vendor/spinel/test/if_static_false_skips_dead_branch_compile.rb +0 -50
  1467. data/vendor/spinel/test/if_static_false_skips_dead_branch_compile.rb.expected +0 -3
  1468. data/vendor/spinel/test/implicit_self_param_poly.rb +0 -17
  1469. data/vendor/spinel/test/implicit_self_param_poly.rb.expected +0 -1
  1470. data/vendor/spinel/test/inherit.rb +0 -52
  1471. data/vendor/spinel/test/inherit.rb.expected +0 -7
  1472. data/vendor/spinel/test/inherited_method_param_widen.rb +0 -49
  1473. data/vendor/spinel/test/init_locals.rb +0 -43
  1474. data/vendor/spinel/test/init_locals.rb.expected +0 -3
  1475. data/vendor/spinel/test/initialize_param_poly_call_sites.rb +0 -20
  1476. data/vendor/spinel/test/initialize_param_poly_call_sites.rb.expected +0 -2
  1477. data/vendor/spinel/test/initialize_param_through_call.rb +0 -15
  1478. data/vendor/spinel/test/initialize_void_wrapper_gc_save.rb +0 -40
  1479. data/vendor/spinel/test/int_array_replace_expr.rb +0 -23
  1480. data/vendor/spinel/test/int_array_replace_expr.rb.expected +0 -7
  1481. data/vendor/spinel/test/intarray_slice_assign_from_intarray_ptr_array_first.rb +0 -25
  1482. data/vendor/spinel/test/intarray_slice_assign_from_intarray_ptr_array_first.rb.expected +0 -1
  1483. data/vendor/spinel/test/integer_div.rb +0 -21
  1484. data/vendor/spinel/test/integer_div.rb.expected +0 -10
  1485. data/vendor/spinel/test/introspect.rb +0 -35
  1486. data/vendor/spinel/test/introspect.rb.expected +0 -11
  1487. data/vendor/spinel/test/issue176_empty_hash_default.rb +0 -34
  1488. data/vendor/spinel/test/issue176_empty_hash_default.rb.expected +0 -3
  1489. data/vendor/spinel/test/issue204_user_find_fetch.rb +0 -25
  1490. data/vendor/spinel/test/issue204_user_find_fetch.rb.expected +0 -5
  1491. data/vendor/spinel/test/issue207_factory_pattern.rb +0 -35
  1492. data/vendor/spinel/test/issue207_factory_pattern.rb.expected +0 -1
  1493. data/vendor/spinel/test/issue207_full_repro.rb +0 -52
  1494. data/vendor/spinel/test/issue207_full_repro.rb.expected +0 -1
  1495. data/vendor/spinel/test/issue208_inherited_class_method.rb +0 -24
  1496. data/vendor/spinel/test/issue208_inherited_class_method.rb.expected +0 -4
  1497. data/vendor/spinel/test/issue219_aref_chain.rb +0 -36
  1498. data/vendor/spinel/test/issue219_aref_chain.rb.expected +0 -5
  1499. data/vendor/spinel/test/issue235_chain_tail_widening.rb +0 -48
  1500. data/vendor/spinel/test/issue235_chain_tail_widening.rb.expected +0 -5
  1501. data/vendor/spinel/test/ivar_and_write_basic.rb +0 -34
  1502. data/vendor/spinel/test/ivar_and_write_basic.rb.expected +0 -5
  1503. data/vendor/spinel/test/ivar_c_keyword.rb +0 -14
  1504. data/vendor/spinel/test/ivar_c_keyword.rb.expected +0 -1
  1505. data/vendor/spinel/test/ivar_float_array.rb +0 -59
  1506. data/vendor/spinel/test/ivar_float_array.rb.expected +0 -11
  1507. data/vendor/spinel/test/ivar_op_assign_bitwise_and_shift.rb +0 -22
  1508. data/vendor/spinel/test/ivar_op_assign_bitwise_and_shift.rb.expected +0 -6
  1509. data/vendor/spinel/test/ivar_or_write_basic.rb +0 -57
  1510. data/vendor/spinel/test/ivar_or_write_basic.rb.expected +0 -9
  1511. data/vendor/spinel/test/ivar_writer_heterogeneity.rb +0 -34
  1512. data/vendor/spinel/test/ivar_writer_heterogeneity.rb.expected +0 -2
  1513. data/vendor/spinel/test/known_constants.rb +0 -25
  1514. data/vendor/spinel/test/known_constants.rb.expected +0 -4
  1515. data/vendor/spinel/test/kw_nil_default_string_call.rb +0 -6
  1516. data/vendor/spinel/test/kw_nil_default_string_call.rb.expected +0 -2
  1517. data/vendor/spinel/test/map_array_block_result.rb +0 -29
  1518. data/vendor/spinel/test/map_array_block_result.rb.expected +0 -2
  1519. data/vendor/spinel/test/map_block_returns_nested_array.rb +0 -53
  1520. data/vendor/spinel/test/map_empty_block.rb +0 -26
  1521. data/vendor/spinel/test/map_empty_block.rb.expected +0 -6
  1522. data/vendor/spinel/test/map_range_recv_array_block.rb +0 -31
  1523. data/vendor/spinel/test/method_param_unify_to_poly.rb +0 -40
  1524. data/vendor/spinel/test/method_param_unify_to_poly.rb.expected +0 -2
  1525. data/vendor/spinel/test/multi_arg_block_call.rb +0 -56
  1526. data/vendor/spinel/test/multi_arg_block_call.rb.expected +0 -5
  1527. data/vendor/spinel/test/multi_assign_ivar.rb +0 -33
  1528. data/vendor/spinel/test/multi_assign_ivar.rb.expected +0 -1
  1529. data/vendor/spinel/test/multi_write_const.rb +0 -36
  1530. data/vendor/spinel/test/multi_write_const.rb.expected +0 -9
  1531. data/vendor/spinel/test/multi_write_from_poly_recv.rb +0 -34
  1532. data/vendor/spinel/test/multi_write_ivar.rb +0 -34
  1533. data/vendor/spinel/test/multi_write_ivar.rb.expected +0 -3
  1534. data/vendor/spinel/test/multi_write_ivar_widening.rb +0 -10
  1535. data/vendor/spinel/test/multi_write_ivar_widening.rb.expected +0 -2
  1536. data/vendor/spinel/test/multi_write_map_block.rb +0 -31
  1537. data/vendor/spinel/test/multi_write_map_block.rb.expected +0 -7
  1538. data/vendor/spinel/test/multi_write_setter.rb +0 -28
  1539. data/vendor/spinel/test/multi_write_setter.rb.expected +0 -3
  1540. data/vendor/spinel/test/multi_write_typed_array_dispatch.rb +0 -44
  1541. data/vendor/spinel/test/multi_write_typed_array_dispatch.rb.expected +0 -3
  1542. data/vendor/spinel/test/nested_class_in_class.rb +0 -38
  1543. data/vendor/spinel/test/nested_class_in_class.rb.expected +0 -3
  1544. data/vendor/spinel/test/no_attr_write_shortcut_complex.rb +0 -33
  1545. data/vendor/spinel/test/no_attr_write_shortcut_complex.rb.expected +0 -3
  1546. data/vendor/spinel/test/no_attr_write_shortcut_multi.rb +0 -38
  1547. data/vendor/spinel/test/no_attr_write_shortcut_multi.rb.expected +0 -4
  1548. data/vendor/spinel/test/no_keywords_param.rb +0 -15
  1549. data/vendor/spinel/test/no_keywords_param.rb.expected +0 -2
  1550. data/vendor/spinel/test/obj_array.rb +0 -26
  1551. data/vendor/spinel/test/obj_array.rb.expected +0 -6
  1552. data/vendor/spinel/test/obj_class_returns_string.rb +0 -24
  1553. data/vendor/spinel/test/obj_class_returns_string.rb.expected +0 -2
  1554. data/vendor/spinel/test/optional_string_param_method.rb +0 -11
  1555. data/vendor/spinel/test/optional_string_param_method.rb.expected +0 -3
  1556. data/vendor/spinel/test/poly_array_literal_callnode_typed_elem.rb +0 -37
  1557. data/vendor/spinel/test/poly_array_literal_callnode_typed_elem.rb.expected +0 -9
  1558. data/vendor/spinel/test/poly_array_slot_literal.rb +0 -41
  1559. data/vendor/spinel/test/poly_array_slot_sized_default.rb +0 -33
  1560. data/vendor/spinel/test/poly_box_int_array.rb +0 -13
  1561. data/vendor/spinel/test/poly_box_int_array.rb.expected +0 -2
  1562. data/vendor/spinel/test/poly_dispatch_args_ret.rb +0 -45
  1563. data/vendor/spinel/test/poly_dispatch_args_ret.rb.expected +0 -4
  1564. data/vendor/spinel/test/poly_dispatch_arity_padding.rb +0 -36
  1565. data/vendor/spinel/test/poly_dispatch_arity_truncate.rb +0 -45
  1566. data/vendor/spinel/test/poly_hash_literal_from_ivar.rb +0 -47
  1567. data/vendor/spinel/test/poly_hash_literal_from_ivar.rb.expected +0 -5
  1568. data/vendor/spinel/test/poly_int_arith_auto_unify.rb +0 -26
  1569. data/vendor/spinel/test/poly_int_arith_auto_unify.rb.expected +0 -4
  1570. data/vendor/spinel/test/poly_int_bit_index.rb +0 -50
  1571. data/vendor/spinel/test/poly_int_bit_index.rb.expected +0 -14
  1572. data/vendor/spinel/test/poly_or_returns_value.rb +0 -13
  1573. data/vendor/spinel/test/poly_or_returns_value.rb.expected +0 -4
  1574. data/vendor/spinel/test/poly_recv_bracket_assign.rb +0 -31
  1575. data/vendor/spinel/test/poly_recv_bracket_assign.rb.expected +0 -1
  1576. data/vendor/spinel/test/poly_recv_each.rb +0 -35
  1577. data/vendor/spinel/test/poly_recv_each.rb.expected +0 -7
  1578. data/vendor/spinel/test/poly_shl_array_push_dispatch.rb +0 -35
  1579. data/vendor/spinel/test/poly_shl_array_push_dispatch.rb.expected +0 -5
  1580. data/vendor/spinel/test/proc_hash_value.rb +0 -27
  1581. data/vendor/spinel/test/regexp.rb +0 -34
  1582. data/vendor/spinel/test/regexp.rb.expected +0 -12
  1583. data/vendor/spinel/test/reopen_class.rb +0 -33
  1584. data/vendor/spinel/test/reopen_class.rb.expected +0 -5
  1585. data/vendor/spinel/test/runtime_widen_int_to_poly_array.rb +0 -27
  1586. data/vendor/spinel/test/runtime_widen_int_to_poly_array.rb.expected +0 -3
  1587. data/vendor/spinel/test/sample_user_method.rb +0 -20
  1588. data/vendor/spinel/test/scan_ivars_inherited_slot.rb +0 -32
  1589. data/vendor/spinel/test/scan_new_calls_class_scope.rb +0 -35
  1590. data/vendor/spinel/test/send.rb +0 -15
  1591. data/vendor/spinel/test/send.rb.expected +0 -2
  1592. data/vendor/spinel/test/stdlib.rb +0 -28
  1593. data/vendor/spinel/test/stdlib.rb.expected +0 -5
  1594. data/vendor/spinel/test/strip_nullable_int_cast.rb +0 -24
  1595. data/vendor/spinel/test/super_arg_cross_class_cast.rb +0 -39
  1596. data/vendor/spinel/test/super_arg_cross_class_cast.rb.expected +0 -2
  1597. data/vendor/spinel/test/super_forwarding.rb +0 -25
  1598. data/vendor/spinel/test/super_forwarding.rb.expected +0 -3
  1599. data/vendor/spinel/test/sym_case.rb +0 -15
  1600. data/vendor/spinel/test/sym_case.rb.expected +0 -4
  1601. data/vendor/spinel/test/symbol_ivar_reassign.rb +0 -25
  1602. data/vendor/spinel/test/symbol_ivar_reassign.rb.expected +0 -2
  1603. data/vendor/spinel/test/toplevel_ivar_array.rb +0 -19
  1604. data/vendor/spinel/test/toplevel_ivar_array.rb.expected +0 -4
  1605. data/vendor/spinel/test/unbox_poly_index_in_dispatch.rb +0 -20
  1606. data/vendor/spinel/test/unbox_poly_index_in_dispatch.rb.expected +0 -1
  1607. data/vendor/spinel/test/undef.rb +0 -33
  1608. data/vendor/spinel/test/undef.rb.expected +0 -2
  1609. data/vendor/spinel/test/user_method_named_like_mutator.rb +0 -30
  1610. data/vendor/spinel/test/user_method_named_like_mutator.rb.expected +0 -2
  1611. data/vendor/spinel/test/value_type_ctor_gc_save.rb +0 -46
  1612. data/vendor/spinel/test/value_type_ctor_gc_save.rb.expected +0 -3
  1613. data/vendor/spinel/test/widen_int_obj_to_poly.rb +0 -29
  1614. /data/vendor/spinel/test/{multi_write_from_poly_recv.rb.expected → bare_arg_in_module_body.rb.expected} +0 -0
  1615. /data/vendor/spinel/test/{default_argv_narrows_from_string_call_site.rb.expected → cvar_method_first_assign.rb.expected} +0 -0
  1616. /data/vendor/spinel/test/{array_each_with_object.rb.expected → empty_array_push_container_elem.rb.expected} +0 -0
  1617. /data/vendor/spinel/test/{class_var_write.rb.expected → ffi_array_specs_decl.rb.expected} +0 -0
  1618. /data/vendor/spinel/test/{array_method_name_clash.rb.expected → ffi_int_arg_poly_value.rb.expected} +0 -0
  1619. /data/vendor/spinel/test/{initialize_void_wrapper_gc_save.rb.expected → ffi_ptr_array.rb.expected} +0 -0
  1620. /data/vendor/spinel/test/{inherited_method_param_widen.rb.expected → ffi_ptr_int_literal.rb.expected} +0 -0
  1621. /data/vendor/spinel/test/{forward_call_class_method_nested.rb.expected → ffi_str_arg_poly_value.rb.expected} +0 -0
  1622. /data/vendor/spinel/test/{proc_hash_value.rb.expected → file_write_at_tail_position.rb.expected} +0 -0
  1623. /data/vendor/spinel/test/{array_shuffle_ptr.rb.expected → hash_key_via_intermediate_local.rb.expected} +0 -0
  1624. /data/vendor/spinel/test/{forward_call_class_method_inherited_init_int_array.rb.expected → hash_param_widen_from_callee_slot.rb.expected} +0 -0
  1625. /data/vendor/spinel/test/{strip_nullable_int_cast.rb.expected → hash_temp_gc_root.rb.expected} +0 -0
  1626. /data/vendor/spinel/test/{scan_new_calls_class_scope.rb.expected → poly_recv_hash_dup.rb.expected} +0 -0
  1627. /data/vendor/spinel/test/{class_constant_sym_array.rb.expected → respond_to_def_self_method.rb.expected} +0 -0
  1628. /data/vendor/spinel/test/{initialize_param_through_call.rb.expected → warn_unresolved_call_context.rb.expected} +0 -0
@@ -0,0 +1,79 @@
1
+ /* sp_crypto.h -- Compact SHA-256 / HMAC / PBKDF2 / Base64URL / CSPRNG
2
+ *
3
+ * Pure C, no spinel-runtime dependency. Intended for spinel programs
4
+ * that need a small in-tree crypto surface without dragging in
5
+ * OpenSSL or libsodium. Sibling to sp_bigint.{h,c} in scope: a
6
+ * vendored, audit-sized C helper that ships with spinel so apps
7
+ * don't each reinvent it.
8
+ *
9
+ * The seven functions below are the canonical surface tep ended up
10
+ * with after a year of building on the same primitives -- if you
11
+ * find yourself wanting a different shape, please file an issue
12
+ * before adding to this list. The point is to keep the surface
13
+ * small enough to read in one sitting.
14
+ *
15
+ * Naming
16
+ * ------
17
+ * All exported symbols use the `sp_crypto_` prefix (matches the
18
+ * `sp_bigint_` convention). State buffers are per-function statics
19
+ * -- the next call to the same function clobbers the buffer, so
20
+ * copy on the caller side if the value must outlive the next call.
21
+ *
22
+ * Inputs
23
+ * ------
24
+ * String inputs are NUL-terminated. Length is taken via strlen()
25
+ * inside each function. For binary-safe inputs (containing embedded
26
+ * NULs), use the explicit-length internal API exposed by including
27
+ * this header in your own .c file -- see sp_crypto.c for the
28
+ * declarations.
29
+ *
30
+ * Thread safety
31
+ * -------------
32
+ * NOT thread-safe -- the static return buffers are shared. Spinel
33
+ * apps that fork (the canonical concurrency model) are fine; apps
34
+ * that thread need to caller-side serialize.
35
+ */
36
+ #ifndef SP_CRYPTO_H
37
+ #define SP_CRYPTO_H
38
+
39
+ #ifdef __cplusplus
40
+ extern "C" {
41
+ #endif
42
+
43
+ /* SHA-1(msg) -> 40-char lowercase hex. Legacy hash, kept for
44
+ * WebSocket handshake (RFC 6455 §1.3 requires SHA-1). Do NOT
45
+ * use for new security designs; SHA-256 is the right primitive. */
46
+ const char *sp_crypto_sha1_hex(const char *msg);
47
+
48
+ /* Sec-WebSocket-Accept = base64(SHA-1(client_key + GUID)) per
49
+ * RFC 6455 §1.3. Returns a 28-char string ending in `=`. The
50
+ * only modern use case for SHA-1 in this codebase; sugars the
51
+ * concat+sha1+base64 dance into one call. */
52
+ const char *sp_crypto_websocket_accept(const char *client_key);
53
+
54
+ /* HMAC-SHA256(key, msg) -> 64-char lowercase hex. */
55
+ const char *sp_crypto_hmac_sha256_hex(const char *key, const char *msg);
56
+
57
+ /* HMAC-SHA256(key, msg) -> 43-char unpadded base64url. */
58
+ const char *sp_crypto_hmac_sha256_b64url(const char *key, const char *msg);
59
+
60
+ /* Base64URL (RFC 4648 §5, no padding) encode/decode. Max input
61
+ * length ~12 KiB (encode) / ~16 KiB (decode), bump the buffer in
62
+ * sp_crypto.c if your callers need more. */
63
+ const char *sp_crypto_b64url_encode(const char *src);
64
+ const char *sp_crypto_b64url_decode(const char *src);
65
+
66
+ /* PBKDF2-HMAC-SHA256(password, salt, iters) -> 43-char unpadded
67
+ * base64url (32 bytes derived; dkLen > 32 not supported). */
68
+ const char *sp_crypto_pbkdf2_sha256_b64url(const char *password, const char *salt, int iters);
69
+
70
+ /* CSPRNG: nbytes random bytes (clamped to [1, 64]) as unpadded
71
+ * base64url. Uses arc4random_buf on BSD/macOS, /dev/urandom on
72
+ * Linux/POSIX. */
73
+ const char *sp_crypto_random_b64url(int nbytes);
74
+
75
+ #ifdef __cplusplus
76
+ }
77
+ #endif
78
+
79
+ #endif /* SP_CRYPTO_H */
@@ -0,0 +1,95 @@
1
+ /* sp_fiber.c -- Fiber runtime bodies (Win32 fibers / POSIX ucontext).
2
+ * See sp_fiber.h. The collector roots, sp_gc_alloc, and sp_raise_cls live
3
+ * in the generated TU and are reached by name; fiber-local storage is
4
+ * self-contained here. */
5
+ #include "sp_fiber.h"
6
+ #include <stdlib.h>
7
+ #include <string.h>
8
+ #ifndef _WIN32
9
+ #include <sys/mman.h>
10
+ #endif
11
+
12
+ /* ---- Reached by name in the generated TU ---- */
13
+ void *sp_gc_alloc(size_t sz, void (*fin)(void *), void (*scn)(void *));
14
+ void sp_raise_cls(const char *cls, const char *msg);
15
+
16
+ static inline sp_RbVal sp_box_nil(void) { sp_RbVal r; r.tag = SP_TAG_NIL; r.cls_id = 0; r.v.i = 0; return r; }
17
+ static void sp_raise(const char *msg) { sp_raise_cls("RuntimeError", msg); }
18
+
19
+ /* Fiber-local variable storage (Fiber#[] / Fiber#[]=). A small sym->RbVal
20
+ map, GC-allocated so the collector marks its values via the scan hook;
21
+ self-contained here rather than borrowing the runtime's sym_poly_hash so
22
+ the runtime sym_poly_hash stays collector-private to the generated TU. */
23
+ typedef struct { sp_sym *keys; sp_RbVal *vals; mrb_int len, cap; } sp_FiberStore;
24
+ static void sp_FiberStore_scan(void *p) { sp_FiberStore *s = (sp_FiberStore *)p; for (mrb_int i = 0; i < s->len; i++) sp_mark_rbval(s->vals[i]); }
25
+ static void sp_FiberStore_fin(void *p) { sp_FiberStore *s = (sp_FiberStore *)p; free(s->keys); free(s->vals); }
26
+ static sp_FiberStore *sp_FiberStore_new(void) {
27
+ sp_FiberStore *s = (sp_FiberStore *)sp_gc_alloc(sizeof(sp_FiberStore), sp_FiberStore_fin, sp_FiberStore_scan);
28
+ s->cap = 8; s->len = 0;
29
+ s->keys = (sp_sym *)malloc(sizeof(sp_sym) * s->cap);
30
+ s->vals = (sp_RbVal *)malloc(sizeof(sp_RbVal) * s->cap);
31
+ return s;
32
+ }
33
+ static sp_RbVal sp_FiberStore_get(sp_FiberStore *s, sp_sym k) {
34
+ for (mrb_int i = 0; i < s->len; i++) if (s->keys[i] == k) return s->vals[i];
35
+ return sp_box_nil();
36
+ }
37
+ static void sp_FiberStore_set(sp_FiberStore *s, sp_sym k, sp_RbVal v) {
38
+ for (mrb_int i = 0; i < s->len; i++) if (s->keys[i] == k) { s->vals[i] = v; return; }
39
+ if (s->len == s->cap) {
40
+ s->cap *= 2;
41
+ s->keys = (sp_sym *)realloc(s->keys, sizeof(sp_sym) * s->cap);
42
+ s->vals = (sp_RbVal *)realloc(s->vals, sizeof(sp_RbVal) * s->cap);
43
+ }
44
+ s->keys[s->len] = k; s->vals[s->len] = v; s->len++;
45
+ }
46
+ static sp_FiberStore *sp_FiberStore_dup(sp_FiberStore *o) {
47
+ sp_FiberStore *s = sp_FiberStore_new();
48
+ for (mrb_int i = 0; i < o->len; i++) sp_FiberStore_set(s, o->keys[i], o->vals[i]);
49
+ return s;
50
+ }
51
+
52
+ static sp_Fiber sp_fiber_root;
53
+ sp_Fiber *sp_fiber_current = &sp_fiber_root; /* extern: read by the generated TU */
54
+ static sp_Fiber *sp_fiber_list_head = NULL;
55
+
56
+ #ifdef _WIN32
57
+ static void sp_fiber_save_roots(sp_Fiber*f){if(f->saved_roots_cap<sp_gc_nroots){int nc=sp_gc_nroots>64?sp_gc_nroots*2:64;void***nx=(void***)realloc(f->saved_roots,sizeof(void**)*nc);if(!nx)return;f->saved_roots=nx;f->saved_roots_cap=nc;}if(sp_gc_nroots>0)memcpy(f->saved_roots,sp_gc_roots,sizeof(void**)*sp_gc_nroots);f->saved_nroots=sp_gc_nroots;}
58
+ static void sp_fiber_restore_roots(sp_Fiber*f){if(f->saved_nroots>0)memcpy(sp_gc_roots,f->saved_roots,sizeof(void**)*f->saved_nroots);sp_gc_nroots=f->saved_nroots;}
59
+ static void sp_fiber_list_add(sp_Fiber*f){f->fiber_prev=NULL;f->fiber_next=sp_fiber_list_head;if(sp_fiber_list_head)sp_fiber_list_head->fiber_prev=f;sp_fiber_list_head=f;}
60
+ static void sp_fiber_list_remove(sp_Fiber*f){if(f->fiber_prev)f->fiber_prev->fiber_next=f->fiber_next;else if(sp_fiber_list_head==f)sp_fiber_list_head=f->fiber_next;if(f->fiber_next)f->fiber_next->fiber_prev=f->fiber_prev;f->fiber_prev=NULL;f->fiber_next=NULL;}
61
+ static void sp_mark_fiber_roots(sp_Fiber*f){if(f==sp_fiber_current)return;int i;for(i=0;i<f->saved_nroots;i++){void**e=f->saved_roots[i];if((uintptr_t)e&(uintptr_t)1){sp_gc_mark_root_entry(e);}else{void*obj=*e;if(obj)sp_gc_mark(obj);}}}
62
+ static void sp_mark_suspended_fibers(void){sp_mark_fiber_roots(&sp_fiber_root);sp_Fiber*f=sp_fiber_list_head;while(f){sp_mark_fiber_roots(f);f=f->fiber_next;}}
63
+ static void sp_fiber_install_gc_hook(void){if(!sp_gc_mark_suspended_fibers_hook)sp_gc_mark_suspended_fibers_hook=sp_mark_suspended_fibers;}
64
+ static void sp_Fiber_fin(void*p){sp_Fiber*f=(sp_Fiber*)p;if(f->ctx)DeleteFiber(f->ctx);if(f->saved_roots)free(f->saved_roots);sp_fiber_list_remove(f);}
65
+ static void sp_Fiber_scan(void*p){sp_Fiber*f=(sp_Fiber*)p;if(f->user_data)sp_gc_mark(f->user_data);if(f->storage)sp_gc_mark(f->storage);}
66
+ sp_Fiber*sp_Fiber_new(void(*body)(sp_Fiber*)){sp_Fiber*f=(sp_Fiber*)sp_gc_alloc(sizeof(sp_Fiber),sp_Fiber_fin,sp_Fiber_scan);f->ctx=NULL;f->caller_ctx=NULL;f->stack=NULL;f->state=0;f->transferred=0;f->body=body;f->yielded_value=sp_box_nil();f->resumed_value=sp_box_nil();f->user_data=NULL;f->saved_exc_top=0;f->saved_catch_top=0;f->caller=NULL;f->storage=NULL;f->saved_roots=NULL;f->saved_nroots=0;f->saved_roots_cap=0;f->fiber_next=NULL;f->fiber_prev=NULL;sp_fiber_list_add(f);sp_fiber_install_gc_hook();if(sp_fiber_current&&sp_fiber_current->storage)f->storage=sp_FiberStore_dup((sp_FiberStore*)sp_fiber_current->storage);return f;}
67
+ sp_RbVal sp_Fiber_storage_get(sp_Fiber*f,sp_sym k){if(!f->storage)return sp_box_nil();return sp_FiberStore_get((sp_FiberStore*)f->storage,k);}
68
+ void sp_Fiber_storage_set(sp_Fiber*f,sp_sym k,sp_RbVal v){if(!f->storage)f->storage=sp_FiberStore_new();sp_FiberStore_set((sp_FiberStore*)f->storage,k,v);}
69
+ static VOID CALLBACK sp_fiber_trampoline(LPVOID param){sp_Fiber*f=(sp_Fiber*)param;f->body(f);f->state=3;if(f->transferred){sp_fiber_current=&sp_fiber_root;SwitchToFiber(sp_fiber_root.ctx);}else{SwitchToFiber(f->caller->ctx);}}
70
+ static void sp_fiber_ensure_root(void){if(!sp_fiber_root.ctx){sp_fiber_root.ctx=ConvertThreadToFiber(NULL);if(!sp_fiber_root.ctx)sp_fiber_root.ctx=GetCurrentFiber();}}
71
+ sp_RbVal sp_Fiber_resume(sp_Fiber*f,sp_RbVal val){if(f->state==3){sp_raise_cls("FiberError","attempt to resume a terminated fiber");}sp_fiber_ensure_root();f->resumed_value=val;sp_Fiber*prev=sp_fiber_current;f->caller=prev;sp_fiber_save_roots(prev);sp_fiber_restore_roots(f);sp_fiber_current=f;if(f->state==0){f->state=1;f->ctx=CreateFiber(SP_FIBER_STACK_SIZE,sp_fiber_trampoline,f);if(!f->ctx)sp_raise("failed to create fiber");}else{f->state=1;}SwitchToFiber(f->ctx);sp_fiber_save_roots(f);sp_fiber_restore_roots(prev);sp_fiber_current=prev;return f->yielded_value;}
72
+ sp_RbVal sp_Fiber_yield(sp_RbVal val){sp_Fiber*f=sp_fiber_current;f->yielded_value=val;f->state=2;SwitchToFiber(f->caller->ctx);return f->resumed_value;}
73
+ mrb_bool sp_Fiber_alive(sp_Fiber*f){return f->state!=3;}
74
+ sp_RbVal sp_Fiber_transfer(sp_Fiber*f,sp_RbVal val){sp_fiber_ensure_root();f->resumed_value=val;sp_Fiber*prev=sp_fiber_current;sp_fiber_save_roots(prev);sp_fiber_restore_roots(f);sp_fiber_current=f;if(f->state==0){f->state=1;f->transferred=1;f->caller=prev;f->ctx=CreateFiber(SP_FIBER_STACK_SIZE,sp_fiber_trampoline,f);if(!f->ctx)sp_raise("failed to create fiber");}else{f->state=1;}SwitchToFiber(f->ctx);sp_fiber_save_roots(f);sp_fiber_restore_roots(prev);sp_fiber_current=prev;return prev->resumed_value;}
75
+ #else
76
+ static void sp_fiber_save_roots(sp_Fiber*f){if(f->saved_roots_cap<sp_gc_nroots){int nc=sp_gc_nroots>64?sp_gc_nroots*2:64;void***nx=(void***)realloc(f->saved_roots,sizeof(void**)*nc);if(!nx)return;f->saved_roots=nx;f->saved_roots_cap=nc;}if(sp_gc_nroots>0)memcpy(f->saved_roots,sp_gc_roots,sizeof(void**)*sp_gc_nroots);f->saved_nroots=sp_gc_nroots;}
77
+ static void sp_fiber_restore_roots(sp_Fiber*f){if(f->saved_nroots>0)memcpy(sp_gc_roots,f->saved_roots,sizeof(void**)*f->saved_nroots);sp_gc_nroots=f->saved_nroots;}
78
+ static void sp_fiber_list_add(sp_Fiber*f){f->fiber_prev=NULL;f->fiber_next=sp_fiber_list_head;if(sp_fiber_list_head)sp_fiber_list_head->fiber_prev=f;sp_fiber_list_head=f;}
79
+ static void sp_fiber_list_remove(sp_Fiber*f){if(f->fiber_prev)f->fiber_prev->fiber_next=f->fiber_next;else if(sp_fiber_list_head==f)sp_fiber_list_head=f->fiber_next;if(f->fiber_next)f->fiber_next->fiber_prev=f->fiber_prev;f->fiber_prev=NULL;f->fiber_next=NULL;}
80
+ static void sp_mark_fiber_roots(sp_Fiber*f){if(f==sp_fiber_current)return;int i;for(i=0;i<f->saved_nroots;i++){void**e=f->saved_roots[i];if((uintptr_t)e&(uintptr_t)1){sp_gc_mark_root_entry(e);}else{void*obj=*e;if(obj)sp_gc_mark(obj);}}}
81
+ static void sp_mark_suspended_fibers(void){sp_mark_fiber_roots(&sp_fiber_root);sp_Fiber*f=sp_fiber_list_head;while(f){sp_mark_fiber_roots(f);f=f->fiber_next;}}
82
+ static void sp_fiber_install_gc_hook(void){if(!sp_gc_mark_suspended_fibers_hook)sp_gc_mark_suspended_fibers_hook=sp_mark_suspended_fibers;}
83
+ static void sp_Fiber_fin(void*p){sp_Fiber*f=(sp_Fiber*)p;if(f->stack)munmap(f->stack,SP_FIBER_STACK_SIZE);if(f->saved_roots)free(f->saved_roots);sp_fiber_list_remove(f);}
84
+ static void sp_Fiber_scan(void*p){sp_Fiber*f=(sp_Fiber*)p;if(f->user_data)sp_gc_mark(f->user_data);if(f->storage)sp_gc_mark(f->storage);}
85
+ sp_Fiber*sp_Fiber_new(void(*body)(sp_Fiber*)){sp_Fiber*f=(sp_Fiber*)sp_gc_alloc(sizeof(sp_Fiber),sp_Fiber_fin,sp_Fiber_scan);f->stack=(char*)mmap(NULL,SP_FIBER_STACK_SIZE,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0);if(f->stack==MAP_FAILED){f->stack=NULL;sp_raise_cls("FiberError","failed to allocate fiber stack");}f->state=0;f->transferred=0;f->body=body;f->yielded_value=sp_box_nil();f->resumed_value=sp_box_nil();f->user_data=NULL;f->saved_exc_top=0;f->saved_catch_top=0;f->storage=NULL;f->saved_roots=NULL;f->saved_nroots=0;f->saved_roots_cap=0;f->fiber_next=NULL;f->fiber_prev=NULL;sp_fiber_list_add(f);sp_fiber_install_gc_hook();if(sp_fiber_current&&sp_fiber_current->storage)f->storage=sp_FiberStore_dup((sp_FiberStore*)sp_fiber_current->storage);return f;}
86
+ sp_RbVal sp_Fiber_storage_get(sp_Fiber*f,sp_sym k){if(!f->storage)return sp_box_nil();return sp_FiberStore_get((sp_FiberStore*)f->storage,k);}
87
+ void sp_Fiber_storage_set(sp_Fiber*f,sp_sym k,sp_RbVal v){if(!f->storage)f->storage=sp_FiberStore_new();sp_FiberStore_set((sp_FiberStore*)f->storage,k,v);}
88
+ static void sp_fiber_trampoline(void){sp_Fiber*f=sp_fiber_current;f->body(f);f->state=3;if(f->transferred){sp_fiber_current=&sp_fiber_root;setcontext(&sp_fiber_root.ctx);}else{swapcontext(&f->ctx,&f->caller_ctx);}}
89
+ sp_RbVal sp_Fiber_resume(sp_Fiber*f,sp_RbVal val){if(f->state==3){sp_raise_cls("FiberError","attempt to resume a terminated fiber");}f->resumed_value=val;sp_Fiber*prev=sp_fiber_current;sp_fiber_save_roots(prev);sp_fiber_restore_roots(f);sp_fiber_current=f;if(f->state==0){f->state=1;getcontext(&f->ctx);f->ctx.uc_stack.ss_sp=f->stack;f->ctx.uc_stack.ss_size=SP_FIBER_STACK_SIZE;f->ctx.uc_link=&f->caller_ctx;makecontext(&f->ctx,(void(*)(void))sp_fiber_trampoline,0);swapcontext(&f->caller_ctx,&f->ctx);}else{f->state=1;swapcontext(&f->caller_ctx,&f->ctx);}sp_fiber_save_roots(f);sp_fiber_restore_roots(prev);sp_fiber_current=prev;return f->yielded_value;}
90
+ sp_RbVal sp_Fiber_yield(sp_RbVal val){sp_Fiber*f=sp_fiber_current;f->yielded_value=val;f->state=2;swapcontext(&f->ctx,&f->caller_ctx);return f->resumed_value;}
91
+ mrb_bool sp_Fiber_alive(sp_Fiber*f){return f->state!=3;}
92
+ sp_RbVal sp_Fiber_transfer(sp_Fiber*f,sp_RbVal val){f->resumed_value=val;sp_Fiber*prev=sp_fiber_current;sp_fiber_save_roots(prev);sp_fiber_restore_roots(f);sp_fiber_current=f;if(f->state==0){f->state=1;f->transferred=1;getcontext(&f->ctx);f->ctx.uc_stack.ss_sp=f->stack;f->ctx.uc_stack.ss_size=SP_FIBER_STACK_SIZE;f->ctx.uc_link=&prev->ctx;makecontext(&f->ctx,(void(*)(void))sp_fiber_trampoline,0);swapcontext(&prev->ctx,&f->ctx);}else{f->state=1;swapcontext(&prev->ctx,&f->ctx);}sp_fiber_save_roots(f);sp_fiber_restore_roots(prev);sp_fiber_current=prev;return prev->resumed_value;}
93
+ #endif
94
+
95
+ void sp_mark_fiber_root_storage(void){if(sp_fiber_root.storage)sp_gc_mark(sp_fiber_root.storage);}
@@ -0,0 +1,41 @@
1
+ /* sp_fiber.h -- Fiber runtime surface.
2
+ *
3
+ * The sp_Fiber struct (a cooperative coroutine over Win32 fibers or
4
+ * POSIX ucontext) is shared between the generated translation unit and
5
+ * lib/sp_fiber.c, which holds the function bodies. `storage` is an opaque pointer to fiber-local variable storage
6
+ * (defined in lib/sp_fiber.c). */
7
+ #ifndef SP_FIBER_H
8
+ #define SP_FIBER_H
9
+
10
+ #include "sp_gc.h" /* sp_RbVal */
11
+ #ifdef _WIN32
12
+ #include <windows.h>
13
+ #else
14
+ #include <ucontext.h>
15
+ #endif
16
+
17
+
18
+ #define SP_FIBER_STACK_SIZE (64*1024)
19
+
20
+ #ifdef _WIN32
21
+ typedef struct sp_Fiber{LPVOID ctx;LPVOID caller_ctx;char*stack;int state;int transferred;sp_RbVal yielded_value;sp_RbVal resumed_value;void(*body)(struct sp_Fiber*);void*user_data;int saved_exc_top;int saved_catch_top;struct sp_Fiber*caller;void*storage;void***saved_roots;int saved_nroots;int saved_roots_cap;struct sp_Fiber*fiber_next;struct sp_Fiber*fiber_prev;}sp_Fiber;
22
+ #else
23
+ typedef struct sp_Fiber{ucontext_t ctx;ucontext_t caller_ctx;char*stack;int state;int transferred;sp_RbVal yielded_value;sp_RbVal resumed_value;void(*body)(struct sp_Fiber*);void*user_data;int saved_exc_top;int saved_catch_top;void*storage;void***saved_roots;int saved_nroots;int saved_roots_cap;struct sp_Fiber*fiber_next;struct sp_Fiber*fiber_prev;}sp_Fiber;
24
+ #endif
25
+
26
+ /* The currently-running fiber; the generated TU reads it directly for
27
+ `Fiber.current` and as the implicit receiver of Fiber operations. */
28
+ extern sp_Fiber *sp_fiber_current;
29
+
30
+ /* Public Fiber API (called from the generated TU). */
31
+ sp_Fiber *sp_Fiber_new(void (*body)(sp_Fiber *));
32
+ sp_RbVal sp_Fiber_resume(sp_Fiber *f, sp_RbVal val);
33
+ sp_RbVal sp_Fiber_yield(sp_RbVal val);
34
+ sp_RbVal sp_Fiber_transfer(sp_Fiber *f, sp_RbVal val);
35
+ mrb_bool sp_Fiber_alive(sp_Fiber *f);
36
+ sp_RbVal sp_Fiber_storage_get(sp_Fiber *f, sp_sym k);
37
+ void sp_Fiber_storage_set(sp_Fiber *f, sp_sym k, sp_RbVal v);
38
+ /* Reached from sp_re_mark_globals in the generated TU during a GC pass. */
39
+ void sp_mark_fiber_root_storage(void);
40
+
41
+ #endif
@@ -0,0 +1,89 @@
1
+ /* sp_gc.c -- the mark/sweep collector's non-inline machinery.
2
+ * See sp_gc.h. The program root-marking and string-heap sweep are
3
+ * supplied by the generated TU via sp_gc_mark_globals_hook /
4
+ * sp_gc_str_sweep_hook. */
5
+ #include <stdlib.h>
6
+ #include <stdio.h>
7
+ #include <string.h>
8
+ #include <stdint.h>
9
+ #if !defined(__APPLE__) && !defined(_WIN32) && !defined(__FreeBSD__)
10
+ #include <malloc.h>
11
+ #else
12
+ /* Darwin's libc has no malloc_trim; make it a no-op so call sites stay portable. */
13
+ #define malloc_trim(x) ((void)0)
14
+ #endif
15
+ #ifndef _WIN32
16
+ #include <unistd.h>
17
+ #endif
18
+ #include "sp_gc.h"
19
+
20
+ /* ---- Globals shared with the generated TU (declared extern in sp_gc.h) ---- */
21
+ void **sp_gc_roots[SP_GC_STACK_MAX];
22
+ int sp_gc_nroots = 0;
23
+ sp_gc_hdr *sp_gc_heap = NULL;
24
+ size_t sp_gc_bytes = 0;
25
+ size_t sp_gc_old_bytes = 0;
26
+ int sp_gc_cycle = 0;
27
+ void (*sp_gc_mark_suspended_fibers_hook)(void) = NULL;
28
+ void (*sp_gc_mark_globals_hook)(void) = NULL;
29
+ void (*sp_gc_str_sweep_hook)(void) = NULL;
30
+
31
+ /* ---- Collector-private globals ---- */
32
+ static int sp_gc_verify = 0;
33
+ static sp_gc_hdr *sp_gc_old_heap = NULL;
34
+ #define SP_GC_MARK_STACK_MAX (1024*64)
35
+ static void **sp_gc_mark_stack = NULL;
36
+ static int sp_gc_mark_top = 0;
37
+ static sp_gc_hdr **sp_gc_vsnap = NULL;
38
+ static size_t sp_gc_vsnap_n = 0, sp_gc_vsnap_cap = 0;
39
+ static size_t sp_gc_max_bytes = 0;
40
+ static int sp_gc_max_bytes_init = 0;
41
+ #define SP_GC_FULL_INTERVAL 8
42
+
43
+ /* Issue #755: bail out cleanly on OOM rather than returning NULL into a
44
+ caller that would deref it next. */
45
+ void sp_oom_die(void){fputs("unhandled exception: out of memory\n",stderr);exit(1);}
46
+
47
+ /* ---- GC verify (SPINEL_GC_VERIFY=1): a sorted snapshot of every
48
+ * registered header, so the scan-time membership test is O(log n). ---- */
49
+ static int sp_gc_vsnap_cmp(const void *a, const void *b){ uintptr_t x=(uintptr_t)*(sp_gc_hdr*const*)a, y=(uintptr_t)*(sp_gc_hdr*const*)b; return x<y?-1:x>y?1:0; }
50
+ static void sp_gc_vsnap_push(sp_gc_hdr *h){ if(sp_gc_vsnap_n==sp_gc_vsnap_cap){ size_t c=sp_gc_vsnap_cap?sp_gc_vsnap_cap*2:1024; sp_gc_hdr**n=(sp_gc_hdr**)realloc(sp_gc_vsnap,c*sizeof(sp_gc_hdr*)); if(!n)sp_oom_die(); sp_gc_vsnap=n; sp_gc_vsnap_cap=c; } sp_gc_vsnap[sp_gc_vsnap_n++]=h; }
51
+ static void sp_gc_verify_snapshot(void){ sp_gc_vsnap_n=0; for(sp_gc_hdr*p=sp_gc_heap;p;p=p->next)sp_gc_vsnap_push(p); for(sp_gc_hdr*p=sp_gc_old_heap;p;p=p->next)sp_gc_vsnap_push(p); if(sp_gc_vsnap_n>1)qsort(sp_gc_vsnap,sp_gc_vsnap_n,sizeof(sp_gc_hdr*),sp_gc_vsnap_cmp); }
52
+ static int sp_gc_obj_registered(sp_gc_hdr *h){ uintptr_t hv=(uintptr_t)h; size_t lo=0,hi=sp_gc_vsnap_n; while(lo<hi){ size_t m=lo+(hi-lo)/2; uintptr_t x=(uintptr_t)sp_gc_vsnap[m]; if(x==hv)return 1; if(x<hv)lo=m+1; else hi=m; } return 0; }
53
+ static void sp_gc_verify_fail(void *obj, sp_gc_hdr *h){
54
+ fprintf(stderr,
55
+ "\n*** SPINEL_GC_VERIFY: collector reached a non-heap/corrupt object ***\n"
56
+ " obj = %p\n header = %p\n"
57
+ " This pointer is on the GC mark path but is not a registered live GC\n"
58
+ " allocation -- most likely a raw/aliased pointer (e.g. into a string or\n"
59
+ " builder buffer) reachable from a root or a scanned field. Invoking its\n"
60
+ " scan hook would jump through a bogus function pointer.\n",
61
+ obj, (void*)h);
62
+ fflush(stderr);
63
+ fprintf(stderr, " ->scan = %p ->size = %zu\n\n",
64
+ (void*)(uintptr_t)h->scan, (size_t)h->size);
65
+ abort();
66
+ }
67
+ __attribute__((constructor)) static void sp_gc_debug_env(void){
68
+ const char *v=getenv("SPINEL_GC_VERIFY"); sp_gc_verify=(v&&*v&&*v!='0');
69
+ }
70
+
71
+ /* Tag byte preceding `obj`: 0xfe heap-unmarked -> 0xfc; 0xfc/0xff/0xfd
72
+ * skipped; else a real GC object reached through its scan hook. */
73
+ void sp_gc_mark(void*obj){if(!obj)return;unsigned char pm=((unsigned char*)obj)[-1];if(pm==0xfe){((char*)obj)[-1]=(char)0xfc;return;}if(pm==0xfc||pm==0xff||pm==0xfd)return;sp_gc_hdr*h=(sp_gc_hdr*)((char*)obj-sizeof(sp_gc_hdr));if(sp_gc_verify&&!sp_gc_obj_registered(h))sp_gc_verify_fail(obj,h);if(h->marked)return;h->marked=1;if(h->scan){if(sp_gc_mark_stack&&sp_gc_mark_top<SP_GC_MARK_STACK_MAX){sp_gc_mark_stack[sp_gc_mark_top++]=obj;}else{h->scan(obj);}}}
74
+
75
+ void sp_gc_mark_all(void){if(!sp_gc_mark_stack)sp_gc_mark_stack=(void**)malloc(sizeof(void*)*SP_GC_MARK_STACK_MAX);sp_gc_mark_top=0;if(sp_gc_verify)sp_gc_verify_snapshot();for(int i=0;i<sp_gc_nroots;i++){void**e=sp_gc_roots[i];if((uintptr_t)e&(uintptr_t)1){sp_gc_mark_root_entry(e);}else{void*obj=*e;if(obj)sp_gc_mark(obj);}}if(sp_gc_mark_suspended_fibers_hook)sp_gc_mark_suspended_fibers_hook();if(sp_gc_mark_globals_hook)sp_gc_mark_globals_hook();while(sp_gc_mark_top>0){void*obj=sp_gc_mark_stack[--sp_gc_mark_top];sp_gc_hdr*h=(sp_gc_hdr*)((char*)obj-sizeof(sp_gc_hdr));if(h->scan)h->scan(obj);}}
76
+
77
+ void sp_gc_collect(void){int full=(sp_gc_cycle%SP_GC_FULL_INTERVAL==0);sp_gc_cycle++;sp_gc_hdr*hh=sp_gc_old_heap;while(hh){hh->marked=0;hh=hh->next;}sp_gc_mark_all();if(full){sp_gc_hdr**pp=&sp_gc_old_heap;sp_gc_old_bytes=0;while(*pp){sp_gc_hdr*h=*pp;if(!h->marked){*pp=h->next;if(h->recycle){h->recycle(h);}else{if(h->finalize)h->finalize((char*)h+sizeof(sp_gc_hdr));free(h);}}else{h->marked=1;sp_gc_old_bytes+=h->size;pp=&h->next;}}}else{hh=sp_gc_old_heap;while(hh){hh->marked=1;hh=hh->next;}}sp_gc_hdr**pp=&sp_gc_heap;sp_gc_bytes=sp_gc_old_bytes;while(*pp){sp_gc_hdr*h=*pp;if(!h->marked){*pp=h->next;if(h->recycle){h->recycle(h);}else{if(h->finalize)h->finalize((char*)h+sizeof(sp_gc_hdr));free(h);}}else{h->marked=1;*pp=h->next;h->next=sp_gc_old_heap;sp_gc_old_heap=h;sp_gc_old_bytes+=h->size;sp_gc_bytes+=h->size;}}if(sp_gc_str_sweep_hook)sp_gc_str_sweep_hook();if(full)malloc_trim(0);}
78
+
79
+ /* Issue #1302: optional RSS ceiling via SPINEL_MAX_HEAP_MB; checked only
80
+ * at GC-trigger points against real /proc/self/statm RSS. Default off. */
81
+ void sp_gc_enforce_mem_limit(void){
82
+ if(!sp_gc_max_bytes_init){const char*e=getenv("SPINEL_MAX_HEAP_MB");long v=(e&&*e)?atol(e):0;sp_gc_max_bytes=(v>0)?(size_t)v*1024*1024:0;sp_gc_max_bytes_init=1;}
83
+ if(!sp_gc_max_bytes)return;
84
+ #if defined(__linux__)
85
+ FILE*sf=fopen("/proc/self/statm","r");if(!sf)return;long tot=0,res=0;int n=fscanf(sf,"%ld %ld",&tot,&res);fclose(sf);if(n!=2||res<=0)return;
86
+ size_t rss=(size_t)res*(size_t)sysconf(_SC_PAGESIZE);
87
+ if(rss>sp_gc_max_bytes){fprintf(stderr,"unhandled exception: out of memory (RSS %zu MB exceeded SPINEL_MAX_HEAP_MB=%zu MB)\n",rss/(1024*1024),sp_gc_max_bytes/(1024*1024));exit(1);}
88
+ #endif
89
+ }
@@ -0,0 +1,81 @@
1
+ /* sp_gc.h -- the mark/sweep collector's shared surface.
2
+ *
3
+ * Included by both the generated translation unit (via sp_runtime.h) and
4
+ * lib/sp_gc.c, which holds the collector's non-inline machinery (mark,
5
+ * sweep, collect, the memory-limit governor, and the SPINEL_GC_VERIFY
6
+ * support). The hot inline mark helpers stay here so both sides inline
7
+ * them -- moving the cold collector body to a single compiled unit must
8
+ * not de-inline the per-object mark path. The collector globals are
9
+ * declared extern here and defined once in lib/sp_gc.c.
10
+ */
11
+ #ifndef SP_GC_H
12
+ #define SP_GC_H
13
+
14
+ #include "sp_types.h"
15
+
16
+ /* ---- Value tag constants + the boxed value (sp_RbVal) ----
17
+ * The mark helpers below dispatch on the tag, so the type lives here
18
+ * rather than in the generated TU. */
19
+ #define SP_TAG_INT 0
20
+ #define SP_TAG_STR 1
21
+ #define SP_TAG_FLT 2
22
+ #define SP_TAG_BOOL 3
23
+ #define SP_TAG_NIL 4
24
+ #define SP_TAG_OBJ 5
25
+ #define SP_TAG_SYM 6
26
+ #define SP_TAG_CLASS 7
27
+ #define SP_TAG_ENCODING 8
28
+ typedef struct { int tag; int cls_id; union { mrb_int i; const char *s; mrb_float f; mrb_bool b; void *p; } v; } sp_RbVal;
29
+
30
+ /* ---- Collector globals shared with the generated TU ----
31
+ * Only the globals touched by both the kept hot path (sp_gc_alloc, the
32
+ * SP_GC_ROOT macros, GC.stat, the fiber root hook) and the moved cold
33
+ * body are extern; the rest stay static on whichever side owns them. */
34
+ #define SP_GC_STACK_MAX 65536
35
+ #define SP_GC_FULL_INTERVAL 8
36
+ extern void **sp_gc_roots[SP_GC_STACK_MAX];
37
+ extern int sp_gc_nroots;
38
+ extern sp_gc_hdr *sp_gc_heap;
39
+ extern size_t sp_gc_bytes;
40
+ extern size_t sp_gc_old_bytes;
41
+ extern int sp_gc_cycle;
42
+ extern void (*sp_gc_mark_suspended_fibers_hook)(void);
43
+
44
+ /* ---- Collector entry points (defined in lib/sp_gc.c) ---- */
45
+ void sp_gc_mark(void *obj);
46
+ void sp_gc_mark_all(void);
47
+ void sp_gc_collect(void);
48
+ void sp_gc_enforce_mem_limit(void);
49
+ void sp_oom_die(void);
50
+
51
+ /* ---- Embedder callbacks supplied by the generated TU ----
52
+ * The collector cannot own the program's roots or string heap (they are
53
+ * static state in the generated TU: the regexp match globals, ARGV, the
54
+ * in-flight exception stack, and the heap-string free list). The TU
55
+ * installs its mark-roots and string-sweep callbacks here at startup;
56
+ * sp_gc_mark_all / sp_gc_collect invoke them through these pointers, the
57
+ * same way fibers register sp_gc_mark_suspended_fibers_hook. */
58
+ extern void (*sp_gc_mark_globals_hook)(void);
59
+ extern void (*sp_gc_str_sweep_hook)(void);
60
+
61
+ /* ---- Hot inline mark helpers (inlined into both sides) ----
62
+ * String tag bytes: 0xfe heap-unmarked -> 0xfc marked; others skipped. */
63
+ static inline void sp_mark_string(const char *s) {
64
+ if (!s) return;
65
+ if ((unsigned char)s[-1] == 0xfe) {
66
+ ((char *)s)[-1] = (char)0xfc;
67
+ }
68
+ }
69
+ static inline void sp_mark_rbval(sp_RbVal v) {
70
+ if (v.tag == SP_TAG_STR) sp_mark_string(v.v.s);
71
+ else if (v.tag == SP_TAG_OBJ) sp_gc_mark(v.v.p);
72
+ }
73
+ /* A low-bit-tagged root entry is an sp_RbVal* (see SP_GC_ROOT_RBVAL);
74
+ an untagged entry is a plain void** to a direct GC pointer. */
75
+ static inline void sp_gc_mark_root_entry(void **e) {
76
+ uintptr_t u = (uintptr_t)e;
77
+ if (u & (uintptr_t)1) { sp_mark_rbval(*(sp_RbVal *)(u & ~(uintptr_t)1)); }
78
+ else { void *o = *e; if (o) sp_gc_mark(o); }
79
+ }
80
+
81
+ #endif
@@ -0,0 +1,98 @@
1
+ /* sp_io.c -- File / IO handle ops in libspinel_rt.a.
2
+ *
3
+ * The allocation-free handle ops (open / pipe / fdopen / write / close /
4
+ * closed? / puts / print / flush / eof?). The string-returning readers
5
+ * (gets / read / read_n / path) stay inline in sp_runtime.h since they
6
+ * allocate via the hot static sp_str_alloc, whose per-TU sp_str_heap
7
+ * can't be shared across translation units.
8
+ *
9
+ * Self-contained: includes sp_io.h (the sp_File layout) + sp_gc.h
10
+ * (sp_mark_string), but not sp_runtime.h, so it avoids the mruby_shim.h
11
+ * mrb_bool conflict (same convention as sp_gc.c / sp_fiber.c). */
12
+ #include "sp_io.h"
13
+ #include "sp_gc.h" /* sp_mark_string */
14
+ #include <stdlib.h>
15
+ #include <string.h>
16
+ #ifdef _WIN32
17
+ #include <io.h> /* _pipe */
18
+ #include <fcntl.h> /* _O_BINARY */
19
+ #else
20
+ #include <unistd.h> /* pipe */
21
+ #endif
22
+
23
+ /* Provided by the generated TU / libspinel_rt.a. */
24
+ extern void *sp_gc_alloc(size_t sz, void (*fin)(void *), void (*scn)(void *));
25
+ extern void sp_raise_cls(const char *cls, const char *msg);
26
+
27
+ static void sp_File_fin(void *p) { sp_File *f = (sp_File *)p; if (f->fp) { fclose(f->fp); f->fp = NULL; } }
28
+ static void sp_File_scan(void *p) { sp_File *f = (sp_File *)p; if (f->path) sp_mark_string(f->path); if (f->mode) sp_mark_string(f->mode); }
29
+
30
+ sp_File *sp_File_open(const char *path, const char *mode) {
31
+ sp_File *f = (sp_File *)sp_gc_alloc(sizeof(sp_File), sp_File_fin, sp_File_scan);
32
+ f->fp = fopen(path ? path : "", mode ? mode : "r");
33
+ if (!f->fp) { sp_raise_cls("Errno::ENOENT", "No such file or directory"); return NULL; }
34
+ f->path = path;
35
+ f->mode = mode;
36
+ return f;
37
+ }
38
+
39
+ /* pipe(2) portability: MinGW exposes _pipe(fds, size, mode) via <io.h>,
40
+ not the POSIX pipe(int[2]). Returns 0 on success, -1 on error. */
41
+ int sp_io_make_pipe(int fds[2]) {
42
+ #ifdef _WIN32
43
+ return _pipe(fds, 65536, _O_BINARY);
44
+ #else
45
+ return pipe(fds);
46
+ #endif
47
+ }
48
+
49
+ /* IO.pipe end: wrap a raw pipe fd in a GC-managed sp_File so the
50
+ sp_File_* I/O ops work on it. Same finalizer/scan as sp_File_open. */
51
+ sp_File *sp_io_fdopen(int fd, const char *mode) {
52
+ sp_File *f = (sp_File *)sp_gc_alloc(sizeof(sp_File), sp_File_fin, sp_File_scan);
53
+ f->fp = fdopen(fd, mode ? mode : "r");
54
+ if (!f->fp) { sp_raise_cls("IOError", "fdopen failed"); return NULL; }
55
+ f->path = NULL;
56
+ f->mode = mode;
57
+ return f;
58
+ }
59
+
60
+ mrb_int sp_File_write(sp_File *f, const char *s) {
61
+ if (!f || !f->fp || !s) return 0;
62
+ size_t n = strlen(s);
63
+ return (mrb_int)fwrite(s, 1, n, f->fp);
64
+ }
65
+
66
+ mrb_int sp_File_close(sp_File *f) {
67
+ if (f && f->fp) { fclose(f->fp); f->fp = NULL; }
68
+ return 0;
69
+ }
70
+
71
+ mrb_bool sp_File_closed_p(sp_File *f) {
72
+ return !f || !f->fp;
73
+ }
74
+
75
+ void sp_File_puts(sp_File *f, const char *s) {
76
+ if (!f || !f->fp || !s) return;
77
+ size_t n = strlen(s);
78
+ fputs(s, f->fp);
79
+ if (n == 0 || s[n - 1] != '\n') fputc('\n', f->fp);
80
+ }
81
+
82
+ void sp_File_print(sp_File *f, const char *s) {
83
+ if (!f || !f->fp || !s) return;
84
+ fputs(s, f->fp);
85
+ }
86
+
87
+ mrb_int sp_File_flush(sp_File *f) {
88
+ if (f && f->fp) fflush(f->fp);
89
+ return 0;
90
+ }
91
+
92
+ mrb_bool sp_File_eof_p(sp_File *f) {
93
+ if (!f || !f->fp) return TRUE;
94
+ int c = fgetc(f->fp);
95
+ if (c == EOF) return TRUE;
96
+ ungetc(c, f->fp);
97
+ return FALSE;
98
+ }
@@ -0,0 +1,31 @@
1
+ /* sp_io.h -- File / IO handle surface.
2
+ *
3
+ * sp_File is a stdio FILE* plus its (GC-managed) path/mode strings,
4
+ * shared between the generated translation unit and lib/sp_io.c, which
5
+ * holds the allocation-free handle ops. The string-returning readers
6
+ * (sp_File_gets / _read / _read_n / _path) stay inline in sp_runtime.h
7
+ * because they allocate via the hot static sp_str_alloc; moving them
8
+ * would split the per-TU string heap. */
9
+ #ifndef SP_IO_H
10
+ #define SP_IO_H
11
+
12
+ #include <stdio.h>
13
+ #include "sp_types.h" /* mrb_int, mrb_bool */
14
+
15
+ typedef struct { FILE *fp; const char *path; const char *mode; } sp_File;
16
+
17
+ /* File.open(path, mode) -> GC-managed handle (block form is codegen-only). */
18
+ sp_File *sp_File_open(const char *path, const char *mode);
19
+ /* pipe(2) portability shim: POSIX pipe / MinGW _pipe. 0 ok, -1 error. */
20
+ int sp_io_make_pipe(int fds[2]);
21
+ /* IO.pipe end: wrap a raw pipe fd in a GC-managed sp_File. */
22
+ sp_File *sp_io_fdopen(int fd, const char *mode);
23
+ mrb_int sp_File_write(sp_File *f, const char *s);
24
+ mrb_int sp_File_close(sp_File *f);
25
+ mrb_bool sp_File_closed_p(sp_File *f);
26
+ void sp_File_puts(sp_File *f, const char *s);
27
+ void sp_File_print(sp_File *f, const char *s);
28
+ mrb_int sp_File_flush(sp_File *f);
29
+ mrb_bool sp_File_eof_p(sp_File *f);
30
+
31
+ #endif