debase-ruby_core_source 3.2.1 → 3.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/addr2line.h +3 -1
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview3/darray.h +246 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/debug_counter.h +7 -10
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/eval_intern.h +3 -1
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/id.h +44 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/insns_info.inc +128 -154
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/array.h +9 -20
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview3/internal/bits.h +568 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/class.h +11 -2
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/cmdlineopt.h +5 -1
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/compile.h +0 -1
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/error.h +24 -2
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/gc.h +29 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/hash.h +19 -44
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/imemo.h +0 -1
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview3/internal/io.h +137 -0
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview3/internal/parse.h +108 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/process.h +0 -14
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/range.h +2 -2
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/re.h +1 -1
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview3/internal/ruby_parser.h +69 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/signal.h +4 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/string.h +15 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/struct.h +9 -34
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/thread.h +14 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/variable.h +17 -35
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/vm.h +9 -2
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/iseq.h +4 -4
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/method.h +8 -7
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview3/node.h +128 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/node_name.inc +4 -2
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/parse.h +19 -6
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1/internal/bits.h → ruby-3.3.0-preview3/parser_bits.h} +4 -4
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview3/parser_node.h +32 -0
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview3/parser_st.h +162 -0
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview3/parser_value.h +106 -0
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview3/prism_compile.h +18 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/ractor_core.h +10 -4
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/regint.h +8 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/regparse.h +2 -1
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview3/revision.h +5 -0
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview3/rubyparser.h +1403 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/shape.h +32 -22
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/symbol.h +2 -3
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/thread_none.h +1 -0
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/thread_pthread.h +66 -28
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/thread_win32.h +1 -6
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/variable.h +9 -2
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/version.h +7 -3
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/vm.inc +383 -497
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/vm_callinfo.h +54 -16
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/vm_core.h +92 -57
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/vm_exec.h +11 -10
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/vm_insnhelper.h +20 -23
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/vm_opts.h +0 -5
- data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/yjit.h +12 -12
- data/lib/debase/ruby_core_source/version.rb +1 -1
- metadata +120 -115
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/darray.h +0 -179
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/internal/io.h +0 -38
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/internal/parse.h +0 -25
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/node.h +0 -514
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/opt_sc.inc +0 -109
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/revision.h +0 -5
- data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/transient_heap.h +0 -65
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/builtin.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/ccan/build_assert/build_assert.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/ccan/check_type/check_type.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/ccan/container_of/container_of.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/ccan/list/list.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/ccan/str/str.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/constant.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/dln.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/encindex.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/hrtime.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/id_table.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/insns.inc +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/basic_operators.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/bignum.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/compar.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/compilers.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/complex.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/cont.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/dir.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/enc.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/encoding.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/enum.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/enumerator.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/eval.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/file.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/fixnum.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/inits.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/load.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/loadpath.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/math.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/missing.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/numeric.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/object.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/proc.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/ractor.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/random.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/rational.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/sanitizers.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/serial.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/static_assert.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/symbol.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/time.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/transcode.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/util.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal/warnings.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/internal.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/known_errors.inc +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/optinsn.inc +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/optunifs.inc +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/probes_helper.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/regenc.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/rjit.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/rjit_c.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/ruby_assert.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/ruby_atomic.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/siphash.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/timev.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/transcode_data.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/vm_call_iseq_optimized.inc +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/vm_debug.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/vm_sync.h +0 -0
- /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview3}/vmtc.inc +0 -0
|
@@ -47,16 +47,15 @@ INSN_ENTRY(nop)
|
|
|
47
47
|
|
|
48
48
|
/* ### Declare and assign variables. ### */
|
|
49
49
|
# define INSN_ATTR(x) attr_ ## x ## _nop()
|
|
50
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
50
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
51
51
|
|
|
52
52
|
/* ### Instruction preambles. ### */
|
|
53
|
-
|
|
53
|
+
ADD_PC(INSN_ATTR(width));
|
|
54
54
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
55
55
|
|
|
56
56
|
/* ### Instruction trailers. ### */
|
|
57
57
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
58
58
|
INC_SP(INSN_ATTR(sp_inc));
|
|
59
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
60
59
|
# undef INSN_ATTR
|
|
61
60
|
|
|
62
61
|
/* ### Leave the instruction. ### */
|
|
@@ -74,11 +73,11 @@ INSN_ENTRY(getlocal)
|
|
|
74
73
|
lindex_t idx = (lindex_t)GET_OPERAND(1);
|
|
75
74
|
rb_num_t level = (rb_num_t)GET_OPERAND(2);
|
|
76
75
|
# define INSN_ATTR(x) attr_ ## x ## _getlocal(idx, level)
|
|
77
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
76
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
78
77
|
VALUE val;
|
|
79
78
|
|
|
80
79
|
/* ### Instruction preambles. ### */
|
|
81
|
-
|
|
80
|
+
ADD_PC(INSN_ATTR(width));
|
|
82
81
|
SETUP_CANARY(leaf);
|
|
83
82
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
84
83
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, idx);
|
|
@@ -92,7 +91,7 @@ INSN_ENTRY(getlocal)
|
|
|
92
91
|
RB_DEBUG_COUNTER_INC(lvar_get);
|
|
93
92
|
(void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
|
|
94
93
|
}
|
|
95
|
-
# line
|
|
94
|
+
# line 95 "vm.inc"
|
|
96
95
|
# undef NAME_OF_CURRENT_INSN
|
|
97
96
|
|
|
98
97
|
/* ### Instruction trailers. ### */
|
|
@@ -102,7 +101,6 @@ INSN_ENTRY(getlocal)
|
|
|
102
101
|
TOPN(0) = val;
|
|
103
102
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
104
103
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
105
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
106
104
|
# undef INSN_ATTR
|
|
107
105
|
|
|
108
106
|
/* ### Leave the instruction. ### */
|
|
@@ -120,11 +118,11 @@ INSN_ENTRY(setlocal)
|
|
|
120
118
|
lindex_t idx = (lindex_t)GET_OPERAND(1);
|
|
121
119
|
rb_num_t level = (rb_num_t)GET_OPERAND(2);
|
|
122
120
|
# define INSN_ATTR(x) attr_ ## x ## _setlocal(idx, level)
|
|
123
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
121
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
124
122
|
VALUE val = TOPN(0);
|
|
125
123
|
|
|
126
124
|
/* ### Instruction preambles. ### */
|
|
127
|
-
|
|
125
|
+
ADD_PC(INSN_ATTR(width));
|
|
128
126
|
SETUP_CANARY(leaf);
|
|
129
127
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
130
128
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, idx);
|
|
@@ -138,14 +136,13 @@ INSN_ENTRY(setlocal)
|
|
|
138
136
|
RB_DEBUG_COUNTER_INC(lvar_set);
|
|
139
137
|
(void)RB_DEBUG_COUNTER_INC_IF(lvar_set_dynamic, level > 0);
|
|
140
138
|
}
|
|
141
|
-
# line
|
|
139
|
+
# line 140 "vm.inc"
|
|
142
140
|
# undef NAME_OF_CURRENT_INSN
|
|
143
141
|
|
|
144
142
|
/* ### Instruction trailers. ### */
|
|
145
143
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
146
144
|
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
147
145
|
INC_SP(INSN_ATTR(sp_inc));
|
|
148
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
149
146
|
# undef INSN_ATTR
|
|
150
147
|
|
|
151
148
|
/* ### Leave the instruction. ### */
|
|
@@ -163,11 +160,11 @@ INSN_ENTRY(getblockparam)
|
|
|
163
160
|
lindex_t idx = (lindex_t)GET_OPERAND(1);
|
|
164
161
|
rb_num_t level = (rb_num_t)GET_OPERAND(2);
|
|
165
162
|
# define INSN_ATTR(x) attr_ ## x ## _getblockparam(idx, level)
|
|
166
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
163
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
167
164
|
VALUE val;
|
|
168
165
|
|
|
169
166
|
/* ### Instruction preambles. ### */
|
|
170
|
-
|
|
167
|
+
ADD_PC(INSN_ATTR(width));
|
|
171
168
|
SETUP_CANARY(leaf);
|
|
172
169
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
173
170
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, idx);
|
|
@@ -191,7 +188,7 @@ INSN_ENTRY(getblockparam)
|
|
|
191
188
|
(void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
|
|
192
189
|
}
|
|
193
190
|
}
|
|
194
|
-
# line
|
|
191
|
+
# line 192 "vm.inc"
|
|
195
192
|
# undef NAME_OF_CURRENT_INSN
|
|
196
193
|
|
|
197
194
|
/* ### Instruction trailers. ### */
|
|
@@ -201,7 +198,6 @@ INSN_ENTRY(getblockparam)
|
|
|
201
198
|
TOPN(0) = val;
|
|
202
199
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
203
200
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
204
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
205
201
|
# undef INSN_ATTR
|
|
206
202
|
|
|
207
203
|
/* ### Leave the instruction. ### */
|
|
@@ -219,11 +215,11 @@ INSN_ENTRY(setblockparam)
|
|
|
219
215
|
lindex_t idx = (lindex_t)GET_OPERAND(1);
|
|
220
216
|
rb_num_t level = (rb_num_t)GET_OPERAND(2);
|
|
221
217
|
# define INSN_ATTR(x) attr_ ## x ## _setblockparam(idx, level)
|
|
222
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
218
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
223
219
|
VALUE val = TOPN(0);
|
|
224
220
|
|
|
225
221
|
/* ### Instruction preambles. ### */
|
|
226
|
-
|
|
222
|
+
ADD_PC(INSN_ATTR(width));
|
|
227
223
|
SETUP_CANARY(leaf);
|
|
228
224
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
229
225
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, idx);
|
|
@@ -242,14 +238,13 @@ INSN_ENTRY(setblockparam)
|
|
|
242
238
|
|
|
243
239
|
VM_ENV_FLAGS_SET(ep, VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM);
|
|
244
240
|
}
|
|
245
|
-
# line
|
|
241
|
+
# line 242 "vm.inc"
|
|
246
242
|
# undef NAME_OF_CURRENT_INSN
|
|
247
243
|
|
|
248
244
|
/* ### Instruction trailers. ### */
|
|
249
245
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
250
246
|
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
251
247
|
INC_SP(INSN_ATTR(sp_inc));
|
|
252
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
253
248
|
# undef INSN_ATTR
|
|
254
249
|
|
|
255
250
|
/* ### Leave the instruction. ### */
|
|
@@ -267,11 +262,11 @@ INSN_ENTRY(getblockparamproxy)
|
|
|
267
262
|
lindex_t idx = (lindex_t)GET_OPERAND(1);
|
|
268
263
|
rb_num_t level = (rb_num_t)GET_OPERAND(2);
|
|
269
264
|
# define INSN_ATTR(x) attr_ ## x ## _getblockparamproxy(idx, level)
|
|
270
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
265
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
271
266
|
VALUE val;
|
|
272
267
|
|
|
273
268
|
/* ### Instruction preambles. ### */
|
|
274
|
-
|
|
269
|
+
ADD_PC(INSN_ATTR(width));
|
|
275
270
|
SETUP_CANARY(leaf);
|
|
276
271
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
277
272
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, idx);
|
|
@@ -316,7 +311,7 @@ INSN_ENTRY(getblockparamproxy)
|
|
|
316
311
|
(void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
|
|
317
312
|
}
|
|
318
313
|
}
|
|
319
|
-
# line
|
|
314
|
+
# line 315 "vm.inc"
|
|
320
315
|
# undef NAME_OF_CURRENT_INSN
|
|
321
316
|
|
|
322
317
|
/* ### Instruction trailers. ### */
|
|
@@ -326,7 +321,6 @@ INSN_ENTRY(getblockparamproxy)
|
|
|
326
321
|
TOPN(0) = val;
|
|
327
322
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
328
323
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
329
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
330
324
|
# undef INSN_ATTR
|
|
331
325
|
|
|
332
326
|
/* ### Leave the instruction. ### */
|
|
@@ -344,11 +338,11 @@ INSN_ENTRY(getspecial)
|
|
|
344
338
|
rb_num_t key = (rb_num_t)GET_OPERAND(1);
|
|
345
339
|
rb_num_t type = (rb_num_t)GET_OPERAND(2);
|
|
346
340
|
# define INSN_ATTR(x) attr_ ## x ## _getspecial(key, type)
|
|
347
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
341
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
348
342
|
VALUE val;
|
|
349
343
|
|
|
350
344
|
/* ### Instruction preambles. ### */
|
|
351
|
-
|
|
345
|
+
ADD_PC(INSN_ATTR(width));
|
|
352
346
|
SETUP_CANARY(leaf);
|
|
353
347
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
354
348
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, key);
|
|
@@ -360,7 +354,7 @@ INSN_ENTRY(getspecial)
|
|
|
360
354
|
{
|
|
361
355
|
val = vm_getspecial(ec, GET_LEP(), key, type);
|
|
362
356
|
}
|
|
363
|
-
# line
|
|
357
|
+
# line 358 "vm.inc"
|
|
364
358
|
# undef NAME_OF_CURRENT_INSN
|
|
365
359
|
|
|
366
360
|
/* ### Instruction trailers. ### */
|
|
@@ -370,7 +364,6 @@ INSN_ENTRY(getspecial)
|
|
|
370
364
|
TOPN(0) = val;
|
|
371
365
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
372
366
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
373
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
374
367
|
# undef INSN_ATTR
|
|
375
368
|
|
|
376
369
|
/* ### Leave the instruction. ### */
|
|
@@ -387,11 +380,11 @@ INSN_ENTRY(setspecial)
|
|
|
387
380
|
/* ### Declare and assign variables. ### */
|
|
388
381
|
rb_num_t key = (rb_num_t)GET_OPERAND(1);
|
|
389
382
|
# define INSN_ATTR(x) attr_ ## x ## _setspecial(key)
|
|
390
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
383
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
391
384
|
VALUE obj = TOPN(0);
|
|
392
385
|
|
|
393
386
|
/* ### Instruction preambles. ### */
|
|
394
|
-
|
|
387
|
+
ADD_PC(INSN_ATTR(width));
|
|
395
388
|
SETUP_CANARY(leaf);
|
|
396
389
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
397
390
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, key);
|
|
@@ -402,14 +395,13 @@ INSN_ENTRY(setspecial)
|
|
|
402
395
|
{
|
|
403
396
|
lep_svar_set(ec, GET_LEP(), key, obj);
|
|
404
397
|
}
|
|
405
|
-
# line
|
|
398
|
+
# line 399 "vm.inc"
|
|
406
399
|
# undef NAME_OF_CURRENT_INSN
|
|
407
400
|
|
|
408
401
|
/* ### Instruction trailers. ### */
|
|
409
402
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
410
403
|
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
411
404
|
INC_SP(INSN_ATTR(sp_inc));
|
|
412
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
413
405
|
# undef INSN_ATTR
|
|
414
406
|
|
|
415
407
|
/* ### Leave the instruction. ### */
|
|
@@ -427,11 +419,11 @@ INSN_ENTRY(getinstancevariable)
|
|
|
427
419
|
ID id = (ID)GET_OPERAND(1);
|
|
428
420
|
IVC ic = (IVC)GET_OPERAND(2);
|
|
429
421
|
# define INSN_ATTR(x) attr_ ## x ## _getinstancevariable(id, ic)
|
|
430
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
422
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
431
423
|
VALUE val;
|
|
432
424
|
|
|
433
425
|
/* ### Instruction preambles. ### */
|
|
434
|
-
|
|
426
|
+
ADD_PC(INSN_ATTR(width));
|
|
435
427
|
SETUP_CANARY(leaf);
|
|
436
428
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
437
429
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, id);
|
|
@@ -443,7 +435,7 @@ INSN_ENTRY(getinstancevariable)
|
|
|
443
435
|
{
|
|
444
436
|
val = vm_getinstancevariable(GET_ISEQ(), GET_SELF(), id, ic);
|
|
445
437
|
}
|
|
446
|
-
# line
|
|
438
|
+
# line 439 "vm.inc"
|
|
447
439
|
# undef NAME_OF_CURRENT_INSN
|
|
448
440
|
|
|
449
441
|
/* ### Instruction trailers. ### */
|
|
@@ -453,7 +445,6 @@ INSN_ENTRY(getinstancevariable)
|
|
|
453
445
|
TOPN(0) = val;
|
|
454
446
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
455
447
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
456
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
457
448
|
# undef INSN_ATTR
|
|
458
449
|
|
|
459
450
|
/* ### Leave the instruction. ### */
|
|
@@ -471,11 +462,11 @@ INSN_ENTRY(setinstancevariable)
|
|
|
471
462
|
ID id = (ID)GET_OPERAND(1);
|
|
472
463
|
IVC ic = (IVC)GET_OPERAND(2);
|
|
473
464
|
# define INSN_ATTR(x) attr_ ## x ## _setinstancevariable(id, ic)
|
|
474
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
465
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
475
466
|
VALUE val = TOPN(0);
|
|
476
467
|
|
|
477
468
|
/* ### Instruction preambles. ### */
|
|
478
|
-
|
|
469
|
+
ADD_PC(INSN_ATTR(width));
|
|
479
470
|
SETUP_CANARY(leaf);
|
|
480
471
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
481
472
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, id);
|
|
@@ -487,14 +478,13 @@ INSN_ENTRY(setinstancevariable)
|
|
|
487
478
|
{
|
|
488
479
|
vm_setinstancevariable(GET_ISEQ(), GET_SELF(), id, val, ic);
|
|
489
480
|
}
|
|
490
|
-
# line
|
|
481
|
+
# line 482 "vm.inc"
|
|
491
482
|
# undef NAME_OF_CURRENT_INSN
|
|
492
483
|
|
|
493
484
|
/* ### Instruction trailers. ### */
|
|
494
485
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
495
486
|
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
496
487
|
INC_SP(INSN_ATTR(sp_inc));
|
|
497
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
498
488
|
# undef INSN_ATTR
|
|
499
489
|
|
|
500
490
|
/* ### Leave the instruction. ### */
|
|
@@ -512,11 +502,11 @@ INSN_ENTRY(getclassvariable)
|
|
|
512
502
|
ID id = (ID)GET_OPERAND(1);
|
|
513
503
|
ICVARC ic = (ICVARC)GET_OPERAND(2);
|
|
514
504
|
# define INSN_ATTR(x) attr_ ## x ## _getclassvariable(id, ic)
|
|
515
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
505
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
516
506
|
VALUE val;
|
|
517
507
|
|
|
518
508
|
/* ### Instruction preambles. ### */
|
|
519
|
-
|
|
509
|
+
ADD_PC(INSN_ATTR(width));
|
|
520
510
|
SETUP_CANARY(leaf);
|
|
521
511
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
522
512
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, id);
|
|
@@ -529,7 +519,7 @@ INSN_ENTRY(getclassvariable)
|
|
|
529
519
|
rb_control_frame_t *cfp = GET_CFP();
|
|
530
520
|
val = vm_getclassvariable(GET_ISEQ(), cfp, id, ic);
|
|
531
521
|
}
|
|
532
|
-
# line
|
|
522
|
+
# line 523 "vm.inc"
|
|
533
523
|
# undef NAME_OF_CURRENT_INSN
|
|
534
524
|
|
|
535
525
|
/* ### Instruction trailers. ### */
|
|
@@ -539,7 +529,6 @@ INSN_ENTRY(getclassvariable)
|
|
|
539
529
|
TOPN(0) = val;
|
|
540
530
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
541
531
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
542
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
543
532
|
# undef INSN_ATTR
|
|
544
533
|
|
|
545
534
|
/* ### Leave the instruction. ### */
|
|
@@ -557,11 +546,11 @@ INSN_ENTRY(setclassvariable)
|
|
|
557
546
|
ID id = (ID)GET_OPERAND(1);
|
|
558
547
|
ICVARC ic = (ICVARC)GET_OPERAND(2);
|
|
559
548
|
# define INSN_ATTR(x) attr_ ## x ## _setclassvariable(id, ic)
|
|
560
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
549
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
561
550
|
VALUE val = TOPN(0);
|
|
562
551
|
|
|
563
552
|
/* ### Instruction preambles. ### */
|
|
564
|
-
|
|
553
|
+
ADD_PC(INSN_ATTR(width));
|
|
565
554
|
SETUP_CANARY(leaf);
|
|
566
555
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
567
556
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, id);
|
|
@@ -574,14 +563,13 @@ INSN_ENTRY(setclassvariable)
|
|
|
574
563
|
vm_ensure_not_refinement_module(GET_SELF());
|
|
575
564
|
vm_setclassvariable(GET_ISEQ(), GET_CFP(), id, val, ic);
|
|
576
565
|
}
|
|
577
|
-
# line
|
|
566
|
+
# line 567 "vm.inc"
|
|
578
567
|
# undef NAME_OF_CURRENT_INSN
|
|
579
568
|
|
|
580
569
|
/* ### Instruction trailers. ### */
|
|
581
570
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
582
571
|
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
583
572
|
INC_SP(INSN_ATTR(sp_inc));
|
|
584
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
585
573
|
# undef INSN_ATTR
|
|
586
574
|
|
|
587
575
|
/* ### Leave the instruction. ### */
|
|
@@ -598,11 +586,11 @@ INSN_ENTRY(opt_getconstant_path)
|
|
|
598
586
|
/* ### Declare and assign variables. ### */
|
|
599
587
|
IC ic = (IC)GET_OPERAND(1);
|
|
600
588
|
# define INSN_ATTR(x) attr_ ## x ## _opt_getconstant_path(ic)
|
|
601
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
589
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
602
590
|
VALUE val;
|
|
603
591
|
|
|
604
592
|
/* ### Instruction preambles. ### */
|
|
605
|
-
|
|
593
|
+
ADD_PC(INSN_ATTR(width));
|
|
606
594
|
SETUP_CANARY(leaf);
|
|
607
595
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
608
596
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, ic);
|
|
@@ -611,22 +599,9 @@ INSN_ENTRY(opt_getconstant_path)
|
|
|
611
599
|
# define NAME_OF_CURRENT_INSN opt_getconstant_path
|
|
612
600
|
# line 262 "insns.def"
|
|
613
601
|
{
|
|
614
|
-
|
|
615
|
-
struct iseq_inline_constant_cache_entry *ice = ic->entry;
|
|
616
|
-
if (ice && vm_ic_hit_p(ice, GET_EP())) {
|
|
617
|
-
val = ice->value;
|
|
618
|
-
|
|
619
|
-
VM_ASSERT(val == vm_get_ev_const_chain(ec, segments));
|
|
620
|
-
} else {
|
|
621
|
-
ruby_vm_constant_cache_misses++;
|
|
622
|
-
val = vm_get_ev_const_chain(ec, segments);
|
|
623
|
-
vm_ic_track_const_chain(GET_CFP(), ic, segments);
|
|
624
|
-
// Because leaf=false, we need to undo the PC increment to get the address to this instruction
|
|
625
|
-
// INSN_ATTR(width) == 2
|
|
626
|
-
vm_ic_update(GET_ISEQ(), ic, val, GET_EP(), GET_PC() - 2);
|
|
627
|
-
}
|
|
602
|
+
val = rb_vm_opt_getconstant_path(ec, GET_CFP(), ic);
|
|
628
603
|
}
|
|
629
|
-
# line
|
|
604
|
+
# line 605 "vm.inc"
|
|
630
605
|
# undef NAME_OF_CURRENT_INSN
|
|
631
606
|
|
|
632
607
|
/* ### Instruction trailers. ### */
|
|
@@ -636,7 +611,6 @@ INSN_ENTRY(opt_getconstant_path)
|
|
|
636
611
|
TOPN(0) = val;
|
|
637
612
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
638
613
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
639
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
640
614
|
# undef INSN_ATTR
|
|
641
615
|
|
|
642
616
|
/* ### Leave the instruction. ### */
|
|
@@ -653,24 +627,24 @@ INSN_ENTRY(getconstant)
|
|
|
653
627
|
/* ### Declare and assign variables. ### */
|
|
654
628
|
ID id = (ID)GET_OPERAND(1);
|
|
655
629
|
# define INSN_ATTR(x) attr_ ## x ## _getconstant(id)
|
|
656
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
630
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
657
631
|
VALUE klass = TOPN(1);
|
|
658
632
|
VALUE allow_nil = TOPN(0);
|
|
659
633
|
VALUE val;
|
|
660
634
|
|
|
661
635
|
/* ### Instruction preambles. ### */
|
|
662
|
-
|
|
636
|
+
ADD_PC(INSN_ATTR(width));
|
|
663
637
|
SETUP_CANARY(leaf);
|
|
664
638
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
665
639
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, id);
|
|
666
640
|
|
|
667
641
|
/* ### Here we do the instruction body. ### */
|
|
668
642
|
# define NAME_OF_CURRENT_INSN getconstant
|
|
669
|
-
# line
|
|
643
|
+
# line 277 "insns.def"
|
|
670
644
|
{
|
|
671
645
|
val = vm_get_ev_const(ec, klass, id, allow_nil == Qtrue, 0);
|
|
672
646
|
}
|
|
673
|
-
# line
|
|
647
|
+
# line 648 "vm.inc"
|
|
674
648
|
# undef NAME_OF_CURRENT_INSN
|
|
675
649
|
|
|
676
650
|
/* ### Instruction trailers. ### */
|
|
@@ -680,7 +654,6 @@ INSN_ENTRY(getconstant)
|
|
|
680
654
|
TOPN(0) = val;
|
|
681
655
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
682
656
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
683
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
684
657
|
# undef INSN_ATTR
|
|
685
658
|
|
|
686
659
|
/* ### Leave the instruction. ### */
|
|
@@ -697,32 +670,31 @@ INSN_ENTRY(setconstant)
|
|
|
697
670
|
/* ### Declare and assign variables. ### */
|
|
698
671
|
ID id = (ID)GET_OPERAND(1);
|
|
699
672
|
# define INSN_ATTR(x) attr_ ## x ## _setconstant(id)
|
|
700
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
673
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
701
674
|
VALUE val = TOPN(1);
|
|
702
675
|
VALUE cbase = TOPN(0);
|
|
703
676
|
|
|
704
677
|
/* ### Instruction preambles. ### */
|
|
705
|
-
|
|
678
|
+
ADD_PC(INSN_ATTR(width));
|
|
706
679
|
SETUP_CANARY(leaf);
|
|
707
680
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
708
681
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, id);
|
|
709
682
|
|
|
710
683
|
/* ### Here we do the instruction body. ### */
|
|
711
684
|
# define NAME_OF_CURRENT_INSN setconstant
|
|
712
|
-
# line
|
|
685
|
+
# line 293 "insns.def"
|
|
713
686
|
{
|
|
714
687
|
vm_check_if_namespace(cbase);
|
|
715
688
|
vm_ensure_not_refinement_module(GET_SELF());
|
|
716
689
|
rb_const_set(cbase, id, val);
|
|
717
690
|
}
|
|
718
|
-
# line
|
|
691
|
+
# line 692 "vm.inc"
|
|
719
692
|
# undef NAME_OF_CURRENT_INSN
|
|
720
693
|
|
|
721
694
|
/* ### Instruction trailers. ### */
|
|
722
695
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
723
696
|
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
724
697
|
INC_SP(INSN_ATTR(sp_inc));
|
|
725
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
726
698
|
# undef INSN_ATTR
|
|
727
699
|
|
|
728
700
|
/* ### Leave the instruction. ### */
|
|
@@ -739,22 +711,22 @@ INSN_ENTRY(getglobal)
|
|
|
739
711
|
/* ### Declare and assign variables. ### */
|
|
740
712
|
ID gid = (ID)GET_OPERAND(1);
|
|
741
713
|
# define INSN_ATTR(x) attr_ ## x ## _getglobal(gid)
|
|
742
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
714
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
743
715
|
VALUE val;
|
|
744
716
|
|
|
745
717
|
/* ### Instruction preambles. ### */
|
|
746
|
-
|
|
718
|
+
ADD_PC(INSN_ATTR(width));
|
|
747
719
|
SETUP_CANARY(leaf);
|
|
748
720
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
749
721
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, gid);
|
|
750
722
|
|
|
751
723
|
/* ### Here we do the instruction body. ### */
|
|
752
724
|
# define NAME_OF_CURRENT_INSN getglobal
|
|
753
|
-
# line
|
|
725
|
+
# line 306 "insns.def"
|
|
754
726
|
{
|
|
755
727
|
val = rb_gvar_get(gid);
|
|
756
728
|
}
|
|
757
|
-
# line
|
|
729
|
+
# line 730 "vm.inc"
|
|
758
730
|
# undef NAME_OF_CURRENT_INSN
|
|
759
731
|
|
|
760
732
|
/* ### Instruction trailers. ### */
|
|
@@ -764,7 +736,6 @@ INSN_ENTRY(getglobal)
|
|
|
764
736
|
TOPN(0) = val;
|
|
765
737
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
766
738
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
767
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
768
739
|
# undef INSN_ATTR
|
|
769
740
|
|
|
770
741
|
/* ### Leave the instruction. ### */
|
|
@@ -781,29 +752,28 @@ INSN_ENTRY(setglobal)
|
|
|
781
752
|
/* ### Declare and assign variables. ### */
|
|
782
753
|
ID gid = (ID)GET_OPERAND(1);
|
|
783
754
|
# define INSN_ATTR(x) attr_ ## x ## _setglobal(gid)
|
|
784
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
755
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
785
756
|
VALUE val = TOPN(0);
|
|
786
757
|
|
|
787
758
|
/* ### Instruction preambles. ### */
|
|
788
|
-
|
|
759
|
+
ADD_PC(INSN_ATTR(width));
|
|
789
760
|
SETUP_CANARY(leaf);
|
|
790
761
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
791
762
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, gid);
|
|
792
763
|
|
|
793
764
|
/* ### Here we do the instruction body. ### */
|
|
794
765
|
# define NAME_OF_CURRENT_INSN setglobal
|
|
795
|
-
# line
|
|
766
|
+
# line 317 "insns.def"
|
|
796
767
|
{
|
|
797
768
|
rb_gvar_set(gid, val);
|
|
798
769
|
}
|
|
799
|
-
# line
|
|
770
|
+
# line 771 "vm.inc"
|
|
800
771
|
# undef NAME_OF_CURRENT_INSN
|
|
801
772
|
|
|
802
773
|
/* ### Instruction trailers. ### */
|
|
803
774
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
804
775
|
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
805
776
|
INC_SP(INSN_ATTR(sp_inc));
|
|
806
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
807
777
|
# undef INSN_ATTR
|
|
808
778
|
|
|
809
779
|
/* ### Leave the instruction. ### */
|
|
@@ -819,21 +789,21 @@ INSN_ENTRY(putnil)
|
|
|
819
789
|
|
|
820
790
|
/* ### Declare and assign variables. ### */
|
|
821
791
|
# define INSN_ATTR(x) attr_ ## x ## _putnil()
|
|
822
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
792
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
823
793
|
VALUE val;
|
|
824
794
|
|
|
825
795
|
/* ### Instruction preambles. ### */
|
|
826
|
-
|
|
796
|
+
ADD_PC(INSN_ATTR(width));
|
|
827
797
|
SETUP_CANARY(leaf);
|
|
828
798
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
829
799
|
|
|
830
800
|
/* ### Here we do the instruction body. ### */
|
|
831
801
|
# define NAME_OF_CURRENT_INSN putnil
|
|
832
|
-
# line
|
|
802
|
+
# line 331 "insns.def"
|
|
833
803
|
{
|
|
834
804
|
val = Qnil;
|
|
835
805
|
}
|
|
836
|
-
# line
|
|
806
|
+
# line 807 "vm.inc"
|
|
837
807
|
# undef NAME_OF_CURRENT_INSN
|
|
838
808
|
|
|
839
809
|
/* ### Instruction trailers. ### */
|
|
@@ -843,7 +813,6 @@ INSN_ENTRY(putnil)
|
|
|
843
813
|
TOPN(0) = val;
|
|
844
814
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
845
815
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
846
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
847
816
|
# undef INSN_ATTR
|
|
848
817
|
|
|
849
818
|
/* ### Leave the instruction. ### */
|
|
@@ -859,21 +828,21 @@ INSN_ENTRY(putself)
|
|
|
859
828
|
|
|
860
829
|
/* ### Declare and assign variables. ### */
|
|
861
830
|
# define INSN_ATTR(x) attr_ ## x ## _putself()
|
|
862
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
831
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
863
832
|
VALUE val;
|
|
864
833
|
|
|
865
834
|
/* ### Instruction preambles. ### */
|
|
866
|
-
|
|
835
|
+
ADD_PC(INSN_ATTR(width));
|
|
867
836
|
SETUP_CANARY(leaf);
|
|
868
837
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
869
838
|
|
|
870
839
|
/* ### Here we do the instruction body. ### */
|
|
871
840
|
# define NAME_OF_CURRENT_INSN putself
|
|
872
|
-
# line
|
|
841
|
+
# line 341 "insns.def"
|
|
873
842
|
{
|
|
874
843
|
val = GET_SELF();
|
|
875
844
|
}
|
|
876
|
-
# line
|
|
845
|
+
# line 846 "vm.inc"
|
|
877
846
|
# undef NAME_OF_CURRENT_INSN
|
|
878
847
|
|
|
879
848
|
/* ### Instruction trailers. ### */
|
|
@@ -883,7 +852,6 @@ INSN_ENTRY(putself)
|
|
|
883
852
|
TOPN(0) = val;
|
|
884
853
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
885
854
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
886
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
887
855
|
# undef INSN_ATTR
|
|
888
856
|
|
|
889
857
|
/* ### Leave the instruction. ### */
|
|
@@ -900,10 +868,10 @@ INSN_ENTRY(putobject)
|
|
|
900
868
|
/* ### Declare and assign variables. ### */
|
|
901
869
|
VALUE val = (VALUE)GET_OPERAND(1);
|
|
902
870
|
# define INSN_ATTR(x) attr_ ## x ## _putobject(val)
|
|
903
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
871
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
904
872
|
|
|
905
873
|
/* ### Instruction preambles. ### */
|
|
906
|
-
|
|
874
|
+
ADD_PC(INSN_ATTR(width));
|
|
907
875
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
908
876
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, val);
|
|
909
877
|
|
|
@@ -913,7 +881,6 @@ INSN_ENTRY(putobject)
|
|
|
913
881
|
TOPN(0) = val;
|
|
914
882
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
915
883
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
916
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
917
884
|
# undef INSN_ATTR
|
|
918
885
|
|
|
919
886
|
/* ### Leave the instruction. ### */
|
|
@@ -930,25 +897,25 @@ INSN_ENTRY(putspecialobject)
|
|
|
930
897
|
/* ### Declare and assign variables. ### */
|
|
931
898
|
rb_num_t value_type = (rb_num_t)GET_OPERAND(1);
|
|
932
899
|
# define INSN_ATTR(x) attr_ ## x ## _putspecialobject(value_type)
|
|
933
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
900
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
934
901
|
VALUE val;
|
|
935
902
|
|
|
936
903
|
/* ### Instruction preambles. ### */
|
|
937
|
-
|
|
904
|
+
ADD_PC(INSN_ATTR(width));
|
|
938
905
|
SETUP_CANARY(leaf);
|
|
939
906
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
940
907
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, value_type);
|
|
941
908
|
|
|
942
909
|
/* ### Here we do the instruction body. ### */
|
|
943
910
|
# define NAME_OF_CURRENT_INSN putspecialobject
|
|
944
|
-
# line
|
|
911
|
+
# line 364 "insns.def"
|
|
945
912
|
{
|
|
946
913
|
enum vm_special_object_type type;
|
|
947
914
|
|
|
948
915
|
type = (enum vm_special_object_type)value_type;
|
|
949
916
|
val = vm_get_special_object(GET_EP(), type);
|
|
950
917
|
}
|
|
951
|
-
# line
|
|
918
|
+
# line 919 "vm.inc"
|
|
952
919
|
# undef NAME_OF_CURRENT_INSN
|
|
953
920
|
|
|
954
921
|
/* ### Instruction trailers. ### */
|
|
@@ -958,7 +925,6 @@ INSN_ENTRY(putspecialobject)
|
|
|
958
925
|
TOPN(0) = val;
|
|
959
926
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
960
927
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
961
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
962
928
|
# undef INSN_ATTR
|
|
963
929
|
|
|
964
930
|
/* ### Leave the instruction. ### */
|
|
@@ -975,22 +941,22 @@ INSN_ENTRY(putstring)
|
|
|
975
941
|
/* ### Declare and assign variables. ### */
|
|
976
942
|
VALUE str = (VALUE)GET_OPERAND(1);
|
|
977
943
|
# define INSN_ATTR(x) attr_ ## x ## _putstring(str)
|
|
978
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
944
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
979
945
|
VALUE val;
|
|
980
946
|
|
|
981
947
|
/* ### Instruction preambles. ### */
|
|
982
|
-
|
|
948
|
+
ADD_PC(INSN_ATTR(width));
|
|
983
949
|
SETUP_CANARY(leaf);
|
|
984
950
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
985
951
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, str);
|
|
986
952
|
|
|
987
953
|
/* ### Here we do the instruction body. ### */
|
|
988
954
|
# define NAME_OF_CURRENT_INSN putstring
|
|
989
|
-
# line
|
|
955
|
+
# line 377 "insns.def"
|
|
990
956
|
{
|
|
991
957
|
val = rb_ec_str_resurrect(ec, str);
|
|
992
958
|
}
|
|
993
|
-
# line
|
|
959
|
+
# line 960 "vm.inc"
|
|
994
960
|
# undef NAME_OF_CURRENT_INSN
|
|
995
961
|
|
|
996
962
|
/* ### Instruction trailers. ### */
|
|
@@ -1000,7 +966,6 @@ INSN_ENTRY(putstring)
|
|
|
1000
966
|
TOPN(0) = val;
|
|
1001
967
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1002
968
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1003
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1004
969
|
# undef INSN_ATTR
|
|
1005
970
|
|
|
1006
971
|
/* ### Leave the instruction. ### */
|
|
@@ -1017,22 +982,22 @@ INSN_ENTRY(concatstrings)
|
|
|
1017
982
|
/* ### Declare and assign variables. ### */
|
|
1018
983
|
rb_num_t num = (rb_num_t)GET_OPERAND(1);
|
|
1019
984
|
# define INSN_ATTR(x) attr_ ## x ## _concatstrings(num)
|
|
1020
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
985
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
1021
986
|
VALUE val;
|
|
1022
987
|
|
|
1023
988
|
/* ### Instruction preambles. ### */
|
|
1024
|
-
|
|
989
|
+
ADD_PC(INSN_ATTR(width));
|
|
1025
990
|
SETUP_CANARY(leaf);
|
|
1026
991
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1027
992
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, num);
|
|
1028
993
|
|
|
1029
994
|
/* ### Here we do the instruction body. ### */
|
|
1030
995
|
# define NAME_OF_CURRENT_INSN concatstrings
|
|
1031
|
-
# line
|
|
996
|
+
# line 391 "insns.def"
|
|
1032
997
|
{
|
|
1033
998
|
val = rb_str_concat_literals(num, STACK_ADDR_FROM_TOP(num));
|
|
1034
999
|
}
|
|
1035
|
-
# line
|
|
1000
|
+
# line 1001 "vm.inc"
|
|
1036
1001
|
# undef NAME_OF_CURRENT_INSN
|
|
1037
1002
|
|
|
1038
1003
|
/* ### Instruction trailers. ### */
|
|
@@ -1042,7 +1007,6 @@ INSN_ENTRY(concatstrings)
|
|
|
1042
1007
|
TOPN(0) = val;
|
|
1043
1008
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1044
1009
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1045
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1046
1010
|
# undef INSN_ATTR
|
|
1047
1011
|
|
|
1048
1012
|
/* ### Leave the instruction. ### */
|
|
@@ -1058,22 +1022,22 @@ INSN_ENTRY(anytostring)
|
|
|
1058
1022
|
|
|
1059
1023
|
/* ### Declare and assign variables. ### */
|
|
1060
1024
|
# define INSN_ATTR(x) attr_ ## x ## _anytostring()
|
|
1061
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
1025
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
1062
1026
|
VALUE val = TOPN(1);
|
|
1063
1027
|
VALUE str = TOPN(0);
|
|
1064
1028
|
|
|
1065
1029
|
/* ### Instruction preambles. ### */
|
|
1066
|
-
|
|
1030
|
+
ADD_PC(INSN_ATTR(width));
|
|
1067
1031
|
SETUP_CANARY(leaf);
|
|
1068
1032
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1069
1033
|
|
|
1070
1034
|
/* ### Here we do the instruction body. ### */
|
|
1071
1035
|
# define NAME_OF_CURRENT_INSN anytostring
|
|
1072
|
-
# line
|
|
1036
|
+
# line 402 "insns.def"
|
|
1073
1037
|
{
|
|
1074
1038
|
val = rb_obj_as_string_result(str, val);
|
|
1075
1039
|
}
|
|
1076
|
-
# line
|
|
1040
|
+
# line 1041 "vm.inc"
|
|
1077
1041
|
# undef NAME_OF_CURRENT_INSN
|
|
1078
1042
|
|
|
1079
1043
|
/* ### Instruction trailers. ### */
|
|
@@ -1083,7 +1047,6 @@ INSN_ENTRY(anytostring)
|
|
|
1083
1047
|
TOPN(0) = val;
|
|
1084
1048
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1085
1049
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1086
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1087
1050
|
# undef INSN_ATTR
|
|
1088
1051
|
|
|
1089
1052
|
/* ### Leave the instruction. ### */
|
|
@@ -1101,11 +1064,11 @@ INSN_ENTRY(toregexp)
|
|
|
1101
1064
|
rb_num_t opt = (rb_num_t)GET_OPERAND(1);
|
|
1102
1065
|
rb_num_t cnt = (rb_num_t)GET_OPERAND(2);
|
|
1103
1066
|
# define INSN_ATTR(x) attr_ ## x ## _toregexp(opt, cnt)
|
|
1104
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
1067
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
1105
1068
|
VALUE val;
|
|
1106
1069
|
|
|
1107
1070
|
/* ### Instruction preambles. ### */
|
|
1108
|
-
|
|
1071
|
+
ADD_PC(INSN_ATTR(width));
|
|
1109
1072
|
SETUP_CANARY(leaf);
|
|
1110
1073
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1111
1074
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, opt);
|
|
@@ -1113,13 +1076,13 @@ INSN_ENTRY(toregexp)
|
|
|
1113
1076
|
|
|
1114
1077
|
/* ### Here we do the instruction body. ### */
|
|
1115
1078
|
# define NAME_OF_CURRENT_INSN toregexp
|
|
1116
|
-
# line
|
|
1079
|
+
# line 418 "insns.def"
|
|
1117
1080
|
{
|
|
1118
1081
|
const VALUE ary = rb_ary_tmp_new_from_values(0, cnt, STACK_ADDR_FROM_TOP(cnt));
|
|
1119
1082
|
val = rb_reg_new_ary(ary, (int)opt);
|
|
1120
1083
|
rb_ary_clear(ary);
|
|
1121
1084
|
}
|
|
1122
|
-
# line
|
|
1085
|
+
# line 1086 "vm.inc"
|
|
1123
1086
|
# undef NAME_OF_CURRENT_INSN
|
|
1124
1087
|
|
|
1125
1088
|
/* ### Instruction trailers. ### */
|
|
@@ -1129,7 +1092,6 @@ INSN_ENTRY(toregexp)
|
|
|
1129
1092
|
TOPN(0) = val;
|
|
1130
1093
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1131
1094
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1132
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1133
1095
|
# undef INSN_ATTR
|
|
1134
1096
|
|
|
1135
1097
|
/* ### Leave the instruction. ### */
|
|
@@ -1145,22 +1107,22 @@ INSN_ENTRY(intern)
|
|
|
1145
1107
|
|
|
1146
1108
|
/* ### Declare and assign variables. ### */
|
|
1147
1109
|
# define INSN_ATTR(x) attr_ ## x ## _intern()
|
|
1148
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
1110
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
1149
1111
|
VALUE str = TOPN(0);
|
|
1150
1112
|
VALUE sym;
|
|
1151
1113
|
|
|
1152
1114
|
/* ### Instruction preambles. ### */
|
|
1153
|
-
|
|
1115
|
+
ADD_PC(INSN_ATTR(width));
|
|
1154
1116
|
SETUP_CANARY(leaf);
|
|
1155
1117
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1156
1118
|
|
|
1157
1119
|
/* ### Here we do the instruction body. ### */
|
|
1158
1120
|
# define NAME_OF_CURRENT_INSN intern
|
|
1159
|
-
# line
|
|
1121
|
+
# line 430 "insns.def"
|
|
1160
1122
|
{
|
|
1161
1123
|
sym = rb_str_intern(str);
|
|
1162
1124
|
}
|
|
1163
|
-
# line
|
|
1125
|
+
# line 1126 "vm.inc"
|
|
1164
1126
|
# undef NAME_OF_CURRENT_INSN
|
|
1165
1127
|
|
|
1166
1128
|
/* ### Instruction trailers. ### */
|
|
@@ -1170,7 +1132,6 @@ INSN_ENTRY(intern)
|
|
|
1170
1132
|
TOPN(0) = sym;
|
|
1171
1133
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1172
1134
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1173
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1174
1135
|
# undef INSN_ATTR
|
|
1175
1136
|
|
|
1176
1137
|
/* ### Leave the instruction. ### */
|
|
@@ -1187,22 +1148,22 @@ INSN_ENTRY(newarray)
|
|
|
1187
1148
|
/* ### Declare and assign variables. ### */
|
|
1188
1149
|
rb_num_t num = (rb_num_t)GET_OPERAND(1);
|
|
1189
1150
|
# define INSN_ATTR(x) attr_ ## x ## _newarray(num)
|
|
1190
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
1151
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
1191
1152
|
VALUE val;
|
|
1192
1153
|
|
|
1193
1154
|
/* ### Instruction preambles. ### */
|
|
1194
|
-
|
|
1155
|
+
ADD_PC(INSN_ATTR(width));
|
|
1195
1156
|
SETUP_CANARY(leaf);
|
|
1196
1157
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1197
1158
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, num);
|
|
1198
1159
|
|
|
1199
1160
|
/* ### Here we do the instruction body. ### */
|
|
1200
1161
|
# define NAME_OF_CURRENT_INSN newarray
|
|
1201
|
-
# line
|
|
1162
|
+
# line 441 "insns.def"
|
|
1202
1163
|
{
|
|
1203
1164
|
val = rb_ec_ary_new_from_values(ec, num, STACK_ADDR_FROM_TOP(num));
|
|
1204
1165
|
}
|
|
1205
|
-
# line
|
|
1166
|
+
# line 1167 "vm.inc"
|
|
1206
1167
|
# undef NAME_OF_CURRENT_INSN
|
|
1207
1168
|
|
|
1208
1169
|
/* ### Instruction trailers. ### */
|
|
@@ -1212,7 +1173,6 @@ INSN_ENTRY(newarray)
|
|
|
1212
1173
|
TOPN(0) = val;
|
|
1213
1174
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1214
1175
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1215
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1216
1176
|
# undef INSN_ATTR
|
|
1217
1177
|
|
|
1218
1178
|
/* ### Leave the instruction. ### */
|
|
@@ -1229,18 +1189,18 @@ INSN_ENTRY(newarraykwsplat)
|
|
|
1229
1189
|
/* ### Declare and assign variables. ### */
|
|
1230
1190
|
rb_num_t num = (rb_num_t)GET_OPERAND(1);
|
|
1231
1191
|
# define INSN_ATTR(x) attr_ ## x ## _newarraykwsplat(num)
|
|
1232
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
1192
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
1233
1193
|
VALUE val;
|
|
1234
1194
|
|
|
1235
1195
|
/* ### Instruction preambles. ### */
|
|
1236
|
-
|
|
1196
|
+
ADD_PC(INSN_ATTR(width));
|
|
1237
1197
|
SETUP_CANARY(leaf);
|
|
1238
1198
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1239
1199
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, num);
|
|
1240
1200
|
|
|
1241
1201
|
/* ### Here we do the instruction body. ### */
|
|
1242
1202
|
# define NAME_OF_CURRENT_INSN newarraykwsplat
|
|
1243
|
-
# line
|
|
1203
|
+
# line 456 "insns.def"
|
|
1244
1204
|
{
|
|
1245
1205
|
if (RHASH_EMPTY_P(*STACK_ADDR_FROM_TOP(1))) {
|
|
1246
1206
|
val = rb_ary_new4(num-1, STACK_ADDR_FROM_TOP(num));
|
|
@@ -1249,7 +1209,7 @@ INSN_ENTRY(newarraykwsplat)
|
|
|
1249
1209
|
val = rb_ary_new4(num, STACK_ADDR_FROM_TOP(num));
|
|
1250
1210
|
}
|
|
1251
1211
|
}
|
|
1252
|
-
# line
|
|
1212
|
+
# line 1213 "vm.inc"
|
|
1253
1213
|
# undef NAME_OF_CURRENT_INSN
|
|
1254
1214
|
|
|
1255
1215
|
/* ### Instruction trailers. ### */
|
|
@@ -1259,7 +1219,6 @@ INSN_ENTRY(newarraykwsplat)
|
|
|
1259
1219
|
TOPN(0) = val;
|
|
1260
1220
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1261
1221
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1262
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1263
1222
|
# undef INSN_ATTR
|
|
1264
1223
|
|
|
1265
1224
|
/* ### Leave the instruction. ### */
|
|
@@ -1276,23 +1235,23 @@ INSN_ENTRY(duparray)
|
|
|
1276
1235
|
/* ### Declare and assign variables. ### */
|
|
1277
1236
|
VALUE ary = (VALUE)GET_OPERAND(1);
|
|
1278
1237
|
# define INSN_ATTR(x) attr_ ## x ## _duparray(ary)
|
|
1279
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
1238
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
1280
1239
|
VALUE val;
|
|
1281
1240
|
|
|
1282
1241
|
/* ### Instruction preambles. ### */
|
|
1283
|
-
|
|
1242
|
+
ADD_PC(INSN_ATTR(width));
|
|
1284
1243
|
SETUP_CANARY(leaf);
|
|
1285
1244
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1286
1245
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, ary);
|
|
1287
1246
|
|
|
1288
1247
|
/* ### Here we do the instruction body. ### */
|
|
1289
1248
|
# define NAME_OF_CURRENT_INSN duparray
|
|
1290
|
-
# line
|
|
1249
|
+
# line 471 "insns.def"
|
|
1291
1250
|
{
|
|
1292
1251
|
RUBY_DTRACE_CREATE_HOOK(ARRAY, RARRAY_LEN(ary));
|
|
1293
1252
|
val = rb_ary_resurrect(ary);
|
|
1294
1253
|
}
|
|
1295
|
-
# line
|
|
1254
|
+
# line 1255 "vm.inc"
|
|
1296
1255
|
# undef NAME_OF_CURRENT_INSN
|
|
1297
1256
|
|
|
1298
1257
|
/* ### Instruction trailers. ### */
|
|
@@ -1302,7 +1261,6 @@ INSN_ENTRY(duparray)
|
|
|
1302
1261
|
TOPN(0) = val;
|
|
1303
1262
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1304
1263
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1305
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1306
1264
|
# undef INSN_ATTR
|
|
1307
1265
|
|
|
1308
1266
|
/* ### Leave the instruction. ### */
|
|
@@ -1319,23 +1277,23 @@ INSN_ENTRY(duphash)
|
|
|
1319
1277
|
/* ### Declare and assign variables. ### */
|
|
1320
1278
|
VALUE hash = (VALUE)GET_OPERAND(1);
|
|
1321
1279
|
# define INSN_ATTR(x) attr_ ## x ## _duphash(hash)
|
|
1322
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
1280
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
1323
1281
|
VALUE val;
|
|
1324
1282
|
|
|
1325
1283
|
/* ### Instruction preambles. ### */
|
|
1326
|
-
|
|
1284
|
+
ADD_PC(INSN_ATTR(width));
|
|
1327
1285
|
SETUP_CANARY(leaf);
|
|
1328
1286
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1329
1287
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, hash);
|
|
1330
1288
|
|
|
1331
1289
|
/* ### Here we do the instruction body. ### */
|
|
1332
1290
|
# define NAME_OF_CURRENT_INSN duphash
|
|
1333
|
-
# line
|
|
1291
|
+
# line 482 "insns.def"
|
|
1334
1292
|
{
|
|
1335
1293
|
RUBY_DTRACE_CREATE_HOOK(HASH, RHASH_SIZE(hash) << 1);
|
|
1336
1294
|
val = rb_hash_resurrect(hash);
|
|
1337
1295
|
}
|
|
1338
|
-
# line
|
|
1296
|
+
# line 1297 "vm.inc"
|
|
1339
1297
|
# undef NAME_OF_CURRENT_INSN
|
|
1340
1298
|
|
|
1341
1299
|
/* ### Instruction trailers. ### */
|
|
@@ -1345,7 +1303,6 @@ INSN_ENTRY(duphash)
|
|
|
1345
1303
|
TOPN(0) = val;
|
|
1346
1304
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1347
1305
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1348
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1349
1306
|
# undef INSN_ATTR
|
|
1350
1307
|
|
|
1351
1308
|
/* ### Leave the instruction. ### */
|
|
@@ -1363,28 +1320,27 @@ INSN_ENTRY(expandarray)
|
|
|
1363
1320
|
rb_num_t num = (rb_num_t)GET_OPERAND(1);
|
|
1364
1321
|
rb_num_t flag = (rb_num_t)GET_OPERAND(2);
|
|
1365
1322
|
# define INSN_ATTR(x) attr_ ## x ## _expandarray(num, flag)
|
|
1366
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
1323
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
1367
1324
|
VALUE ary = TOPN(0);
|
|
1368
1325
|
|
|
1369
1326
|
/* ### Instruction preambles. ### */
|
|
1370
|
-
|
|
1327
|
+
ADD_PC(INSN_ATTR(width));
|
|
1371
1328
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1372
1329
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, num);
|
|
1373
1330
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, flag);
|
|
1374
1331
|
|
|
1375
1332
|
/* ### Here we do the instruction body. ### */
|
|
1376
1333
|
# define NAME_OF_CURRENT_INSN expandarray
|
|
1377
|
-
# line
|
|
1334
|
+
# line 503 "insns.def"
|
|
1378
1335
|
{
|
|
1379
1336
|
vm_expandarray(GET_SP(), ary, num, (int)flag);
|
|
1380
1337
|
}
|
|
1381
|
-
# line
|
|
1338
|
+
# line 1339 "vm.inc"
|
|
1382
1339
|
# undef NAME_OF_CURRENT_INSN
|
|
1383
1340
|
|
|
1384
1341
|
/* ### Instruction trailers. ### */
|
|
1385
1342
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1386
1343
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1387
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1388
1344
|
# undef INSN_ATTR
|
|
1389
1345
|
|
|
1390
1346
|
/* ### Leave the instruction. ### */
|
|
@@ -1400,23 +1356,23 @@ INSN_ENTRY(concatarray)
|
|
|
1400
1356
|
|
|
1401
1357
|
/* ### Declare and assign variables. ### */
|
|
1402
1358
|
# define INSN_ATTR(x) attr_ ## x ## _concatarray()
|
|
1403
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
1359
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
1404
1360
|
VALUE ary1 = TOPN(1);
|
|
1405
1361
|
VALUE ary2 = TOPN(0);
|
|
1406
1362
|
VALUE ary;
|
|
1407
1363
|
|
|
1408
1364
|
/* ### Instruction preambles. ### */
|
|
1409
|
-
|
|
1365
|
+
ADD_PC(INSN_ATTR(width));
|
|
1410
1366
|
SETUP_CANARY(leaf);
|
|
1411
1367
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1412
1368
|
|
|
1413
1369
|
/* ### Here we do the instruction body. ### */
|
|
1414
1370
|
# define NAME_OF_CURRENT_INSN concatarray
|
|
1415
|
-
# line
|
|
1371
|
+
# line 514 "insns.def"
|
|
1416
1372
|
{
|
|
1417
1373
|
ary = vm_concat_array(ary1, ary2);
|
|
1418
1374
|
}
|
|
1419
|
-
# line
|
|
1375
|
+
# line 1376 "vm.inc"
|
|
1420
1376
|
# undef NAME_OF_CURRENT_INSN
|
|
1421
1377
|
|
|
1422
1378
|
/* ### Instruction trailers. ### */
|
|
@@ -1426,7 +1382,6 @@ INSN_ENTRY(concatarray)
|
|
|
1426
1382
|
TOPN(0) = ary;
|
|
1427
1383
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1428
1384
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1429
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1430
1385
|
# undef INSN_ATTR
|
|
1431
1386
|
|
|
1432
1387
|
/* ### Leave the instruction. ### */
|
|
@@ -1443,23 +1398,23 @@ INSN_ENTRY(splatarray)
|
|
|
1443
1398
|
/* ### Declare and assign variables. ### */
|
|
1444
1399
|
VALUE flag = (VALUE)GET_OPERAND(1);
|
|
1445
1400
|
# define INSN_ATTR(x) attr_ ## x ## _splatarray(flag)
|
|
1446
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
1401
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
1447
1402
|
VALUE ary = TOPN(0);
|
|
1448
1403
|
VALUE obj;
|
|
1449
1404
|
|
|
1450
1405
|
/* ### Instruction preambles. ### */
|
|
1451
|
-
|
|
1406
|
+
ADD_PC(INSN_ATTR(width));
|
|
1452
1407
|
SETUP_CANARY(leaf);
|
|
1453
1408
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1454
1409
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, flag);
|
|
1455
1410
|
|
|
1456
1411
|
/* ### Here we do the instruction body. ### */
|
|
1457
1412
|
# define NAME_OF_CURRENT_INSN splatarray
|
|
1458
|
-
# line
|
|
1413
|
+
# line 525 "insns.def"
|
|
1459
1414
|
{
|
|
1460
1415
|
obj = vm_splat_array(flag, ary);
|
|
1461
1416
|
}
|
|
1462
|
-
# line
|
|
1417
|
+
# line 1418 "vm.inc"
|
|
1463
1418
|
# undef NAME_OF_CURRENT_INSN
|
|
1464
1419
|
|
|
1465
1420
|
/* ### Instruction trailers. ### */
|
|
@@ -1469,7 +1424,6 @@ INSN_ENTRY(splatarray)
|
|
|
1469
1424
|
TOPN(0) = obj;
|
|
1470
1425
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1471
1426
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1472
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1473
1427
|
# undef INSN_ATTR
|
|
1474
1428
|
|
|
1475
1429
|
/* ### Leave the instruction. ### */
|
|
@@ -1486,18 +1440,18 @@ INSN_ENTRY(newhash)
|
|
|
1486
1440
|
/* ### Declare and assign variables. ### */
|
|
1487
1441
|
rb_num_t num = (rb_num_t)GET_OPERAND(1);
|
|
1488
1442
|
# define INSN_ATTR(x) attr_ ## x ## _newhash(num)
|
|
1489
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
1443
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
1490
1444
|
VALUE val;
|
|
1491
1445
|
|
|
1492
1446
|
/* ### Instruction preambles. ### */
|
|
1493
|
-
|
|
1447
|
+
ADD_PC(INSN_ATTR(width));
|
|
1494
1448
|
SETUP_CANARY(leaf);
|
|
1495
1449
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1496
1450
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, num);
|
|
1497
1451
|
|
|
1498
1452
|
/* ### Here we do the instruction body. ### */
|
|
1499
1453
|
# define NAME_OF_CURRENT_INSN newhash
|
|
1500
|
-
# line
|
|
1454
|
+
# line 537 "insns.def"
|
|
1501
1455
|
{
|
|
1502
1456
|
RUBY_DTRACE_CREATE_HOOK(HASH, num);
|
|
1503
1457
|
|
|
@@ -1509,7 +1463,7 @@ INSN_ENTRY(newhash)
|
|
|
1509
1463
|
val = rb_hash_new();
|
|
1510
1464
|
}
|
|
1511
1465
|
}
|
|
1512
|
-
# line
|
|
1466
|
+
# line 1467 "vm.inc"
|
|
1513
1467
|
# undef NAME_OF_CURRENT_INSN
|
|
1514
1468
|
|
|
1515
1469
|
/* ### Instruction trailers. ### */
|
|
@@ -1519,7 +1473,6 @@ INSN_ENTRY(newhash)
|
|
|
1519
1473
|
TOPN(0) = val;
|
|
1520
1474
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1521
1475
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1522
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1523
1476
|
# undef INSN_ATTR
|
|
1524
1477
|
|
|
1525
1478
|
/* ### Leave the instruction. ### */
|
|
@@ -1536,24 +1489,24 @@ INSN_ENTRY(newrange)
|
|
|
1536
1489
|
/* ### Declare and assign variables. ### */
|
|
1537
1490
|
rb_num_t flag = (rb_num_t)GET_OPERAND(1);
|
|
1538
1491
|
# define INSN_ATTR(x) attr_ ## x ## _newrange(flag)
|
|
1539
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
1492
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
1540
1493
|
VALUE low = TOPN(1);
|
|
1541
1494
|
VALUE high = TOPN(0);
|
|
1542
1495
|
VALUE val;
|
|
1543
1496
|
|
|
1544
1497
|
/* ### Instruction preambles. ### */
|
|
1545
|
-
|
|
1498
|
+
ADD_PC(INSN_ATTR(width));
|
|
1546
1499
|
SETUP_CANARY(leaf);
|
|
1547
1500
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1548
1501
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, flag);
|
|
1549
1502
|
|
|
1550
1503
|
/* ### Here we do the instruction body. ### */
|
|
1551
1504
|
# define NAME_OF_CURRENT_INSN newrange
|
|
1552
|
-
# line
|
|
1505
|
+
# line 557 "insns.def"
|
|
1553
1506
|
{
|
|
1554
1507
|
val = rb_range_new(low, high, (int)flag);
|
|
1555
1508
|
}
|
|
1556
|
-
# line
|
|
1509
|
+
# line 1510 "vm.inc"
|
|
1557
1510
|
# undef NAME_OF_CURRENT_INSN
|
|
1558
1511
|
|
|
1559
1512
|
/* ### Instruction trailers. ### */
|
|
@@ -1563,7 +1516,6 @@ INSN_ENTRY(newrange)
|
|
|
1563
1516
|
TOPN(0) = val;
|
|
1564
1517
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1565
1518
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1566
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1567
1519
|
# undef INSN_ATTR
|
|
1568
1520
|
|
|
1569
1521
|
/* ### Leave the instruction. ### */
|
|
@@ -1579,29 +1531,28 @@ INSN_ENTRY(pop)
|
|
|
1579
1531
|
|
|
1580
1532
|
/* ### Declare and assign variables. ### */
|
|
1581
1533
|
# define INSN_ATTR(x) attr_ ## x ## _pop()
|
|
1582
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
1534
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
1583
1535
|
VALUE val = TOPN(0);
|
|
1584
1536
|
|
|
1585
1537
|
/* ### Instruction preambles. ### */
|
|
1586
|
-
|
|
1538
|
+
ADD_PC(INSN_ATTR(width));
|
|
1587
1539
|
SETUP_CANARY(leaf);
|
|
1588
1540
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1589
1541
|
|
|
1590
1542
|
/* ### Here we do the instruction body. ### */
|
|
1591
1543
|
# define NAME_OF_CURRENT_INSN pop
|
|
1592
|
-
# line
|
|
1544
|
+
# line 571 "insns.def"
|
|
1593
1545
|
{
|
|
1594
1546
|
(void)val;
|
|
1595
1547
|
/* none */
|
|
1596
1548
|
}
|
|
1597
|
-
# line
|
|
1549
|
+
# line 1550 "vm.inc"
|
|
1598
1550
|
# undef NAME_OF_CURRENT_INSN
|
|
1599
1551
|
|
|
1600
1552
|
/* ### Instruction trailers. ### */
|
|
1601
1553
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1602
1554
|
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1603
1555
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1604
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1605
1556
|
# undef INSN_ATTR
|
|
1606
1557
|
|
|
1607
1558
|
/* ### Leave the instruction. ### */
|
|
@@ -1617,23 +1568,23 @@ INSN_ENTRY(dup)
|
|
|
1617
1568
|
|
|
1618
1569
|
/* ### Declare and assign variables. ### */
|
|
1619
1570
|
# define INSN_ATTR(x) attr_ ## x ## _dup()
|
|
1620
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
1571
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
1621
1572
|
VALUE val = TOPN(0);
|
|
1622
1573
|
VALUE val1;
|
|
1623
1574
|
VALUE val2;
|
|
1624
1575
|
|
|
1625
1576
|
/* ### Instruction preambles. ### */
|
|
1626
|
-
|
|
1577
|
+
ADD_PC(INSN_ATTR(width));
|
|
1627
1578
|
SETUP_CANARY(leaf);
|
|
1628
1579
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1629
1580
|
|
|
1630
1581
|
/* ### Here we do the instruction body. ### */
|
|
1631
1582
|
# define NAME_OF_CURRENT_INSN dup
|
|
1632
|
-
# line
|
|
1583
|
+
# line 582 "insns.def"
|
|
1633
1584
|
{
|
|
1634
1585
|
val1 = val2 = val;
|
|
1635
1586
|
}
|
|
1636
|
-
# line
|
|
1587
|
+
# line 1588 "vm.inc"
|
|
1637
1588
|
# undef NAME_OF_CURRENT_INSN
|
|
1638
1589
|
|
|
1639
1590
|
/* ### Instruction trailers. ### */
|
|
@@ -1646,7 +1597,6 @@ INSN_ENTRY(dup)
|
|
|
1646
1597
|
TOPN(1) = val1;
|
|
1647
1598
|
VM_ASSERT(!RB_TYPE_P(TOPN(1), T_NONE));
|
|
1648
1599
|
VM_ASSERT(!RB_TYPE_P(TOPN(1), T_MOVED));
|
|
1649
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1650
1600
|
# undef INSN_ATTR
|
|
1651
1601
|
|
|
1652
1602
|
/* ### Leave the instruction. ### */
|
|
@@ -1663,29 +1613,28 @@ INSN_ENTRY(dupn)
|
|
|
1663
1613
|
/* ### Declare and assign variables. ### */
|
|
1664
1614
|
rb_num_t n = (rb_num_t)GET_OPERAND(1);
|
|
1665
1615
|
# define INSN_ATTR(x) attr_ ## x ## _dupn(n)
|
|
1666
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
1616
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
1667
1617
|
|
|
1668
1618
|
/* ### Instruction preambles. ### */
|
|
1669
|
-
|
|
1619
|
+
ADD_PC(INSN_ATTR(width));
|
|
1670
1620
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1671
1621
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, n);
|
|
1672
1622
|
|
|
1673
1623
|
/* ### Here we do the instruction body. ### */
|
|
1674
1624
|
# define NAME_OF_CURRENT_INSN dupn
|
|
1675
|
-
# line
|
|
1625
|
+
# line 593 "insns.def"
|
|
1676
1626
|
{
|
|
1677
1627
|
void *dst = GET_SP();
|
|
1678
1628
|
void *src = STACK_ADDR_FROM_TOP(n);
|
|
1679
1629
|
|
|
1680
1630
|
MEMCPY(dst, src, VALUE, n);
|
|
1681
1631
|
}
|
|
1682
|
-
# line
|
|
1632
|
+
# line 1633 "vm.inc"
|
|
1683
1633
|
# undef NAME_OF_CURRENT_INSN
|
|
1684
1634
|
|
|
1685
1635
|
/* ### Instruction trailers. ### */
|
|
1686
1636
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1687
1637
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1688
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1689
1638
|
# undef INSN_ATTR
|
|
1690
1639
|
|
|
1691
1640
|
/* ### Leave the instruction. ### */
|
|
@@ -1701,12 +1650,12 @@ INSN_ENTRY(swap)
|
|
|
1701
1650
|
|
|
1702
1651
|
/* ### Declare and assign variables. ### */
|
|
1703
1652
|
# define INSN_ATTR(x) attr_ ## x ## _swap()
|
|
1704
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
1653
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
1705
1654
|
VALUE val = TOPN(1);
|
|
1706
1655
|
VALUE obj = TOPN(0);
|
|
1707
1656
|
|
|
1708
1657
|
/* ### Instruction preambles. ### */
|
|
1709
|
-
|
|
1658
|
+
ADD_PC(INSN_ATTR(width));
|
|
1710
1659
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1711
1660
|
|
|
1712
1661
|
/* ### Instruction trailers. ### */
|
|
@@ -1718,7 +1667,6 @@ INSN_ENTRY(swap)
|
|
|
1718
1667
|
TOPN(1) = obj;
|
|
1719
1668
|
VM_ASSERT(!RB_TYPE_P(TOPN(1), T_NONE));
|
|
1720
1669
|
VM_ASSERT(!RB_TYPE_P(TOPN(1), T_MOVED));
|
|
1721
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1722
1670
|
# undef INSN_ATTR
|
|
1723
1671
|
|
|
1724
1672
|
/* ### Leave the instruction. ### */
|
|
@@ -1735,16 +1683,16 @@ INSN_ENTRY(opt_reverse)
|
|
|
1735
1683
|
/* ### Declare and assign variables. ### */
|
|
1736
1684
|
rb_num_t n = (rb_num_t)GET_OPERAND(1);
|
|
1737
1685
|
# define INSN_ATTR(x) attr_ ## x ## _opt_reverse(n)
|
|
1738
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
1686
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
1739
1687
|
|
|
1740
1688
|
/* ### Instruction preambles. ### */
|
|
1741
|
-
|
|
1689
|
+
ADD_PC(INSN_ATTR(width));
|
|
1742
1690
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1743
1691
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, n);
|
|
1744
1692
|
|
|
1745
1693
|
/* ### Here we do the instruction body. ### */
|
|
1746
1694
|
# define NAME_OF_CURRENT_INSN opt_reverse
|
|
1747
|
-
# line
|
|
1695
|
+
# line 617 "insns.def"
|
|
1748
1696
|
{
|
|
1749
1697
|
rb_num_t i;
|
|
1750
1698
|
VALUE *sp = STACK_ADDR_FROM_TOP(n);
|
|
@@ -1756,13 +1704,12 @@ INSN_ENTRY(opt_reverse)
|
|
|
1756
1704
|
TOPN(i) = v0;
|
|
1757
1705
|
}
|
|
1758
1706
|
}
|
|
1759
|
-
# line
|
|
1707
|
+
# line 1708 "vm.inc"
|
|
1760
1708
|
# undef NAME_OF_CURRENT_INSN
|
|
1761
1709
|
|
|
1762
1710
|
/* ### Instruction trailers. ### */
|
|
1763
1711
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1764
1712
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1765
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1766
1713
|
# undef INSN_ATTR
|
|
1767
1714
|
|
|
1768
1715
|
/* ### Leave the instruction. ### */
|
|
@@ -1779,22 +1726,22 @@ INSN_ENTRY(topn)
|
|
|
1779
1726
|
/* ### Declare and assign variables. ### */
|
|
1780
1727
|
rb_num_t n = (rb_num_t)GET_OPERAND(1);
|
|
1781
1728
|
# define INSN_ATTR(x) attr_ ## x ## _topn(n)
|
|
1782
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
1729
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
1783
1730
|
VALUE val;
|
|
1784
1731
|
|
|
1785
1732
|
/* ### Instruction preambles. ### */
|
|
1786
|
-
|
|
1733
|
+
ADD_PC(INSN_ATTR(width));
|
|
1787
1734
|
SETUP_CANARY(leaf);
|
|
1788
1735
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1789
1736
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, n);
|
|
1790
1737
|
|
|
1791
1738
|
/* ### Here we do the instruction body. ### */
|
|
1792
1739
|
# define NAME_OF_CURRENT_INSN topn
|
|
1793
|
-
# line
|
|
1740
|
+
# line 647 "insns.def"
|
|
1794
1741
|
{
|
|
1795
1742
|
val = TOPN(n);
|
|
1796
1743
|
}
|
|
1797
|
-
# line
|
|
1744
|
+
# line 1745 "vm.inc"
|
|
1798
1745
|
# undef NAME_OF_CURRENT_INSN
|
|
1799
1746
|
|
|
1800
1747
|
/* ### Instruction trailers. ### */
|
|
@@ -1804,7 +1751,6 @@ INSN_ENTRY(topn)
|
|
|
1804
1751
|
TOPN(0) = val;
|
|
1805
1752
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1806
1753
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1807
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1808
1754
|
# undef INSN_ATTR
|
|
1809
1755
|
|
|
1810
1756
|
/* ### Leave the instruction. ### */
|
|
@@ -1821,22 +1767,22 @@ INSN_ENTRY(setn)
|
|
|
1821
1767
|
/* ### Declare and assign variables. ### */
|
|
1822
1768
|
rb_num_t n = (rb_num_t)GET_OPERAND(1);
|
|
1823
1769
|
# define INSN_ATTR(x) attr_ ## x ## _setn(n)
|
|
1824
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
1770
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
1825
1771
|
VALUE val = TOPN(0);
|
|
1826
1772
|
|
|
1827
1773
|
/* ### Instruction preambles. ### */
|
|
1828
|
-
|
|
1774
|
+
ADD_PC(INSN_ATTR(width));
|
|
1829
1775
|
SETUP_CANARY(leaf);
|
|
1830
1776
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1831
1777
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, n);
|
|
1832
1778
|
|
|
1833
1779
|
/* ### Here we do the instruction body. ### */
|
|
1834
1780
|
# define NAME_OF_CURRENT_INSN setn
|
|
1835
|
-
# line
|
|
1781
|
+
# line 658 "insns.def"
|
|
1836
1782
|
{
|
|
1837
1783
|
TOPN(n) = val;
|
|
1838
1784
|
}
|
|
1839
|
-
# line
|
|
1785
|
+
# line 1786 "vm.inc"
|
|
1840
1786
|
# undef NAME_OF_CURRENT_INSN
|
|
1841
1787
|
|
|
1842
1788
|
/* ### Instruction trailers. ### */
|
|
@@ -1846,7 +1792,6 @@ INSN_ENTRY(setn)
|
|
|
1846
1792
|
TOPN(0) = val;
|
|
1847
1793
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1848
1794
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1849
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1850
1795
|
# undef INSN_ATTR
|
|
1851
1796
|
|
|
1852
1797
|
/* ### Leave the instruction. ### */
|
|
@@ -1863,17 +1808,16 @@ INSN_ENTRY(adjuststack)
|
|
|
1863
1808
|
/* ### Declare and assign variables. ### */
|
|
1864
1809
|
rb_num_t n = (rb_num_t)GET_OPERAND(1);
|
|
1865
1810
|
# define INSN_ATTR(x) attr_ ## x ## _adjuststack(n)
|
|
1866
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
1811
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
1867
1812
|
|
|
1868
1813
|
/* ### Instruction preambles. ### */
|
|
1869
|
-
|
|
1814
|
+
ADD_PC(INSN_ATTR(width));
|
|
1870
1815
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1871
1816
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, n);
|
|
1872
1817
|
|
|
1873
1818
|
/* ### Instruction trailers. ### */
|
|
1874
1819
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1875
1820
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1876
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1877
1821
|
# undef INSN_ATTR
|
|
1878
1822
|
|
|
1879
1823
|
/* ### Leave the instruction. ### */
|
|
@@ -1892,12 +1836,12 @@ INSN_ENTRY(defined)
|
|
|
1892
1836
|
VALUE obj = (VALUE)GET_OPERAND(2);
|
|
1893
1837
|
VALUE pushval = (VALUE)GET_OPERAND(3);
|
|
1894
1838
|
# define INSN_ATTR(x) attr_ ## x ## _defined(op_type, obj, pushval)
|
|
1895
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
1839
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
1896
1840
|
VALUE v = TOPN(0);
|
|
1897
1841
|
VALUE val;
|
|
1898
1842
|
|
|
1899
1843
|
/* ### Instruction preambles. ### */
|
|
1900
|
-
|
|
1844
|
+
ADD_PC(INSN_ATTR(width));
|
|
1901
1845
|
SETUP_CANARY(leaf);
|
|
1902
1846
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1903
1847
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, op_type);
|
|
@@ -1906,14 +1850,14 @@ INSN_ENTRY(defined)
|
|
|
1906
1850
|
|
|
1907
1851
|
/* ### Here we do the instruction body. ### */
|
|
1908
1852
|
# define NAME_OF_CURRENT_INSN defined
|
|
1909
|
-
# line
|
|
1853
|
+
# line 684 "insns.def"
|
|
1910
1854
|
{
|
|
1911
1855
|
val = Qnil;
|
|
1912
1856
|
if (vm_defined(ec, GET_CFP(), op_type, obj, v)) {
|
|
1913
1857
|
val = pushval;
|
|
1914
1858
|
}
|
|
1915
1859
|
}
|
|
1916
|
-
# line
|
|
1860
|
+
# line 1861 "vm.inc"
|
|
1917
1861
|
# undef NAME_OF_CURRENT_INSN
|
|
1918
1862
|
|
|
1919
1863
|
/* ### Instruction trailers. ### */
|
|
@@ -1923,7 +1867,6 @@ INSN_ENTRY(defined)
|
|
|
1923
1867
|
TOPN(0) = val;
|
|
1924
1868
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1925
1869
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1926
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1927
1870
|
# undef INSN_ATTR
|
|
1928
1871
|
|
|
1929
1872
|
/* ### Leave the instruction. ### */
|
|
@@ -1942,11 +1885,11 @@ INSN_ENTRY(definedivar)
|
|
|
1942
1885
|
IVC ic = (IVC)GET_OPERAND(2);
|
|
1943
1886
|
VALUE pushval = (VALUE)GET_OPERAND(3);
|
|
1944
1887
|
# define INSN_ATTR(x) attr_ ## x ## _definedivar(id, ic, pushval)
|
|
1945
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
1888
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
1946
1889
|
VALUE val;
|
|
1947
1890
|
|
|
1948
1891
|
/* ### Instruction preambles. ### */
|
|
1949
|
-
|
|
1892
|
+
ADD_PC(INSN_ATTR(width));
|
|
1950
1893
|
SETUP_CANARY(leaf);
|
|
1951
1894
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1952
1895
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, id);
|
|
@@ -1955,14 +1898,14 @@ INSN_ENTRY(definedivar)
|
|
|
1955
1898
|
|
|
1956
1899
|
/* ### Here we do the instruction body. ### */
|
|
1957
1900
|
# define NAME_OF_CURRENT_INSN definedivar
|
|
1958
|
-
# line
|
|
1901
|
+
# line 698 "insns.def"
|
|
1959
1902
|
{
|
|
1960
1903
|
val = Qnil;
|
|
1961
1904
|
if (vm_getivar(GET_SELF(), id, GET_ISEQ(), ic, NULL, FALSE, Qundef) != Qundef) {
|
|
1962
1905
|
val = pushval;
|
|
1963
1906
|
}
|
|
1964
1907
|
}
|
|
1965
|
-
# line
|
|
1908
|
+
# line 1909 "vm.inc"
|
|
1966
1909
|
# undef NAME_OF_CURRENT_INSN
|
|
1967
1910
|
|
|
1968
1911
|
/* ### Instruction trailers. ### */
|
|
@@ -1972,7 +1915,6 @@ INSN_ENTRY(definedivar)
|
|
|
1972
1915
|
TOPN(0) = val;
|
|
1973
1916
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1974
1917
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1975
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1976
1918
|
# undef INSN_ATTR
|
|
1977
1919
|
|
|
1978
1920
|
/* ### Leave the instruction. ### */
|
|
@@ -1989,24 +1931,24 @@ INSN_ENTRY(checkmatch)
|
|
|
1989
1931
|
/* ### Declare and assign variables. ### */
|
|
1990
1932
|
rb_num_t flag = (rb_num_t)GET_OPERAND(1);
|
|
1991
1933
|
# define INSN_ATTR(x) attr_ ## x ## _checkmatch(flag)
|
|
1992
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
1934
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
1993
1935
|
VALUE target = TOPN(1);
|
|
1994
1936
|
VALUE pattern = TOPN(0);
|
|
1995
1937
|
VALUE result;
|
|
1996
1938
|
|
|
1997
1939
|
/* ### Instruction preambles. ### */
|
|
1998
|
-
|
|
1940
|
+
ADD_PC(INSN_ATTR(width));
|
|
1999
1941
|
SETUP_CANARY(leaf);
|
|
2000
1942
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2001
1943
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, flag);
|
|
2002
1944
|
|
|
2003
1945
|
/* ### Here we do the instruction body. ### */
|
|
2004
1946
|
# define NAME_OF_CURRENT_INSN checkmatch
|
|
2005
|
-
# line
|
|
1947
|
+
# line 718 "insns.def"
|
|
2006
1948
|
{
|
|
2007
1949
|
result = vm_check_match(ec, target, pattern, flag);
|
|
2008
1950
|
}
|
|
2009
|
-
# line
|
|
1951
|
+
# line 1952 "vm.inc"
|
|
2010
1952
|
# undef NAME_OF_CURRENT_INSN
|
|
2011
1953
|
|
|
2012
1954
|
/* ### Instruction trailers. ### */
|
|
@@ -2016,7 +1958,6 @@ INSN_ENTRY(checkmatch)
|
|
|
2016
1958
|
TOPN(0) = result;
|
|
2017
1959
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
2018
1960
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
2019
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2020
1961
|
# undef INSN_ATTR
|
|
2021
1962
|
|
|
2022
1963
|
/* ### Leave the instruction. ### */
|
|
@@ -2034,11 +1975,11 @@ INSN_ENTRY(checkkeyword)
|
|
|
2034
1975
|
lindex_t kw_bits_index = (lindex_t)GET_OPERAND(1);
|
|
2035
1976
|
lindex_t keyword_index = (lindex_t)GET_OPERAND(2);
|
|
2036
1977
|
# define INSN_ATTR(x) attr_ ## x ## _checkkeyword(kw_bits_index, keyword_index)
|
|
2037
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
1978
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
2038
1979
|
VALUE ret;
|
|
2039
1980
|
|
|
2040
1981
|
/* ### Instruction preambles. ### */
|
|
2041
|
-
|
|
1982
|
+
ADD_PC(INSN_ATTR(width));
|
|
2042
1983
|
SETUP_CANARY(leaf);
|
|
2043
1984
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2044
1985
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, kw_bits_index);
|
|
@@ -2046,11 +1987,11 @@ INSN_ENTRY(checkkeyword)
|
|
|
2046
1987
|
|
|
2047
1988
|
/* ### Here we do the instruction body. ### */
|
|
2048
1989
|
# define NAME_OF_CURRENT_INSN checkkeyword
|
|
2049
|
-
# line
|
|
1990
|
+
# line 728 "insns.def"
|
|
2050
1991
|
{
|
|
2051
1992
|
ret = vm_check_keyword(kw_bits_index, keyword_index, GET_EP());
|
|
2052
1993
|
}
|
|
2053
|
-
# line
|
|
1994
|
+
# line 1995 "vm.inc"
|
|
2054
1995
|
# undef NAME_OF_CURRENT_INSN
|
|
2055
1996
|
|
|
2056
1997
|
/* ### Instruction trailers. ### */
|
|
@@ -2060,7 +2001,6 @@ INSN_ENTRY(checkkeyword)
|
|
|
2060
2001
|
TOPN(0) = ret;
|
|
2061
2002
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
2062
2003
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
2063
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2064
2004
|
# undef INSN_ATTR
|
|
2065
2005
|
|
|
2066
2006
|
/* ### Leave the instruction. ### */
|
|
@@ -2077,23 +2017,23 @@ INSN_ENTRY(checktype)
|
|
|
2077
2017
|
/* ### Declare and assign variables. ### */
|
|
2078
2018
|
rb_num_t type = (rb_num_t)GET_OPERAND(1);
|
|
2079
2019
|
# define INSN_ATTR(x) attr_ ## x ## _checktype(type)
|
|
2080
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
2020
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
2081
2021
|
VALUE val = TOPN(0);
|
|
2082
2022
|
VALUE ret;
|
|
2083
2023
|
|
|
2084
2024
|
/* ### Instruction preambles. ### */
|
|
2085
|
-
|
|
2025
|
+
ADD_PC(INSN_ATTR(width));
|
|
2086
2026
|
SETUP_CANARY(leaf);
|
|
2087
2027
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2088
2028
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, type);
|
|
2089
2029
|
|
|
2090
2030
|
/* ### Here we do the instruction body. ### */
|
|
2091
2031
|
# define NAME_OF_CURRENT_INSN checktype
|
|
2092
|
-
# line
|
|
2032
|
+
# line 738 "insns.def"
|
|
2093
2033
|
{
|
|
2094
2034
|
ret = RBOOL(TYPE(val) == (int)type);
|
|
2095
2035
|
}
|
|
2096
|
-
# line
|
|
2036
|
+
# line 2037 "vm.inc"
|
|
2097
2037
|
# undef NAME_OF_CURRENT_INSN
|
|
2098
2038
|
|
|
2099
2039
|
/* ### Instruction trailers. ### */
|
|
@@ -2103,7 +2043,6 @@ INSN_ENTRY(checktype)
|
|
|
2103
2043
|
TOPN(0) = ret;
|
|
2104
2044
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
2105
2045
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
2106
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2107
2046
|
# undef INSN_ATTR
|
|
2108
2047
|
|
|
2109
2048
|
/* ### Leave the instruction. ### */
|
|
@@ -2122,13 +2061,13 @@ INSN_ENTRY(defineclass)
|
|
|
2122
2061
|
ISEQ class_iseq = (ISEQ)GET_OPERAND(2);
|
|
2123
2062
|
rb_num_t flags = (rb_num_t)GET_OPERAND(3);
|
|
2124
2063
|
# define INSN_ATTR(x) attr_ ## x ## _defineclass(id, class_iseq, flags)
|
|
2125
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
2064
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
2126
2065
|
VALUE cbase = TOPN(1);
|
|
2127
2066
|
VALUE super = TOPN(0);
|
|
2128
2067
|
VALUE val;
|
|
2129
2068
|
|
|
2130
2069
|
/* ### Instruction preambles. ### */
|
|
2131
|
-
|
|
2070
|
+
ADD_PC(INSN_ATTR(width));
|
|
2132
2071
|
POPN(INSN_ATTR(popn));
|
|
2133
2072
|
SETUP_CANARY(leaf);
|
|
2134
2073
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
@@ -2138,7 +2077,7 @@ INSN_ENTRY(defineclass)
|
|
|
2138
2077
|
|
|
2139
2078
|
/* ### Here we do the instruction body. ### */
|
|
2140
2079
|
# define NAME_OF_CURRENT_INSN defineclass
|
|
2141
|
-
# line
|
|
2080
|
+
# line 754 "insns.def"
|
|
2142
2081
|
{
|
|
2143
2082
|
VALUE klass = vm_find_or_create_class_by_id(id, flags, cbase, super);
|
|
2144
2083
|
|
|
@@ -2154,14 +2093,13 @@ INSN_ENTRY(defineclass)
|
|
|
2154
2093
|
RESTORE_REGS();
|
|
2155
2094
|
NEXT_INSN();
|
|
2156
2095
|
}
|
|
2157
|
-
# line
|
|
2096
|
+
# line 2097 "vm.inc"
|
|
2158
2097
|
# undef NAME_OF_CURRENT_INSN
|
|
2159
2098
|
|
|
2160
2099
|
/* ### Instruction trailers. ### */
|
|
2161
2100
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2162
2101
|
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2163
2102
|
PUSH(val);
|
|
2164
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2165
2103
|
# undef INSN_ATTR
|
|
2166
2104
|
|
|
2167
2105
|
/* ### Leave the instruction. ### */
|
|
@@ -2179,10 +2117,10 @@ INSN_ENTRY(definemethod)
|
|
|
2179
2117
|
ID id = (ID)GET_OPERAND(1);
|
|
2180
2118
|
ISEQ iseq = (ISEQ)GET_OPERAND(2);
|
|
2181
2119
|
# define INSN_ATTR(x) attr_ ## x ## _definemethod(id, iseq)
|
|
2182
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
2120
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
2183
2121
|
|
|
2184
2122
|
/* ### Instruction preambles. ### */
|
|
2185
|
-
|
|
2123
|
+
ADD_PC(INSN_ATTR(width));
|
|
2186
2124
|
POPN(INSN_ATTR(popn));
|
|
2187
2125
|
SETUP_CANARY(leaf);
|
|
2188
2126
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
@@ -2191,17 +2129,16 @@ INSN_ENTRY(definemethod)
|
|
|
2191
2129
|
|
|
2192
2130
|
/* ### Here we do the instruction body. ### */
|
|
2193
2131
|
# define NAME_OF_CURRENT_INSN definemethod
|
|
2194
|
-
# line
|
|
2132
|
+
# line 775 "insns.def"
|
|
2195
2133
|
{
|
|
2196
2134
|
vm_define_method(ec, Qnil, id, (VALUE)iseq, FALSE);
|
|
2197
2135
|
}
|
|
2198
|
-
# line
|
|
2136
|
+
# line 2137 "vm.inc"
|
|
2199
2137
|
# undef NAME_OF_CURRENT_INSN
|
|
2200
2138
|
|
|
2201
2139
|
/* ### Instruction trailers. ### */
|
|
2202
2140
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2203
2141
|
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2204
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2205
2142
|
# undef INSN_ATTR
|
|
2206
2143
|
|
|
2207
2144
|
/* ### Leave the instruction. ### */
|
|
@@ -2219,11 +2156,11 @@ INSN_ENTRY(definesmethod)
|
|
|
2219
2156
|
ID id = (ID)GET_OPERAND(1);
|
|
2220
2157
|
ISEQ iseq = (ISEQ)GET_OPERAND(2);
|
|
2221
2158
|
# define INSN_ATTR(x) attr_ ## x ## _definesmethod(id, iseq)
|
|
2222
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
2159
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
2223
2160
|
VALUE obj = TOPN(0);
|
|
2224
2161
|
|
|
2225
2162
|
/* ### Instruction preambles. ### */
|
|
2226
|
-
|
|
2163
|
+
ADD_PC(INSN_ATTR(width));
|
|
2227
2164
|
POPN(INSN_ATTR(popn));
|
|
2228
2165
|
SETUP_CANARY(leaf);
|
|
2229
2166
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
@@ -2232,17 +2169,16 @@ INSN_ENTRY(definesmethod)
|
|
|
2232
2169
|
|
|
2233
2170
|
/* ### Here we do the instruction body. ### */
|
|
2234
2171
|
# define NAME_OF_CURRENT_INSN definesmethod
|
|
2235
|
-
# line
|
|
2172
|
+
# line 784 "insns.def"
|
|
2236
2173
|
{
|
|
2237
2174
|
vm_define_method(ec, obj, id, (VALUE)iseq, TRUE);
|
|
2238
2175
|
}
|
|
2239
|
-
# line
|
|
2176
|
+
# line 2177 "vm.inc"
|
|
2240
2177
|
# undef NAME_OF_CURRENT_INSN
|
|
2241
2178
|
|
|
2242
2179
|
/* ### Instruction trailers. ### */
|
|
2243
2180
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2244
2181
|
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2245
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2246
2182
|
# undef INSN_ATTR
|
|
2247
2183
|
|
|
2248
2184
|
/* ### Leave the instruction. ### */
|
|
@@ -2260,11 +2196,11 @@ INSN_ENTRY(send)
|
|
|
2260
2196
|
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
2261
2197
|
ISEQ blockiseq = (ISEQ)GET_OPERAND(2);
|
|
2262
2198
|
# define INSN_ATTR(x) attr_ ## x ## _send(cd, blockiseq)
|
|
2263
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
2199
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
2264
2200
|
VALUE val;
|
|
2265
2201
|
|
|
2266
2202
|
/* ### Instruction preambles. ### */
|
|
2267
|
-
|
|
2203
|
+
ADD_PC(INSN_ATTR(width));
|
|
2268
2204
|
POPN(INSN_ATTR(popn));
|
|
2269
2205
|
SETUP_CANARY(leaf);
|
|
2270
2206
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
@@ -2273,7 +2209,7 @@ INSN_ENTRY(send)
|
|
|
2273
2209
|
|
|
2274
2210
|
/* ### Here we do the instruction body. ### */
|
|
2275
2211
|
# define NAME_OF_CURRENT_INSN send
|
|
2276
|
-
# line
|
|
2212
|
+
# line 800 "insns.def"
|
|
2277
2213
|
{
|
|
2278
2214
|
VALUE bh = vm_caller_setup_arg_block(ec, GET_CFP(), cd->ci, blockiseq, false);
|
|
2279
2215
|
val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_method);
|
|
@@ -2284,14 +2220,13 @@ INSN_ENTRY(send)
|
|
|
2284
2220
|
NEXT_INSN();
|
|
2285
2221
|
}
|
|
2286
2222
|
}
|
|
2287
|
-
# line
|
|
2223
|
+
# line 2224 "vm.inc"
|
|
2288
2224
|
# undef NAME_OF_CURRENT_INSN
|
|
2289
2225
|
|
|
2290
2226
|
/* ### Instruction trailers. ### */
|
|
2291
2227
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2292
2228
|
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2293
2229
|
PUSH(val);
|
|
2294
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2295
2230
|
# undef INSN_ATTR
|
|
2296
2231
|
|
|
2297
2232
|
/* ### Leave the instruction. ### */
|
|
@@ -2308,11 +2243,11 @@ INSN_ENTRY(opt_send_without_block)
|
|
|
2308
2243
|
/* ### Declare and assign variables. ### */
|
|
2309
2244
|
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
2310
2245
|
# define INSN_ATTR(x) attr_ ## x ## _opt_send_without_block(cd)
|
|
2311
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
2246
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
2312
2247
|
VALUE val;
|
|
2313
2248
|
|
|
2314
2249
|
/* ### Instruction preambles. ### */
|
|
2315
|
-
|
|
2250
|
+
ADD_PC(INSN_ATTR(width));
|
|
2316
2251
|
POPN(INSN_ATTR(popn));
|
|
2317
2252
|
SETUP_CANARY(leaf);
|
|
2318
2253
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
@@ -2320,7 +2255,7 @@ INSN_ENTRY(opt_send_without_block)
|
|
|
2320
2255
|
|
|
2321
2256
|
/* ### Here we do the instruction body. ### */
|
|
2322
2257
|
# define NAME_OF_CURRENT_INSN opt_send_without_block
|
|
2323
|
-
# line
|
|
2258
|
+
# line 820 "insns.def"
|
|
2324
2259
|
{
|
|
2325
2260
|
VALUE bh = VM_BLOCK_HANDLER_NONE;
|
|
2326
2261
|
val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_method);
|
|
@@ -2331,14 +2266,13 @@ INSN_ENTRY(opt_send_without_block)
|
|
|
2331
2266
|
NEXT_INSN();
|
|
2332
2267
|
}
|
|
2333
2268
|
}
|
|
2334
|
-
# line
|
|
2269
|
+
# line 2270 "vm.inc"
|
|
2335
2270
|
# undef NAME_OF_CURRENT_INSN
|
|
2336
2271
|
|
|
2337
2272
|
/* ### Instruction trailers. ### */
|
|
2338
2273
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2339
2274
|
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2340
2275
|
PUSH(val);
|
|
2341
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2342
2276
|
# undef INSN_ATTR
|
|
2343
2277
|
|
|
2344
2278
|
/* ### Leave the instruction. ### */
|
|
@@ -2355,19 +2289,19 @@ INSN_ENTRY(objtostring)
|
|
|
2355
2289
|
/* ### Declare and assign variables. ### */
|
|
2356
2290
|
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
2357
2291
|
# define INSN_ATTR(x) attr_ ## x ## _objtostring(cd)
|
|
2358
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
2292
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
2359
2293
|
VALUE recv = TOPN(0);
|
|
2360
2294
|
VALUE val;
|
|
2361
2295
|
|
|
2362
2296
|
/* ### Instruction preambles. ### */
|
|
2363
|
-
|
|
2297
|
+
ADD_PC(INSN_ATTR(width));
|
|
2364
2298
|
SETUP_CANARY(leaf);
|
|
2365
2299
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2366
2300
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
2367
2301
|
|
|
2368
2302
|
/* ### Here we do the instruction body. ### */
|
|
2369
2303
|
# define NAME_OF_CURRENT_INSN objtostring
|
|
2370
|
-
# line
|
|
2304
|
+
# line 838 "insns.def"
|
|
2371
2305
|
{
|
|
2372
2306
|
val = vm_objtostring(GET_ISEQ(), recv, cd);
|
|
2373
2307
|
|
|
@@ -2375,7 +2309,7 @@ INSN_ENTRY(objtostring)
|
|
|
2375
2309
|
CALL_SIMPLE_METHOD();
|
|
2376
2310
|
}
|
|
2377
2311
|
}
|
|
2378
|
-
# line
|
|
2312
|
+
# line 2313 "vm.inc"
|
|
2379
2313
|
# undef NAME_OF_CURRENT_INSN
|
|
2380
2314
|
|
|
2381
2315
|
/* ### Instruction trailers. ### */
|
|
@@ -2385,7 +2319,6 @@ INSN_ENTRY(objtostring)
|
|
|
2385
2319
|
TOPN(0) = val;
|
|
2386
2320
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
2387
2321
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
2388
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2389
2322
|
# undef INSN_ATTR
|
|
2390
2323
|
|
|
2391
2324
|
/* ### Leave the instruction. ### */
|
|
@@ -2403,11 +2336,11 @@ INSN_ENTRY(opt_str_freeze)
|
|
|
2403
2336
|
VALUE str = (VALUE)GET_OPERAND(1);
|
|
2404
2337
|
CALL_DATA cd = (CALL_DATA)GET_OPERAND(2);
|
|
2405
2338
|
# define INSN_ATTR(x) attr_ ## x ## _opt_str_freeze(str, cd)
|
|
2406
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
2339
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
2407
2340
|
VALUE val;
|
|
2408
2341
|
|
|
2409
2342
|
/* ### Instruction preambles. ### */
|
|
2410
|
-
|
|
2343
|
+
ADD_PC(INSN_ATTR(width));
|
|
2411
2344
|
SETUP_CANARY(leaf);
|
|
2412
2345
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2413
2346
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, str);
|
|
@@ -2415,7 +2348,7 @@ INSN_ENTRY(opt_str_freeze)
|
|
|
2415
2348
|
|
|
2416
2349
|
/* ### Here we do the instruction body. ### */
|
|
2417
2350
|
# define NAME_OF_CURRENT_INSN opt_str_freeze
|
|
2418
|
-
# line
|
|
2351
|
+
# line 851 "insns.def"
|
|
2419
2352
|
{
|
|
2420
2353
|
val = vm_opt_str_freeze(str, BOP_FREEZE, idFreeze);
|
|
2421
2354
|
|
|
@@ -2424,7 +2357,7 @@ INSN_ENTRY(opt_str_freeze)
|
|
|
2424
2357
|
CALL_SIMPLE_METHOD();
|
|
2425
2358
|
}
|
|
2426
2359
|
}
|
|
2427
|
-
# line
|
|
2360
|
+
# line 2361 "vm.inc"
|
|
2428
2361
|
# undef NAME_OF_CURRENT_INSN
|
|
2429
2362
|
|
|
2430
2363
|
/* ### Instruction trailers. ### */
|
|
@@ -2434,7 +2367,6 @@ INSN_ENTRY(opt_str_freeze)
|
|
|
2434
2367
|
TOPN(0) = val;
|
|
2435
2368
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
2436
2369
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
2437
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2438
2370
|
# undef INSN_ATTR
|
|
2439
2371
|
|
|
2440
2372
|
/* ### Leave the instruction. ### */
|
|
@@ -2451,19 +2383,19 @@ INSN_ENTRY(opt_nil_p)
|
|
|
2451
2383
|
/* ### Declare and assign variables. ### */
|
|
2452
2384
|
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
2453
2385
|
# define INSN_ATTR(x) attr_ ## x ## _opt_nil_p(cd)
|
|
2454
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
2386
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
2455
2387
|
VALUE recv = TOPN(0);
|
|
2456
2388
|
VALUE val;
|
|
2457
2389
|
|
|
2458
2390
|
/* ### Instruction preambles. ### */
|
|
2459
|
-
|
|
2391
|
+
ADD_PC(INSN_ATTR(width));
|
|
2460
2392
|
SETUP_CANARY(leaf);
|
|
2461
2393
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2462
2394
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
2463
2395
|
|
|
2464
2396
|
/* ### Here we do the instruction body. ### */
|
|
2465
2397
|
# define NAME_OF_CURRENT_INSN opt_nil_p
|
|
2466
|
-
# line
|
|
2398
|
+
# line 866 "insns.def"
|
|
2467
2399
|
{
|
|
2468
2400
|
val = vm_opt_nil_p(GET_ISEQ(), cd, recv);
|
|
2469
2401
|
|
|
@@ -2471,7 +2403,7 @@ INSN_ENTRY(opt_nil_p)
|
|
|
2471
2403
|
CALL_SIMPLE_METHOD();
|
|
2472
2404
|
}
|
|
2473
2405
|
}
|
|
2474
|
-
# line
|
|
2406
|
+
# line 2407 "vm.inc"
|
|
2475
2407
|
# undef NAME_OF_CURRENT_INSN
|
|
2476
2408
|
|
|
2477
2409
|
/* ### Instruction trailers. ### */
|
|
@@ -2481,7 +2413,6 @@ INSN_ENTRY(opt_nil_p)
|
|
|
2481
2413
|
TOPN(0) = val;
|
|
2482
2414
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
2483
2415
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
2484
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2485
2416
|
# undef INSN_ATTR
|
|
2486
2417
|
|
|
2487
2418
|
/* ### Leave the instruction. ### */
|
|
@@ -2499,11 +2430,11 @@ INSN_ENTRY(opt_str_uminus)
|
|
|
2499
2430
|
VALUE str = (VALUE)GET_OPERAND(1);
|
|
2500
2431
|
CALL_DATA cd = (CALL_DATA)GET_OPERAND(2);
|
|
2501
2432
|
# define INSN_ATTR(x) attr_ ## x ## _opt_str_uminus(str, cd)
|
|
2502
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
2433
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
2503
2434
|
VALUE val;
|
|
2504
2435
|
|
|
2505
2436
|
/* ### Instruction preambles. ### */
|
|
2506
|
-
|
|
2437
|
+
ADD_PC(INSN_ATTR(width));
|
|
2507
2438
|
SETUP_CANARY(leaf);
|
|
2508
2439
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2509
2440
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, str);
|
|
@@ -2511,7 +2442,7 @@ INSN_ENTRY(opt_str_uminus)
|
|
|
2511
2442
|
|
|
2512
2443
|
/* ### Here we do the instruction body. ### */
|
|
2513
2444
|
# define NAME_OF_CURRENT_INSN opt_str_uminus
|
|
2514
|
-
# line
|
|
2445
|
+
# line 879 "insns.def"
|
|
2515
2446
|
{
|
|
2516
2447
|
val = vm_opt_str_freeze(str, BOP_UMINUS, idUMinus);
|
|
2517
2448
|
|
|
@@ -2520,7 +2451,7 @@ INSN_ENTRY(opt_str_uminus)
|
|
|
2520
2451
|
CALL_SIMPLE_METHOD();
|
|
2521
2452
|
}
|
|
2522
2453
|
}
|
|
2523
|
-
# line
|
|
2454
|
+
# line 2455 "vm.inc"
|
|
2524
2455
|
# undef NAME_OF_CURRENT_INSN
|
|
2525
2456
|
|
|
2526
2457
|
/* ### Instruction trailers. ### */
|
|
@@ -2530,7 +2461,6 @@ INSN_ENTRY(opt_str_uminus)
|
|
|
2530
2461
|
TOPN(0) = val;
|
|
2531
2462
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
2532
2463
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
2533
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2534
2464
|
# undef INSN_ATTR
|
|
2535
2465
|
|
|
2536
2466
|
/* ### Leave the instruction. ### */
|
|
@@ -2548,11 +2478,11 @@ INSN_ENTRY(opt_newarray_send)
|
|
|
2548
2478
|
rb_num_t num = (rb_num_t)GET_OPERAND(1);
|
|
2549
2479
|
ID method = (ID)GET_OPERAND(2);
|
|
2550
2480
|
# define INSN_ATTR(x) attr_ ## x ## _opt_newarray_send(num, method)
|
|
2551
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
2481
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
2552
2482
|
VALUE val;
|
|
2553
2483
|
|
|
2554
2484
|
/* ### Instruction preambles. ### */
|
|
2555
|
-
|
|
2485
|
+
ADD_PC(INSN_ATTR(width));
|
|
2556
2486
|
SETUP_CANARY(leaf);
|
|
2557
2487
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2558
2488
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, num);
|
|
@@ -2560,7 +2490,7 @@ INSN_ENTRY(opt_newarray_send)
|
|
|
2560
2490
|
|
|
2561
2491
|
/* ### Here we do the instruction body. ### */
|
|
2562
2492
|
# define NAME_OF_CURRENT_INSN opt_newarray_send
|
|
2563
|
-
# line
|
|
2493
|
+
# line 900 "insns.def"
|
|
2564
2494
|
{
|
|
2565
2495
|
switch(method) {
|
|
2566
2496
|
case idHash:
|
|
@@ -2576,7 +2506,7 @@ INSN_ENTRY(opt_newarray_send)
|
|
|
2576
2506
|
rb_bug("unreachable");
|
|
2577
2507
|
}
|
|
2578
2508
|
}
|
|
2579
|
-
# line
|
|
2509
|
+
# line 2510 "vm.inc"
|
|
2580
2510
|
# undef NAME_OF_CURRENT_INSN
|
|
2581
2511
|
|
|
2582
2512
|
/* ### Instruction trailers. ### */
|
|
@@ -2586,7 +2516,6 @@ INSN_ENTRY(opt_newarray_send)
|
|
|
2586
2516
|
TOPN(0) = val;
|
|
2587
2517
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
2588
2518
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
2589
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2590
2519
|
# undef INSN_ATTR
|
|
2591
2520
|
|
|
2592
2521
|
/* ### Leave the instruction. ### */
|
|
@@ -2604,11 +2533,11 @@ INSN_ENTRY(invokesuper)
|
|
|
2604
2533
|
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
2605
2534
|
ISEQ blockiseq = (ISEQ)GET_OPERAND(2);
|
|
2606
2535
|
# define INSN_ATTR(x) attr_ ## x ## _invokesuper(cd, blockiseq)
|
|
2607
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
2536
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
2608
2537
|
VALUE val;
|
|
2609
2538
|
|
|
2610
2539
|
/* ### Instruction preambles. ### */
|
|
2611
|
-
|
|
2540
|
+
ADD_PC(INSN_ATTR(width));
|
|
2612
2541
|
POPN(INSN_ATTR(popn));
|
|
2613
2542
|
SETUP_CANARY(leaf);
|
|
2614
2543
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
@@ -2617,7 +2546,7 @@ INSN_ENTRY(invokesuper)
|
|
|
2617
2546
|
|
|
2618
2547
|
/* ### Here we do the instruction body. ### */
|
|
2619
2548
|
# define NAME_OF_CURRENT_INSN invokesuper
|
|
2620
|
-
# line
|
|
2549
|
+
# line 924 "insns.def"
|
|
2621
2550
|
{
|
|
2622
2551
|
VALUE bh = vm_caller_setup_arg_block(ec, GET_CFP(), cd->ci, blockiseq, true);
|
|
2623
2552
|
val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_super);
|
|
@@ -2628,14 +2557,13 @@ INSN_ENTRY(invokesuper)
|
|
|
2628
2557
|
NEXT_INSN();
|
|
2629
2558
|
}
|
|
2630
2559
|
}
|
|
2631
|
-
# line
|
|
2560
|
+
# line 2561 "vm.inc"
|
|
2632
2561
|
# undef NAME_OF_CURRENT_INSN
|
|
2633
2562
|
|
|
2634
2563
|
/* ### Instruction trailers. ### */
|
|
2635
2564
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2636
2565
|
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2637
2566
|
PUSH(val);
|
|
2638
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2639
2567
|
# undef INSN_ATTR
|
|
2640
2568
|
|
|
2641
2569
|
/* ### Leave the instruction. ### */
|
|
@@ -2652,11 +2580,11 @@ INSN_ENTRY(invokeblock)
|
|
|
2652
2580
|
/* ### Declare and assign variables. ### */
|
|
2653
2581
|
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
2654
2582
|
# define INSN_ATTR(x) attr_ ## x ## _invokeblock(cd)
|
|
2655
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
2583
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
2656
2584
|
VALUE val;
|
|
2657
2585
|
|
|
2658
2586
|
/* ### Instruction preambles. ### */
|
|
2659
|
-
|
|
2587
|
+
ADD_PC(INSN_ATTR(width));
|
|
2660
2588
|
POPN(INSN_ATTR(popn));
|
|
2661
2589
|
SETUP_CANARY(leaf);
|
|
2662
2590
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
@@ -2664,7 +2592,7 @@ INSN_ENTRY(invokeblock)
|
|
|
2664
2592
|
|
|
2665
2593
|
/* ### Here we do the instruction body. ### */
|
|
2666
2594
|
# define NAME_OF_CURRENT_INSN invokeblock
|
|
2667
|
-
# line
|
|
2595
|
+
# line 944 "insns.def"
|
|
2668
2596
|
{
|
|
2669
2597
|
VALUE bh = VM_BLOCK_HANDLER_NONE;
|
|
2670
2598
|
val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_invokeblock);
|
|
@@ -2675,14 +2603,13 @@ INSN_ENTRY(invokeblock)
|
|
|
2675
2603
|
NEXT_INSN();
|
|
2676
2604
|
}
|
|
2677
2605
|
}
|
|
2678
|
-
# line
|
|
2606
|
+
# line 2607 "vm.inc"
|
|
2679
2607
|
# undef NAME_OF_CURRENT_INSN
|
|
2680
2608
|
|
|
2681
2609
|
/* ### Instruction trailers. ### */
|
|
2682
2610
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2683
2611
|
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2684
2612
|
PUSH(val);
|
|
2685
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2686
2613
|
# undef INSN_ATTR
|
|
2687
2614
|
|
|
2688
2615
|
/* ### Leave the instruction. ### */
|
|
@@ -2698,18 +2625,18 @@ INSN_ENTRY(leave)
|
|
|
2698
2625
|
|
|
2699
2626
|
/* ### Declare and assign variables. ### */
|
|
2700
2627
|
# define INSN_ATTR(x) attr_ ## x ## _leave()
|
|
2701
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
2628
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
2702
2629
|
VALUE val = TOPN(0);
|
|
2703
2630
|
|
|
2704
2631
|
/* ### Instruction preambles. ### */
|
|
2705
|
-
|
|
2632
|
+
ADD_PC(INSN_ATTR(width));
|
|
2706
2633
|
POPN(INSN_ATTR(popn));
|
|
2707
2634
|
SETUP_CANARY(leaf);
|
|
2708
2635
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2709
2636
|
|
|
2710
2637
|
/* ### Here we do the instruction body. ### */
|
|
2711
2638
|
# define NAME_OF_CURRENT_INSN leave
|
|
2712
|
-
# line
|
|
2639
|
+
# line 966 "insns.def"
|
|
2713
2640
|
{
|
|
2714
2641
|
if (OPT_CHECKED_RUN) {
|
|
2715
2642
|
const VALUE *const bp = vm_base_ptr(GET_CFP());
|
|
@@ -2730,14 +2657,13 @@ INSN_ENTRY(leave)
|
|
|
2730
2657
|
RESTORE_REGS();
|
|
2731
2658
|
}
|
|
2732
2659
|
}
|
|
2733
|
-
# line
|
|
2660
|
+
# line 2661 "vm.inc"
|
|
2734
2661
|
# undef NAME_OF_CURRENT_INSN
|
|
2735
2662
|
|
|
2736
2663
|
/* ### Instruction trailers. ### */
|
|
2737
2664
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2738
2665
|
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2739
2666
|
PUSH(val);
|
|
2740
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2741
2667
|
# undef INSN_ATTR
|
|
2742
2668
|
|
|
2743
2669
|
/* ### Leave the instruction. ### */
|
|
@@ -2754,25 +2680,25 @@ INSN_ENTRY(throw)
|
|
|
2754
2680
|
/* ### Declare and assign variables. ### */
|
|
2755
2681
|
rb_num_t throw_state = (rb_num_t)GET_OPERAND(1);
|
|
2756
2682
|
# define INSN_ATTR(x) attr_ ## x ## _throw(throw_state)
|
|
2757
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
2683
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
2758
2684
|
VALUE throwobj = TOPN(0);
|
|
2759
2685
|
VALUE val;
|
|
2760
2686
|
|
|
2761
2687
|
/* ### Instruction preambles. ### */
|
|
2762
|
-
|
|
2688
|
+
ADD_PC(INSN_ATTR(width));
|
|
2763
2689
|
SETUP_CANARY(leaf);
|
|
2764
2690
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2765
2691
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, throw_state);
|
|
2766
2692
|
|
|
2767
2693
|
/* ### Here we do the instruction body. ### */
|
|
2768
2694
|
# define NAME_OF_CURRENT_INSN throw
|
|
2769
|
-
# line
|
|
2695
|
+
# line 999 "insns.def"
|
|
2770
2696
|
{
|
|
2771
2697
|
val = vm_throw(ec, GET_CFP(), throw_state, throwobj);
|
|
2772
2698
|
THROW_EXCEPTION(val);
|
|
2773
2699
|
/* unreachable */
|
|
2774
2700
|
}
|
|
2775
|
-
# line
|
|
2701
|
+
# line 2702 "vm.inc"
|
|
2776
2702
|
# undef NAME_OF_CURRENT_INSN
|
|
2777
2703
|
|
|
2778
2704
|
/* ### Instruction trailers. ### */
|
|
@@ -2782,7 +2708,6 @@ INSN_ENTRY(throw)
|
|
|
2782
2708
|
TOPN(0) = val;
|
|
2783
2709
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
2784
2710
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
2785
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2786
2711
|
# undef INSN_ATTR
|
|
2787
2712
|
|
|
2788
2713
|
/* ### Leave the instruction. ### */
|
|
@@ -2799,29 +2724,28 @@ INSN_ENTRY(jump)
|
|
|
2799
2724
|
/* ### Declare and assign variables. ### */
|
|
2800
2725
|
OFFSET dst = (OFFSET)GET_OPERAND(1);
|
|
2801
2726
|
# define INSN_ATTR(x) attr_ ## x ## _jump(dst)
|
|
2802
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
2727
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
2803
2728
|
|
|
2804
2729
|
/* ### Instruction preambles. ### */
|
|
2805
|
-
|
|
2730
|
+
ADD_PC(INSN_ATTR(width));
|
|
2806
2731
|
SETUP_CANARY(leaf);
|
|
2807
2732
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2808
2733
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, dst);
|
|
2809
2734
|
|
|
2810
2735
|
/* ### Here we do the instruction body. ### */
|
|
2811
2736
|
# define NAME_OF_CURRENT_INSN jump
|
|
2812
|
-
# line
|
|
2737
|
+
# line 1017 "insns.def"
|
|
2813
2738
|
{
|
|
2814
2739
|
RUBY_VM_CHECK_INTS(ec);
|
|
2815
2740
|
JUMP(dst);
|
|
2816
2741
|
}
|
|
2817
|
-
# line
|
|
2742
|
+
# line 2743 "vm.inc"
|
|
2818
2743
|
# undef NAME_OF_CURRENT_INSN
|
|
2819
2744
|
|
|
2820
2745
|
/* ### Instruction trailers. ### */
|
|
2821
2746
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2822
2747
|
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2823
2748
|
INC_SP(INSN_ATTR(sp_inc));
|
|
2824
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2825
2749
|
# undef INSN_ATTR
|
|
2826
2750
|
|
|
2827
2751
|
/* ### Leave the instruction. ### */
|
|
@@ -2838,32 +2762,31 @@ INSN_ENTRY(branchif)
|
|
|
2838
2762
|
/* ### Declare and assign variables. ### */
|
|
2839
2763
|
OFFSET dst = (OFFSET)GET_OPERAND(1);
|
|
2840
2764
|
# define INSN_ATTR(x) attr_ ## x ## _branchif(dst)
|
|
2841
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
2765
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
2842
2766
|
VALUE val = TOPN(0);
|
|
2843
2767
|
|
|
2844
2768
|
/* ### Instruction preambles. ### */
|
|
2845
|
-
|
|
2769
|
+
ADD_PC(INSN_ATTR(width));
|
|
2846
2770
|
SETUP_CANARY(leaf);
|
|
2847
2771
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2848
2772
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, dst);
|
|
2849
2773
|
|
|
2850
2774
|
/* ### Here we do the instruction body. ### */
|
|
2851
2775
|
# define NAME_OF_CURRENT_INSN branchif
|
|
2852
|
-
# line
|
|
2776
|
+
# line 1030 "insns.def"
|
|
2853
2777
|
{
|
|
2854
2778
|
if (RTEST(val)) {
|
|
2855
2779
|
RUBY_VM_CHECK_INTS(ec);
|
|
2856
2780
|
JUMP(dst);
|
|
2857
2781
|
}
|
|
2858
2782
|
}
|
|
2859
|
-
# line
|
|
2783
|
+
# line 2784 "vm.inc"
|
|
2860
2784
|
# undef NAME_OF_CURRENT_INSN
|
|
2861
2785
|
|
|
2862
2786
|
/* ### Instruction trailers. ### */
|
|
2863
2787
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2864
2788
|
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2865
2789
|
INC_SP(INSN_ATTR(sp_inc));
|
|
2866
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2867
2790
|
# undef INSN_ATTR
|
|
2868
2791
|
|
|
2869
2792
|
/* ### Leave the instruction. ### */
|
|
@@ -2880,32 +2803,31 @@ INSN_ENTRY(branchunless)
|
|
|
2880
2803
|
/* ### Declare and assign variables. ### */
|
|
2881
2804
|
OFFSET dst = (OFFSET)GET_OPERAND(1);
|
|
2882
2805
|
# define INSN_ATTR(x) attr_ ## x ## _branchunless(dst)
|
|
2883
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
2806
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
2884
2807
|
VALUE val = TOPN(0);
|
|
2885
2808
|
|
|
2886
2809
|
/* ### Instruction preambles. ### */
|
|
2887
|
-
|
|
2810
|
+
ADD_PC(INSN_ATTR(width));
|
|
2888
2811
|
SETUP_CANARY(leaf);
|
|
2889
2812
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2890
2813
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, dst);
|
|
2891
2814
|
|
|
2892
2815
|
/* ### Here we do the instruction body. ### */
|
|
2893
2816
|
# define NAME_OF_CURRENT_INSN branchunless
|
|
2894
|
-
# line
|
|
2817
|
+
# line 1045 "insns.def"
|
|
2895
2818
|
{
|
|
2896
2819
|
if (!RTEST(val)) {
|
|
2897
2820
|
RUBY_VM_CHECK_INTS(ec);
|
|
2898
2821
|
JUMP(dst);
|
|
2899
2822
|
}
|
|
2900
2823
|
}
|
|
2901
|
-
# line
|
|
2824
|
+
# line 2825 "vm.inc"
|
|
2902
2825
|
# undef NAME_OF_CURRENT_INSN
|
|
2903
2826
|
|
|
2904
2827
|
/* ### Instruction trailers. ### */
|
|
2905
2828
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2906
2829
|
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2907
2830
|
INC_SP(INSN_ATTR(sp_inc));
|
|
2908
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2909
2831
|
# undef INSN_ATTR
|
|
2910
2832
|
|
|
2911
2833
|
/* ### Leave the instruction. ### */
|
|
@@ -2922,32 +2844,31 @@ INSN_ENTRY(branchnil)
|
|
|
2922
2844
|
/* ### Declare and assign variables. ### */
|
|
2923
2845
|
OFFSET dst = (OFFSET)GET_OPERAND(1);
|
|
2924
2846
|
# define INSN_ATTR(x) attr_ ## x ## _branchnil(dst)
|
|
2925
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
2847
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
2926
2848
|
VALUE val = TOPN(0);
|
|
2927
2849
|
|
|
2928
2850
|
/* ### Instruction preambles. ### */
|
|
2929
|
-
|
|
2851
|
+
ADD_PC(INSN_ATTR(width));
|
|
2930
2852
|
SETUP_CANARY(leaf);
|
|
2931
2853
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2932
2854
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, dst);
|
|
2933
2855
|
|
|
2934
2856
|
/* ### Here we do the instruction body. ### */
|
|
2935
2857
|
# define NAME_OF_CURRENT_INSN branchnil
|
|
2936
|
-
# line
|
|
2858
|
+
# line 1060 "insns.def"
|
|
2937
2859
|
{
|
|
2938
2860
|
if (NIL_P(val)) {
|
|
2939
2861
|
RUBY_VM_CHECK_INTS(ec);
|
|
2940
2862
|
JUMP(dst);
|
|
2941
2863
|
}
|
|
2942
2864
|
}
|
|
2943
|
-
# line
|
|
2865
|
+
# line 2866 "vm.inc"
|
|
2944
2866
|
# undef NAME_OF_CURRENT_INSN
|
|
2945
2867
|
|
|
2946
2868
|
/* ### Instruction trailers. ### */
|
|
2947
2869
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2948
2870
|
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2949
2871
|
INC_SP(INSN_ATTR(sp_inc));
|
|
2950
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2951
2872
|
# undef INSN_ATTR
|
|
2952
2873
|
|
|
2953
2874
|
/* ### Leave the instruction. ### */
|
|
@@ -2965,11 +2886,11 @@ INSN_ENTRY(once)
|
|
|
2965
2886
|
ISEQ iseq = (ISEQ)GET_OPERAND(1);
|
|
2966
2887
|
ISE ise = (ISE)GET_OPERAND(2);
|
|
2967
2888
|
# define INSN_ATTR(x) attr_ ## x ## _once(iseq, ise)
|
|
2968
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
2889
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
2969
2890
|
VALUE val;
|
|
2970
2891
|
|
|
2971
2892
|
/* ### Instruction preambles. ### */
|
|
2972
|
-
|
|
2893
|
+
ADD_PC(INSN_ATTR(width));
|
|
2973
2894
|
POPN(INSN_ATTR(popn));
|
|
2974
2895
|
SETUP_CANARY(leaf);
|
|
2975
2896
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
@@ -2978,18 +2899,17 @@ INSN_ENTRY(once)
|
|
|
2978
2899
|
|
|
2979
2900
|
/* ### Here we do the instruction body. ### */
|
|
2980
2901
|
# define NAME_OF_CURRENT_INSN once
|
|
2981
|
-
# line
|
|
2902
|
+
# line 1077 "insns.def"
|
|
2982
2903
|
{
|
|
2983
2904
|
val = vm_once_dispatch(ec, iseq, ise);
|
|
2984
2905
|
}
|
|
2985
|
-
# line
|
|
2906
|
+
# line 2907 "vm.inc"
|
|
2986
2907
|
# undef NAME_OF_CURRENT_INSN
|
|
2987
2908
|
|
|
2988
2909
|
/* ### Instruction trailers. ### */
|
|
2989
2910
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2990
2911
|
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2991
2912
|
PUSH(val);
|
|
2992
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2993
2913
|
# undef INSN_ATTR
|
|
2994
2914
|
|
|
2995
2915
|
/* ### Leave the instruction. ### */
|
|
@@ -3007,11 +2927,11 @@ INSN_ENTRY(opt_case_dispatch)
|
|
|
3007
2927
|
CDHASH hash = (CDHASH)GET_OPERAND(1);
|
|
3008
2928
|
OFFSET else_offset = (OFFSET)GET_OPERAND(2);
|
|
3009
2929
|
# define INSN_ATTR(x) attr_ ## x ## _opt_case_dispatch(hash, else_offset)
|
|
3010
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
2930
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
3011
2931
|
VALUE key = TOPN(0);
|
|
3012
2932
|
|
|
3013
2933
|
/* ### Instruction preambles. ### */
|
|
3014
|
-
|
|
2934
|
+
ADD_PC(INSN_ATTR(width));
|
|
3015
2935
|
SETUP_CANARY(leaf);
|
|
3016
2936
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3017
2937
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, hash);
|
|
@@ -3019,7 +2939,7 @@ INSN_ENTRY(opt_case_dispatch)
|
|
|
3019
2939
|
|
|
3020
2940
|
/* ### Here we do the instruction body. ### */
|
|
3021
2941
|
# define NAME_OF_CURRENT_INSN opt_case_dispatch
|
|
3022
|
-
# line
|
|
2942
|
+
# line 1088 "insns.def"
|
|
3023
2943
|
{
|
|
3024
2944
|
OFFSET dst = vm_case_dispatch(hash, else_offset, key);
|
|
3025
2945
|
|
|
@@ -3027,14 +2947,13 @@ INSN_ENTRY(opt_case_dispatch)
|
|
|
3027
2947
|
JUMP(dst);
|
|
3028
2948
|
}
|
|
3029
2949
|
}
|
|
3030
|
-
# line
|
|
2950
|
+
# line 2951 "vm.inc"
|
|
3031
2951
|
# undef NAME_OF_CURRENT_INSN
|
|
3032
2952
|
|
|
3033
2953
|
/* ### Instruction trailers. ### */
|
|
3034
2954
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3035
2955
|
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3036
2956
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3037
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3038
2957
|
# undef INSN_ATTR
|
|
3039
2958
|
|
|
3040
2959
|
/* ### Leave the instruction. ### */
|
|
@@ -3051,20 +2970,20 @@ INSN_ENTRY(opt_plus)
|
|
|
3051
2970
|
/* ### Declare and assign variables. ### */
|
|
3052
2971
|
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3053
2972
|
# define INSN_ATTR(x) attr_ ## x ## _opt_plus(cd)
|
|
3054
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
2973
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
3055
2974
|
VALUE recv = TOPN(1);
|
|
3056
2975
|
VALUE obj = TOPN(0);
|
|
3057
2976
|
VALUE val;
|
|
3058
2977
|
|
|
3059
2978
|
/* ### Instruction preambles. ### */
|
|
3060
|
-
|
|
2979
|
+
ADD_PC(INSN_ATTR(width));
|
|
3061
2980
|
SETUP_CANARY(leaf);
|
|
3062
2981
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3063
2982
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3064
2983
|
|
|
3065
2984
|
/* ### Here we do the instruction body. ### */
|
|
3066
2985
|
# define NAME_OF_CURRENT_INSN opt_plus
|
|
3067
|
-
# line
|
|
2986
|
+
# line 1104 "insns.def"
|
|
3068
2987
|
{
|
|
3069
2988
|
val = vm_opt_plus(recv, obj);
|
|
3070
2989
|
|
|
@@ -3072,7 +2991,7 @@ INSN_ENTRY(opt_plus)
|
|
|
3072
2991
|
CALL_SIMPLE_METHOD();
|
|
3073
2992
|
}
|
|
3074
2993
|
}
|
|
3075
|
-
# line
|
|
2994
|
+
# line 2995 "vm.inc"
|
|
3076
2995
|
# undef NAME_OF_CURRENT_INSN
|
|
3077
2996
|
|
|
3078
2997
|
/* ### Instruction trailers. ### */
|
|
@@ -3082,7 +3001,6 @@ INSN_ENTRY(opt_plus)
|
|
|
3082
3001
|
TOPN(0) = val;
|
|
3083
3002
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3084
3003
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3085
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3086
3004
|
# undef INSN_ATTR
|
|
3087
3005
|
|
|
3088
3006
|
/* ### Leave the instruction. ### */
|
|
@@ -3099,20 +3017,20 @@ INSN_ENTRY(opt_minus)
|
|
|
3099
3017
|
/* ### Declare and assign variables. ### */
|
|
3100
3018
|
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3101
3019
|
# define INSN_ATTR(x) attr_ ## x ## _opt_minus(cd)
|
|
3102
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
3020
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
3103
3021
|
VALUE recv = TOPN(1);
|
|
3104
3022
|
VALUE obj = TOPN(0);
|
|
3105
3023
|
VALUE val;
|
|
3106
3024
|
|
|
3107
3025
|
/* ### Instruction preambles. ### */
|
|
3108
|
-
|
|
3026
|
+
ADD_PC(INSN_ATTR(width));
|
|
3109
3027
|
SETUP_CANARY(leaf);
|
|
3110
3028
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3111
3029
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3112
3030
|
|
|
3113
3031
|
/* ### Here we do the instruction body. ### */
|
|
3114
3032
|
# define NAME_OF_CURRENT_INSN opt_minus
|
|
3115
|
-
# line
|
|
3033
|
+
# line 1118 "insns.def"
|
|
3116
3034
|
{
|
|
3117
3035
|
val = vm_opt_minus(recv, obj);
|
|
3118
3036
|
|
|
@@ -3120,7 +3038,7 @@ INSN_ENTRY(opt_minus)
|
|
|
3120
3038
|
CALL_SIMPLE_METHOD();
|
|
3121
3039
|
}
|
|
3122
3040
|
}
|
|
3123
|
-
# line
|
|
3041
|
+
# line 3042 "vm.inc"
|
|
3124
3042
|
# undef NAME_OF_CURRENT_INSN
|
|
3125
3043
|
|
|
3126
3044
|
/* ### Instruction trailers. ### */
|
|
@@ -3130,7 +3048,6 @@ INSN_ENTRY(opt_minus)
|
|
|
3130
3048
|
TOPN(0) = val;
|
|
3131
3049
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3132
3050
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3133
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3134
3051
|
# undef INSN_ATTR
|
|
3135
3052
|
|
|
3136
3053
|
/* ### Leave the instruction. ### */
|
|
@@ -3147,20 +3064,20 @@ INSN_ENTRY(opt_mult)
|
|
|
3147
3064
|
/* ### Declare and assign variables. ### */
|
|
3148
3065
|
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3149
3066
|
# define INSN_ATTR(x) attr_ ## x ## _opt_mult(cd)
|
|
3150
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
3067
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
3151
3068
|
VALUE recv = TOPN(1);
|
|
3152
3069
|
VALUE obj = TOPN(0);
|
|
3153
3070
|
VALUE val;
|
|
3154
3071
|
|
|
3155
3072
|
/* ### Instruction preambles. ### */
|
|
3156
|
-
|
|
3073
|
+
ADD_PC(INSN_ATTR(width));
|
|
3157
3074
|
SETUP_CANARY(leaf);
|
|
3158
3075
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3159
3076
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3160
3077
|
|
|
3161
3078
|
/* ### Here we do the instruction body. ### */
|
|
3162
3079
|
# define NAME_OF_CURRENT_INSN opt_mult
|
|
3163
|
-
# line
|
|
3080
|
+
# line 1132 "insns.def"
|
|
3164
3081
|
{
|
|
3165
3082
|
val = vm_opt_mult(recv, obj);
|
|
3166
3083
|
|
|
@@ -3168,7 +3085,7 @@ INSN_ENTRY(opt_mult)
|
|
|
3168
3085
|
CALL_SIMPLE_METHOD();
|
|
3169
3086
|
}
|
|
3170
3087
|
}
|
|
3171
|
-
# line
|
|
3088
|
+
# line 3089 "vm.inc"
|
|
3172
3089
|
# undef NAME_OF_CURRENT_INSN
|
|
3173
3090
|
|
|
3174
3091
|
/* ### Instruction trailers. ### */
|
|
@@ -3178,7 +3095,6 @@ INSN_ENTRY(opt_mult)
|
|
|
3178
3095
|
TOPN(0) = val;
|
|
3179
3096
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3180
3097
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3181
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3182
3098
|
# undef INSN_ATTR
|
|
3183
3099
|
|
|
3184
3100
|
/* ### Leave the instruction. ### */
|
|
@@ -3195,20 +3111,20 @@ INSN_ENTRY(opt_div)
|
|
|
3195
3111
|
/* ### Declare and assign variables. ### */
|
|
3196
3112
|
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3197
3113
|
# define INSN_ATTR(x) attr_ ## x ## _opt_div(cd)
|
|
3198
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
3114
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
3199
3115
|
VALUE recv = TOPN(1);
|
|
3200
3116
|
VALUE obj = TOPN(0);
|
|
3201
3117
|
VALUE val;
|
|
3202
3118
|
|
|
3203
3119
|
/* ### Instruction preambles. ### */
|
|
3204
|
-
|
|
3120
|
+
ADD_PC(INSN_ATTR(width));
|
|
3205
3121
|
SETUP_CANARY(leaf);
|
|
3206
3122
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3207
3123
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3208
3124
|
|
|
3209
3125
|
/* ### Here we do the instruction body. ### */
|
|
3210
3126
|
# define NAME_OF_CURRENT_INSN opt_div
|
|
3211
|
-
# line
|
|
3127
|
+
# line 1149 "insns.def"
|
|
3212
3128
|
{
|
|
3213
3129
|
val = vm_opt_div(recv, obj);
|
|
3214
3130
|
|
|
@@ -3216,7 +3132,7 @@ INSN_ENTRY(opt_div)
|
|
|
3216
3132
|
CALL_SIMPLE_METHOD();
|
|
3217
3133
|
}
|
|
3218
3134
|
}
|
|
3219
|
-
# line
|
|
3135
|
+
# line 3136 "vm.inc"
|
|
3220
3136
|
# undef NAME_OF_CURRENT_INSN
|
|
3221
3137
|
|
|
3222
3138
|
/* ### Instruction trailers. ### */
|
|
@@ -3226,7 +3142,6 @@ INSN_ENTRY(opt_div)
|
|
|
3226
3142
|
TOPN(0) = val;
|
|
3227
3143
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3228
3144
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3229
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3230
3145
|
# undef INSN_ATTR
|
|
3231
3146
|
|
|
3232
3147
|
/* ### Leave the instruction. ### */
|
|
@@ -3243,20 +3158,20 @@ INSN_ENTRY(opt_mod)
|
|
|
3243
3158
|
/* ### Declare and assign variables. ### */
|
|
3244
3159
|
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3245
3160
|
# define INSN_ATTR(x) attr_ ## x ## _opt_mod(cd)
|
|
3246
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
3161
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
3247
3162
|
VALUE recv = TOPN(1);
|
|
3248
3163
|
VALUE obj = TOPN(0);
|
|
3249
3164
|
VALUE val;
|
|
3250
3165
|
|
|
3251
3166
|
/* ### Instruction preambles. ### */
|
|
3252
|
-
|
|
3167
|
+
ADD_PC(INSN_ATTR(width));
|
|
3253
3168
|
SETUP_CANARY(leaf);
|
|
3254
3169
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3255
3170
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3256
3171
|
|
|
3257
3172
|
/* ### Here we do the instruction body. ### */
|
|
3258
3173
|
# define NAME_OF_CURRENT_INSN opt_mod
|
|
3259
|
-
# line
|
|
3174
|
+
# line 1165 "insns.def"
|
|
3260
3175
|
{
|
|
3261
3176
|
val = vm_opt_mod(recv, obj);
|
|
3262
3177
|
|
|
@@ -3264,7 +3179,7 @@ INSN_ENTRY(opt_mod)
|
|
|
3264
3179
|
CALL_SIMPLE_METHOD();
|
|
3265
3180
|
}
|
|
3266
3181
|
}
|
|
3267
|
-
# line
|
|
3182
|
+
# line 3183 "vm.inc"
|
|
3268
3183
|
# undef NAME_OF_CURRENT_INSN
|
|
3269
3184
|
|
|
3270
3185
|
/* ### Instruction trailers. ### */
|
|
@@ -3274,7 +3189,6 @@ INSN_ENTRY(opt_mod)
|
|
|
3274
3189
|
TOPN(0) = val;
|
|
3275
3190
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3276
3191
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3277
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3278
3192
|
# undef INSN_ATTR
|
|
3279
3193
|
|
|
3280
3194
|
/* ### Leave the instruction. ### */
|
|
@@ -3291,20 +3205,20 @@ INSN_ENTRY(opt_eq)
|
|
|
3291
3205
|
/* ### Declare and assign variables. ### */
|
|
3292
3206
|
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3293
3207
|
# define INSN_ATTR(x) attr_ ## x ## _opt_eq(cd)
|
|
3294
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
3208
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
3295
3209
|
VALUE recv = TOPN(1);
|
|
3296
3210
|
VALUE obj = TOPN(0);
|
|
3297
3211
|
VALUE val;
|
|
3298
3212
|
|
|
3299
3213
|
/* ### Instruction preambles. ### */
|
|
3300
|
-
|
|
3214
|
+
ADD_PC(INSN_ATTR(width));
|
|
3301
3215
|
SETUP_CANARY(leaf);
|
|
3302
3216
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3303
3217
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3304
3218
|
|
|
3305
3219
|
/* ### Here we do the instruction body. ### */
|
|
3306
3220
|
# define NAME_OF_CURRENT_INSN opt_eq
|
|
3307
|
-
# line
|
|
3221
|
+
# line 1179 "insns.def"
|
|
3308
3222
|
{
|
|
3309
3223
|
val = opt_equality(GET_ISEQ(), recv, obj, cd);
|
|
3310
3224
|
|
|
@@ -3312,7 +3226,7 @@ INSN_ENTRY(opt_eq)
|
|
|
3312
3226
|
CALL_SIMPLE_METHOD();
|
|
3313
3227
|
}
|
|
3314
3228
|
}
|
|
3315
|
-
# line
|
|
3229
|
+
# line 3230 "vm.inc"
|
|
3316
3230
|
# undef NAME_OF_CURRENT_INSN
|
|
3317
3231
|
|
|
3318
3232
|
/* ### Instruction trailers. ### */
|
|
@@ -3322,7 +3236,6 @@ INSN_ENTRY(opt_eq)
|
|
|
3322
3236
|
TOPN(0) = val;
|
|
3323
3237
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3324
3238
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3325
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3326
3239
|
# undef INSN_ATTR
|
|
3327
3240
|
|
|
3328
3241
|
/* ### Leave the instruction. ### */
|
|
@@ -3340,13 +3253,13 @@ INSN_ENTRY(opt_neq)
|
|
|
3340
3253
|
CALL_DATA cd_eq = (CALL_DATA)GET_OPERAND(1);
|
|
3341
3254
|
CALL_DATA cd = (CALL_DATA)GET_OPERAND(2);
|
|
3342
3255
|
# define INSN_ATTR(x) attr_ ## x ## _opt_neq(cd_eq, cd)
|
|
3343
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
3256
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
3344
3257
|
VALUE recv = TOPN(1);
|
|
3345
3258
|
VALUE obj = TOPN(0);
|
|
3346
3259
|
VALUE val;
|
|
3347
3260
|
|
|
3348
3261
|
/* ### Instruction preambles. ### */
|
|
3349
|
-
|
|
3262
|
+
ADD_PC(INSN_ATTR(width));
|
|
3350
3263
|
SETUP_CANARY(leaf);
|
|
3351
3264
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3352
3265
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd_eq);
|
|
@@ -3354,7 +3267,7 @@ INSN_ENTRY(opt_neq)
|
|
|
3354
3267
|
|
|
3355
3268
|
/* ### Here we do the instruction body. ### */
|
|
3356
3269
|
# define NAME_OF_CURRENT_INSN opt_neq
|
|
3357
|
-
# line
|
|
3270
|
+
# line 1193 "insns.def"
|
|
3358
3271
|
{
|
|
3359
3272
|
val = vm_opt_neq(GET_ISEQ(), cd, cd_eq, recv, obj);
|
|
3360
3273
|
|
|
@@ -3362,7 +3275,7 @@ INSN_ENTRY(opt_neq)
|
|
|
3362
3275
|
CALL_SIMPLE_METHOD();
|
|
3363
3276
|
}
|
|
3364
3277
|
}
|
|
3365
|
-
# line
|
|
3278
|
+
# line 3279 "vm.inc"
|
|
3366
3279
|
# undef NAME_OF_CURRENT_INSN
|
|
3367
3280
|
|
|
3368
3281
|
/* ### Instruction trailers. ### */
|
|
@@ -3372,7 +3285,6 @@ INSN_ENTRY(opt_neq)
|
|
|
3372
3285
|
TOPN(0) = val;
|
|
3373
3286
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3374
3287
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3375
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3376
3288
|
# undef INSN_ATTR
|
|
3377
3289
|
|
|
3378
3290
|
/* ### Leave the instruction. ### */
|
|
@@ -3389,20 +3301,20 @@ INSN_ENTRY(opt_lt)
|
|
|
3389
3301
|
/* ### Declare and assign variables. ### */
|
|
3390
3302
|
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3391
3303
|
# define INSN_ATTR(x) attr_ ## x ## _opt_lt(cd)
|
|
3392
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
3304
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
3393
3305
|
VALUE recv = TOPN(1);
|
|
3394
3306
|
VALUE obj = TOPN(0);
|
|
3395
3307
|
VALUE val;
|
|
3396
3308
|
|
|
3397
3309
|
/* ### Instruction preambles. ### */
|
|
3398
|
-
|
|
3310
|
+
ADD_PC(INSN_ATTR(width));
|
|
3399
3311
|
SETUP_CANARY(leaf);
|
|
3400
3312
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3401
3313
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3402
3314
|
|
|
3403
3315
|
/* ### Here we do the instruction body. ### */
|
|
3404
3316
|
# define NAME_OF_CURRENT_INSN opt_lt
|
|
3405
|
-
# line
|
|
3317
|
+
# line 1207 "insns.def"
|
|
3406
3318
|
{
|
|
3407
3319
|
val = vm_opt_lt(recv, obj);
|
|
3408
3320
|
|
|
@@ -3410,7 +3322,7 @@ INSN_ENTRY(opt_lt)
|
|
|
3410
3322
|
CALL_SIMPLE_METHOD();
|
|
3411
3323
|
}
|
|
3412
3324
|
}
|
|
3413
|
-
# line
|
|
3325
|
+
# line 3326 "vm.inc"
|
|
3414
3326
|
# undef NAME_OF_CURRENT_INSN
|
|
3415
3327
|
|
|
3416
3328
|
/* ### Instruction trailers. ### */
|
|
@@ -3420,7 +3332,6 @@ INSN_ENTRY(opt_lt)
|
|
|
3420
3332
|
TOPN(0) = val;
|
|
3421
3333
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3422
3334
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3423
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3424
3335
|
# undef INSN_ATTR
|
|
3425
3336
|
|
|
3426
3337
|
/* ### Leave the instruction. ### */
|
|
@@ -3437,20 +3348,20 @@ INSN_ENTRY(opt_le)
|
|
|
3437
3348
|
/* ### Declare and assign variables. ### */
|
|
3438
3349
|
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3439
3350
|
# define INSN_ATTR(x) attr_ ## x ## _opt_le(cd)
|
|
3440
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
3351
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
3441
3352
|
VALUE recv = TOPN(1);
|
|
3442
3353
|
VALUE obj = TOPN(0);
|
|
3443
3354
|
VALUE val;
|
|
3444
3355
|
|
|
3445
3356
|
/* ### Instruction preambles. ### */
|
|
3446
|
-
|
|
3357
|
+
ADD_PC(INSN_ATTR(width));
|
|
3447
3358
|
SETUP_CANARY(leaf);
|
|
3448
3359
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3449
3360
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3450
3361
|
|
|
3451
3362
|
/* ### Here we do the instruction body. ### */
|
|
3452
3363
|
# define NAME_OF_CURRENT_INSN opt_le
|
|
3453
|
-
# line
|
|
3364
|
+
# line 1221 "insns.def"
|
|
3454
3365
|
{
|
|
3455
3366
|
val = vm_opt_le(recv, obj);
|
|
3456
3367
|
|
|
@@ -3458,7 +3369,7 @@ INSN_ENTRY(opt_le)
|
|
|
3458
3369
|
CALL_SIMPLE_METHOD();
|
|
3459
3370
|
}
|
|
3460
3371
|
}
|
|
3461
|
-
# line
|
|
3372
|
+
# line 3373 "vm.inc"
|
|
3462
3373
|
# undef NAME_OF_CURRENT_INSN
|
|
3463
3374
|
|
|
3464
3375
|
/* ### Instruction trailers. ### */
|
|
@@ -3468,7 +3379,6 @@ INSN_ENTRY(opt_le)
|
|
|
3468
3379
|
TOPN(0) = val;
|
|
3469
3380
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3470
3381
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3471
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3472
3382
|
# undef INSN_ATTR
|
|
3473
3383
|
|
|
3474
3384
|
/* ### Leave the instruction. ### */
|
|
@@ -3485,20 +3395,20 @@ INSN_ENTRY(opt_gt)
|
|
|
3485
3395
|
/* ### Declare and assign variables. ### */
|
|
3486
3396
|
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3487
3397
|
# define INSN_ATTR(x) attr_ ## x ## _opt_gt(cd)
|
|
3488
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
3398
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
3489
3399
|
VALUE recv = TOPN(1);
|
|
3490
3400
|
VALUE obj = TOPN(0);
|
|
3491
3401
|
VALUE val;
|
|
3492
3402
|
|
|
3493
3403
|
/* ### Instruction preambles. ### */
|
|
3494
|
-
|
|
3404
|
+
ADD_PC(INSN_ATTR(width));
|
|
3495
3405
|
SETUP_CANARY(leaf);
|
|
3496
3406
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3497
3407
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3498
3408
|
|
|
3499
3409
|
/* ### Here we do the instruction body. ### */
|
|
3500
3410
|
# define NAME_OF_CURRENT_INSN opt_gt
|
|
3501
|
-
# line
|
|
3411
|
+
# line 1235 "insns.def"
|
|
3502
3412
|
{
|
|
3503
3413
|
val = vm_opt_gt(recv, obj);
|
|
3504
3414
|
|
|
@@ -3506,7 +3416,7 @@ INSN_ENTRY(opt_gt)
|
|
|
3506
3416
|
CALL_SIMPLE_METHOD();
|
|
3507
3417
|
}
|
|
3508
3418
|
}
|
|
3509
|
-
# line
|
|
3419
|
+
# line 3420 "vm.inc"
|
|
3510
3420
|
# undef NAME_OF_CURRENT_INSN
|
|
3511
3421
|
|
|
3512
3422
|
/* ### Instruction trailers. ### */
|
|
@@ -3516,7 +3426,6 @@ INSN_ENTRY(opt_gt)
|
|
|
3516
3426
|
TOPN(0) = val;
|
|
3517
3427
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3518
3428
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3519
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3520
3429
|
# undef INSN_ATTR
|
|
3521
3430
|
|
|
3522
3431
|
/* ### Leave the instruction. ### */
|
|
@@ -3533,20 +3442,20 @@ INSN_ENTRY(opt_ge)
|
|
|
3533
3442
|
/* ### Declare and assign variables. ### */
|
|
3534
3443
|
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3535
3444
|
# define INSN_ATTR(x) attr_ ## x ## _opt_ge(cd)
|
|
3536
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
3445
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
3537
3446
|
VALUE recv = TOPN(1);
|
|
3538
3447
|
VALUE obj = TOPN(0);
|
|
3539
3448
|
VALUE val;
|
|
3540
3449
|
|
|
3541
3450
|
/* ### Instruction preambles. ### */
|
|
3542
|
-
|
|
3451
|
+
ADD_PC(INSN_ATTR(width));
|
|
3543
3452
|
SETUP_CANARY(leaf);
|
|
3544
3453
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3545
3454
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3546
3455
|
|
|
3547
3456
|
/* ### Here we do the instruction body. ### */
|
|
3548
3457
|
# define NAME_OF_CURRENT_INSN opt_ge
|
|
3549
|
-
# line
|
|
3458
|
+
# line 1249 "insns.def"
|
|
3550
3459
|
{
|
|
3551
3460
|
val = vm_opt_ge(recv, obj);
|
|
3552
3461
|
|
|
@@ -3554,7 +3463,7 @@ INSN_ENTRY(opt_ge)
|
|
|
3554
3463
|
CALL_SIMPLE_METHOD();
|
|
3555
3464
|
}
|
|
3556
3465
|
}
|
|
3557
|
-
# line
|
|
3466
|
+
# line 3467 "vm.inc"
|
|
3558
3467
|
# undef NAME_OF_CURRENT_INSN
|
|
3559
3468
|
|
|
3560
3469
|
/* ### Instruction trailers. ### */
|
|
@@ -3564,7 +3473,6 @@ INSN_ENTRY(opt_ge)
|
|
|
3564
3473
|
TOPN(0) = val;
|
|
3565
3474
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3566
3475
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3567
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3568
3476
|
# undef INSN_ATTR
|
|
3569
3477
|
|
|
3570
3478
|
/* ### Leave the instruction. ### */
|
|
@@ -3581,20 +3489,20 @@ INSN_ENTRY(opt_ltlt)
|
|
|
3581
3489
|
/* ### Declare and assign variables. ### */
|
|
3582
3490
|
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3583
3491
|
# define INSN_ATTR(x) attr_ ## x ## _opt_ltlt(cd)
|
|
3584
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
3492
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
3585
3493
|
VALUE recv = TOPN(1);
|
|
3586
3494
|
VALUE obj = TOPN(0);
|
|
3587
3495
|
VALUE val;
|
|
3588
3496
|
|
|
3589
3497
|
/* ### Instruction preambles. ### */
|
|
3590
|
-
|
|
3498
|
+
ADD_PC(INSN_ATTR(width));
|
|
3591
3499
|
SETUP_CANARY(leaf);
|
|
3592
3500
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3593
3501
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3594
3502
|
|
|
3595
3503
|
/* ### Here we do the instruction body. ### */
|
|
3596
3504
|
# define NAME_OF_CURRENT_INSN opt_ltlt
|
|
3597
|
-
# line
|
|
3505
|
+
# line 1267 "insns.def"
|
|
3598
3506
|
{
|
|
3599
3507
|
val = vm_opt_ltlt(recv, obj);
|
|
3600
3508
|
|
|
@@ -3602,7 +3510,7 @@ INSN_ENTRY(opt_ltlt)
|
|
|
3602
3510
|
CALL_SIMPLE_METHOD();
|
|
3603
3511
|
}
|
|
3604
3512
|
}
|
|
3605
|
-
# line
|
|
3513
|
+
# line 3514 "vm.inc"
|
|
3606
3514
|
# undef NAME_OF_CURRENT_INSN
|
|
3607
3515
|
|
|
3608
3516
|
/* ### Instruction trailers. ### */
|
|
@@ -3612,7 +3520,6 @@ INSN_ENTRY(opt_ltlt)
|
|
|
3612
3520
|
TOPN(0) = val;
|
|
3613
3521
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3614
3522
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3615
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3616
3523
|
# undef INSN_ATTR
|
|
3617
3524
|
|
|
3618
3525
|
/* ### Leave the instruction. ### */
|
|
@@ -3629,20 +3536,20 @@ INSN_ENTRY(opt_and)
|
|
|
3629
3536
|
/* ### Declare and assign variables. ### */
|
|
3630
3537
|
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3631
3538
|
# define INSN_ATTR(x) attr_ ## x ## _opt_and(cd)
|
|
3632
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
3539
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
3633
3540
|
VALUE recv = TOPN(1);
|
|
3634
3541
|
VALUE obj = TOPN(0);
|
|
3635
3542
|
VALUE val;
|
|
3636
3543
|
|
|
3637
3544
|
/* ### Instruction preambles. ### */
|
|
3638
|
-
|
|
3545
|
+
ADD_PC(INSN_ATTR(width));
|
|
3639
3546
|
SETUP_CANARY(leaf);
|
|
3640
3547
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3641
3548
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3642
3549
|
|
|
3643
3550
|
/* ### Here we do the instruction body. ### */
|
|
3644
3551
|
# define NAME_OF_CURRENT_INSN opt_and
|
|
3645
|
-
# line
|
|
3552
|
+
# line 1281 "insns.def"
|
|
3646
3553
|
{
|
|
3647
3554
|
val = vm_opt_and(recv, obj);
|
|
3648
3555
|
|
|
@@ -3650,7 +3557,7 @@ INSN_ENTRY(opt_and)
|
|
|
3650
3557
|
CALL_SIMPLE_METHOD();
|
|
3651
3558
|
}
|
|
3652
3559
|
}
|
|
3653
|
-
# line
|
|
3560
|
+
# line 3561 "vm.inc"
|
|
3654
3561
|
# undef NAME_OF_CURRENT_INSN
|
|
3655
3562
|
|
|
3656
3563
|
/* ### Instruction trailers. ### */
|
|
@@ -3660,7 +3567,6 @@ INSN_ENTRY(opt_and)
|
|
|
3660
3567
|
TOPN(0) = val;
|
|
3661
3568
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3662
3569
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3663
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3664
3570
|
# undef INSN_ATTR
|
|
3665
3571
|
|
|
3666
3572
|
/* ### Leave the instruction. ### */
|
|
@@ -3677,20 +3583,20 @@ INSN_ENTRY(opt_or)
|
|
|
3677
3583
|
/* ### Declare and assign variables. ### */
|
|
3678
3584
|
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3679
3585
|
# define INSN_ATTR(x) attr_ ## x ## _opt_or(cd)
|
|
3680
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
3586
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
3681
3587
|
VALUE recv = TOPN(1);
|
|
3682
3588
|
VALUE obj = TOPN(0);
|
|
3683
3589
|
VALUE val;
|
|
3684
3590
|
|
|
3685
3591
|
/* ### Instruction preambles. ### */
|
|
3686
|
-
|
|
3592
|
+
ADD_PC(INSN_ATTR(width));
|
|
3687
3593
|
SETUP_CANARY(leaf);
|
|
3688
3594
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3689
3595
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3690
3596
|
|
|
3691
3597
|
/* ### Here we do the instruction body. ### */
|
|
3692
3598
|
# define NAME_OF_CURRENT_INSN opt_or
|
|
3693
|
-
# line
|
|
3599
|
+
# line 1295 "insns.def"
|
|
3694
3600
|
{
|
|
3695
3601
|
val = vm_opt_or(recv, obj);
|
|
3696
3602
|
|
|
@@ -3698,7 +3604,7 @@ INSN_ENTRY(opt_or)
|
|
|
3698
3604
|
CALL_SIMPLE_METHOD();
|
|
3699
3605
|
}
|
|
3700
3606
|
}
|
|
3701
|
-
# line
|
|
3607
|
+
# line 3608 "vm.inc"
|
|
3702
3608
|
# undef NAME_OF_CURRENT_INSN
|
|
3703
3609
|
|
|
3704
3610
|
/* ### Instruction trailers. ### */
|
|
@@ -3708,7 +3614,6 @@ INSN_ENTRY(opt_or)
|
|
|
3708
3614
|
TOPN(0) = val;
|
|
3709
3615
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3710
3616
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3711
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3712
3617
|
# undef INSN_ATTR
|
|
3713
3618
|
|
|
3714
3619
|
/* ### Leave the instruction. ### */
|
|
@@ -3725,20 +3630,20 @@ INSN_ENTRY(opt_aref)
|
|
|
3725
3630
|
/* ### Declare and assign variables. ### */
|
|
3726
3631
|
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3727
3632
|
# define INSN_ATTR(x) attr_ ## x ## _opt_aref(cd)
|
|
3728
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
3633
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
3729
3634
|
VALUE recv = TOPN(1);
|
|
3730
3635
|
VALUE obj = TOPN(0);
|
|
3731
3636
|
VALUE val;
|
|
3732
3637
|
|
|
3733
3638
|
/* ### Instruction preambles. ### */
|
|
3734
|
-
|
|
3639
|
+
ADD_PC(INSN_ATTR(width));
|
|
3735
3640
|
SETUP_CANARY(leaf);
|
|
3736
3641
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3737
3642
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3738
3643
|
|
|
3739
3644
|
/* ### Here we do the instruction body. ### */
|
|
3740
3645
|
# define NAME_OF_CURRENT_INSN opt_aref
|
|
3741
|
-
# line
|
|
3646
|
+
# line 1314 "insns.def"
|
|
3742
3647
|
{
|
|
3743
3648
|
val = vm_opt_aref(recv, obj);
|
|
3744
3649
|
|
|
@@ -3746,7 +3651,7 @@ INSN_ENTRY(opt_aref)
|
|
|
3746
3651
|
CALL_SIMPLE_METHOD();
|
|
3747
3652
|
}
|
|
3748
3653
|
}
|
|
3749
|
-
# line
|
|
3654
|
+
# line 3655 "vm.inc"
|
|
3750
3655
|
# undef NAME_OF_CURRENT_INSN
|
|
3751
3656
|
|
|
3752
3657
|
/* ### Instruction trailers. ### */
|
|
@@ -3756,7 +3661,6 @@ INSN_ENTRY(opt_aref)
|
|
|
3756
3661
|
TOPN(0) = val;
|
|
3757
3662
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3758
3663
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3759
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3760
3664
|
# undef INSN_ATTR
|
|
3761
3665
|
|
|
3762
3666
|
/* ### Leave the instruction. ### */
|
|
@@ -3773,21 +3677,21 @@ INSN_ENTRY(opt_aset)
|
|
|
3773
3677
|
/* ### Declare and assign variables. ### */
|
|
3774
3678
|
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3775
3679
|
# define INSN_ATTR(x) attr_ ## x ## _opt_aset(cd)
|
|
3776
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
3680
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
3777
3681
|
VALUE recv = TOPN(2);
|
|
3778
3682
|
VALUE obj = TOPN(1);
|
|
3779
3683
|
VALUE set = TOPN(0);
|
|
3780
3684
|
VALUE val;
|
|
3781
3685
|
|
|
3782
3686
|
/* ### Instruction preambles. ### */
|
|
3783
|
-
|
|
3687
|
+
ADD_PC(INSN_ATTR(width));
|
|
3784
3688
|
SETUP_CANARY(leaf);
|
|
3785
3689
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3786
3690
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3787
3691
|
|
|
3788
3692
|
/* ### Here we do the instruction body. ### */
|
|
3789
3693
|
# define NAME_OF_CURRENT_INSN opt_aset
|
|
3790
|
-
# line
|
|
3694
|
+
# line 1331 "insns.def"
|
|
3791
3695
|
{
|
|
3792
3696
|
val = vm_opt_aset(recv, obj, set);
|
|
3793
3697
|
|
|
@@ -3795,7 +3699,7 @@ INSN_ENTRY(opt_aset)
|
|
|
3795
3699
|
CALL_SIMPLE_METHOD();
|
|
3796
3700
|
}
|
|
3797
3701
|
}
|
|
3798
|
-
# line
|
|
3702
|
+
# line 3703 "vm.inc"
|
|
3799
3703
|
# undef NAME_OF_CURRENT_INSN
|
|
3800
3704
|
|
|
3801
3705
|
/* ### Instruction trailers. ### */
|
|
@@ -3805,7 +3709,6 @@ INSN_ENTRY(opt_aset)
|
|
|
3805
3709
|
TOPN(0) = val;
|
|
3806
3710
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3807
3711
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3808
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3809
3712
|
# undef INSN_ATTR
|
|
3810
3713
|
|
|
3811
3714
|
/* ### Leave the instruction. ### */
|
|
@@ -3823,12 +3726,12 @@ INSN_ENTRY(opt_aset_with)
|
|
|
3823
3726
|
VALUE key = (VALUE)GET_OPERAND(1);
|
|
3824
3727
|
CALL_DATA cd = (CALL_DATA)GET_OPERAND(2);
|
|
3825
3728
|
# define INSN_ATTR(x) attr_ ## x ## _opt_aset_with(key, cd)
|
|
3826
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
3729
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
3827
3730
|
VALUE recv = TOPN(1);
|
|
3828
3731
|
VALUE val = TOPN(0);
|
|
3829
3732
|
|
|
3830
3733
|
/* ### Instruction preambles. ### */
|
|
3831
|
-
|
|
3734
|
+
ADD_PC(INSN_ATTR(width));
|
|
3832
3735
|
SETUP_CANARY(leaf);
|
|
3833
3736
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3834
3737
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, key);
|
|
@@ -3836,7 +3739,7 @@ INSN_ENTRY(opt_aset_with)
|
|
|
3836
3739
|
|
|
3837
3740
|
/* ### Here we do the instruction body. ### */
|
|
3838
3741
|
# define NAME_OF_CURRENT_INSN opt_aset_with
|
|
3839
|
-
# line
|
|
3742
|
+
# line 1347 "insns.def"
|
|
3840
3743
|
{
|
|
3841
3744
|
VALUE tmp = vm_opt_aset_with(recv, key, val);
|
|
3842
3745
|
|
|
@@ -3849,7 +3752,7 @@ INSN_ENTRY(opt_aset_with)
|
|
|
3849
3752
|
CALL_SIMPLE_METHOD();
|
|
3850
3753
|
}
|
|
3851
3754
|
}
|
|
3852
|
-
# line
|
|
3755
|
+
# line 3756 "vm.inc"
|
|
3853
3756
|
# undef NAME_OF_CURRENT_INSN
|
|
3854
3757
|
|
|
3855
3758
|
/* ### Instruction trailers. ### */
|
|
@@ -3859,7 +3762,6 @@ INSN_ENTRY(opt_aset_with)
|
|
|
3859
3762
|
TOPN(0) = val;
|
|
3860
3763
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3861
3764
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3862
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3863
3765
|
# undef INSN_ATTR
|
|
3864
3766
|
|
|
3865
3767
|
/* ### Leave the instruction. ### */
|
|
@@ -3877,12 +3779,12 @@ INSN_ENTRY(opt_aref_with)
|
|
|
3877
3779
|
VALUE key = (VALUE)GET_OPERAND(1);
|
|
3878
3780
|
CALL_DATA cd = (CALL_DATA)GET_OPERAND(2);
|
|
3879
3781
|
# define INSN_ATTR(x) attr_ ## x ## _opt_aref_with(key, cd)
|
|
3880
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
3782
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
3881
3783
|
VALUE recv = TOPN(0);
|
|
3882
3784
|
VALUE val;
|
|
3883
3785
|
|
|
3884
3786
|
/* ### Instruction preambles. ### */
|
|
3885
|
-
|
|
3787
|
+
ADD_PC(INSN_ATTR(width));
|
|
3886
3788
|
SETUP_CANARY(leaf);
|
|
3887
3789
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3888
3790
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, key);
|
|
@@ -3890,7 +3792,7 @@ INSN_ENTRY(opt_aref_with)
|
|
|
3890
3792
|
|
|
3891
3793
|
/* ### Here we do the instruction body. ### */
|
|
3892
3794
|
# define NAME_OF_CURRENT_INSN opt_aref_with
|
|
3893
|
-
# line
|
|
3795
|
+
# line 1368 "insns.def"
|
|
3894
3796
|
{
|
|
3895
3797
|
val = vm_opt_aref_with(recv, key);
|
|
3896
3798
|
|
|
@@ -3899,7 +3801,7 @@ INSN_ENTRY(opt_aref_with)
|
|
|
3899
3801
|
CALL_SIMPLE_METHOD();
|
|
3900
3802
|
}
|
|
3901
3803
|
}
|
|
3902
|
-
# line
|
|
3804
|
+
# line 3805 "vm.inc"
|
|
3903
3805
|
# undef NAME_OF_CURRENT_INSN
|
|
3904
3806
|
|
|
3905
3807
|
/* ### Instruction trailers. ### */
|
|
@@ -3909,7 +3811,6 @@ INSN_ENTRY(opt_aref_with)
|
|
|
3909
3811
|
TOPN(0) = val;
|
|
3910
3812
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3911
3813
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3912
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3913
3814
|
# undef INSN_ATTR
|
|
3914
3815
|
|
|
3915
3816
|
/* ### Leave the instruction. ### */
|
|
@@ -3926,19 +3827,19 @@ INSN_ENTRY(opt_length)
|
|
|
3926
3827
|
/* ### Declare and assign variables. ### */
|
|
3927
3828
|
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3928
3829
|
# define INSN_ATTR(x) attr_ ## x ## _opt_length(cd)
|
|
3929
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
3830
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
3930
3831
|
VALUE recv = TOPN(0);
|
|
3931
3832
|
VALUE val;
|
|
3932
3833
|
|
|
3933
3834
|
/* ### Instruction preambles. ### */
|
|
3934
|
-
|
|
3835
|
+
ADD_PC(INSN_ATTR(width));
|
|
3935
3836
|
SETUP_CANARY(leaf);
|
|
3936
3837
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3937
3838
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3938
3839
|
|
|
3939
3840
|
/* ### Here we do the instruction body. ### */
|
|
3940
3841
|
# define NAME_OF_CURRENT_INSN opt_length
|
|
3941
|
-
# line
|
|
3842
|
+
# line 1383 "insns.def"
|
|
3942
3843
|
{
|
|
3943
3844
|
val = vm_opt_length(recv, BOP_LENGTH);
|
|
3944
3845
|
|
|
@@ -3946,7 +3847,7 @@ INSN_ENTRY(opt_length)
|
|
|
3946
3847
|
CALL_SIMPLE_METHOD();
|
|
3947
3848
|
}
|
|
3948
3849
|
}
|
|
3949
|
-
# line
|
|
3850
|
+
# line 3851 "vm.inc"
|
|
3950
3851
|
# undef NAME_OF_CURRENT_INSN
|
|
3951
3852
|
|
|
3952
3853
|
/* ### Instruction trailers. ### */
|
|
@@ -3956,7 +3857,6 @@ INSN_ENTRY(opt_length)
|
|
|
3956
3857
|
TOPN(0) = val;
|
|
3957
3858
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3958
3859
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3959
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3960
3860
|
# undef INSN_ATTR
|
|
3961
3861
|
|
|
3962
3862
|
/* ### Leave the instruction. ### */
|
|
@@ -3973,19 +3873,19 @@ INSN_ENTRY(opt_size)
|
|
|
3973
3873
|
/* ### Declare and assign variables. ### */
|
|
3974
3874
|
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3975
3875
|
# define INSN_ATTR(x) attr_ ## x ## _opt_size(cd)
|
|
3976
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
3876
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
3977
3877
|
VALUE recv = TOPN(0);
|
|
3978
3878
|
VALUE val;
|
|
3979
3879
|
|
|
3980
3880
|
/* ### Instruction preambles. ### */
|
|
3981
|
-
|
|
3881
|
+
ADD_PC(INSN_ATTR(width));
|
|
3982
3882
|
SETUP_CANARY(leaf);
|
|
3983
3883
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3984
3884
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3985
3885
|
|
|
3986
3886
|
/* ### Here we do the instruction body. ### */
|
|
3987
3887
|
# define NAME_OF_CURRENT_INSN opt_size
|
|
3988
|
-
# line
|
|
3888
|
+
# line 1397 "insns.def"
|
|
3989
3889
|
{
|
|
3990
3890
|
val = vm_opt_length(recv, BOP_SIZE);
|
|
3991
3891
|
|
|
@@ -3993,7 +3893,7 @@ INSN_ENTRY(opt_size)
|
|
|
3993
3893
|
CALL_SIMPLE_METHOD();
|
|
3994
3894
|
}
|
|
3995
3895
|
}
|
|
3996
|
-
# line
|
|
3896
|
+
# line 3897 "vm.inc"
|
|
3997
3897
|
# undef NAME_OF_CURRENT_INSN
|
|
3998
3898
|
|
|
3999
3899
|
/* ### Instruction trailers. ### */
|
|
@@ -4003,7 +3903,6 @@ INSN_ENTRY(opt_size)
|
|
|
4003
3903
|
TOPN(0) = val;
|
|
4004
3904
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
4005
3905
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
4006
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4007
3906
|
# undef INSN_ATTR
|
|
4008
3907
|
|
|
4009
3908
|
/* ### Leave the instruction. ### */
|
|
@@ -4020,19 +3919,19 @@ INSN_ENTRY(opt_empty_p)
|
|
|
4020
3919
|
/* ### Declare and assign variables. ### */
|
|
4021
3920
|
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
4022
3921
|
# define INSN_ATTR(x) attr_ ## x ## _opt_empty_p(cd)
|
|
4023
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
3922
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
4024
3923
|
VALUE recv = TOPN(0);
|
|
4025
3924
|
VALUE val;
|
|
4026
3925
|
|
|
4027
3926
|
/* ### Instruction preambles. ### */
|
|
4028
|
-
|
|
3927
|
+
ADD_PC(INSN_ATTR(width));
|
|
4029
3928
|
SETUP_CANARY(leaf);
|
|
4030
3929
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
4031
3930
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
4032
3931
|
|
|
4033
3932
|
/* ### Here we do the instruction body. ### */
|
|
4034
3933
|
# define NAME_OF_CURRENT_INSN opt_empty_p
|
|
4035
|
-
# line
|
|
3934
|
+
# line 1411 "insns.def"
|
|
4036
3935
|
{
|
|
4037
3936
|
val = vm_opt_empty_p(recv);
|
|
4038
3937
|
|
|
@@ -4040,7 +3939,7 @@ INSN_ENTRY(opt_empty_p)
|
|
|
4040
3939
|
CALL_SIMPLE_METHOD();
|
|
4041
3940
|
}
|
|
4042
3941
|
}
|
|
4043
|
-
# line
|
|
3942
|
+
# line 3943 "vm.inc"
|
|
4044
3943
|
# undef NAME_OF_CURRENT_INSN
|
|
4045
3944
|
|
|
4046
3945
|
/* ### Instruction trailers. ### */
|
|
@@ -4050,7 +3949,6 @@ INSN_ENTRY(opt_empty_p)
|
|
|
4050
3949
|
TOPN(0) = val;
|
|
4051
3950
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
4052
3951
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
4053
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4054
3952
|
# undef INSN_ATTR
|
|
4055
3953
|
|
|
4056
3954
|
/* ### Leave the instruction. ### */
|
|
@@ -4067,19 +3965,19 @@ INSN_ENTRY(opt_succ)
|
|
|
4067
3965
|
/* ### Declare and assign variables. ### */
|
|
4068
3966
|
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
4069
3967
|
# define INSN_ATTR(x) attr_ ## x ## _opt_succ(cd)
|
|
4070
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
3968
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
4071
3969
|
VALUE recv = TOPN(0);
|
|
4072
3970
|
VALUE val;
|
|
4073
3971
|
|
|
4074
3972
|
/* ### Instruction preambles. ### */
|
|
4075
|
-
|
|
3973
|
+
ADD_PC(INSN_ATTR(width));
|
|
4076
3974
|
SETUP_CANARY(leaf);
|
|
4077
3975
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
4078
3976
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
4079
3977
|
|
|
4080
3978
|
/* ### Here we do the instruction body. ### */
|
|
4081
3979
|
# define NAME_OF_CURRENT_INSN opt_succ
|
|
4082
|
-
# line
|
|
3980
|
+
# line 1425 "insns.def"
|
|
4083
3981
|
{
|
|
4084
3982
|
val = vm_opt_succ(recv);
|
|
4085
3983
|
|
|
@@ -4087,7 +3985,7 @@ INSN_ENTRY(opt_succ)
|
|
|
4087
3985
|
CALL_SIMPLE_METHOD();
|
|
4088
3986
|
}
|
|
4089
3987
|
}
|
|
4090
|
-
# line
|
|
3988
|
+
# line 3989 "vm.inc"
|
|
4091
3989
|
# undef NAME_OF_CURRENT_INSN
|
|
4092
3990
|
|
|
4093
3991
|
/* ### Instruction trailers. ### */
|
|
@@ -4097,7 +3995,6 @@ INSN_ENTRY(opt_succ)
|
|
|
4097
3995
|
TOPN(0) = val;
|
|
4098
3996
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
4099
3997
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
4100
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4101
3998
|
# undef INSN_ATTR
|
|
4102
3999
|
|
|
4103
4000
|
/* ### Leave the instruction. ### */
|
|
@@ -4114,19 +4011,19 @@ INSN_ENTRY(opt_not)
|
|
|
4114
4011
|
/* ### Declare and assign variables. ### */
|
|
4115
4012
|
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
4116
4013
|
# define INSN_ATTR(x) attr_ ## x ## _opt_not(cd)
|
|
4117
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
4014
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
4118
4015
|
VALUE recv = TOPN(0);
|
|
4119
4016
|
VALUE val;
|
|
4120
4017
|
|
|
4121
4018
|
/* ### Instruction preambles. ### */
|
|
4122
|
-
|
|
4019
|
+
ADD_PC(INSN_ATTR(width));
|
|
4123
4020
|
SETUP_CANARY(leaf);
|
|
4124
4021
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
4125
4022
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
4126
4023
|
|
|
4127
4024
|
/* ### Here we do the instruction body. ### */
|
|
4128
4025
|
# define NAME_OF_CURRENT_INSN opt_not
|
|
4129
|
-
# line
|
|
4026
|
+
# line 1439 "insns.def"
|
|
4130
4027
|
{
|
|
4131
4028
|
val = vm_opt_not(GET_ISEQ(), cd, recv);
|
|
4132
4029
|
|
|
@@ -4134,7 +4031,7 @@ INSN_ENTRY(opt_not)
|
|
|
4134
4031
|
CALL_SIMPLE_METHOD();
|
|
4135
4032
|
}
|
|
4136
4033
|
}
|
|
4137
|
-
# line
|
|
4034
|
+
# line 4035 "vm.inc"
|
|
4138
4035
|
# undef NAME_OF_CURRENT_INSN
|
|
4139
4036
|
|
|
4140
4037
|
/* ### Instruction trailers. ### */
|
|
@@ -4144,7 +4041,6 @@ INSN_ENTRY(opt_not)
|
|
|
4144
4041
|
TOPN(0) = val;
|
|
4145
4042
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
4146
4043
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
4147
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4148
4044
|
# undef INSN_ATTR
|
|
4149
4045
|
|
|
4150
4046
|
/* ### Leave the instruction. ### */
|
|
@@ -4161,20 +4057,20 @@ INSN_ENTRY(opt_regexpmatch2)
|
|
|
4161
4057
|
/* ### Declare and assign variables. ### */
|
|
4162
4058
|
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
4163
4059
|
# define INSN_ATTR(x) attr_ ## x ## _opt_regexpmatch2(cd)
|
|
4164
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
4060
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
4165
4061
|
VALUE obj2 = TOPN(1);
|
|
4166
4062
|
VALUE obj1 = TOPN(0);
|
|
4167
4063
|
VALUE val;
|
|
4168
4064
|
|
|
4169
4065
|
/* ### Instruction preambles. ### */
|
|
4170
|
-
|
|
4066
|
+
ADD_PC(INSN_ATTR(width));
|
|
4171
4067
|
SETUP_CANARY(leaf);
|
|
4172
4068
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
4173
4069
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
4174
4070
|
|
|
4175
4071
|
/* ### Here we do the instruction body. ### */
|
|
4176
4072
|
# define NAME_OF_CURRENT_INSN opt_regexpmatch2
|
|
4177
|
-
# line
|
|
4073
|
+
# line 1454 "insns.def"
|
|
4178
4074
|
{
|
|
4179
4075
|
val = vm_opt_regexpmatch2(obj2, obj1);
|
|
4180
4076
|
|
|
@@ -4182,7 +4078,7 @@ INSN_ENTRY(opt_regexpmatch2)
|
|
|
4182
4078
|
CALL_SIMPLE_METHOD();
|
|
4183
4079
|
}
|
|
4184
4080
|
}
|
|
4185
|
-
# line
|
|
4081
|
+
# line 4082 "vm.inc"
|
|
4186
4082
|
# undef NAME_OF_CURRENT_INSN
|
|
4187
4083
|
|
|
4188
4084
|
/* ### Instruction trailers. ### */
|
|
@@ -4192,7 +4088,6 @@ INSN_ENTRY(opt_regexpmatch2)
|
|
|
4192
4088
|
TOPN(0) = val;
|
|
4193
4089
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
4194
4090
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
4195
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4196
4091
|
# undef INSN_ATTR
|
|
4197
4092
|
|
|
4198
4093
|
/* ### Leave the instruction. ### */
|
|
@@ -4209,22 +4104,22 @@ INSN_ENTRY(invokebuiltin)
|
|
|
4209
4104
|
/* ### Declare and assign variables. ### */
|
|
4210
4105
|
RB_BUILTIN bf = (RB_BUILTIN)GET_OPERAND(1);
|
|
4211
4106
|
# define INSN_ATTR(x) attr_ ## x ## _invokebuiltin(bf)
|
|
4212
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
4107
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
4213
4108
|
VALUE val;
|
|
4214
4109
|
|
|
4215
4110
|
/* ### Instruction preambles. ### */
|
|
4216
|
-
|
|
4111
|
+
ADD_PC(INSN_ATTR(width));
|
|
4217
4112
|
SETUP_CANARY(leaf);
|
|
4218
4113
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
4219
4114
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, bf);
|
|
4220
4115
|
|
|
4221
4116
|
/* ### Here we do the instruction body. ### */
|
|
4222
4117
|
# define NAME_OF_CURRENT_INSN invokebuiltin
|
|
4223
|
-
# line
|
|
4118
|
+
# line 1470 "insns.def"
|
|
4224
4119
|
{
|
|
4225
4120
|
val = vm_invoke_builtin(ec, reg_cfp, bf, STACK_ADDR_FROM_TOP(bf->argc));
|
|
4226
4121
|
}
|
|
4227
|
-
# line
|
|
4122
|
+
# line 4123 "vm.inc"
|
|
4228
4123
|
# undef NAME_OF_CURRENT_INSN
|
|
4229
4124
|
|
|
4230
4125
|
/* ### Instruction trailers. ### */
|
|
@@ -4234,7 +4129,6 @@ INSN_ENTRY(invokebuiltin)
|
|
|
4234
4129
|
TOPN(0) = val;
|
|
4235
4130
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
4236
4131
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
4237
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4238
4132
|
# undef INSN_ATTR
|
|
4239
4133
|
|
|
4240
4134
|
/* ### Leave the instruction. ### */
|
|
@@ -4252,11 +4146,11 @@ INSN_ENTRY(opt_invokebuiltin_delegate)
|
|
|
4252
4146
|
RB_BUILTIN bf = (RB_BUILTIN)GET_OPERAND(1);
|
|
4253
4147
|
rb_num_t index = (rb_num_t)GET_OPERAND(2);
|
|
4254
4148
|
# define INSN_ATTR(x) attr_ ## x ## _opt_invokebuiltin_delegate(bf, index)
|
|
4255
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
4149
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
4256
4150
|
VALUE val;
|
|
4257
4151
|
|
|
4258
4152
|
/* ### Instruction preambles. ### */
|
|
4259
|
-
|
|
4153
|
+
ADD_PC(INSN_ATTR(width));
|
|
4260
4154
|
SETUP_CANARY(leaf);
|
|
4261
4155
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
4262
4156
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, bf);
|
|
@@ -4264,11 +4158,11 @@ INSN_ENTRY(opt_invokebuiltin_delegate)
|
|
|
4264
4158
|
|
|
4265
4159
|
/* ### Here we do the instruction body. ### */
|
|
4266
4160
|
# define NAME_OF_CURRENT_INSN opt_invokebuiltin_delegate
|
|
4267
|
-
# line
|
|
4161
|
+
# line 1481 "insns.def"
|
|
4268
4162
|
{
|
|
4269
4163
|
val = vm_invoke_builtin_delegate(ec, reg_cfp, bf, (unsigned int)index);
|
|
4270
4164
|
}
|
|
4271
|
-
# line
|
|
4165
|
+
# line 4166 "vm.inc"
|
|
4272
4166
|
# undef NAME_OF_CURRENT_INSN
|
|
4273
4167
|
|
|
4274
4168
|
/* ### Instruction trailers. ### */
|
|
@@ -4278,7 +4172,6 @@ INSN_ENTRY(opt_invokebuiltin_delegate)
|
|
|
4278
4172
|
TOPN(0) = val;
|
|
4279
4173
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
4280
4174
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
4281
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4282
4175
|
# undef INSN_ATTR
|
|
4283
4176
|
|
|
4284
4177
|
/* ### Leave the instruction. ### */
|
|
@@ -4296,11 +4189,11 @@ INSN_ENTRY(opt_invokebuiltin_delegate_leave)
|
|
|
4296
4189
|
RB_BUILTIN bf = (RB_BUILTIN)GET_OPERAND(1);
|
|
4297
4190
|
rb_num_t index = (rb_num_t)GET_OPERAND(2);
|
|
4298
4191
|
# define INSN_ATTR(x) attr_ ## x ## _opt_invokebuiltin_delegate_leave(bf, index)
|
|
4299
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
4192
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
4300
4193
|
VALUE val;
|
|
4301
4194
|
|
|
4302
4195
|
/* ### Instruction preambles. ### */
|
|
4303
|
-
|
|
4196
|
+
ADD_PC(INSN_ATTR(width));
|
|
4304
4197
|
SETUP_CANARY(leaf);
|
|
4305
4198
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
4306
4199
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, bf);
|
|
@@ -4308,7 +4201,7 @@ INSN_ENTRY(opt_invokebuiltin_delegate_leave)
|
|
|
4308
4201
|
|
|
4309
4202
|
/* ### Here we do the instruction body. ### */
|
|
4310
4203
|
# define NAME_OF_CURRENT_INSN opt_invokebuiltin_delegate_leave
|
|
4311
|
-
# line
|
|
4204
|
+
# line 1492 "insns.def"
|
|
4312
4205
|
{
|
|
4313
4206
|
val = vm_invoke_builtin_delegate(ec, reg_cfp, bf, (unsigned int)index);
|
|
4314
4207
|
|
|
@@ -4326,7 +4219,7 @@ INSN_ENTRY(opt_invokebuiltin_delegate_leave)
|
|
|
4326
4219
|
RESTORE_REGS();
|
|
4327
4220
|
}
|
|
4328
4221
|
}
|
|
4329
|
-
# line
|
|
4222
|
+
# line 4223 "vm.inc"
|
|
4330
4223
|
# undef NAME_OF_CURRENT_INSN
|
|
4331
4224
|
|
|
4332
4225
|
/* ### Instruction trailers. ### */
|
|
@@ -4336,7 +4229,6 @@ INSN_ENTRY(opt_invokebuiltin_delegate_leave)
|
|
|
4336
4229
|
TOPN(0) = val;
|
|
4337
4230
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
4338
4231
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
4339
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4340
4232
|
# undef INSN_ATTR
|
|
4341
4233
|
|
|
4342
4234
|
/* ### Leave the instruction. ### */
|
|
@@ -4353,14 +4245,14 @@ INSN_ENTRY(getlocal_WC_0)
|
|
|
4353
4245
|
/* ### Declare and assign variables. ### */
|
|
4354
4246
|
#line 10 "defs/opt_operand.def"
|
|
4355
4247
|
const rb_num_t level = 0;
|
|
4356
|
-
#line
|
|
4248
|
+
#line 4249 "vm.inc"
|
|
4357
4249
|
lindex_t idx = (lindex_t)GET_OPERAND(1);
|
|
4358
4250
|
# define INSN_ATTR(x) attr_ ## x ## _getlocal_WC_0(idx)
|
|
4359
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
4251
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
4360
4252
|
VALUE val;
|
|
4361
4253
|
|
|
4362
4254
|
/* ### Instruction preambles. ### */
|
|
4363
|
-
|
|
4255
|
+
ADD_PC(INSN_ATTR(width));
|
|
4364
4256
|
SETUP_CANARY(leaf);
|
|
4365
4257
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
4366
4258
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, idx);
|
|
@@ -4373,7 +4265,7 @@ INSN_ENTRY(getlocal_WC_0)
|
|
|
4373
4265
|
RB_DEBUG_COUNTER_INC(lvar_get);
|
|
4374
4266
|
(void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
|
|
4375
4267
|
}
|
|
4376
|
-
# line
|
|
4268
|
+
# line 4269 "vm.inc"
|
|
4377
4269
|
# undef NAME_OF_CURRENT_INSN
|
|
4378
4270
|
|
|
4379
4271
|
/* ### Instruction trailers. ### */
|
|
@@ -4383,7 +4275,6 @@ INSN_ENTRY(getlocal_WC_0)
|
|
|
4383
4275
|
TOPN(0) = val;
|
|
4384
4276
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
4385
4277
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
4386
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4387
4278
|
# undef INSN_ATTR
|
|
4388
4279
|
|
|
4389
4280
|
/* ### Leave the instruction. ### */
|
|
@@ -4400,14 +4291,14 @@ INSN_ENTRY(getlocal_WC_1)
|
|
|
4400
4291
|
/* ### Declare and assign variables. ### */
|
|
4401
4292
|
#line 11 "defs/opt_operand.def"
|
|
4402
4293
|
const rb_num_t level = 1;
|
|
4403
|
-
#line
|
|
4294
|
+
#line 4295 "vm.inc"
|
|
4404
4295
|
lindex_t idx = (lindex_t)GET_OPERAND(1);
|
|
4405
4296
|
# define INSN_ATTR(x) attr_ ## x ## _getlocal_WC_1(idx)
|
|
4406
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
4297
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
4407
4298
|
VALUE val;
|
|
4408
4299
|
|
|
4409
4300
|
/* ### Instruction preambles. ### */
|
|
4410
|
-
|
|
4301
|
+
ADD_PC(INSN_ATTR(width));
|
|
4411
4302
|
SETUP_CANARY(leaf);
|
|
4412
4303
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
4413
4304
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, idx);
|
|
@@ -4420,7 +4311,7 @@ INSN_ENTRY(getlocal_WC_1)
|
|
|
4420
4311
|
RB_DEBUG_COUNTER_INC(lvar_get);
|
|
4421
4312
|
(void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
|
|
4422
4313
|
}
|
|
4423
|
-
# line
|
|
4314
|
+
# line 4315 "vm.inc"
|
|
4424
4315
|
# undef NAME_OF_CURRENT_INSN
|
|
4425
4316
|
|
|
4426
4317
|
/* ### Instruction trailers. ### */
|
|
@@ -4430,7 +4321,6 @@ INSN_ENTRY(getlocal_WC_1)
|
|
|
4430
4321
|
TOPN(0) = val;
|
|
4431
4322
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
4432
4323
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
4433
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4434
4324
|
# undef INSN_ATTR
|
|
4435
4325
|
|
|
4436
4326
|
/* ### Leave the instruction. ### */
|
|
@@ -4447,14 +4337,14 @@ INSN_ENTRY(setlocal_WC_0)
|
|
|
4447
4337
|
/* ### Declare and assign variables. ### */
|
|
4448
4338
|
#line 12 "defs/opt_operand.def"
|
|
4449
4339
|
const rb_num_t level = 0;
|
|
4450
|
-
#line
|
|
4340
|
+
#line 4341 "vm.inc"
|
|
4451
4341
|
lindex_t idx = (lindex_t)GET_OPERAND(1);
|
|
4452
4342
|
# define INSN_ATTR(x) attr_ ## x ## _setlocal_WC_0(idx)
|
|
4453
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
4343
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
4454
4344
|
VALUE val = TOPN(0);
|
|
4455
4345
|
|
|
4456
4346
|
/* ### Instruction preambles. ### */
|
|
4457
|
-
|
|
4347
|
+
ADD_PC(INSN_ATTR(width));
|
|
4458
4348
|
SETUP_CANARY(leaf);
|
|
4459
4349
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
4460
4350
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, idx);
|
|
@@ -4467,14 +4357,13 @@ INSN_ENTRY(setlocal_WC_0)
|
|
|
4467
4357
|
RB_DEBUG_COUNTER_INC(lvar_set);
|
|
4468
4358
|
(void)RB_DEBUG_COUNTER_INC_IF(lvar_set_dynamic, level > 0);
|
|
4469
4359
|
}
|
|
4470
|
-
# line
|
|
4360
|
+
# line 4361 "vm.inc"
|
|
4471
4361
|
# undef NAME_OF_CURRENT_INSN
|
|
4472
4362
|
|
|
4473
4363
|
/* ### Instruction trailers. ### */
|
|
4474
4364
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
4475
4365
|
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
4476
4366
|
INC_SP(INSN_ATTR(sp_inc));
|
|
4477
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4478
4367
|
# undef INSN_ATTR
|
|
4479
4368
|
|
|
4480
4369
|
/* ### Leave the instruction. ### */
|
|
@@ -4491,14 +4380,14 @@ INSN_ENTRY(setlocal_WC_1)
|
|
|
4491
4380
|
/* ### Declare and assign variables. ### */
|
|
4492
4381
|
#line 13 "defs/opt_operand.def"
|
|
4493
4382
|
const rb_num_t level = 1;
|
|
4494
|
-
#line
|
|
4383
|
+
#line 4384 "vm.inc"
|
|
4495
4384
|
lindex_t idx = (lindex_t)GET_OPERAND(1);
|
|
4496
4385
|
# define INSN_ATTR(x) attr_ ## x ## _setlocal_WC_1(idx)
|
|
4497
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
4386
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
4498
4387
|
VALUE val = TOPN(0);
|
|
4499
4388
|
|
|
4500
4389
|
/* ### Instruction preambles. ### */
|
|
4501
|
-
|
|
4390
|
+
ADD_PC(INSN_ATTR(width));
|
|
4502
4391
|
SETUP_CANARY(leaf);
|
|
4503
4392
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
4504
4393
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, idx);
|
|
@@ -4511,14 +4400,13 @@ INSN_ENTRY(setlocal_WC_1)
|
|
|
4511
4400
|
RB_DEBUG_COUNTER_INC(lvar_set);
|
|
4512
4401
|
(void)RB_DEBUG_COUNTER_INC_IF(lvar_set_dynamic, level > 0);
|
|
4513
4402
|
}
|
|
4514
|
-
# line
|
|
4403
|
+
# line 4404 "vm.inc"
|
|
4515
4404
|
# undef NAME_OF_CURRENT_INSN
|
|
4516
4405
|
|
|
4517
4406
|
/* ### Instruction trailers. ### */
|
|
4518
4407
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
4519
4408
|
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
4520
4409
|
INC_SP(INSN_ATTR(sp_inc));
|
|
4521
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4522
4410
|
# undef INSN_ATTR
|
|
4523
4411
|
|
|
4524
4412
|
/* ### Leave the instruction. ### */
|
|
@@ -4535,12 +4423,12 @@ INSN_ENTRY(putobject_INT2FIX_0_)
|
|
|
4535
4423
|
/* ### Declare and assign variables. ### */
|
|
4536
4424
|
#line 15 "defs/opt_operand.def"
|
|
4537
4425
|
const VALUE val = INT2FIX(0);
|
|
4538
|
-
#line
|
|
4426
|
+
#line 4427 "vm.inc"
|
|
4539
4427
|
# define INSN_ATTR(x) attr_ ## x ## _putobject_INT2FIX_0_()
|
|
4540
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
4428
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
4541
4429
|
|
|
4542
4430
|
/* ### Instruction preambles. ### */
|
|
4543
|
-
|
|
4431
|
+
ADD_PC(INSN_ATTR(width));
|
|
4544
4432
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
4545
4433
|
|
|
4546
4434
|
/* ### Instruction trailers. ### */
|
|
@@ -4549,7 +4437,6 @@ INSN_ENTRY(putobject_INT2FIX_0_)
|
|
|
4549
4437
|
TOPN(0) = val;
|
|
4550
4438
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
4551
4439
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
4552
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4553
4440
|
# undef INSN_ATTR
|
|
4554
4441
|
|
|
4555
4442
|
/* ### Leave the instruction. ### */
|
|
@@ -4566,12 +4453,12 @@ INSN_ENTRY(putobject_INT2FIX_1_)
|
|
|
4566
4453
|
/* ### Declare and assign variables. ### */
|
|
4567
4454
|
#line 16 "defs/opt_operand.def"
|
|
4568
4455
|
const VALUE val = INT2FIX(1);
|
|
4569
|
-
#line
|
|
4456
|
+
#line 4457 "vm.inc"
|
|
4570
4457
|
# define INSN_ATTR(x) attr_ ## x ## _putobject_INT2FIX_1_()
|
|
4571
|
-
const bool leaf = INSN_ATTR(leaf);
|
|
4458
|
+
const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
|
|
4572
4459
|
|
|
4573
4460
|
/* ### Instruction preambles. ### */
|
|
4574
|
-
|
|
4461
|
+
ADD_PC(INSN_ATTR(width));
|
|
4575
4462
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
4576
4463
|
|
|
4577
4464
|
/* ### Instruction trailers. ### */
|
|
@@ -4580,7 +4467,6 @@ INSN_ENTRY(putobject_INT2FIX_1_)
|
|
|
4580
4467
|
TOPN(0) = val;
|
|
4581
4468
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
4582
4469
|
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
4583
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4584
4470
|
# undef INSN_ATTR
|
|
4585
4471
|
|
|
4586
4472
|
/* ### Leave the instruction. ### */
|