debase-ruby_core_source 3.2.1 → 3.2.2

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 (128) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/darray.h +246 -0
  4. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/debug_counter.h +7 -10
  5. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/eval_intern.h +3 -1
  6. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/id.h +44 -0
  7. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/insns_info.inc +68 -94
  8. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/array.h +2 -20
  9. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/bits.h +6 -2
  10. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/class.h +7 -2
  11. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/cmdlineopt.h +3 -1
  12. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/compile.h +0 -1
  13. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/error.h +24 -2
  14. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/gc.h +28 -0
  15. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/hash.h +18 -44
  16. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/internal/io.h +137 -0
  17. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/internal/parse.h +133 -0
  18. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/process.h +0 -14
  19. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/range.h +2 -2
  20. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/re.h +1 -1
  21. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/internal/ruby_parser.h +69 -0
  22. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/signal.h +4 -0
  23. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/string.h +15 -0
  24. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/struct.h +9 -34
  25. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/thread.h +13 -0
  26. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/variable.h +16 -33
  27. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/vm.h +5 -0
  28. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/iseq.h +4 -4
  29. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/method.h +1 -1
  30. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/node.h +125 -0
  31. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/parse.h +6 -4
  32. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/parser_bits.h +564 -0
  33. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/parser_node.h +133 -0
  34. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/parser_st.h +162 -0
  35. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/parser_value.h +106 -0
  36. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/ractor_core.h +3 -3
  37. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/revision.h +5 -0
  38. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/rubyparser.h +628 -0
  39. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/symbol.h +1 -1
  40. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/thread_pthread.h +11 -13
  41. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/thread_win32.h +0 -5
  42. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/version.h +1 -1
  43. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm.inc +303 -404
  44. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm_callinfo.h +50 -16
  45. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm_core.h +29 -47
  46. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm_exec.h +11 -10
  47. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm_insnhelper.h +20 -23
  48. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm_opts.h +0 -5
  49. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/yjit.h +4 -6
  50. data/lib/debase/ruby_core_source/version.rb +1 -1
  51. metadata +119 -115
  52. data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/darray.h +0 -179
  53. data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/internal/io.h +0 -38
  54. data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/internal/parse.h +0 -25
  55. data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/node.h +0 -514
  56. data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/opt_sc.inc +0 -109
  57. data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/revision.h +0 -5
  58. data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/transient_heap.h +0 -65
  59. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/addr2line.h +0 -0
  60. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/builtin.h +0 -0
  61. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/ccan/build_assert/build_assert.h +0 -0
  62. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/ccan/check_type/check_type.h +0 -0
  63. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/ccan/container_of/container_of.h +0 -0
  64. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/ccan/list/list.h +0 -0
  65. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/ccan/str/str.h +0 -0
  66. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/constant.h +0 -0
  67. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/dln.h +0 -0
  68. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/encindex.h +0 -0
  69. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/hrtime.h +0 -0
  70. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/id_table.h +0 -0
  71. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/insns.inc +0 -0
  72. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/basic_operators.h +0 -0
  73. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/bignum.h +0 -0
  74. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/compar.h +0 -0
  75. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/compilers.h +0 -0
  76. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/complex.h +0 -0
  77. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/cont.h +0 -0
  78. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/dir.h +0 -0
  79. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/enc.h +0 -0
  80. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/encoding.h +0 -0
  81. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/enum.h +0 -0
  82. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/enumerator.h +0 -0
  83. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/eval.h +0 -0
  84. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/file.h +0 -0
  85. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/fixnum.h +0 -0
  86. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/imemo.h +0 -0
  87. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/inits.h +0 -0
  88. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/load.h +0 -0
  89. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/loadpath.h +0 -0
  90. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/math.h +0 -0
  91. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/missing.h +0 -0
  92. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/numeric.h +0 -0
  93. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/object.h +0 -0
  94. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/proc.h +0 -0
  95. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/ractor.h +0 -0
  96. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/random.h +0 -0
  97. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/rational.h +0 -0
  98. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/sanitizers.h +0 -0
  99. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/serial.h +0 -0
  100. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/static_assert.h +0 -0
  101. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/symbol.h +0 -0
  102. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/time.h +0 -0
  103. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/transcode.h +0 -0
  104. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/util.h +0 -0
  105. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/warnings.h +0 -0
  106. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal.h +0 -0
  107. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/known_errors.inc +0 -0
  108. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/node_name.inc +0 -0
  109. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/optinsn.inc +0 -0
  110. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/optunifs.inc +0 -0
  111. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/probes_helper.h +0 -0
  112. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/regenc.h +0 -0
  113. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/regint.h +0 -0
  114. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/regparse.h +0 -0
  115. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/rjit.h +0 -0
  116. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/rjit_c.h +0 -0
  117. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/ruby_assert.h +0 -0
  118. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/ruby_atomic.h +0 -0
  119. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/shape.h +0 -0
  120. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/siphash.h +0 -0
  121. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/thread_none.h +0 -0
  122. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/timev.h +0 -0
  123. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/transcode_data.h +0 -0
  124. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/variable.h +0 -0
  125. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm_call_iseq_optimized.inc +0 -0
  126. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm_debug.h +0 -0
  127. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm_sync.h +0 -0
  128. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vmtc.inc +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 14d52aed359a025b1ab08e069187282eb2decc5c1f51b4f5e17b7414d07d76d9
