debase-ruby_core_source 3.2.2 → 3.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/addr2line.h +3 -1
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/ccan/list/list.h +4 -2
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/dln.h +1 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/eval_intern.h +4 -2
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/insns.inc +2 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/insns_info.inc +280 -198
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/array.h +8 -1
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/bits.h +6 -6
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/class.h +53 -3
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/cmdlineopt.h +2 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/cont.h +3 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/encoding.h +3 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/error.h +3 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/gc.h +3 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/hash.h +1 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/imemo.h +0 -1
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/object.h +1 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/parse.h +7 -32
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/random.h +1 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/string.h +0 -1
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/symbol.h +3 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/thread.h +4 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/transcode.h +3 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/variable.h +5 -4
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/vm.h +9 -2
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/iseq.h +5 -1
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/method.h +7 -7
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/node.h +22 -19
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/node_name.inc +4 -2
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/optunifs.inc +1 -1
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/parse.h +16 -5
- data/lib/debase/ruby_core_source/ruby-3.3.0-p0/parser_node.h +32 -0
- data/lib/debase/ruby_core_source/ruby-3.3.0-p0/prism_compile.h +29 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/ractor_core.h +7 -1
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/regint.h +8 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/regparse.h +2 -1
- data/lib/debase/ruby_core_source/ruby-3.3.0-p0/revision.h +5 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/rjit.h +6 -8
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/rjit_c.h +0 -1
- data/lib/debase/ruby_core_source/ruby-3.3.0-p0/rubyparser.h +1403 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/shape.h +32 -32
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/symbol.h +1 -2
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/thread_none.h +1 -0
- data/lib/debase/ruby_core_source/ruby-3.3.0-p0/thread_pthread.h +166 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/thread_win32.h +1 -1
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/variable.h +11 -2
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/version.h +8 -4
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/vm.inc +225 -185
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/vm_callinfo.h +12 -1
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/vm_core.h +128 -16
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/vm_insnhelper.h +4 -14
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/vmtc.inc +2 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/yjit.h +10 -8
- data/lib/debase/ruby_core_source/version.rb +1 -1
- metadata +121 -120
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/parser_node.h +0 -133
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/revision.h +0 -5
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/rubyparser.h +0 -628
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/thread_pthread.h +0 -126
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/builtin.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/ccan/build_assert/build_assert.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/ccan/check_type/check_type.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/ccan/container_of/container_of.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/ccan/str/str.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/constant.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/darray.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/debug_counter.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/encindex.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/hrtime.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/id.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/id_table.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/basic_operators.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/bignum.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/compar.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/compile.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/compilers.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/complex.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/dir.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/enc.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/enum.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/enumerator.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/eval.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/file.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/fixnum.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/inits.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/io.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/load.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/loadpath.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/math.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/missing.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/numeric.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/proc.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/process.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/ractor.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/range.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/rational.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/re.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/ruby_parser.h +2 -2
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/sanitizers.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/serial.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/signal.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/static_assert.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/struct.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/time.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/util.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal/warnings.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/internal.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/known_errors.inc +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/optinsn.inc +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/parser_bits.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/parser_st.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/parser_value.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/probes_helper.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/regenc.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/ruby_assert.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/ruby_atomic.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/siphash.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/timev.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/transcode_data.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/vm_call_iseq_optimized.inc +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/vm_debug.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/vm_exec.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/vm_opts.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview2 → ruby-3.3.0-p0}/vm_sync.h +0 -0
@@ -136,9 +136,16 @@ RBIMPL_ATTR_ARTIFICIAL()
|
|
136
136
|
static inline VALUE
|
137
137
|
RARRAY_AREF(VALUE ary, long i)
|
138
138
|
{
|
139
|
+
VALUE val;
|
139
140
|
RBIMPL_ASSERT_TYPE(ary, RUBY_T_ARRAY);
|
140
141
|
|
141
|
-
|
142
|
+
RBIMPL_WARNING_PUSH();
|
143
|
+
#if defined(__GNUC__) && !defined(__clang__) && __GNUC__ == 13
|
144
|
+
RBIMPL_WARNING_IGNORED(-Warray-bounds);
|
145
|
+
#endif
|
146
|
+
val = RARRAY_CONST_PTR(ary)[i];
|
147
|
+
RBIMPL_WARNING_POP();
|
148
|
+
return val;
|
142
149
|
}
|
143
150
|
|
144
151
|
#endif /* INTERNAL_ARRAY_H */
|
@@ -398,9 +398,9 @@ rb_popcount32(uint32_t x)
|
|
398
398
|
#else
|
399
399
|
x = (x & 0x55555555) + (x >> 1 & 0x55555555);
|
400
400
|
x = (x & 0x33333333) + (x >> 2 & 0x33333333);
|
401
|
-
x = (x &
|
402
|
-
x = (x &
|
403
|
-
x = (x &
|
401
|
+
x = (x & 0x07070707) + (x >> 4 & 0x07070707);
|
402
|
+
x = (x & 0x000f000f) + (x >> 8 & 0x000f000f);
|
403
|
+
x = (x & 0x0000001f) + (x >>16 & 0x0000001f);
|
404
404
|
return (unsigned int)x;
|
405
405
|
|
406
406
|
#endif
|
@@ -428,9 +428,9 @@ rb_popcount64(uint64_t x)
|
|
428
428
|
x = (x & 0x5555555555555555) + (x >> 1 & 0x5555555555555555);
|
429
429
|
x = (x & 0x3333333333333333) + (x >> 2 & 0x3333333333333333);
|
430
430
|
x = (x & 0x0707070707070707) + (x >> 4 & 0x0707070707070707);
|
431
|
-
x = (x &
|
432
|
-
x = (x &
|
433
|
-
x = (x &
|
431
|
+
x = (x & 0x000f000f000f000f) + (x >> 8 & 0x000f000f000f000f);
|
432
|
+
x = (x & 0x0000001f0000001f) + (x >>16 & 0x0000001f0000001f);
|
433
|
+
x = (x & 0x000000000000003f) + (x >>32 & 0x000000000000003f);
|
434
434
|
return (unsigned int)x;
|
435
435
|
|
436
436
|
#endif
|
@@ -19,6 +19,7 @@
|
|
19
19
|
#include "shape.h"
|
20
20
|
#include "ruby_assert.h"
|
21
21
|
#include "vm_core.h"
|
22
|
+
#include "vm_sync.h"
|
22
23
|
#include "method.h" /* for rb_cref_t */
|
23
24
|
|
24
25
|
#ifdef RCLASS_SUPER
|
@@ -85,7 +86,12 @@ struct RClass {
|
|
85
86
|
// Assert that classes can be embedded in size_pools[2] (which has 160B slot size)
|
86
87
|
STATIC_ASSERT(sizeof_rb_classext_t, sizeof(struct RClass) + sizeof(rb_classext_t) <= 4 * RVALUE_SIZE);
|
87
88
|
|
88
|
-
|
89
|
+
struct RClass_and_rb_classext_t {
|
90
|
+
struct RClass rclass;
|
91
|
+
rb_classext_t classext;
|
92
|
+
};
|
93
|
+
|
94
|
+
#define RCLASS_EXT(c) (&((struct RClass_and_rb_classext_t*)(c))->classext)
|
89
95
|
#define RCLASS_CONST_TBL(c) (RCLASS_EXT(c)->const_tbl)
|
90
96
|
#define RCLASS_M_TBL(c) (RCLASS(c)->m_tbl)
|
91
97
|
#define RCLASS_IVPTR(c) (RCLASS_EXT(c)->iv_ptr)
|
@@ -106,6 +112,51 @@ STATIC_ASSERT(sizeof_rb_classext_t, sizeof(struct RClass) + sizeof(rb_classext_t
|
|
106
112
|
#define RCLASS_SUPERCLASSES_INCLUDE_SELF FL_USER2
|
107
113
|
#define RICLASS_ORIGIN_SHARED_MTBL FL_USER3
|
108
114
|
|
115
|
+
static inline st_table *
|
116
|
+
RCLASS_IV_HASH(VALUE obj)
|
117
|
+
{
|
118
|
+
RUBY_ASSERT(RB_TYPE_P(obj, RUBY_T_CLASS) || RB_TYPE_P(obj, RUBY_T_MODULE));
|
119
|
+
RUBY_ASSERT(rb_shape_obj_too_complex(obj));
|
120
|
+
return (st_table *)RCLASS_IVPTR(obj);
|
121
|
+
}
|
122
|
+
|
123
|
+
static inline void
|
124
|
+
RCLASS_SET_IV_HASH(VALUE obj, const st_table *tbl)
|
125
|
+
{
|
126
|
+
RUBY_ASSERT(RB_TYPE_P(obj, RUBY_T_CLASS) || RB_TYPE_P(obj, RUBY_T_MODULE));
|
127
|
+
RUBY_ASSERT(rb_shape_obj_too_complex(obj));
|
128
|
+
RCLASS_IVPTR(obj) = (VALUE *)tbl;
|
129
|
+
}
|
130
|
+
|
131
|
+
static inline uint32_t
|
132
|
+
RCLASS_IV_COUNT(VALUE obj)
|
133
|
+
{
|
134
|
+
RUBY_ASSERT(RB_TYPE_P(obj, RUBY_T_CLASS) || RB_TYPE_P(obj, RUBY_T_MODULE));
|
135
|
+
if (rb_shape_obj_too_complex(obj)) {
|
136
|
+
uint32_t count;
|
137
|
+
|
138
|
+
// "Too complex" classes could have their IV hash mutated in
|
139
|
+
// parallel, so lets lock around getting the hash size.
|
140
|
+
RB_VM_LOCK_ENTER();
|
141
|
+
{
|
142
|
+
count = (uint32_t)rb_st_table_size(RCLASS_IV_HASH(obj));
|
143
|
+
}
|
144
|
+
RB_VM_LOCK_LEAVE();
|
145
|
+
|
146
|
+
return count;
|
147
|
+
}
|
148
|
+
else {
|
149
|
+
return rb_shape_get_shape_by_id(RCLASS_SHAPE_ID(obj))->next_iv_index;
|
150
|
+
}
|
151
|
+
}
|
152
|
+
|
153
|
+
static inline void
|
154
|
+
RCLASS_SET_M_TBL(VALUE klass, struct rb_id_table *table)
|
155
|
+
{
|
156
|
+
RUBY_ASSERT(!RB_OBJ_PROMOTED(klass));
|
157
|
+
RCLASS_M_TBL(klass) = table;
|
158
|
+
}
|
159
|
+
|
109
160
|
/* class.c */
|
110
161
|
void rb_class_subclass_add(VALUE super, VALUE klass);
|
111
162
|
void rb_class_remove_from_super_subclasses(VALUE);
|
@@ -119,7 +170,6 @@ VALUE rb_module_s_alloc(VALUE klass);
|
|
119
170
|
void rb_module_set_initialized(VALUE module);
|
120
171
|
void rb_module_check_initializable(VALUE module);
|
121
172
|
VALUE rb_make_metaclass(VALUE, VALUE);
|
122
|
-
VALUE rb_iclass_alloc(VALUE klass);
|
123
173
|
VALUE rb_include_class_new(VALUE, VALUE);
|
124
174
|
void rb_class_foreach_subclass(VALUE klass, void (*f)(VALUE, VALUE), VALUE);
|
125
175
|
void rb_class_detach_subclasses(VALUE);
|
@@ -206,7 +256,7 @@ RCLASS_SET_SUPER(VALUE klass, VALUE super)
|
|
206
256
|
static inline void
|
207
257
|
RCLASS_SET_CLASSPATH(VALUE klass, VALUE classpath, bool permanent)
|
208
258
|
{
|
209
|
-
assert(BUILTIN_TYPE(klass) == T_CLASS || BUILTIN_TYPE(klass) == T_MODULE
|
259
|
+
assert(BUILTIN_TYPE(klass) == T_CLASS || BUILTIN_TYPE(klass) == T_MODULE);
|
210
260
|
assert(classpath == 0 || BUILTIN_TYPE(classpath) == T_STRING);
|
211
261
|
|
212
262
|
RB_OBJ_WRITE(klass, &(RCLASS_EXT(klass)->classpath), classpath);
|
@@ -22,6 +22,9 @@ void rb_jit_cont_init(void);
|
|
22
22
|
void rb_jit_cont_each_iseq(rb_iseq_callback callback, void *data);
|
23
23
|
void rb_jit_cont_finish(void);
|
24
24
|
|
25
|
+
/* vm.c */
|
26
|
+
void rb_free_shared_fiber_pool(void);
|
27
|
+
|
25
28
|
// Copy locals from the current execution to the specified fiber.
|
26
29
|
VALUE rb_fiber_inherit_storage(struct rb_execution_context_struct *ec, struct rb_fiber_struct *fiber);
|
27
30
|
|
@@ -227,6 +227,7 @@ __attribute__((__alloc_align__(1)))
|
|
227
227
|
RUBY_ATTR_MALLOC void *rb_aligned_malloc(size_t, size_t) RUBY_ATTR_ALLOC_SIZE((2));
|
228
228
|
size_t rb_size_mul_or_raise(size_t, size_t, VALUE); /* used in compile.c */
|
229
229
|
size_t rb_size_mul_add_or_raise(size_t, size_t, size_t, VALUE); /* used in iseq.h */
|
230
|
+
size_t rb_malloc_grow_capa(size_t current_capacity, size_t type_size);
|
230
231
|
RUBY_ATTR_MALLOC void *rb_xmalloc_mul_add(size_t, size_t, size_t);
|
231
232
|
RUBY_ATTR_MALLOC void *rb_xcalloc_mul_add(size_t, size_t, size_t);
|
232
233
|
void *rb_xrealloc_mul_add(const void *, size_t, size_t, size_t);
|
@@ -249,6 +250,8 @@ void rb_gc_mark_and_move(VALUE *ptr);
|
|
249
250
|
void rb_gc_mark_weak(VALUE *ptr);
|
250
251
|
void rb_gc_remove_weak(VALUE parent_obj, VALUE *ptr);
|
251
252
|
|
253
|
+
void rb_gc_ref_update_table_values_only(st_table *tbl);
|
254
|
+
|
252
255
|
#define rb_gc_mark_and_move_ptr(ptr) do { \
|
253
256
|
VALUE _obj = (VALUE)*(ptr); \
|
254
257
|
rb_gc_mark_and_move(&_obj); \
|
@@ -87,6 +87,7 @@ int rb_hash_stlike_delete(VALUE hash, st_data_t *pkey, st_data_t *pval);
|
|
87
87
|
int rb_hash_stlike_foreach_with_replace(VALUE hash, st_foreach_check_callback_func *func, st_update_callback_func *replace, st_data_t arg);
|
88
88
|
int rb_hash_stlike_update(VALUE hash, st_data_t key, st_update_callback_func *func, st_data_t arg);
|
89
89
|
VALUE rb_ident_hash_new_with_size(st_index_t size);
|
90
|
+
void rb_hash_free(VALUE hash);
|
90
91
|
|
91
92
|
static inline unsigned RHASH_AR_TABLE_SIZE_RAW(VALUE h);
|
92
93
|
static inline VALUE RHASH_IFNONE(VALUE h);
|
@@ -129,7 +129,6 @@ struct MEMO {
|
|
129
129
|
typedef struct rb_imemo_tmpbuf_struct rb_imemo_tmpbuf_t;
|
130
130
|
rb_imemo_tmpbuf_t *rb_imemo_tmpbuf_parser_heap(void *buf, rb_imemo_tmpbuf_t *old_heap, size_t cnt);
|
131
131
|
struct vm_ifunc *rb_vm_ifunc_new(rb_block_call_func_t func, const void *data, int min_argc, int max_argc);
|
132
|
-
void rb_strterm_mark(VALUE obj);
|
133
132
|
static inline enum imemo_type imemo_type(VALUE imemo);
|
134
133
|
static inline int imemo_type_p(VALUE imemo, enum imemo_type imemo_type);
|
135
134
|
static inline bool imemo_throw_data_p(VALUE imemo);
|
@@ -22,47 +22,22 @@ struct rb_iseq_struct; /* in vm_core.h */
|
|
22
22
|
|
23
23
|
/* structs for managing terminator of string literal and heredocment */
|
24
24
|
typedef struct rb_strterm_literal_struct {
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
union {
|
30
|
-
VALUE dummy;
|
31
|
-
long func; /* STR_FUNC_* (e.g., STR_FUNC_ESCAPE and STR_FUNC_EXPAND) */
|
32
|
-
} u1;
|
33
|
-
union {
|
34
|
-
VALUE dummy;
|
35
|
-
long paren; /* '(' of `%q(...)` */
|
36
|
-
} u2;
|
37
|
-
union {
|
38
|
-
VALUE dummy;
|
39
|
-
long term; /* ')' of `%q(...)` */
|
40
|
-
} u3;
|
25
|
+
long nest;
|
26
|
+
int func; /* STR_FUNC_* (e.g., STR_FUNC_ESCAPE and STR_FUNC_EXPAND) */
|
27
|
+
int paren; /* '(' of `%q(...)` */
|
28
|
+
int term; /* ')' of `%q(...)` */
|
41
29
|
} rb_strterm_literal_t;
|
42
30
|
|
43
|
-
#define HERETERM_LENGTH_BITS ((SIZEOF_VALUE - 1) * CHAR_BIT - 1)
|
44
|
-
|
45
31
|
typedef struct rb_strterm_heredoc_struct {
|
46
32
|
VALUE lastline; /* the string of line that contains `<<"END"` */
|
47
33
|
long offset; /* the column of END in `<<"END"` */
|
48
34
|
int sourceline; /* lineno of the line that contains `<<"END"` */
|
49
|
-
unsigned length /* the length of END in `<<"END"` */
|
50
|
-
#if HERETERM_LENGTH_BITS < SIZEOF_INT * CHAR_BIT
|
51
|
-
: HERETERM_LENGTH_BITS
|
52
|
-
# define HERETERM_LENGTH_MAX ((1U << HERETERM_LENGTH_BITS) - 1)
|
53
|
-
#else
|
54
|
-
# define HERETERM_LENGTH_MAX UINT_MAX
|
55
|
-
#endif
|
56
|
-
;
|
57
|
-
#if HERETERM_LENGTH_BITS < SIZEOF_INT * CHAR_BIT
|
58
|
-
unsigned quote: 1;
|
59
|
-
unsigned func: 8;
|
60
|
-
#else
|
35
|
+
unsigned length; /* the length of END in `<<"END"` */
|
61
36
|
uint8_t quote;
|
62
37
|
uint8_t func;
|
63
|
-
#endif
|
64
38
|
} rb_strterm_heredoc_t;
|
65
|
-
|
39
|
+
|
40
|
+
#define HERETERM_LENGTH_MAX UINT_MAX
|
66
41
|
|
67
42
|
typedef struct rb_strterm_struct {
|
68
43
|
VALUE flags;
|
@@ -64,7 +64,6 @@ VALUE rb_str_upto_endless_each(VALUE, int (*each)(VALUE, VALUE), VALUE);
|
|
64
64
|
void rb_str_make_embedded(VALUE);
|
65
65
|
size_t rb_str_size_as_embedded(VALUE);
|
66
66
|
bool rb_str_reembeddable_p(VALUE);
|
67
|
-
void rb_str_update_shared_ary(VALUE str, VALUE old_root, VALUE new_root);
|
68
67
|
RUBY_SYMBOL_EXPORT_END
|
69
68
|
|
70
69
|
VALUE rb_fstring_new(const char *ptr, long len);
|
@@ -32,6 +32,9 @@ ID rb_make_temporary_id(size_t n);
|
|
32
32
|
void rb_gc_free_dsymbol(VALUE);
|
33
33
|
int rb_static_id_valid_p(ID id);
|
34
34
|
|
35
|
+
/* vm.c */
|
36
|
+
void rb_free_static_symid_str(void);
|
37
|
+
|
35
38
|
#if __has_builtin(__builtin_constant_p)
|
36
39
|
#define rb_sym_intern_ascii_cstr(ptr) \
|
37
40
|
(__builtin_constant_p(ptr) ? \
|
@@ -50,6 +50,7 @@ void rb_mutex_allow_trap(VALUE self, int val);
|
|
50
50
|
VALUE rb_uninterruptible(VALUE (*b_proc)(VALUE), VALUE data);
|
51
51
|
VALUE rb_mutex_owned_p(VALUE self);
|
52
52
|
VALUE rb_exec_recursive_outer_mid(VALUE (*f)(VALUE g, VALUE h, int r), VALUE g, VALUE h, ID mid);
|
53
|
+
void ruby_mn_threads_params(void);
|
53
54
|
|
54
55
|
int rb_thread_wait_for_single_fd(int fd, int events, struct timeval * timeout);
|
55
56
|
|
@@ -62,11 +63,14 @@ int rb_notify_fd_close(int fd, struct rb_io_close_wait_list *busy);
|
|
62
63
|
void rb_notify_fd_close_wait(struct rb_io_close_wait_list *busy);
|
63
64
|
|
64
65
|
RUBY_SYMBOL_EXPORT_BEGIN
|
66
|
+
|
65
67
|
/* Temporary. This API will be removed (renamed). */
|
66
68
|
VALUE rb_thread_io_blocking_region(rb_blocking_function_t *func, void *data1, int fd);
|
69
|
+
VALUE rb_thread_io_blocking_call(rb_blocking_function_t *func, void *data1, int fd, int events);
|
67
70
|
|
68
71
|
/* thread.c (export) */
|
69
72
|
int ruby_thread_has_gvl_p(void); /* for ext/fiddle/closure.c */
|
73
|
+
|
70
74
|
RUBY_SYMBOL_EXPORT_END
|
71
75
|
|
72
76
|
int rb_threadptr_execute_interrupts(struct rb_thread_struct *th, int blocking_timing);
|
@@ -47,11 +47,14 @@ VALUE rb_mod_set_temporary_name(VALUE, VALUE);
|
|
47
47
|
|
48
48
|
struct gen_ivtbl;
|
49
49
|
int rb_gen_ivtbl_get(VALUE obj, ID id, struct gen_ivtbl **ivtbl);
|
50
|
-
|
50
|
+
void rb_obj_copy_ivs_to_hash_table(VALUE obj, st_table *table);
|
51
|
+
void rb_obj_convert_to_too_complex(VALUE obj, st_table *table);
|
52
|
+
void rb_evict_ivars_to_hash(VALUE obj);
|
51
53
|
|
52
54
|
RUBY_SYMBOL_EXPORT_BEGIN
|
53
55
|
/* variable.c (export) */
|
54
|
-
void
|
56
|
+
void rb_mark_generic_ivar(VALUE obj);
|
57
|
+
void rb_ref_update_generic_ivar(VALUE);
|
55
58
|
void rb_mv_generic_ivar(VALUE src, VALUE dst);
|
56
59
|
VALUE rb_const_missing(VALUE klass, VALUE name);
|
57
60
|
int rb_class_ivar_set(VALUE klass, ID vid, VALUE value);
|
@@ -63,9 +66,7 @@ VALUE rb_gvar_get(ID);
|
|
63
66
|
VALUE rb_gvar_set(ID, VALUE);
|
64
67
|
VALUE rb_gvar_defined(ID);
|
65
68
|
void rb_const_warn_if_deprecated(const rb_const_entry_t *, VALUE, ID);
|
66
|
-
rb_shape_t * rb_grow_iv_list(VALUE obj);
|
67
69
|
void rb_ensure_iv_list_size(VALUE obj, uint32_t len, uint32_t newsize);
|
68
|
-
struct gen_ivtbl *rb_ensure_generic_iv_list_size(VALUE obj, rb_shape_t *shape, uint32_t newsize);
|
69
70
|
attr_index_t rb_obj_ivar_set(VALUE obj, ID id, VALUE val);
|
70
71
|
|
71
72
|
#endif /* INTERNAL_VARIABLE_H */
|
@@ -58,6 +58,8 @@ VALUE rb_yield_refine_block(VALUE refinement, VALUE refinements);
|
|
58
58
|
VALUE ruby_vm_special_exception_copy(VALUE);
|
59
59
|
PUREFUNC(st_table *rb_vm_fstring_table(void));
|
60
60
|
|
61
|
+
void rb_lastline_set_up(VALUE val, unsigned int up);
|
62
|
+
|
61
63
|
/* vm_eval.c */
|
62
64
|
VALUE rb_current_realfilepath(void);
|
63
65
|
VALUE rb_check_block_call(VALUE, ID, int, const VALUE *, rb_block_call_func_t, VALUE);
|
@@ -81,6 +83,11 @@ void rb_check_stack_overflow(void);
|
|
81
83
|
extern uint64_t rb_vm_insns_count;
|
82
84
|
#endif
|
83
85
|
|
86
|
+
extern bool rb_free_at_exit;
|
87
|
+
|
88
|
+
/* miniinit.c and builtin.c */
|
89
|
+
void rb_free_loaded_builtin_table(void);
|
90
|
+
|
84
91
|
/* vm_insnhelper.c */
|
85
92
|
VALUE rb_equal_opt(VALUE obj1, VALUE obj2);
|
86
93
|
VALUE rb_eql_opt(VALUE obj1, VALUE obj2);
|
@@ -95,7 +102,7 @@ int rb_ec_obj_respond_to(struct rb_execution_context_struct *ec, VALUE obj, ID i
|
|
95
102
|
void rb_clear_constant_cache(void);
|
96
103
|
|
97
104
|
/* vm_dump.c */
|
98
|
-
void rb_print_backtrace(
|
105
|
+
void rb_print_backtrace(FILE *);
|
99
106
|
|
100
107
|
/* vm_backtrace.c */
|
101
108
|
VALUE rb_vm_thread_backtrace(int argc, const VALUE *argv, VALUE thval);
|
@@ -103,7 +110,7 @@ VALUE rb_vm_thread_backtrace_locations(int argc, const VALUE *argv, VALUE thval)
|
|
103
110
|
VALUE rb_vm_backtrace(int argc, const VALUE * argv, struct rb_execution_context_struct * ec);
|
104
111
|
VALUE rb_vm_backtrace_locations(int argc, const VALUE * argv, struct rb_execution_context_struct * ec);
|
105
112
|
VALUE rb_make_backtrace(void);
|
106
|
-
void rb_backtrace_print_as_bugreport(
|
113
|
+
void rb_backtrace_print_as_bugreport(FILE*);
|
107
114
|
int rb_backtrace_p(VALUE obj);
|
108
115
|
VALUE rb_backtrace_to_str_ary(VALUE obj);
|
109
116
|
VALUE rb_backtrace_to_location_ary(VALUE obj);
|
@@ -13,6 +13,7 @@
|
|
13
13
|
#include "internal/gc.h"
|
14
14
|
#include "shape.h"
|
15
15
|
#include "vm_core.h"
|
16
|
+
#include "prism_compile.h"
|
16
17
|
|
17
18
|
RUBY_EXTERN const int ruby_api_version[];
|
18
19
|
#define ISEQ_MAJOR_VERSION ((unsigned int)ruby_api_version[0])
|
@@ -173,6 +174,7 @@ void rb_iseq_init_trace(rb_iseq_t *iseq);
|
|
173
174
|
int rb_iseq_add_local_tracepoint_recursively(const rb_iseq_t *iseq, rb_event_flag_t turnon_events, VALUE tpval, unsigned int target_line, bool target_bmethod);
|
174
175
|
int rb_iseq_remove_local_tracepoint_recursively(const rb_iseq_t *iseq, VALUE tpval);
|
175
176
|
const rb_iseq_t *rb_iseq_load_iseq(VALUE fname);
|
177
|
+
rb_iseq_t * rb_iseq_new_main_prism(pm_string_t *input, pm_options_t *options, VALUE path);
|
176
178
|
|
177
179
|
#if VM_INSN_INFO_TABLE_IMPL == 2
|
178
180
|
unsigned int *rb_iseq_insns_info_decode_positions(const struct rb_iseq_constant_body *body);
|
@@ -189,7 +191,7 @@ VALUE *rb_iseq_original_iseq(const rb_iseq_t *iseq);
|
|
189
191
|
void rb_iseq_build_from_ary(rb_iseq_t *iseq, VALUE misc,
|
190
192
|
VALUE locals, VALUE args,
|
191
193
|
VALUE exception, VALUE body);
|
192
|
-
void
|
194
|
+
void rb_iseq_mark_and_pin_insn_storage(struct iseq_compile_data_storage *arena);
|
193
195
|
|
194
196
|
VALUE rb_iseq_load(VALUE data, VALUE parent, VALUE opt);
|
195
197
|
VALUE rb_iseq_parameters(const rb_iseq_t *iseq, int is_proc);
|
@@ -329,6 +331,8 @@ VALUE rb_iseq_local_variables(const rb_iseq_t *iseq);
|
|
329
331
|
|
330
332
|
attr_index_t rb_estimate_iv_count(VALUE klass, const rb_iseq_t * initialize_iseq);
|
331
333
|
|
334
|
+
void rb_free_encoded_insn_data(void);
|
335
|
+
|
332
336
|
RUBY_SYMBOL_EXPORT_END
|
333
337
|
|
334
338
|
#endif /* RUBY_ISEQ_H */
|
@@ -101,8 +101,9 @@ static inline void
|
|
101
101
|
METHOD_ENTRY_FLAGS_COPY(rb_method_entry_t *dst, const rb_method_entry_t *src)
|
102
102
|
{
|
103
103
|
dst->flags =
|
104
|
-
(dst->flags & ~(IMEMO_FL_USER0|IMEMO_FL_USER1|IMEMO_FL_USER2
|
105
|
-
|
104
|
+
(dst->flags & ~(IMEMO_FL_USER0|IMEMO_FL_USER1|IMEMO_FL_USER2
|
105
|
+
|IMEMO_FL_USER3)) |
|
106
|
+
(src->flags & (IMEMO_FL_USER0|IMEMO_FL_USER1|IMEMO_FL_USER2|IMEMO_FL_USER3));
|
106
107
|
}
|
107
108
|
|
108
109
|
typedef enum {
|
@@ -152,7 +153,6 @@ typedef struct rb_method_alias_struct {
|
|
152
153
|
|
153
154
|
typedef struct rb_method_refined_struct {
|
154
155
|
struct rb_method_entry_struct * orig_me;
|
155
|
-
VALUE owner;
|
156
156
|
} rb_method_refined_t;
|
157
157
|
|
158
158
|
typedef struct rb_method_bmethod_struct {
|
@@ -178,9 +178,9 @@ typedef struct rb_method_optimized {
|
|
178
178
|
struct rb_method_definition_struct {
|
179
179
|
BITFIELD(rb_method_type_t, type, VM_METHOD_TYPE_MINIMUM_BITS);
|
180
180
|
unsigned int iseq_overload: 1;
|
181
|
-
int alias_count : 27;
|
182
|
-
int complemented_count : 28;
|
183
181
|
unsigned int no_redef_warning: 1;
|
182
|
+
unsigned int aliased : 1;
|
183
|
+
int reference_count : 28;
|
184
184
|
|
185
185
|
union {
|
186
186
|
rb_method_iseq_t iseq;
|
@@ -199,7 +199,7 @@ struct rb_method_definition_struct {
|
|
199
199
|
struct rb_id_table;
|
200
200
|
|
201
201
|
typedef struct rb_method_definition_struct rb_method_definition_t;
|
202
|
-
STATIC_ASSERT(sizeof_method_def, offsetof(rb_method_definition_t, body)
|
202
|
+
STATIC_ASSERT(sizeof_method_def, offsetof(rb_method_definition_t, body) <= 8);
|
203
203
|
|
204
204
|
#define UNDEFINED_METHOD_ENTRY_P(me) (!(me) || !(me)->def || (me)->def->type == VM_METHOD_TYPE_UNDEF)
|
205
205
|
#define UNDEFINED_REFINED_METHOD_P(def) \
|
@@ -213,7 +213,7 @@ void rb_add_method_optimized(VALUE klass, ID mid, enum method_optimized_type, un
|
|
213
213
|
void rb_add_refined_method_entry(VALUE refined_class, ID mid);
|
214
214
|
|
215
215
|
rb_method_entry_t *rb_method_entry_set(VALUE klass, ID mid, const rb_method_entry_t *, rb_method_visibility_t noex);
|
216
|
-
rb_method_entry_t *rb_method_entry_create(ID called_id, VALUE klass, rb_method_visibility_t visi,
|
216
|
+
rb_method_entry_t *rb_method_entry_create(ID called_id, VALUE klass, rb_method_visibility_t visi, rb_method_definition_t *def);
|
217
217
|
|
218
218
|
const rb_method_entry_t *rb_method_entry_at(VALUE obj, ID id);
|
219
219
|
|
@@ -19,12 +19,14 @@ typedef void (*bug_report_func)(const char *fmt, ...);
|
|
19
19
|
|
20
20
|
typedef struct node_buffer_elem_struct {
|
21
21
|
struct node_buffer_elem_struct *next;
|
22
|
-
long len;
|
23
|
-
|
22
|
+
long len; /* Length of nodes */
|
23
|
+
size_t allocated; /* Total memory size of allocated buf */
|
24
|
+
size_t used; /* Current usage of buf */
|
25
|
+
NODE **nodes; /* Array of node pointers */
|
26
|
+
NODE *buf[FLEX_ARY_LEN];
|
24
27
|
} node_buffer_elem_t;
|
25
28
|
|
26
29
|
typedef struct {
|
27
|
-
long idx, len;
|
28
30
|
node_buffer_elem_t *head;
|
29
31
|
node_buffer_elem_t *last;
|
30
32
|
} node_buffer_list_t;
|
@@ -50,7 +52,7 @@ RUBY_SYMBOL_EXPORT_BEGIN
|
|
50
52
|
#ifdef UNIVERSAL_PARSER
|
51
53
|
rb_ast_t *rb_ast_new(rb_parser_config_t *config);
|
52
54
|
#else
|
53
|
-
rb_ast_t *rb_ast_new();
|
55
|
+
rb_ast_t *rb_ast_new(void);
|
54
56
|
#endif
|
55
57
|
size_t rb_ast_memsize(const rb_ast_t*);
|
56
58
|
void rb_ast_dispose(rb_ast_t*);
|
@@ -59,14 +61,15 @@ VALUE rb_ast_tokens(rb_ast_t *ast);
|
|
59
61
|
void rb_ast_node_type_change(NODE *n, enum node_type type);
|
60
62
|
#endif
|
61
63
|
const char *ruby_node_name(int node);
|
62
|
-
void rb_node_init(NODE *n, enum node_type type
|
64
|
+
void rb_node_init(NODE *n, enum node_type type);
|
63
65
|
|
64
66
|
void rb_ast_mark(rb_ast_t*);
|
65
67
|
void rb_ast_update_references(rb_ast_t*);
|
66
68
|
void rb_ast_free(rb_ast_t*);
|
67
69
|
void rb_ast_add_mark_object(rb_ast_t*, VALUE);
|
70
|
+
void rb_ast_delete_mark_object(rb_ast_t*, VALUE);
|
68
71
|
void rb_ast_set_tokens(rb_ast_t*, VALUE);
|
69
|
-
NODE *rb_ast_newnode(rb_ast_t*, enum node_type type);
|
72
|
+
NODE *rb_ast_newnode(rb_ast_t*, enum node_type type, size_t size, size_t alignment);
|
70
73
|
void rb_ast_delete_node(rb_ast_t*, NODE *n);
|
71
74
|
rb_ast_id_table_t *rb_ast_new_local_table(rb_ast_t*, int);
|
72
75
|
rb_ast_id_table_t *rb_ast_resize_latest_local_table(rb_ast_t*, int);
|
@@ -94,27 +97,27 @@ RUBY_SYMBOL_EXPORT_END
|
|
94
97
|
|
95
98
|
|
96
99
|
#define NODE_SPECIAL_REQUIRED_KEYWORD ((NODE *)-1)
|
97
|
-
#define NODE_REQUIRED_KEYWORD_P(node) ((node)
|
100
|
+
#define NODE_REQUIRED_KEYWORD_P(node) ((node) == NODE_SPECIAL_REQUIRED_KEYWORD)
|
98
101
|
#define NODE_SPECIAL_NO_NAME_REST ((NODE *)-1)
|
99
102
|
#define NODE_NAMED_REST_P(node) ((node) != NODE_SPECIAL_NO_NAME_REST)
|
100
103
|
#define NODE_SPECIAL_EXCESSIVE_COMMA ((ID)1)
|
101
104
|
#define NODE_SPECIAL_NO_REST_KEYWORD ((NODE *)-1)
|
102
105
|
|
103
|
-
#define nd_first_column(n) ((int)((n)->nd_loc.beg_pos.column))
|
104
|
-
#define nd_set_first_column(n, v) ((n)->nd_loc.beg_pos.column = (v))
|
105
|
-
#define nd_first_lineno(n) ((int)((n)->nd_loc.beg_pos.lineno))
|
106
|
-
#define nd_set_first_lineno(n, v) ((n)->nd_loc.beg_pos.lineno = (v))
|
107
|
-
#define nd_first_loc(n) ((n)->nd_loc.beg_pos)
|
106
|
+
#define nd_first_column(n) ((int)(RNODE(n)->nd_loc.beg_pos.column))
|
107
|
+
#define nd_set_first_column(n, v) (RNODE(n)->nd_loc.beg_pos.column = (v))
|
108
|
+
#define nd_first_lineno(n) ((int)(RNODE(n)->nd_loc.beg_pos.lineno))
|
109
|
+
#define nd_set_first_lineno(n, v) (RNODE(n)->nd_loc.beg_pos.lineno = (v))
|
110
|
+
#define nd_first_loc(n) (RNODE(n)->nd_loc.beg_pos)
|
108
111
|
#define nd_set_first_loc(n, v) (nd_first_loc(n) = (v))
|
109
112
|
|
110
|
-
#define nd_last_column(n) ((int)((n)->nd_loc.end_pos.column))
|
111
|
-
#define nd_set_last_column(n, v) ((n)->nd_loc.end_pos.column = (v))
|
112
|
-
#define nd_last_lineno(n) ((int)((n)->nd_loc.end_pos.lineno))
|
113
|
-
#define nd_set_last_lineno(n, v) ((n)->nd_loc.end_pos.lineno = (v))
|
114
|
-
#define nd_last_loc(n) ((n)->nd_loc.end_pos)
|
113
|
+
#define nd_last_column(n) ((int)(RNODE(n)->nd_loc.end_pos.column))
|
114
|
+
#define nd_set_last_column(n, v) (RNODE(n)->nd_loc.end_pos.column = (v))
|
115
|
+
#define nd_last_lineno(n) ((int)(RNODE(n)->nd_loc.end_pos.lineno))
|
116
|
+
#define nd_set_last_lineno(n, v) (RNODE(n)->nd_loc.end_pos.lineno = (v))
|
117
|
+
#define nd_last_loc(n) (RNODE(n)->nd_loc.end_pos)
|
115
118
|
#define nd_set_last_loc(n, v) (nd_last_loc(n) = (v))
|
116
|
-
#define nd_node_id(n) ((n)->node_id)
|
117
|
-
#define nd_set_node_id(n,id) ((n)->node_id = (id))
|
119
|
+
#define nd_node_id(n) (RNODE(n)->node_id)
|
120
|
+
#define nd_set_node_id(n,id) (RNODE(n)->node_id = (id))
|
118
121
|
|
119
122
|
static inline bool
|
120
123
|
nd_type_p(const NODE *n, enum node_type t)
|
@@ -88,8 +88,6 @@
|
|
88
88
|
return "NODE_LIST";
|
89
89
|
case NODE_ZLIST:
|
90
90
|
return "NODE_ZLIST";
|
91
|
-
case NODE_VALUES:
|
92
|
-
return "NODE_VALUES";
|
93
91
|
case NODE_HASH:
|
94
92
|
return "NODE_HASH";
|
95
93
|
case NODE_RETURN:
|
@@ -208,3 +206,7 @@
|
|
208
206
|
return "NODE_FNDPTN";
|
209
207
|
case NODE_ERROR:
|
210
208
|
return "NODE_ERROR";
|
209
|
+
case NODE_RIPPER:
|
210
|
+
return "NODE_RIPPER";
|
211
|
+
case NODE_RIPPER_VALUES:
|
212
|
+
return "NODE_RIPPER_VALUES";
|
@@ -38,6 +38,6 @@
|
|
38
38
|
|
39
39
|
/* Let .bss section automatically initialize this variable */
|
40
40
|
/* cf. Section 6.7.8 of ISO/IEC 9899:1999 */
|
41
|
-
static const int *const *const unified_insns_data[
|
41
|
+
static const int *const *const unified_insns_data[204];
|
42
42
|
|
43
43
|
ASSERT_VM_INSTRUCTION_SIZE(unified_insns_data);
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/* A Bison parser, made by Lrama 0.5.
|
1
|
+
/* A Bison parser, made by Lrama 0.5.12. */
|
2
2
|
|
3
3
|
/* Bison interface for Yacc-like parsers in C
|
4
4
|
|
@@ -34,17 +34,17 @@
|
|
34
34
|
/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
|
35
35
|
especially those whose name start with YY_ or yy_. They are
|
36
36
|
private implementation details that can be changed or removed. */
|
37
|
-
|
38
37
|
#ifndef YY_YY_PARSE_H_INCLUDED
|
39
38
|
# define YY_YY_PARSE_H_INCLUDED
|
40
39
|
/* Debug traces. */
|
41
40
|
#ifndef YYDEBUG
|
42
41
|
# define YYDEBUG 0
|
43
42
|
#endif
|
44
|
-
#if YYDEBUG
|
43
|
+
#if YYDEBUG && !defined(yydebug)
|
45
44
|
extern int yydebug;
|
46
45
|
#endif
|
47
46
|
|
47
|
+
|
48
48
|
/* Token kinds. */
|
49
49
|
#ifndef YYTOKENTYPE
|
50
50
|
# define YYTOKENTYPE
|
@@ -190,10 +190,19 @@ extern int yydebug;
|
|
190
190
|
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
|
191
191
|
union YYSTYPE
|
192
192
|
{
|
193
|
-
#line
|
193
|
+
#line 1963 "parse.y"
|
194
194
|
|
195
195
|
VALUE val;
|
196
196
|
NODE *node;
|
197
|
+
rb_node_fcall_t *node_fcall;
|
198
|
+
rb_node_args_t *node_args;
|
199
|
+
rb_node_args_aux_t *node_args_aux;
|
200
|
+
rb_node_opt_arg_t *node_opt_arg;
|
201
|
+
rb_node_kw_arg_t *node_kw_arg;
|
202
|
+
rb_node_block_pass_t *node_block_pass;
|
203
|
+
rb_node_masgn_t *node_masgn;
|
204
|
+
rb_node_def_temp_t *node_def_temp;
|
205
|
+
rb_node_exits_t *node_exits;
|
197
206
|
ID id;
|
198
207
|
int num;
|
199
208
|
st_table *tbl;
|
@@ -201,7 +210,7 @@ union YYSTYPE
|
|
201
210
|
struct rb_strterm_struct *strterm;
|
202
211
|
struct lex_context ctxt;
|
203
212
|
|
204
|
-
#line
|
213
|
+
#line 214 "parse.h"
|
205
214
|
|
206
215
|
};
|
207
216
|
typedef union YYSTYPE YYSTYPE;
|
@@ -229,4 +238,6 @@ struct YYLTYPE
|
|
229
238
|
int yyparse (struct parser_params *p);
|
230
239
|
|
231
240
|
|
241
|
+
|
232
242
|
#endif /* !YY_YY_PARSE_H_INCLUDED */
|
243
|
+
|