datadog-ruby_core_source 3.5.3 → 3.5.5

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 (357) hide show
  1. checksums.yaml +4 -4
  2. data/datadog-ruby_core_source.gemspec +1 -1
  3. data/lib/datadog/ruby_core_source/ruby-2.5.0-p0/thread_win32.h +36 -0
  4. data/lib/datadog/ruby_core_source/ruby-2.5.1-p57/thread_win32.h +36 -0
  5. data/lib/datadog/ruby_core_source/ruby-2.5.4-p155/thread_win32.h +36 -0
  6. data/lib/datadog/ruby_core_source/ruby-2.6.0-p0/ccan/build_assert/build_assert.h +40 -0
  7. data/lib/datadog/ruby_core_source/ruby-2.6.0-p0/ccan/check_type/check_type.h +63 -0
  8. data/lib/datadog/ruby_core_source/ruby-2.6.0-p0/ccan/container_of/container_of.h +142 -0
  9. data/lib/datadog/ruby_core_source/ruby-2.6.0-p0/ccan/list/list.h +788 -0
  10. data/lib/datadog/ruby_core_source/ruby-2.6.0-p0/ccan/str/str.h +16 -0
  11. data/lib/datadog/ruby_core_source/ruby-2.6.0-p0/id.h +252 -0
  12. data/lib/datadog/ruby_core_source/ruby-2.6.0-p0/internal.h +2465 -0
  13. data/lib/datadog/ruby_core_source/ruby-2.6.0-p0/iseq.h +304 -0
  14. data/lib/datadog/ruby_core_source/ruby-2.6.0-p0/method.h +229 -0
  15. data/lib/datadog/ruby_core_source/ruby-2.6.0-p0/node.h +449 -0
  16. data/lib/datadog/ruby_core_source/ruby-2.6.0-p0/ruby_assert.h +60 -0
  17. data/lib/datadog/ruby_core_source/ruby-2.6.0-p0/ruby_atomic.h +244 -0
  18. data/lib/datadog/ruby_core_source/ruby-2.6.0-p0/thread_pthread.h +75 -0
  19. data/lib/datadog/ruby_core_source/ruby-2.6.0-p0/thread_win32.h +36 -0
  20. data/lib/datadog/ruby_core_source/ruby-2.6.0-p0/vm_core.h +1902 -0
  21. data/lib/datadog/ruby_core_source/ruby-2.6.0-p0/vm_opts.h +70 -0
  22. data/lib/datadog/ruby_core_source/ruby-2.7.0-p0/ccan/build_assert/build_assert.h +40 -0
  23. data/lib/datadog/ruby_core_source/ruby-2.7.0-p0/ccan/check_type/check_type.h +63 -0
  24. data/lib/datadog/ruby_core_source/ruby-2.7.0-p0/ccan/container_of/container_of.h +142 -0
  25. data/lib/datadog/ruby_core_source/ruby-2.7.0-p0/ccan/list/list.h +788 -0
  26. data/lib/datadog/ruby_core_source/ruby-2.7.0-p0/ccan/str/str.h +16 -0
  27. data/lib/datadog/ruby_core_source/ruby-2.7.0-p0/id.h +290 -0
  28. data/lib/datadog/ruby_core_source/ruby-2.7.0-p0/internal.h +2697 -0
  29. data/lib/datadog/ruby_core_source/ruby-2.7.0-p0/iseq.h +312 -0
  30. data/lib/datadog/ruby_core_source/ruby-2.7.0-p0/method.h +229 -0
  31. data/lib/datadog/ruby_core_source/ruby-2.7.0-p0/node.h +476 -0
  32. data/lib/datadog/ruby_core_source/ruby-2.7.0-p0/ruby_assert.h +15 -0
  33. data/lib/datadog/ruby_core_source/ruby-2.7.0-p0/ruby_atomic.h +244 -0
  34. data/lib/datadog/ruby_core_source/ruby-2.7.0-p0/thread_pthread.h +75 -0
  35. data/lib/datadog/ruby_core_source/ruby-2.7.0-p0/thread_win32.h +36 -0
  36. data/lib/datadog/ruby_core_source/ruby-2.7.0-p0/vm_core.h +1968 -0
  37. data/lib/datadog/ruby_core_source/ruby-2.7.0-p0/vm_opts.h +72 -0
  38. data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/ccan/build_assert/build_assert.h +40 -0
  39. data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/ccan/check_type/check_type.h +63 -0
  40. data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/ccan/container_of/container_of.h +142 -0
  41. data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/ccan/list/list.h +788 -0
  42. data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/ccan/str/str.h +16 -0
  43. data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/id.h +290 -0
  44. data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/id_table.h +36 -0
  45. data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/internal/array.h +119 -0
  46. data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/internal/class.h +174 -0
  47. data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/internal/compilers.h +108 -0
  48. data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/internal/gc.h +161 -0
  49. data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/internal/imemo.h +243 -0
  50. data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/internal/serial.h +24 -0
  51. data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/internal/static_assert.h +17 -0
  52. data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/internal/vm.h +136 -0
  53. data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/internal/warnings.h +17 -0
  54. data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/internal.h +107 -0
  55. data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/iseq.h +305 -0
  56. data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/method.h +245 -0
  57. data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/node.h +484 -0
  58. data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/ractor_core.h +343 -0
  59. data/lib/datadog/ruby_core_source/{ruby-3.4.0-p0/internal/dir.h → ruby-3.0.0-p0/ruby_assert.h} +7 -8
  60. data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/ruby_atomic.h +23 -0
  61. data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/thread_pthread.h +115 -0
  62. data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/thread_win32.h +61 -0
  63. data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/vm_core.h +2023 -0
  64. data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/vm_debug.h +116 -0
  65. data/lib/datadog/ruby_core_source/ruby-3.0.0-p0/vm_opts.h +73 -0
  66. data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/ccan/build_assert/build_assert.h +40 -0
  67. data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/ccan/check_type/check_type.h +63 -0
  68. data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/ccan/container_of/container_of.h +142 -0
  69. data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/ccan/list/list.h +788 -0
  70. data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/ccan/str/str.h +16 -0
  71. data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/darray.h +198 -0
  72. data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/id.h +293 -0
  73. data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/id_table.h +36 -0
  74. data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/internal/array.h +113 -0
  75. data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/internal/class.h +196 -0
  76. data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/internal/compilers.h +107 -0
  77. data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/internal/gc.h +186 -0
  78. data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/internal/imemo.h +243 -0
  79. data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/internal/serial.h +23 -0
  80. data/lib/datadog/ruby_core_source/{ruby-3.3.5-p100/internal/loadpath.h → ruby-3.1.0-p0/internal/static_assert.h} +8 -8
  81. data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/internal/vm.h +133 -0
  82. data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/internal/warnings.h +16 -0
  83. data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/internal.h +109 -0
  84. data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/iseq.h +322 -0
  85. data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/method.h +253 -0
  86. data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/node.h +510 -0
  87. data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/ractor_core.h +346 -0
  88. data/lib/datadog/ruby_core_source/{ruby-3.3.0-p0/internal/dir.h → ruby-3.1.0-p0/ruby_assert.h} +6 -8
  89. data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/ruby_atomic.h +23 -0
  90. data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/thread_pthread.h +115 -0
  91. data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/vm_core.h +2107 -0
  92. data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/vm_debug.h +124 -0
  93. data/lib/datadog/ruby_core_source/ruby-3.1.0-p0/vm_opts.h +73 -0
  94. data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/ccan/build_assert/build_assert.h +40 -0
  95. data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/ccan/check_type/check_type.h +63 -0
  96. data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/ccan/container_of/container_of.h +142 -0
  97. data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/ccan/list/list.h +789 -0
  98. data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/ccan/str/str.h +17 -0
  99. data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/id.h +299 -0
  100. data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/id_table.h +39 -0
  101. data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/internal/array.h +163 -0
  102. data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/internal/basic_operators.h +64 -0
  103. data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/internal/class.h +182 -0
  104. data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/internal/compilers.h +107 -0
  105. data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/internal/gc.h +192 -0
  106. data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/internal/imemo.h +242 -0
  107. data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/internal/serial.h +23 -0
  108. data/lib/datadog/ruby_core_source/{ruby-3.3.0-p0/internal/loadpath.h → ruby-3.2.0-p0/internal/static_assert.h} +8 -8
  109. data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/internal/vm.h +134 -0
  110. data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/internal/warnings.h +16 -0
  111. data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/internal.h +113 -0
  112. data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/iseq.h +329 -0
  113. data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/method.h +254 -0
  114. data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/node.h +514 -0
  115. data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/ractor_core.h +342 -0
  116. data/lib/datadog/ruby_core_source/{ruby-3.3.5-p100/internal/dir.h → ruby-3.2.0-p0/ruby_assert.h} +6 -8
  117. data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/ruby_atomic.h +23 -0
  118. data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/shape.h +232 -0
  119. data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/thread_none.h +20 -0
  120. data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/thread_pthread.h +133 -0
  121. data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/vm_core.h +2106 -0
  122. data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/vm_debug.h +122 -0
  123. data/lib/datadog/ruby_core_source/ruby-3.2.0-p0/vm_opts.h +73 -0
  124. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/constant.h +53 -0
  125. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/debug_counter.h +423 -0
  126. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/vm_sync.h +137 -0
  127. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/constant.h +53 -0
  128. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/debug_counter.h +423 -0
  129. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/vm_sync.h +137 -0
  130. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/constant.h +53 -0
  131. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/debug_counter.h +423 -0
  132. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/vm_sync.h +137 -0
  133. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/constant.h +53 -0
  134. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/debug_counter.h +425 -0
  135. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/vm_sync.h +160 -0
  136. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/constant.h +53 -0
  137. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/debug_counter.h +426 -0
  138. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/vm_sync.h +160 -0
  139. data/lib/datadog/ruby_core_source/version.rb +1 -1
  140. metadata +140 -226
  141. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/bignum.h +0 -244
  142. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/bits.h +0 -568
  143. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/cmdlineopt.h +0 -65
  144. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/compar.h +0 -29
  145. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/compile.h +0 -34
  146. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/complex.h +0 -29
  147. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/cont.h +0 -35
  148. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/enc.h +0 -19
  149. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/encoding.h +0 -35
  150. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/enum.h +0 -18
  151. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/enumerator.h +0 -21
  152. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/error.h +0 -216
  153. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/eval.h +0 -32
  154. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/file.h +0 -38
  155. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/fixnum.h +0 -184
  156. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/hash.h +0 -191
  157. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/inits.h +0 -50
  158. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/io.h +0 -137
  159. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/load.h +0 -18
  160. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/math.h +0 -23
  161. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/missing.h +0 -18
  162. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/numeric.h +0 -273
  163. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/object.h +0 -60
  164. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/parse.h +0 -108
  165. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/proc.h +0 -30
  166. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/process.h +0 -124
  167. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/ractor.h +0 -6
  168. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/random.h +0 -17
  169. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/range.h +0 -40
  170. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/rational.h +0 -71
  171. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/re.h +0 -28
  172. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/ruby_parser.h +0 -69
  173. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/sanitizers.h +0 -186
  174. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/signal.h +0 -25
  175. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/string.h +0 -159
  176. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/struct.h +0 -127
  177. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/symbol.h +0 -45
  178. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/thread.h +0 -78
  179. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/time.h +0 -34
  180. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/transcode.h +0 -23
  181. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/internal/util.h +0 -27
  182. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/prism/extension.h +0 -18
  183. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/bignum.h +0 -244
  184. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/bits.h +0 -568
  185. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/cmdlineopt.h +0 -65
  186. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/compar.h +0 -29
  187. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/compile.h +0 -34
  188. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/complex.h +0 -29
  189. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/cont.h +0 -35
  190. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/enc.h +0 -19
  191. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/encoding.h +0 -35
  192. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/enum.h +0 -18
  193. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/enumerator.h +0 -21
  194. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/error.h +0 -216
  195. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/eval.h +0 -33
  196. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/file.h +0 -38
  197. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/fixnum.h +0 -184
  198. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/hash.h +0 -191
  199. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/inits.h +0 -50
  200. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/io.h +0 -137
  201. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/load.h +0 -18
  202. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/math.h +0 -23
  203. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/missing.h +0 -18
  204. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/numeric.h +0 -273
  205. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/object.h +0 -62
  206. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/parse.h +0 -108
  207. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/proc.h +0 -30
  208. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/process.h +0 -124
  209. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/ractor.h +0 -6
  210. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/random.h +0 -17
  211. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/range.h +0 -40
  212. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/rational.h +0 -71
  213. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/re.h +0 -28
  214. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/ruby_parser.h +0 -69
  215. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/sanitizers.h +0 -186
  216. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/signal.h +0 -25
  217. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/string.h +0 -160
  218. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/struct.h +0 -127
  219. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/symbol.h +0 -45
  220. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/thread.h +0 -78
  221. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/time.h +0 -34
  222. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/transcode.h +0 -23
  223. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/internal/util.h +0 -27
  224. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/prism/extension.h +0 -18
  225. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/bignum.h +0 -244
  226. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/bits.h +0 -650
  227. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/cmdlineopt.h +0 -65
  228. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/compar.h +0 -29
  229. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/compile.h +0 -34
  230. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/complex.h +0 -29
  231. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/cont.h +0 -35
  232. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/enc.h +0 -19
  233. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/encoding.h +0 -38
  234. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/enum.h +0 -18
  235. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/enumerator.h +0 -21
  236. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/error.h +0 -244
  237. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/eval.h +0 -33
  238. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/file.h +0 -38
  239. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/fixnum.h +0 -185
  240. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/hash.h +0 -192
  241. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/inits.h +0 -47
  242. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/io.h +0 -143
  243. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/load.h +0 -18
  244. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/loadpath.h +0 -16
  245. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/math.h +0 -23
  246. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/missing.h +0 -19
  247. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/numeric.h +0 -274
  248. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/object.h +0 -63
  249. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/parse.h +0 -130
  250. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/proc.h +0 -31
  251. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/process.h +0 -124
  252. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/ractor.h +0 -10
  253. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/random.h +0 -17
  254. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/range.h +0 -40
  255. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/rational.h +0 -71
  256. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/re.h +0 -28
  257. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/ruby_parser.h +0 -102
  258. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/signal.h +0 -24
  259. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/st.h +0 -11
  260. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/string.h +0 -198
  261. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/struct.h +0 -127
  262. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/symbol.h +0 -45
  263. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/thread.h +0 -108
  264. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/time.h +0 -34
  265. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/transcode.h +0 -23
  266. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/internal/util.h +0 -27
  267. data/lib/datadog/ruby_core_source/ruby-3.4.0-p0/prism/extension.h +0 -19
  268. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/bignum.h +0 -256
  269. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/bits.h +0 -647
  270. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/cmdlineopt.h +0 -64
  271. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/compar.h +0 -29
  272. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/compile.h +0 -34
  273. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/complex.h +0 -29
  274. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/concurrent_set.h +0 -21
  275. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/cont.h +0 -34
  276. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/dir.h +0 -16
  277. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/enc.h +0 -19
  278. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/encoding.h +0 -39
  279. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/enum.h +0 -18
  280. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/enumerator.h +0 -21
  281. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/error.h +0 -251
  282. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/eval.h +0 -43
  283. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/file.h +0 -38
  284. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/fixnum.h +0 -185
  285. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/hash.h +0 -194
  286. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/inits.h +0 -51
  287. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/io.h +0 -163
  288. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/load.h +0 -20
  289. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/loadpath.h +0 -16
  290. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/math.h +0 -23
  291. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/missing.h +0 -19
  292. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/numeric.h +0 -323
  293. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/object.h +0 -63
  294. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/parse.h +0 -131
  295. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/proc.h +0 -30
  296. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/process.h +0 -124
  297. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/ractor.h +0 -10
  298. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/random.h +0 -17
  299. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/range.h +0 -40
  300. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/rational.h +0 -71
  301. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/re.h +0 -33
  302. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/ruby_parser.h +0 -102
  303. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/signal.h +0 -25
  304. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/st.h +0 -11
  305. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/string.h +0 -203
  306. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/struct.h +0 -160
  307. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/symbol.h +0 -46
  308. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/thread.h +0 -112
  309. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/time.h +0 -34
  310. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/transcode.h +0 -23
  311. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/internal/util.h +0 -27
  312. data/lib/datadog/ruby_core_source/ruby-4.0.0-p0/prism/extension.h +0 -19
  313. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/bignum.h +0 -256
  314. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/bits.h +0 -647
  315. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/cmdlineopt.h +0 -64
  316. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/compar.h +0 -29
  317. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/compile.h +0 -34
  318. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/complex.h +0 -29
  319. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/concurrent_set.h +0 -21
  320. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/cont.h +0 -34
  321. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/dir.h +0 -16
  322. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/enc.h +0 -19
  323. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/encoding.h +0 -39
  324. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/enum.h +0 -18
  325. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/enumerator.h +0 -21
  326. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/error.h +0 -251
  327. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/eval.h +0 -43
  328. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/file.h +0 -38
  329. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/fixnum.h +0 -185
  330. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/hash.h +0 -194
  331. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/inits.h +0 -51
  332. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/io.h +0 -163
  333. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/load.h +0 -20
  334. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/loadpath.h +0 -16
  335. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/math.h +0 -23
  336. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/missing.h +0 -19
  337. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/numeric.h +0 -323
  338. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/object.h +0 -63
  339. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/parse.h +0 -131
  340. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/proc.h +0 -30
  341. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/process.h +0 -124
  342. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/ractor.h +0 -10
  343. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/random.h +0 -17
  344. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/range.h +0 -40
  345. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/rational.h +0 -73
  346. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/re.h +0 -33
  347. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/ruby_parser.h +0 -102
  348. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/signal.h +0 -25
  349. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/st.h +0 -11
  350. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/string.h +0 -203
  351. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/struct.h +0 -160
  352. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/symbol.h +0 -46
  353. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/thread.h +0 -112
  354. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/time.h +0 -34
  355. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/transcode.h +0 -23
  356. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/util.h +0 -27
  357. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/prism/extension.h +0 -19
