debase-ruby_core_source 3.2.1 → 3.2.2

Sign up to get free protection for your applications and to get access to all the features.
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
  };