4
- data.tar.gz: e68d3aa94b796d4e20ec194085065195c3ec6931baf392cd12218e6cd5ad984a
3
+ metadata.gz: f3f80f8cffab69100083129a38efef3346d80035b6e8a57b0809e6869ea1846c
4
+ data.tar.gz: eddce4523d7a7ae783d9b2e7d0ca0926ecdd349f7a2852e519e754c2396138e7
5
5
  SHA512:
6
- metadata.gz: df845a44dc291df62869976c6cb61a43bbf1b85c2e40ca1b4c5bf43ecb610ecebe524c4848f025fcce8e72f67a6c8273d10766e9416ede3ee7aa95783592edd8
7
- data.tar.gz: 31d6f3238490fc53bc17436afbf6bf8a8146c56efc4e1e872a8ed41012e4ec43c4fed6c61c2713657e91f90b7fa7a44b5c726112ac7ea54de572c3e043551547
6
+ metadata.gz: 3697bae670caecc8ae9276ae60adf2802d64c3f2531bf0601afc528a4d21085bc9e32b1cc8a63c88d83fa6726d53badee0714b1415b6bbb6aae911692214b57f
7
+ data.tar.gz: 991f262f4460a2c7ed36fe0b99336579f2f145d59e9cbb52358028bebfdfccbabb901d7401419cbcfe3b7f00020a6cb544ede897058a4e9369ed6e9dc1534691
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## [3.2.2](https://github.com/ruby-debug/debase-ruby_core_source/compare/3.2.2...3.2.1)
2
+
3
+ * ruby-3.3.0-preview2 sources added
4
+ * ruby-3.3.0-preview1 sources removed
5
+
1
6
  ## [3.2.1](https://github.com/ruby-debug/debase-ruby_core_source/compare/3.2.1...v3.2.0)
2
7
 
3
8
  * ruby-3.3.0-preview1 sources added