@@ -0,0 +1,244 @@
1
+ #ifndef RUBY_ATOMIC_H
2
+ #define RUBY_ATOMIC_H
3
+
4
+ #if 0
5
+ #elif defined HAVE_GCC_ATOMIC_BUILTINS
6
+ typedef unsigned int rb_atomic_t;
7
+ # define ATOMIC_SET(var, val) (void)__atomic_exchange_n(&(var), (val), __ATOMIC_SEQ_CST)
8
+ # define ATOMIC_INC(var) __atomic_fetch_add(&(var), 1, __ATOMIC_SEQ_CST)
9
+ # define ATOMIC_DEC(var) __atomic_fetch_sub(&(var), 1, __ATOMIC_SEQ_CST)
10
+ # define ATOMIC_OR(var, val) __atomic_fetch_or(&(var), (val), __ATOMIC_SEQ_CST)
11
+ # define ATOMIC_EXCHANGE(var, val) __atomic_exchange_n(&(var), (val), __ATOMIC_SEQ_CST)
12
+ # define ATOMIC_CAS(var, oldval, newval) RB_GNUC_EXTENSION_BLOCK( \
13
+ __typeof__(var) oldvaldup = (oldval); /* oldval should not be modified */ \
14
+ __atomic_compare_exchange_n(&(var), &oldvaldup, (newval), 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); \
15
+ oldvaldup )
16
+
17
+ # define ATOMIC_SIZE_ADD(var, val) __atomic_fetch_add(&(var), (val), __ATOMIC_SEQ_CST)
18
+ # define ATOMIC_SIZE_SUB(var, val) __atomic_fetch_sub(&(var), (val), __ATOMIC_SEQ_CST)
19
+
20
+ # define RUBY_ATOMIC_GENERIC_MACRO 1
21
+
22
+ #elif defined HAVE_GCC_SYNC_BUILTINS
23
+ /* @shyouhei hack to support atomic operations in case of gcc. Gcc
24
+ * has its own pseudo-insns to support them. See info, or
25
+ * http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html */
26
+
27
+ typedef unsigned int rb_atomic_t; /* Anything OK */
28
+ # define ATOMIC_SET(var, val) (void)__sync_lock_test_and_set(&(var), (val))
29
+ # define ATOMIC_INC(var) __sync_fetch_and_add(&(var), 1)
30
+ # define ATOMIC_DEC(var) __sync_fetch_and_sub(&(var), 1)
31
+ # define ATOMIC_OR(var, val) __sync_fetch_and_or(&(var), (val))
32
+ # define ATOMIC_EXCHANGE(var, val) __sync_lock_test_and_set(&(var), (val))
33
+ # define ATOMIC_CAS(var, oldval, newval) __sync_val_compare_and_swap(&(var), (oldval), (newval))
34
+
35
+ # define ATOMIC_SIZE_ADD(var, val) __sync_fetch_and_add(&(var), (val))
36
+ # define ATOMIC_SIZE_SUB(var, val) __sync_fetch_and_sub(&(var), (val))
37
+
38
+ # define RUBY_ATOMIC_GENERIC_MACRO 1
39
+
40
+ #elif defined _WIN32
41
+ #if defined _MSC_VER && _MSC_VER > 1200
42
+ #pragma intrinsic(_InterlockedOr)
43
+ #endif
44
+ typedef LONG rb_atomic_t;
45
+
46
+ # define ATOMIC_SET(var, val) InterlockedExchange(&(var), (val))
47
+ # define ATOMIC_INC(var) InterlockedIncrement(&(var))
48
+ # define ATOMIC_DEC(var) InterlockedDecrement(&(var))
49
+ #if defined __GNUC__
50
+ # define ATOMIC_OR(var, val) __asm__("lock\n\t" "orl\t%1, %0" : "=m"(var) : "Ir"(val))
51
+ #elif defined _MSC_VER && _MSC_VER <= 1200
52
+ # define ATOMIC_OR(var, val) rb_w32_atomic_or(&(var), (val))
53
+ static inline void
54
+ rb_w32_atomic_or(volatile rb_atomic_t *var, rb_atomic_t val)
55
+ {
56
+ #ifdef _M_IX86
57
+ __asm mov eax, var;
58
+ __asm mov ecx, val;
59
+ __asm lock or [eax], ecx;
60
+ #else
61
+ #error unsupported architecture
62
+ #endif
63
+ }
64
+ #else
65
+ # define ATOMIC_OR(var, val) _InterlockedOr(&(var), (val))
66
+ #endif
67
+ # define ATOMIC_EXCHANGE(var, val) InterlockedExchange(&(var), (val))
68
+ # define ATOMIC_CAS(var, oldval, newval) InterlockedCompareExchange(&(var), (newval), (oldval))
69
+ # if defined _MSC_VER && _MSC_VER <= 1200
70
+ static inline rb_atomic_t
71
+ rb_w32_atomic_cas(volatile rb_atomic_t *var, rb_atomic_t oldval, rb_atomic_t newval)
72
+ {
73
+ return (rb_atomic_t)InterlockedCompareExchange((PVOID *)var, (PVOID)newval, (PVOID)oldval);
74
+ }
75
+ # undef ATOMIC_CAS
76
+ # define ATOMIC_CAS(var, oldval, newval) rb_w32_atomic_cas(&(var), (oldval), (newval))
77
+ # endif
78
+ # ifdef _M_AMD64
79
+ # define ATOMIC_SIZE_ADD(var, val) InterlockedExchangeAdd64((LONG_LONG *)&(var), (val))
80
+ # define ATOMIC_SIZE_SUB(var, val) InterlockedExchangeAdd64((LONG_LONG *)&(var), -(LONG)(val))
81
+ # define ATOMIC_SIZE_INC(var) InterlockedIncrement64(&(var))
82
+ # define ATOMIC_SIZE_DEC(var) InterlockedDecrement64(&(var))
83
+ # define ATOMIC_SIZE_EXCHANGE(var, val) InterlockedExchange64(&(var), (val))
84
+ # define ATOMIC_SIZE_CAS(var, oldval, newval) InterlockedCompareExchange64(&(var), (newval), (oldval))
85
+ # else
86
+ # define ATOMIC_SIZE_ADD(var, val) InterlockedExchangeAdd((LONG *)&(var), (val))
87
+ # define ATOMIC_SIZE_SUB(var, val) InterlockedExchangeAdd((LONG *)&(var), -(LONG)(val))
88
+ # define ATOMIC_SIZE_INC(var) InterlockedIncrement((LONG *)&(var))
89
+ # define ATOMIC_SIZE_DEC(var) InterlockedDecrement((LONG *)&(var))
90
+ # define ATOMIC_SIZE_EXCHANGE(var, val) InterlockedExchange((LONG *)&(var), (val))
91
+ # endif
92
+
93
+ # ifdef InterlockedExchangePointer
94
+ # define ATOMIC_PTR_EXCHANGE(var, val) InterlockedExchangePointer((PVOID volatile *)&(var), (PVOID)(val))
95
+ # endif /* See below for definitions of other situations */
96
+
97
+ #elif defined(__sun) && defined(HAVE_ATOMIC_H)
98
+ #include <atomic.h>
99
+ typedef unsigned int rb_atomic_t;
100
+
101
+ # define ATOMIC_SET(var, val) (void)atomic_swap_uint(&(var), (val))
102
+ # define ATOMIC_INC(var) atomic_inc_uint(&(var))
103
+ # define ATOMIC_DEC(var) atomic_dec_uint(&(var))
104
+ # define ATOMIC_OR(var, val) atomic_or_uint(&(var), (val))
105
+ # define ATOMIC_EXCHANGE(var, val) atomic_swap_uint(&(var), (val))
106
+ # define ATOMIC_CAS(var, oldval, newval) atomic_cas_uint(&(var), (oldval), (newval))
107
+
108
+ # if SIZEOF_SIZE_T == SIZEOF_LONG
109
+ # define ATOMIC_SIZE_ADD(var, val) atomic_add_long(&(var), (val))
110
+ # define ATOMIC_SIZE_SUB(var, val) atomic_add_long(&(var), -(val))
111
+ # define ATOMIC_SIZE_INC(var) atomic_inc_ulong(&(var))
112
+ # define ATOMIC_SIZE_DEC(var) atomic_dec_ulong(&(var))
113
+ # define ATOMIC_SIZE_EXCHANGE(var, val) atomic_swap_ulong(&(var), (val))
114
+ # define ATOMIC_SIZE_CAS(var, oldval, val) atomic_cas_ulong(&(var), (oldval), (val))
115
+ # else
116
+ # define ATOMIC_SIZE_ADD(var, val) atomic_add_int(&(var), (val))
117
+ # define ATOMIC_SIZE_SUB(var, val) atomic_add_int(&(var), -(val))
118
+ # define ATOMIC_SIZE_INC(var) atomic_inc_uint(&(var))
119
+ # define ATOMIC_SIZE_DEC(var) atomic_dec_uint(&(var))
120
+ # define ATOMIC_SIZE_EXCHANGE(var, val) atomic_swap_uint(&(var), (val))
121
+ # endif
122
+
123
+ #else
124
+ typedef int rb_atomic_t;
125
+ #define NEED_RUBY_ATOMIC_OPS
126
+ extern rb_atomic_t ruby_atomic_exchange(rb_atomic_t *ptr, rb_atomic_t val);
127
+ extern rb_atomic_t ruby_atomic_compare_and_swap(rb_atomic_t *ptr,
128
+ rb_atomic_t cmp,
129
+ rb_atomic_t newval);
130
+
131
+ # define ATOMIC_SET(var, val) (void)((var) = (val))
132
+ # define ATOMIC_INC(var) ((var)++)
133
+ # define ATOMIC_DEC(var) ((var)--)
134
+ # define ATOMIC_OR(var, val) ((var) |= (val))
135
+ # define ATOMIC_EXCHANGE(var, val) ruby_atomic_exchange(&(var), (val))
136
+ # define ATOMIC_CAS(var, oldval, newval) ruby_atomic_compare_and_swap(&(var), (oldval), (newval))
137
+
138
+ # define ATOMIC_SIZE_ADD(var, val) (void)((var) += (val))
139
+ # define ATOMIC_SIZE_SUB(var, val) (void)((var) -= (val))
140
+ # define ATOMIC_SIZE_EXCHANGE(var, val) ruby_atomic_size_exchange(&(var), (val))
141
+ static inline size_t
142
+ ruby_atomic_size_exchange(size_t *ptr, size_t val)
143
+ {
144
+ size_t old = *ptr;
145
+ *ptr = val;
146
+ return old;
147
+ }
148
+ #endif
149
+
150
+ #ifndef ATOMIC_SIZE_INC
151
+ # define ATOMIC_SIZE_INC(var) ATOMIC_INC(var)
152
+ #endif
153
+
154
+ #ifndef ATOMIC_SIZE_DEC
155
+ # define ATOMIC_SIZE_DEC(var) ATOMIC_DEC(var)
156
+ #endif
157
+
158
+ #ifndef ATOMIC_SIZE_EXCHANGE
159
+ # define ATOMIC_SIZE_EXCHANGE(var, val) ATOMIC_EXCHANGE(var, val)
160
+ #endif
161
+
162
+ #ifndef ATOMIC_SIZE_CAS
163
+ # define ATOMIC_SIZE_CAS(var, oldval, val) ATOMIC_CAS(var, oldval, val)
164
+ #endif
165
+
166
+ #if RUBY_ATOMIC_GENERIC_MACRO
167
+ # ifndef ATOMIC_PTR_EXCHANGE
168
+ # define ATOMIC_PTR_EXCHANGE(var, val) ATOMIC_EXCHANGE(var, val)
169
+ # endif
170
+
171
+ # ifndef ATOMIC_PTR_CAS
172
+ # define ATOMIC_PTR_CAS(var, oldval, newval) ATOMIC_CAS(var, oldval, newval)
173
+ # endif
174
+
175
+ # ifndef ATOMIC_VALUE_EXCHANGE
176
+ # define ATOMIC_VALUE_EXCHANGE(var, val) ATOMIC_EXCHANGE(var, val)
177
+ # endif
178
+
179
+ # ifndef ATOMIC_VALUE_CAS
180
+ # define ATOMIC_VALUE_CAS(var, oldval, val) ATOMIC_CAS(var, oldval, val)
181
+ # endif
182
+ #endif
183
+
184
+ #ifndef ATOMIC_PTR_EXCHANGE
185
+ # if SIZEOF_VOIDP == SIZEOF_SIZE_T
186
+ # define ATOMIC_PTR_EXCHANGE(var, val) (void *)ATOMIC_SIZE_EXCHANGE(*(size_t *)&(var), (size_t)(val))
187
+ # else
188
+ # define ATOMIC_PTR_EXCHANGE(var, val) ruby_atomic_ptr_exchange((const void **)&(var), (val))
189
+ static inline void *
190
+ ruby_atomic_ptr_exchange(const void **ptr, const void *val)
191
+ {
192
+ const void *const old = *ptr;
193
+ *ptr = val;
194
+ return (void *)old;
195
+ }
196
+ # endif
197
+ #endif
198
+
199
+ #ifndef ATOMIC_PTR_CAS
200
+ # if SIZEOF_VOIDP == SIZEOF_SIZE_T
201
+ # define ATOMIC_PTR_CAS(var, oldval, val) (void *)ATOMIC_SIZE_CAS(*(size_t *)&(var), (size_t)(oldval), (size_t)(val))
202
+ # else
203
+ # define ATOMIC_PTR_CAS(var, oldval, val) ruby_atomic_ptr_cas(&(var), (oldval), (val))
204
+ static inline void *
205
+ ruby_atomic_ptr_cas(const void **ptr, const void *oldval, const void *val)
206
+ {
207
+ const void *const old = *ptr;
208
+ if (old == oldval) *ptr = val;
209
+ return (void *)old;
210
+ }
211
+ # endif
212
+ #endif
213
+
214
+ #ifndef ATOMIC_VALUE_EXCHANGE
215
+ # if SIZEOF_VALUE == SIZEOF_SIZE_T
216
+ # define ATOMIC_VALUE_EXCHANGE(var, val) ATOMIC_SIZE_EXCHANGE(*(size_t *)&(var), (size_t)(val))
217
+ # else
218
+ # define ATOMIC_VALUE_EXCHANGE(var, val) ruby_atomic_value_exchange(&(var), (val))
219
+ static inline VALUE
220
+ ruby_atomic_value_exchange(VALUE *ptr, VALUE val)
221
+ {
222
+ const VALUE old = *ptr;
223
+ *ptr = val;
224
+ return old;
225
+ }
226
+ # endif
227
+ #endif
228
+
229
+ #ifndef ATOMIC_VALUE_CAS
230
+ # if SIZEOF_VALUE == SIZEOF_SIZE_T
231
+ # define ATOMIC_VALUE_CAS(var, oldval, val) ATOMIC_SIZE_CAS(*(size_t *)&(var), (size_t)(oldval), (size_t)(val))
232
+ # else
233
+ # define ATOMIC_VALUE_CAS(var, oldval, val) ruby_atomic_value_cas(&(var), (oldval), (val))
234
+ static inline VALUE
235
+ ruby_atomic_value_cas(VALUE *ptr, VALUE oldval, VALUE val)
236
+ {
237
+ const VALUE old = *ptr;
238
+ if (old == oldval) *ptr = val;
239
+ return old;
240
+ }
241
+ # endif
242
+ #endif
243
+
244
+ #endif /* RUBY_ATOMIC_H */
@@ -0,0 +1,75 @@
1
+ /**********************************************************************
2
+
3
+ thread_pthread.h -
4
+
5
+ $Author$
6
+
7
+ Copyright (C) 2004-2007 Koichi Sasada
8
+
9
+ **********************************************************************/
10
+
11
+ #ifndef RUBY_THREAD_PTHREAD_H
12
+ #define RUBY_THREAD_PTHREAD_H
13
+
14
+ #ifdef HAVE_PTHREAD_NP_H
15
+ #include <pthread_np.h>
16
+ #endif
17
+
18
+ #define RB_NATIVETHREAD_LOCK_INIT PTHREAD_MUTEX_INITIALIZER
19
+ #define RB_NATIVETHREAD_COND_INIT PTHREAD_COND_INITIALIZER
20
+
21
+ typedef pthread_cond_t rb_nativethread_cond_t;
22
+
23
+ typedef struct native_thread_data_struct {
24
+ union {
25
+ struct list_node ubf;
26
+ struct list_node gvl;
27
+ } node;
28
+ #if defined(__GLIBC__) || defined(__FreeBSD__)
29
+ union
30
+ #else
31
+ /*
32
+ * assume the platform condvars are badly implemented and have a
33
+ * "memory" of which mutex they're associated with
34
+ */
35
+ struct
36
+ #endif
37
+ {
38
+ rb_nativethread_cond_t intr; /* th->interrupt_lock */
39
+ rb_nativethread_cond_t gvlq; /* vm->gvl.lock */
40
+ } cond;
41
+ } native_thread_data_t;
42
+
43
+ #undef except
44
+ #undef try
45
+ #undef leave
46
+ #undef finally
47
+
48
+ typedef struct rb_global_vm_lock_struct {
49
+ /* fast path */
50
+ const struct rb_thread_struct *owner;
51
+ rb_nativethread_lock_t lock; /* AKA vm->gvl.lock */
52
+
53
+ /*
54
+ * slow path, protected by vm->gvl.lock
55
+ * - @waitq - FIFO queue of threads waiting for GVL
56
+ * - @timer - it handles timeslices for @owner. It is any one thread
57
+ * in @waitq, there is no @timer if @waitq is empty, but always
58
+ * a @timer if @waitq has entries
59
+ * - @timer_err tracks timeslice limit, the timeslice only resets
60
+ * when pthread_cond_timedwait returns ETIMEDOUT, so frequent
61
+ * switching between contended/uncontended GVL won't reset the
62
+ * timer.
63
+ */
64
+ struct list_head waitq; /* <=> native_thread_data_t.node.ubf */
65
+ const struct rb_thread_struct *timer;
66
+ int timer_err;
67
+
68
+ /* yield */
69
+ rb_nativethread_cond_t switch_cond;
70
+ rb_nativethread_cond_t switch_wait_cond;
71
+ int need_yield;
72
+ int wait_yield;
73
+ } rb_global_vm_lock_t;
74
+
75
+ #endif /* RUBY_THREAD_PTHREAD_H */
@@ -0,0 +1,36 @@
1
+ /**********************************************************************
2
+
3
+ thread_win32.h -
4
+
5
+ $Author$
6
+
7
+ Copyright (C) 2004-2007 Koichi Sasada
8
+
9
+ **********************************************************************/
10
+
11
+ /* interface */
12
+ #ifndef RUBY_THREAD_WIN32_H
13
+ #define RUBY_THREAD_WIN32_H
14
+
15
+ # ifdef __CYGWIN__
16
+ # undef _WIN32
17
+ # endif
18
+
19
+ WINBASEAPI BOOL WINAPI
20
+ TryEnterCriticalSection(IN OUT LPCRITICAL_SECTION lpCriticalSection);
21
+
22
+ typedef struct rb_thread_cond_struct {
23
+ struct cond_event_entry *next;
24
+ struct cond_event_entry *prev;
25
+ } rb_nativethread_cond_t;
26
+
27
+ typedef struct native_thread_data_struct {
28
+ HANDLE interrupt_event;
29
+ } native_thread_data_t;
30
+
31
+ typedef struct rb_global_vm_lock_struct {
32
+ HANDLE lock;
33
+ } rb_global_vm_lock_t;
34
+
35
+ #endif /* RUBY_THREAD_WIN32_H */
36
+