debase-ruby_core_source 0.10.11 → 0.10.12
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/addr2line.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/builtin.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/ccan/build_assert/build_assert.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/ccan/check_type/check_type.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/ccan/container_of/container_of.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/ccan/list/list.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/ccan/str/str.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/constant.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/debug_counter.h +38 -4
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/dln.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/encindex.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/eval_intern.h +16 -5
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/gc.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/hrtime.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/id.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/id_table.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/insns.inc +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/insns_info.inc +93 -89
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/array.h +5 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/bignum.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/bits.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/class.h +7 -1
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/compar.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/compile.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/compilers.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/complex.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/cont.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/dir.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/enc.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/encoding.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/enum.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/enumerator.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/error.h +0 -7
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/eval.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/file.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/fixnum.h +1 -1
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/gc.h +9 -2
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/hash.h +2 -1
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/imemo.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/inits.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/io.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/load.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/loadpath.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/math.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/missing.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/numeric.h +4 -1
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/object.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/parse.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/proc.h +1 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/process.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/random.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/range.h +4 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/rational.h +2 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/re.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/sanitizers.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/scheduler.h +9 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/serial.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/signal.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/static_assert.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/string.h +5 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/struct.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/symbol.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/thread.h +0 -6
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/time.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/transcode.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/util.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/variable.h +1 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/vm.h +7 -6
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/warnings.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/iseq.h +1 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/known_errors.inc +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/method.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/mjit.h +37 -14
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/mjit_compile.inc +715 -557
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/node.h +2 -2
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/node_name.inc +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/opt_sc.inc +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/optinsn.inc +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/optunifs.inc +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/parse.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/probes_helper.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1/ractor.h → ruby-3.0.0-p0/ractor_core.h} +97 -25
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/regenc.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/regint.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/regparse.h +0 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/revision.h +2 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/ruby_assert.h +0 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/ruby_atomic.h +23 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/siphash.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/symbol.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/thread_pthread.h +23 -14
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/thread_win32.h +5 -10
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/timev.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/transcode_data.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/transient_heap.h +4 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/variable.h +2 -1
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/version.h +3 -3
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/vm.inc +94 -99
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/vm_call_iseq_optimized.inc +48 -48
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/vm_callinfo.h +2 -3
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/vm_core.h +96 -25
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/vm_debug.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/vm_exec.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/vm_insnhelper.h +1 -4
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/vm_opts.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/vm_sync.h +44 -5
- data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/vmtc.inc +0 -0
- data/lib/debase/ruby_core_source/version.rb +1 -1
- metadata +111 -113
- data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/mjit.h +0 -29
- data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/ractor_pub.h +0 -50
- data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/revision.h +0 -2
- data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/ruby_atomic.h +0 -236
File without changes
|
@@ -29,6 +29,8 @@ VALUE rb_ary_tmp_new_fill(long capa);
|
|
29
29
|
VALUE rb_ary_at(VALUE, VALUE);
|
30
30
|
size_t rb_ary_memsize(VALUE);
|
31
31
|
VALUE rb_to_array_type(VALUE obj);
|
32
|
+
void rb_ary_cancel_sharing(VALUE ary);
|
33
|
+
|
32
34
|
static inline VALUE rb_ary_entry_internal(VALUE ary, long offset);
|
33
35
|
static inline bool ARY_PTR_USING_P(VALUE ary);
|
34
36
|
static inline void RARY_TRANSIENT_SET(VALUE ary);
|
@@ -46,6 +48,9 @@ VALUE rb_ary_tmp_new_from_values(VALUE, long, const VALUE *);
|
|
46
48
|
VALUE rb_check_to_array(VALUE ary);
|
47
49
|
VALUE rb_ary_behead(VALUE, long);
|
48
50
|
VALUE rb_ary_aref1(VALUE ary, VALUE i);
|
51
|
+
|
52
|
+
struct rb_execution_context_struct;
|
53
|
+
VALUE rb_ec_ary_new_from_values(struct rb_execution_context_struct *ec, long n, const VALUE *elts);
|
49
54
|
MJIT_SYMBOL_EXPORT_END
|
50
55
|
|
51
56
|
static inline VALUE
|
File without changes
|
File without changes
|
@@ -25,8 +25,14 @@ struct rb_subclass_entry {
|
|
25
25
|
struct rb_subclass_entry *next;
|
26
26
|
};
|
27
27
|
|
28
|
+
struct rb_iv_index_tbl_entry {
|
29
|
+
uint32_t index;
|
30
|
+
rb_serial_t class_serial;
|
31
|
+
VALUE class_value;
|
32
|
+
};
|
33
|
+
|
28
34
|
struct rb_classext_struct {
|
29
|
-
struct st_table *iv_index_tbl;
|
35
|
+
struct st_table *iv_index_tbl; // ID -> struct rb_iv_index_tbl_entry
|
30
36
|
struct st_table *iv_tbl;
|
31
37
|
#if SIZEOF_SERIAL_T == SIZEOF_VALUE /* otherwise m_tbl is in struct RClass */
|
32
38
|
struct rb_id_table *m_tbl;
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/enumerator.h
RENAMED
File without changes
|
@@ -40,13 +40,6 @@
|
|
40
40
|
#endif
|
41
41
|
|
42
42
|
/* error.c */
|
43
|
-
typedef enum {
|
44
|
-
RB_WARN_CATEGORY_NONE,
|
45
|
-
RB_WARN_CATEGORY_DEPRECATED,
|
46
|
-
RB_WARN_CATEGORY_EXPERIMENTAL,
|
47
|
-
RB_WARN_CATEGORY_ALL_BITS = 0x6, /* no RB_WARN_CATEGORY_NONE bit */
|
48
|
-
} rb_warning_category_t;
|
49
|
-
|
50
43
|
extern long rb_backtrace_length_limit;
|
51
44
|
extern VALUE rb_eEAGAIN;
|
52
45
|
extern VALUE rb_eEWOULDBLOCK;
|
File without changes
|
File without changes
|
@@ -61,7 +61,7 @@ rb_fix_plus_fix(VALUE x, VALUE y)
|
|
61
61
|
* (3) Of course `z = x + (y-1)` may overflow.
|
62
62
|
* At that time true value is
|
63
63
|
* * positive: 0b0 1xxx...1, and z = 0b1xxx...1
|
64
|
-
* *
|
64
|
+
* * negative: 0b1 0xxx...1, and z = 0b0xxx...1
|
65
65
|
* To convert this true value to long,
|
66
66
|
* (a) Use arithmetic shift
|
67
67
|
* * positive: 0b11xxx...
|
@@ -30,6 +30,12 @@ struct rb_objspace; /* in vm_core.h */
|
|
30
30
|
T *(var) = (T *)(((f) & FL_WB_PROTECTED) ? \
|
31
31
|
rb_wb_protected_newobj_of((c), (f) & ~FL_WB_PROTECTED) : \
|
32
32
|
rb_wb_unprotected_newobj_of((c), (f)))
|
33
|
+
|
34
|
+
#define RB_EC_NEWOBJ_OF(ec, var, T, c, f) \
|
35
|
+
T *(var) = (T *)(((f) & FL_WB_PROTECTED) ? \
|
36
|
+
rb_ec_wb_protected_newobj_of((ec), (c), (f) & ~FL_WB_PROTECTED) : \
|
37
|
+
rb_wb_unprotected_newobj_of((c), (f)))
|
38
|
+
|
33
39
|
#define NEWOBJ_OF(var, T, c, f) RB_NEWOBJ_OF((var), T, (c), (f))
|
34
40
|
#define RB_OBJ_GC_FLAGS_MAX 6 /* used in ext/objspace */
|
35
41
|
|
@@ -52,8 +58,8 @@ struct rb_objspace; /* in vm_core.h */
|
|
52
58
|
|
53
59
|
#define UNALIGNED_MEMBER_PTR(ptr, mem) UNALIGNED_MEMBER_ACCESS(&(ptr)->mem)
|
54
60
|
#define RB_OBJ_WRITE(a, slot, b) \
|
55
|
-
UNALIGNED_MEMBER_ACCESS(\
|
56
|
-
|
61
|
+
rb_obj_write((VALUE)(a), UNALIGNED_MEMBER_ACCESS((VALUE *)(slot)), \
|
62
|
+
(VALUE)(b), __FILE__, __LINE__)
|
57
63
|
|
58
64
|
/* gc.c */
|
59
65
|
extern VALUE *ruby_initial_gc_stress_ptr;
|
@@ -85,6 +91,7 @@ RUBY_SYMBOL_EXPORT_BEGIN
|
|
85
91
|
const char *rb_objspace_data_type_name(VALUE obj);
|
86
92
|
VALUE rb_wb_protected_newobj_of(VALUE, VALUE);
|
87
93
|
VALUE rb_wb_unprotected_newobj_of(VALUE, VALUE);
|
94
|
+
VALUE rb_ec_wb_protected_newobj_of(struct rb_execution_context_struct *ec, VALUE klass, VALUE flags);
|
88
95
|
size_t rb_obj_memsize_of(VALUE);
|
89
96
|
void rb_gc_verify_internal_consistency(void);
|
90
97
|
size_t rb_obj_gc_flags(VALUE, ID[], size_t);
|
@@ -83,6 +83,8 @@ VALUE rb_hash_set_pair(VALUE hash, VALUE pair);
|
|
83
83
|
int rb_hash_stlike_delete(VALUE hash, st_data_t *pkey, st_data_t *pval);
|
84
84
|
int rb_hash_stlike_foreach_with_replace(VALUE hash, st_foreach_check_callback_func *func, st_update_callback_func *replace, st_data_t arg);
|
85
85
|
int rb_hash_stlike_update(VALUE hash, st_data_t key, st_update_callback_func *func, st_data_t arg);
|
86
|
+
extern st_table *rb_hash_st_table(VALUE hash);
|
87
|
+
|
86
88
|
static inline unsigned RHASH_AR_TABLE_SIZE_RAW(VALUE h);
|
87
89
|
static inline VALUE RHASH_IFNONE(VALUE h);
|
88
90
|
static inline size_t RHASH_SIZE(VALUE h);
|
@@ -135,7 +137,6 @@ RHASH_AR_TABLE(VALUE h)
|
|
135
137
|
static inline st_table *
|
136
138
|
RHASH_ST_TABLE(VALUE h)
|
137
139
|
{
|
138
|
-
extern st_table *rb_hash_st_table(VALUE hash);
|
139
140
|
return rb_hash_st_table(h)
|
140
141
|
}
|
141
142
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -50,11 +50,11 @@ double ruby_float_step_size(double beg, double end, double unit, int excl);
|
|
50
50
|
int ruby_float_step(VALUE from, VALUE to, VALUE step, int excl, int allow_endless);
|
51
51
|
int rb_num_negative_p(VALUE);
|
52
52
|
VALUE rb_int_succ(VALUE num);
|
53
|
-
VALUE rb_int_uminus(VALUE num);
|
54
53
|
VALUE rb_float_uminus(VALUE num);
|
55
54
|
VALUE rb_int_plus(VALUE x, VALUE y);
|
56
55
|
VALUE rb_float_plus(VALUE x, VALUE y);
|
57
56
|
VALUE rb_int_minus(VALUE x, VALUE y);
|
57
|
+
VALUE rb_float_minus(VALUE x, VALUE y);
|
58
58
|
VALUE rb_int_mul(VALUE x, VALUE y);
|
59
59
|
VALUE rb_float_mul(VALUE x, VALUE y);
|
60
60
|
VALUE rb_float_div(VALUE x, VALUE y);
|
@@ -79,6 +79,7 @@ int rb_int_positive_p(VALUE num);
|
|
79
79
|
int rb_int_negative_p(VALUE num);
|
80
80
|
VALUE rb_num_pow(VALUE x, VALUE y);
|
81
81
|
VALUE rb_float_ceil(VALUE num, int ndigits);
|
82
|
+
VALUE rb_float_floor(VALUE x, int ndigits);
|
82
83
|
VALUE rb_float_abs(VALUE flt);
|
83
84
|
static inline VALUE rb_num_compare_with_zero(VALUE num, ID mid);
|
84
85
|
static inline int rb_num_positive_int_p(VALUE num);
|
@@ -110,6 +111,8 @@ VALUE rb_int_even_p(VALUE num);
|
|
110
111
|
VALUE rb_int_odd_p(VALUE num);
|
111
112
|
VALUE rb_int_abs(VALUE num);
|
112
113
|
VALUE rb_int_bit_length(VALUE num);
|
114
|
+
VALUE rb_int_uminus(VALUE num);
|
115
|
+
VALUE rb_int_comp(VALUE num);
|
113
116
|
MJIT_SYMBOL_EXPORT_END
|
114
117
|
|
115
118
|
static inline bool
|
File without changes
|
File without changes
|
@@ -21,6 +21,7 @@ int rb_block_pair_yield_optimizable(void);
|
|
21
21
|
int rb_block_arity(void);
|
22
22
|
int rb_block_min_max_arity(int *max);
|
23
23
|
VALUE rb_block_to_s(VALUE self, const struct rb_block *block, const char *additional_info);
|
24
|
+
VALUE rb_callable_receiver(VALUE);
|
24
25
|
|
25
26
|
MJIT_SYMBOL_EXPORT_BEGIN
|
26
27
|
VALUE rb_func_proc_new(rb_block_call_func_t func, VALUE val);
|
File without changes
|
File without changes
|
@@ -29,12 +29,14 @@ VALUE rb_rational_uminus(VALUE self);
|
|
29
29
|
VALUE rb_rational_plus(VALUE self, VALUE other);
|
30
30
|
VALUE rb_rational_minus(VALUE self, VALUE other);
|
31
31
|
VALUE rb_rational_mul(VALUE self, VALUE other);
|
32
|
+
VALUE rb_rational_div(VALUE self, VALUE other);
|
32
33
|
VALUE rb_lcm(VALUE x, VALUE y);
|
33
34
|
VALUE rb_rational_reciprocal(VALUE x);
|
34
35
|
VALUE rb_cstr_to_rat(const char *, int);
|
35
36
|
VALUE rb_rational_abs(VALUE self);
|
36
37
|
VALUE rb_rational_cmp(VALUE self, VALUE other);
|
37
38
|
VALUE rb_rational_pow(VALUE self, VALUE other);
|
39
|
+
VALUE rb_rational_floor(VALUE self, int ndigits);
|
38
40
|
VALUE rb_numeric_quo(VALUE x, VALUE y);
|
39
41
|
VALUE rb_float_numerator(VALUE x);
|
40
42
|
VALUE rb_float_denominator(VALUE x);
|
File without changes
|
data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/sanitizers.h
RENAMED
File without changes
|
@@ -12,6 +12,12 @@
|
|
12
12
|
#include "ruby/ruby.h"
|
13
13
|
#include "ruby/intern.h"
|
14
14
|
|
15
|
+
VALUE rb_scheduler_get();
|
16
|
+
VALUE rb_scheduler_set(VALUE scheduler);
|
17
|
+
|
18
|
+
VALUE rb_scheduler_current();
|
19
|
+
VALUE rb_thread_scheduler_current(VALUE thread);
|
20
|
+
|
15
21
|
VALUE rb_scheduler_timeout(struct timeval *timeout);
|
16
22
|
|
17
23
|
VALUE rb_scheduler_close(VALUE scheduler);
|
@@ -19,6 +25,9 @@ VALUE rb_scheduler_close(VALUE scheduler);
|
|
19
25
|
VALUE rb_scheduler_kernel_sleep(VALUE scheduler, VALUE duration);
|
20
26
|
VALUE rb_scheduler_kernel_sleepv(VALUE scheduler, int argc, VALUE * argv);
|
21
27
|
|
28
|
+
int rb_scheduler_supports_process_wait(VALUE scheduler);
|
29
|
+
VALUE rb_scheduler_process_wait(VALUE scheduler, rb_pid_t pid, int flags);
|
30
|
+
|
22
31
|
VALUE rb_scheduler_block(VALUE scheduler, VALUE blocker, VALUE timeout);
|
23
32
|
VALUE rb_scheduler_unblock(VALUE scheduler, VALUE blocker, VALUE fiber);
|
24
33
|
|
File without changes
|
File without changes
|
data/lib/debase/ruby_core_source/{ruby-3.0.0-preview1 → ruby-3.0.0-p0}/internal/static_assert.h
RENAMED
File without changes
|
@@ -42,6 +42,8 @@ VALUE rb_str_initialize(VALUE str, const char *ptr, long len, rb_encoding *enc);
|
|
42
42
|
size_t rb_str_memsize(VALUE);
|
43
43
|
char *rb_str_to_cstr(VALUE str);
|
44
44
|
const char *ruby_escaped_char(int c);
|
45
|
+
void rb_str_make_independent(VALUE str);
|
46
|
+
|
45
47
|
static inline bool STR_EMBED_P(VALUE str);
|
46
48
|
static inline bool STR_SHARED_P(VALUE str);
|
47
49
|
static inline VALUE QUOTE(VALUE v);
|
@@ -67,6 +69,9 @@ VALUE rb_str_concat_literals(size_t num, const VALUE *strary);
|
|
67
69
|
VALUE rb_str_eql(VALUE str1, VALUE str2);
|
68
70
|
VALUE rb_id_quote_unprintable(ID);
|
69
71
|
VALUE rb_sym_proc_call(ID mid, int argc, const VALUE *argv, int kw_splat, VALUE passed_proc);
|
72
|
+
|
73
|
+
struct rb_execution_context_struct;
|
74
|
+
VALUE rb_ec_str_resurrect(struct rb_execution_context_struct *ec, VALUE str);
|
70
75
|
MJIT_SYMBOL_EXPORT_END
|
71
76
|
|
72
77
|
#define rb_fstring_lit(str) rb_fstring_new((str), rb_strlen_lit(str))
|
File without changes
|
File without changes
|
@@ -39,12 +39,6 @@ VALUE rb_mutex_owned_p(VALUE self);
|
|
39
39
|
|
40
40
|
int rb_thread_wait_for_single_fd(int fd, int events, struct timeval * timeout);
|
41
41
|
|
42
|
-
VALUE rb_thread_scheduler_get(VALUE thread);
|
43
|
-
VALUE rb_thread_scheduler_set(VALUE thread, VALUE scheduler);
|
44
|
-
|
45
|
-
VALUE rb_thread_scheduler_if_nonblocking(VALUE thread);
|
46
|
-
VALUE rb_thread_current_scheduler();
|
47
|
-
|
48
42
|
RUBY_SYMBOL_EXPORT_BEGIN
|
49
43
|
/* Temporary. This API will be removed (renamed). */
|
50
44
|
VALUE rb_thread_io_blocking_region(rb_blocking_function_t *func, void *data1, int fd);
|
File without changes
|
File without changes
|
File without changes
|
@@ -27,8 +27,7 @@ struct rb_callable_method_entry_struct; /* in method.h */
|
|
27
27
|
struct rb_method_definition_struct; /* in method.h */
|
28
28
|
struct rb_execution_context_struct; /* in vm_core.h */
|
29
29
|
struct rb_control_frame_struct; /* in vm_core.h */
|
30
|
-
struct
|
31
|
-
struct rb_call_data;
|
30
|
+
struct rb_callinfo; /* in vm_core.h */
|
32
31
|
|
33
32
|
enum method_missing_reason {
|
34
33
|
MISSING_NOENTRY = 0x00,
|
@@ -47,13 +46,14 @@ rb_serial_t rb_next_class_serial(void);
|
|
47
46
|
/* vm.c */
|
48
47
|
VALUE rb_obj_is_thread(VALUE obj);
|
49
48
|
void rb_vm_mark(void *ptr);
|
49
|
+
void rb_vm_each_stack_value(void *ptr, void (*cb)(VALUE, void*), void *ctx);
|
50
50
|
PUREFUNC(VALUE rb_vm_top_self(void));
|
51
51
|
void rb_vm_inc_const_missing_count(void);
|
52
52
|
const void **rb_vm_get_insns_address_table(void);
|
53
53
|
VALUE rb_source_location(int *pline);
|
54
54
|
const char *rb_source_location_cstr(int *pline);
|
55
55
|
MJIT_STATIC void rb_vm_pop_cfunc_frame(void);
|
56
|
-
int rb_vm_add_root_module(
|
56
|
+
int rb_vm_add_root_module(VALUE module);
|
57
57
|
void rb_vm_check_redefinition_by_prepend(VALUE klass);
|
58
58
|
int rb_vm_check_optimizable_mid(VALUE mid);
|
59
59
|
VALUE rb_yield_refine_block(VALUE refinement, VALUE refinements);
|
@@ -61,7 +61,7 @@ MJIT_STATIC VALUE ruby_vm_special_exception_copy(VALUE);
|
|
61
61
|
PUREFUNC(st_table *rb_vm_fstring_table(void));
|
62
62
|
|
63
63
|
MJIT_SYMBOL_EXPORT_BEGIN
|
64
|
-
VALUE vm_exec(struct rb_execution_context_struct *,
|
64
|
+
VALUE vm_exec(struct rb_execution_context_struct *, bool); /* used in JIT-ed code */
|
65
65
|
MJIT_SYMBOL_EXPORT_END
|
66
66
|
|
67
67
|
/* vm_eval.c */
|
@@ -74,6 +74,7 @@ VALUE rb_check_funcall_with_hook_kw(VALUE recv, ID mid, int argc, const VALUE *a
|
|
74
74
|
rb_check_funcall_hook *hook, VALUE arg, int kw_splat);
|
75
75
|
const char *rb_type_str(enum ruby_value_type type);
|
76
76
|
VALUE rb_check_funcall_default(VALUE, ID, int, const VALUE *, VALUE);
|
77
|
+
VALUE rb_check_funcall_basic_kw(VALUE, ID, VALUE, int, const VALUE*, int);
|
77
78
|
VALUE rb_yield_1(VALUE val);
|
78
79
|
VALUE rb_yield_force_blockarg(VALUE values);
|
79
80
|
VALUE rb_lambda_call(VALUE obj, ID mid, int argc, const VALUE *argv,
|
@@ -92,13 +93,13 @@ VALUE rb_eql_opt(VALUE obj1, VALUE obj2);
|
|
92
93
|
|
93
94
|
struct rb_iseq_struct;
|
94
95
|
MJIT_SYMBOL_EXPORT_BEGIN
|
95
|
-
|
96
|
+
const struct rb_callcache *rb_vm_search_method_slowpath(const struct rb_callinfo *ci, VALUE klass);
|
96
97
|
MJIT_SYMBOL_EXPORT_END
|
97
98
|
|
98
99
|
/* vm_method.c */
|
99
100
|
struct rb_execution_context_struct;
|
100
101
|
MJIT_SYMBOL_EXPORT_BEGIN
|
101
|
-
int rb_ec_obj_respond_to(struct rb_execution_context_struct *ec, VALUE obj, ID id, int priv);
|
102
|
+
int rb_ec_obj_respond_to(struct rb_execution_context_struct *ec, VALUE klass, VALUE obj, ID id, int priv);
|
102
103
|
MJIT_SYMBOL_EXPORT_END
|
103
104
|
|
104
105
|
/* vm_dump.c */
|
File without changes
|
File without changes
|
File without changes
|
@@ -8,13 +8,14 @@
|
|
8
8
|
|
9
9
|
**********************************************************************/
|
10
10
|
|
11
|
-
#include "ruby/internal/config.h"
|
11
|
+
#include "ruby/internal/config.h" // defines USE_MJIT
|
12
|
+
#include "ruby/internal/stdbool.h"
|
13
|
+
#include "vm_core.h"
|
12
14
|
|
13
|
-
#if USE_MJIT
|
15
|
+
# if USE_MJIT
|
14
16
|
|
15
17
|
#include "debug_counter.h"
|
16
18
|
#include "ruby.h"
|
17
|
-
#include "vm_core.h"
|
18
19
|
|
19
20
|
// Special address values of a function generated from the
|
20
21
|
// corresponding iseq by MJIT:
|
@@ -69,6 +70,8 @@ struct rb_mjit_compile_info {
|
|
69
70
|
bool disable_send_cache;
|
70
71
|
// Disable method inlining
|
71
72
|
bool disable_inlining;
|
73
|
+
// Disable opt_getinlinecache inlining
|
74
|
+
bool disable_const_cache;
|
72
75
|
};
|
73
76
|
|
74
77
|
typedef VALUE (*mjit_func_t)(rb_execution_context_t *, rb_control_frame_t *);
|
@@ -80,10 +83,13 @@ RUBY_EXTERN bool mjit_call_p;
|
|
80
83
|
extern void rb_mjit_add_iseq_to_process(const rb_iseq_t *iseq);
|
81
84
|
extern VALUE rb_mjit_wait_call(rb_execution_context_t *ec, struct rb_iseq_constant_body *body);
|
82
85
|
extern struct rb_mjit_compile_info* rb_mjit_iseq_compile_info(const struct rb_iseq_constant_body *body);
|
86
|
+
extern void rb_mjit_before_vm_ic_update(void);
|
87
|
+
extern void rb_mjit_after_vm_ic_update(void);
|
83
88
|
extern void rb_mjit_recompile_send(const rb_iseq_t *iseq);
|
84
89
|
extern void rb_mjit_recompile_ivar(const rb_iseq_t *iseq);
|
85
90
|
extern void rb_mjit_recompile_exivar(const rb_iseq_t *iseq);
|
86
91
|
extern void rb_mjit_recompile_inlining(const rb_iseq_t *iseq);
|
92
|
+
extern void rb_mjit_recompile_const(const rb_iseq_t *iseq);
|
87
93
|
RUBY_SYMBOL_EXPORT_END
|
88
94
|
|
89
95
|
extern bool mjit_compile(FILE *f, const rb_iseq_t *iseq, const char *funcname, int id);
|
@@ -112,11 +118,11 @@ mjit_target_iseq_p(struct rb_iseq_constant_body *body)
|
|
112
118
|
&& body->iseq_size < JIT_ISEQ_SIZE_THRESHOLD;
|
113
119
|
}
|
114
120
|
|
115
|
-
#ifdef MJIT_HEADER
|
121
|
+
# ifdef MJIT_HEADER
|
116
122
|
NOINLINE(static COLDFUNC VALUE mjit_exec_slowpath(rb_execution_context_t *ec, const rb_iseq_t *iseq, struct rb_iseq_constant_body *body));
|
117
|
-
#else
|
123
|
+
# else
|
118
124
|
static inline VALUE mjit_exec_slowpath(rb_execution_context_t *ec, const rb_iseq_t *iseq, struct rb_iseq_constant_body *body);
|
119
|
-
#endif
|
125
|
+
# endif
|
120
126
|
static VALUE
|
121
127
|
mjit_exec_slowpath(rb_execution_context_t *ec, const rb_iseq_t *iseq, struct rb_iseq_constant_body *body)
|
122
128
|
{
|
@@ -162,26 +168,38 @@ mjit_exec(rb_execution_context_t *ec)
|
|
162
168
|
|
163
169
|
mjit_func_t func = body->jit_func;
|
164
170
|
if (UNLIKELY((uintptr_t)func <= LAST_JIT_ISEQ_FUNC)) {
|
165
|
-
#
|
171
|
+
# ifdef MJIT_HEADER
|
166
172
|
RB_DEBUG_COUNTER_INC(mjit_frame_JT2VM);
|
167
|
-
#
|
173
|
+
# else
|
168
174
|
RB_DEBUG_COUNTER_INC(mjit_frame_VM2VM);
|
169
|
-
#
|
175
|
+
# endif
|
170
176
|
return mjit_exec_slowpath(ec, iseq, body);
|
171
177
|
}
|
172
178
|
|
173
|
-
#
|
179
|
+
# ifdef MJIT_HEADER
|
174
180
|
RB_DEBUG_COUNTER_INC(mjit_frame_JT2JT);
|
175
|
-
#
|
181
|
+
# else
|
176
182
|
RB_DEBUG_COUNTER_INC(mjit_frame_VM2JT);
|
177
|
-
#
|
183
|
+
# endif
|
178
184
|
RB_DEBUG_COUNTER_INC(mjit_exec_call_func);
|
179
185
|
return func(ec, ec->cfp);
|
180
186
|
}
|
181
187
|
|
182
188
|
void mjit_child_after_fork(void);
|
183
189
|
|
184
|
-
#
|
190
|
+
# ifdef MJIT_HEADER
|
191
|
+
#define mjit_enabled true
|
192
|
+
# else // MJIT_HEADER
|
193
|
+
extern bool mjit_enabled;
|
194
|
+
# endif // MJIT_HEADER
|
195
|
+
VALUE mjit_pause(bool wait_p);
|
196
|
+
VALUE mjit_resume(void);
|
197
|
+
void mjit_finish(bool close_handle_p);
|
198
|
+
|
199
|
+
# else // USE_MJIT
|
200
|
+
|
201
|
+
static inline void rb_mjit_before_vm_ic_update(void){}
|
202
|
+
static inline void rb_mjit_after_vm_ic_update(void){}
|
185
203
|
static inline struct mjit_cont *mjit_cont_new(rb_execution_context_t *ec){return NULL;}
|
186
204
|
static inline void mjit_cont_free(struct mjit_cont *cont){}
|
187
205
|
static inline void mjit_gc_start_hook(void){}
|
@@ -193,5 +211,10 @@ static inline void mjit_remove_class_serial(rb_serial_t class_serial){}
|
|
193
211
|
static inline VALUE mjit_exec(rb_execution_context_t *ec) { return Qundef; /* unreachable */ }
|
194
212
|
static inline void mjit_child_after_fork(void){}
|
195
213
|
|
196
|
-
#
|
214
|
+
#define mjit_enabled false
|
215
|
+
static inline VALUE mjit_pause(bool wait_p){ return Qnil; } // unreachable
|
216
|
+
static inline VALUE mjit_resume(void){ return Qnil; } // unreachable
|
217
|
+
static inline void mjit_finish(bool close_handle_p){}
|
218
|
+
|
219
|
+
# endif // USE_MJIT
|
197
220
|
#endif // RUBY_MJIT_H
|