@@ -0,0 +1,246 @@
1
+ #ifndef RUBY_DARRAY_H
2
+ #define RUBY_DARRAY_H
3
+
4
+ #include <stdint.h>
5
+ #include <stddef.h>
6
+ #include <stdlib.h>
7
+
8
+ #include "internal/bits.h"
9
+ #include "internal/gc.h"
10
+
11
+ // Type for a dynamic array. Use to declare a dynamic array.
12
+ // It is a pointer so it fits in st_table nicely. Designed
13
+ // to be fairly type-safe.
14
+ //
15
+ // NULL is a valid empty dynamic array.
16
+ //
17
+ // Example:
18
+ // rb_darray(char) char_array = NULL;
19
+ // rb_darray_append(&char_array, 'e');
20
+ // printf("pushed %c\n", *rb_darray_ref(char_array, 0));
21
+ // rb_darray_free(char_array);
22
+ //
23
+ #define rb_darray(T) struct { rb_darray_meta_t meta; T data[]; } *
24
+
25
+ // Copy an element out of the array. Warning: not bounds checked.
26
+ //
27
+ // T rb_darray_get(rb_darray(T) ary, size_t idx);
28
+ //
29
+ #define rb_darray_get(ary, idx) ((ary)->data[(idx)])
30
+
31
+ // Assign to an element. Warning: not bounds checked.
32
+ //
33
+ // void rb_darray_set(rb_darray(T) ary, size_t idx, T element);
34
+ //
35
+ #define rb_darray_set(ary, idx, element) ((ary)->data[(idx)] = (element))
36
+
37
+ // Get a pointer to an element. Warning: not bounds checked.
38
+ //
39
+ // T *rb_darray_ref(rb_darray(T) ary, size_t idx);
40
+ //
41
+ #define rb_darray_ref(ary, idx) (&((ary)->data[(idx)]))
42
+
43
+ /* Copy a new element into the array. ptr_to_ary is evaluated multiple times.
44
+ *
45
+ * void rb_darray_append(rb_darray(T) *ptr_to_ary, T element);
46
+ */
47
+ #define rb_darray_append(ptr_to_ary, element) \
48
+ rb_darray_append_impl(ptr_to_ary, element, rb_xrealloc_mul_add)
49
+
50
+ #define rb_darray_append_without_gc(ptr_to_ary, element) \
51
+ rb_darray_append_impl(ptr_to_ary, element, rb_darray_realloc_mul_add_without_gc)
52
+
53
+ #define rb_darray_append_impl(ptr_to_ary, element, realloc_func) do { \
54
+ rb_darray_ensure_space((ptr_to_ary), \
55
+ sizeof(**(ptr_to_ary)), \
56
+ sizeof((*(ptr_to_ary))->data[0]), \
57
+ realloc_func); \
58
+ rb_darray_set(*(ptr_to_ary), \
59
+ (*(ptr_to_ary))->meta.size, \
60
+ (element)); \
61
+ (*(ptr_to_ary))->meta.size++; \
62
+ } while (0)
63
+
64
+ // Iterate over items of the array in a for loop
65
+ //
66
+ #define rb_darray_foreach(ary, idx_name, elem_ptr_var) \
67
+ for (size_t idx_name = 0; idx_name < rb_darray_size(ary) && ((elem_ptr_var) = rb_darray_ref(ary, idx_name)); ++idx_name)
68
+
69
+ // Iterate over valid indices in the array in a for loop
70
+ //
71
+ #define rb_darray_for(ary, idx_name) \
72
+ for (size_t idx_name = 0; idx_name < rb_darray_size(ary); ++idx_name)
73
+
74
+ /* Make a dynamic array of a certain size. All bytes backing the elements are set to zero.
75
+ * Return 1 on success and 0 on failure.
76
+ *
77
+ * Note that NULL is a valid empty dynamic array.
78
+ *
79
+ * void rb_darray_make(rb_darray(T) *ptr_to_ary, size_t size);
80
+ */
81
+ #define rb_darray_make(ptr_to_ary, size) \
82
+ rb_darray_make_impl((ptr_to_ary), size, sizeof(**(ptr_to_ary)), \
83
+ sizeof((*(ptr_to_ary))->data[0]), rb_xcalloc_mul_add)
84
+
85
+ #define rb_darray_make_without_gc(ptr_to_ary, size) \
86
+ rb_darray_make_impl((ptr_to_ary), size, sizeof(**(ptr_to_ary)), \
87
+ sizeof((*(ptr_to_ary))->data[0]), rb_darray_calloc_mul_add_without_gc)
88
+
89
+ /* Resize the darray to a new capacity. The new capacity must be greater than
90
+ * or equal to the size of the darray.
91
+ *
92
+ * void rb_darray_resize_capa(rb_darray(T) *ptr_to_ary, size_t capa);
93
+ */
94
+ #define rb_darray_resize_capa_without_gc(ptr_to_ary, capa) \
95
+ rb_darray_resize_capa_impl((ptr_to_ary), rb_darray_next_power_of_two(capa), sizeof(**(ptr_to_ary)), \
96
+ sizeof((*(ptr_to_ary))->data[0]), rb_darray_realloc_mul_add_without_gc)
97
+
98
+ #define rb_darray_data_ptr(ary) ((ary)->data)
99
+
100
+ typedef struct rb_darray_meta {
101
+ size_t size;
102
+ size_t capa;
103
+ } rb_darray_meta_t;
104
+
105
+ /* Set the size of the array to zero without freeing the backing memory.
106
+ * Allows reusing the same array. */
107
+ static inline void
108
+ rb_darray_clear(void *ary)
109
+ {
110
+ rb_darray_meta_t *meta = ary;
111
+ if (meta) {
112
+ meta->size = 0;
113
+ }
114
+ }
115
+
116
+ // Get the size of the dynamic array.
117
+ //
118
+ static inline size_t
119
+ rb_darray_size(const void *ary)
120
+ {
121
+ const rb_darray_meta_t *meta = ary;
122
+ return meta ? meta->size : 0;
123
+ }
124
+
125
+ // Get the capacity of the dynamic array.
126
+ //
127
+ static inline size_t
128
+ rb_darray_capa(const void *ary)
129
+ {
130
+ const rb_darray_meta_t *meta = ary;
131
+ return meta ? meta->capa : 0;
132
+ }
133
+
134
+ /* Free the dynamic array. */
135
+ static inline void
136
+ rb_darray_free(void *ary)
137
+ {
138
+ rb_darray_meta_t *meta = ary;
139
+ if (meta) ruby_sized_xfree(ary, meta->capa);
140
+ }
141
+
142
+ static inline void
143
+ rb_darray_free_without_gc(void *ary)
144
+ {
145
+ free(ary);
146
+ }
147
+
148
+ /* Internal function. Like rb_xcalloc_mul_add but does not trigger GC and does
149
+ * not check for overflow in arithmetic. */
150
+ static inline void *
151
+ rb_darray_calloc_mul_add_without_gc(size_t x, size_t y, size_t z)
152
+ {
153
+ size_t size = (x * y) + z;
154
+
155
+ void *ptr = calloc(1, size);
156
+ if (ptr == NULL) rb_bug("rb_darray_calloc_mul_add_without_gc: failed");
157
+
158
+ return ptr;
159
+ }
160
+
161
+ /* Internal function. Like rb_xrealloc_mul_add but does not trigger GC and does
162
+ * not check for overflow in arithmetic. */
163
+ static inline void *
164
+ rb_darray_realloc_mul_add_without_gc(const void *orig_ptr, size_t x, size_t y, size_t z)
165
+ {
166
+ size_t size = (x * y) + z;
167
+
168
+ void *ptr = realloc((void *)orig_ptr, size);
169
+ if (ptr == NULL) rb_bug("rb_darray_realloc_mul_add_without_gc: failed");
170
+
171
+ return ptr;
172
+ }
173
+
174
+ /* Internal function. Returns the next power of two that is greater than or
175
+ * equal to n. */
176
+ static inline size_t
177
+ rb_darray_next_power_of_two(size_t n)
178
+ {
179
+ return (size_t)(1 << (64 - nlz_int64(n)));
180
+ }
181
+
182
+ /* Internal function. Resizes the capacity of a darray. The new capacity must
183
+ * be greater than or equal to the size of the darray. */
184
+ static inline void
185
+ rb_darray_resize_capa_impl(void *ptr_to_ary, size_t new_capa, size_t header_size, size_t element_size,
186
+ void *(*realloc_mul_add_impl)(const void *, size_t, size_t, size_t))
187
+ {
188
+ rb_darray_meta_t **ptr_to_ptr_to_meta = ptr_to_ary;
189
+ rb_darray_meta_t *meta = *ptr_to_ptr_to_meta;
190
+
191
+ rb_darray_meta_t *new_ary = realloc_mul_add_impl(meta, new_capa, element_size, header_size);
192
+
193
+ if (meta == NULL) {
194
+ /* First allocation. Initialize size. On subsequence allocations
195
+ * realloc takes care of carrying over the size. */
196
+ new_ary->size = 0;
197
+ }
198
+
199
+ assert(new_ary->size <= new_capa);
200
+
201
+ new_ary->capa = new_capa;
202
+
203
+ // We don't have access to the type of the dynamic array in function context.
204
+ // Write out result with memcpy to avoid strict aliasing issue.
205
+ memcpy(ptr_to_ary, &new_ary, sizeof(new_ary));
206
+ }
207
+
208
+ // Internal function
209
+ // Ensure there is space for one more element.
210
+ // Note: header_size can be bigger than sizeof(rb_darray_meta_t) when T is __int128_t, for example.
211
+ static inline void
212
+ rb_darray_ensure_space(void *ptr_to_ary, size_t header_size, size_t element_size,
213
+ void *(*realloc_mul_add_impl)(const void *, size_t, size_t, size_t))
214
+ {
215
+ rb_darray_meta_t **ptr_to_ptr_to_meta = ptr_to_ary;
216
+ rb_darray_meta_t *meta = *ptr_to_ptr_to_meta;
217
+ size_t current_capa = rb_darray_capa(meta);
218
+ if (rb_darray_size(meta) < current_capa) return;
219
+
220
+ // Double the capacity
221
+ size_t new_capa = current_capa == 0 ? 1 : current_capa * 2;
222
+
223
+ rb_darray_resize_capa_impl(ptr_to_ary, new_capa, header_size, element_size, realloc_mul_add_impl);
224
+ }
225
+
226
+ static inline void
227
+ rb_darray_make_impl(void *ptr_to_ary, size_t array_size, size_t header_size, size_t element_size,
228
+ void *(*calloc_mul_add_impl)(size_t, size_t, size_t))
229
+ {
230
+ rb_darray_meta_t **ptr_to_ptr_to_meta = ptr_to_ary;
231
+ if (array_size == 0) {
232
+ *ptr_to_ptr_to_meta = NULL;
233
+ return;
234
+ }
235
+
236
+ rb_darray_meta_t *meta = calloc_mul_add_impl(array_size, element_size, header_size);
237
+
238
+ meta->size = array_size;
239
+ meta->capa = array_size;
240
+
241
+ // We don't have access to the type of the dynamic array in function context.
242
+ // Write out result with memcpy to avoid strict aliasing issue.
243
+ memcpy(ptr_to_ary, &meta, sizeof(meta));
244
+ }
245
+
246
+ #endif /* RUBY_DARRAY_H */
@@ -100,6 +100,13 @@ RB_DEBUG_COUNTER(ccf_opt_block_call)
100
100
  RB_DEBUG_COUNTER(ccf_opt_struct_aref)
