debase-ruby_core_source 4.0.1 → 4.1.0.preview1

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 (200) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/addr2line.h +22 -0
  4. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/builtin.h +127 -0
  5. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/ccan/build_assert/build_assert.h +40 -0
  6. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/ccan/check_type/check_type.h +63 -0
  7. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/ccan/container_of/container_of.h +142 -0
  8. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/ccan/list/list.h +791 -0
  9. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/ccan/str/str.h +17 -0
  10. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/constant.h +53 -0
  11. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/darray.h +295 -0
  12. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/debug_counter.h +428 -0
  13. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/dln.h +33 -0
  14. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/encindex.h +70 -0
  15. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/eval_intern.h +356 -0
  16. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/hrtime.h +237 -0
  17. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/id.h +365 -0
  18. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/id_table.h +74 -0
  19. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/insns.inc +315 -0
  20. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/insns_info.inc +11637 -0
  21. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/array.h +158 -0
  22. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/basic_operators.h +67 -0
  23. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/bignum.h +249 -0
  24. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/bits.h +647 -0
  25. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/box.h +103 -0
  26. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/class.h +797 -0
  27. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/cmdlineopt.h +64 -0
  28. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/compar.h +30 -0
  29. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/compile.h +34 -0
  30. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/compilers.h +104 -0
  31. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/complex.h +29 -0
  32. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/concurrent_set.h +21 -0
  33. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/cont.h +33 -0
  34. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/coverage.h +51 -0
  35. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/dir.h +16 -0
  36. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/enc.h +19 -0
  37. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/encoding.h +40 -0
  38. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/enum.h +18 -0
  39. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/enumerator.h +21 -0
  40. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/error.h +287 -0
  41. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/eval.h +43 -0
  42. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/file.h +40 -0
  43. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/fixnum.h +185 -0
  44. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/gc.h +411 -0
  45. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/hash.h +220 -0
  46. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/imemo.h +302 -0
  47. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/inits.h +54 -0
  48. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/io.h +167 -0
  49. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/io_buffer.h +36 -0
  50. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/jit.h +23 -0
  51. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/load.h +20 -0
  52. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/loadpath.h +16 -0
  53. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/marshal.h +17 -0
  54. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/math.h +23 -0
  55. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/missing.h +19 -0
  56. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/numeric.h +326 -0
  57. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/object.h +88 -0
  58. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/objspace.h +24 -0
  59. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/parse.h +131 -0
  60. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/proc.h +34 -0
  61. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/process.h +124 -0
  62. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/ractor.h +9 -0
  63. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/random.h +17 -0
  64. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/range.h +46 -0
  65. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/rational.h +92 -0
  66. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/re.h +87 -0
  67. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/ruby_parser.h +109 -0
  68. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/sanitizers.h +346 -0
  69. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/scheduler.h +7 -0
  70. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/serial.h +23 -0
  71. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/set.h +20 -0
  72. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/set_table.h +77 -0
  73. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/signal.h +25 -0
  74. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/simd.h +18 -0
  75. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/st.h +32 -0
  76. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/static_assert.h +16 -0
  77. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/string.h +240 -0
  78. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/struct.h +120 -0
  79. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/symbol.h +46 -0
  80. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/thread.h +108 -0
  81. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/time.h +34 -0
  82. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/transcode.h +23 -0
  83. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/util.h +27 -0
  84. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/variable.h +81 -0
  85. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/vm.h +144 -0
  86. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/vm_map.h +95 -0
  87. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/warnings.h +16 -0
  88. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal.h +106 -0
  89. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/iseq.h +439 -0
  90. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/known_errors.inc +1419 -0
  91. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/method.h +279 -0
  92. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/node.h +122 -0
  93. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/node_name.inc +224 -0
  94. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/optinsn.inc +128 -0
  95. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/optunifs.inc +41 -0
  96. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/parse.h +246 -0
  97. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/parser_bits.h +647 -0
  98. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/parser_node.h +32 -0
  99. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/parser_st.h +161 -0
  100. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/parser_value.h +116 -0
  101. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/arena.h +37 -0
  102. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/ast.h +10371 -0
  103. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/buffer.h +52 -0
  104. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/comments.h +43 -0
  105. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/accel.h +19 -0
  106. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/align.h +36 -0
  107. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/assume.h +25 -0
  108. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/exported.h +24 -0
  109. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/fallthrough.h +22 -0
  110. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/filesystem.h +32 -0
  111. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/flex_array.h +19 -0
  112. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/force_inline.h +21 -0
  113. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/format.h +25 -0
  114. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/inline.h +17 -0
  115. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/nodiscard.h +22 -0
  116. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/nonnull.h +18 -0
  117. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/unused.h +18 -0
  118. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/constant_pool.h +81 -0
  119. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/diagnostic.h +93 -0
  120. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/errors_format.h +53 -0
  121. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/excludes.h +29 -0
  122. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/extension.h +19 -0
  123. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/integer.h +41 -0
  124. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/allocator.h +68 -0
  125. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/allocator_debug.h +88 -0
  126. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/arena.h +108 -0
  127. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/bit.h +42 -0
  128. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/buffer.h +91 -0
  129. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/char.h +139 -0
  130. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/comments.h +20 -0
  131. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/constant_pool.h +152 -0
  132. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/diagnostic.h +389 -0
  133. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/encoding.h +242 -0
  134. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/integer.h +68 -0
  135. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/isinf.h +16 -0
  136. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/line_offset_list.h +34 -0
  137. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/list.h +62 -0
  138. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/magic_comments.h +23 -0
  139. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/memchr.h +15 -0
  140. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/node.h +32 -0
  141. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/options.h +224 -0
  142. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/parser.h +971 -0
  143. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/regexp.h +42 -0
  144. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/serialize.h +39 -0
  145. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/source.h +72 -0
  146. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/static_literals.h +100 -0
  147. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/stringy.h +35 -0
  148. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/strncasecmp.h +18 -0
  149. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/strpbrk.h +33 -0
  150. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/tokens.h +11 -0
  151. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/json.h +32 -0
  152. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/line_offset_list.h +61 -0
  153. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/magic_comments.h +35 -0
  154. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/node.h +94 -0
  155. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/options.h +335 -0
  156. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/parser.h +348 -0
  157. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/prettyprint.h +31 -0
  158. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/prism.h +131 -0
  159. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/serialize.h +115 -0
  160. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/source.h +155 -0
  161. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/stream.h +28 -0
  162. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/string_query.h +63 -0
  163. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/stringy.h +72 -0
  164. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/version.h +38 -0
  165. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism_compile.h +204 -0
  166. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism_xallocator.h +6 -0
  167. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/probes_helper.h +42 -0
  168. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/ractor_core.h +421 -0
  169. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/regenc.h +261 -0
  170. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/regint.h +983 -0
  171. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/regparse.h +371 -0
  172. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/revision.h +5 -0
  173. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/ruby_assert.h +14 -0
  174. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/ruby_atomic.h +115 -0
  175. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/rubyparser.h +1389 -0
  176. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/shape.h +733 -0
  177. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/siphash.h +48 -0
  178. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/symbol.h +116 -0
  179. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/thread_none.h +25 -0
  180. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/thread_pthread.h +63 -0
  181. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/thread_sched.h +271 -0
  182. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/thread_win32.h +48 -0
  183. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/timev.h +58 -0
  184. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/transcode_data.h +138 -0
  185. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/variable.h +26 -0
  186. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/version.h +69 -0
  187. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm.inc +6457 -0
  188. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm_call_iseq_optimized.inc +244 -0
  189. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm_callinfo.h +688 -0
  190. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm_core.h +2509 -0
  191. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm_debug.h +124 -0
  192. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm_exec.h +202 -0
  193. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm_insnhelper.h +280 -0
  194. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm_opts.h +65 -0
  195. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm_sync.h +160 -0
  196. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vmtc.inc +302 -0
  197. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/yjit.h +87 -0
  198. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/zjit.h +221 -0
  199. data/lib/debase/ruby_core_source/version.rb +1 -1
  200. metadata +2930 -2724
