debase-ruby_core_source 3.2.1 → 3.2.3
Sign up to get free protection for your applications and to get access to all the features.
- 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. ### */
|