debase-ruby_core_source 0.10.7 → 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/CHANGELOG.md +12 -0
- data/README.md +1 -1
- data/Rakefile +6 -3
- data/debase-ruby_core_source.gemspec +2 -1
- data/lib/debase/ruby_core_source.rb +0 -1
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/addr2line.h +0 -0
- data/lib/debase/ruby_core_source/ruby-2.7.0-p0/builtin.h +78 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/ccan/build_assert/build_assert.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/ccan/check_type/check_type.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/ccan/container_of/container_of.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/ccan/list/list.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/ccan/str/str.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/constant.h +0 -4
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/debug_counter.h +21 -9
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/dln.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/encindex.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/eval_intern.h +1 -3
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/gc.h +2 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/hrtime.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/id.h +1 -3
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/id_table.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/insns.inc +6 -2
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/insns_info.inc +1471 -1888
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/internal.h +106 -91
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/iseq.h +5 -5
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/known_errors.inc +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/method.h +1 -4
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/mjit.h +3 -5
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/mjit_compile.inc +768 -872
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/node.h +4 -11
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/node_name.inc +0 -2
- data/lib/debase/ruby_core_source/ruby-2.7.0-p0/opt_sc.inc +109 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/optinsn.inc +0 -0
- data/lib/debase/ruby_core_source/ruby-2.7.0-p0/optunifs.inc +43 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/parse.h +1 -1
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/probes_helper.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/regenc.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/regint.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/regparse.h +0 -0
- data/lib/debase/ruby_core_source/ruby-2.7.0-p0/revision.h +2 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/ruby_assert.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/ruby_atomic.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/siphash.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/symbol.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/thread_pthread.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/thread_win32.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/timev.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/transcode_data.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/transient_heap.h +0 -0
- data/lib/debase/ruby_core_source/ruby-2.7.0-p0/variable.h +9 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/version.h +4 -4
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/vm.inc +604 -407
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/vm_call_iseq_optimized.inc +49 -49
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/vm_core.h +42 -29
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/vm_debug.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/vm_exec.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/vm_insnhelper.h +16 -4
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/vm_opts.h +2 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/vmtc.inc +6 -2
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/addr2line.h +20 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/builtin.h +83 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/ccan/build_assert/build_assert.h +40 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/ccan/check_type/check_type.h +63 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/ccan/container_of/container_of.h +142 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/ccan/list/list.h +788 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/ccan/str/str.h +16 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/constant.h +55 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/debug_counter.h +457 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/dln.h +36 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/encindex.h +70 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/eval_intern.h +323 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/gc.h +140 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/hrtime.h +168 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/id.h +290 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/id_table.h +36 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/insns.inc +249 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/insns_info.inc +8983 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal.h +107 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/array.h +119 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/bignum.h +246 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/bits.h +566 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/class.h +174 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/compar.h +50 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/compile.h +32 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/compilers.h +108 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/complex.h +29 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/cont.h +25 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/dir.h +17 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/enc.h +20 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/encoding.h +28 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/enum.h +19 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/enumerator.h +22 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/error.h +124 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/eval.h +33 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/file.h +39 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/fixnum.h +185 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/gc.h +161 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/hash.h +241 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/imemo.h +243 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/inits.h +51 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/io.h +35 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/load.h +19 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/loadpath.h +17 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/math.h +24 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/missing.h +19 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/numeric.h +255 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/object.h +83 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/parse.h +23 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/proc.h +33 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/process.h +136 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/random.h +17 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/range.h +41 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/rational.h +71 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/re.h +29 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/sanitizers.h +191 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/scheduler.h +44 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/serial.h +24 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/signal.h +22 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/static_assert.h +17 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/string.h +140 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/struct.h +154 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/symbol.h +41 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/thread.h +54 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/time.h +35 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/transcode.h +21 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/util.h +31 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/variable.h +84 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/vm.h +136 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/warnings.h +17 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/iseq.h +305 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/known_errors.inc +791 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/method.h +245 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/mjit.h +220 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/mjit_compile.inc +8240 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/node.h +484 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/node_name.inc +210 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/opt_sc.inc +0 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/optinsn.inc +128 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/optunifs.inc +0 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/parse.h +211 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/probes_helper.h +44 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/ractor_core.h +343 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/regenc.h +254 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/regint.h +938 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/regparse.h +370 -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-p0/ruby_assert.h +15 -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-p0/siphash.h +48 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/symbol.h +119 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/thread_pthread.h +115 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/thread_win32.h +61 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/timev.h +57 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/transcode_data.h +138 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/transient_heap.h +65 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/variable.h +22 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/version.h +89 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/vm.inc +5355 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/vm_call_iseq_optimized.inc +244 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/vm_callinfo.h +456 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/vm_core.h +2023 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/vm_debug.h +116 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/vm_exec.h +196 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/vm_insnhelper.h +257 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/vm_opts.h +73 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/vm_sync.h +136 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/vmtc.inc +243 -0
- data/lib/debase/ruby_core_source/version.rb +1 -1
- metadata +181 -57
- data/lib/debase/ruby_core_source/ruby-2.7.0-preview2/revision.h +0 -2
data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-2.7.0-p0}/vm_call_iseq_optimized.inc
RENAMED
@@ -7,171 +7,171 @@
|
|
7
7
|
*/
|
8
8
|
|
9
9
|
static VALUE
|
10
|
-
vm_call_iseq_setup_normal_0start_0params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling,
|
10
|
+
vm_call_iseq_setup_normal_0start_0params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
|
11
11
|
{
|
12
12
|
RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
|
13
|
-
return vm_call_iseq_setup_normal(ec, cfp, calling, cc
|
13
|
+
return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 0, 0);
|
14
14
|
}
|
15
15
|
|
16
16
|
static VALUE
|
17
|
-
vm_call_iseq_setup_normal_0start_0params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling,
|
17
|
+
vm_call_iseq_setup_normal_0start_0params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
|
18
18
|
{
|
19
19
|
RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
|
20
|
-
return vm_call_iseq_setup_normal(ec, cfp, calling, cc
|
20
|
+
return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 0, 1);
|
21
21
|
}
|
22
22
|
|
23
23
|
static VALUE
|
24
|
-
vm_call_iseq_setup_normal_0start_0params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling,
|
24
|
+
vm_call_iseq_setup_normal_0start_0params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
|
25
25
|
{
|
26
26
|
RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
|
27
|
-
return vm_call_iseq_setup_normal(ec, cfp, calling, cc
|
27
|
+
return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 0, 2);
|
28
28
|
}
|
29
29
|
|
30
30
|
static VALUE
|
31
|
-
vm_call_iseq_setup_normal_0start_0params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling,
|
31
|
+
vm_call_iseq_setup_normal_0start_0params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
|
32
32
|
{
|
33
33
|
RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
|
34
|
-
return vm_call_iseq_setup_normal(ec, cfp, calling, cc
|
34
|
+
return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 0, 3);
|
35
35
|
}
|
36
36
|
|
37
37
|
static VALUE
|
38
|
-
vm_call_iseq_setup_normal_0start_0params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling,
|
38
|
+
vm_call_iseq_setup_normal_0start_0params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
|
39
39
|
{
|
40
40
|
RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
|
41
|
-
return vm_call_iseq_setup_normal(ec, cfp, calling, cc
|
41
|
+
return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 0, 4);
|
42
42
|
}
|
43
43
|
|
44
44
|
static VALUE
|
45
|
-
vm_call_iseq_setup_normal_0start_0params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling,
|
45
|
+
vm_call_iseq_setup_normal_0start_0params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
|
46
46
|
{
|
47
47
|
RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
|
48
|
-
return vm_call_iseq_setup_normal(ec, cfp, calling, cc
|
48
|
+
return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 0, 5);
|
49
49
|
}
|
50
50
|
|
51
51
|
static VALUE
|
52
|
-
vm_call_iseq_setup_normal_0start_1params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling,
|
52
|
+
vm_call_iseq_setup_normal_0start_1params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
|
53
53
|
{
|
54
54
|
RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
|
55
|
-
return vm_call_iseq_setup_normal(ec, cfp, calling, cc
|
55
|
+
return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 1, 0);
|
56
56
|
}
|
57
57
|
|
58
58
|
static VALUE
|
59
|
-
vm_call_iseq_setup_normal_0start_1params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling,
|
59
|
+
vm_call_iseq_setup_normal_0start_1params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
|
60
60
|
{
|
61
61
|
RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
|
62
|
-
return vm_call_iseq_setup_normal(ec, cfp, calling, cc
|
62
|
+
return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 1, 1);
|
63
63
|
}
|
64
64
|
|
65
65
|
static VALUE
|
66
|
-
vm_call_iseq_setup_normal_0start_1params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling,
|
66
|
+
vm_call_iseq_setup_normal_0start_1params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
|
67
67
|
{
|
68
68
|
RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
|
69
|
-
return vm_call_iseq_setup_normal(ec, cfp, calling, cc
|
69
|
+
return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 1, 2);
|
70
70
|
}
|
71
71
|
|
72
72
|
static VALUE
|
73
|
-
vm_call_iseq_setup_normal_0start_1params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling,
|
73
|
+
vm_call_iseq_setup_normal_0start_1params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
|
74
74
|
{
|
75
75
|
RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
|
76
|
-
return vm_call_iseq_setup_normal(ec, cfp, calling, cc
|
76
|
+
return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 1, 3);
|
77
77
|
}
|
78
78
|
|
79
79
|
static VALUE
|
80
|
-
vm_call_iseq_setup_normal_0start_1params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling,
|
80
|
+
vm_call_iseq_setup_normal_0start_1params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
|
81
81
|
{
|
82
82
|
RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
|
83
|
-
return vm_call_iseq_setup_normal(ec, cfp, calling, cc
|
83
|
+
return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 1, 4);
|
84
84
|
}
|
85
85
|
|
86
86
|
static VALUE
|
87
|
-
vm_call_iseq_setup_normal_0start_1params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling,
|
87
|
+
vm_call_iseq_setup_normal_0start_1params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
|
88
88
|
{
|
89
89
|
RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
|
90
|
-
return vm_call_iseq_setup_normal(ec, cfp, calling, cc
|
90
|
+
return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 1, 5);
|
91
91
|
}
|
92
92
|
|
93
93
|
static VALUE
|
94
|
-
vm_call_iseq_setup_normal_0start_2params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling,
|
94
|
+
vm_call_iseq_setup_normal_0start_2params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
|
95
95
|
{
|
96
96
|
RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
|
97
|
-
return vm_call_iseq_setup_normal(ec, cfp, calling, cc
|
97
|
+
return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 2, 0);
|
98
98
|
}
|
99
99
|
|
100
100
|
static VALUE
|
101
|
-
vm_call_iseq_setup_normal_0start_2params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling,
|
101
|
+
vm_call_iseq_setup_normal_0start_2params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
|
102
102
|
{
|
103
103
|
RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
|
104
|
-
return vm_call_iseq_setup_normal(ec, cfp, calling, cc
|
104
|
+
return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 2, 1);
|
105
105
|
}
|
106
106
|
|
107
107
|
static VALUE
|
108
|
-
vm_call_iseq_setup_normal_0start_2params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling,
|
108
|
+
vm_call_iseq_setup_normal_0start_2params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
|
109
109
|
{
|
110
110
|
RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
|
111
|
-
return vm_call_iseq_setup_normal(ec, cfp, calling, cc
|
111
|
+
return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 2, 2);
|
112
112
|
}
|
113
113
|
|
114
114
|
static VALUE
|
115
|
-
vm_call_iseq_setup_normal_0start_2params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling,
|
115
|
+
vm_call_iseq_setup_normal_0start_2params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
|
116
116
|
{
|
117
117
|
RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
|
118
|
-
return vm_call_iseq_setup_normal(ec, cfp, calling, cc
|
118
|
+
return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 2, 3);
|
119
119
|
}
|
120
120
|
|
121
121
|
static VALUE
|
122
|
-
vm_call_iseq_setup_normal_0start_2params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling,
|
122
|
+
vm_call_iseq_setup_normal_0start_2params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
|
123
123
|
{
|
124
124
|
RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
|
125
|
-
return vm_call_iseq_setup_normal(ec, cfp, calling, cc
|
125
|
+
return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 2, 4);
|
126
126
|
}
|
127
127
|
|
128
128
|
static VALUE
|
129
|
-
vm_call_iseq_setup_normal_0start_2params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling,
|
129
|
+
vm_call_iseq_setup_normal_0start_2params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
|
130
130
|
{
|
131
131
|
RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
|
132
|
-
return vm_call_iseq_setup_normal(ec, cfp, calling, cc
|
132
|
+
return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 2, 5);
|
133
133
|
}
|
134
134
|
|
135
135
|
static VALUE
|
136
|
-
vm_call_iseq_setup_normal_0start_3params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling,
|
136
|
+
vm_call_iseq_setup_normal_0start_3params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
|
137
137
|
{
|
138
138
|
RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
|
139
|
-
return vm_call_iseq_setup_normal(ec, cfp, calling, cc
|
139
|
+
return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 3, 0);
|
140
140
|
}
|
141
141
|
|
142
142
|
static VALUE
|
143
|
-
vm_call_iseq_setup_normal_0start_3params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling,
|
143
|
+
vm_call_iseq_setup_normal_0start_3params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
|
144
144
|
{
|
145
145
|
RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
|
146
|
-
return vm_call_iseq_setup_normal(ec, cfp, calling, cc
|
146
|
+
return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 3, 1);
|
147
147
|
}
|
148
148
|
|
149
149
|
static VALUE
|
150
|
-
vm_call_iseq_setup_normal_0start_3params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling,
|
150
|
+
vm_call_iseq_setup_normal_0start_3params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
|
151
151
|
{
|
152
152
|
RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
|
153
|
-
return vm_call_iseq_setup_normal(ec, cfp, calling, cc
|
153
|
+
return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 3, 2);
|
154
154
|
}
|
155
155
|
|
156
156
|
static VALUE
|
157
|
-
vm_call_iseq_setup_normal_0start_3params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling,
|
157
|
+
vm_call_iseq_setup_normal_0start_3params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
|
158
158
|
{
|
159
159
|
RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
|
160
|
-
return vm_call_iseq_setup_normal(ec, cfp, calling, cc
|
160
|
+
return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 3, 3);
|
161
161
|
}
|
162
162
|
|
163
163
|
static VALUE
|
164
|
-
vm_call_iseq_setup_normal_0start_3params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling,
|
164
|
+
vm_call_iseq_setup_normal_0start_3params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
|
165
165
|
{
|
166
166
|
RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
|
167
|
-
return vm_call_iseq_setup_normal(ec, cfp, calling, cc
|
167
|
+
return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 3, 4);
|
168
168
|
}
|
169
169
|
|
170
170
|
static VALUE
|
171
|
-
vm_call_iseq_setup_normal_0start_3params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling,
|
171
|
+
vm_call_iseq_setup_normal_0start_3params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
|
172
172
|
{
|
173
173
|
RB_DEBUG_COUNTER_INC(ccf_iseq_fix);
|
174
|
-
return vm_call_iseq_setup_normal(ec, cfp, calling, cc
|
174
|
+
return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 3, 5);
|
175
175
|
}
|
176
176
|
|
177
177
|
/* vm_call_iseq_handlers[param][local] */
|
@@ -225,7 +225,7 @@ vm_call_iseq_setup_func(const struct rb_call_info *ci, const int param_size, con
|
|
225
225
|
|
226
226
|
|
227
227
|
static inline vm_call_handler
|
228
|
-
vm_call_iseq_setup_func(const struct rb_call_info *ci,
|
228
|
+
vm_call_iseq_setup_func(const struct rb_call_info *ci, const int param_size, const int local_size)
|
229
229
|
{
|
230
230
|
if (UNLIKELY(ci->flag & VM_CALL_TAILCALL)) {
|
231
231
|
return &vm_call_iseq_setup_tailcall_0start;
|
@@ -220,10 +220,12 @@ typedef struct rb_compile_option_struct rb_compile_option_t;
|
|
220
220
|
struct iseq_inline_cache_entry {
|
221
221
|
rb_serial_t ic_serial;
|
222
222
|
const rb_cref_t *ic_cref;
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
223
|
+
VALUE value;
|
224
|
+
};
|
225
|
+
|
226
|
+
struct iseq_inline_iv_cache_entry {
|
227
|
+
rb_serial_t ic_serial;
|
228
|
+
size_t index;
|
227
229
|
};
|
228
230
|
|
229
231
|
union iseq_inline_storage_entry {
|
@@ -232,13 +234,7 @@ union iseq_inline_storage_entry {
|
|
232
234
|
VALUE value;
|
233
235
|
} once;
|
234
236
|
struct iseq_inline_cache_entry cache;
|
235
|
-
|
236
|
-
|
237
|
-
struct rb_call_info {
|
238
|
-
/* fixed at compile time */
|
239
|
-
ID mid;
|
240
|
-
unsigned int flag;
|
241
|
-
int orig_argc;
|
237
|
+
struct iseq_inline_iv_cache_entry iv_cache;
|
242
238
|
};
|
243
239
|
|
244
240
|
struct rb_call_info_kw_arg {
|
@@ -258,8 +254,13 @@ struct rb_calling_info {
|
|
258
254
|
int kw_splat;
|
259
255
|
};
|
260
256
|
|
257
|
+
struct rb_kwarg_call_data {
|
258
|
+
struct rb_call_cache cc;
|
259
|
+
struct rb_call_info_with_kwarg ci_kw;
|
260
|
+
};
|
261
|
+
|
261
262
|
struct rb_execution_context_struct;
|
262
|
-
typedef VALUE (*vm_call_handler)(struct rb_execution_context_struct *ec, struct rb_control_frame_struct *cfp, struct rb_calling_info *calling,
|
263
|
+
typedef VALUE (*vm_call_handler)(struct rb_execution_context_struct *ec, struct rb_control_frame_struct *cfp, struct rb_calling_info *calling, struct rb_call_data *cd);
|
263
264
|
|
264
265
|
#if 1
|
265
266
|
#define CoreDataFromValue(obj, type) (type*)DATA_PTR(obj)
|
@@ -417,12 +418,12 @@ struct rb_iseq_constant_body {
|
|
417
418
|
struct rb_iseq_struct *local_iseq; /* local_iseq->flip_cnt can be modified */
|
418
419
|
|
419
420
|
union iseq_inline_storage_entry *is_entries;
|
420
|
-
struct
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
421
|
+
struct rb_call_data *call_data; /* A buffer for two arrays:
|
422
|
+
* struct rb_call_data calls[ci_size];
|
423
|
+
* struct rb_kwarg_call_data kw_calls[ci_kw_size];
|
424
|
+
* Such that:
|
425
|
+
* struct rb_kwarg_call_data *kw_calls = &body->call_data[ci_size];
|
426
|
+
*/
|
426
427
|
|
427
428
|
struct {
|
428
429
|
rb_snum_t flip_count;
|
@@ -446,6 +447,8 @@ struct rb_iseq_constant_body {
|
|
446
447
|
long unsigned total_calls; /* number of total calls with `mjit_exec()` */
|
447
448
|
struct rb_mjit_unit *jit_unit;
|
448
449
|
#endif
|
450
|
+
|
451
|
+
uintptr_t iseq_unique_id; /* -- Remove In 3.0 -- */
|
449
452
|
};
|
450
453
|
|
451
454
|
/* T_IMEMO/iseq */
|
@@ -493,6 +496,7 @@ rb_iseq_check(const rb_iseq_t *iseq)
|
|
493
496
|
static inline const rb_iseq_t *
|
494
497
|
def_iseq_ptr(rb_method_definition_t *def)
|
495
498
|
{
|
499
|
+
//TODO: re-visit. to check the bug, enable this assertion.
|
496
500
|
#if VM_CHECK_MODE > 0
|
497
501
|
if (def->type != VM_METHOD_TYPE_ISEQ) rb_bug("def_iseq_ptr: not iseq (%d)", def->type);
|
498
502
|
#endif
|
@@ -565,6 +569,10 @@ typedef struct rb_hook_list_struct {
|
|
565
569
|
unsigned int running;
|
566
570
|
} rb_hook_list_t;
|
567
571
|
|
572
|
+
|
573
|
+
// see builtin.h for definition
|
574
|
+
typedef const struct rb_builtin_function *RB_BUILTIN;
|
575
|
+
|
568
576
|
typedef struct rb_vm_struct {
|
569
577
|
VALUE self;
|
570
578
|
|
@@ -616,7 +624,6 @@ typedef struct rb_vm_struct {
|
|
616
624
|
/* signal */
|
617
625
|
struct {
|
618
626
|
VALUE cmd[RUBY_NSIG];
|
619
|
-
unsigned char safe[RUBY_NSIG];
|
620
627
|
} trap_list;
|
621
628
|
|
622
629
|
/* hook */
|
@@ -648,6 +655,9 @@ typedef struct rb_vm_struct {
|
|
648
655
|
VALUE *defined_strings;
|
649
656
|
st_table *frozen_strings;
|
650
657
|
|
658
|
+
const struct rb_builtin_function *builtin_function_table;
|
659
|
+
int builtin_inline_index;
|
660
|
+
|
651
661
|
/* params */
|
652
662
|
struct { /* size in byte */
|
653
663
|
size_t thread_vm_stack_size;
|
@@ -753,7 +763,7 @@ typedef struct rb_control_frame_struct {
|
|
753
763
|
const rb_iseq_t *iseq; /* cfp[2] */
|
754
764
|
VALUE self; /* cfp[3] / block[0] */
|
755
765
|
const VALUE *ep; /* cfp[4] / block[1] */
|
756
|
-
const void *block_code; /* cfp[5] / block[2] */ /* iseq or ifunc */
|
766
|
+
const void *block_code; /* cfp[5] / block[2] */ /* iseq or ifunc or forwarded block handler */
|
757
767
|
VALUE *__bp__; /* cfp[6] */ /* outside vm_push_frame, use vm_base_ptr instead. */
|
758
768
|
|
759
769
|
#if VM_DEBUG_BP_CHECK
|
@@ -881,6 +891,9 @@ typedef struct rb_execution_context_struct {
|
|
881
891
|
} machine;
|
882
892
|
} rb_execution_context_t;
|
883
893
|
|
894
|
+
// for builtin.h
|
895
|
+
#define VM_CORE_H_EC_DEFINED 1
|
896
|
+
|
884
897
|
// Set the vm_stack pointer in the execution context.
|
885
898
|
void rb_ec_set_vm_stack(rb_execution_context_t *ec, VALUE *stack, size_t size);
|
886
899
|
|
@@ -1019,10 +1032,6 @@ rb_iseq_t *rb_iseq_new_with_callback(const struct rb_iseq_new_with_callback_call
|
|
1019
1032
|
VALUE name, VALUE path, VALUE realpath, VALUE first_lineno,
|
1020
1033
|
const rb_iseq_t *parent, enum iseq_type, const rb_compile_option_t*);
|
1021
1034
|
|
1022
|
-
/* src -> iseq */
|
1023
|
-
rb_iseq_t *rb_iseq_compile(VALUE src, VALUE file, VALUE line);
|
1024
|
-
rb_iseq_t *rb_iseq_compile_with_option(VALUE src, VALUE file, VALUE realpath, VALUE line, VALUE opt);
|
1025
|
-
|
1026
1035
|
VALUE rb_iseq_disasm(const rb_iseq_t *iseq);
|
1027
1036
|
int rb_iseq_disasm_insn(VALUE str, const VALUE *iseqval, size_t pos, const rb_iseq_t *iseq, VALUE child);
|
1028
1037
|
|
@@ -1118,11 +1127,11 @@ enum vm_svar_index {
|
|
1118
1127
|
|
1119
1128
|
/* inline cache */
|
1120
1129
|
typedef struct iseq_inline_cache_entry *IC;
|
1130
|
+
typedef struct iseq_inline_iv_cache_entry *IVC;
|
1121
1131
|
typedef union iseq_inline_storage_entry *ISE;
|
1122
1132
|
typedef struct rb_call_info *CALL_INFO;
|
1123
1133
|
typedef struct rb_call_cache *CALL_CACHE;
|
1124
|
-
|
1125
|
-
void rb_vm_change_state(void);
|
1134
|
+
typedef struct rb_call_data *CALL_DATA;
|
1126
1135
|
|
1127
1136
|
typedef VALUE CDHASH;
|
1128
1137
|
|
@@ -1485,6 +1494,12 @@ vm_block_handler_verify(MAYBE_UNUSED(VALUE block_handler))
|
|
1485
1494
|
(vm_block_handler_type(block_handler), 1));
|
1486
1495
|
}
|
1487
1496
|
|
1497
|
+
static inline int
|
1498
|
+
vm_cfp_forwarded_bh_p(const rb_control_frame_t *cfp, VALUE block_handler)
|
1499
|
+
{
|
1500
|
+
return ((VALUE) cfp->block_code) == block_handler;
|
1501
|
+
}
|
1502
|
+
|
1488
1503
|
static inline enum rb_block_type
|
1489
1504
|
vm_block_type(const struct rb_block *block)
|
1490
1505
|
{
|
@@ -1662,8 +1677,6 @@ const rb_env_t *rb_vm_env_prev_env(const rb_env_t *env);
|
|
1662
1677
|
const VALUE *rb_binding_add_dynavars(VALUE bindval, rb_binding_t *bind, int dyncount, const ID *dynvars);
|
1663
1678
|
void rb_vm_inc_const_missing_count(void);
|
1664
1679
|
void rb_vm_gvl_destroy(rb_vm_t *vm);
|
1665
|
-
VALUE rb_vm_call(rb_execution_context_t *ec, VALUE recv, VALUE id, int argc,
|
1666
|
-
const VALUE *argv, const rb_callable_method_entry_t *me);
|
1667
1680
|
VALUE rb_vm_call_kw(rb_execution_context_t *ec, VALUE recv, VALUE id, int argc,
|
1668
1681
|
const VALUE *argv, const rb_callable_method_entry_t *me, int kw_splat);
|
1669
1682
|
MJIT_STATIC void rb_vm_pop_frame(rb_execution_context_t *ec);
|
@@ -1702,7 +1715,6 @@ typedef int rb_backtrace_iter_func(void *, VALUE, int, VALUE);
|
|
1702
1715
|
rb_control_frame_t *rb_vm_get_ruby_level_next_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp);
|
1703
1716
|
rb_control_frame_t *rb_vm_get_binding_creatable_next_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp);
|
1704
1717
|
int rb_vm_get_sourceline(const rb_control_frame_t *);
|
1705
|
-
VALUE rb_name_err_mesg_new(VALUE mesg, VALUE recv, VALUE method);
|
1706
1718
|
void rb_vm_stack_to_heap(rb_execution_context_t *ec);
|
1707
1719
|
void ruby_thread_init_stack(rb_thread_t *th);
|
1708
1720
|
int rb_vm_control_frame_id_and_class(const rb_control_frame_t *cfp, ID *idp, ID *called_idp, VALUE *klassp);
|
@@ -1840,6 +1852,7 @@ void rb_threadptr_interrupt(rb_thread_t *th);
|
|
1840
1852
|
void rb_threadptr_unlock_all_locking_mutexes(rb_thread_t *th);
|
1841
1853
|
void rb_threadptr_pending_interrupt_clear(rb_thread_t *th);
|
1842
1854
|
void rb_threadptr_pending_interrupt_enque(rb_thread_t *th, VALUE v);
|
1855
|
+
VALUE rb_ec_get_errinfo(const rb_execution_context_t *ec);
|
1843
1856
|
void rb_ec_error_print(rb_execution_context_t * volatile ec, volatile VALUE errinfo);
|
1844
1857
|
void rb_execution_context_update(const rb_execution_context_t *ec);
|
1845
1858
|
void rb_execution_context_mark(const rb_execution_context_t *ec);
|
File without changes
|
File without changes
|
@@ -120,9 +120,20 @@ enum vm_regan_acttype {
|
|
120
120
|
* because inline method cache does not care about receiver.
|
121
121
|
*/
|
122
122
|
|
123
|
-
|
124
|
-
|
125
|
-
|
123
|
+
static inline void
|
124
|
+
CC_SET_FASTPATH(CALL_CACHE cc, vm_call_handler func, bool enabled)
|
125
|
+
{
|
126
|
+
if (LIKELY(enabled)) {
|
127
|
+
cc->call = func;
|
128
|
+
}
|
129
|
+
}
|
130
|
+
|
131
|
+
static inline void
|
132
|
+
CC_SET_ME(CALL_CACHE cc, const rb_callable_method_entry_t *me)
|
133
|
+
{
|
134
|
+
cc->me = me;
|
135
|
+
cc->method_serial = me ? me->def->method_serial : 0;
|
136
|
+
}
|
126
137
|
|
127
138
|
#define GET_BLOCK_HANDLER() (GET_LEP()[VM_ENV_DATA_INDEX_SPECVAL])
|
128
139
|
|
@@ -166,13 +177,14 @@ enum vm_regan_acttype {
|
|
166
177
|
#ifndef MJIT_HEADER
|
167
178
|
#define CALL_SIMPLE_METHOD() do { \
|
168
179
|
rb_snum_t x = leaf ? INSN_ATTR(width) : 0; \
|
169
|
-
rb_snum_t y = attr_width_opt_send_without_block(0
|
180
|
+
rb_snum_t y = attr_width_opt_send_without_block(0); \
|
170
181
|
rb_snum_t z = x - y; \
|
171
182
|
ADD_PC(z); \
|
172
183
|
DISPATCH_ORIGINAL_INSN(opt_send_without_block); \
|
173
184
|
} while (0)
|
174
185
|
#endif
|
175
186
|
|
187
|
+
#define PREV_CLASS_SERIAL() (ruby_vm_class_serial)
|
176
188
|
#define NEXT_CLASS_SERIAL() (++ruby_vm_class_serial)
|
177
189
|
#define GET_GLOBAL_METHOD_STATE() (ruby_vm_global_method_state)
|
178
190
|
#define INC_GLOBAL_METHOD_STATE() (++ruby_vm_global_method_state)
|