101
101
  RB_DEBUG_COUNTER(ccf_opt_struct_aset)
102
102
  RB_DEBUG_COUNTER(ccf_super_method)
103
+ RB_DEBUG_COUNTER(ccf_cfunc_other)
104
+ RB_DEBUG_COUNTER(ccf_cfunc_only_splat)
105
+ RB_DEBUG_COUNTER(ccf_cfunc_only_splat_kw)
106
+ RB_DEBUG_COUNTER(ccf_iseq_bmethod)
107
+ RB_DEBUG_COUNTER(ccf_noniseq_bmethod)
108
+ RB_DEBUG_COUNTER(ccf_opt_send_complex)
109
+ RB_DEBUG_COUNTER(ccf_opt_send_simple)
103
110
 
104
111
  /*
105
112
  * control frame push counts.
@@ -207,7 +214,6 @@ RB_DEBUG_COUNTER(gc_isptr_maybe)
207
214
  * * [attr]
208
215
  * * _ptr: R?? is not embed.
209
216
  * * _embed: R?? is embed.
210
- * * _transient: R?? uses transient heap.
211
217
  * * type specific attr.
212
218
  * * str_shared: str is shared.
213
219
  * * str_nofree: nofree
@@ -233,7 +239,6 @@ RB_DEBUG_COUNTER(obj_promote)
233
239
  RB_DEBUG_COUNTER(obj_wb_unprotect)
234
240
 
235
241
  RB_DEBUG_COUNTER(obj_obj_embed)
236
- RB_DEBUG_COUNTER(obj_obj_transient)
237
242
  RB_DEBUG_COUNTER(obj_obj_ptr)
238
243
  RB_DEBUG_COUNTER(obj_obj_too_complex)
239
244
 
@@ -244,7 +249,6 @@ RB_DEBUG_COUNTER(obj_str_nofree)
244
249
  RB_DEBUG_COUNTER(obj_str_fstr)
245
250
 
246
251
  RB_DEBUG_COUNTER(obj_ary_embed)
247
- RB_DEBUG_COUNTER(obj_ary_transient)
248
252
  RB_DEBUG_COUNTER(obj_ary_ptr)
249
253
  RB_DEBUG_COUNTER(obj_ary_extracapa)
250
254
  /*
@@ -268,11 +272,9 @@ RB_DEBUG_COUNTER(obj_hash_g8)
268
272
  RB_DEBUG_COUNTER(obj_hash_null)
269
273
  RB_DEBUG_COUNTER(obj_hash_ar)
270
274
  RB_DEBUG_COUNTER(obj_hash_st)
271
- RB_DEBUG_COUNTER(obj_hash_transient)
272
275
  RB_DEBUG_COUNTER(obj_hash_force_convert)
273
276
 
274
277
  RB_DEBUG_COUNTER(obj_struct_embed)
275
- RB_DEBUG_COUNTER(obj_struct_transient)
276
278
  RB_DEBUG_COUNTER(obj_struct_ptr)
277
279
 
278
280
  RB_DEBUG_COUNTER(obj_data_empty)
@@ -327,11 +329,6 @@ RB_DEBUG_COUNTER(heap_xmalloc)
327
329
  RB_DEBUG_COUNTER(heap_xrealloc)
328
330
  RB_DEBUG_COUNTER(heap_xfree)
329
331
 
330
- /* transient_heap */
331
- RB_DEBUG_COUNTER(theap_alloc)
332
- RB_DEBUG_COUNTER(theap_alloc_fail)
333
- RB_DEBUG_COUNTER(theap_evacuate)
334
-
335
332
  // VM sync
