debase-ruby_core_source 3.3.5 → 3.4.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
{
|