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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/darray.h +246 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/debug_counter.h +7 -10
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/eval_intern.h +3 -1
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/id.h +44 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/insns_info.inc +68 -94
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/array.h +2 -20
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/bits.h +6 -2
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/class.h +7 -2
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/cmdlineopt.h +3 -1
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/compile.h +0 -1
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/error.h +24 -2
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/gc.h +28 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/hash.h +18 -44
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/internal/io.h +137 -0
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/internal/parse.h +133 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/process.h +0 -14
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/range.h +2 -2
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/re.h +1 -1
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/internal/ruby_parser.h +69 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/signal.h +4 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/string.h +15 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/struct.h +9 -34
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/thread.h +13 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/variable.h +16 -33
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/vm.h +5 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/iseq.h +4 -4
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/method.h +1 -1
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/node.h +125 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/parse.h +6 -4
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/parser_bits.h +564 -0
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/parser_node.h +133 -0
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/parser_st.h +162 -0
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/parser_value.h +106 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/ractor_core.h +3 -3
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/revision.h +5 -0
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/rubyparser.h +628 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/symbol.h +1 -1
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/thread_pthread.h +11 -13
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/thread_win32.h +0 -5
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/version.h +1 -1
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm.inc +303 -404
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm_callinfo.h +50 -16
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm_core.h +29 -47
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm_exec.h +11 -10
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm_insnhelper.h +20 -23
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm_opts.h +0 -5
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/yjit.h +4 -6
- data/lib/debase/ruby_core_source/version.rb +1 -1
- metadata +119 -115
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/darray.h +0 -179
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/internal/io.h +0 -38
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/internal/parse.h +0 -25
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/node.h +0 -514
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/opt_sc.inc +0 -109
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/revision.h +0 -5
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/transient_heap.h +0 -65
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/addr2line.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/builtin.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/ccan/build_assert/build_assert.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/ccan/check_type/check_type.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/ccan/container_of/container_of.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/ccan/list/list.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/ccan/str/str.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/constant.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/dln.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/encindex.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/hrtime.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/id_table.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/insns.inc +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/basic_operators.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/bignum.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/compar.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/compilers.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/complex.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/cont.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/dir.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/enc.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/encoding.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/enum.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/enumerator.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/eval.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/file.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/fixnum.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/imemo.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/inits.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/load.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/loadpath.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/math.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/missing.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/numeric.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/object.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/proc.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/ractor.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/random.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/rational.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/sanitizers.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/serial.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/static_assert.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/symbol.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/time.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/transcode.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/util.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/warnings.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/known_errors.inc +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/node_name.inc +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/optinsn.inc +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/optunifs.inc +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/probes_helper.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/regenc.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/regint.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/regparse.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/rjit.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/rjit_c.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/ruby_assert.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/ruby_atomic.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/shape.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/siphash.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/thread_none.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/timev.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/transcode_data.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/variable.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm_call_iseq_optimized.inc +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm_debug.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm_sync.h +0 -0
- /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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f3f80f8cffab69100083129a38efef3346d80035b6e8a57b0809e6869ea1846c
|
|
4
|
+
data.tar.gz: eddce4523d7a7ae783d9b2e7d0ca0926ecdd349f7a2852e519e754c2396138e7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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 */
|
data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/debug_counter.h
RENAMED
|
@@ -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
|
};
|