@@ -0,0 +1,346 @@
1
+ #ifndef INTERNAL_SANITIZERS_H /*-*-C-*-vi:se ft=c:*/
2
+ #define INTERNAL_SANITIZERS_H
3
+ /**
4
+ * @author Ruby developers <ruby-core@ruby-lang.org>
5
+ * @copyright This file is a part of the programming language Ruby.
6
+ * Permission is hereby granted, to either redistribute and/or
7
+ * modify this file, provided that the conditions mentioned in the
8
+ * file COPYING are met. Consult the file for details.
9
+ * @brief Internal header for ASAN / MSAN / etc.
10
+ */
11
+ #include "ruby/internal/config.h"
12
+ #include "internal/compilers.h" /* for __has_feature */
13
+
14
+ #ifdef HAVE_VALGRIND_MEMCHECK_H
15
+ # include <valgrind/memcheck.h>
16
+ #endif
17
+
18
+ #ifdef HAVE_SANITIZER_ASAN_INTERFACE_H
19
+ # if __has_feature(address_sanitizer) || defined(__SANITIZE_ADDRESS__)
20
+ # define RUBY_ASAN_ENABLED
21
+ # include <sanitizer/asan_interface.h>
22
+ # endif
23
+ #endif
24
+
25
+ #ifdef HAVE_SANITIZER_MSAN_INTERFACE_H
26
+ # if __has_feature(memory_sanitizer)
27
+ # define RUBY_MSAN_ENABLED
28
+ # include <sanitizer/msan_interface.h>
29
+ # endif
30
+ #endif
31
+
32
+ #ifdef HAVE_SANITIZER_TSAN_INTERFACE_H
33
+ # if __has_feature(thread_sanitizer) || defined(__SANITIZE_THREAD__)
34
+ # define RUBY_TSAN_ENABLED
35
+ # include <sanitizer/tsan_interface.h>
36
+ # endif
37
+ #endif
38
+
39
+ #include "ruby/internal/stdbool.h" /* for bool */
40
+ #include "ruby/ruby.h" /* for VALUE */
41
+
42
+ #if 0
43
+ #elif defined(RUBY_ASAN_ENABLED) && defined(RUBY_MSAN_ENABLED)
44
+ # define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(x) \
45
+ __attribute__((__no_sanitize__("memory, address"), __noinline__)) x
46
+ #elif defined(RUBY_ASAN_ENABLED)
47
+ # define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(x) \
48
+ __attribute__((__no_sanitize__("address"), __noinline__)) x
49
+ #elif defined(RUBY_MSAN_ENABLED)
50
+ # define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(x) \
51
+ __attribute__((__no_sanitize__("memory"), __noinline__)) x
52
+ #elif defined(RUBY_TSAN_ENABLED)
53
+ # define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(x) \
54
+ __attribute__((__no_sanitize__("thread"), __noinline__)) x
55
+ #elif defined(NO_SANITIZE_ADDRESS)
56
+ # define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(x) \
57
+ NO_SANITIZE_ADDRESS(NOINLINE(x))
58
+ #elif defined(NO_ADDRESS_SAFETY_ANALYSIS)
59
+ # define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(x) \
60
+ NO_ADDRESS_SAFETY_ANALYSIS(NOINLINE(x))
61
+ #else
62
+ # define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(x) x
63
+ #endif
64
+
65
+ #if defined(NO_SANITIZE) && RBIMPL_COMPILER_IS(GCC)
66
+ /* GCC warns about unknown sanitizer, which is annoying. */
67
+ # include "internal/warnings.h"
68
+ # undef NO_SANITIZE
69
+ # define NO_SANITIZE(x, y) \
70
+ COMPILER_WARNING_PUSH \
71
+ COMPILER_WARNING_IGNORED(-Wattributes) \
72
+ __attribute__((__no_sanitize__(x))) y; \
73
+ COMPILER_WARNING_POP \
74
+ y
75
+ #endif
76
+
77
+ #ifndef NO_SANITIZE
78
+ # define NO_SANITIZE(x, y) y
79
+ #endif
80
+
81
+ #ifndef RUBY_ASAN_ENABLED
82
+ # define __asan_poison_memory_region(x, y)
83
+ # define __asan_unpoison_memory_region(x, y)
84
+ # define __asan_region_is_poisoned(x, y) 0
85
+ # define __asan_get_current_fake_stack() NULL
86
+ # define __asan_addr_is_in_fake_stack(fake_stack, slot, start, end) NULL
87
+ #endif
88
+
89
+ #ifndef RUBY_MSAN_ENABLED
90
+ # define __msan_allocated_memory(x, y) ((void)(x), (void)(y))
91
+ # define __msan_poison(x, y) ((void)(x), (void)(y))
92
+ # define __msan_unpoison(x, y) ((void)(x), (void)(y))
93
+ # define __msan_unpoison_string(x) ((void)(x))
94
+ #endif
95
+
96
+ #ifdef VALGRIND_MAKE_READABLE
97
+ # define VALGRIND_MAKE_MEM_DEFINED(p, n) VALGRIND_MAKE_READABLE((p), (n))
98
+ #endif
99
+
100
+ #ifdef VALGRIND_MAKE_WRITABLE
101
+ # define VALGRIND_MAKE_MEM_UNDEFINED(p, n) VALGRIND_MAKE_WRITABLE((p), (n))
102
+ #endif
103
+
104
+ #ifndef VALGRIND_MAKE_MEM_DEFINED
105
+ # define VALGRIND_MAKE_MEM_DEFINED(p, n) 0
106
+ #endif
107
+
108
+ #ifndef VALGRIND_MAKE_MEM_UNDEFINED
109
+ # define VALGRIND_MAKE_MEM_UNDEFINED(p, n) 0
110
+ #endif
111
+
112
+ /**
113
+ * This function asserts that a (continuous) memory region from ptr to size
114
+ * being "poisoned". Both read / write access to such memory region are
115
+ * prohibited until properly unpoisoned. The region must be previously
116
+ * allocated (do not pass a freed pointer here), but not necessarily be an
117
+ * entire object that the malloc returns. You can punch hole a part of a
118
+ * gigantic heap arena. This is handy when you do not free an allocated memory
119
+ * region to reuse later: poison when you keep it unused, and unpoison when you
120
+ * reuse.
121
+ *
122
+ * @param[in] ptr pointer to the beginning of the memory region to poison.
123
+ * @param[in] size the length of the memory region to poison.
124
+ */
125
+ static inline void
126
+ asan_poison_memory_region(const volatile void *ptr, size_t size)
127
+ {
128
+ __msan_poison(ptr, size);
129
+ __asan_poison_memory_region(ptr, size);
130
+ }
131
+
132
+ #ifdef RUBY_ASAN_ENABLED
133
+ #define asan_poison_object_if(ptr, obj) do { \
134
+ if (ptr) rb_asan_poison_object(obj); \
135
+ } while (0)
136
+ #else
137
+ #define asan_poison_object_if(ptr, obj) ((void)(ptr), (void)(obj))
138
+ #endif
139
+
140
+ #ifdef RUBY_ASAN_ENABLED
141
+ RUBY_SYMBOL_EXPORT_BEGIN
142
+ /**
143
+ * This is a variant of asan_poison_memory_region that takes a VALUE.
144
+ *
145
+ * @param[in] obj target object.
146
+ */
147
+ void rb_asan_poison_object(VALUE obj);
148
+
149
+ /**
150
+ * This function predicates if the given object is fully addressable or not.
151
+ *
152
+ * @param[in] obj target object.
153
+ * @retval 0 the given object is fully addressable.
154
+ * @retval otherwise pointer to first such byte who is poisoned.
155
+ */
156
+ void *rb_asan_poisoned_object_p(VALUE obj);
157
+
158
+ /**
159
+ * This is a variant of asan_unpoison_memory_region that takes a VALUE.
160
+ *
161
+ * @param[in] obj target object.
162
+ * @param[in] malloc_p if the memory region is like a malloc's return value or not.
163
+ */
164
+ void rb_asan_unpoison_object(VALUE obj, bool newobj_p);
165
+
166
+ RUBY_SYMBOL_EXPORT_END
167
+ #else
168
+ # define rb_asan_poison_object(obj) ((void)obj)
169
+ # define rb_asan_poisoned_object_p(obj) ((void)obj, NULL)
170
+ # define rb_asan_unpoison_object(obj, newobj_p) ((void)obj, (void)newobj_p)
171
+ #endif
172
+
173
+ /**
174
+ * This function asserts that a (formally poisoned) memory region from ptr to
175
+ * size is now addressable. Write access to such memory region gets allowed.
176
+ * However read access might or might not be possible depending on situations,
177
+ * because the region can have contents of previous usages. That information
178
+ * should be passed by the malloc_p flag. If that is true, the contents of the
179
+ * region is _not_ fully defined (like the return value of malloc behaves).
180
+ * Reading from there is NG; write something first. If malloc_p is false on
181
+ * the other hand, that memory region is fully defined and can be read
182
+ * immediately.
183
+ *
184
+ * @param[in] ptr pointer to the beginning of the memory region to unpoison.
185
+ * @param[in] size the length of the memory region.
186
+ * @param[in] malloc_p if the memory region is like a malloc's return value or not.
187
+ */
188
+ static inline void
189
+ asan_unpoison_memory_region(const volatile void *ptr, size_t size, bool malloc_p)
190
+ {
191
+ __asan_unpoison_memory_region(ptr, size);
192
+ if (malloc_p) {
193
+ __msan_allocated_memory(ptr, size);
194
+ }
195
+ else {
196
+ __msan_unpoison(ptr, size);
197
+ }
198
+ }
199
+
200
+ static inline void *
201
+ asan_unpoison_object_temporary(VALUE obj)
202
+ {
203
+ void *ptr = rb_asan_poisoned_object_p(obj);
204
+ rb_asan_unpoison_object(obj, false);
205
+ return ptr;
206
+ }
207
+
208
+ static inline void *
209
+ asan_poison_object_restore(VALUE obj, void *ptr)
210
+ {
211
+ if (ptr) {
212
+ rb_asan_poison_object(obj);
213
+ }
214
+ return NULL;
215
+ }
216
+
217
+ #define asan_unpoisoning_object(obj) \
218
+ for (void *poisoned = asan_unpoison_object_temporary(obj), \
219
+ *unpoisoning = &poisoned; /* flag to loop just once */ \
220
+ unpoisoning; \
221
+ unpoisoning = asan_poison_object_restore(obj, poisoned))
222
+
223
+
224
+ static inline void *
225
+ asan_unpoison_memory_region_temporary(void *ptr, size_t len)
226
+ {
227
+ void *poisoned_ptr = __asan_region_is_poisoned(ptr, len);
228
+ asan_unpoison_memory_region(ptr, len, false);
229
+ return poisoned_ptr;
230
+ }
231
+
232
+ static inline void *
233
+ asan_poison_memory_region_restore(void *ptr, size_t len, void *poisoned_ptr)
234
+ {
235
+ if (poisoned_ptr) {
236
+ asan_poison_memory_region(ptr, len);
237
+ }
238
+ return NULL;
239
+ }
240
+
241
+ #define asan_unpoisoning_memory_region(ptr, len) \
242
+ for (void *poisoned = asan_unpoison_memory_region_temporary(ptr, len), \
243
+ *unpoisoning = &poisoned; /* flag to loop just once */ \
244
+ unpoisoning; \
245
+ unpoisoning = asan_poison_memory_region_restore(ptr, len, poisoned))
246
+
247
+ /**
248
+ * Checks if the given pointer is on an ASAN fake stack. If so, it returns the
249
+ * address this variable has on the real frame; if not, it returns the origin
250
+ * address unmodified.
251
+ *
252
+ * n.b. - _dereferencing_ the returned address is meaningless and should not
253
+ * be done; even though ASAN reserves space for the variable in both the real and
254
+ * fake stacks, the _value_ of that variable is only in the fake stack.
255
+ *
256
+ * n.b. - this only works for addresses passed in from local variables on the same
257
+ * thread, because the ASAN fake stacks are threadlocal.
258
+ *
259
+ * @param[in] slot the address of some local variable
260
+ * @retval a pointer to something from that frame on the _real_ machine stack
261
+ */
262
+ static inline void *
263
+ asan_get_real_stack_addr(void* slot)
264
+ {
265
+ VALUE *addr;
266
+ addr = __asan_addr_is_in_fake_stack(__asan_get_current_fake_stack(), slot, NULL, NULL);
267
+ return addr ? addr : slot;
268
+ }
269
+
270
+ /**
271
+ * Gets the current thread's fake stack handle, which can be passed into get_fake_stack_extents
272
+ *
273
+ * @retval An opaque value which can be passed to asan_get_fake_stack_extents
274
+ */
275
+ static inline void *
276
+ asan_get_thread_fake_stack_handle(void)
277
+ {
278
+ return __asan_get_current_fake_stack();
279
+ }
280
+
281
+ /**
282
+ * Checks if the given VALUE _actually_ represents a pointer to an ASAN fake stack.
283
+ *
284
+ * If the given slot _is_ actually a reference to an ASAN fake stack, and that fake stack
285
+ * contains the real values for the passed-in range of machine stack addresses, returns true
286
+ * and the range of the fake stack through the outparams.
287
+ *
288
+ * Otherwise, returns false, and sets the outparams to NULL.
289
+ *
290
+ * Note that this function expects "start" to be > "end" on downward-growing stack architectures;
291
+ *
292
+ * @param[in] thread_fake_stack_handle The asan fake stack reference for the thread we're scanning
293
+ * @param[in] slot The value on the machine stack we want to inspect
294
+ * @param[in] machine_stack_start The extents of the real machine stack on which slot lives
295
+ * @param[in] machine_stack_end The extents of the real machine stack on which slot lives
296
+ * @param[out] fake_stack_start_out The extents of the fake stack which contains real VALUEs
297
+ * @param[out] fake_stack_end_out The extents of the fake stack which contains real VALUEs
298
+ * @return Whether slot is a pointer to a fake stack for the given machine stack range
299
+ */
300
+
301
+ static inline bool
302
+ asan_get_fake_stack_extents(void *thread_fake_stack_handle, VALUE slot,
303
+ void *machine_stack_start, void *machine_stack_end,
304
+ void **fake_stack_start_out, void **fake_stack_end_out)
305
+ {
306
+ /* the ifdef is needed here to suppress a warning about fake_frame_{start/end} being
307
+ uninitialized if __asan_addr_is_in_fake_stack is an empty macro */
308
+ #ifdef RUBY_ASAN_ENABLED
309
+ void *fake_frame_start;
310
+ void *fake_frame_end;
311
+ void *real_stack_frame = __asan_addr_is_in_fake_stack(
312
+ thread_fake_stack_handle, (void *)slot, &fake_frame_start, &fake_frame_end
313
+ );
314
+ if (real_stack_frame) {
315
+ bool in_range;
316
+ #if STACK_GROW_DIRECTION < 0
317
+ in_range = machine_stack_start >= real_stack_frame && real_stack_frame >= machine_stack_end;
318
+ #else
319
+ in_range = machine_stack_start <= real_stack_frame && real_stack_frame <= machine_stack_end;
320
+ #endif
321
+ if (in_range) {
322
+ *fake_stack_start_out = fake_frame_start;
323
+ *fake_stack_end_out = fake_frame_end;
324
+ return true;
325
+ }
326
+ }
327
+ #endif
328
+ *fake_stack_start_out = 0;
329
+ *fake_stack_end_out = 0;
330
+ return false;
331
+ }
332
+
333
+ extern const char ruby_asan_default_options[];
334
+
335
+ #ifdef RUBY_ASAN_ENABLED
336
+ /* Compile in the ASAN options Ruby needs, rather than relying on environment variables, so
337
+ * that even tests which fork ruby with a clean environment will run ASAN with the right
338
+ * settings */
339
+ # undef RUBY__ASAN_DEFAULT_OPTIONS
340
+ # define RUBY__ASAN_DEFAULT_OPTIONS \
341
+ RBIMPL_SYMBOL_EXPORT_BEGIN() \
342
+ const char * __asan_default_options(void) {return ruby_asan_default_options;} \
343
+ RBIMPL_SYMBOL_EXPORT_END()
344
+ #endif
345
+
346
+ #endif /* INTERNAL_SANITIZERS_H */
@@ -0,0 +1,7 @@
1
+ #pragma once
2
+
3
+ #include "ruby/ruby.h"
4
+
5
+ VALUE rb_fiber_scheduler_interrupt_target_new(VALUE fiber, VALUE exception);
6
+ VALUE rb_fiber_scheduler_interrupt_target_exception(VALUE target);
7
+ void rb_fiber_scheduler_interrupt_target_invalidate(VALUE target);
@@ -0,0 +1,23 @@
1
+ #ifndef INTERNAL_SERIAL_H /*-*-C-*-vi:se ft=c:*/
2
+ #define INTERNAL_SERIAL_H
3
+ /**
4
+ * @author Ruby developers <ruby-core@ruby-lang.org>
5
+ * @copyright This file is a part of the programming language Ruby.
6
+ * Permission is hereby granted, to either redistribute and/or
7
+ * modify this file, provided that the conditions mentioned in the
8
+ * file COPYING are met. Consult the file for details.
9
+ * @brief Internal header for rb_serial_t.
10
+ */
11
+ #include "ruby/internal/config.h" /* for HAVE_LONG_LONG */
12
+ #include "ruby/defines.h" /* for LONG_LONG */
13
+
14
+ #ifndef HAVE_LONG_LONG
15
+ # error need C99+
16
+ #endif
17
+
18
+ typedef unsigned LONG_LONG rb_serial_t;
19
+ #define SERIALT2NUM ULL2NUM
20
+ #define PRI_SERIALT_PREFIX PRI_LL_PREFIX
21
+ #define SIZEOF_SERIAL_T SIZEOF_LONG_LONG
22
+
23
+ #endif /* INTERNAL_SERIAL_H */
@@ -0,0 +1,20 @@
1
+ #ifndef INTERNAL_SET_H /*-*-C-*-vi:se ft=c:*/
2
+ #define INTERNAL_SET_H
3
+ /**
4
+ * @author Ruby developers <ruby-core@ruby-lang.org>
5
+ * @copyright This file is a part of the programming language Ruby.
6
+ * Permission is hereby granted, to either redistribute and/or
7
+ * modify this file, provided that the conditions mentioned in the
8
+ * file COPYING are met. Consult the file for details.
9
+ * @brief Internal header for Set.
10
+ */
11
+ #include "ruby/internal/config.h"
12
+ #include "ruby/ruby.h"
13
+
14
+ VALUE rb_ident_set_new(void);
15
+ bool rb_set_add_no_check(VALUE set, VALUE element);
16
+ bool rb_set_delete_no_check(VALUE set, VALUE element);
17
+ VALUE rb_set_to_a(VALUE set);
18
+ bool rb_set_p(VALUE set);
19
+
20
+ #endif /* INTERNAL_SET_H */
@@ -0,0 +1,77 @@
1
+ #ifndef INTERNAL_SET_TABLE_H
2
+ #define INTERNAL_SET_TABLE_H
3
+
4
+ #include "ruby/st.h"
5
+
6
+ struct set_table_entry;
7
+
8
+ typedef struct set_table_entry set_table_entry;
9
+
10
+ struct set_table {
11
+ /* Cached features of the table -- see st.c for more details. */
12
+ unsigned char entry_power, bin_power, size_ind;
13
+ /* How many times the table was rebuilt. */
14
+ unsigned char rebuilds_num;
15
+
16
+ /* Start index of entries in array entries. */
17
+ unsigned int entries_start;
18
+ const struct st_hash_type *type;
19
+ /* Number of entries currently in the table. */
20
+ st_index_t num_entries;
21
+
22
+ /* bound index of entries in array entries.
23
+ entries_starts and entries_bound are in interval
24
+ [0,allocated_entries]. */
25
+ st_index_t entries_bound;
26
+
27
+ /**
28
+ * Array of size 2^entry_power.
29
+ * Followed by st_index_t *bins, Array of bins used for access by keys.
30
+ */
31
+ set_table_entry *entries;
32
+ };
33
+
34
+ typedef struct set_table set_table;
35
+
36
+ typedef int set_foreach_callback_func(st_data_t, st_data_t);
37
+ typedef int set_foreach_check_callback_func(st_data_t, st_data_t, int);
38
+ typedef int set_update_callback_func(st_data_t *key, st_data_t arg, int existing);
39
+
40
+ #define set_table_size rb_set_table_size
41
+ size_t rb_set_table_size(const struct set_table *tbl);
42
+ #define set_init_table_with_size rb_set_init_table_with_size
43
+ set_table *rb_set_init_table_with_size(set_table *tab, const struct st_hash_type *, st_index_t);
44
+ #define set_init_numtable rb_set_init_numtable
45
+ set_table *rb_set_init_numtable(void);
46
+ #define set_init_numtable_with_size rb_set_init_numtable_with_size
47
+ set_table *rb_set_init_numtable_with_size(st_index_t size);
48
+ #define set_init_embedded_numtable_with_size rb_set_init_embedded_numtable_with_size
49
+ set_table *rb_set_init_embedded_numtable_with_size(struct set_table *tbl, st_index_t size);
50
+ #define set_table_delete rb_set_table_delete
51
+ int rb_set_table_delete(set_table *, st_data_t *); /* returns 0:notfound 1:deleted */
52
+ #define set_insert rb_set_insert
53
+ int rb_set_insert(set_table *, st_data_t);
54
+ #define set_table_lookup rb_set_table_lookup
55
+ int rb_set_table_lookup(set_table *, st_data_t);
56
+ #define set_foreach_with_replace rb_set_foreach_with_replace
57
+ int rb_set_foreach_with_replace(set_table *tab, set_foreach_check_callback_func *func, set_update_callback_func *replace, st_data_t arg);
58
+ #define set_table_foreach rb_set_table_foreach
59
+ int rb_set_table_foreach(set_table *, set_foreach_callback_func *, st_data_t);
60
+ #define set_foreach_check rb_set_foreach_check
61
+ int rb_set_foreach_check(set_table *, set_foreach_check_callback_func *, st_data_t, st_data_t);
62
+ #define set_keys rb_set_keys
63
+ st_index_t rb_set_keys(set_table *table, st_data_t *keys, st_index_t size);
64
+ #define set_free_table rb_set_free_table
65
+ void rb_set_free_table(set_table *);
66
+ #define set_free_embedded_table rb_set_free_embedded_table
67
+ void set_free_embedded_table(set_table *tab);
68
+ #define set_table_clear rb_set_table_clear
69
+ void rb_set_table_clear(set_table *);
70
+ #define set_copy rb_set_copy
71
+ set_table *rb_set_copy(set_table *new_table, set_table *old_table);
72
+ #define set_memsize rb_set_memsize
73
+ PUREFUNC(size_t rb_set_memsize(const set_table *));
74
+ #define set_compact_table rb_set_compact_table
75
+ void set_compact_table(set_table *tab);
76
+
77
+ #endif
@@ -0,0 +1,25 @@
1
+ #ifndef INTERNAL_SIGNAL_H /*-*-C-*-vi:se ft=c:*/
2
+ #define INTERNAL_SIGNAL_H
3
+ /**
4
+ * @author Ruby developers <ruby-core@ruby-lang.org>
5
+ * @copyright This file is a part of the programming language Ruby.
6
+ * Permission is hereby granted, to either redistribute and/or
7
+ * modify this file, provided that the conditions mentioned in the
8
+ * file COPYING are met. Consult the file for details.
9
+ * @brief Internal header for SignalException.
10
+ */
11
+
12
+ /* signal.c */
13
+ extern int ruby_enable_coredump;
14
+ int rb_get_next_signal(void);
15
+
16
+ #ifdef POSIX_SIGNAL
17
+ void (*ruby_posix_signal(int, void (*)(int)))(int);
18
+ #endif
19
+
20
+ RUBY_SYMBOL_EXPORT_BEGIN
21
+ /* signal.c (export) */
22
+ void rb_signal_atfork(void);
23
+ RUBY_SYMBOL_EXPORT_END
24
+
25
+ #endif /* INTERNAL_SIGNAL_H */
@@ -0,0 +1,18 @@
1
+ #ifndef INTERNAL_SIMD_H
2
+ #define INTERNAL_SIMD_H
3
+
4
+ #if defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) || defined(_M_X64) || defined(_M_AMD64)
5
+ #ifdef HAVE_X86INTRIN_H
6
+ #include <x86intrin.h>
7
+ #define HAVE_SIMD 1
8
+ #define HAVE_SIMD_SSE2 1
9
+ #endif
10
+ #endif
11
+
12
+ #if defined(__ARM_NEON) || defined(__ARM_NEON__) || defined(__aarch64__) || defined(_M_ARM64)
13
+ #define HAVE_SIMD 1
14
+ #define HAVE_SIMD_NEON 1
15
+ #include <arm_neon.h>
16
+ #endif
17
+
18
+ #endif /* INTERNAL_SIMD_H */
@@ -0,0 +1,32 @@
1
+ #ifndef INTERNAL_ST_H
2
+ #define INTERNAL_ST_H
3
+
4
+ #include "ruby/st.h"
5
+
6
+ st_table *rb_st_replace(st_table *new_tab, st_table *old_tab);
7
+ #define st_replace rb_st_replace
8
+ st_table *rb_st_init_existing_table_with_size(st_table *tab, const struct st_hash_type *type, st_index_t size);
9
+ #define st_init_existing_table_with_size rb_st_init_existing_table_with_size
10
+
11
+ st_table *rb_st_init_existing_numtable_with_size(st_table *tab, st_index_t size);
12
+ #define st_init_existing_numtable_with_size rb_st_init_existing_numtable_with_size
13
+
14
+ st_table *rb_st_init_existing_strtable_with_size(st_table *tab, st_index_t size);
15
+ #define st_init_existing_strtable_with_size rb_st_init_existing_strtable_with_size
16
+
17
+ size_t rb_st_allocated_memsize(const st_table *tab);
18
+ #define st_allocated_memsize rb_st_allocated_memsize
19
+
20
+ void rb_st_free_embedded_table(st_table *tab);
21
+ #define st_free_embedded_table rb_st_free_embedded_table
22
+
23
+ int rb_st_insert_no_rebuild(st_table *tab, st_data_t key, st_data_t value);
24
+ #define st_insert_no_rebuild rb_st_insert_no_rebuild
25
+
26
+ typedef int st_foreach_with_hash_callback_func(st_data_t, st_data_t, st_data_t, st_data_t);
27
+ int rb_st_foreach_with_hash(st_table *, st_foreach_with_hash_callback_func *, st_data_t);
28
+ #define st_foreach_with_hash rb_st_foreach_with_hash
29
+
30
+ void rb_hash_bulk_insert_into_st_table(rb_len_t, const VALUE *, VALUE);
31
+
32
+ #endif
@@ -0,0 +1,16 @@
1
+ #ifndef INTERNAL_STATIC_ASSERT_H /*-*-C-*-vi:se ft=c:*/
2
+ #define INTERNAL_STATIC_ASSERT_H
3
+ /**
4
+ * @author Ruby developers <ruby-core@ruby-lang.org>
5
+ * @copyright This file is a part of the programming language Ruby.
6
+ * Permission is hereby granted, to either redistribute and/or
7
+ * modify this file, provided that the conditions mentioned in the
8
+ * file COPYING are met. Consult the file for details.
9
+ * @brief C11 shim for _Static_assert.
10
+ */
11
+ #include "ruby/internal/static_assert.h"
12
+ #ifndef STATIC_ASSERT
13
+ # define STATIC_ASSERT RBIMPL_STATIC_ASSERT
14
+ #endif
15
+
16
+ #endif /* INTERNAL_STATIC_ASSERT_H */