336
333
  RB_DEBUG_COUNTER(vm_sync_lock)
337
334
  RB_DEBUG_COUNTER(vm_sync_lock_enter)
@@ -151,6 +151,7 @@ rb_ec_tag_state(const rb_execution_context_t *ec)
151
151
  enum ruby_tag_type state = tag->state;
152
152
  tag->state = TAG_NONE;
153
153
  rb_ec_vm_lock_rec_check(ec, tag->lock_rec);
154
+ RBIMPL_ASSUME(state != TAG_NONE);
154
155
  return state;
155
156
  }
156
157
 
@@ -158,6 +159,7 @@ NORETURN(static inline void rb_ec_tag_jump(const rb_execution_context_t *ec, enu
158
159
  static inline void
159
160
  rb_ec_tag_jump(const rb_execution_context_t *ec, enum ruby_tag_type st)
160
161
  {
162
+ RUBY_ASSERT(st != TAG_NONE);
161
163
  ec->tag->state = st;
162
164
  ruby_longjmp(ec->tag->buf, 1);
163
165
  }
@@ -167,7 +169,7 @@ rb_ec_tag_jump(const rb_execution_context_t *ec, enum ruby_tag_type st)
167
169
  [ISO/IEC 9899:1999] 7.13.1.1
168
170
  */
169
171
  #define EC_EXEC_TAG() \
170
- (ruby_setjmp(_tag.buf) ? rb_ec_tag_state(VAR_FROM_MEMORY(_ec)) : (EC_REPUSH_TAG(), 0))
172
+ (UNLIKELY(ruby_setjmp(_tag.buf)) ? rb_ec_tag_state(VAR_FROM_MEMORY(_ec)) : (EC_REPUSH_TAG(), 0))
171
173
 
172
174
  #define EC_JUMP_TAG(ec, st) rb_ec_tag_jump(ec, st)
173
175
 
@@ -129,6 +129,8 @@ enum ruby_method_ids {
129
129
  id_core_sprintf,
130
130
  id_debug_created_info,
131
131
  tPRESERVED_ID_END,
132
+
133
+ /* LOCAL tokens {{{ */
132
134
  tTOKEN_LOCAL_BEGIN = tPRESERVED_ID_END-1,
133
135
  tMax,
134
136
  tMin,
@@ -200,20 +202,39 @@ enum ruby_method_ids {
200
202
  tNUMPARAM_9,
201
203
  tDefault,
202
204
  tTOKEN_LOCAL_END,
205
+ /* LOCAL tokens }}} */
206
+
207
+ /* INSTANCE tokens {{{ */
203
208
  tTOKEN_INSTANCE_BEGIN = tTOKEN_LOCAL_END-1,
204
209
  tTOKEN_INSTANCE_END,
210
+ /* INSTANCE tokens }}} */
211
+
212
+ /* GLOBAL tokens {{{ */
205
213
  tTOKEN_GLOBAL_BEGIN = tTOKEN_INSTANCE_END-1,
206
214
  tLASTLINE,
207
215
  tBACKREF,
208
216
  tERROR_INFO,
209
217
  tTOKEN_GLOBAL_END,
218
+ /* GLOBAL tokens }}} */
219
+
220
+ /* CONST tokens {{{ */
210
221
  tTOKEN_CONST_BEGIN = tTOKEN_GLOBAL_END-1,
211
222
  tTOKEN_CONST_END,
223
+ /* CONST tokens }}} */
224
+
225
+ /* CLASS tokens {{{ */
212
226
  tTOKEN_CLASS_BEGIN = tTOKEN_CONST_END-1,
213
227
  tTOKEN_CLASS_END,
228
+ /* CLASS tokens }}} */
229
+
230
+ /* ATTRSET tokens {{{ */
214
231
  tTOKEN_ATTRSET_BEGIN = tTOKEN_CLASS_END-1,
215
232
  tTOKEN_ATTRSET_END,
233
+ /* ATTRSET tokens }}} */
234
+
216
235
  tNEXT_ID = tTOKEN_ATTRSET_END,
236
+
237
+ /* LOCAL IDs {{{ */
217
238
  #define DEFINE_LOCALID_FROM_TOKEN(n) id##n = TOKEN2LOCALID(t##n)
218
239
  DEFINE_LOCALID_FROM_TOKEN(Max),
219
240
  DEFINE_LOCALID_FROM_TOKEN(Min),
@@ -284,14 +305,37 @@ enum ruby_method_ids {
284
305
  DEFINE_LOCALID_FROM_TOKEN(NUMPARAM_8),
285
306
  DEFINE_LOCALID_FROM_TOKEN(NUMPARAM_9),
286
307
  DEFINE_LOCALID_FROM_TOKEN(Default),
308
+ #undef DEFINE_LOCALID_FROM_TOKEN
309
+ /* LOCAL IDs }}} */
310
+
311
+ /* INSTANCE IDs {{{ */
287
312
  #define DEFINE_INSTANCEID_FROM_TOKEN(n) id##n = TOKEN2INSTANCEID(t##n)
313
+ #undef DEFINE_INSTANCEID_FROM_TOKEN
314
+ /* INSTANCE IDs }}} */
315
+
316
+ /* GLOBAL IDs {{{ */
288
317
  #define DEFINE_GLOBALID_FROM_TOKEN(n) id##n = TOKEN2GLOBALID(t##n)
289
318
  DEFINE_GLOBALID_FROM_TOKEN(LASTLINE),
290
319
  DEFINE_GLOBALID_FROM_TOKEN(BACKREF),
291
320
  DEFINE_GLOBALID_FROM_TOKEN(ERROR_INFO),
321
+ #undef DEFINE_GLOBALID_FROM_TOKEN
322
+ /* GLOBAL IDs }}} */
323
+
324
+ /* CONST IDs {{{ */
292
325
  #define DEFINE_CONSTID_FROM_TOKEN(n) id##n = TOKEN2CONSTID(t##n)
326
+ #undef DEFINE_CONSTID_FROM_TOKEN
327
+ /* CONST IDs }}} */
328
+
329
+ /* CLASS IDs {{{ */
293
330
  #define DEFINE_CLASSID_FROM_TOKEN(n) id##n = TOKEN2CLASSID(t##n)
331
+ #undef DEFINE_CLASSID_FROM_TOKEN
332
+ /* CLASS IDs }}} */
333
+
334
+ /* ATTRSET IDs {{{ */
294
335
  #define DEFINE_ATTRSETID_FROM_TOKEN(n) id##n = TOKEN2ATTRSETID(t##n)
336
+ #undef DEFINE_ATTRSETID_FROM_TOKEN
337
+ /* ATTRSET IDs }}} */
338
+
295
339
  tLAST_OP_ID = tPRESERVED_ID_END-1,
296
340
  idLAST_OP_ID = tLAST_OP_ID >> ID_SCOPE_SHIFT
297
341
  };