debase-ruby_core_source 3.3.5 → 3.4.1
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/.gitignore +2 -1
- data/.idea/vcs.xml +28 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +14 -0
- data/Rakefile +3 -1
- data/debase-ruby_core_source.gemspec +1 -0
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/builtin.h +7 -1
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/darray.h +22 -6
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/debug_counter.h +1 -1
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/dln.h +0 -2
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/id.h +9 -0
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/insns.inc +10 -2
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/insns_info.inc +819 -312
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/array.h +1 -0
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/basic_operators.h +2 -0
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/bits.h +82 -0
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/class.h +1 -1
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/encoding.h +2 -0
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/error.h +28 -0
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/fixnum.h +1 -0
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/gc.h +24 -28
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/hash.h +1 -0
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/imemo.h +7 -1
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/io.h +4 -1
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/parse.h +16 -3
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/proc.h +1 -0
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/ractor.h +4 -0
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/sanitizers.h +60 -39
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/string.h +34 -18
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/thread.h +29 -0
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/vm.h +3 -3
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/known_errors.inc +103 -103
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/method.h +1 -0
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/optunifs.inc +1 -1
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/parse.h +5 -4
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/ast.h +2156 -453
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/defines.h +44 -7
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/diagnostic.h +24 -6
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/extension.h +2 -2
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/node.h +0 -21
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/options.h +94 -3
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/parser.h +82 -40
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/prism.h +47 -11
- data/lib/debase/ruby_core_source/ruby-3.4.0-p-1/prism/regexp.h +43 -0
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/static_literals.h +3 -2
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/util/pm_char.h +1 -2
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/util/pm_constant_pool.h +0 -8
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/util/pm_integer.h +22 -15
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/util/pm_newline_list.h +11 -0
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/util/pm_string.h +28 -12
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/version.h +3 -3
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism_compile.h +23 -12
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/ractor_core.h +9 -20
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/regint.h +0 -4
- data/lib/debase/ruby_core_source/ruby-3.4.0-p-1/revision.h +5 -0
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/rubyparser.h +171 -250
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/shape.h +2 -1
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/symbol.h +6 -1
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/thread_pthread.h +26 -25
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/version.h +1 -1
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/vm.inc +467 -207
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/vm_callinfo.h +24 -2
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/vm_core.h +62 -48
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/vm_insnhelper.h +7 -2
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/vm_sync.h +3 -3
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/vmtc.inc +10 -2
- data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/yjit.h +1 -0
- data/lib/debase/ruby_core_source/version.rb +1 -1
- data/lib/debase/ruby_core_source.rb +4 -2
- data/test/deduce_source_dir_test.rb +31 -0
- metadata +163 -150
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/regexp.h +0 -33
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/util/pm_string_list.h +0 -44
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/revision.h +0 -5
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/addr2line.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/ccan/build_assert/build_assert.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/ccan/check_type/check_type.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/ccan/container_of/container_of.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/ccan/list/list.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/ccan/str/str.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/constant.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/encindex.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/eval_intern.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/hrtime.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/id_table.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/bignum.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/cmdlineopt.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/compar.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/compile.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/compilers.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/complex.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/cont.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/dir.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/enc.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/enum.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/enumerator.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/eval.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/file.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/inits.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/load.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/loadpath.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/math.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/missing.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/numeric.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/object.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/process.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/random.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/range.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/rational.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/re.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/ruby_parser.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/serial.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/signal.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/st.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/static_assert.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/struct.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/symbol.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/time.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/transcode.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/util.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/variable.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/warnings.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/iseq.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/node.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/node_name.inc +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/optinsn.inc +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/parser_bits.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/parser_node.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/parser_st.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/parser_value.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/encoding.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/pack.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/prettyprint.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/util/pm_buffer.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/util/pm_list.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/util/pm_memchr.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/util/pm_strncasecmp.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/util/pm_strpbrk.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/probes_helper.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/regenc.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/regparse.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/rjit.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/rjit_c.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/ruby_assert.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/ruby_atomic.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/siphash.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/thread_none.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/thread_win32.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/timev.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/transcode_data.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/variable.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/vm_call_iseq_optimized.inc +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/vm_debug.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/vm_exec.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/vm_opts.h +0 -0
|
@@ -1220,52 +1220,6 @@ INSN_ENTRY(newarray)
|
|
|
1220
1220
|
END_INSN(newarray);
|
|
1221
1221
|
}
|
|
1222
1222
|
|
|
1223
|
-
/* insn newarraykwsplat(num)(...)(val) */
|
|
1224
|
-
INSN_ENTRY(newarraykwsplat)
|
|
1225
|
-
{
|
|
1226
|
-
/* ### Declare that we have just entered into an instruction. ### */
|
|
1227
|
-
START_OF_ORIGINAL_INSN(newarraykwsplat);
|
|
1228
|
-
DEBUG_ENTER_INSN("newarraykwsplat");
|
|
1229
|
-
|
|
1230
|
-
/* ### Declare and assign variables. ### */
|
|
1231
|
-
rb_num_t num = (rb_num_t)GET_OPERAND(1);
|
|
1232
|
-
# define INSN_ATTR(x) attr_ ## x ## _newarraykwsplat(num)
|
|
1233
|
-
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
1234
|
-
VALUE val;
|
|
1235
|
-
|
|
1236
|
-
/* ### Instruction preambles. ### */
|
|
1237
|
-
ADD_PC(INSN_ATTR(width));
|
|
1238
|
-
SETUP_CANARY(leaf);
|
|
1239
|
-
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1240
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, num);
|
|
1241
|
-
|
|
1242
|
-
/* ### Here we do the instruction body. ### */
|
|
1243
|
-
# define NAME_OF_CURRENT_INSN newarraykwsplat
|
|
1244
|
-
# line 466 "insns.def"
|
|
1245
|
-
{
|
|
1246
|
-
if (RHASH_EMPTY_P(*STACK_ADDR_FROM_TOP(1))) {
|
|
1247
|
-
val = rb_ary_new4(num-1, STACK_ADDR_FROM_TOP(num));
|
|
1248
|
-
}
|
|
1249
|
-
else {
|
|
1250
|
-
val = rb_ary_new4(num, STACK_ADDR_FROM_TOP(num));
|
|
1251
|
-
}
|
|
1252
|
-
}
|
|
1253
|
-
# line 1254 "vm.inc"
|
|
1254
|
-
# undef NAME_OF_CURRENT_INSN
|
|
1255
|
-
|
|
1256
|
-
/* ### Instruction trailers. ### */
|
|
1257
|
-
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1258
|
-
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1259
|
-
INC_SP(INSN_ATTR(sp_inc));
|
|
1260
|
-
TOPN(0) = val;
|
|
1261
|
-
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1262
|
-
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1263
|
-
# undef INSN_ATTR
|
|
1264
|
-
|
|
1265
|
-
/* ### Leave the instruction. ### */
|
|
1266
|
-
END_INSN(newarraykwsplat);
|
|
1267
|
-
}
|
|
1268
|
-
|
|
1269
1223
|
/* insn pushtoarraykwsplat()(ary, hash)(ary) */
|
|
1270
1224
|
INSN_ENTRY(pushtoarraykwsplat)
|
|
1271
1225
|
{
|
|
@@ -1286,13 +1240,13 @@ INSN_ENTRY(pushtoarraykwsplat)
|
|
|
1286
1240
|
|
|
1287
1241
|
/* ### Here we do the instruction body. ### */
|
|
1288
1242
|
# define NAME_OF_CURRENT_INSN pushtoarraykwsplat
|
|
1289
|
-
# line
|
|
1243
|
+
# line 463 "insns.def"
|
|
1290
1244
|
{
|
|
1291
1245
|
if (!RHASH_EMPTY_P(hash)) {
|
|
1292
1246
|
rb_ary_push(ary, hash);
|
|
1293
1247
|
}
|
|
1294
1248
|
}
|
|
1295
|
-
# line
|
|
1249
|
+
# line 1250 "vm.inc"
|
|
1296
1250
|
# undef NAME_OF_CURRENT_INSN
|
|
1297
1251
|
|
|
1298
1252
|
/* ### Instruction trailers. ### */
|
|
@@ -1329,12 +1283,12 @@ INSN_ENTRY(duparray)
|
|
|
1329
1283
|
|
|
1330
1284
|
/* ### Here we do the instruction body. ### */
|
|
1331
1285
|
# define NAME_OF_CURRENT_INSN duparray
|
|
1332
|
-
# line
|
|
1286
|
+
# line 475 "insns.def"
|
|
1333
1287
|
{
|
|
1334
1288
|
RUBY_DTRACE_CREATE_HOOK(ARRAY, RARRAY_LEN(ary));
|
|
1335
1289
|
val = rb_ary_resurrect(ary);
|
|
1336
1290
|
}
|
|
1337
|
-
# line
|
|
1291
|
+
# line 1292 "vm.inc"
|
|
1338
1292
|
# undef NAME_OF_CURRENT_INSN
|
|
1339
1293
|
|
|
1340
1294
|
/* ### Instruction trailers. ### */
|
|
@@ -1371,12 +1325,12 @@ INSN_ENTRY(duphash)
|
|
|
1371
1325
|
|
|
1372
1326
|
/* ### Here we do the instruction body. ### */
|
|
1373
1327
|
# define NAME_OF_CURRENT_INSN duphash
|
|
1374
|
-
# line
|
|
1328
|
+
# line 486 "insns.def"
|
|
1375
1329
|
{
|
|
1376
1330
|
RUBY_DTRACE_CREATE_HOOK(HASH, RHASH_SIZE(hash) << 1);
|
|
1377
1331
|
val = rb_hash_resurrect(hash);
|
|
1378
1332
|
}
|
|
1379
|
-
# line
|
|
1333
|
+
# line 1334 "vm.inc"
|
|
1380
1334
|
# undef NAME_OF_CURRENT_INSN
|
|
1381
1335
|
|
|
1382
1336
|
/* ### Instruction trailers. ### */
|
|
@@ -1415,11 +1369,11 @@ INSN_ENTRY(expandarray)
|
|
|
1415
1369
|
|
|
1416
1370
|
/* ### Here we do the instruction body. ### */
|
|
1417
1371
|
# define NAME_OF_CURRENT_INSN expandarray
|
|
1418
|
-
# line
|
|
1372
|
+
# line 508 "insns.def"
|
|
1419
1373
|
{
|
|
1420
1374
|
vm_expandarray(GET_CFP(), ary, num, (int)flag);
|
|
1421
1375
|
}
|
|
1422
|
-
# line
|
|
1376
|
+
# line 1377 "vm.inc"
|
|
1423
1377
|
# undef NAME_OF_CURRENT_INSN
|
|
1424
1378
|
|
|
1425
1379
|
/* ### Instruction trailers. ### */
|
|
@@ -1451,11 +1405,11 @@ INSN_ENTRY(concatarray)
|
|
|
1451
1405
|
|
|
1452
1406
|
/* ### Here we do the instruction body. ### */
|
|
1453
1407
|
# define NAME_OF_CURRENT_INSN concatarray
|
|
1454
|
-
# line
|
|
1408
|
+
# line 521 "insns.def"
|
|
1455
1409
|
{
|
|
1456
1410
|
ary = vm_concat_array(ary1, ary2);
|
|
1457
1411
|
}
|
|
1458
|
-
# line
|
|
1412
|
+
# line 1413 "vm.inc"
|
|
1459
1413
|
# undef NAME_OF_CURRENT_INSN
|
|
1460
1414
|
|
|
1461
1415
|
/* ### Instruction trailers. ### */
|
|
@@ -1492,11 +1446,11 @@ INSN_ENTRY(concattoarray)
|
|
|
1492
1446
|
|
|
1493
1447
|
/* ### Here we do the instruction body. ### */
|
|
1494
1448
|
# define NAME_OF_CURRENT_INSN concattoarray
|
|
1495
|
-
# line
|
|
1449
|
+
# line 535 "insns.def"
|
|
1496
1450
|
{
|
|
1497
1451
|
ary = vm_concat_to_array(ary1, ary2);
|
|
1498
1452
|
}
|
|
1499
|
-
# line
|
|
1453
|
+
# line 1454 "vm.inc"
|
|
1500
1454
|
# undef NAME_OF_CURRENT_INSN
|
|
1501
1455
|
|
|
1502
1456
|
/* ### Instruction trailers. ### */
|
|
@@ -1533,12 +1487,12 @@ INSN_ENTRY(pushtoarray)
|
|
|
1533
1487
|
|
|
1534
1488
|
/* ### Here we do the instruction body. ### */
|
|
1535
1489
|
# define NAME_OF_CURRENT_INSN pushtoarray
|
|
1536
|
-
# line
|
|
1490
|
+
# line 546 "insns.def"
|
|
1537
1491
|
{
|
|
1538
1492
|
const VALUE *objp = STACK_ADDR_FROM_TOP(num);
|
|
1539
1493
|
val = rb_ary_cat(*(objp-1), objp, num);
|
|
1540
1494
|
}
|
|
1541
|
-
# line
|
|
1495
|
+
# line 1496 "vm.inc"
|
|
1542
1496
|
# undef NAME_OF_CURRENT_INSN
|
|
1543
1497
|
|
|
1544
1498
|
/* ### Instruction trailers. ### */
|
|
@@ -1576,11 +1530,11 @@ INSN_ENTRY(splatarray)
|
|
|
1576
1530
|
|
|
1577
1531
|
/* ### Here we do the instruction body. ### */
|
|
1578
1532
|
# define NAME_OF_CURRENT_INSN splatarray
|
|
1579
|
-
# line
|
|
1533
|
+
# line 558 "insns.def"
|
|
1580
1534
|
{
|
|
1581
1535
|
obj = vm_splat_array(flag, ary);
|
|
1582
1536
|
}
|
|
1583
|
-
# line
|
|
1537
|
+
# line 1538 "vm.inc"
|
|
1584
1538
|
# undef NAME_OF_CURRENT_INSN
|
|
1585
1539
|
|
|
1586
1540
|
/* ### Instruction trailers. ### */
|
|
@@ -1617,7 +1571,7 @@ INSN_ENTRY(splatkw)
|
|
|
1617
1571
|
|
|
1618
1572
|
/* ### Here we do the instruction body. ### */
|
|
1619
1573
|
# define NAME_OF_CURRENT_INSN splatkw
|
|
1620
|
-
# line
|
|
1574
|
+
# line 569 "insns.def"
|
|
1621
1575
|
{
|
|
1622
1576
|
if (NIL_P(hash)) {
|
|
1623
1577
|
obj = Qnil;
|
|
@@ -1626,7 +1580,7 @@ INSN_ENTRY(splatkw)
|
|
|
1626
1580
|
obj = rb_to_hash_type(hash);
|
|
1627
1581
|
}
|
|
1628
1582
|
}
|
|
1629
|
-
# line
|
|
1583
|
+
# line 1584 "vm.inc"
|
|
1630
1584
|
# undef NAME_OF_CURRENT_INSN
|
|
1631
1585
|
|
|
1632
1586
|
/* ### Instruction trailers. ### */
|
|
@@ -1666,7 +1620,7 @@ INSN_ENTRY(newhash)
|
|
|
1666
1620
|
|
|
1667
1621
|
/* ### Here we do the instruction body. ### */
|
|
1668
1622
|
# define NAME_OF_CURRENT_INSN newhash
|
|
1669
|
-
# line
|
|
1623
|
+
# line 586 "insns.def"
|
|
1670
1624
|
{
|
|
1671
1625
|
RUBY_DTRACE_CREATE_HOOK(HASH, num);
|
|
1672
1626
|
|
|
@@ -1678,7 +1632,7 @@ INSN_ENTRY(newhash)
|
|
|
1678
1632
|
val = rb_hash_new();
|
|
1679
1633
|
}
|
|
1680
1634
|
}
|
|
1681
|
-
# line
|
|
1635
|
+
# line 1636 "vm.inc"
|
|
1682
1636
|
# undef NAME_OF_CURRENT_INSN
|
|
1683
1637
|
|
|
1684
1638
|
/* ### Instruction trailers. ### */
|
|
@@ -1717,11 +1671,11 @@ INSN_ENTRY(newrange)
|
|
|
1717
1671
|
|
|
1718
1672
|
/* ### Here we do the instruction body. ### */
|
|
1719
1673
|
# define NAME_OF_CURRENT_INSN newrange
|
|
1720
|
-
# line
|
|
1674
|
+
# line 606 "insns.def"
|
|
1721
1675
|
{
|
|
1722
1676
|
val = rb_range_new(low, high, (int)flag);
|
|
1723
1677
|
}
|
|
1724
|
-
# line
|
|
1678
|
+
# line 1679 "vm.inc"
|
|
1725
1679
|
# undef NAME_OF_CURRENT_INSN
|
|
1726
1680
|
|
|
1727
1681
|
/* ### Instruction trailers. ### */
|
|
@@ -1756,12 +1710,12 @@ INSN_ENTRY(pop)
|
|
|
1756
1710
|
|
|
1757
1711
|
/* ### Here we do the instruction body. ### */
|
|
1758
1712
|
# define NAME_OF_CURRENT_INSN pop
|
|
1759
|
-
# line
|
|
1713
|
+
# line 620 "insns.def"
|
|
1760
1714
|
{
|
|
1761
1715
|
(void)val;
|
|
1762
1716
|
/* none */
|
|
1763
1717
|
}
|
|
1764
|
-
# line
|
|
1718
|
+
# line 1719 "vm.inc"
|
|
1765
1719
|
# undef NAME_OF_CURRENT_INSN
|
|
1766
1720
|
|
|
1767
1721
|
/* ### Instruction trailers. ### */
|
|
@@ -1795,11 +1749,11 @@ INSN_ENTRY(dup)
|
|
|
1795
1749
|
|
|
1796
1750
|
/* ### Here we do the instruction body. ### */
|
|
1797
1751
|
# define NAME_OF_CURRENT_INSN dup
|
|
1798
|
-
# line
|
|
1752
|
+
# line 631 "insns.def"
|
|
1799
1753
|
{
|
|
1800
1754
|
val1 = val2 = val;
|
|
1801
1755
|
}
|
|
1802
|
-
# line
|
|
1756
|
+
# line 1757 "vm.inc"
|
|
1803
1757
|
# undef NAME_OF_CURRENT_INSN
|
|
1804
1758
|
|
|
1805
1759
|
/* ### Instruction trailers. ### */
|
|
@@ -1837,14 +1791,14 @@ INSN_ENTRY(dupn)
|
|
|
1837
1791
|
|
|
1838
1792
|
/* ### Here we do the instruction body. ### */
|
|
1839
1793
|
# define NAME_OF_CURRENT_INSN dupn
|
|
1840
|
-
# line
|
|
1794
|
+
# line 642 "insns.def"
|
|
1841
1795
|
{
|
|
1842
1796
|
void *dst = GET_SP();
|
|
1843
1797
|
void *src = STACK_ADDR_FROM_TOP(n);
|
|
1844
1798
|
|
|
1845
1799
|
MEMCPY(dst, src, VALUE, n);
|
|
1846
1800
|
}
|
|
1847
|
-
# line
|
|
1801
|
+
# line 1802 "vm.inc"
|
|
1848
1802
|
# undef NAME_OF_CURRENT_INSN
|
|
1849
1803
|
|
|
1850
1804
|
/* ### Instruction trailers. ### */
|
|
@@ -1907,7 +1861,7 @@ INSN_ENTRY(opt_reverse)
|
|
|
1907
1861
|
|
|
1908
1862
|
/* ### Here we do the instruction body. ### */
|
|
1909
1863
|
# define NAME_OF_CURRENT_INSN opt_reverse
|
|
1910
|
-
# line
|
|
1864
|
+
# line 666 "insns.def"
|
|
1911
1865
|
{
|
|
1912
1866
|
rb_num_t i;
|
|
1913
1867
|
VALUE *sp = STACK_ADDR_FROM_TOP(n);
|
|
@@ -1919,7 +1873,7 @@ INSN_ENTRY(opt_reverse)
|
|
|
1919
1873
|
TOPN(i) = v0;
|
|
1920
1874
|
}
|
|
1921
1875
|
}
|
|
1922
|
-
# line
|
|
1876
|
+
# line 1877 "vm.inc"
|
|
1923
1877
|
# undef NAME_OF_CURRENT_INSN
|
|
1924
1878
|
|
|
1925
1879
|
/* ### Instruction trailers. ### */
|
|
@@ -1952,11 +1906,11 @@ INSN_ENTRY(topn)
|
|
|
1952
1906
|
|
|
1953
1907
|
/* ### Here we do the instruction body. ### */
|
|
1954
1908
|
# define NAME_OF_CURRENT_INSN topn
|
|
1955
|
-
# line
|
|
1909
|
+
# line 696 "insns.def"
|
|
1956
1910
|
{
|
|
1957
1911
|
val = TOPN(n);
|
|
1958
1912
|
}
|
|
1959
|
-
# line
|
|
1913
|
+
# line 1914 "vm.inc"
|
|
1960
1914
|
# undef NAME_OF_CURRENT_INSN
|
|
1961
1915
|
|
|
1962
1916
|
/* ### Instruction trailers. ### */
|
|
@@ -1993,11 +1947,11 @@ INSN_ENTRY(setn)
|
|
|
1993
1947
|
|
|
1994
1948
|
/* ### Here we do the instruction body. ### */
|
|
1995
1949
|
# define NAME_OF_CURRENT_INSN setn
|
|
1996
|
-
# line
|
|
1950
|
+
# line 707 "insns.def"
|
|
1997
1951
|
{
|
|
1998
1952
|
TOPN(n) = val;
|
|
1999
1953
|
}
|
|
2000
|
-
# line
|
|
1954
|
+
# line 1955 "vm.inc"
|
|
2001
1955
|
# undef NAME_OF_CURRENT_INSN
|
|
2002
1956
|
|
|
2003
1957
|
/* ### Instruction trailers. ### */
|
|
@@ -2065,14 +2019,14 @@ INSN_ENTRY(defined)
|
|
|
2065
2019
|
|
|
2066
2020
|
/* ### Here we do the instruction body. ### */
|
|
2067
2021
|
# define NAME_OF_CURRENT_INSN defined
|
|
2068
|
-
# line
|
|
2022
|
+
# line 733 "insns.def"
|
|
2069
2023
|
{
|
|
2070
2024
|
val = Qnil;
|
|
2071
2025
|
if (vm_defined(ec, GET_CFP(), op_type, obj, v)) {
|
|
2072
2026
|
val = pushval;
|
|
2073
2027
|
}
|
|
2074
2028
|
}
|
|
2075
|
-
# line
|
|
2029
|
+
# line 2030 "vm.inc"
|
|
2076
2030
|
# undef NAME_OF_CURRENT_INSN
|
|
2077
2031
|
|
|
2078
2032
|
/* ### Instruction trailers. ### */
|
|
@@ -2113,14 +2067,14 @@ INSN_ENTRY(definedivar)
|
|
|
2113
2067
|
|
|
2114
2068
|
/* ### Here we do the instruction body. ### */
|
|
2115
2069
|
# define NAME_OF_CURRENT_INSN definedivar
|
|
2116
|
-
# line
|
|
2070
|
+
# line 747 "insns.def"
|
|
2117
2071
|
{
|
|
2118
2072
|
val = Qnil;
|
|
2119
2073
|
if (!UNDEF_P(vm_getivar(GET_SELF(), id, GET_ISEQ(), ic, NULL, FALSE, Qundef))) {
|
|
2120
2074
|
val = pushval;
|
|
2121
2075
|
}
|
|
2122
2076
|
}
|
|
2123
|
-
# line
|
|
2077
|
+
# line 2078 "vm.inc"
|
|
2124
2078
|
# undef NAME_OF_CURRENT_INSN
|
|
2125
2079
|
|
|
2126
2080
|
/* ### Instruction trailers. ### */
|
|
@@ -2159,11 +2113,11 @@ INSN_ENTRY(checkmatch)
|
|
|
2159
2113
|
|
|
2160
2114
|
/* ### Here we do the instruction body. ### */
|
|
2161
2115
|
# define NAME_OF_CURRENT_INSN checkmatch
|
|
2162
|
-
# line
|
|
2116
|
+
# line 767 "insns.def"
|
|
2163
2117
|
{
|
|
2164
2118
|
result = vm_check_match(ec, target, pattern, flag);
|
|
2165
2119
|
}
|
|
2166
|
-
# line
|
|
2120
|
+
# line 2121 "vm.inc"
|
|
2167
2121
|
# undef NAME_OF_CURRENT_INSN
|
|
2168
2122
|
|
|
2169
2123
|
/* ### Instruction trailers. ### */
|
|
@@ -2202,11 +2156,11 @@ INSN_ENTRY(checkkeyword)
|
|
|
2202
2156
|
|
|
2203
2157
|
/* ### Here we do the instruction body. ### */
|
|
2204
2158
|
# define NAME_OF_CURRENT_INSN checkkeyword
|
|
2205
|
-
# line
|
|
2159
|
+
# line 777 "insns.def"
|
|
2206
2160
|
{
|
|
2207
2161
|
ret = vm_check_keyword(kw_bits_index, keyword_index, GET_EP());
|
|
2208
2162
|
}
|
|
2209
|
-
# line
|
|
2163
|
+
# line 2164 "vm.inc"
|
|
2210
2164
|
# undef NAME_OF_CURRENT_INSN
|
|
2211
2165
|
|
|
2212
2166
|
/* ### Instruction trailers. ### */
|
|
@@ -2244,11 +2198,11 @@ INSN_ENTRY(checktype)
|
|
|
2244
2198
|
|
|
2245
2199
|
/* ### Here we do the instruction body. ### */
|
|
2246
2200
|
# define NAME_OF_CURRENT_INSN checktype
|
|
2247
|
-
# line
|
|
2201
|
+
# line 787 "insns.def"
|
|
2248
2202
|
{
|
|
2249
2203
|
ret = RBOOL(TYPE(val) == (int)type);
|
|
2250
2204
|
}
|
|
2251
|
-
# line
|
|
2205
|
+
# line 2206 "vm.inc"
|
|
2252
2206
|
# undef NAME_OF_CURRENT_INSN
|
|
2253
2207
|
|
|
2254
2208
|
/* ### Instruction trailers. ### */
|
|
@@ -2292,7 +2246,7 @@ INSN_ENTRY(defineclass)
|
|
|
2292
2246
|
|
|
2293
2247
|
/* ### Here we do the instruction body. ### */
|
|
2294
2248
|
# define NAME_OF_CURRENT_INSN defineclass
|
|
2295
|
-
# line
|
|
2249
|
+
# line 803 "insns.def"
|
|
2296
2250
|
{
|
|
2297
2251
|
VALUE klass = vm_find_or_create_class_by_id(id, flags, cbase, super);
|
|
2298
2252
|
|
|
@@ -2308,7 +2262,7 @@ INSN_ENTRY(defineclass)
|
|
|
2308
2262
|
RESTORE_REGS();
|
|
2309
2263
|
NEXT_INSN();
|
|
2310
2264
|
}
|
|
2311
|
-
# line
|
|
2265
|
+
# line 2266 "vm.inc"
|
|
2312
2266
|
# undef NAME_OF_CURRENT_INSN
|
|
2313
2267
|
|
|
2314
2268
|
/* ### Instruction trailers. ### */
|
|
@@ -2344,11 +2298,11 @@ INSN_ENTRY(definemethod)
|
|
|
2344
2298
|
|
|
2345
2299
|
/* ### Here we do the instruction body. ### */
|
|
2346
2300
|
# define NAME_OF_CURRENT_INSN definemethod
|
|
2347
|
-
# line
|
|
2301
|
+
# line 824 "insns.def"
|
|
2348
2302
|
{
|
|
2349
2303
|
vm_define_method(ec, Qnil, id, (VALUE)iseq, FALSE);
|
|
2350
2304
|
}
|
|
2351
|
-
# line
|
|
2305
|
+
# line 2306 "vm.inc"
|
|
2352
2306
|
# undef NAME_OF_CURRENT_INSN
|
|
2353
2307
|
|
|
2354
2308
|
/* ### Instruction trailers. ### */
|
|
@@ -2384,11 +2338,11 @@ INSN_ENTRY(definesmethod)
|
|
|
2384
2338
|
|
|
2385
2339
|
/* ### Here we do the instruction body. ### */
|
|
2386
2340
|
# define NAME_OF_CURRENT_INSN definesmethod
|
|
2387
|
-
# line
|
|
2341
|
+
# line 833 "insns.def"
|
|
2388
2342
|
{
|
|
2389
2343
|
vm_define_method(ec, obj, id, (VALUE)iseq, TRUE);
|
|
2390
2344
|
}
|
|
2391
|
-
# line
|
|
2345
|
+
# line 2346 "vm.inc"
|
|
2392
2346
|
# undef NAME_OF_CURRENT_INSN
|
|
2393
2347
|
|
|
2394
2348
|
/* ### Instruction trailers. ### */
|
|
@@ -2424,7 +2378,7 @@ INSN_ENTRY(send)
|
|
|
2424
2378
|
|
|
2425
2379
|
/* ### Here we do the instruction body. ### */
|
|
2426
2380
|
# define NAME_OF_CURRENT_INSN send
|
|
2427
|
-
# line
|
|
2381
|
+
# line 849 "insns.def"
|
|
2428
2382
|
{
|
|
2429
2383
|
VALUE bh = vm_caller_setup_arg_block(ec, GET_CFP(), cd->ci, blockiseq, false);
|
|
2430
2384
|
val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_method);
|
|
@@ -2435,7 +2389,7 @@ INSN_ENTRY(send)
|
|
|
2435
2389
|
NEXT_INSN();
|
|
2436
2390
|
}
|
|
2437
2391
|
}
|
|
2438
|
-
# line
|
|
2392
|
+
# line 2393 "vm.inc"
|
|
2439
2393
|
# undef NAME_OF_CURRENT_INSN
|
|
2440
2394
|
|
|
2441
2395
|
/* ### Instruction trailers. ### */
|
|
@@ -2448,6 +2402,62 @@ INSN_ENTRY(send)
|
|
|
2448
2402
|
END_INSN(send);
|
|
2449
2403
|
}
|
|
2450
2404
|
|
|
2405
|
+
/* insn sendforward(cd, blockiseq)(...)(val) */
|
|
2406
|
+
INSN_ENTRY(sendforward)
|
|
2407
|
+
{
|
|
2408
|
+
/* ### Declare that we have just entered into an instruction. ### */
|
|
2409
|
+
START_OF_ORIGINAL_INSN(sendforward);
|
|
2410
|
+
DEBUG_ENTER_INSN("sendforward");
|
|
2411
|
+
|
|
2412
|
+
/* ### Declare and assign variables. ### */
|
|
2413
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
2414
|
+
ISEQ blockiseq = (ISEQ)GET_OPERAND(2);
|
|
2415
|
+
# define INSN_ATTR(x) attr_ ## x ## _sendforward(cd, blockiseq)
|
|
2416
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
2417
|
+
VALUE val;
|
|
2418
|
+
|
|
2419
|
+
/* ### Instruction preambles. ### */
|
|
2420
|
+
ADD_PC(INSN_ATTR(width));
|
|
2421
|
+
POPN(INSN_ATTR(popn));
|
|
2422
|
+
SETUP_CANARY(leaf);
|
|
2423
|
+
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2424
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
2425
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, blockiseq);
|
|
2426
|
+
|
|
2427
|
+
/* ### Here we do the instruction body. ### */
|
|
2428
|
+
# define NAME_OF_CURRENT_INSN sendforward
|
|
2429
|
+
# line 868 "insns.def"
|
|
2430
|
+
{
|
|
2431
|
+
struct rb_forwarding_call_data adjusted_cd;
|
|
2432
|
+
struct rb_callinfo adjusted_ci;
|
|
2433
|
+
|
|
2434
|
+
VALUE bh = vm_caller_setup_fwd_args(GET_EC(), GET_CFP(), cd, blockiseq, 0, &adjusted_cd, &adjusted_ci);
|
|
2435
|
+
|
|
2436
|
+
val = vm_sendish(ec, GET_CFP(), &adjusted_cd.cd, bh, mexp_search_method);
|
|
2437
|
+
JIT_EXEC(ec, val);
|
|
2438
|
+
|
|
2439
|
+
if (cd->cc != adjusted_cd.cd.cc && vm_cc_markable(adjusted_cd.cd.cc)) {
|
|
2440
|
+
RB_OBJ_WRITE(GET_ISEQ(), &cd->cc, adjusted_cd.cd.cc);
|
|
2441
|
+
}
|
|
2442
|
+
|
|
2443
|
+
if (UNDEF_P(val)) {
|
|
2444
|
+
RESTORE_REGS();
|
|
2445
|
+
NEXT_INSN();
|
|
2446
|
+
}
|
|
2447
|
+
}
|
|
2448
|
+
# line 2449 "vm.inc"
|
|
2449
|
+
# undef NAME_OF_CURRENT_INSN
|
|
2450
|
+
|
|
2451
|
+
/* ### Instruction trailers. ### */
|
|
2452
|
+
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2453
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2454
|
+
PUSH(val);
|
|
2455
|
+
# undef INSN_ATTR
|
|
2456
|
+
|
|
2457
|
+
/* ### Leave the instruction. ### */
|
|
2458
|
+
END_INSN(sendforward);
|
|
2459
|
+
}
|
|
2460
|
+
|
|
2451
2461
|
/* insn opt_send_without_block(cd)(...)(val) */
|
|
2452
2462
|
INSN_ENTRY(opt_send_without_block)
|
|
2453
2463
|
{
|
|
@@ -2470,7 +2480,7 @@ INSN_ENTRY(opt_send_without_block)
|
|
|
2470
2480
|
|
|
2471
2481
|
/* ### Here we do the instruction body. ### */
|
|
2472
2482
|
# define NAME_OF_CURRENT_INSN opt_send_without_block
|
|
2473
|
-
# line
|
|
2483
|
+
# line 896 "insns.def"
|
|
2474
2484
|
{
|
|
2475
2485
|
VALUE bh = VM_BLOCK_HANDLER_NONE;
|
|
2476
2486
|
val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_method);
|
|
@@ -2481,7 +2491,7 @@ INSN_ENTRY(opt_send_without_block)
|
|
|
2481
2491
|
NEXT_INSN();
|
|
2482
2492
|
}
|
|
2483
2493
|
}
|
|
2484
|
-
# line
|
|
2494
|
+
# line 2495 "vm.inc"
|
|
2485
2495
|
# undef NAME_OF_CURRENT_INSN
|
|
2486
2496
|
|
|
2487
2497
|
/* ### Instruction trailers. ### */
|
|
@@ -2516,7 +2526,7 @@ INSN_ENTRY(objtostring)
|
|
|
2516
2526
|
|
|
2517
2527
|
/* ### Here we do the instruction body. ### */
|
|
2518
2528
|
# define NAME_OF_CURRENT_INSN objtostring
|
|
2519
|
-
# line
|
|
2529
|
+
# line 914 "insns.def"
|
|
2520
2530
|
{
|
|
2521
2531
|
val = vm_objtostring(GET_ISEQ(), recv, cd);
|
|
2522
2532
|
|
|
@@ -2524,7 +2534,7 @@ INSN_ENTRY(objtostring)
|
|
|
2524
2534
|
CALL_SIMPLE_METHOD();
|
|
2525
2535
|
}
|
|
2526
2536
|
}
|
|
2527
|
-
# line
|
|
2537
|
+
# line 2538 "vm.inc"
|
|
2528
2538
|
# undef NAME_OF_CURRENT_INSN
|
|
2529
2539
|
|
|
2530
2540
|
/* ### Instruction trailers. ### */
|
|
@@ -2540,6 +2550,104 @@ INSN_ENTRY(objtostring)
|
|
|
2540
2550
|
END_INSN(objtostring);
|
|
2541
2551
|
}
|
|
2542
2552
|
|
|
2553
|
+
/* insn opt_ary_freeze(ary, cd)()(val) */
|
|
2554
|
+
INSN_ENTRY(opt_ary_freeze)
|
|
2555
|
+
{
|
|
2556
|
+
/* ### Declare that we have just entered into an instruction. ### */
|
|
2557
|
+
START_OF_ORIGINAL_INSN(opt_ary_freeze);
|
|
2558
|
+
DEBUG_ENTER_INSN("opt_ary_freeze");
|
|
2559
|
+
|
|
2560
|
+
/* ### Declare and assign variables. ### */
|
|
2561
|
+
VALUE ary = (VALUE)GET_OPERAND(1);
|
|
2562
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(2);
|
|
2563
|
+
# define INSN_ATTR(x) attr_ ## x ## _opt_ary_freeze(ary, cd)
|
|
2564
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
2565
|
+
VALUE val;
|
|
2566
|
+
|
|
2567
|
+
/* ### Instruction preambles. ### */
|
|
2568
|
+
ADD_PC(INSN_ATTR(width));
|
|
2569
|
+
SETUP_CANARY(leaf);
|
|
2570
|
+
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2571
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, ary);
|
|
2572
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cd);
|
|
2573
|
+
|
|
2574
|
+
/* ### Here we do the instruction body. ### */
|
|
2575
|
+
# define NAME_OF_CURRENT_INSN opt_ary_freeze
|
|
2576
|
+
# line 927 "insns.def"
|
|
2577
|
+
{
|
|
2578
|
+
val = vm_opt_ary_freeze(ary, BOP_FREEZE, idFreeze);
|
|
2579
|
+
|
|
2580
|
+
if (UNDEF_P(val)) {
|
|
2581
|
+
RUBY_DTRACE_CREATE_HOOK(ARRAY, RARRAY_LEN(ary));
|
|
2582
|
+
PUSH(rb_ary_resurrect(ary));
|
|
2583
|
+
CALL_SIMPLE_METHOD();
|
|
2584
|
+
}
|
|
2585
|
+
}
|
|
2586
|
+
# line 2587 "vm.inc"
|
|
2587
|
+
# undef NAME_OF_CURRENT_INSN
|
|
2588
|
+
|
|
2589
|
+
/* ### Instruction trailers. ### */
|
|
2590
|
+
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2591
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2592
|
+
INC_SP(INSN_ATTR(sp_inc));
|
|
2593
|
+
TOPN(0) = val;
|
|
2594
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
2595
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
2596
|
+
# undef INSN_ATTR
|
|
2597
|
+
|
|
2598
|
+
/* ### Leave the instruction. ### */
|
|
2599
|
+
END_INSN(opt_ary_freeze);
|
|
2600
|
+
}
|
|
2601
|
+
|
|
2602
|
+
/* insn opt_hash_freeze(hash, cd)()(val) */
|
|
2603
|
+
INSN_ENTRY(opt_hash_freeze)
|
|
2604
|
+
{
|
|
2605
|
+
/* ### Declare that we have just entered into an instruction. ### */
|
|
2606
|
+
START_OF_ORIGINAL_INSN(opt_hash_freeze);
|
|
2607
|
+
DEBUG_ENTER_INSN("opt_hash_freeze");
|
|
2608
|
+
|
|
2609
|
+
/* ### Declare and assign variables. ### */
|
|
2610
|
+
VALUE hash = (VALUE)GET_OPERAND(1);
|
|
2611
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(2);
|
|
2612
|
+
# define INSN_ATTR(x) attr_ ## x ## _opt_hash_freeze(hash, cd)
|
|
2613
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
2614
|
+
VALUE val;
|
|
2615
|
+
|
|
2616
|
+
/* ### Instruction preambles. ### */
|
|
2617
|
+
ADD_PC(INSN_ATTR(width));
|
|
2618
|
+
SETUP_CANARY(leaf);
|
|
2619
|
+
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2620
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, hash);
|
|
2621
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cd);
|
|
2622
|
+
|
|
2623
|
+
/* ### Here we do the instruction body. ### */
|
|
2624
|
+
# define NAME_OF_CURRENT_INSN opt_hash_freeze
|
|
2625
|
+
# line 942 "insns.def"
|
|
2626
|
+
{
|
|
2627
|
+
val = vm_opt_hash_freeze(hash, BOP_FREEZE, idFreeze);
|
|
2628
|
+
|
|
2629
|
+
if (UNDEF_P(val)) {
|
|
2630
|
+
RUBY_DTRACE_CREATE_HOOK(HASH, RHASH_SIZE(hash) << 1);
|
|
2631
|
+
PUSH(rb_hash_resurrect(hash));
|
|
2632
|
+
CALL_SIMPLE_METHOD();
|
|
2633
|
+
}
|
|
2634
|
+
}
|
|
2635
|
+
# line 2636 "vm.inc"
|
|
2636
|
+
# undef NAME_OF_CURRENT_INSN
|
|
2637
|
+
|
|
2638
|
+
/* ### Instruction trailers. ### */
|
|
2639
|
+
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2640
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2641
|
+
INC_SP(INSN_ATTR(sp_inc));
|
|
2642
|
+
TOPN(0) = val;
|
|
2643
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
2644
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
2645
|
+
# undef INSN_ATTR
|
|
2646
|
+
|
|
2647
|
+
/* ### Leave the instruction. ### */
|
|
2648
|
+
END_INSN(opt_hash_freeze);
|
|
2649
|
+
}
|
|
2650
|
+
|
|
2543
2651
|
/* insn opt_str_freeze(str, cd)()(val) */
|
|
2544
2652
|
INSN_ENTRY(opt_str_freeze)
|
|
2545
2653
|
{
|
|
@@ -2563,7 +2671,7 @@ INSN_ENTRY(opt_str_freeze)
|
|
|
2563
2671
|
|
|
2564
2672
|
/* ### Here we do the instruction body. ### */
|
|
2565
2673
|
# define NAME_OF_CURRENT_INSN opt_str_freeze
|
|
2566
|
-
# line
|
|
2674
|
+
# line 957 "insns.def"
|
|
2567
2675
|
{
|
|
2568
2676
|
val = vm_opt_str_freeze(str, BOP_FREEZE, idFreeze);
|
|
2569
2677
|
|
|
@@ -2572,7 +2680,7 @@ INSN_ENTRY(opt_str_freeze)
|
|
|
2572
2680
|
CALL_SIMPLE_METHOD();
|
|
2573
2681
|
}
|
|
2574
2682
|
}
|
|
2575
|
-
# line
|
|
2683
|
+
# line 2684 "vm.inc"
|
|
2576
2684
|
# undef NAME_OF_CURRENT_INSN
|
|
2577
2685
|
|
|
2578
2686
|
/* ### Instruction trailers. ### */
|
|
@@ -2610,7 +2718,7 @@ INSN_ENTRY(opt_nil_p)
|
|
|
2610
2718
|
|
|
2611
2719
|
/* ### Here we do the instruction body. ### */
|
|
2612
2720
|
# define NAME_OF_CURRENT_INSN opt_nil_p
|
|
2613
|
-
# line
|
|
2721
|
+
# line 972 "insns.def"
|
|
2614
2722
|
{
|
|
2615
2723
|
val = vm_opt_nil_p(GET_ISEQ(), cd, recv);
|
|
2616
2724
|
|
|
@@ -2618,7 +2726,7 @@ INSN_ENTRY(opt_nil_p)
|
|
|
2618
2726
|
CALL_SIMPLE_METHOD();
|
|
2619
2727
|
}
|
|
2620
2728
|
}
|
|
2621
|
-
# line
|
|
2729
|
+
# line 2730 "vm.inc"
|
|
2622
2730
|
# undef NAME_OF_CURRENT_INSN
|
|
2623
2731
|
|
|
2624
2732
|
/* ### Instruction trailers. ### */
|
|
@@ -2657,7 +2765,7 @@ INSN_ENTRY(opt_str_uminus)
|
|
|
2657
2765
|
|
|
2658
2766
|
/* ### Here we do the instruction body. ### */
|
|
2659
2767
|
# define NAME_OF_CURRENT_INSN opt_str_uminus
|
|
2660
|
-
# line
|
|
2768
|
+
# line 985 "insns.def"
|
|
2661
2769
|
{
|
|
2662
2770
|
val = vm_opt_str_freeze(str, BOP_UMINUS, idUMinus);
|
|
2663
2771
|
|
|
@@ -2666,7 +2774,7 @@ INSN_ENTRY(opt_str_uminus)
|
|
|
2666
2774
|
CALL_SIMPLE_METHOD();
|
|
2667
2775
|
}
|
|
2668
2776
|
}
|
|
2669
|
-
# line
|
|
2777
|
+
# line 2778 "vm.inc"
|
|
2670
2778
|
# undef NAME_OF_CURRENT_INSN
|
|
2671
2779
|
|
|
2672
2780
|
/* ### Instruction trailers. ### */
|
|
@@ -2682,6 +2790,57 @@ INSN_ENTRY(opt_str_uminus)
|
|
|
2682
2790
|
END_INSN(opt_str_uminus);
|
|
2683
2791
|
}
|
|
2684
2792
|
|
|
2793
|
+
/* insn opt_duparray_send(ary, method, argc)(...)(val) */
|
|
2794
|
+
INSN_ENTRY(opt_duparray_send)
|
|
2795
|
+
{
|
|
2796
|
+
/* ### Declare that we have just entered into an instruction. ### */
|
|
2797
|
+
START_OF_ORIGINAL_INSN(opt_duparray_send);
|
|
2798
|
+
DEBUG_ENTER_INSN("opt_duparray_send");
|
|
2799
|
+
|
|
2800
|
+
/* ### Declare and assign variables. ### */
|
|
2801
|
+
VALUE ary = (VALUE)GET_OPERAND(1);
|
|
2802
|
+
ID method = (ID)GET_OPERAND(2);
|
|
2803
|
+
rb_num_t argc = (rb_num_t)GET_OPERAND(3);
|
|
2804
|
+
# define INSN_ATTR(x) attr_ ## x ## _opt_duparray_send(ary, method, argc)
|
|
2805
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
2806
|
+
VALUE val;
|
|
2807
|
+
|
|
2808
|
+
/* ### Instruction preambles. ### */
|
|
2809
|
+
ADD_PC(INSN_ATTR(width));
|
|
2810
|
+
SETUP_CANARY(leaf);
|
|
2811
|
+
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2812
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, ary);
|
|
2813
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, method);
|
|
2814
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 2, argc);
|
|
2815
|
+
|
|
2816
|
+
/* ### Here we do the instruction body. ### */
|
|
2817
|
+
# define NAME_OF_CURRENT_INSN opt_duparray_send
|
|
2818
|
+
# line 1006 "insns.def"
|
|
2819
|
+
{
|
|
2820
|
+
switch(method) {
|
|
2821
|
+
case idIncludeP:
|
|
2822
|
+
val = vm_opt_duparray_include_p(ec, ary, TOPN(0));
|
|
2823
|
+
break;
|
|
2824
|
+
default:
|
|
2825
|
+
rb_bug("unreachable");
|
|
2826
|
+
}
|
|
2827
|
+
}
|
|
2828
|
+
# line 2829 "vm.inc"
|
|
2829
|
+
# undef NAME_OF_CURRENT_INSN
|
|
2830
|
+
|
|
2831
|
+
/* ### Instruction trailers. ### */
|
|
2832
|
+
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2833
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2834
|
+
INC_SP(INSN_ATTR(sp_inc));
|
|
2835
|
+
TOPN(0) = val;
|
|
2836
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
2837
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
2838
|
+
# undef INSN_ATTR
|
|
2839
|
+
|
|
2840
|
+
/* ### Leave the instruction. ### */
|
|
2841
|
+
END_INSN(opt_duparray_send);
|
|
2842
|
+
}
|
|
2843
|
+
|
|
2685
2844
|
/* insn opt_newarray_send(num, method)(...)(val) */
|
|
2686
2845
|
INSN_ENTRY(opt_newarray_send)
|
|
2687
2846
|
{
|
|
@@ -2691,7 +2850,7 @@ INSN_ENTRY(opt_newarray_send)
|
|
|
2691
2850
|
|
|
2692
2851
|
/* ### Declare and assign variables. ### */
|
|
2693
2852
|
rb_num_t num = (rb_num_t)GET_OPERAND(1);
|
|
2694
|
-
|
|
2853
|
+
rb_num_t method = (rb_num_t)GET_OPERAND(2);
|
|
2695
2854
|
# define INSN_ATTR(x) attr_ ## x ## _opt_newarray_send(num, method)
|
|
2696
2855
|
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
2697
2856
|
VALUE val;
|
|
@@ -2705,23 +2864,32 @@ INSN_ENTRY(opt_newarray_send)
|
|
|
2705
2864
|
|
|
2706
2865
|
/* ### Here we do the instruction body. ### */
|
|
2707
2866
|
# define NAME_OF_CURRENT_INSN opt_newarray_send
|
|
2708
|
-
# line
|
|
2867
|
+
# line 1028 "insns.def"
|
|
2709
2868
|
{
|
|
2710
2869
|
switch(method) {
|
|
2711
|
-
case
|
|
2870
|
+
case VM_OPT_NEWARRAY_SEND_HASH:
|
|
2712
2871
|
val = vm_opt_newarray_hash(ec, num, STACK_ADDR_FROM_TOP(num));
|
|
2713
2872
|
break;
|
|
2714
|
-
case
|
|
2873
|
+
case VM_OPT_NEWARRAY_SEND_MIN:
|
|
2715
2874
|
val = vm_opt_newarray_min(ec, num, STACK_ADDR_FROM_TOP(num));
|
|
2716
2875
|
break;
|
|
2717
|
-
case
|
|
2876
|
+
case VM_OPT_NEWARRAY_SEND_MAX:
|
|
2718
2877
|
val = vm_opt_newarray_max(ec, num, STACK_ADDR_FROM_TOP(num));
|
|
2719
2878
|
break;
|
|
2879
|
+
case VM_OPT_NEWARRAY_SEND_INCLUDE_P:
|
|
2880
|
+
val = vm_opt_newarray_include_p(ec, (long)num-1, STACK_ADDR_FROM_TOP(num), TOPN(0));
|
|
2881
|
+
break;
|
|
2882
|
+
case VM_OPT_NEWARRAY_SEND_PACK:
|
|
2883
|
+
val = vm_opt_newarray_pack_buffer(ec, (long)num-1, STACK_ADDR_FROM_TOP(num), TOPN(0), Qundef);
|
|
2884
|
+
break;
|
|
2885
|
+
case VM_OPT_NEWARRAY_SEND_PACK_BUFFER:
|
|
2886
|
+
val = vm_opt_newarray_pack_buffer(ec, (long)num-2, STACK_ADDR_FROM_TOP(num), TOPN(1), TOPN(0));
|
|
2887
|
+
break;
|
|
2720
2888
|
default:
|
|
2721
2889
|
rb_bug("unreachable");
|
|
2722
2890
|
}
|
|
2723
2891
|
}
|
|
2724
|
-
# line
|
|
2892
|
+
# line 2893 "vm.inc"
|
|
2725
2893
|
# undef NAME_OF_CURRENT_INSN
|
|
2726
2894
|
|
|
2727
2895
|
/* ### Instruction trailers. ### */
|
|
@@ -2761,7 +2929,7 @@ INSN_ENTRY(invokesuper)
|
|
|
2761
2929
|
|
|
2762
2930
|
/* ### Here we do the instruction body. ### */
|
|
2763
2931
|
# define NAME_OF_CURRENT_INSN invokesuper
|
|
2764
|
-
# line
|
|
2932
|
+
# line 1061 "insns.def"
|
|
2765
2933
|
{
|
|
2766
2934
|
VALUE bh = vm_caller_setup_arg_block(ec, GET_CFP(), cd->ci, blockiseq, true);
|
|
2767
2935
|
val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_super);
|
|
@@ -2772,7 +2940,7 @@ INSN_ENTRY(invokesuper)
|
|
|
2772
2940
|
NEXT_INSN();
|
|
2773
2941
|
}
|
|
2774
2942
|
}
|
|
2775
|
-
# line
|
|
2943
|
+
# line 2944 "vm.inc"
|
|
2776
2944
|
# undef NAME_OF_CURRENT_INSN
|
|
2777
2945
|
|
|
2778
2946
|
/* ### Instruction trailers. ### */
|
|
@@ -2785,6 +2953,62 @@ INSN_ENTRY(invokesuper)
|
|
|
2785
2953
|
END_INSN(invokesuper);
|
|
2786
2954
|
}
|
|
2787
2955
|
|
|
2956
|
+
/* insn invokesuperforward(cd, blockiseq)(...)(val) */
|
|
2957
|
+
INSN_ENTRY(invokesuperforward)
|
|
2958
|
+
{
|
|
2959
|
+
/* ### Declare that we have just entered into an instruction. ### */
|
|
2960
|
+
START_OF_ORIGINAL_INSN(invokesuperforward);
|
|
2961
|
+
DEBUG_ENTER_INSN("invokesuperforward");
|
|
2962
|
+
|
|
2963
|
+
/* ### Declare and assign variables. ### */
|
|
2964
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
2965
|
+
ISEQ blockiseq = (ISEQ)GET_OPERAND(2);
|
|
2966
|
+
# define INSN_ATTR(x) attr_ ## x ## _invokesuperforward(cd, blockiseq)
|
|
2967
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
2968
|
+
VALUE val;
|
|
2969
|
+
|
|
2970
|
+
/* ### Instruction preambles. ### */
|
|
2971
|
+
ADD_PC(INSN_ATTR(width));
|
|
2972
|
+
POPN(INSN_ATTR(popn));
|
|
2973
|
+
SETUP_CANARY(leaf);
|
|
2974
|
+
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2975
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
2976
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, blockiseq);
|
|
2977
|
+
|
|
2978
|
+
/* ### Here we do the instruction body. ### */
|
|
2979
|
+
# define NAME_OF_CURRENT_INSN invokesuperforward
|
|
2980
|
+
# line 1080 "insns.def"
|
|
2981
|
+
{
|
|
2982
|
+
struct rb_forwarding_call_data adjusted_cd;
|
|
2983
|
+
struct rb_callinfo adjusted_ci;
|
|
2984
|
+
|
|
2985
|
+
VALUE bh = vm_caller_setup_fwd_args(GET_EC(), GET_CFP(), cd, blockiseq, 1, &adjusted_cd, &adjusted_ci);
|
|
2986
|
+
|
|
2987
|
+
val = vm_sendish(ec, GET_CFP(), &adjusted_cd.cd, bh, mexp_search_super);
|
|
2988
|
+
JIT_EXEC(ec, val);
|
|
2989
|
+
|
|
2990
|
+
if (cd->cc != adjusted_cd.cd.cc && vm_cc_markable(adjusted_cd.cd.cc)) {
|
|
2991
|
+
RB_OBJ_WRITE(GET_ISEQ(), &cd->cc, adjusted_cd.cd.cc);
|
|
2992
|
+
}
|
|
2993
|
+
|
|
2994
|
+
if (UNDEF_P(val)) {
|
|
2995
|
+
RESTORE_REGS();
|
|
2996
|
+
NEXT_INSN();
|
|
2997
|
+
}
|
|
2998
|
+
}
|
|
2999
|
+
# line 3000 "vm.inc"
|
|
3000
|
+
# undef NAME_OF_CURRENT_INSN
|
|
3001
|
+
|
|
3002
|
+
/* ### Instruction trailers. ### */
|
|
3003
|
+
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3004
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3005
|
+
PUSH(val);
|
|
3006
|
+
# undef INSN_ATTR
|
|
3007
|
+
|
|
3008
|
+
/* ### Leave the instruction. ### */
|
|
3009
|
+
END_INSN(invokesuperforward);
|
|
3010
|
+
}
|
|
3011
|
+
|
|
2788
3012
|
/* insn invokeblock(cd)(...)(val) */
|
|
2789
3013
|
INSN_ENTRY(invokeblock)
|
|
2790
3014
|
{
|
|
@@ -2807,7 +3031,7 @@ INSN_ENTRY(invokeblock)
|
|
|
2807
3031
|
|
|
2808
3032
|
/* ### Here we do the instruction body. ### */
|
|
2809
3033
|
# define NAME_OF_CURRENT_INSN invokeblock
|
|
2810
|
-
# line
|
|
3034
|
+
# line 1108 "insns.def"
|
|
2811
3035
|
{
|
|
2812
3036
|
VALUE bh = VM_BLOCK_HANDLER_NONE;
|
|
2813
3037
|
val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_invokeblock);
|
|
@@ -2818,7 +3042,7 @@ INSN_ENTRY(invokeblock)
|
|
|
2818
3042
|
NEXT_INSN();
|
|
2819
3043
|
}
|
|
2820
3044
|
}
|
|
2821
|
-
# line
|
|
3045
|
+
# line 3046 "vm.inc"
|
|
2822
3046
|
# undef NAME_OF_CURRENT_INSN
|
|
2823
3047
|
|
|
2824
3048
|
/* ### Instruction trailers. ### */
|
|
@@ -2851,7 +3075,7 @@ INSN_ENTRY(leave)
|
|
|
2851
3075
|
|
|
2852
3076
|
/* ### Here we do the instruction body. ### */
|
|
2853
3077
|
# define NAME_OF_CURRENT_INSN leave
|
|
2854
|
-
# line
|
|
3078
|
+
# line 1130 "insns.def"
|
|
2855
3079
|
{
|
|
2856
3080
|
if (OPT_CHECKED_RUN) {
|
|
2857
3081
|
const VALUE *const bp = vm_base_ptr(GET_CFP());
|
|
@@ -2872,7 +3096,7 @@ INSN_ENTRY(leave)
|
|
|
2872
3096
|
RESTORE_REGS();
|
|
2873
3097
|
}
|
|
2874
3098
|
}
|
|
2875
|
-
# line
|
|
3099
|
+
# line 3100 "vm.inc"
|
|
2876
3100
|
# undef NAME_OF_CURRENT_INSN
|
|
2877
3101
|
|
|
2878
3102
|
/* ### Instruction trailers. ### */
|
|
@@ -2907,13 +3131,13 @@ INSN_ENTRY(throw)
|
|
|
2907
3131
|
|
|
2908
3132
|
/* ### Here we do the instruction body. ### */
|
|
2909
3133
|
# define NAME_OF_CURRENT_INSN throw
|
|
2910
|
-
# line
|
|
3134
|
+
# line 1163 "insns.def"
|
|
2911
3135
|
{
|
|
2912
3136
|
val = vm_throw(ec, GET_CFP(), throw_state, throwobj);
|
|
2913
3137
|
THROW_EXCEPTION(val);
|
|
2914
3138
|
/* unreachable */
|
|
2915
3139
|
}
|
|
2916
|
-
# line
|
|
3140
|
+
# line 3141 "vm.inc"
|
|
2917
3141
|
# undef NAME_OF_CURRENT_INSN
|
|
2918
3142
|
|
|
2919
3143
|
/* ### Instruction trailers. ### */
|
|
@@ -2949,12 +3173,12 @@ INSN_ENTRY(jump)
|
|
|
2949
3173
|
|
|
2950
3174
|
/* ### Here we do the instruction body. ### */
|
|
2951
3175
|
# define NAME_OF_CURRENT_INSN jump
|
|
2952
|
-
# line
|
|
3176
|
+
# line 1181 "insns.def"
|
|
2953
3177
|
{
|
|
2954
3178
|
RUBY_VM_CHECK_INTS(ec);
|
|
2955
3179
|
JUMP(dst);
|
|
2956
3180
|
}
|
|
2957
|
-
# line
|
|
3181
|
+
# line 3182 "vm.inc"
|
|
2958
3182
|
# undef NAME_OF_CURRENT_INSN
|
|
2959
3183
|
|
|
2960
3184
|
/* ### Instruction trailers. ### */
|
|
@@ -2988,14 +3212,14 @@ INSN_ENTRY(branchif)
|
|
|
2988
3212
|
|
|
2989
3213
|
/* ### Here we do the instruction body. ### */
|
|
2990
3214
|
# define NAME_OF_CURRENT_INSN branchif
|
|
2991
|
-
# line
|
|
3215
|
+
# line 1194 "insns.def"
|
|
2992
3216
|
{
|
|
2993
3217
|
if (RTEST(val)) {
|
|
2994
3218
|
RUBY_VM_CHECK_INTS(ec);
|
|
2995
3219
|
JUMP(dst);
|
|
2996
3220
|
}
|
|
2997
3221
|
}
|
|
2998
|
-
# line
|
|
3222
|
+
# line 3223 "vm.inc"
|
|
2999
3223
|
# undef NAME_OF_CURRENT_INSN
|
|
3000
3224
|
|
|
3001
3225
|
/* ### Instruction trailers. ### */
|
|
@@ -3029,14 +3253,14 @@ INSN_ENTRY(branchunless)
|
|
|
3029
3253
|
|
|
3030
3254
|
/* ### Here we do the instruction body. ### */
|
|
3031
3255
|
# define NAME_OF_CURRENT_INSN branchunless
|
|
3032
|
-
# line
|
|
3256
|
+
# line 1209 "insns.def"
|
|
3033
3257
|
{
|
|
3034
3258
|
if (!RTEST(val)) {
|
|
3035
3259
|
RUBY_VM_CHECK_INTS(ec);
|
|
3036
3260
|
JUMP(dst);
|
|
3037
3261
|
}
|
|
3038
3262
|
}
|
|
3039
|
-
# line
|
|
3263
|
+
# line 3264 "vm.inc"
|
|
3040
3264
|
# undef NAME_OF_CURRENT_INSN
|
|
3041
3265
|
|
|
3042
3266
|
/* ### Instruction trailers. ### */
|
|
@@ -3070,14 +3294,14 @@ INSN_ENTRY(branchnil)
|
|
|
3070
3294
|
|
|
3071
3295
|
/* ### Here we do the instruction body. ### */
|
|
3072
3296
|
# define NAME_OF_CURRENT_INSN branchnil
|
|
3073
|
-
# line
|
|
3297
|
+
# line 1224 "insns.def"
|
|
3074
3298
|
{
|
|
3075
3299
|
if (NIL_P(val)) {
|
|
3076
3300
|
RUBY_VM_CHECK_INTS(ec);
|
|
3077
3301
|
JUMP(dst);
|
|
3078
3302
|
}
|
|
3079
3303
|
}
|
|
3080
|
-
# line
|
|
3304
|
+
# line 3305 "vm.inc"
|
|
3081
3305
|
# undef NAME_OF_CURRENT_INSN
|
|
3082
3306
|
|
|
3083
3307
|
/* ### Instruction trailers. ### */
|
|
@@ -3114,11 +3338,11 @@ INSN_ENTRY(once)
|
|
|
3114
3338
|
|
|
3115
3339
|
/* ### Here we do the instruction body. ### */
|
|
3116
3340
|
# define NAME_OF_CURRENT_INSN once
|
|
3117
|
-
# line
|
|
3341
|
+
# line 1241 "insns.def"
|
|
3118
3342
|
{
|
|
3119
3343
|
val = vm_once_dispatch(ec, iseq, ise);
|
|
3120
3344
|
}
|
|
3121
|
-
# line
|
|
3345
|
+
# line 3346 "vm.inc"
|
|
3122
3346
|
# undef NAME_OF_CURRENT_INSN
|
|
3123
3347
|
|
|
3124
3348
|
/* ### Instruction trailers. ### */
|
|
@@ -3154,7 +3378,7 @@ INSN_ENTRY(opt_case_dispatch)
|
|
|
3154
3378
|
|
|
3155
3379
|
/* ### Here we do the instruction body. ### */
|
|
3156
3380
|
# define NAME_OF_CURRENT_INSN opt_case_dispatch
|
|
3157
|
-
# line
|
|
3381
|
+
# line 1252 "insns.def"
|
|
3158
3382
|
{
|
|
3159
3383
|
OFFSET dst = vm_case_dispatch(hash, else_offset, key);
|
|
3160
3384
|
|
|
@@ -3162,7 +3386,7 @@ INSN_ENTRY(opt_case_dispatch)
|
|
|
3162
3386
|
JUMP(dst);
|
|
3163
3387
|
}
|
|
3164
3388
|
}
|
|
3165
|
-
# line
|
|
3389
|
+
# line 3390 "vm.inc"
|
|
3166
3390
|
# undef NAME_OF_CURRENT_INSN
|
|
3167
3391
|
|
|
3168
3392
|
/* ### Instruction trailers. ### */
|
|
@@ -3198,7 +3422,7 @@ INSN_ENTRY(opt_plus)
|
|
|
3198
3422
|
|
|
3199
3423
|
/* ### Here we do the instruction body. ### */
|
|
3200
3424
|
# define NAME_OF_CURRENT_INSN opt_plus
|
|
3201
|
-
# line
|
|
3425
|
+
# line 1268 "insns.def"
|
|
3202
3426
|
{
|
|
3203
3427
|
val = vm_opt_plus(recv, obj);
|
|
3204
3428
|
|
|
@@ -3206,7 +3430,7 @@ INSN_ENTRY(opt_plus)
|
|
|
3206
3430
|
CALL_SIMPLE_METHOD();
|
|
3207
3431
|
}
|
|
3208
3432
|
}
|
|
3209
|
-
# line
|
|
3433
|
+
# line 3434 "vm.inc"
|
|
3210
3434
|
# undef NAME_OF_CURRENT_INSN
|
|
3211
3435
|
|
|
3212
3436
|
/* ### Instruction trailers. ### */
|
|
@@ -3245,7 +3469,7 @@ INSN_ENTRY(opt_minus)
|
|
|
3245
3469
|
|
|
3246
3470
|
/* ### Here we do the instruction body. ### */
|
|
3247
3471
|
# define NAME_OF_CURRENT_INSN opt_minus
|
|
3248
|
-
# line
|
|
3472
|
+
# line 1282 "insns.def"
|
|
3249
3473
|
{
|
|
3250
3474
|
val = vm_opt_minus(recv, obj);
|
|
3251
3475
|
|
|
@@ -3253,7 +3477,7 @@ INSN_ENTRY(opt_minus)
|
|
|
3253
3477
|
CALL_SIMPLE_METHOD();
|
|
3254
3478
|
}
|
|
3255
3479
|
}
|
|
3256
|
-
# line
|
|
3480
|
+
# line 3481 "vm.inc"
|
|
3257
3481
|
# undef NAME_OF_CURRENT_INSN
|
|
3258
3482
|
|
|
3259
3483
|
/* ### Instruction trailers. ### */
|
|
@@ -3292,7 +3516,7 @@ INSN_ENTRY(opt_mult)
|
|
|
3292
3516
|
|
|
3293
3517
|
/* ### Here we do the instruction body. ### */
|
|
3294
3518
|
# define NAME_OF_CURRENT_INSN opt_mult
|
|
3295
|
-
# line
|
|
3519
|
+
# line 1296 "insns.def"
|
|
3296
3520
|
{
|
|
3297
3521
|
val = vm_opt_mult(recv, obj);
|
|
3298
3522
|
|
|
@@ -3300,7 +3524,7 @@ INSN_ENTRY(opt_mult)
|
|
|
3300
3524
|
CALL_SIMPLE_METHOD();
|
|
3301
3525
|
}
|
|
3302
3526
|
}
|
|
3303
|
-
# line
|
|
3527
|
+
# line 3528 "vm.inc"
|
|
3304
3528
|
# undef NAME_OF_CURRENT_INSN
|
|
3305
3529
|
|
|
3306
3530
|
/* ### Instruction trailers. ### */
|
|
@@ -3339,7 +3563,7 @@ INSN_ENTRY(opt_div)
|
|
|
3339
3563
|
|
|
3340
3564
|
/* ### Here we do the instruction body. ### */
|
|
3341
3565
|
# define NAME_OF_CURRENT_INSN opt_div
|
|
3342
|
-
# line
|
|
3566
|
+
# line 1313 "insns.def"
|
|
3343
3567
|
{
|
|
3344
3568
|
val = vm_opt_div(recv, obj);
|
|
3345
3569
|
|
|
@@ -3347,7 +3571,7 @@ INSN_ENTRY(opt_div)
|
|
|
3347
3571
|
CALL_SIMPLE_METHOD();
|
|
3348
3572
|
}
|
|
3349
3573
|
}
|
|
3350
|
-
# line
|
|
3574
|
+
# line 3575 "vm.inc"
|
|
3351
3575
|
# undef NAME_OF_CURRENT_INSN
|
|
3352
3576
|
|
|
3353
3577
|
/* ### Instruction trailers. ### */
|
|
@@ -3386,7 +3610,7 @@ INSN_ENTRY(opt_mod)
|
|
|
3386
3610
|
|
|
3387
3611
|
/* ### Here we do the instruction body. ### */
|
|
3388
3612
|
# define NAME_OF_CURRENT_INSN opt_mod
|
|
3389
|
-
# line
|
|
3613
|
+
# line 1329 "insns.def"
|
|
3390
3614
|
{
|
|
3391
3615
|
val = vm_opt_mod(recv, obj);
|
|
3392
3616
|
|
|
@@ -3394,7 +3618,7 @@ INSN_ENTRY(opt_mod)
|
|
|
3394
3618
|
CALL_SIMPLE_METHOD();
|
|
3395
3619
|
}
|
|
3396
3620
|
}
|
|
3397
|
-
# line
|
|
3621
|
+
# line 3622 "vm.inc"
|
|
3398
3622
|
# undef NAME_OF_CURRENT_INSN
|
|
3399
3623
|
|
|
3400
3624
|
/* ### Instruction trailers. ### */
|
|
@@ -3433,7 +3657,7 @@ INSN_ENTRY(opt_eq)
|
|
|
3433
3657
|
|
|
3434
3658
|
/* ### Here we do the instruction body. ### */
|
|
3435
3659
|
# define NAME_OF_CURRENT_INSN opt_eq
|
|
3436
|
-
# line
|
|
3660
|
+
# line 1343 "insns.def"
|
|
3437
3661
|
{
|
|
3438
3662
|
val = opt_equality(GET_ISEQ(), recv, obj, cd);
|
|
3439
3663
|
|
|
@@ -3441,7 +3665,7 @@ INSN_ENTRY(opt_eq)
|
|
|
3441
3665
|
CALL_SIMPLE_METHOD();
|
|
3442
3666
|
}
|
|
3443
3667
|
}
|
|
3444
|
-
# line
|
|
3668
|
+
# line 3669 "vm.inc"
|
|
3445
3669
|
# undef NAME_OF_CURRENT_INSN
|
|
3446
3670
|
|
|
3447
3671
|
/* ### Instruction trailers. ### */
|
|
@@ -3482,7 +3706,7 @@ INSN_ENTRY(opt_neq)
|
|
|
3482
3706
|
|
|
3483
3707
|
/* ### Here we do the instruction body. ### */
|
|
3484
3708
|
# define NAME_OF_CURRENT_INSN opt_neq
|
|
3485
|
-
# line
|
|
3709
|
+
# line 1357 "insns.def"
|
|
3486
3710
|
{
|
|
3487
3711
|
val = vm_opt_neq(GET_ISEQ(), cd, cd_eq, recv, obj);
|
|
3488
3712
|
|
|
@@ -3490,7 +3714,7 @@ INSN_ENTRY(opt_neq)
|
|
|
3490
3714
|
CALL_SIMPLE_METHOD();
|
|
3491
3715
|
}
|
|
3492
3716
|
}
|
|
3493
|
-
# line
|
|
3717
|
+
# line 3718 "vm.inc"
|
|
3494
3718
|
# undef NAME_OF_CURRENT_INSN
|
|
3495
3719
|
|
|
3496
3720
|
/* ### Instruction trailers. ### */
|
|
@@ -3529,7 +3753,7 @@ INSN_ENTRY(opt_lt)
|
|
|
3529
3753
|
|
|
3530
3754
|
/* ### Here we do the instruction body. ### */
|
|
3531
3755
|
# define NAME_OF_CURRENT_INSN opt_lt
|
|
3532
|
-
# line
|
|
3756
|
+
# line 1371 "insns.def"
|
|
3533
3757
|
{
|
|
3534
3758
|
val = vm_opt_lt(recv, obj);
|
|
3535
3759
|
|
|
@@ -3537,7 +3761,7 @@ INSN_ENTRY(opt_lt)
|
|
|
3537
3761
|
CALL_SIMPLE_METHOD();
|
|
3538
3762
|
}
|
|
3539
3763
|
}
|
|
3540
|
-
# line
|
|
3764
|
+
# line 3765 "vm.inc"
|
|
3541
3765
|
# undef NAME_OF_CURRENT_INSN
|
|
3542
3766
|
|
|
3543
3767
|
/* ### Instruction trailers. ### */
|
|
@@ -3576,7 +3800,7 @@ INSN_ENTRY(opt_le)
|
|
|
3576
3800
|
|
|
3577
3801
|
/* ### Here we do the instruction body. ### */
|
|
3578
3802
|
# define NAME_OF_CURRENT_INSN opt_le
|
|
3579
|
-
# line
|
|
3803
|
+
# line 1385 "insns.def"
|
|
3580
3804
|
{
|
|
3581
3805
|
val = vm_opt_le(recv, obj);
|
|
3582
3806
|
|
|
@@ -3584,7 +3808,7 @@ INSN_ENTRY(opt_le)
|
|
|
3584
3808
|
CALL_SIMPLE_METHOD();
|
|
3585
3809
|
}
|
|
3586
3810
|
}
|
|
3587
|
-
# line
|
|
3811
|
+
# line 3812 "vm.inc"
|
|
3588
3812
|
# undef NAME_OF_CURRENT_INSN
|
|
3589
3813
|
|
|
3590
3814
|
/* ### Instruction trailers. ### */
|
|
@@ -3623,7 +3847,7 @@ INSN_ENTRY(opt_gt)
|
|
|
3623
3847
|
|
|
3624
3848
|
/* ### Here we do the instruction body. ### */
|
|
3625
3849
|
# define NAME_OF_CURRENT_INSN opt_gt
|
|
3626
|
-
# line
|
|
3850
|
+
# line 1399 "insns.def"
|
|
3627
3851
|
{
|
|
3628
3852
|
val = vm_opt_gt(recv, obj);
|
|
3629
3853
|
|
|
@@ -3631,7 +3855,7 @@ INSN_ENTRY(opt_gt)
|
|
|
3631
3855
|
CALL_SIMPLE_METHOD();
|
|
3632
3856
|
}
|
|
3633
3857
|
}
|
|
3634
|
-
# line
|
|
3858
|
+
# line 3859 "vm.inc"
|
|
3635
3859
|
# undef NAME_OF_CURRENT_INSN
|
|
3636
3860
|
|
|
3637
3861
|
/* ### Instruction trailers. ### */
|
|
@@ -3670,7 +3894,7 @@ INSN_ENTRY(opt_ge)
|
|
|
3670
3894
|
|
|
3671
3895
|
/* ### Here we do the instruction body. ### */
|
|
3672
3896
|
# define NAME_OF_CURRENT_INSN opt_ge
|
|
3673
|
-
# line
|
|
3897
|
+
# line 1413 "insns.def"
|
|
3674
3898
|
{
|
|
3675
3899
|
val = vm_opt_ge(recv, obj);
|
|
3676
3900
|
|
|
@@ -3678,7 +3902,7 @@ INSN_ENTRY(opt_ge)
|
|
|
3678
3902
|
CALL_SIMPLE_METHOD();
|
|
3679
3903
|
}
|
|
3680
3904
|
}
|
|
3681
|
-
# line
|
|
3905
|
+
# line 3906 "vm.inc"
|
|
3682
3906
|
# undef NAME_OF_CURRENT_INSN
|
|
3683
3907
|
|
|
3684
3908
|
/* ### Instruction trailers. ### */
|
|
@@ -3717,7 +3941,7 @@ INSN_ENTRY(opt_ltlt)
|
|
|
3717
3941
|
|
|
3718
3942
|
/* ### Here we do the instruction body. ### */
|
|
3719
3943
|
# define NAME_OF_CURRENT_INSN opt_ltlt
|
|
3720
|
-
# line
|
|
3944
|
+
# line 1431 "insns.def"
|
|
3721
3945
|
{
|
|
3722
3946
|
val = vm_opt_ltlt(recv, obj);
|
|
3723
3947
|
|
|
@@ -3725,7 +3949,7 @@ INSN_ENTRY(opt_ltlt)
|
|
|
3725
3949
|
CALL_SIMPLE_METHOD();
|
|
3726
3950
|
}
|
|
3727
3951
|
}
|
|
3728
|
-
# line
|
|
3952
|
+
# line 3953 "vm.inc"
|
|
3729
3953
|
# undef NAME_OF_CURRENT_INSN
|
|
3730
3954
|
|
|
3731
3955
|
/* ### Instruction trailers. ### */
|
|
@@ -3764,7 +3988,7 @@ INSN_ENTRY(opt_and)
|
|
|
3764
3988
|
|
|
3765
3989
|
/* ### Here we do the instruction body. ### */
|
|
3766
3990
|
# define NAME_OF_CURRENT_INSN opt_and
|
|
3767
|
-
# line
|
|
3991
|
+
# line 1445 "insns.def"
|
|
3768
3992
|
{
|
|
3769
3993
|
val = vm_opt_and(recv, obj);
|
|
3770
3994
|
|
|
@@ -3772,7 +3996,7 @@ INSN_ENTRY(opt_and)
|
|
|
3772
3996
|
CALL_SIMPLE_METHOD();
|
|
3773
3997
|
}
|
|
3774
3998
|
}
|
|
3775
|
-
# line
|
|
3999
|
+
# line 4000 "vm.inc"
|
|
3776
4000
|
# undef NAME_OF_CURRENT_INSN
|
|
3777
4001
|
|
|
3778
4002
|
/* ### Instruction trailers. ### */
|
|
@@ -3811,7 +4035,7 @@ INSN_ENTRY(opt_or)
|
|
|
3811
4035
|
|
|
3812
4036
|
/* ### Here we do the instruction body. ### */
|
|
3813
4037
|
# define NAME_OF_CURRENT_INSN opt_or
|
|
3814
|
-
# line
|
|
4038
|
+
# line 1459 "insns.def"
|
|
3815
4039
|
{
|
|
3816
4040
|
val = vm_opt_or(recv, obj);
|
|
3817
4041
|
|
|
@@ -3819,7 +4043,7 @@ INSN_ENTRY(opt_or)
|
|
|
3819
4043
|
CALL_SIMPLE_METHOD();
|
|
3820
4044
|
}
|
|
3821
4045
|
}
|
|
3822
|
-
# line
|
|
4046
|
+
# line 4047 "vm.inc"
|
|
3823
4047
|
# undef NAME_OF_CURRENT_INSN
|
|
3824
4048
|
|
|
3825
4049
|
/* ### Instruction trailers. ### */
|
|
@@ -3858,7 +4082,7 @@ INSN_ENTRY(opt_aref)
|
|
|
3858
4082
|
|
|
3859
4083
|
/* ### Here we do the instruction body. ### */
|
|
3860
4084
|
# define NAME_OF_CURRENT_INSN opt_aref
|
|
3861
|
-
# line
|
|
4085
|
+
# line 1478 "insns.def"
|
|
3862
4086
|
{
|
|
3863
4087
|
val = vm_opt_aref(recv, obj);
|
|
3864
4088
|
|
|
@@ -3866,7 +4090,7 @@ INSN_ENTRY(opt_aref)
|
|
|
3866
4090
|
CALL_SIMPLE_METHOD();
|
|
3867
4091
|
}
|
|
3868
4092
|
}
|
|
3869
|
-
# line
|
|
4093
|
+
# line 4094 "vm.inc"
|
|
3870
4094
|
# undef NAME_OF_CURRENT_INSN
|
|
3871
4095
|
|
|
3872
4096
|
/* ### Instruction trailers. ### */
|
|
@@ -3906,7 +4130,7 @@ INSN_ENTRY(opt_aset)
|
|
|
3906
4130
|
|
|
3907
4131
|
/* ### Here we do the instruction body. ### */
|
|
3908
4132
|
# define NAME_OF_CURRENT_INSN opt_aset
|
|
3909
|
-
# line
|
|
4133
|
+
# line 1495 "insns.def"
|
|
3910
4134
|
{
|
|
3911
4135
|
val = vm_opt_aset(recv, obj, set);
|
|
3912
4136
|
|
|
@@ -3914,7 +4138,7 @@ INSN_ENTRY(opt_aset)
|
|
|
3914
4138
|
CALL_SIMPLE_METHOD();
|
|
3915
4139
|
}
|
|
3916
4140
|
}
|
|
3917
|
-
# line
|
|
4141
|
+
# line 4142 "vm.inc"
|
|
3918
4142
|
# undef NAME_OF_CURRENT_INSN
|
|
3919
4143
|
|
|
3920
4144
|
/* ### Instruction trailers. ### */
|
|
@@ -3954,7 +4178,7 @@ INSN_ENTRY(opt_aset_with)
|
|
|
3954
4178
|
|
|
3955
4179
|
/* ### Here we do the instruction body. ### */
|
|
3956
4180
|
# define NAME_OF_CURRENT_INSN opt_aset_with
|
|
3957
|
-
# line
|
|
4181
|
+
# line 1511 "insns.def"
|
|
3958
4182
|
{
|
|
3959
4183
|
VALUE tmp = vm_opt_aset_with(recv, key, val);
|
|
3960
4184
|
|
|
@@ -3967,7 +4191,7 @@ INSN_ENTRY(opt_aset_with)
|
|
|
3967
4191
|
CALL_SIMPLE_METHOD();
|
|
3968
4192
|
}
|
|
3969
4193
|
}
|
|
3970
|
-
# line
|
|
4194
|
+
# line 4195 "vm.inc"
|
|
3971
4195
|
# undef NAME_OF_CURRENT_INSN
|
|
3972
4196
|
|
|
3973
4197
|
/* ### Instruction trailers. ### */
|
|
@@ -4007,7 +4231,7 @@ INSN_ENTRY(opt_aref_with)
|
|
|
4007
4231
|
|
|
4008
4232
|
/* ### Here we do the instruction body. ### */
|
|
4009
4233
|
# define NAME_OF_CURRENT_INSN opt_aref_with
|
|
4010
|
-
# line
|
|
4234
|
+
# line 1532 "insns.def"
|
|
4011
4235
|
{
|
|
4012
4236
|
val = vm_opt_aref_with(recv, key);
|
|
4013
4237
|
|
|
@@ -4016,7 +4240,7 @@ INSN_ENTRY(opt_aref_with)
|
|
|
4016
4240
|
CALL_SIMPLE_METHOD();
|
|
4017
4241
|
}
|
|
4018
4242
|
}
|
|
4019
|
-
# line
|
|
4243
|
+
# line 4244 "vm.inc"
|
|
4020
4244
|
# undef NAME_OF_CURRENT_INSN
|
|
4021
4245
|
|
|
4022
4246
|
/* ### Instruction trailers. ### */
|
|
@@ -4054,7 +4278,7 @@ INSN_ENTRY(opt_length)
|
|
|
4054
4278
|
|
|
4055
4279
|
/* ### Here we do the instruction body. ### */
|
|
4056
4280
|
# define NAME_OF_CURRENT_INSN opt_length
|
|
4057
|
-
# line
|
|
4281
|
+
# line 1547 "insns.def"
|
|
4058
4282
|
{
|
|
4059
4283
|
val = vm_opt_length(recv, BOP_LENGTH);
|
|
4060
4284
|
|
|
@@ -4062,7 +4286,7 @@ INSN_ENTRY(opt_length)
|
|
|
4062
4286
|
CALL_SIMPLE_METHOD();
|
|
4063
4287
|
}
|
|
4064
4288
|
}
|
|
4065
|
-
# line
|
|
4289
|
+
# line 4290 "vm.inc"
|
|
4066
4290
|
# undef NAME_OF_CURRENT_INSN
|
|
4067
4291
|
|
|
4068
4292
|
/* ### Instruction trailers. ### */
|
|
@@ -4100,7 +4324,7 @@ INSN_ENTRY(opt_size)
|
|
|
4100
4324
|
|
|
4101
4325
|
/* ### Here we do the instruction body. ### */
|
|
4102
4326
|
# define NAME_OF_CURRENT_INSN opt_size
|
|
4103
|
-
# line
|
|
4327
|
+
# line 1561 "insns.def"
|
|
4104
4328
|
{
|
|
4105
4329
|
val = vm_opt_length(recv, BOP_SIZE);
|
|
4106
4330
|
|
|
@@ -4108,7 +4332,7 @@ INSN_ENTRY(opt_size)
|
|
|
4108
4332
|
CALL_SIMPLE_METHOD();
|
|
4109
4333
|
}
|
|
4110
4334
|
}
|
|
4111
|
-
# line
|
|
4335
|
+
# line 4336 "vm.inc"
|
|
4112
4336
|
# undef NAME_OF_CURRENT_INSN
|
|
4113
4337
|
|
|
4114
4338
|
/* ### Instruction trailers. ### */
|
|
@@ -4146,7 +4370,7 @@ INSN_ENTRY(opt_empty_p)
|
|
|
4146
4370
|
|
|
4147
4371
|
/* ### Here we do the instruction body. ### */
|
|
4148
4372
|
# define NAME_OF_CURRENT_INSN opt_empty_p
|
|
4149
|
-
# line
|
|
4373
|
+
# line 1575 "insns.def"
|
|
4150
4374
|
{
|
|
4151
4375
|
val = vm_opt_empty_p(recv);
|
|
4152
4376
|
|
|
@@ -4154,7 +4378,7 @@ INSN_ENTRY(opt_empty_p)
|
|
|
4154
4378
|
CALL_SIMPLE_METHOD();
|
|
4155
4379
|
}
|
|
4156
4380
|
}
|
|
4157
|
-
# line
|
|
4381
|
+
# line 4382 "vm.inc"
|
|
4158
4382
|
# undef NAME_OF_CURRENT_INSN
|
|
4159
4383
|
|
|
4160
4384
|
/* ### Instruction trailers. ### */
|
|
@@ -4192,7 +4416,7 @@ INSN_ENTRY(opt_succ)
|
|
|
4192
4416
|
|
|
4193
4417
|
/* ### Here we do the instruction body. ### */
|
|
4194
4418
|
# define NAME_OF_CURRENT_INSN opt_succ
|
|
4195
|
-
# line
|
|
4419
|
+
# line 1589 "insns.def"
|
|
4196
4420
|
{
|
|
4197
4421
|
val = vm_opt_succ(recv);
|
|
4198
4422
|
|
|
@@ -4200,7 +4424,7 @@ INSN_ENTRY(opt_succ)
|
|
|
4200
4424
|
CALL_SIMPLE_METHOD();
|
|
4201
4425
|
}
|
|
4202
4426
|
}
|
|
4203
|
-
# line
|
|
4427
|
+
# line 4428 "vm.inc"
|
|
4204
4428
|
# undef NAME_OF_CURRENT_INSN
|
|
4205
4429
|
|
|
4206
4430
|
/* ### Instruction trailers. ### */
|
|
@@ -4238,7 +4462,7 @@ INSN_ENTRY(opt_not)
|
|
|
4238
4462
|
|
|
4239
4463
|
/* ### Here we do the instruction body. ### */
|
|
4240
4464
|
# define NAME_OF_CURRENT_INSN opt_not
|
|
4241
|
-
# line
|
|
4465
|
+
# line 1603 "insns.def"
|
|
4242
4466
|
{
|
|
4243
4467
|
val = vm_opt_not(GET_ISEQ(), cd, recv);
|
|
4244
4468
|
|
|
@@ -4246,7 +4470,7 @@ INSN_ENTRY(opt_not)
|
|
|
4246
4470
|
CALL_SIMPLE_METHOD();
|
|
4247
4471
|
}
|
|
4248
4472
|
}
|
|
4249
|
-
# line
|
|
4473
|
+
# line 4474 "vm.inc"
|
|
4250
4474
|
# undef NAME_OF_CURRENT_INSN
|
|
4251
4475
|
|
|
4252
4476
|
/* ### Instruction trailers. ### */
|
|
@@ -4285,7 +4509,7 @@ INSN_ENTRY(opt_regexpmatch2)
|
|
|
4285
4509
|
|
|
4286
4510
|
/* ### Here we do the instruction body. ### */
|
|
4287
4511
|
# define NAME_OF_CURRENT_INSN opt_regexpmatch2
|
|
4288
|
-
# line
|
|
4512
|
+
# line 1618 "insns.def"
|
|
4289
4513
|
{
|
|
4290
4514
|
val = vm_opt_regexpmatch2(obj2, obj1);
|
|
4291
4515
|
|
|
@@ -4293,7 +4517,7 @@ INSN_ENTRY(opt_regexpmatch2)
|
|
|
4293
4517
|
CALL_SIMPLE_METHOD();
|
|
4294
4518
|
}
|
|
4295
4519
|
}
|
|
4296
|
-
# line
|
|
4520
|
+
# line 4521 "vm.inc"
|
|
4297
4521
|
# undef NAME_OF_CURRENT_INSN
|
|
4298
4522
|
|
|
4299
4523
|
/* ### Instruction trailers. ### */
|
|
@@ -4330,11 +4554,11 @@ INSN_ENTRY(invokebuiltin)
|
|
|
4330
4554
|
|
|
4331
4555
|
/* ### Here we do the instruction body. ### */
|
|
4332
4556
|
# define NAME_OF_CURRENT_INSN invokebuiltin
|
|
4333
|
-
# line
|
|
4557
|
+
# line 1634 "insns.def"
|
|
4334
4558
|
{
|
|
4335
4559
|
val = vm_invoke_builtin(ec, reg_cfp, bf, STACK_ADDR_FROM_TOP(bf->argc));
|
|
4336
4560
|
}
|
|
4337
|
-
# line
|
|
4561
|
+
# line 4562 "vm.inc"
|
|
4338
4562
|
# undef NAME_OF_CURRENT_INSN
|
|
4339
4563
|
|
|
4340
4564
|
/* ### Instruction trailers. ### */
|
|
@@ -4373,11 +4597,11 @@ INSN_ENTRY(opt_invokebuiltin_delegate)
|
|
|
4373
4597
|
|
|
4374
4598
|
/* ### Here we do the instruction body. ### */
|
|
4375
4599
|
# define NAME_OF_CURRENT_INSN opt_invokebuiltin_delegate
|
|
4376
|
-
# line
|
|
4600
|
+
# line 1645 "insns.def"
|
|
4377
4601
|
{
|
|
4378
4602
|
val = vm_invoke_builtin_delegate(ec, reg_cfp, bf, (unsigned int)index);
|
|
4379
4603
|
}
|
|
4380
|
-
# line
|
|
4604
|
+
# line 4605 "vm.inc"
|
|
4381
4605
|
# undef NAME_OF_CURRENT_INSN
|
|
4382
4606
|
|
|
4383
4607
|
/* ### Instruction trailers. ### */
|
|
@@ -4416,7 +4640,7 @@ INSN_ENTRY(opt_invokebuiltin_delegate_leave)
|
|
|
4416
4640
|
|
|
4417
4641
|
/* ### Here we do the instruction body. ### */
|
|
4418
4642
|
# define NAME_OF_CURRENT_INSN opt_invokebuiltin_delegate_leave
|
|
4419
|
-
# line
|
|
4643
|
+
# line 1656 "insns.def"
|
|
4420
4644
|
{
|
|
4421
4645
|
val = vm_invoke_builtin_delegate(ec, reg_cfp, bf, (unsigned int)index);
|
|
4422
4646
|
|
|
@@ -4434,7 +4658,7 @@ INSN_ENTRY(opt_invokebuiltin_delegate_leave)
|
|
|
4434
4658
|
RESTORE_REGS();
|
|
4435
4659
|
}
|
|
4436
4660
|
}
|
|
4437
|
-
# line
|
|
4661
|
+
# line 4662 "vm.inc"
|
|
4438
4662
|
# undef NAME_OF_CURRENT_INSN
|
|
4439
4663
|
|
|
4440
4664
|
/* ### Instruction trailers. ### */
|
|
@@ -4460,7 +4684,7 @@ INSN_ENTRY(getlocal_WC_0)
|
|
|
4460
4684
|
/* ### Declare and assign variables. ### */
|
|
4461
4685
|
#line 10 "defs/opt_operand.def"
|
|
4462
4686
|
const rb_num_t level = 0;
|
|
4463
|
-
#line
|
|
4687
|
+
#line 4688 "vm.inc"
|
|
4464
4688
|
lindex_t idx = (lindex_t)GET_OPERAND(1);
|
|
4465
4689
|
# define INSN_ATTR(x) attr_ ## x ## _getlocal_WC_0(idx)
|
|
4466
4690
|
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
@@ -4480,7 +4704,7 @@ INSN_ENTRY(getlocal_WC_0)
|
|
|
4480
4704
|
RB_DEBUG_COUNTER_INC(lvar_get);
|
|
4481
4705
|
(void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
|
|
4482
4706
|
}
|
|
4483
|
-
# line
|
|
4707
|
+
# line 4708 "vm.inc"
|
|
4484
4708
|
# undef NAME_OF_CURRENT_INSN
|
|
4485
4709
|
|
|
4486
4710
|
/* ### Instruction trailers. ### */
|
|
@@ -4506,7 +4730,7 @@ INSN_ENTRY(getlocal_WC_1)
|
|
|
4506
4730
|
/* ### Declare and assign variables. ### */
|
|
4507
4731
|
#line 11 "defs/opt_operand.def"
|
|
4508
4732
|
const rb_num_t level = 1;
|
|
4509
|
-
#line
|
|
4733
|
+
#line 4734 "vm.inc"
|
|
4510
4734
|
lindex_t idx = (lindex_t)GET_OPERAND(1);
|
|
4511
4735
|
# define INSN_ATTR(x) attr_ ## x ## _getlocal_WC_1(idx)
|
|
4512
4736
|
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
@@ -4526,7 +4750,7 @@ INSN_ENTRY(getlocal_WC_1)
|
|
|
4526
4750
|
RB_DEBUG_COUNTER_INC(lvar_get);
|
|
4527
4751
|
(void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
|
|
4528
4752
|
}
|
|
4529
|
-
# line
|
|
4753
|
+
# line 4754 "vm.inc"
|
|
4530
4754
|
# undef NAME_OF_CURRENT_INSN
|
|
4531
4755
|
|
|
4532
4756
|
/* ### Instruction trailers. ### */
|
|
@@ -4552,7 +4776,7 @@ INSN_ENTRY(setlocal_WC_0)
|
|
|
4552
4776
|
/* ### Declare and assign variables. ### */
|
|
4553
4777
|
#line 12 "defs/opt_operand.def"
|
|
4554
4778
|
const rb_num_t level = 0;
|
|
4555
|
-
#line
|
|
4779
|
+
#line 4780 "vm.inc"
|
|
4556
4780
|
lindex_t idx = (lindex_t)GET_OPERAND(1);
|
|
4557
4781
|
# define INSN_ATTR(x) attr_ ## x ## _setlocal_WC_0(idx)
|
|
4558
4782
|
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
@@ -4572,7 +4796,7 @@ INSN_ENTRY(setlocal_WC_0)
|
|
|
4572
4796
|
RB_DEBUG_COUNTER_INC(lvar_set);
|
|
4573
4797
|
(void)RB_DEBUG_COUNTER_INC_IF(lvar_set_dynamic, level > 0);
|
|
4574
4798
|
}
|
|
4575
|
-
# line
|
|
4799
|
+
# line 4800 "vm.inc"
|
|
4576
4800
|
# undef NAME_OF_CURRENT_INSN
|
|
4577
4801
|
|
|
4578
4802
|
/* ### Instruction trailers. ### */
|
|
@@ -4595,7 +4819,7 @@ INSN_ENTRY(setlocal_WC_1)
|
|
|
4595
4819
|
/* ### Declare and assign variables. ### */
|
|
4596
4820
|
#line 13 "defs/opt_operand.def"
|
|
4597
4821
|
const rb_num_t level = 1;
|
|
4598
|
-
#line
|
|
4822
|
+
#line 4823 "vm.inc"
|
|
4599
4823
|
lindex_t idx = (lindex_t)GET_OPERAND(1);
|
|
4600
4824
|
# define INSN_ATTR(x) attr_ ## x ## _setlocal_WC_1(idx)
|
|
4601
4825
|
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
@@ -4615,7 +4839,7 @@ INSN_ENTRY(setlocal_WC_1)
|
|
|
4615
4839
|
RB_DEBUG_COUNTER_INC(lvar_set);
|
|
4616
4840
|
(void)RB_DEBUG_COUNTER_INC_IF(lvar_set_dynamic, level > 0);
|
|
4617
4841
|
}
|
|
4618
|
-
# line
|
|
4842
|
+
# line 4843 "vm.inc"
|
|
4619
4843
|
# undef NAME_OF_CURRENT_INSN
|
|
4620
4844
|
|
|
4621
4845
|
/* ### Instruction trailers. ### */
|
|
@@ -4638,7 +4862,7 @@ INSN_ENTRY(putobject_INT2FIX_0_)
|
|
|
4638
4862
|
/* ### Declare and assign variables. ### */
|
|
4639
4863
|
#line 15 "defs/opt_operand.def"
|
|
4640
4864
|
const VALUE val = INT2FIX(0);
|
|
4641
|
-
#line
|
|
4865
|
+
#line 4866 "vm.inc"
|
|
4642
4866
|
# define INSN_ATTR(x) attr_ ## x ## _putobject_INT2FIX_0_()
|
|
4643
4867
|
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
4644
4868
|
|
|
@@ -4668,7 +4892,7 @@ INSN_ENTRY(putobject_INT2FIX_1_)
|
|
|
4668
4892
|
/* ### Declare and assign variables. ### */
|
|
4669
4893
|
#line 16 "defs/opt_operand.def"
|
|
4670
4894
|
const VALUE val = INT2FIX(1);
|
|
4671
|
-
#line
|
|
4895
|
+
#line 4896 "vm.inc"
|
|
4672
4896
|
# define INSN_ATTR(x) attr_ ## x ## _putobject_INT2FIX_1_()
|
|
4673
4897
|
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
4674
4898
|
|
|
@@ -4940,15 +5164,6 @@ INSN_ENTRY(trace_newarray)
|
|
|
4940
5164
|
END_INSN(trace_newarray);
|
|
4941
5165
|
}
|
|
4942
5166
|
|
|
4943
|
-
/* insn trace_newarraykwsplat(...)(...)(...) */
|
|
4944
|
-
INSN_ENTRY(trace_newarraykwsplat)
|
|
4945
|
-
{
|
|
4946
|
-
vm_trace(ec, GET_CFP());
|
|
4947
|
-
|
|
4948
|
-
DISPATCH_ORIGINAL_INSN(newarraykwsplat);
|
|
4949
|
-
END_INSN(trace_newarraykwsplat);
|
|
4950
|
-
}
|
|
4951
|
-
|
|
4952
5167
|
/* insn trace_pushtoarraykwsplat(...)(...)(...) */
|
|
4953
5168
|
INSN_ENTRY(trace_pushtoarraykwsplat)
|
|
4954
5169
|
{
|
|
@@ -5201,6 +5416,15 @@ INSN_ENTRY(trace_send)
|
|
|
5201
5416
|
END_INSN(trace_send);
|
|
5202
5417
|
}
|
|
5203
5418
|
|
|
5419
|
+
/* insn trace_sendforward(...)(...)(...) */
|
|
5420
|
+
INSN_ENTRY(trace_sendforward)
|
|
5421
|
+
{
|
|
5422
|
+
vm_trace(ec, GET_CFP());
|
|
5423
|
+
|
|
5424
|
+
DISPATCH_ORIGINAL_INSN(sendforward);
|
|
5425
|
+
END_INSN(trace_sendforward);
|
|
5426
|
+
}
|
|
5427
|
+
|
|
5204
5428
|
/* insn trace_opt_send_without_block(...)(...)(...) */
|
|
5205
5429
|
INSN_ENTRY(trace_opt_send_without_block)
|
|
5206
5430
|
{
|
|
@@ -5219,6 +5443,24 @@ INSN_ENTRY(trace_objtostring)
|
|
|
5219
5443
|
END_INSN(trace_objtostring);
|
|
5220
5444
|
}
|
|
5221
5445
|
|
|
5446
|
+
/* insn trace_opt_ary_freeze(...)(...)(...) */
|
|
5447
|
+
INSN_ENTRY(trace_opt_ary_freeze)
|
|
5448
|
+
{
|
|
5449
|
+
vm_trace(ec, GET_CFP());
|
|
5450
|
+
|
|
5451
|
+
DISPATCH_ORIGINAL_INSN(opt_ary_freeze);
|
|
5452
|
+
END_INSN(trace_opt_ary_freeze);
|
|
5453
|
+
}
|
|
5454
|
+
|
|
5455
|
+
/* insn trace_opt_hash_freeze(...)(...)(...) */
|
|
5456
|
+
INSN_ENTRY(trace_opt_hash_freeze)
|
|
5457
|
+
{
|
|
5458
|
+
vm_trace(ec, GET_CFP());
|
|
5459
|
+
|
|
5460
|
+
DISPATCH_ORIGINAL_INSN(opt_hash_freeze);
|
|
5461
|
+
END_INSN(trace_opt_hash_freeze);
|
|
5462
|
+
}
|
|
5463
|
+
|
|
5222
5464
|
/* insn trace_opt_str_freeze(...)(...)(...) */
|
|
5223
5465
|
INSN_ENTRY(trace_opt_str_freeze)
|
|
5224
5466
|
{
|
|
@@ -5246,6 +5488,15 @@ INSN_ENTRY(trace_opt_str_uminus)
|
|
|
5246
5488
|
END_INSN(trace_opt_str_uminus);
|
|
5247
5489
|
}
|
|
5248
5490
|
|
|
5491
|
+
/* insn trace_opt_duparray_send(...)(...)(...) */
|
|
5492
|
+
INSN_ENTRY(trace_opt_duparray_send)
|
|
5493
|
+
{
|
|
5494
|
+
vm_trace(ec, GET_CFP());
|
|
5495
|
+
|
|
5496
|
+
DISPATCH_ORIGINAL_INSN(opt_duparray_send);
|
|
5497
|
+
END_INSN(trace_opt_duparray_send);
|
|
5498
|
+
}
|
|
5499
|
+
|
|
5249
5500
|
/* insn trace_opt_newarray_send(...)(...)(...) */
|
|
5250
5501
|
INSN_ENTRY(trace_opt_newarray_send)
|
|
5251
5502
|
{
|
|
@@ -5264,6 +5515,15 @@ INSN_ENTRY(trace_invokesuper)
|
|
|
5264
5515
|
END_INSN(trace_invokesuper);
|
|
5265
5516
|
}
|
|
5266
5517
|
|
|
5518
|
+
/* insn trace_invokesuperforward(...)(...)(...) */
|
|
5519
|
+
INSN_ENTRY(trace_invokesuperforward)
|
|
5520
|
+
{
|
|
5521
|
+
vm_trace(ec, GET_CFP());
|
|
5522
|
+
|
|
5523
|
+
DISPATCH_ORIGINAL_INSN(invokesuperforward);
|
|
5524
|
+
END_INSN(trace_invokesuperforward);
|
|
5525
|
+
}
|
|
5526
|
+
|
|
5267
5527
|
/* insn trace_invokeblock(...)(...)(...) */
|
|
5268
5528
|
INSN_ENTRY(trace_invokeblock)
|
|
5269
5529
|
{
|