debase-ruby_core_source 0.10.7 → 0.10.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +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)
|