debase-ruby_core_source 0.10.9 → 0.10.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +1 -1
- data/Rakefile +6 -3
- data/debase-ruby_core_source.gemspec +2 -1
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/addr2line.h +2 -3
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/builtin.h +17 -2
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/ccan/build_assert/build_assert.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/ccan/check_type/check_type.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/ccan/container_of/container_of.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/ccan/list/list.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/ccan/str/str.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/constant.h +10 -5
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/debug_counter.h +127 -48
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/dln.h +3 -18
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/encindex.h +3 -2
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/eval_intern.h +16 -7
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/gc.h +13 -2
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/hrtime.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/id.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/id_table.h +2 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/insns.inc +0 -4
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/insns_info.inc +323 -536
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/array.h +119 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/bignum.h +246 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/bits.h +566 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/class.h +174 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/compar.h +50 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/compile.h +32 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/compilers.h +108 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/complex.h +29 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/cont.h +25 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/dir.h +17 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/enc.h +20 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/encoding.h +28 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/enum.h +19 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/enumerator.h +22 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/error.h +124 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/eval.h +33 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/file.h +39 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/fixnum.h +185 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/gc.h +161 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/hash.h +241 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/imemo.h +243 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/inits.h +51 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/io.h +35 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/load.h +19 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/loadpath.h +17 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/math.h +24 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/missing.h +19 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/numeric.h +255 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/object.h +83 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/parse.h +23 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/proc.h +33 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/process.h +136 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/random.h +17 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/range.h +41 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/rational.h +71 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/re.h +29 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/sanitizers.h +191 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/scheduler.h +44 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/serial.h +24 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/signal.h +22 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/static_assert.h +17 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/string.h +140 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/struct.h +154 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/symbol.h +41 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/thread.h +54 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/time.h +35 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/transcode.h +21 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/util.h +31 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/variable.h +84 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/vm.h +136 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/warnings.h +17 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal.h +107 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/iseq.h +11 -18
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/known_errors.inc +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/method.h +21 -8
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/mjit.h +89 -48
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/mjit_compile.inc +2746 -2288
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/node.h +32 -24
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/node_name.inc +2 -2
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/opt_sc.inc +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/optinsn.inc +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/optunifs.inc +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/parse.h +1 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/probes_helper.h +2 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/ractor_core.h +343 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/regenc.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/regint.h +1 -1
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/regparse.h +0 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/revision.h +2 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/ruby_assert.h +15 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/ruby_atomic.h +23 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/siphash.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/symbol.h +4 -4
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/thread_pthread.h +45 -5
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/thread_win32.h +28 -3
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/timev.h +1 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/transcode_data.h +2 -3
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/transient_heap.h +6 -3
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/variable.h +22 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/version.h +23 -11
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/vm.inc +707 -671
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/vm_call_iseq_optimized.inc +93 -86
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/vm_callinfo.h +456 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/vm_core.h +262 -194
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/vm_debug.h +116 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/vm_exec.h +9 -6
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/vm_insnhelper.h +28 -26
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/vm_opts.h +6 -5
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/vm_sync.h +136 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/vmtc.inc +0 -4
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/addr2line.h +2 -3
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/builtin.h +83 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/ccan/build_assert/build_assert.h +13 -13
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/ccan/check_type/check_type.h +17 -17
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/ccan/container_of/container_of.h +63 -63
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/ccan/list/list.h +262 -262
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/ccan/str/str.h +4 -4
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/constant.h +10 -9
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/darray.h +198 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/debug_counter.h +137 -48
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/dln.h +3 -23
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/encindex.h +3 -2
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/eval_intern.h +34 -41
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/gc.h +24 -11
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/hrtime.h +9 -9
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/id.h +4 -3
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/id_table.h +3 -1
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/insns.inc +6 -8
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/insns_info.inc +1907 -2543
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/array.h +113 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/bignum.h +246 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/bits.h +565 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/class.h +188 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/compar.h +49 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/compile.h +35 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/compilers.h +107 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/complex.h +29 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/cont.h +24 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/dir.h +16 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/enc.h +19 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/encoding.h +30 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/enum.h +18 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/enumerator.h +21 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/error.h +191 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/eval.h +32 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/file.h +38 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/fixnum.h +184 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/gc.h +175 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/hash.h +243 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/imemo.h +243 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/inits.h +50 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/io.h +38 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/load.h +18 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/loadpath.h +16 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/math.h +23 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/missing.h +18 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/numeric.h +271 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/object.h +83 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/parse.h +23 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/proc.h +32 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/process.h +137 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/random.h +16 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/range.h +40 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/rational.h +72 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/re.h +30 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/sanitizers.h +190 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/serial.h +23 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/signal.h +21 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/static_assert.h +16 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/string.h +141 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/struct.h +153 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/symbol.h +40 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/thread.h +53 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/time.h +34 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/transcode.h +20 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/util.h +27 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/variable.h +83 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/vm.h +132 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/warnings.h +16 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal.h +109 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/iseq.h +44 -35
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/known_errors.inc +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/method.h +21 -4
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/mjit.h +231 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/mjit_compile.inc +3322 -2940
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/node.h +39 -23
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/node_name.inc +210 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/opt_sc.inc +0 -2
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/optinsn.inc +7 -7
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/optunifs.inc +1 -1
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/parse.h +9 -5
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/probes_helper.h +9 -7
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/ractor_core.h +346 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/regenc.h +8 -8
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/regint.h +16 -12
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/regparse.h +2 -2
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/revision.h +2 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/ruby_assert.h +14 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/ruby_atomic.h +23 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/siphash.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/symbol.h +14 -14
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/thread_pthread.h +45 -5
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/thread_win32.h +30 -5
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/timev.h +1 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/transcode_data.h +49 -50
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/transient_heap.h +6 -3
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/variable.h +21 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/version.h +15 -4
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/vm.inc +1033 -887
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/vm_call_iseq_optimized.inc +244 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/vm_callinfo.h +454 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/vm_core.h +508 -362
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/vm_debug.h +119 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/vm_exec.h +22 -18
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/vm_insnhelper.h +42 -32
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/vm_opts.h +8 -5
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/vm_sync.h +137 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/vmtc.inc +6 -8
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/yjit.h +63 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/yjit_asm.h +392 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/yjit_codegen.h +19 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/yjit_core.h +302 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/yjit_iface.h +38 -0
- data/lib/debase/ruby_core_source/version.rb +1 -1
- data/lib/debase/ruby_core_source.rb +0 -2
- metadata +240 -110
- data/lib/debase/ruby_core_source/ruby-2.7.0-preview2/internal.h +0 -2682
- data/lib/debase/ruby_core_source/ruby-2.7.0-preview2/revision.h +0 -2
- data/lib/debase/ruby_core_source/ruby-2.7.0-preview2/ruby_assert.h +0 -15
- data/lib/debase/ruby_core_source/ruby-2.7.0-preview2/ruby_atomic.h +0 -244
- data/lib/debase/ruby_core_source/ruby-2.7.0-preview2/vm_call_iseq_optimized.inc +0 -237
- data/lib/debase/ruby_core_source/ruby-2.7.0-preview2/vm_debug.h +0 -34
- data/lib/debase/ruby_core_source/ruby-2.7.0-preview3/internal.h +0 -2657
- data/lib/debase/ruby_core_source/ruby-2.7.0-preview3/mjit.h +0 -175
- data/lib/debase/ruby_core_source/ruby-2.7.0-preview3/node_name.inc +0 -208
- data/lib/debase/ruby_core_source/ruby-2.7.0-preview3/revision.h +0 -2
- data/lib/debase/ruby_core_source/ruby-2.7.0-preview3/ruby_assert.h +0 -15
- data/lib/debase/ruby_core_source/ruby-2.7.0-preview3/ruby_atomic.h +0 -244
- data/lib/debase/ruby_core_source/ruby-2.7.0-preview3/vm_debug.h +0 -34
|
@@ -79,7 +79,7 @@ INSN_ENTRY(getlocal)
|
|
|
79
79
|
|
|
80
80
|
/* ### Instruction preambles. ### */
|
|
81
81
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
82
|
-
SETUP_CANARY();
|
|
82
|
+
SETUP_CANARY(leaf);
|
|
83
83
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
84
84
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, idx);
|
|
85
85
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, level);
|
|
@@ -97,9 +97,11 @@ INSN_ENTRY(getlocal)
|
|
|
97
97
|
|
|
98
98
|
/* ### Instruction trailers. ### */
|
|
99
99
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
100
|
-
CHECK_CANARY();
|
|
100
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
101
101
|
INC_SP(INSN_ATTR(sp_inc));
|
|
102
102
|
TOPN(0) = val;
|
|
103
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
104
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
103
105
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
104
106
|
# undef INSN_ATTR
|
|
105
107
|
|
|
@@ -123,7 +125,7 @@ INSN_ENTRY(setlocal)
|
|
|
123
125
|
|
|
124
126
|
/* ### Instruction preambles. ### */
|
|
125
127
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
126
|
-
SETUP_CANARY();
|
|
128
|
+
SETUP_CANARY(leaf);
|
|
127
129
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
128
130
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, idx);
|
|
129
131
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, level);
|
|
@@ -136,12 +138,12 @@ INSN_ENTRY(setlocal)
|
|
|
136
138
|
RB_DEBUG_COUNTER_INC(lvar_set);
|
|
137
139
|
(void)RB_DEBUG_COUNTER_INC_IF(lvar_set_dynamic, level > 0);
|
|
138
140
|
}
|
|
139
|
-
# line
|
|
141
|
+
# line 142 "vm.inc"
|
|
140
142
|
# undef NAME_OF_CURRENT_INSN
|
|
141
143
|
|
|
142
144
|
/* ### Instruction trailers. ### */
|
|
143
145
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
144
|
-
CHECK_CANARY();
|
|
146
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
145
147
|
INC_SP(INSN_ATTR(sp_inc));
|
|
146
148
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
147
149
|
# undef INSN_ATTR
|
|
@@ -166,7 +168,7 @@ INSN_ENTRY(getblockparam)
|
|
|
166
168
|
|
|
167
169
|
/* ### Instruction preambles. ### */
|
|
168
170
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
169
|
-
SETUP_CANARY();
|
|
171
|
+
SETUP_CANARY(leaf);
|
|
170
172
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
171
173
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, idx);
|
|
172
174
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, level);
|
|
@@ -179,24 +181,26 @@ INSN_ENTRY(getblockparam)
|
|
|
179
181
|
VM_ASSERT(VM_ENV_LOCAL_P(ep));
|
|
180
182
|
|
|
181
183
|
if (!VM_ENV_FLAGS(ep, VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM)) {
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
184
|
+
val = rb_vm_bh_to_procval(ec, VM_ENV_BLOCK_HANDLER(ep));
|
|
185
|
+
vm_env_write(ep, -(int)idx, val);
|
|
186
|
+
VM_ENV_FLAGS_SET(ep, VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM);
|
|
185
187
|
}
|
|
186
188
|
else {
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
189
|
+
val = *(ep - idx);
|
|
190
|
+
RB_DEBUG_COUNTER_INC(lvar_get);
|
|
191
|
+
(void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
|
|
190
192
|
}
|
|
191
193
|
}
|
|
192
|
-
# line
|
|
194
|
+
# line 195 "vm.inc"
|
|
193
195
|
# undef NAME_OF_CURRENT_INSN
|
|
194
196
|
|
|
195
197
|
/* ### Instruction trailers. ### */
|
|
196
198
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
197
|
-
CHECK_CANARY();
|
|
199
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
198
200
|
INC_SP(INSN_ATTR(sp_inc));
|
|
199
201
|
TOPN(0) = val;
|
|
202
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
203
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
200
204
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
201
205
|
# undef INSN_ATTR
|
|
202
206
|
|
|
@@ -220,7 +224,7 @@ INSN_ENTRY(setblockparam)
|
|
|
220
224
|
|
|
221
225
|
/* ### Instruction preambles. ### */
|
|
222
226
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
223
|
-
SETUP_CANARY();
|
|
227
|
+
SETUP_CANARY(leaf);
|
|
224
228
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
225
229
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, idx);
|
|
226
230
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, level);
|
|
@@ -238,12 +242,12 @@ INSN_ENTRY(setblockparam)
|
|
|
238
242
|
|
|
239
243
|
VM_ENV_FLAGS_SET(ep, VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM);
|
|
240
244
|
}
|
|
241
|
-
# line
|
|
245
|
+
# line 246 "vm.inc"
|
|
242
246
|
# undef NAME_OF_CURRENT_INSN
|
|
243
247
|
|
|
244
248
|
/* ### Instruction trailers. ### */
|
|
245
249
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
246
|
-
CHECK_CANARY();
|
|
250
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
247
251
|
INC_SP(INSN_ATTR(sp_inc));
|
|
248
252
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
249
253
|
# undef INSN_ATTR
|
|
@@ -268,7 +272,7 @@ INSN_ENTRY(getblockparamproxy)
|
|
|
268
272
|
|
|
269
273
|
/* ### Instruction preambles. ### */
|
|
270
274
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
271
|
-
SETUP_CANARY();
|
|
275
|
+
SETUP_CANARY(leaf);
|
|
272
276
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
273
277
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, idx);
|
|
274
278
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, level);
|
|
@@ -281,45 +285,47 @@ INSN_ENTRY(getblockparamproxy)
|
|
|
281
285
|
VM_ASSERT(VM_ENV_LOCAL_P(ep));
|
|
282
286
|
|
|
283
287
|
if (!VM_ENV_FLAGS(ep, VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM)) {
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
288
|
+
VALUE block_handler = VM_ENV_BLOCK_HANDLER(ep);
|
|
289
|
+
|
|
290
|
+
if (block_handler) {
|
|
291
|
+
switch (vm_block_handler_type(block_handler)) {
|
|
292
|
+
case block_handler_type_iseq:
|
|
293
|
+
case block_handler_type_ifunc:
|
|
294
|
+
val = rb_block_param_proxy;
|
|
295
|
+
break;
|
|
296
|
+
case block_handler_type_symbol:
|
|
297
|
+
val = rb_sym_to_proc(VM_BH_TO_SYMBOL(block_handler));
|
|
298
|
+
goto INSN_LABEL(set);
|
|
299
|
+
case block_handler_type_proc:
|
|
300
|
+
val = VM_BH_TO_PROC(block_handler);
|
|
301
|
+
goto INSN_LABEL(set);
|
|
302
|
+
default:
|
|
303
|
+
VM_UNREACHABLE(getblockparamproxy);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
else {
|
|
307
|
+
val = Qnil;
|
|
308
|
+
INSN_LABEL(set):
|
|
309
|
+
vm_env_write(ep, -(int)idx, val);
|
|
310
|
+
VM_ENV_FLAGS_SET(ep, VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM);
|
|
311
|
+
}
|
|
308
312
|
}
|
|
309
313
|
else {
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
314
|
+
val = *(ep - idx);
|
|
315
|
+
RB_DEBUG_COUNTER_INC(lvar_get);
|
|
316
|
+
(void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
|
|
313
317
|
}
|
|
314
318
|
}
|
|
315
|
-
# line
|
|
319
|
+
# line 320 "vm.inc"
|
|
316
320
|
# undef NAME_OF_CURRENT_INSN
|
|
317
321
|
|
|
318
322
|
/* ### Instruction trailers. ### */
|
|
319
323
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
320
|
-
CHECK_CANARY();
|
|
324
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
321
325
|
INC_SP(INSN_ATTR(sp_inc));
|
|
322
326
|
TOPN(0) = val;
|
|
327
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
328
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
323
329
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
324
330
|
# undef INSN_ATTR
|
|
325
331
|
|
|
@@ -343,7 +349,7 @@ INSN_ENTRY(getspecial)
|
|
|
343
349
|
|
|
344
350
|
/* ### Instruction preambles. ### */
|
|
345
351
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
346
|
-
SETUP_CANARY();
|
|
352
|
+
SETUP_CANARY(leaf);
|
|
347
353
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
348
354
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, key);
|
|
349
355
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, type);
|
|
@@ -354,14 +360,16 @@ INSN_ENTRY(getspecial)
|
|
|
354
360
|
{
|
|
355
361
|
val = vm_getspecial(ec, GET_LEP(), key, type);
|
|
356
362
|
}
|
|
357
|
-
# line
|
|
363
|
+
# line 364 "vm.inc"
|
|
358
364
|
# undef NAME_OF_CURRENT_INSN
|
|
359
365
|
|
|
360
366
|
/* ### Instruction trailers. ### */
|
|
361
367
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
362
|
-
CHECK_CANARY();
|
|
368
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
363
369
|
INC_SP(INSN_ATTR(sp_inc));
|
|
364
370
|
TOPN(0) = val;
|
|
371
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
372
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
365
373
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
366
374
|
# undef INSN_ATTR
|
|
367
375
|
|
|
@@ -384,7 +392,7 @@ INSN_ENTRY(setspecial)
|
|
|
384
392
|
|
|
385
393
|
/* ### Instruction preambles. ### */
|
|
386
394
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
387
|
-
SETUP_CANARY();
|
|
395
|
+
SETUP_CANARY(leaf);
|
|
388
396
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
389
397
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, key);
|
|
390
398
|
|
|
@@ -394,12 +402,12 @@ INSN_ENTRY(setspecial)
|
|
|
394
402
|
{
|
|
395
403
|
lep_svar_set(ec, GET_LEP(), key, obj);
|
|
396
404
|
}
|
|
397
|
-
# line
|
|
405
|
+
# line 406 "vm.inc"
|
|
398
406
|
# undef NAME_OF_CURRENT_INSN
|
|
399
407
|
|
|
400
408
|
/* ### Instruction trailers. ### */
|
|
401
409
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
402
|
-
CHECK_CANARY();
|
|
410
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
403
411
|
INC_SP(INSN_ATTR(sp_inc));
|
|
404
412
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
405
413
|
# undef INSN_ATTR
|
|
@@ -417,14 +425,14 @@ INSN_ENTRY(getinstancevariable)
|
|
|
417
425
|
|
|
418
426
|
/* ### Declare and assign variables. ### */
|
|
419
427
|
ID id = (ID)GET_OPERAND(1);
|
|
420
|
-
|
|
428
|
+
IVC ic = (IVC)GET_OPERAND(2);
|
|
421
429
|
# define INSN_ATTR(x) attr_ ## x ## _getinstancevariable(id, ic)
|
|
422
430
|
bool leaf = INSN_ATTR(leaf);
|
|
423
431
|
VALUE val;
|
|
424
432
|
|
|
425
433
|
/* ### Instruction preambles. ### */
|
|
426
434
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
427
|
-
SETUP_CANARY();
|
|
435
|
+
SETUP_CANARY(leaf);
|
|
428
436
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
429
437
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, id);
|
|
430
438
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, ic);
|
|
@@ -433,16 +441,18 @@ INSN_ENTRY(getinstancevariable)
|
|
|
433
441
|
# define NAME_OF_CURRENT_INSN getinstancevariable
|
|
434
442
|
# line 215 "insns.def"
|
|
435
443
|
{
|
|
436
|
-
val = vm_getinstancevariable(GET_SELF(), id, ic);
|
|
444
|
+
val = vm_getinstancevariable(GET_ISEQ(), GET_SELF(), id, ic);
|
|
437
445
|
}
|
|
438
|
-
# line
|
|
446
|
+
# line 447 "vm.inc"
|
|
439
447
|
# undef NAME_OF_CURRENT_INSN
|
|
440
448
|
|
|
441
449
|
/* ### Instruction trailers. ### */
|
|
442
450
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
443
|
-
CHECK_CANARY();
|
|
451
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
444
452
|
INC_SP(INSN_ATTR(sp_inc));
|
|
445
453
|
TOPN(0) = val;
|
|
454
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
455
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
446
456
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
447
457
|
# undef INSN_ATTR
|
|
448
458
|
|
|
@@ -459,14 +469,14 @@ INSN_ENTRY(setinstancevariable)
|
|
|
459
469
|
|
|
460
470
|
/* ### Declare and assign variables. ### */
|
|
461
471
|
ID id = (ID)GET_OPERAND(1);
|
|
462
|
-
|
|
472
|
+
IVC ic = (IVC)GET_OPERAND(2);
|
|
463
473
|
# define INSN_ATTR(x) attr_ ## x ## _setinstancevariable(id, ic)
|
|
464
474
|
bool leaf = INSN_ATTR(leaf);
|
|
465
475
|
VALUE val = TOPN(0);
|
|
466
476
|
|
|
467
477
|
/* ### Instruction preambles. ### */
|
|
468
478
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
469
|
-
SETUP_CANARY();
|
|
479
|
+
SETUP_CANARY(leaf);
|
|
470
480
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
471
481
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, id);
|
|
472
482
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, ic);
|
|
@@ -475,14 +485,14 @@ INSN_ENTRY(setinstancevariable)
|
|
|
475
485
|
# define NAME_OF_CURRENT_INSN setinstancevariable
|
|
476
486
|
# line 226 "insns.def"
|
|
477
487
|
{
|
|
478
|
-
vm_setinstancevariable(GET_SELF(), id, val, ic);
|
|
488
|
+
vm_setinstancevariable(GET_ISEQ(), GET_SELF(), id, val, ic);
|
|
479
489
|
}
|
|
480
|
-
# line
|
|
490
|
+
# line 491 "vm.inc"
|
|
481
491
|
# undef NAME_OF_CURRENT_INSN
|
|
482
492
|
|
|
483
493
|
/* ### Instruction trailers. ### */
|
|
484
494
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
485
|
-
CHECK_CANARY();
|
|
495
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
486
496
|
INC_SP(INSN_ATTR(sp_inc));
|
|
487
497
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
488
498
|
# undef INSN_ATTR
|
|
@@ -506,7 +516,7 @@ INSN_ENTRY(getclassvariable)
|
|
|
506
516
|
|
|
507
517
|
/* ### Instruction preambles. ### */
|
|
508
518
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
509
|
-
SETUP_CANARY();
|
|
519
|
+
SETUP_CANARY(leaf);
|
|
510
520
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
511
521
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, id);
|
|
512
522
|
|
|
@@ -514,16 +524,18 @@ INSN_ENTRY(getclassvariable)
|
|
|
514
524
|
# define NAME_OF_CURRENT_INSN getclassvariable
|
|
515
525
|
# line 238 "insns.def"
|
|
516
526
|
{
|
|
517
|
-
val = rb_cvar_get(vm_get_cvar_base(vm_get_cref(GET_EP()), GET_CFP()), id);
|
|
527
|
+
val = rb_cvar_get(vm_get_cvar_base(vm_get_cref(GET_EP()), GET_CFP(), 1), id);
|
|
518
528
|
}
|
|
519
|
-
# line
|
|
529
|
+
# line 530 "vm.inc"
|
|
520
530
|
# undef NAME_OF_CURRENT_INSN
|
|
521
531
|
|
|
522
532
|
/* ### Instruction trailers. ### */
|
|
523
533
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
524
|
-
CHECK_CANARY();
|
|
534
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
525
535
|
INC_SP(INSN_ATTR(sp_inc));
|
|
526
536
|
TOPN(0) = val;
|
|
537
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
538
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
527
539
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
528
540
|
# undef INSN_ATTR
|
|
529
541
|
|
|
@@ -546,7 +558,7 @@ INSN_ENTRY(setclassvariable)
|
|
|
546
558
|
|
|
547
559
|
/* ### Instruction preambles. ### */
|
|
548
560
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
549
|
-
SETUP_CANARY();
|
|
561
|
+
SETUP_CANARY(leaf);
|
|
550
562
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
551
563
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, id);
|
|
552
564
|
|
|
@@ -555,14 +567,14 @@ INSN_ENTRY(setclassvariable)
|
|
|
555
567
|
# line 250 "insns.def"
|
|
556
568
|
{
|
|
557
569
|
vm_ensure_not_refinement_module(GET_SELF());
|
|
558
|
-
rb_cvar_set(vm_get_cvar_base(vm_get_cref(GET_EP()), GET_CFP()), id, val);
|
|
570
|
+
rb_cvar_set(vm_get_cvar_base(vm_get_cref(GET_EP()), GET_CFP(), 1), id, val);
|
|
559
571
|
}
|
|
560
|
-
# line
|
|
572
|
+
# line 573 "vm.inc"
|
|
561
573
|
# undef NAME_OF_CURRENT_INSN
|
|
562
574
|
|
|
563
575
|
/* ### Instruction trailers. ### */
|
|
564
576
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
565
|
-
CHECK_CANARY();
|
|
577
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
566
578
|
INC_SP(INSN_ATTR(sp_inc));
|
|
567
579
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
568
580
|
# undef INSN_ATTR
|
|
@@ -588,7 +600,7 @@ INSN_ENTRY(getconstant)
|
|
|
588
600
|
|
|
589
601
|
/* ### Instruction preambles. ### */
|
|
590
602
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
591
|
-
SETUP_CANARY();
|
|
603
|
+
SETUP_CANARY(leaf);
|
|
592
604
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
593
605
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, id);
|
|
594
606
|
|
|
@@ -598,14 +610,16 @@ INSN_ENTRY(getconstant)
|
|
|
598
610
|
{
|
|
599
611
|
val = vm_get_ev_const(ec, klass, id, allow_nil == Qtrue, 0);
|
|
600
612
|
}
|
|
601
|
-
# line
|
|
613
|
+
# line 614 "vm.inc"
|
|
602
614
|
# undef NAME_OF_CURRENT_INSN
|
|
603
615
|
|
|
604
616
|
/* ### Instruction trailers. ### */
|
|
605
617
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
606
|
-
CHECK_CANARY();
|
|
618
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
607
619
|
INC_SP(INSN_ATTR(sp_inc));
|
|
608
620
|
TOPN(0) = val;
|
|
621
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
622
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
609
623
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
610
624
|
# undef INSN_ATTR
|
|
611
625
|
|
|
@@ -629,7 +643,7 @@ INSN_ENTRY(setconstant)
|
|
|
629
643
|
|
|
630
644
|
/* ### Instruction preambles. ### */
|
|
631
645
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
632
|
-
SETUP_CANARY();
|
|
646
|
+
SETUP_CANARY(leaf);
|
|
633
647
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
634
648
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, id);
|
|
635
649
|
|
|
@@ -641,12 +655,12 @@ INSN_ENTRY(setconstant)
|
|
|
641
655
|
vm_ensure_not_refinement_module(GET_SELF());
|
|
642
656
|
rb_const_set(cbase, id, val);
|
|
643
657
|
}
|
|
644
|
-
# line
|
|
658
|
+
# line 659 "vm.inc"
|
|
645
659
|
# undef NAME_OF_CURRENT_INSN
|
|
646
660
|
|
|
647
661
|
/* ### Instruction trailers. ### */
|
|
648
662
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
649
|
-
CHECK_CANARY();
|
|
663
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
650
664
|
INC_SP(INSN_ATTR(sp_inc));
|
|
651
665
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
652
666
|
# undef INSN_ATTR
|
|
@@ -655,7 +669,7 @@ INSN_ENTRY(setconstant)
|
|
|
655
669
|
END_INSN(setconstant);
|
|
656
670
|
}
|
|
657
671
|
|
|
658
|
-
/* insn getglobal(
|
|
672
|
+
/* insn getglobal(gid)()(val) */
|
|
659
673
|
INSN_ENTRY(getglobal)
|
|
660
674
|
{
|
|
661
675
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -663,32 +677,33 @@ INSN_ENTRY(getglobal)
|
|
|
663
677
|
DEBUG_ENTER_INSN("getglobal");
|
|
664
678
|
|
|
665
679
|
/* ### Declare and assign variables. ### */
|
|
666
|
-
|
|
667
|
-
# define INSN_ATTR(x) attr_ ## x ## _getglobal(
|
|
680
|
+
ID gid = (ID)GET_OPERAND(1);
|
|
681
|
+
# define INSN_ATTR(x) attr_ ## x ## _getglobal(gid)
|
|
668
682
|
bool leaf = INSN_ATTR(leaf);
|
|
669
683
|
VALUE val;
|
|
670
684
|
|
|
671
685
|
/* ### Instruction preambles. ### */
|
|
672
686
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
673
|
-
SETUP_CANARY();
|
|
687
|
+
SETUP_CANARY(leaf);
|
|
674
688
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
675
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0,
|
|
689
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, gid);
|
|
676
690
|
|
|
677
691
|
/* ### Here we do the instruction body. ### */
|
|
678
692
|
# define NAME_OF_CURRENT_INSN getglobal
|
|
679
693
|
# line 295 "insns.def"
|
|
680
694
|
{
|
|
681
|
-
|
|
682
|
-
val = rb_gvar_get(gentry);
|
|
695
|
+
val = rb_gvar_get(gid);
|
|
683
696
|
}
|
|
684
|
-
# line
|
|
697
|
+
# line 698 "vm.inc"
|
|
685
698
|
# undef NAME_OF_CURRENT_INSN
|
|
686
699
|
|
|
687
700
|
/* ### Instruction trailers. ### */
|
|
688
701
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
689
|
-
CHECK_CANARY();
|
|
702
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
690
703
|
INC_SP(INSN_ATTR(sp_inc));
|
|
691
704
|
TOPN(0) = val;
|
|
705
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
706
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
692
707
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
693
708
|
# undef INSN_ATTR
|
|
694
709
|
|
|
@@ -696,7 +711,7 @@ INSN_ENTRY(getglobal)
|
|
|
696
711
|
END_INSN(getglobal);
|
|
697
712
|
}
|
|
698
713
|
|
|
699
|
-
/* insn setglobal(
|
|
714
|
+
/* insn setglobal(gid)(val)() */
|
|
700
715
|
INSN_ENTRY(setglobal)
|
|
701
716
|
{
|
|
702
717
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -704,30 +719,29 @@ INSN_ENTRY(setglobal)
|
|
|
704
719
|
DEBUG_ENTER_INSN("setglobal");
|
|
705
720
|
|
|
706
721
|
/* ### Declare and assign variables. ### */
|
|
707
|
-
|
|
708
|
-
# define INSN_ATTR(x) attr_ ## x ## _setglobal(
|
|
722
|
+
ID gid = (ID)GET_OPERAND(1);
|
|
723
|
+
# define INSN_ATTR(x) attr_ ## x ## _setglobal(gid)
|
|
709
724
|
bool leaf = INSN_ATTR(leaf);
|
|
710
725
|
VALUE val = TOPN(0);
|
|
711
726
|
|
|
712
727
|
/* ### Instruction preambles. ### */
|
|
713
728
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
714
|
-
SETUP_CANARY();
|
|
729
|
+
SETUP_CANARY(leaf);
|
|
715
730
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
716
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0,
|
|
731
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, gid);
|
|
717
732
|
|
|
718
733
|
/* ### Here we do the instruction body. ### */
|
|
719
734
|
# define NAME_OF_CURRENT_INSN setglobal
|
|
720
|
-
# line
|
|
735
|
+
# line 306 "insns.def"
|
|
721
736
|
{
|
|
722
|
-
|
|
723
|
-
rb_gvar_set(gentry, val);
|
|
737
|
+
rb_gvar_set(gid, val);
|
|
724
738
|
}
|
|
725
|
-
# line
|
|
739
|
+
# line 740 "vm.inc"
|
|
726
740
|
# undef NAME_OF_CURRENT_INSN
|
|
727
741
|
|
|
728
742
|
/* ### Instruction trailers. ### */
|
|
729
743
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
730
|
-
CHECK_CANARY();
|
|
744
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
731
745
|
INC_SP(INSN_ATTR(sp_inc));
|
|
732
746
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
733
747
|
# undef INSN_ATTR
|
|
@@ -750,23 +764,25 @@ INSN_ENTRY(putnil)
|
|
|
750
764
|
|
|
751
765
|
/* ### Instruction preambles. ### */
|
|
752
766
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
753
|
-
SETUP_CANARY();
|
|
767
|
+
SETUP_CANARY(leaf);
|
|
754
768
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
755
769
|
|
|
756
770
|
/* ### Here we do the instruction body. ### */
|
|
757
771
|
# define NAME_OF_CURRENT_INSN putnil
|
|
758
|
-
# line
|
|
772
|
+
# line 320 "insns.def"
|
|
759
773
|
{
|
|
760
774
|
val = Qnil;
|
|
761
775
|
}
|
|
762
|
-
# line
|
|
776
|
+
# line 777 "vm.inc"
|
|
763
777
|
# undef NAME_OF_CURRENT_INSN
|
|
764
778
|
|
|
765
779
|
/* ### Instruction trailers. ### */
|
|
766
780
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
767
|
-
CHECK_CANARY();
|
|
781
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
768
782
|
INC_SP(INSN_ATTR(sp_inc));
|
|
769
783
|
TOPN(0) = val;
|
|
784
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
785
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
770
786
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
771
787
|
# undef INSN_ATTR
|
|
772
788
|
|
|
@@ -788,23 +804,25 @@ INSN_ENTRY(putself)
|
|
|
788
804
|
|
|
789
805
|
/* ### Instruction preambles. ### */
|
|
790
806
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
791
|
-
SETUP_CANARY();
|
|
807
|
+
SETUP_CANARY(leaf);
|
|
792
808
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
793
809
|
|
|
794
810
|
/* ### Here we do the instruction body. ### */
|
|
795
811
|
# define NAME_OF_CURRENT_INSN putself
|
|
796
|
-
# line
|
|
812
|
+
# line 330 "insns.def"
|
|
797
813
|
{
|
|
798
814
|
val = GET_SELF();
|
|
799
815
|
}
|
|
800
|
-
# line
|
|
816
|
+
# line 817 "vm.inc"
|
|
801
817
|
# undef NAME_OF_CURRENT_INSN
|
|
802
818
|
|
|
803
819
|
/* ### Instruction trailers. ### */
|
|
804
820
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
805
|
-
CHECK_CANARY();
|
|
821
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
806
822
|
INC_SP(INSN_ATTR(sp_inc));
|
|
807
823
|
TOPN(0) = val;
|
|
824
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
825
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
808
826
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
809
827
|
# undef INSN_ATTR
|
|
810
828
|
|
|
@@ -833,6 +851,8 @@ INSN_ENTRY(putobject)
|
|
|
833
851
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
834
852
|
INC_SP(INSN_ATTR(sp_inc));
|
|
835
853
|
TOPN(0) = val;
|
|
854
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
855
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
836
856
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
837
857
|
# undef INSN_ATTR
|
|
838
858
|
|
|
@@ -855,27 +875,29 @@ INSN_ENTRY(putspecialobject)
|
|
|
855
875
|
|
|
856
876
|
/* ### Instruction preambles. ### */
|
|
857
877
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
858
|
-
SETUP_CANARY();
|
|
878
|
+
SETUP_CANARY(leaf);
|
|
859
879
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
860
880
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, value_type);
|
|
861
881
|
|
|
862
882
|
/* ### Here we do the instruction body. ### */
|
|
863
883
|
# define NAME_OF_CURRENT_INSN putspecialobject
|
|
864
|
-
# line
|
|
884
|
+
# line 352 "insns.def"
|
|
865
885
|
{
|
|
866
886
|
enum vm_special_object_type type;
|
|
867
887
|
|
|
868
888
|
type = (enum vm_special_object_type)value_type;
|
|
869
889
|
val = vm_get_special_object(GET_EP(), type);
|
|
870
890
|
}
|
|
871
|
-
# line
|
|
891
|
+
# line 892 "vm.inc"
|
|
872
892
|
# undef NAME_OF_CURRENT_INSN
|
|
873
893
|
|
|
874
894
|
/* ### Instruction trailers. ### */
|
|
875
895
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
876
|
-
CHECK_CANARY();
|
|
896
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
877
897
|
INC_SP(INSN_ATTR(sp_inc));
|
|
878
898
|
TOPN(0) = val;
|
|
899
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
900
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
879
901
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
880
902
|
# undef INSN_ATTR
|
|
881
903
|
|
|
@@ -898,24 +920,26 @@ INSN_ENTRY(putstring)
|
|
|
898
920
|
|
|
899
921
|
/* ### Instruction preambles. ### */
|
|
900
922
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
901
|
-
SETUP_CANARY();
|
|
923
|
+
SETUP_CANARY(leaf);
|
|
902
924
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
903
925
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, str);
|
|
904
926
|
|
|
905
927
|
/* ### Here we do the instruction body. ### */
|
|
906
928
|
# define NAME_OF_CURRENT_INSN putstring
|
|
907
|
-
# line
|
|
929
|
+
# line 365 "insns.def"
|
|
908
930
|
{
|
|
909
|
-
val =
|
|
931
|
+
val = rb_ec_str_resurrect(ec, str);
|
|
910
932
|
}
|
|
911
|
-
# line
|
|
933
|
+
# line 934 "vm.inc"
|
|
912
934
|
# undef NAME_OF_CURRENT_INSN
|
|
913
935
|
|
|
914
936
|
/* ### Instruction trailers. ### */
|
|
915
937
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
916
|
-
CHECK_CANARY();
|
|
938
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
917
939
|
INC_SP(INSN_ATTR(sp_inc));
|
|
918
940
|
TOPN(0) = val;
|
|
941
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
942
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
919
943
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
920
944
|
# undef INSN_ATTR
|
|
921
945
|
|
|
@@ -938,24 +962,26 @@ INSN_ENTRY(concatstrings)
|
|
|
938
962
|
|
|
939
963
|
/* ### Instruction preambles. ### */
|
|
940
964
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
941
|
-
SETUP_CANARY();
|
|
965
|
+
SETUP_CANARY(leaf);
|
|
942
966
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
943
967
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, num);
|
|
944
968
|
|
|
945
969
|
/* ### Here we do the instruction body. ### */
|
|
946
970
|
# define NAME_OF_CURRENT_INSN concatstrings
|
|
947
|
-
# line
|
|
971
|
+
# line 379 "insns.def"
|
|
948
972
|
{
|
|
949
973
|
val = rb_str_concat_literals(num, STACK_ADDR_FROM_TOP(num));
|
|
950
974
|
}
|
|
951
|
-
# line
|
|
975
|
+
# line 976 "vm.inc"
|
|
952
976
|
# undef NAME_OF_CURRENT_INSN
|
|
953
977
|
|
|
954
978
|
/* ### Instruction trailers. ### */
|
|
955
979
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
956
|
-
CHECK_CANARY();
|
|
980
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
957
981
|
INC_SP(INSN_ATTR(sp_inc));
|
|
958
982
|
TOPN(0) = val;
|
|
983
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
984
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
959
985
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
960
986
|
# undef INSN_ATTR
|
|
961
987
|
|
|
@@ -978,23 +1004,25 @@ INSN_ENTRY(tostring)
|
|
|
978
1004
|
|
|
979
1005
|
/* ### Instruction preambles. ### */
|
|
980
1006
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
981
|
-
SETUP_CANARY();
|
|
1007
|
+
SETUP_CANARY(leaf);
|
|
982
1008
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
983
1009
|
|
|
984
1010
|
/* ### Here we do the instruction body. ### */
|
|
985
1011
|
# define NAME_OF_CURRENT_INSN tostring
|
|
986
|
-
# line
|
|
1012
|
+
# line 389 "insns.def"
|
|
987
1013
|
{
|
|
988
1014
|
val = rb_obj_as_string_result(str, val);
|
|
989
1015
|
}
|
|
990
|
-
# line
|
|
1016
|
+
# line 1017 "vm.inc"
|
|
991
1017
|
# undef NAME_OF_CURRENT_INSN
|
|
992
1018
|
|
|
993
1019
|
/* ### Instruction trailers. ### */
|
|
994
1020
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
995
|
-
CHECK_CANARY();
|
|
1021
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
996
1022
|
INC_SP(INSN_ATTR(sp_inc));
|
|
997
1023
|
TOPN(0) = val;
|
|
1024
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1025
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
998
1026
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
999
1027
|
# undef INSN_ATTR
|
|
1000
1028
|
|
|
@@ -1002,46 +1030,6 @@ INSN_ENTRY(tostring)
|
|
|
1002
1030
|
END_INSN(tostring);
|
|
1003
1031
|
}
|
|
1004
1032
|
|
|
1005
|
-
/* insn freezestring(debug_info)(str)(str) */
|
|
1006
|
-
INSN_ENTRY(freezestring)
|
|
1007
|
-
{
|
|
1008
|
-
/* ### Declare that we have just entered into an instruction. ### */
|
|
1009
|
-
START_OF_ORIGINAL_INSN(freezestring);
|
|
1010
|
-
DEBUG_ENTER_INSN("freezestring");
|
|
1011
|
-
|
|
1012
|
-
/* ### Declare and assign variables. ### */
|
|
1013
|
-
VALUE debug_info = (VALUE)GET_OPERAND(1);
|
|
1014
|
-
# define INSN_ATTR(x) attr_ ## x ## _freezestring(debug_info)
|
|
1015
|
-
bool leaf = INSN_ATTR(leaf);
|
|
1016
|
-
VALUE str = TOPN(0);
|
|
1017
|
-
|
|
1018
|
-
/* ### Instruction preambles. ### */
|
|
1019
|
-
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1020
|
-
SETUP_CANARY();
|
|
1021
|
-
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1022
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, debug_info);
|
|
1023
|
-
|
|
1024
|
-
/* ### Here we do the instruction body. ### */
|
|
1025
|
-
# define NAME_OF_CURRENT_INSN freezestring
|
|
1026
|
-
# line 401 "insns.def"
|
|
1027
|
-
{
|
|
1028
|
-
vm_freezestring(str, debug_info);
|
|
1029
|
-
}
|
|
1030
|
-
# line 1031 "vm.inc"
|
|
1031
|
-
# undef NAME_OF_CURRENT_INSN
|
|
1032
|
-
|
|
1033
|
-
/* ### Instruction trailers. ### */
|
|
1034
|
-
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1035
|
-
CHECK_CANARY();
|
|
1036
|
-
INC_SP(INSN_ATTR(sp_inc));
|
|
1037
|
-
TOPN(0) = str;
|
|
1038
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1039
|
-
# undef INSN_ATTR
|
|
1040
|
-
|
|
1041
|
-
/* ### Leave the instruction. ### */
|
|
1042
|
-
END_INSN(freezestring);
|
|
1043
|
-
}
|
|
1044
|
-
|
|
1045
1033
|
/* insn toregexp(opt, cnt)(...)(val) */
|
|
1046
1034
|
INSN_ENTRY(toregexp)
|
|
1047
1035
|
{
|
|
@@ -1058,27 +1046,29 @@ INSN_ENTRY(toregexp)
|
|
|
1058
1046
|
|
|
1059
1047
|
/* ### Instruction preambles. ### */
|
|
1060
1048
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1061
|
-
SETUP_CANARY();
|
|
1049
|
+
SETUP_CANARY(leaf);
|
|
1062
1050
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1063
1051
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, opt);
|
|
1064
1052
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cnt);
|
|
1065
1053
|
|
|
1066
1054
|
/* ### Here we do the instruction body. ### */
|
|
1067
1055
|
# define NAME_OF_CURRENT_INSN toregexp
|
|
1068
|
-
# line
|
|
1056
|
+
# line 405 "insns.def"
|
|
1069
1057
|
{
|
|
1070
1058
|
const VALUE ary = rb_ary_tmp_new_from_values(0, cnt, STACK_ADDR_FROM_TOP(cnt));
|
|
1071
1059
|
val = rb_reg_new_ary(ary, (int)opt);
|
|
1072
1060
|
rb_ary_clear(ary);
|
|
1073
1061
|
}
|
|
1074
|
-
# line
|
|
1062
|
+
# line 1063 "vm.inc"
|
|
1075
1063
|
# undef NAME_OF_CURRENT_INSN
|
|
1076
1064
|
|
|
1077
1065
|
/* ### Instruction trailers. ### */
|
|
1078
1066
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1079
|
-
CHECK_CANARY();
|
|
1067
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1080
1068
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1081
1069
|
TOPN(0) = val;
|
|
1070
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1071
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1082
1072
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1083
1073
|
# undef INSN_ATTR
|
|
1084
1074
|
|
|
@@ -1101,23 +1091,25 @@ INSN_ENTRY(intern)
|
|
|
1101
1091
|
|
|
1102
1092
|
/* ### Instruction preambles. ### */
|
|
1103
1093
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1104
|
-
SETUP_CANARY();
|
|
1094
|
+
SETUP_CANARY(leaf);
|
|
1105
1095
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1106
1096
|
|
|
1107
1097
|
/* ### Here we do the instruction body. ### */
|
|
1108
1098
|
# define NAME_OF_CURRENT_INSN intern
|
|
1109
|
-
# line
|
|
1099
|
+
# line 417 "insns.def"
|
|
1110
1100
|
{
|
|
1111
1101
|
sym = rb_str_intern(str);
|
|
1112
1102
|
}
|
|
1113
|
-
# line
|
|
1103
|
+
# line 1104 "vm.inc"
|
|
1114
1104
|
# undef NAME_OF_CURRENT_INSN
|
|
1115
1105
|
|
|
1116
1106
|
/* ### Instruction trailers. ### */
|
|
1117
1107
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1118
|
-
CHECK_CANARY();
|
|
1108
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1119
1109
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1120
1110
|
TOPN(0) = sym;
|
|
1111
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1112
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1121
1113
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1122
1114
|
# undef INSN_ATTR
|
|
1123
1115
|
|
|
@@ -1140,24 +1132,26 @@ INSN_ENTRY(newarray)
|
|
|
1140
1132
|
|
|
1141
1133
|
/* ### Instruction preambles. ### */
|
|
1142
1134
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1143
|
-
SETUP_CANARY();
|
|
1135
|
+
SETUP_CANARY(leaf);
|
|
1144
1136
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1145
1137
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, num);
|
|
1146
1138
|
|
|
1147
1139
|
/* ### Here we do the instruction body. ### */
|
|
1148
1140
|
# define NAME_OF_CURRENT_INSN newarray
|
|
1149
|
-
# line
|
|
1141
|
+
# line 428 "insns.def"
|
|
1150
1142
|
{
|
|
1151
|
-
val =
|
|
1143
|
+
val = rb_ec_ary_new_from_values(ec, num, STACK_ADDR_FROM_TOP(num));
|
|
1152
1144
|
}
|
|
1153
|
-
# line
|
|
1145
|
+
# line 1146 "vm.inc"
|
|
1154
1146
|
# undef NAME_OF_CURRENT_INSN
|
|
1155
1147
|
|
|
1156
1148
|
/* ### Instruction trailers. ### */
|
|
1157
1149
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1158
|
-
CHECK_CANARY();
|
|
1150
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1159
1151
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1160
1152
|
TOPN(0) = val;
|
|
1153
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1154
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1161
1155
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1162
1156
|
# undef INSN_ATTR
|
|
1163
1157
|
|
|
@@ -1180,13 +1174,13 @@ INSN_ENTRY(newarraykwsplat)
|
|
|
1180
1174
|
|
|
1181
1175
|
/* ### Instruction preambles. ### */
|
|
1182
1176
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1183
|
-
SETUP_CANARY();
|
|
1177
|
+
SETUP_CANARY(leaf);
|
|
1184
1178
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1185
1179
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, num);
|
|
1186
1180
|
|
|
1187
1181
|
/* ### Here we do the instruction body. ### */
|
|
1188
1182
|
# define NAME_OF_CURRENT_INSN newarraykwsplat
|
|
1189
|
-
# line
|
|
1183
|
+
# line 443 "insns.def"
|
|
1190
1184
|
{
|
|
1191
1185
|
if (RHASH_EMPTY_P(*STACK_ADDR_FROM_TOP(1))) {
|
|
1192
1186
|
val = rb_ary_new4(num-1, STACK_ADDR_FROM_TOP(num));
|
|
@@ -1195,14 +1189,16 @@ INSN_ENTRY(newarraykwsplat)
|
|
|
1195
1189
|
val = rb_ary_new4(num, STACK_ADDR_FROM_TOP(num));
|
|
1196
1190
|
}
|
|
1197
1191
|
}
|
|
1198
|
-
# line
|
|
1192
|
+
# line 1193 "vm.inc"
|
|
1199
1193
|
# undef NAME_OF_CURRENT_INSN
|
|
1200
1194
|
|
|
1201
1195
|
/* ### Instruction trailers. ### */
|
|
1202
1196
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1203
|
-
CHECK_CANARY();
|
|
1197
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1204
1198
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1205
1199
|
TOPN(0) = val;
|
|
1200
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1201
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1206
1202
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1207
1203
|
# undef INSN_ATTR
|
|
1208
1204
|
|
|
@@ -1225,25 +1221,27 @@ INSN_ENTRY(duparray)
|
|
|
1225
1221
|
|
|
1226
1222
|
/* ### Instruction preambles. ### */
|
|
1227
1223
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1228
|
-
SETUP_CANARY();
|
|
1224
|
+
SETUP_CANARY(leaf);
|
|
1229
1225
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1230
1226
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, ary);
|
|
1231
1227
|
|
|
1232
1228
|
/* ### Here we do the instruction body. ### */
|
|
1233
1229
|
# define NAME_OF_CURRENT_INSN duparray
|
|
1234
|
-
# line
|
|
1230
|
+
# line 458 "insns.def"
|
|
1235
1231
|
{
|
|
1236
1232
|
RUBY_DTRACE_CREATE_HOOK(ARRAY, RARRAY_LEN(ary));
|
|
1237
1233
|
val = rb_ary_resurrect(ary);
|
|
1238
1234
|
}
|
|
1239
|
-
# line
|
|
1235
|
+
# line 1236 "vm.inc"
|
|
1240
1236
|
# undef NAME_OF_CURRENT_INSN
|
|
1241
1237
|
|
|
1242
1238
|
/* ### Instruction trailers. ### */
|
|
1243
1239
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1244
|
-
CHECK_CANARY();
|
|
1240
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1245
1241
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1246
1242
|
TOPN(0) = val;
|
|
1243
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1244
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1247
1245
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1248
1246
|
# undef INSN_ATTR
|
|
1249
1247
|
|
|
@@ -1266,25 +1264,27 @@ INSN_ENTRY(duphash)
|
|
|
1266
1264
|
|
|
1267
1265
|
/* ### Instruction preambles. ### */
|
|
1268
1266
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1269
|
-
SETUP_CANARY();
|
|
1267
|
+
SETUP_CANARY(leaf);
|
|
1270
1268
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1271
1269
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, hash);
|
|
1272
1270
|
|
|
1273
1271
|
/* ### Here we do the instruction body. ### */
|
|
1274
1272
|
# define NAME_OF_CURRENT_INSN duphash
|
|
1275
|
-
# line
|
|
1273
|
+
# line 469 "insns.def"
|
|
1276
1274
|
{
|
|
1277
1275
|
RUBY_DTRACE_CREATE_HOOK(HASH, RHASH_SIZE(hash) << 1);
|
|
1278
1276
|
val = rb_hash_resurrect(hash);
|
|
1279
1277
|
}
|
|
1280
|
-
# line
|
|
1278
|
+
# line 1279 "vm.inc"
|
|
1281
1279
|
# undef NAME_OF_CURRENT_INSN
|
|
1282
1280
|
|
|
1283
1281
|
/* ### Instruction trailers. ### */
|
|
1284
1282
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1285
|
-
CHECK_CANARY();
|
|
1283
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1286
1284
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1287
1285
|
TOPN(0) = val;
|
|
1286
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1287
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1288
1288
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1289
1289
|
# undef INSN_ATTR
|
|
1290
1290
|
|
|
@@ -1314,7 +1314,7 @@ INSN_ENTRY(expandarray)
|
|
|
1314
1314
|
|
|
1315
1315
|
/* ### Here we do the instruction body. ### */
|
|
1316
1316
|
# define NAME_OF_CURRENT_INSN expandarray
|
|
1317
|
-
# line
|
|
1317
|
+
# line 490 "insns.def"
|
|
1318
1318
|
{
|
|
1319
1319
|
vm_expandarray(GET_SP(), ary, num, (int)flag);
|
|
1320
1320
|
}
|
|
@@ -1347,12 +1347,12 @@ INSN_ENTRY(concatarray)
|
|
|
1347
1347
|
|
|
1348
1348
|
/* ### Instruction preambles. ### */
|
|
1349
1349
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1350
|
-
SETUP_CANARY();
|
|
1350
|
+
SETUP_CANARY(leaf);
|
|
1351
1351
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1352
1352
|
|
|
1353
1353
|
/* ### Here we do the instruction body. ### */
|
|
1354
1354
|
# define NAME_OF_CURRENT_INSN concatarray
|
|
1355
|
-
# line
|
|
1355
|
+
# line 501 "insns.def"
|
|
1356
1356
|
{
|
|
1357
1357
|
ary = vm_concat_array(ary1, ary2);
|
|
1358
1358
|
}
|
|
@@ -1361,9 +1361,11 @@ INSN_ENTRY(concatarray)
|
|
|
1361
1361
|
|
|
1362
1362
|
/* ### Instruction trailers. ### */
|
|
1363
1363
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1364
|
-
CHECK_CANARY();
|
|
1364
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1365
1365
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1366
1366
|
TOPN(0) = ary;
|
|
1367
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1368
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1367
1369
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1368
1370
|
# undef INSN_ATTR
|
|
1369
1371
|
|
|
@@ -1387,24 +1389,26 @@ INSN_ENTRY(splatarray)
|
|
|
1387
1389
|
|
|
1388
1390
|
/* ### Instruction preambles. ### */
|
|
1389
1391
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1390
|
-
SETUP_CANARY();
|
|
1392
|
+
SETUP_CANARY(leaf);
|
|
1391
1393
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1392
1394
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, flag);
|
|
1393
1395
|
|
|
1394
1396
|
/* ### Here we do the instruction body. ### */
|
|
1395
1397
|
# define NAME_OF_CURRENT_INSN splatarray
|
|
1396
|
-
# line
|
|
1398
|
+
# line 512 "insns.def"
|
|
1397
1399
|
{
|
|
1398
1400
|
obj = vm_splat_array(flag, ary);
|
|
1399
1401
|
}
|
|
1400
|
-
# line
|
|
1402
|
+
# line 1403 "vm.inc"
|
|
1401
1403
|
# undef NAME_OF_CURRENT_INSN
|
|
1402
1404
|
|
|
1403
1405
|
/* ### Instruction trailers. ### */
|
|
1404
1406
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1405
|
-
CHECK_CANARY();
|
|
1407
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1406
1408
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1407
1409
|
TOPN(0) = obj;
|
|
1410
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1411
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1408
1412
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1409
1413
|
# undef INSN_ATTR
|
|
1410
1414
|
|
|
@@ -1427,13 +1431,13 @@ INSN_ENTRY(newhash)
|
|
|
1427
1431
|
|
|
1428
1432
|
/* ### Instruction preambles. ### */
|
|
1429
1433
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1430
|
-
SETUP_CANARY();
|
|
1434
|
+
SETUP_CANARY(leaf);
|
|
1431
1435
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1432
1436
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, num);
|
|
1433
1437
|
|
|
1434
1438
|
/* ### Here we do the instruction body. ### */
|
|
1435
1439
|
# define NAME_OF_CURRENT_INSN newhash
|
|
1436
|
-
# line
|
|
1440
|
+
# line 524 "insns.def"
|
|
1437
1441
|
{
|
|
1438
1442
|
RUBY_DTRACE_CREATE_HOOK(HASH, num);
|
|
1439
1443
|
|
|
@@ -1443,14 +1447,16 @@ INSN_ENTRY(newhash)
|
|
|
1443
1447
|
rb_hash_bulk_insert(num, STACK_ADDR_FROM_TOP(num), val);
|
|
1444
1448
|
}
|
|
1445
1449
|
}
|
|
1446
|
-
# line
|
|
1450
|
+
# line 1451 "vm.inc"
|
|
1447
1451
|
# undef NAME_OF_CURRENT_INSN
|
|
1448
1452
|
|
|
1449
1453
|
/* ### Instruction trailers. ### */
|
|
1450
1454
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1451
|
-
CHECK_CANARY();
|
|
1455
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1452
1456
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1453
1457
|
TOPN(0) = val;
|
|
1458
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1459
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1454
1460
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1455
1461
|
# undef INSN_ATTR
|
|
1456
1462
|
|
|
@@ -1475,24 +1481,26 @@ INSN_ENTRY(newrange)
|
|
|
1475
1481
|
|
|
1476
1482
|
/* ### Instruction preambles. ### */
|
|
1477
1483
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1478
|
-
SETUP_CANARY();
|
|
1484
|
+
SETUP_CANARY(leaf);
|
|
1479
1485
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1480
1486
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, flag);
|
|
1481
1487
|
|
|
1482
1488
|
/* ### Here we do the instruction body. ### */
|
|
1483
1489
|
# define NAME_OF_CURRENT_INSN newrange
|
|
1484
|
-
# line
|
|
1490
|
+
# line 542 "insns.def"
|
|
1485
1491
|
{
|
|
1486
1492
|
val = rb_range_new(low, high, (int)flag);
|
|
1487
1493
|
}
|
|
1488
|
-
# line
|
|
1494
|
+
# line 1495 "vm.inc"
|
|
1489
1495
|
# undef NAME_OF_CURRENT_INSN
|
|
1490
1496
|
|
|
1491
1497
|
/* ### Instruction trailers. ### */
|
|
1492
1498
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1493
|
-
CHECK_CANARY();
|
|
1499
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1494
1500
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1495
1501
|
TOPN(0) = val;
|
|
1502
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1503
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1496
1504
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1497
1505
|
# undef INSN_ATTR
|
|
1498
1506
|
|
|
@@ -1514,22 +1522,22 @@ INSN_ENTRY(pop)
|
|
|
1514
1522
|
|
|
1515
1523
|
/* ### Instruction preambles. ### */
|
|
1516
1524
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1517
|
-
SETUP_CANARY();
|
|
1525
|
+
SETUP_CANARY(leaf);
|
|
1518
1526
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1519
1527
|
|
|
1520
1528
|
/* ### Here we do the instruction body. ### */
|
|
1521
1529
|
# define NAME_OF_CURRENT_INSN pop
|
|
1522
|
-
# line
|
|
1530
|
+
# line 556 "insns.def"
|
|
1523
1531
|
{
|
|
1524
1532
|
(void)val;
|
|
1525
1533
|
/* none */
|
|
1526
1534
|
}
|
|
1527
|
-
# line
|
|
1535
|
+
# line 1536 "vm.inc"
|
|
1528
1536
|
# undef NAME_OF_CURRENT_INSN
|
|
1529
1537
|
|
|
1530
1538
|
/* ### Instruction trailers. ### */
|
|
1531
1539
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1532
|
-
CHECK_CANARY();
|
|
1540
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1533
1541
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1534
1542
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1535
1543
|
# undef INSN_ATTR
|
|
@@ -1554,24 +1562,28 @@ INSN_ENTRY(dup)
|
|
|
1554
1562
|
|
|
1555
1563
|
/* ### Instruction preambles. ### */
|
|
1556
1564
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1557
|
-
SETUP_CANARY();
|
|
1565
|
+
SETUP_CANARY(leaf);
|
|
1558
1566
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1559
1567
|
|
|
1560
1568
|
/* ### Here we do the instruction body. ### */
|
|
1561
1569
|
# define NAME_OF_CURRENT_INSN dup
|
|
1562
|
-
# line
|
|
1570
|
+
# line 567 "insns.def"
|
|
1563
1571
|
{
|
|
1564
1572
|
val1 = val2 = val;
|
|
1565
1573
|
}
|
|
1566
|
-
# line
|
|
1574
|
+
# line 1575 "vm.inc"
|
|
1567
1575
|
# undef NAME_OF_CURRENT_INSN
|
|
1568
1576
|
|
|
1569
1577
|
/* ### Instruction trailers. ### */
|
|
1570
1578
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1571
|
-
CHECK_CANARY();
|
|
1579
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1572
1580
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1573
1581
|
TOPN(0) = val2;
|
|
1582
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1583
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1574
1584
|
TOPN(1) = val1;
|
|
1585
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(1), T_NONE));
|
|
1586
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(1), T_MOVED));
|
|
1575
1587
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1576
1588
|
# undef INSN_ATTR
|
|
1577
1589
|
|
|
@@ -1598,14 +1610,14 @@ INSN_ENTRY(dupn)
|
|
|
1598
1610
|
|
|
1599
1611
|
/* ### Here we do the instruction body. ### */
|
|
1600
1612
|
# define NAME_OF_CURRENT_INSN dupn
|
|
1601
|
-
# line
|
|
1613
|
+
# line 578 "insns.def"
|
|
1602
1614
|
{
|
|
1603
1615
|
void *dst = GET_SP();
|
|
1604
1616
|
void *src = STACK_ADDR_FROM_TOP(n);
|
|
1605
1617
|
|
|
1606
1618
|
MEMCPY(dst, src, VALUE, n);
|
|
1607
1619
|
}
|
|
1608
|
-
# line
|
|
1620
|
+
# line 1621 "vm.inc"
|
|
1609
1621
|
# undef NAME_OF_CURRENT_INSN
|
|
1610
1622
|
|
|
1611
1623
|
/* ### Instruction trailers. ### */
|
|
@@ -1639,7 +1651,11 @@ INSN_ENTRY(swap)
|
|
|
1639
1651
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1640
1652
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1641
1653
|
TOPN(0) = val;
|
|
1654
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1655
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1642
1656
|
TOPN(1) = obj;
|
|
1657
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(1), T_NONE));
|
|
1658
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(1), T_MOVED));
|
|
1643
1659
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1644
1660
|
# undef INSN_ATTR
|
|
1645
1661
|
|
|
@@ -1666,19 +1682,19 @@ INSN_ENTRY(reverse)
|
|
|
1666
1682
|
|
|
1667
1683
|
/* ### Here we do the instruction body. ### */
|
|
1668
1684
|
# define NAME_OF_CURRENT_INSN reverse
|
|
1669
|
-
# line
|
|
1685
|
+
# line 602 "insns.def"
|
|
1670
1686
|
{
|
|
1671
1687
|
rb_num_t i;
|
|
1672
1688
|
VALUE *sp = STACK_ADDR_FROM_TOP(n);
|
|
1673
1689
|
|
|
1674
1690
|
for (i=0; i<n/2; i++) {
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1691
|
+
VALUE v0 = sp[i];
|
|
1692
|
+
VALUE v1 = TOPN(i);
|
|
1693
|
+
sp[i] = v1;
|
|
1694
|
+
TOPN(i) = v0;
|
|
1679
1695
|
}
|
|
1680
1696
|
}
|
|
1681
|
-
# line
|
|
1697
|
+
# line 1698 "vm.inc"
|
|
1682
1698
|
# undef NAME_OF_CURRENT_INSN
|
|
1683
1699
|
|
|
1684
1700
|
/* ### Instruction trailers. ### */
|
|
@@ -1706,24 +1722,26 @@ INSN_ENTRY(topn)
|
|
|
1706
1722
|
|
|
1707
1723
|
/* ### Instruction preambles. ### */
|
|
1708
1724
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1709
|
-
SETUP_CANARY();
|
|
1725
|
+
SETUP_CANARY(leaf);
|
|
1710
1726
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1711
1727
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, n);
|
|
1712
1728
|
|
|
1713
1729
|
/* ### Here we do the instruction body. ### */
|
|
1714
1730
|
# define NAME_OF_CURRENT_INSN topn
|
|
1715
|
-
# line
|
|
1731
|
+
# line 632 "insns.def"
|
|
1716
1732
|
{
|
|
1717
1733
|
val = TOPN(n);
|
|
1718
1734
|
}
|
|
1719
|
-
# line
|
|
1735
|
+
# line 1736 "vm.inc"
|
|
1720
1736
|
# undef NAME_OF_CURRENT_INSN
|
|
1721
1737
|
|
|
1722
1738
|
/* ### Instruction trailers. ### */
|
|
1723
1739
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1724
|
-
CHECK_CANARY();
|
|
1740
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1725
1741
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1726
1742
|
TOPN(0) = val;
|
|
1743
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1744
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1727
1745
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1728
1746
|
# undef INSN_ATTR
|
|
1729
1747
|
|
|
@@ -1746,24 +1764,26 @@ INSN_ENTRY(setn)
|
|
|
1746
1764
|
|
|
1747
1765
|
/* ### Instruction preambles. ### */
|
|
1748
1766
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1749
|
-
SETUP_CANARY();
|
|
1767
|
+
SETUP_CANARY(leaf);
|
|
1750
1768
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1751
1769
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, n);
|
|
1752
1770
|
|
|
1753
1771
|
/* ### Here we do the instruction body. ### */
|
|
1754
1772
|
# define NAME_OF_CURRENT_INSN setn
|
|
1755
|
-
# line
|
|
1773
|
+
# line 643 "insns.def"
|
|
1756
1774
|
{
|
|
1757
1775
|
TOPN(n) = val;
|
|
1758
1776
|
}
|
|
1759
|
-
# line
|
|
1777
|
+
# line 1778 "vm.inc"
|
|
1760
1778
|
# undef NAME_OF_CURRENT_INSN
|
|
1761
1779
|
|
|
1762
1780
|
/* ### Instruction trailers. ### */
|
|
1763
1781
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1764
|
-
CHECK_CANARY();
|
|
1782
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1765
1783
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1766
1784
|
TOPN(0) = val;
|
|
1785
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1786
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1767
1787
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1768
1788
|
# undef INSN_ATTR
|
|
1769
1789
|
|
|
@@ -1816,7 +1836,7 @@ INSN_ENTRY(defined)
|
|
|
1816
1836
|
|
|
1817
1837
|
/* ### Instruction preambles. ### */
|
|
1818
1838
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1819
|
-
SETUP_CANARY();
|
|
1839
|
+
SETUP_CANARY(leaf);
|
|
1820
1840
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1821
1841
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, op_type);
|
|
1822
1842
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, obj);
|
|
@@ -1824,18 +1844,20 @@ INSN_ENTRY(defined)
|
|
|
1824
1844
|
|
|
1825
1845
|
/* ### Here we do the instruction body. ### */
|
|
1826
1846
|
# define NAME_OF_CURRENT_INSN defined
|
|
1827
|
-
# line
|
|
1847
|
+
# line 669 "insns.def"
|
|
1828
1848
|
{
|
|
1829
1849
|
val = vm_defined(ec, GET_CFP(), op_type, obj, needstr, v);
|
|
1830
1850
|
}
|
|
1831
|
-
# line
|
|
1851
|
+
# line 1852 "vm.inc"
|
|
1832
1852
|
# undef NAME_OF_CURRENT_INSN
|
|
1833
1853
|
|
|
1834
1854
|
/* ### Instruction trailers. ### */
|
|
1835
1855
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1836
|
-
CHECK_CANARY();
|
|
1856
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1837
1857
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1838
1858
|
TOPN(0) = val;
|
|
1859
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1860
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1839
1861
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1840
1862
|
# undef INSN_ATTR
|
|
1841
1863
|
|
|
@@ -1860,24 +1882,26 @@ INSN_ENTRY(checkmatch)
|
|
|
1860
1882
|
|
|
1861
1883
|
/* ### Instruction preambles. ### */
|
|
1862
1884
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1863
|
-
SETUP_CANARY();
|
|
1885
|
+
SETUP_CANARY(leaf);
|
|
1864
1886
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1865
1887
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, flag);
|
|
1866
1888
|
|
|
1867
1889
|
/* ### Here we do the instruction body. ### */
|
|
1868
1890
|
# define NAME_OF_CURRENT_INSN checkmatch
|
|
1869
|
-
# line
|
|
1891
|
+
# line 686 "insns.def"
|
|
1870
1892
|
{
|
|
1871
1893
|
result = vm_check_match(ec, target, pattern, flag);
|
|
1872
1894
|
}
|
|
1873
|
-
# line
|
|
1895
|
+
# line 1896 "vm.inc"
|
|
1874
1896
|
# undef NAME_OF_CURRENT_INSN
|
|
1875
1897
|
|
|
1876
1898
|
/* ### Instruction trailers. ### */
|
|
1877
1899
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1878
|
-
CHECK_CANARY();
|
|
1900
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1879
1901
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1880
1902
|
TOPN(0) = result;
|
|
1903
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1904
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1881
1905
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1882
1906
|
# undef INSN_ATTR
|
|
1883
1907
|
|
|
@@ -1901,25 +1925,27 @@ INSN_ENTRY(checkkeyword)
|
|
|
1901
1925
|
|
|
1902
1926
|
/* ### Instruction preambles. ### */
|
|
1903
1927
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1904
|
-
SETUP_CANARY();
|
|
1928
|
+
SETUP_CANARY(leaf);
|
|
1905
1929
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1906
1930
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, kw_bits_index);
|
|
1907
1931
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, keyword_index);
|
|
1908
1932
|
|
|
1909
1933
|
/* ### Here we do the instruction body. ### */
|
|
1910
1934
|
# define NAME_OF_CURRENT_INSN checkkeyword
|
|
1911
|
-
# line
|
|
1935
|
+
# line 696 "insns.def"
|
|
1912
1936
|
{
|
|
1913
1937
|
ret = vm_check_keyword(kw_bits_index, keyword_index, GET_EP());
|
|
1914
1938
|
}
|
|
1915
|
-
# line
|
|
1939
|
+
# line 1940 "vm.inc"
|
|
1916
1940
|
# undef NAME_OF_CURRENT_INSN
|
|
1917
1941
|
|
|
1918
1942
|
/* ### Instruction trailers. ### */
|
|
1919
1943
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1920
|
-
CHECK_CANARY();
|
|
1944
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1921
1945
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1922
1946
|
TOPN(0) = ret;
|
|
1947
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1948
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1923
1949
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1924
1950
|
# undef INSN_ATTR
|
|
1925
1951
|
|
|
@@ -1943,24 +1969,26 @@ INSN_ENTRY(checktype)
|
|
|
1943
1969
|
|
|
1944
1970
|
/* ### Instruction preambles. ### */
|
|
1945
1971
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1946
|
-
SETUP_CANARY();
|
|
1972
|
+
SETUP_CANARY(leaf);
|
|
1947
1973
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1948
1974
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, type);
|
|
1949
1975
|
|
|
1950
1976
|
/* ### Here we do the instruction body. ### */
|
|
1951
1977
|
# define NAME_OF_CURRENT_INSN checktype
|
|
1952
|
-
# line
|
|
1978
|
+
# line 706 "insns.def"
|
|
1953
1979
|
{
|
|
1954
1980
|
ret = (TYPE(val) == (int)type) ? Qtrue : Qfalse;
|
|
1955
1981
|
}
|
|
1956
|
-
# line
|
|
1982
|
+
# line 1983 "vm.inc"
|
|
1957
1983
|
# undef NAME_OF_CURRENT_INSN
|
|
1958
1984
|
|
|
1959
1985
|
/* ### Instruction trailers. ### */
|
|
1960
1986
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1961
|
-
CHECK_CANARY();
|
|
1987
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1962
1988
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1963
1989
|
TOPN(0) = ret;
|
|
1990
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1991
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1964
1992
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1965
1993
|
# undef INSN_ATTR
|
|
1966
1994
|
|
|
@@ -1988,7 +2016,7 @@ INSN_ENTRY(defineclass)
|
|
|
1988
2016
|
/* ### Instruction preambles. ### */
|
|
1989
2017
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1990
2018
|
POPN(INSN_ATTR(popn));
|
|
1991
|
-
SETUP_CANARY();
|
|
2019
|
+
SETUP_CANARY(leaf);
|
|
1992
2020
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1993
2021
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, id);
|
|
1994
2022
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, class_iseq);
|
|
@@ -1996,7 +2024,7 @@ INSN_ENTRY(defineclass)
|
|
|
1996
2024
|
|
|
1997
2025
|
/* ### Here we do the instruction body. ### */
|
|
1998
2026
|
# define NAME_OF_CURRENT_INSN defineclass
|
|
1999
|
-
# line
|
|
2027
|
+
# line 722 "insns.def"
|
|
2000
2028
|
{
|
|
2001
2029
|
VALUE klass = vm_find_or_create_class_by_id(id, flags, cbase, super);
|
|
2002
2030
|
|
|
@@ -2004,20 +2032,20 @@ INSN_ENTRY(defineclass)
|
|
|
2004
2032
|
|
|
2005
2033
|
/* enter scope */
|
|
2006
2034
|
vm_push_frame(ec, class_iseq, VM_FRAME_MAGIC_CLASS | VM_ENV_FLAG_LOCAL, klass,
|
|
2007
|
-
|
|
2008
|
-
|
|
2009
|
-
|
|
2010
|
-
|
|
2011
|
-
|
|
2035
|
+
GET_BLOCK_HANDLER(),
|
|
2036
|
+
(VALUE)vm_cref_push(ec, klass, NULL, FALSE),
|
|
2037
|
+
class_iseq->body->iseq_encoded, GET_SP(),
|
|
2038
|
+
class_iseq->body->local_table_size,
|
|
2039
|
+
class_iseq->body->stack_max);
|
|
2012
2040
|
RESTORE_REGS();
|
|
2013
2041
|
NEXT_INSN();
|
|
2014
2042
|
}
|
|
2015
|
-
# line
|
|
2043
|
+
# line 2044 "vm.inc"
|
|
2016
2044
|
# undef NAME_OF_CURRENT_INSN
|
|
2017
2045
|
|
|
2018
2046
|
/* ### Instruction trailers. ### */
|
|
2019
2047
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2020
|
-
CHECK_CANARY();
|
|
2048
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2021
2049
|
PUSH(val);
|
|
2022
2050
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2023
2051
|
# undef INSN_ATTR
|
|
@@ -2042,23 +2070,23 @@ INSN_ENTRY(definemethod)
|
|
|
2042
2070
|
/* ### Instruction preambles. ### */
|
|
2043
2071
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2044
2072
|
POPN(INSN_ATTR(popn));
|
|
2045
|
-
SETUP_CANARY();
|
|
2073
|
+
SETUP_CANARY(leaf);
|
|
2046
2074
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2047
2075
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, id);
|
|
2048
2076
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, iseq);
|
|
2049
2077
|
|
|
2050
2078
|
/* ### Here we do the instruction body. ### */
|
|
2051
2079
|
# define NAME_OF_CURRENT_INSN definemethod
|
|
2052
|
-
# line
|
|
2080
|
+
# line 743 "insns.def"
|
|
2053
2081
|
{
|
|
2054
2082
|
vm_define_method(ec, Qnil, id, (VALUE)iseq, FALSE);
|
|
2055
2083
|
}
|
|
2056
|
-
# line
|
|
2084
|
+
# line 2085 "vm.inc"
|
|
2057
2085
|
# undef NAME_OF_CURRENT_INSN
|
|
2058
2086
|
|
|
2059
2087
|
/* ### Instruction trailers. ### */
|
|
2060
2088
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2061
|
-
CHECK_CANARY();
|
|
2089
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2062
2090
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2063
2091
|
# undef INSN_ATTR
|
|
2064
2092
|
|
|
@@ -2083,23 +2111,23 @@ INSN_ENTRY(definesmethod)
|
|
|
2083
2111
|
/* ### Instruction preambles. ### */
|
|
2084
2112
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2085
2113
|
POPN(INSN_ATTR(popn));
|
|
2086
|
-
SETUP_CANARY();
|
|
2114
|
+
SETUP_CANARY(leaf);
|
|
2087
2115
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2088
2116
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, id);
|
|
2089
2117
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, iseq);
|
|
2090
2118
|
|
|
2091
2119
|
/* ### Here we do the instruction body. ### */
|
|
2092
2120
|
# define NAME_OF_CURRENT_INSN definesmethod
|
|
2093
|
-
# line
|
|
2121
|
+
# line 752 "insns.def"
|
|
2094
2122
|
{
|
|
2095
2123
|
vm_define_method(ec, obj, id, (VALUE)iseq, TRUE);
|
|
2096
2124
|
}
|
|
2097
|
-
# line
|
|
2125
|
+
# line 2126 "vm.inc"
|
|
2098
2126
|
# undef NAME_OF_CURRENT_INSN
|
|
2099
2127
|
|
|
2100
2128
|
/* ### Instruction trailers. ### */
|
|
2101
2129
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2102
|
-
CHECK_CANARY();
|
|
2130
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2103
2131
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2104
2132
|
# undef INSN_ATTR
|
|
2105
2133
|
|
|
@@ -2124,29 +2152,29 @@ INSN_ENTRY(send)
|
|
|
2124
2152
|
/* ### Instruction preambles. ### */
|
|
2125
2153
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2126
2154
|
POPN(INSN_ATTR(popn));
|
|
2127
|
-
SETUP_CANARY();
|
|
2155
|
+
SETUP_CANARY(leaf);
|
|
2128
2156
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2129
2157
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
2130
2158
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, blockiseq);
|
|
2131
2159
|
|
|
2132
2160
|
/* ### Here we do the instruction body. ### */
|
|
2133
2161
|
# define NAME_OF_CURRENT_INSN send
|
|
2134
|
-
# line
|
|
2162
|
+
# line 768 "insns.def"
|
|
2135
2163
|
{
|
|
2136
|
-
VALUE bh = vm_caller_setup_arg_block(ec, GET_CFP(),
|
|
2137
|
-
val = vm_sendish(ec, GET_CFP(), cd, bh,
|
|
2164
|
+
VALUE bh = vm_caller_setup_arg_block(ec, GET_CFP(), cd->ci, blockiseq, false);
|
|
2165
|
+
val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_method);
|
|
2138
2166
|
|
|
2139
2167
|
if (val == Qundef) {
|
|
2140
2168
|
RESTORE_REGS();
|
|
2141
2169
|
NEXT_INSN();
|
|
2142
2170
|
}
|
|
2143
2171
|
}
|
|
2144
|
-
# line
|
|
2172
|
+
# line 2173 "vm.inc"
|
|
2145
2173
|
# undef NAME_OF_CURRENT_INSN
|
|
2146
2174
|
|
|
2147
2175
|
/* ### Instruction trailers. ### */
|
|
2148
2176
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2149
|
-
CHECK_CANARY();
|
|
2177
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2150
2178
|
PUSH(val);
|
|
2151
2179
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2152
2180
|
# undef INSN_ATTR
|
|
@@ -2171,28 +2199,28 @@ INSN_ENTRY(opt_send_without_block)
|
|
|
2171
2199
|
/* ### Instruction preambles. ### */
|
|
2172
2200
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2173
2201
|
POPN(INSN_ATTR(popn));
|
|
2174
|
-
SETUP_CANARY();
|
|
2202
|
+
SETUP_CANARY(leaf);
|
|
2175
2203
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2176
2204
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
2177
2205
|
|
|
2178
2206
|
/* ### Here we do the instruction body. ### */
|
|
2179
2207
|
# define NAME_OF_CURRENT_INSN opt_send_without_block
|
|
2180
|
-
# line
|
|
2208
|
+
# line 787 "insns.def"
|
|
2181
2209
|
{
|
|
2182
2210
|
VALUE bh = VM_BLOCK_HANDLER_NONE;
|
|
2183
|
-
val = vm_sendish(ec, GET_CFP(), cd, bh,
|
|
2211
|
+
val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_method);
|
|
2184
2212
|
|
|
2185
2213
|
if (val == Qundef) {
|
|
2186
2214
|
RESTORE_REGS();
|
|
2187
2215
|
NEXT_INSN();
|
|
2188
2216
|
}
|
|
2189
2217
|
}
|
|
2190
|
-
# line
|
|
2218
|
+
# line 2219 "vm.inc"
|
|
2191
2219
|
# undef NAME_OF_CURRENT_INSN
|
|
2192
2220
|
|
|
2193
2221
|
/* ### Instruction trailers. ### */
|
|
2194
2222
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2195
|
-
CHECK_CANARY();
|
|
2223
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2196
2224
|
PUSH(val);
|
|
2197
2225
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2198
2226
|
# undef INSN_ATTR
|
|
@@ -2217,14 +2245,14 @@ INSN_ENTRY(opt_str_freeze)
|
|
|
2217
2245
|
|
|
2218
2246
|
/* ### Instruction preambles. ### */
|
|
2219
2247
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2220
|
-
SETUP_CANARY();
|
|
2248
|
+
SETUP_CANARY(leaf);
|
|
2221
2249
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2222
2250
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, str);
|
|
2223
2251
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cd);
|
|
2224
2252
|
|
|
2225
2253
|
/* ### Here we do the instruction body. ### */
|
|
2226
2254
|
# define NAME_OF_CURRENT_INSN opt_str_freeze
|
|
2227
|
-
# line
|
|
2255
|
+
# line 802 "insns.def"
|
|
2228
2256
|
{
|
|
2229
2257
|
val = vm_opt_str_freeze(str, BOP_FREEZE, idFreeze);
|
|
2230
2258
|
|
|
@@ -2233,14 +2261,16 @@ INSN_ENTRY(opt_str_freeze)
|
|
|
2233
2261
|
CALL_SIMPLE_METHOD();
|
|
2234
2262
|
}
|
|
2235
2263
|
}
|
|
2236
|
-
# line
|
|
2264
|
+
# line 2265 "vm.inc"
|
|
2237
2265
|
# undef NAME_OF_CURRENT_INSN
|
|
2238
2266
|
|
|
2239
2267
|
/* ### Instruction trailers. ### */
|
|
2240
2268
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2241
|
-
CHECK_CANARY();
|
|
2269
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2242
2270
|
INC_SP(INSN_ATTR(sp_inc));
|
|
2243
2271
|
TOPN(0) = val;
|
|
2272
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
2273
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
2244
2274
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2245
2275
|
# undef INSN_ATTR
|
|
2246
2276
|
|
|
@@ -2264,28 +2294,30 @@ INSN_ENTRY(opt_nil_p)
|
|
|
2264
2294
|
|
|
2265
2295
|
/* ### Instruction preambles. ### */
|
|
2266
2296
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2267
|
-
SETUP_CANARY();
|
|
2297
|
+
SETUP_CANARY(leaf);
|
|
2268
2298
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2269
2299
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
2270
2300
|
|
|
2271
2301
|
/* ### Here we do the instruction body. ### */
|
|
2272
2302
|
# define NAME_OF_CURRENT_INSN opt_nil_p
|
|
2273
|
-
# line
|
|
2303
|
+
# line 817 "insns.def"
|
|
2274
2304
|
{
|
|
2275
|
-
val = vm_opt_nil_p(cd, recv);
|
|
2305
|
+
val = vm_opt_nil_p(GET_ISEQ(), cd, recv);
|
|
2276
2306
|
|
|
2277
2307
|
if (val == Qundef) {
|
|
2278
2308
|
CALL_SIMPLE_METHOD();
|
|
2279
2309
|
}
|
|
2280
2310
|
}
|
|
2281
|
-
# line
|
|
2311
|
+
# line 2312 "vm.inc"
|
|
2282
2312
|
# undef NAME_OF_CURRENT_INSN
|
|
2283
2313
|
|
|
2284
2314
|
/* ### Instruction trailers. ### */
|
|
2285
2315
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2286
|
-
CHECK_CANARY();
|
|
2316
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2287
2317
|
INC_SP(INSN_ATTR(sp_inc));
|
|
2288
2318
|
TOPN(0) = val;
|
|
2319
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
2320
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
2289
2321
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2290
2322
|
# undef INSN_ATTR
|
|
2291
2323
|
|
|
@@ -2309,14 +2341,14 @@ INSN_ENTRY(opt_str_uminus)
|
|
|
2309
2341
|
|
|
2310
2342
|
/* ### Instruction preambles. ### */
|
|
2311
2343
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2312
|
-
SETUP_CANARY();
|
|
2344
|
+
SETUP_CANARY(leaf);
|
|
2313
2345
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2314
2346
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, str);
|
|
2315
2347
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cd);
|
|
2316
2348
|
|
|
2317
2349
|
/* ### Here we do the instruction body. ### */
|
|
2318
2350
|
# define NAME_OF_CURRENT_INSN opt_str_uminus
|
|
2319
|
-
# line
|
|
2351
|
+
# line 830 "insns.def"
|
|
2320
2352
|
{
|
|
2321
2353
|
val = vm_opt_str_freeze(str, BOP_UMINUS, idUMinus);
|
|
2322
2354
|
|
|
@@ -2325,14 +2357,16 @@ INSN_ENTRY(opt_str_uminus)
|
|
|
2325
2357
|
CALL_SIMPLE_METHOD();
|
|
2326
2358
|
}
|
|
2327
2359
|
}
|
|
2328
|
-
# line
|
|
2360
|
+
# line 2361 "vm.inc"
|
|
2329
2361
|
# undef NAME_OF_CURRENT_INSN
|
|
2330
2362
|
|
|
2331
2363
|
/* ### Instruction trailers. ### */
|
|
2332
2364
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2333
|
-
CHECK_CANARY();
|
|
2365
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2334
2366
|
INC_SP(INSN_ATTR(sp_inc));
|
|
2335
2367
|
TOPN(0) = val;
|
|
2368
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
2369
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
2336
2370
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2337
2371
|
# undef INSN_ATTR
|
|
2338
2372
|
|
|
@@ -2355,24 +2389,26 @@ INSN_ENTRY(opt_newarray_max)
|
|
|
2355
2389
|
|
|
2356
2390
|
/* ### Instruction preambles. ### */
|
|
2357
2391
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2358
|
-
SETUP_CANARY();
|
|
2392
|
+
SETUP_CANARY(leaf);
|
|
2359
2393
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2360
2394
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, num);
|
|
2361
2395
|
|
|
2362
2396
|
/* ### Here we do the instruction body. ### */
|
|
2363
2397
|
# define NAME_OF_CURRENT_INSN opt_newarray_max
|
|
2364
|
-
# line
|
|
2398
|
+
# line 850 "insns.def"
|
|
2365
2399
|
{
|
|
2366
2400
|
val = vm_opt_newarray_max(num, STACK_ADDR_FROM_TOP(num));
|
|
2367
2401
|
}
|
|
2368
|
-
# line
|
|
2402
|
+
# line 2403 "vm.inc"
|
|
2369
2403
|
# undef NAME_OF_CURRENT_INSN
|
|
2370
2404
|
|
|
2371
2405
|
/* ### Instruction trailers. ### */
|
|
2372
2406
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2373
|
-
CHECK_CANARY();
|
|
2407
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2374
2408
|
INC_SP(INSN_ATTR(sp_inc));
|
|
2375
2409
|
TOPN(0) = val;
|
|
2410
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
2411
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
2376
2412
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2377
2413
|
# undef INSN_ATTR
|
|
2378
2414
|
|
|
@@ -2395,24 +2431,26 @@ INSN_ENTRY(opt_newarray_min)
|
|
|
2395
2431
|
|
|
2396
2432
|
/* ### Instruction preambles. ### */
|
|
2397
2433
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2398
|
-
SETUP_CANARY();
|
|
2434
|
+
SETUP_CANARY(leaf);
|
|
2399
2435
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2400
2436
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, num);
|
|
2401
2437
|
|
|
2402
2438
|
/* ### Here we do the instruction body. ### */
|
|
2403
2439
|
# define NAME_OF_CURRENT_INSN opt_newarray_min
|
|
2404
|
-
# line
|
|
2440
|
+
# line 862 "insns.def"
|
|
2405
2441
|
{
|
|
2406
2442
|
val = vm_opt_newarray_min(num, STACK_ADDR_FROM_TOP(num));
|
|
2407
2443
|
}
|
|
2408
|
-
# line
|
|
2444
|
+
# line 2445 "vm.inc"
|
|
2409
2445
|
# undef NAME_OF_CURRENT_INSN
|
|
2410
2446
|
|
|
2411
2447
|
/* ### Instruction trailers. ### */
|
|
2412
2448
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2413
|
-
CHECK_CANARY();
|
|
2449
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2414
2450
|
INC_SP(INSN_ATTR(sp_inc));
|
|
2415
2451
|
TOPN(0) = val;
|
|
2452
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
2453
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
2416
2454
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2417
2455
|
# undef INSN_ATTR
|
|
2418
2456
|
|
|
@@ -2437,29 +2475,29 @@ INSN_ENTRY(invokesuper)
|
|
|
2437
2475
|
/* ### Instruction preambles. ### */
|
|
2438
2476
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2439
2477
|
POPN(INSN_ATTR(popn));
|
|
2440
|
-
SETUP_CANARY();
|
|
2478
|
+
SETUP_CANARY(leaf);
|
|
2441
2479
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2442
2480
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
2443
2481
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, blockiseq);
|
|
2444
2482
|
|
|
2445
2483
|
/* ### Here we do the instruction body. ### */
|
|
2446
2484
|
# define NAME_OF_CURRENT_INSN invokesuper
|
|
2447
|
-
# line
|
|
2485
|
+
# line 874 "insns.def"
|
|
2448
2486
|
{
|
|
2449
|
-
VALUE bh = vm_caller_setup_arg_block(ec, GET_CFP(),
|
|
2450
|
-
val = vm_sendish(ec, GET_CFP(), cd, bh,
|
|
2487
|
+
VALUE bh = vm_caller_setup_arg_block(ec, GET_CFP(), cd->ci, blockiseq, true);
|
|
2488
|
+
val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_super);
|
|
2451
2489
|
|
|
2452
2490
|
if (val == Qundef) {
|
|
2453
2491
|
RESTORE_REGS();
|
|
2454
2492
|
NEXT_INSN();
|
|
2455
2493
|
}
|
|
2456
2494
|
}
|
|
2457
|
-
# line
|
|
2495
|
+
# line 2496 "vm.inc"
|
|
2458
2496
|
# undef NAME_OF_CURRENT_INSN
|
|
2459
2497
|
|
|
2460
2498
|
/* ### Instruction trailers. ### */
|
|
2461
2499
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2462
|
-
CHECK_CANARY();
|
|
2500
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2463
2501
|
PUSH(val);
|
|
2464
2502
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2465
2503
|
# undef INSN_ATTR
|
|
@@ -2484,32 +2522,28 @@ INSN_ENTRY(invokeblock)
|
|
|
2484
2522
|
/* ### Instruction preambles. ### */
|
|
2485
2523
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2486
2524
|
POPN(INSN_ATTR(popn));
|
|
2487
|
-
SETUP_CANARY();
|
|
2525
|
+
SETUP_CANARY(leaf);
|
|
2488
2526
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2489
2527
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
2490
2528
|
|
|
2491
2529
|
/* ### Here we do the instruction body. ### */
|
|
2492
2530
|
# define NAME_OF_CURRENT_INSN invokeblock
|
|
2493
|
-
# line
|
|
2531
|
+
# line 893 "insns.def"
|
|
2494
2532
|
{
|
|
2495
|
-
if (UNLIKELY(cd->cc.call != vm_invokeblock_i)) {
|
|
2496
|
-
cd->cc.call = vm_invokeblock_i; // check before setting to avoid CoW
|
|
2497
|
-
}
|
|
2498
|
-
|
|
2499
2533
|
VALUE bh = VM_BLOCK_HANDLER_NONE;
|
|
2500
|
-
val = vm_sendish(ec, GET_CFP(), cd, bh,
|
|
2534
|
+
val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_invokeblock);
|
|
2501
2535
|
|
|
2502
2536
|
if (val == Qundef) {
|
|
2503
2537
|
RESTORE_REGS();
|
|
2504
2538
|
NEXT_INSN();
|
|
2505
2539
|
}
|
|
2506
2540
|
}
|
|
2507
|
-
# line
|
|
2541
|
+
# line 2542 "vm.inc"
|
|
2508
2542
|
# undef NAME_OF_CURRENT_INSN
|
|
2509
2543
|
|
|
2510
2544
|
/* ### Instruction trailers. ### */
|
|
2511
2545
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2512
|
-
CHECK_CANARY();
|
|
2546
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2513
2547
|
PUSH(val);
|
|
2514
2548
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2515
2549
|
# undef INSN_ATTR
|
|
@@ -2533,40 +2567,38 @@ INSN_ENTRY(leave)
|
|
|
2533
2567
|
/* ### Instruction preambles. ### */
|
|
2534
2568
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2535
2569
|
POPN(INSN_ATTR(popn));
|
|
2536
|
-
SETUP_CANARY();
|
|
2570
|
+
SETUP_CANARY(leaf);
|
|
2537
2571
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2538
2572
|
|
|
2539
2573
|
/* ### Here we do the instruction body. ### */
|
|
2540
2574
|
# define NAME_OF_CURRENT_INSN leave
|
|
2541
|
-
# line
|
|
2575
|
+
# line 914 "insns.def"
|
|
2542
2576
|
{
|
|
2543
2577
|
if (OPT_CHECKED_RUN) {
|
|
2544
2578
|
const VALUE *const bp = vm_base_ptr(GET_CFP());
|
|
2545
2579
|
if (GET_SP() != bp) {
|
|
2546
2580
|
vm_stack_consistency_error(ec, GET_CFP(), bp);
|
|
2547
|
-
|
|
2581
|
+
}
|
|
2548
2582
|
}
|
|
2549
2583
|
|
|
2550
|
-
RUBY_VM_CHECK_INTS(ec);
|
|
2551
|
-
|
|
2552
2584
|
if (vm_pop_frame(ec, GET_CFP(), GET_EP())) {
|
|
2553
2585
|
# if OPT_CALL_THREADED_CODE
|
|
2554
|
-
|
|
2555
|
-
|
|
2586
|
+
rb_ec_thread_ptr(ec)->retval = val;
|
|
2587
|
+
return 0;
|
|
2556
2588
|
# else
|
|
2557
|
-
|
|
2589
|
+
return val;
|
|
2558
2590
|
# endif
|
|
2559
2591
|
}
|
|
2560
2592
|
else {
|
|
2561
|
-
|
|
2593
|
+
RESTORE_REGS();
|
|
2562
2594
|
}
|
|
2563
2595
|
}
|
|
2564
|
-
# line
|
|
2596
|
+
# line 2597 "vm.inc"
|
|
2565
2597
|
# undef NAME_OF_CURRENT_INSN
|
|
2566
2598
|
|
|
2567
2599
|
/* ### Instruction trailers. ### */
|
|
2568
2600
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2569
|
-
CHECK_CANARY();
|
|
2601
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2570
2602
|
PUSH(val);
|
|
2571
2603
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2572
2604
|
# undef INSN_ATTR
|
|
@@ -2591,27 +2623,28 @@ INSN_ENTRY(throw)
|
|
|
2591
2623
|
|
|
2592
2624
|
/* ### Instruction preambles. ### */
|
|
2593
2625
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2594
|
-
SETUP_CANARY();
|
|
2626
|
+
SETUP_CANARY(leaf);
|
|
2595
2627
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2596
2628
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, throw_state);
|
|
2597
2629
|
|
|
2598
2630
|
/* ### Here we do the instruction body. ### */
|
|
2599
2631
|
# define NAME_OF_CURRENT_INSN throw
|
|
2600
|
-
# line
|
|
2632
|
+
# line 947 "insns.def"
|
|
2601
2633
|
{
|
|
2602
|
-
RUBY_VM_CHECK_INTS(ec);
|
|
2603
2634
|
val = vm_throw(ec, GET_CFP(), throw_state, throwobj);
|
|
2604
2635
|
THROW_EXCEPTION(val);
|
|
2605
2636
|
/* unreachable */
|
|
2606
2637
|
}
|
|
2607
|
-
# line
|
|
2638
|
+
# line 2639 "vm.inc"
|
|
2608
2639
|
# undef NAME_OF_CURRENT_INSN
|
|
2609
2640
|
|
|
2610
2641
|
/* ### Instruction trailers. ### */
|
|
2611
2642
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2612
|
-
CHECK_CANARY();
|
|
2643
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2613
2644
|
INC_SP(INSN_ATTR(sp_inc));
|
|
2614
2645
|
TOPN(0) = val;
|
|
2646
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
2647
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
2615
2648
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2616
2649
|
# undef INSN_ATTR
|
|
2617
2650
|
|
|
@@ -2633,23 +2666,23 @@ INSN_ENTRY(jump)
|
|
|
2633
2666
|
|
|
2634
2667
|
/* ### Instruction preambles. ### */
|
|
2635
2668
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2636
|
-
SETUP_CANARY();
|
|
2669
|
+
SETUP_CANARY(leaf);
|
|
2637
2670
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2638
2671
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, dst);
|
|
2639
2672
|
|
|
2640
2673
|
/* ### Here we do the instruction body. ### */
|
|
2641
2674
|
# define NAME_OF_CURRENT_INSN jump
|
|
2642
|
-
# line
|
|
2675
|
+
# line 965 "insns.def"
|
|
2643
2676
|
{
|
|
2644
2677
|
RUBY_VM_CHECK_INTS(ec);
|
|
2645
2678
|
JUMP(dst);
|
|
2646
2679
|
}
|
|
2647
|
-
# line
|
|
2680
|
+
# line 2681 "vm.inc"
|
|
2648
2681
|
# undef NAME_OF_CURRENT_INSN
|
|
2649
2682
|
|
|
2650
2683
|
/* ### Instruction trailers. ### */
|
|
2651
2684
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2652
|
-
CHECK_CANARY();
|
|
2685
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2653
2686
|
INC_SP(INSN_ATTR(sp_inc));
|
|
2654
2687
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2655
2688
|
# undef INSN_ATTR
|
|
@@ -2673,25 +2706,25 @@ INSN_ENTRY(branchif)
|
|
|
2673
2706
|
|
|
2674
2707
|
/* ### Instruction preambles. ### */
|
|
2675
2708
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2676
|
-
SETUP_CANARY();
|
|
2709
|
+
SETUP_CANARY(leaf);
|
|
2677
2710
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2678
2711
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, dst);
|
|
2679
2712
|
|
|
2680
2713
|
/* ### Here we do the instruction body. ### */
|
|
2681
2714
|
# define NAME_OF_CURRENT_INSN branchif
|
|
2682
|
-
# line
|
|
2715
|
+
# line 978 "insns.def"
|
|
2683
2716
|
{
|
|
2684
2717
|
if (RTEST(val)) {
|
|
2685
|
-
|
|
2686
|
-
|
|
2718
|
+
RUBY_VM_CHECK_INTS(ec);
|
|
2719
|
+
JUMP(dst);
|
|
2687
2720
|
}
|
|
2688
2721
|
}
|
|
2689
|
-
# line
|
|
2722
|
+
# line 2723 "vm.inc"
|
|
2690
2723
|
# undef NAME_OF_CURRENT_INSN
|
|
2691
2724
|
|
|
2692
2725
|
/* ### Instruction trailers. ### */
|
|
2693
2726
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2694
|
-
CHECK_CANARY();
|
|
2727
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2695
2728
|
INC_SP(INSN_ATTR(sp_inc));
|
|
2696
2729
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2697
2730
|
# undef INSN_ATTR
|
|
@@ -2715,25 +2748,25 @@ INSN_ENTRY(branchunless)
|
|
|
2715
2748
|
|
|
2716
2749
|
/* ### Instruction preambles. ### */
|
|
2717
2750
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2718
|
-
SETUP_CANARY();
|
|
2751
|
+
SETUP_CANARY(leaf);
|
|
2719
2752
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2720
2753
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, dst);
|
|
2721
2754
|
|
|
2722
2755
|
/* ### Here we do the instruction body. ### */
|
|
2723
2756
|
# define NAME_OF_CURRENT_INSN branchunless
|
|
2724
|
-
# line
|
|
2757
|
+
# line 993 "insns.def"
|
|
2725
2758
|
{
|
|
2726
2759
|
if (!RTEST(val)) {
|
|
2727
|
-
|
|
2728
|
-
|
|
2760
|
+
RUBY_VM_CHECK_INTS(ec);
|
|
2761
|
+
JUMP(dst);
|
|
2729
2762
|
}
|
|
2730
2763
|
}
|
|
2731
|
-
# line
|
|
2764
|
+
# line 2765 "vm.inc"
|
|
2732
2765
|
# undef NAME_OF_CURRENT_INSN
|
|
2733
2766
|
|
|
2734
2767
|
/* ### Instruction trailers. ### */
|
|
2735
2768
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2736
|
-
CHECK_CANARY();
|
|
2769
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2737
2770
|
INC_SP(INSN_ATTR(sp_inc));
|
|
2738
2771
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2739
2772
|
# undef INSN_ATTR
|
|
@@ -2757,25 +2790,25 @@ INSN_ENTRY(branchnil)
|
|
|
2757
2790
|
|
|
2758
2791
|
/* ### Instruction preambles. ### */
|
|
2759
2792
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2760
|
-
SETUP_CANARY();
|
|
2793
|
+
SETUP_CANARY(leaf);
|
|
2761
2794
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2762
2795
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, dst);
|
|
2763
2796
|
|
|
2764
2797
|
/* ### Here we do the instruction body. ### */
|
|
2765
2798
|
# define NAME_OF_CURRENT_INSN branchnil
|
|
2766
|
-
# line
|
|
2799
|
+
# line 1008 "insns.def"
|
|
2767
2800
|
{
|
|
2768
2801
|
if (NIL_P(val)) {
|
|
2769
|
-
|
|
2770
|
-
|
|
2802
|
+
RUBY_VM_CHECK_INTS(ec);
|
|
2803
|
+
JUMP(dst);
|
|
2771
2804
|
}
|
|
2772
2805
|
}
|
|
2773
|
-
# line
|
|
2806
|
+
# line 2807 "vm.inc"
|
|
2774
2807
|
# undef NAME_OF_CURRENT_INSN
|
|
2775
2808
|
|
|
2776
2809
|
/* ### Instruction trailers. ### */
|
|
2777
2810
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2778
|
-
CHECK_CANARY();
|
|
2811
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2779
2812
|
INC_SP(INSN_ATTR(sp_inc));
|
|
2780
2813
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2781
2814
|
# undef INSN_ATTR
|
|
@@ -2800,31 +2833,33 @@ INSN_ENTRY(opt_getinlinecache)
|
|
|
2800
2833
|
|
|
2801
2834
|
/* ### Instruction preambles. ### */
|
|
2802
2835
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2803
|
-
SETUP_CANARY();
|
|
2836
|
+
SETUP_CANARY(leaf);
|
|
2804
2837
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2805
2838
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, dst);
|
|
2806
2839
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, ic);
|
|
2807
2840
|
|
|
2808
2841
|
/* ### Here we do the instruction body. ### */
|
|
2809
2842
|
# define NAME_OF_CURRENT_INSN opt_getinlinecache
|
|
2810
|
-
# line
|
|
2843
|
+
# line 1025 "insns.def"
|
|
2811
2844
|
{
|
|
2812
|
-
if (vm_ic_hit_p(ic, GET_EP())) {
|
|
2813
|
-
|
|
2814
|
-
|
|
2845
|
+
if (vm_ic_hit_p(ic->ic_serial, ic->ic_cref, GET_EP())) {
|
|
2846
|
+
val = ic->value;
|
|
2847
|
+
JUMP(dst);
|
|
2815
2848
|
}
|
|
2816
2849
|
else {
|
|
2817
|
-
|
|
2850
|
+
val = Qnil;
|
|
2818
2851
|
}
|
|
2819
2852
|
}
|
|
2820
|
-
# line
|
|
2853
|
+
# line 2854 "vm.inc"
|
|
2821
2854
|
# undef NAME_OF_CURRENT_INSN
|
|
2822
2855
|
|
|
2823
2856
|
/* ### Instruction trailers. ### */
|
|
2824
2857
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2825
|
-
CHECK_CANARY();
|
|
2858
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2826
2859
|
INC_SP(INSN_ATTR(sp_inc));
|
|
2827
2860
|
TOPN(0) = val;
|
|
2861
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
2862
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
2828
2863
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2829
2864
|
# undef INSN_ATTR
|
|
2830
2865
|
|
|
@@ -2847,24 +2882,26 @@ INSN_ENTRY(opt_setinlinecache)
|
|
|
2847
2882
|
|
|
2848
2883
|
/* ### Instruction preambles. ### */
|
|
2849
2884
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2850
|
-
SETUP_CANARY();
|
|
2885
|
+
SETUP_CANARY(leaf);
|
|
2851
2886
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2852
2887
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, ic);
|
|
2853
2888
|
|
|
2854
2889
|
/* ### Here we do the instruction body. ### */
|
|
2855
2890
|
# define NAME_OF_CURRENT_INSN opt_setinlinecache
|
|
2856
|
-
# line
|
|
2891
|
+
# line 1041 "insns.def"
|
|
2857
2892
|
{
|
|
2858
2893
|
vm_ic_update(ic, val, GET_EP());
|
|
2859
2894
|
}
|
|
2860
|
-
# line
|
|
2895
|
+
# line 2896 "vm.inc"
|
|
2861
2896
|
# undef NAME_OF_CURRENT_INSN
|
|
2862
2897
|
|
|
2863
2898
|
/* ### Instruction trailers. ### */
|
|
2864
2899
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2865
|
-
CHECK_CANARY();
|
|
2900
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2866
2901
|
INC_SP(INSN_ATTR(sp_inc));
|
|
2867
2902
|
TOPN(0) = val;
|
|
2903
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
2904
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
2868
2905
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2869
2906
|
# undef INSN_ATTR
|
|
2870
2907
|
|
|
@@ -2889,23 +2926,23 @@ INSN_ENTRY(once)
|
|
|
2889
2926
|
/* ### Instruction preambles. ### */
|
|
2890
2927
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2891
2928
|
POPN(INSN_ATTR(popn));
|
|
2892
|
-
SETUP_CANARY();
|
|
2929
|
+
SETUP_CANARY(leaf);
|
|
2893
2930
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2894
2931
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, iseq);
|
|
2895
2932
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, ise);
|
|
2896
2933
|
|
|
2897
2934
|
/* ### Here we do the instruction body. ### */
|
|
2898
2935
|
# define NAME_OF_CURRENT_INSN once
|
|
2899
|
-
# line
|
|
2936
|
+
# line 1051 "insns.def"
|
|
2900
2937
|
{
|
|
2901
2938
|
val = vm_once_dispatch(ec, iseq, ise);
|
|
2902
2939
|
}
|
|
2903
|
-
# line
|
|
2940
|
+
# line 2941 "vm.inc"
|
|
2904
2941
|
# undef NAME_OF_CURRENT_INSN
|
|
2905
2942
|
|
|
2906
2943
|
/* ### Instruction trailers. ### */
|
|
2907
2944
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2908
|
-
CHECK_CANARY();
|
|
2945
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2909
2946
|
PUSH(val);
|
|
2910
2947
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2911
2948
|
# undef INSN_ATTR
|
|
@@ -2930,27 +2967,27 @@ INSN_ENTRY(opt_case_dispatch)
|
|
|
2930
2967
|
|
|
2931
2968
|
/* ### Instruction preambles. ### */
|
|
2932
2969
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2933
|
-
SETUP_CANARY();
|
|
2970
|
+
SETUP_CANARY(leaf);
|
|
2934
2971
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2935
2972
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, hash);
|
|
2936
2973
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, else_offset);
|
|
2937
2974
|
|
|
2938
2975
|
/* ### Here we do the instruction body. ### */
|
|
2939
2976
|
# define NAME_OF_CURRENT_INSN opt_case_dispatch
|
|
2940
|
-
# line
|
|
2977
|
+
# line 1062 "insns.def"
|
|
2941
2978
|
{
|
|
2942
2979
|
OFFSET dst = vm_case_dispatch(hash, else_offset, key);
|
|
2943
2980
|
|
|
2944
2981
|
if (dst) {
|
|
2945
|
-
|
|
2982
|
+
JUMP(dst);
|
|
2946
2983
|
}
|
|
2947
2984
|
}
|
|
2948
|
-
# line
|
|
2985
|
+
# line 2986 "vm.inc"
|
|
2949
2986
|
# undef NAME_OF_CURRENT_INSN
|
|
2950
2987
|
|
|
2951
2988
|
/* ### Instruction trailers. ### */
|
|
2952
2989
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2953
|
-
CHECK_CANARY();
|
|
2990
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2954
2991
|
INC_SP(INSN_ATTR(sp_inc));
|
|
2955
2992
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2956
2993
|
# undef INSN_ATTR
|
|
@@ -2976,13 +3013,13 @@ INSN_ENTRY(opt_plus)
|
|
|
2976
3013
|
|
|
2977
3014
|
/* ### Instruction preambles. ### */
|
|
2978
3015
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2979
|
-
SETUP_CANARY();
|
|
3016
|
+
SETUP_CANARY(leaf);
|
|
2980
3017
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2981
3018
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
2982
3019
|
|
|
2983
3020
|
/* ### Here we do the instruction body. ### */
|
|
2984
3021
|
# define NAME_OF_CURRENT_INSN opt_plus
|
|
2985
|
-
# line
|
|
3022
|
+
# line 1078 "insns.def"
|
|
2986
3023
|
{
|
|
2987
3024
|
val = vm_opt_plus(recv, obj);
|
|
2988
3025
|
|
|
@@ -2990,14 +3027,16 @@ INSN_ENTRY(opt_plus)
|
|
|
2990
3027
|
CALL_SIMPLE_METHOD();
|
|
2991
3028
|
}
|
|
2992
3029
|
}
|
|
2993
|
-
# line
|
|
3030
|
+
# line 3031 "vm.inc"
|
|
2994
3031
|
# undef NAME_OF_CURRENT_INSN
|
|
2995
3032
|
|
|
2996
3033
|
/* ### Instruction trailers. ### */
|
|
2997
3034
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2998
|
-
CHECK_CANARY();
|
|
3035
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2999
3036
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3000
3037
|
TOPN(0) = val;
|
|
3038
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3039
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3001
3040
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3002
3041
|
# undef INSN_ATTR
|
|
3003
3042
|
|
|
@@ -3022,13 +3061,13 @@ INSN_ENTRY(opt_minus)
|
|
|
3022
3061
|
|
|
3023
3062
|
/* ### Instruction preambles. ### */
|
|
3024
3063
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3025
|
-
SETUP_CANARY();
|
|
3064
|
+
SETUP_CANARY(leaf);
|
|
3026
3065
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3027
3066
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3028
3067
|
|
|
3029
3068
|
/* ### Here we do the instruction body. ### */
|
|
3030
3069
|
# define NAME_OF_CURRENT_INSN opt_minus
|
|
3031
|
-
# line
|
|
3070
|
+
# line 1092 "insns.def"
|
|
3032
3071
|
{
|
|
3033
3072
|
val = vm_opt_minus(recv, obj);
|
|
3034
3073
|
|
|
@@ -3036,14 +3075,16 @@ INSN_ENTRY(opt_minus)
|
|
|
3036
3075
|
CALL_SIMPLE_METHOD();
|
|
3037
3076
|
}
|
|
3038
3077
|
}
|
|
3039
|
-
# line
|
|
3078
|
+
# line 3079 "vm.inc"
|
|
3040
3079
|
# undef NAME_OF_CURRENT_INSN
|
|
3041
3080
|
|
|
3042
3081
|
/* ### Instruction trailers. ### */
|
|
3043
3082
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3044
|
-
CHECK_CANARY();
|
|
3083
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3045
3084
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3046
3085
|
TOPN(0) = val;
|
|
3086
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3087
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3047
3088
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3048
3089
|
# undef INSN_ATTR
|
|
3049
3090
|
|
|
@@ -3068,13 +3109,13 @@ INSN_ENTRY(opt_mult)
|
|
|
3068
3109
|
|
|
3069
3110
|
/* ### Instruction preambles. ### */
|
|
3070
3111
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3071
|
-
SETUP_CANARY();
|
|
3112
|
+
SETUP_CANARY(leaf);
|
|
3072
3113
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3073
3114
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3074
3115
|
|
|
3075
3116
|
/* ### Here we do the instruction body. ### */
|
|
3076
3117
|
# define NAME_OF_CURRENT_INSN opt_mult
|
|
3077
|
-
# line
|
|
3118
|
+
# line 1106 "insns.def"
|
|
3078
3119
|
{
|
|
3079
3120
|
val = vm_opt_mult(recv, obj);
|
|
3080
3121
|
|
|
@@ -3082,14 +3123,16 @@ INSN_ENTRY(opt_mult)
|
|
|
3082
3123
|
CALL_SIMPLE_METHOD();
|
|
3083
3124
|
}
|
|
3084
3125
|
}
|
|
3085
|
-
# line
|
|
3126
|
+
# line 3127 "vm.inc"
|
|
3086
3127
|
# undef NAME_OF_CURRENT_INSN
|
|
3087
3128
|
|
|
3088
3129
|
/* ### Instruction trailers. ### */
|
|
3089
3130
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3090
|
-
CHECK_CANARY();
|
|
3131
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3091
3132
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3092
3133
|
TOPN(0) = val;
|
|
3134
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3135
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3093
3136
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3094
3137
|
# undef INSN_ATTR
|
|
3095
3138
|
|
|
@@ -3114,13 +3157,13 @@ INSN_ENTRY(opt_div)
|
|
|
3114
3157
|
|
|
3115
3158
|
/* ### Instruction preambles. ### */
|
|
3116
3159
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3117
|
-
SETUP_CANARY();
|
|
3160
|
+
SETUP_CANARY(leaf);
|
|
3118
3161
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3119
3162
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3120
3163
|
|
|
3121
3164
|
/* ### Here we do the instruction body. ### */
|
|
3122
3165
|
# define NAME_OF_CURRENT_INSN opt_div
|
|
3123
|
-
# line
|
|
3166
|
+
# line 1123 "insns.def"
|
|
3124
3167
|
{
|
|
3125
3168
|
val = vm_opt_div(recv, obj);
|
|
3126
3169
|
|
|
@@ -3128,14 +3171,16 @@ INSN_ENTRY(opt_div)
|
|
|
3128
3171
|
CALL_SIMPLE_METHOD();
|
|
3129
3172
|
}
|
|
3130
3173
|
}
|
|
3131
|
-
# line
|
|
3174
|
+
# line 3175 "vm.inc"
|
|
3132
3175
|
# undef NAME_OF_CURRENT_INSN
|
|
3133
3176
|
|
|
3134
3177
|
/* ### Instruction trailers. ### */
|
|
3135
3178
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3136
|
-
CHECK_CANARY();
|
|
3179
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3137
3180
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3138
3181
|
TOPN(0) = val;
|
|
3182
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3183
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3139
3184
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3140
3185
|
# undef INSN_ATTR
|
|
3141
3186
|
|
|
@@ -3160,13 +3205,13 @@ INSN_ENTRY(opt_mod)
|
|
|
3160
3205
|
|
|
3161
3206
|
/* ### Instruction preambles. ### */
|
|
3162
3207
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3163
|
-
SETUP_CANARY();
|
|
3208
|
+
SETUP_CANARY(leaf);
|
|
3164
3209
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3165
3210
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3166
3211
|
|
|
3167
3212
|
/* ### Here we do the instruction body. ### */
|
|
3168
3213
|
# define NAME_OF_CURRENT_INSN opt_mod
|
|
3169
|
-
# line
|
|
3214
|
+
# line 1139 "insns.def"
|
|
3170
3215
|
{
|
|
3171
3216
|
val = vm_opt_mod(recv, obj);
|
|
3172
3217
|
|
|
@@ -3174,14 +3219,16 @@ INSN_ENTRY(opt_mod)
|
|
|
3174
3219
|
CALL_SIMPLE_METHOD();
|
|
3175
3220
|
}
|
|
3176
3221
|
}
|
|
3177
|
-
# line
|
|
3222
|
+
# line 3223 "vm.inc"
|
|
3178
3223
|
# undef NAME_OF_CURRENT_INSN
|
|
3179
3224
|
|
|
3180
3225
|
/* ### Instruction trailers. ### */
|
|
3181
3226
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3182
|
-
CHECK_CANARY();
|
|
3227
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3183
3228
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3184
3229
|
TOPN(0) = val;
|
|
3230
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3231
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3185
3232
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3186
3233
|
# undef INSN_ATTR
|
|
3187
3234
|
|
|
@@ -3206,28 +3253,30 @@ INSN_ENTRY(opt_eq)
|
|
|
3206
3253
|
|
|
3207
3254
|
/* ### Instruction preambles. ### */
|
|
3208
3255
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3209
|
-
SETUP_CANARY();
|
|
3256
|
+
SETUP_CANARY(leaf);
|
|
3210
3257
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3211
3258
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3212
3259
|
|
|
3213
3260
|
/* ### Here we do the instruction body. ### */
|
|
3214
3261
|
# define NAME_OF_CURRENT_INSN opt_eq
|
|
3215
|
-
# line
|
|
3262
|
+
# line 1153 "insns.def"
|
|
3216
3263
|
{
|
|
3217
|
-
val =
|
|
3264
|
+
val = opt_equality(GET_ISEQ(), recv, obj, cd);
|
|
3218
3265
|
|
|
3219
3266
|
if (val == Qundef) {
|
|
3220
3267
|
CALL_SIMPLE_METHOD();
|
|
3221
3268
|
}
|
|
3222
3269
|
}
|
|
3223
|
-
# line
|
|
3270
|
+
# line 3271 "vm.inc"
|
|
3224
3271
|
# undef NAME_OF_CURRENT_INSN
|
|
3225
3272
|
|
|
3226
3273
|
/* ### Instruction trailers. ### */
|
|
3227
3274
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3228
|
-
CHECK_CANARY();
|
|
3275
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3229
3276
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3230
3277
|
TOPN(0) = val;
|
|
3278
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3279
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3231
3280
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3232
3281
|
# undef INSN_ATTR
|
|
3233
3282
|
|
|
@@ -3253,29 +3302,31 @@ INSN_ENTRY(opt_neq)
|
|
|
3253
3302
|
|
|
3254
3303
|
/* ### Instruction preambles. ### */
|
|
3255
3304
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3256
|
-
SETUP_CANARY();
|
|
3305
|
+
SETUP_CANARY(leaf);
|
|
3257
3306
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3258
3307
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd_eq);
|
|
3259
3308
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cd);
|
|
3260
3309
|
|
|
3261
3310
|
/* ### Here we do the instruction body. ### */
|
|
3262
3311
|
# define NAME_OF_CURRENT_INSN opt_neq
|
|
3263
|
-
# line
|
|
3312
|
+
# line 1167 "insns.def"
|
|
3264
3313
|
{
|
|
3265
|
-
val = vm_opt_neq(cd, cd_eq, recv, obj);
|
|
3314
|
+
val = vm_opt_neq(GET_ISEQ(), cd, cd_eq, recv, obj);
|
|
3266
3315
|
|
|
3267
3316
|
if (val == Qundef) {
|
|
3268
3317
|
CALL_SIMPLE_METHOD();
|
|
3269
3318
|
}
|
|
3270
3319
|
}
|
|
3271
|
-
# line
|
|
3320
|
+
# line 3321 "vm.inc"
|
|
3272
3321
|
# undef NAME_OF_CURRENT_INSN
|
|
3273
3322
|
|
|
3274
3323
|
/* ### Instruction trailers. ### */
|
|
3275
3324
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3276
|
-
CHECK_CANARY();
|
|
3325
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3277
3326
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3278
3327
|
TOPN(0) = val;
|
|
3328
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3329
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3279
3330
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3280
3331
|
# undef INSN_ATTR
|
|
3281
3332
|
|
|
@@ -3300,13 +3351,13 @@ INSN_ENTRY(opt_lt)
|
|
|
3300
3351
|
|
|
3301
3352
|
/* ### Instruction preambles. ### */
|
|
3302
3353
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3303
|
-
SETUP_CANARY();
|
|
3354
|
+
SETUP_CANARY(leaf);
|
|
3304
3355
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3305
3356
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3306
3357
|
|
|
3307
3358
|
/* ### Here we do the instruction body. ### */
|
|
3308
3359
|
# define NAME_OF_CURRENT_INSN opt_lt
|
|
3309
|
-
# line
|
|
3360
|
+
# line 1181 "insns.def"
|
|
3310
3361
|
{
|
|
3311
3362
|
val = vm_opt_lt(recv, obj);
|
|
3312
3363
|
|
|
@@ -3314,14 +3365,16 @@ INSN_ENTRY(opt_lt)
|
|
|
3314
3365
|
CALL_SIMPLE_METHOD();
|
|
3315
3366
|
}
|
|
3316
3367
|
}
|
|
3317
|
-
# line
|
|
3368
|
+
# line 3369 "vm.inc"
|
|
3318
3369
|
# undef NAME_OF_CURRENT_INSN
|
|
3319
3370
|
|
|
3320
3371
|
/* ### Instruction trailers. ### */
|
|
3321
3372
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3322
|
-
CHECK_CANARY();
|
|
3373
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3323
3374
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3324
3375
|
TOPN(0) = val;
|
|
3376
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3377
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3325
3378
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3326
3379
|
# undef INSN_ATTR
|
|
3327
3380
|
|
|
@@ -3346,13 +3399,13 @@ INSN_ENTRY(opt_le)
|
|
|
3346
3399
|
|
|
3347
3400
|
/* ### Instruction preambles. ### */
|
|
3348
3401
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3349
|
-
SETUP_CANARY();
|
|
3402
|
+
SETUP_CANARY(leaf);
|
|
3350
3403
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3351
3404
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3352
3405
|
|
|
3353
3406
|
/* ### Here we do the instruction body. ### */
|
|
3354
3407
|
# define NAME_OF_CURRENT_INSN opt_le
|
|
3355
|
-
# line
|
|
3408
|
+
# line 1195 "insns.def"
|
|
3356
3409
|
{
|
|
3357
3410
|
val = vm_opt_le(recv, obj);
|
|
3358
3411
|
|
|
@@ -3360,14 +3413,16 @@ INSN_ENTRY(opt_le)
|
|
|
3360
3413
|
CALL_SIMPLE_METHOD();
|
|
3361
3414
|
}
|
|
3362
3415
|
}
|
|
3363
|
-
# line
|
|
3416
|
+
# line 3417 "vm.inc"
|
|
3364
3417
|
# undef NAME_OF_CURRENT_INSN
|
|
3365
3418
|
|
|
3366
3419
|
/* ### Instruction trailers. ### */
|
|
3367
3420
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3368
|
-
CHECK_CANARY();
|
|
3421
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3369
3422
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3370
3423
|
TOPN(0) = val;
|
|
3424
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3425
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3371
3426
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3372
3427
|
# undef INSN_ATTR
|
|
3373
3428
|
|
|
@@ -3392,13 +3447,13 @@ INSN_ENTRY(opt_gt)
|
|
|
3392
3447
|
|
|
3393
3448
|
/* ### Instruction preambles. ### */
|
|
3394
3449
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3395
|
-
SETUP_CANARY();
|
|
3450
|
+
SETUP_CANARY(leaf);
|
|
3396
3451
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3397
3452
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3398
3453
|
|
|
3399
3454
|
/* ### Here we do the instruction body. ### */
|
|
3400
3455
|
# define NAME_OF_CURRENT_INSN opt_gt
|
|
3401
|
-
# line
|
|
3456
|
+
# line 1209 "insns.def"
|
|
3402
3457
|
{
|
|
3403
3458
|
val = vm_opt_gt(recv, obj);
|
|
3404
3459
|
|
|
@@ -3406,14 +3461,16 @@ INSN_ENTRY(opt_gt)
|
|
|
3406
3461
|
CALL_SIMPLE_METHOD();
|
|
3407
3462
|
}
|
|
3408
3463
|
}
|
|
3409
|
-
# line
|
|
3464
|
+
# line 3465 "vm.inc"
|
|
3410
3465
|
# undef NAME_OF_CURRENT_INSN
|
|
3411
3466
|
|
|
3412
3467
|
/* ### Instruction trailers. ### */
|
|
3413
3468
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3414
|
-
CHECK_CANARY();
|
|
3469
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3415
3470
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3416
3471
|
TOPN(0) = val;
|
|
3472
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3473
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3417
3474
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3418
3475
|
# undef INSN_ATTR
|
|
3419
3476
|
|
|
@@ -3438,13 +3495,13 @@ INSN_ENTRY(opt_ge)
|
|
|
3438
3495
|
|
|
3439
3496
|
/* ### Instruction preambles. ### */
|
|
3440
3497
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3441
|
-
SETUP_CANARY();
|
|
3498
|
+
SETUP_CANARY(leaf);
|
|
3442
3499
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3443
3500
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3444
3501
|
|
|
3445
3502
|
/* ### Here we do the instruction body. ### */
|
|
3446
3503
|
# define NAME_OF_CURRENT_INSN opt_ge
|
|
3447
|
-
# line
|
|
3504
|
+
# line 1223 "insns.def"
|
|
3448
3505
|
{
|
|
3449
3506
|
val = vm_opt_ge(recv, obj);
|
|
3450
3507
|
|
|
@@ -3452,14 +3509,16 @@ INSN_ENTRY(opt_ge)
|
|
|
3452
3509
|
CALL_SIMPLE_METHOD();
|
|
3453
3510
|
}
|
|
3454
3511
|
}
|
|
3455
|
-
# line
|
|
3512
|
+
# line 3513 "vm.inc"
|
|
3456
3513
|
# undef NAME_OF_CURRENT_INSN
|
|
3457
3514
|
|
|
3458
3515
|
/* ### Instruction trailers. ### */
|
|
3459
3516
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3460
|
-
CHECK_CANARY();
|
|
3517
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3461
3518
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3462
3519
|
TOPN(0) = val;
|
|
3520
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3521
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3463
3522
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3464
3523
|
# undef INSN_ATTR
|
|
3465
3524
|
|
|
@@ -3484,13 +3543,13 @@ INSN_ENTRY(opt_ltlt)
|
|
|
3484
3543
|
|
|
3485
3544
|
/* ### Instruction preambles. ### */
|
|
3486
3545
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3487
|
-
SETUP_CANARY();
|
|
3546
|
+
SETUP_CANARY(leaf);
|
|
3488
3547
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3489
3548
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3490
3549
|
|
|
3491
3550
|
/* ### Here we do the instruction body. ### */
|
|
3492
3551
|
# define NAME_OF_CURRENT_INSN opt_ltlt
|
|
3493
|
-
# line
|
|
3552
|
+
# line 1241 "insns.def"
|
|
3494
3553
|
{
|
|
3495
3554
|
val = vm_opt_ltlt(recv, obj);
|
|
3496
3555
|
|
|
@@ -3498,14 +3557,16 @@ INSN_ENTRY(opt_ltlt)
|
|
|
3498
3557
|
CALL_SIMPLE_METHOD();
|
|
3499
3558
|
}
|
|
3500
3559
|
}
|
|
3501
|
-
# line
|
|
3560
|
+
# line 3561 "vm.inc"
|
|
3502
3561
|
# undef NAME_OF_CURRENT_INSN
|
|
3503
3562
|
|
|
3504
3563
|
/* ### Instruction trailers. ### */
|
|
3505
3564
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3506
|
-
CHECK_CANARY();
|
|
3565
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3507
3566
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3508
3567
|
TOPN(0) = val;
|
|
3568
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3569
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3509
3570
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3510
3571
|
# undef INSN_ATTR
|
|
3511
3572
|
|
|
@@ -3530,13 +3591,13 @@ INSN_ENTRY(opt_and)
|
|
|
3530
3591
|
|
|
3531
3592
|
/* ### Instruction preambles. ### */
|
|
3532
3593
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3533
|
-
SETUP_CANARY();
|
|
3594
|
+
SETUP_CANARY(leaf);
|
|
3534
3595
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3535
3596
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3536
3597
|
|
|
3537
3598
|
/* ### Here we do the instruction body. ### */
|
|
3538
3599
|
# define NAME_OF_CURRENT_INSN opt_and
|
|
3539
|
-
# line
|
|
3600
|
+
# line 1255 "insns.def"
|
|
3540
3601
|
{
|
|
3541
3602
|
val = vm_opt_and(recv, obj);
|
|
3542
3603
|
|
|
@@ -3544,14 +3605,16 @@ INSN_ENTRY(opt_and)
|
|
|
3544
3605
|
CALL_SIMPLE_METHOD();
|
|
3545
3606
|
}
|
|
3546
3607
|
}
|
|
3547
|
-
# line
|
|
3608
|
+
# line 3609 "vm.inc"
|
|
3548
3609
|
# undef NAME_OF_CURRENT_INSN
|
|
3549
3610
|
|
|
3550
3611
|
/* ### Instruction trailers. ### */
|
|
3551
3612
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3552
|
-
CHECK_CANARY();
|
|
3613
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3553
3614
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3554
3615
|
TOPN(0) = val;
|
|
3616
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3617
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3555
3618
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3556
3619
|
# undef INSN_ATTR
|
|
3557
3620
|
|
|
@@ -3576,13 +3639,13 @@ INSN_ENTRY(opt_or)
|
|
|
3576
3639
|
|
|
3577
3640
|
/* ### Instruction preambles. ### */
|
|
3578
3641
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3579
|
-
SETUP_CANARY();
|
|
3642
|
+
SETUP_CANARY(leaf);
|
|
3580
3643
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3581
3644
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3582
3645
|
|
|
3583
3646
|
/* ### Here we do the instruction body. ### */
|
|
3584
3647
|
# define NAME_OF_CURRENT_INSN opt_or
|
|
3585
|
-
# line
|
|
3648
|
+
# line 1269 "insns.def"
|
|
3586
3649
|
{
|
|
3587
3650
|
val = vm_opt_or(recv, obj);
|
|
3588
3651
|
|
|
@@ -3590,14 +3653,16 @@ INSN_ENTRY(opt_or)
|
|
|
3590
3653
|
CALL_SIMPLE_METHOD();
|
|
3591
3654
|
}
|
|
3592
3655
|
}
|
|
3593
|
-
# line
|
|
3656
|
+
# line 3657 "vm.inc"
|
|
3594
3657
|
# undef NAME_OF_CURRENT_INSN
|
|
3595
3658
|
|
|
3596
3659
|
/* ### Instruction trailers. ### */
|
|
3597
3660
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3598
|
-
CHECK_CANARY();
|
|
3661
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3599
3662
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3600
3663
|
TOPN(0) = val;
|
|
3664
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3665
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3601
3666
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3602
3667
|
# undef INSN_ATTR
|
|
3603
3668
|
|
|
@@ -3622,13 +3687,13 @@ INSN_ENTRY(opt_aref)
|
|
|
3622
3687
|
|
|
3623
3688
|
/* ### Instruction preambles. ### */
|
|
3624
3689
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3625
|
-
SETUP_CANARY();
|
|
3690
|
+
SETUP_CANARY(leaf);
|
|
3626
3691
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3627
3692
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3628
3693
|
|
|
3629
3694
|
/* ### Here we do the instruction body. ### */
|
|
3630
3695
|
# define NAME_OF_CURRENT_INSN opt_aref
|
|
3631
|
-
# line
|
|
3696
|
+
# line 1288 "insns.def"
|
|
3632
3697
|
{
|
|
3633
3698
|
val = vm_opt_aref(recv, obj);
|
|
3634
3699
|
|
|
@@ -3636,14 +3701,16 @@ INSN_ENTRY(opt_aref)
|
|
|
3636
3701
|
CALL_SIMPLE_METHOD();
|
|
3637
3702
|
}
|
|
3638
3703
|
}
|
|
3639
|
-
# line
|
|
3704
|
+
# line 3705 "vm.inc"
|
|
3640
3705
|
# undef NAME_OF_CURRENT_INSN
|
|
3641
3706
|
|
|
3642
3707
|
/* ### Instruction trailers. ### */
|
|
3643
3708
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3644
|
-
CHECK_CANARY();
|
|
3709
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3645
3710
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3646
3711
|
TOPN(0) = val;
|
|
3712
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3713
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3647
3714
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3648
3715
|
# undef INSN_ATTR
|
|
3649
3716
|
|
|
@@ -3669,13 +3736,13 @@ INSN_ENTRY(opt_aset)
|
|
|
3669
3736
|
|
|
3670
3737
|
/* ### Instruction preambles. ### */
|
|
3671
3738
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3672
|
-
SETUP_CANARY();
|
|
3739
|
+
SETUP_CANARY(leaf);
|
|
3673
3740
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3674
3741
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3675
3742
|
|
|
3676
3743
|
/* ### Here we do the instruction body. ### */
|
|
3677
3744
|
# define NAME_OF_CURRENT_INSN opt_aset
|
|
3678
|
-
# line
|
|
3745
|
+
# line 1305 "insns.def"
|
|
3679
3746
|
{
|
|
3680
3747
|
val = vm_opt_aset(recv, obj, set);
|
|
3681
3748
|
|
|
@@ -3683,14 +3750,16 @@ INSN_ENTRY(opt_aset)
|
|
|
3683
3750
|
CALL_SIMPLE_METHOD();
|
|
3684
3751
|
}
|
|
3685
3752
|
}
|
|
3686
|
-
# line
|
|
3753
|
+
# line 3754 "vm.inc"
|
|
3687
3754
|
# undef NAME_OF_CURRENT_INSN
|
|
3688
3755
|
|
|
3689
3756
|
/* ### Instruction trailers. ### */
|
|
3690
3757
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3691
|
-
CHECK_CANARY();
|
|
3758
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3692
3759
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3693
3760
|
TOPN(0) = val;
|
|
3761
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3762
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3694
3763
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3695
3764
|
# undef INSN_ATTR
|
|
3696
3765
|
|
|
@@ -3715,36 +3784,38 @@ INSN_ENTRY(opt_aset_with)
|
|
|
3715
3784
|
|
|
3716
3785
|
/* ### Instruction preambles. ### */
|
|
3717
3786
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3718
|
-
SETUP_CANARY();
|
|
3787
|
+
SETUP_CANARY(leaf);
|
|
3719
3788
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3720
3789
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, key);
|
|
3721
3790
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cd);
|
|
3722
3791
|
|
|
3723
3792
|
/* ### Here we do the instruction body. ### */
|
|
3724
3793
|
# define NAME_OF_CURRENT_INSN opt_aset_with
|
|
3725
|
-
# line
|
|
3794
|
+
# line 1321 "insns.def"
|
|
3726
3795
|
{
|
|
3727
3796
|
VALUE tmp = vm_opt_aset_with(recv, key, val);
|
|
3728
3797
|
|
|
3729
3798
|
if (tmp != Qundef) {
|
|
3730
|
-
|
|
3799
|
+
val = tmp;
|
|
3731
3800
|
}
|
|
3732
3801
|
else {
|
|
3733
3802
|
# ifndef MJIT_HEADER
|
|
3734
|
-
|
|
3735
|
-
|
|
3803
|
+
TOPN(0) = rb_str_resurrect(key);
|
|
3804
|
+
PUSH(val);
|
|
3736
3805
|
# endif
|
|
3737
3806
|
CALL_SIMPLE_METHOD();
|
|
3738
3807
|
}
|
|
3739
3808
|
}
|
|
3740
|
-
# line
|
|
3809
|
+
# line 3810 "vm.inc"
|
|
3741
3810
|
# undef NAME_OF_CURRENT_INSN
|
|
3742
3811
|
|
|
3743
3812
|
/* ### Instruction trailers. ### */
|
|
3744
3813
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3745
|
-
CHECK_CANARY();
|
|
3814
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3746
3815
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3747
3816
|
TOPN(0) = val;
|
|
3817
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3818
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3748
3819
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3749
3820
|
# undef INSN_ATTR
|
|
3750
3821
|
|
|
@@ -3769,32 +3840,34 @@ INSN_ENTRY(opt_aref_with)
|
|
|
3769
3840
|
|
|
3770
3841
|
/* ### Instruction preambles. ### */
|
|
3771
3842
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3772
|
-
SETUP_CANARY();
|
|
3843
|
+
SETUP_CANARY(leaf);
|
|
3773
3844
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3774
3845
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, key);
|
|
3775
3846
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cd);
|
|
3776
3847
|
|
|
3777
3848
|
/* ### Here we do the instruction body. ### */
|
|
3778
3849
|
# define NAME_OF_CURRENT_INSN opt_aref_with
|
|
3779
|
-
# line
|
|
3850
|
+
# line 1344 "insns.def"
|
|
3780
3851
|
{
|
|
3781
3852
|
val = vm_opt_aref_with(recv, key);
|
|
3782
3853
|
|
|
3783
3854
|
if (val == Qundef) {
|
|
3784
3855
|
# ifndef MJIT_HEADER
|
|
3785
|
-
|
|
3856
|
+
PUSH(rb_str_resurrect(key));
|
|
3786
3857
|
# endif
|
|
3787
3858
|
CALL_SIMPLE_METHOD();
|
|
3788
3859
|
}
|
|
3789
3860
|
}
|
|
3790
|
-
# line
|
|
3861
|
+
# line 3862 "vm.inc"
|
|
3791
3862
|
# undef NAME_OF_CURRENT_INSN
|
|
3792
3863
|
|
|
3793
3864
|
/* ### Instruction trailers. ### */
|
|
3794
3865
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3795
|
-
CHECK_CANARY();
|
|
3866
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3796
3867
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3797
3868
|
TOPN(0) = val;
|
|
3869
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3870
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3798
3871
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3799
3872
|
# undef INSN_ATTR
|
|
3800
3873
|
|
|
@@ -3818,13 +3891,13 @@ INSN_ENTRY(opt_length)
|
|
|
3818
3891
|
|
|
3819
3892
|
/* ### Instruction preambles. ### */
|
|
3820
3893
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3821
|
-
SETUP_CANARY();
|
|
3894
|
+
SETUP_CANARY(leaf);
|
|
3822
3895
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3823
3896
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3824
3897
|
|
|
3825
3898
|
/* ### Here we do the instruction body. ### */
|
|
3826
3899
|
# define NAME_OF_CURRENT_INSN opt_length
|
|
3827
|
-
# line
|
|
3900
|
+
# line 1361 "insns.def"
|
|
3828
3901
|
{
|
|
3829
3902
|
val = vm_opt_length(recv, BOP_LENGTH);
|
|
3830
3903
|
|
|
@@ -3832,14 +3905,16 @@ INSN_ENTRY(opt_length)
|
|
|
3832
3905
|
CALL_SIMPLE_METHOD();
|
|
3833
3906
|
}
|
|
3834
3907
|
}
|
|
3835
|
-
# line
|
|
3908
|
+
# line 3909 "vm.inc"
|
|
3836
3909
|
# undef NAME_OF_CURRENT_INSN
|
|
3837
3910
|
|
|
3838
3911
|
/* ### Instruction trailers. ### */
|
|
3839
3912
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3840
|
-
CHECK_CANARY();
|
|
3913
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3841
3914
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3842
3915
|
TOPN(0) = val;
|
|
3916
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3917
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3843
3918
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3844
3919
|
# undef INSN_ATTR
|
|
3845
3920
|
|
|
@@ -3863,13 +3938,13 @@ INSN_ENTRY(opt_size)
|
|
|
3863
3938
|
|
|
3864
3939
|
/* ### Instruction preambles. ### */
|
|
3865
3940
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3866
|
-
SETUP_CANARY();
|
|
3941
|
+
SETUP_CANARY(leaf);
|
|
3867
3942
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3868
3943
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3869
3944
|
|
|
3870
3945
|
/* ### Here we do the instruction body. ### */
|
|
3871
3946
|
# define NAME_OF_CURRENT_INSN opt_size
|
|
3872
|
-
# line
|
|
3947
|
+
# line 1375 "insns.def"
|
|
3873
3948
|
{
|
|
3874
3949
|
val = vm_opt_length(recv, BOP_SIZE);
|
|
3875
3950
|
|
|
@@ -3877,14 +3952,16 @@ INSN_ENTRY(opt_size)
|
|
|
3877
3952
|
CALL_SIMPLE_METHOD();
|
|
3878
3953
|
}
|
|
3879
3954
|
}
|
|
3880
|
-
# line
|
|
3955
|
+
# line 3956 "vm.inc"
|
|
3881
3956
|
# undef NAME_OF_CURRENT_INSN
|
|
3882
3957
|
|
|
3883
3958
|
/* ### Instruction trailers. ### */
|
|
3884
3959
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3885
|
-
CHECK_CANARY();
|
|
3960
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3886
3961
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3887
3962
|
TOPN(0) = val;
|
|
3963
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3964
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3888
3965
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3889
3966
|
# undef INSN_ATTR
|
|
3890
3967
|
|
|
@@ -3908,13 +3985,13 @@ INSN_ENTRY(opt_empty_p)
|
|
|
3908
3985
|
|
|
3909
3986
|
/* ### Instruction preambles. ### */
|
|
3910
3987
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3911
|
-
SETUP_CANARY();
|
|
3988
|
+
SETUP_CANARY(leaf);
|
|
3912
3989
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3913
3990
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3914
3991
|
|
|
3915
3992
|
/* ### Here we do the instruction body. ### */
|
|
3916
3993
|
# define NAME_OF_CURRENT_INSN opt_empty_p
|
|
3917
|
-
# line
|
|
3994
|
+
# line 1389 "insns.def"
|
|
3918
3995
|
{
|
|
3919
3996
|
val = vm_opt_empty_p(recv);
|
|
3920
3997
|
|
|
@@ -3922,14 +3999,16 @@ INSN_ENTRY(opt_empty_p)
|
|
|
3922
3999
|
CALL_SIMPLE_METHOD();
|
|
3923
4000
|
}
|
|
3924
4001
|
}
|
|
3925
|
-
# line
|
|
4002
|
+
# line 4003 "vm.inc"
|
|
3926
4003
|
# undef NAME_OF_CURRENT_INSN
|
|
3927
4004
|
|
|
3928
4005
|
/* ### Instruction trailers. ### */
|
|
3929
4006
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3930
|
-
CHECK_CANARY();
|
|
4007
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3931
4008
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3932
4009
|
TOPN(0) = val;
|
|
4010
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
4011
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3933
4012
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3934
4013
|
# undef INSN_ATTR
|
|
3935
4014
|
|
|
@@ -3953,13 +4032,13 @@ INSN_ENTRY(opt_succ)
|
|
|
3953
4032
|
|
|
3954
4033
|
/* ### Instruction preambles. ### */
|
|
3955
4034
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3956
|
-
SETUP_CANARY();
|
|
4035
|
+
SETUP_CANARY(leaf);
|
|
3957
4036
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3958
4037
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3959
4038
|
|
|
3960
4039
|
/* ### Here we do the instruction body. ### */
|
|
3961
4040
|
# define NAME_OF_CURRENT_INSN opt_succ
|
|
3962
|
-
# line
|
|
4041
|
+
# line 1403 "insns.def"
|
|
3963
4042
|
{
|
|
3964
4043
|
val = vm_opt_succ(recv);
|
|
3965
4044
|
|
|
@@ -3967,14 +4046,16 @@ INSN_ENTRY(opt_succ)
|
|
|
3967
4046
|
CALL_SIMPLE_METHOD();
|
|
3968
4047
|
}
|
|
3969
4048
|
}
|
|
3970
|
-
# line
|
|
4049
|
+
# line 4050 "vm.inc"
|
|
3971
4050
|
# undef NAME_OF_CURRENT_INSN
|
|
3972
4051
|
|
|
3973
4052
|
/* ### Instruction trailers. ### */
|
|
3974
4053
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3975
|
-
CHECK_CANARY();
|
|
4054
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3976
4055
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3977
4056
|
TOPN(0) = val;
|
|
4057
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
4058
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3978
4059
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3979
4060
|
# undef INSN_ATTR
|
|
3980
4061
|
|
|
@@ -3998,28 +4079,30 @@ INSN_ENTRY(opt_not)
|
|
|
3998
4079
|
|
|
3999
4080
|
/* ### Instruction preambles. ### */
|
|
4000
4081
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
4001
|
-
SETUP_CANARY();
|
|
4082
|
+
SETUP_CANARY(leaf);
|
|
4002
4083
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
4003
4084
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
4004
4085
|
|
|
4005
4086
|
/* ### Here we do the instruction body. ### */
|
|
4006
4087
|
# define NAME_OF_CURRENT_INSN opt_not
|
|
4007
|
-
# line
|
|
4088
|
+
# line 1417 "insns.def"
|
|
4008
4089
|
{
|
|
4009
|
-
val = vm_opt_not(cd, recv);
|
|
4090
|
+
val = vm_opt_not(GET_ISEQ(), cd, recv);
|
|
4010
4091
|
|
|
4011
4092
|
if (val == Qundef) {
|
|
4012
4093
|
CALL_SIMPLE_METHOD();
|
|
4013
4094
|
}
|
|
4014
4095
|
}
|
|
4015
|
-
# line
|
|
4096
|
+
# line 4097 "vm.inc"
|
|
4016
4097
|
# undef NAME_OF_CURRENT_INSN
|
|
4017
4098
|
|
|
4018
4099
|
/* ### Instruction trailers. ### */
|
|
4019
4100
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
4020
|
-
CHECK_CANARY();
|
|
4101
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
4021
4102
|
INC_SP(INSN_ATTR(sp_inc));
|
|
4022
4103
|
TOPN(0) = val;
|
|
4104
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
4105
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
4023
4106
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4024
4107
|
# undef INSN_ATTR
|
|
4025
4108
|
|
|
@@ -4044,13 +4127,13 @@ INSN_ENTRY(opt_regexpmatch2)
|
|
|
4044
4127
|
|
|
4045
4128
|
/* ### Instruction preambles. ### */
|
|
4046
4129
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
4047
|
-
SETUP_CANARY();
|
|
4130
|
+
SETUP_CANARY(leaf);
|
|
4048
4131
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
4049
4132
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
4050
4133
|
|
|
4051
4134
|
/* ### Here we do the instruction body. ### */
|
|
4052
4135
|
# define NAME_OF_CURRENT_INSN opt_regexpmatch2
|
|
4053
|
-
# line
|
|
4136
|
+
# line 1432 "insns.def"
|
|
4054
4137
|
{
|
|
4055
4138
|
val = vm_opt_regexpmatch2(obj2, obj1);
|
|
4056
4139
|
|
|
@@ -4058,14 +4141,16 @@ INSN_ENTRY(opt_regexpmatch2)
|
|
|
4058
4141
|
CALL_SIMPLE_METHOD();
|
|
4059
4142
|
}
|
|
4060
4143
|
}
|
|
4061
|
-
# line
|
|
4144
|
+
# line 4145 "vm.inc"
|
|
4062
4145
|
# undef NAME_OF_CURRENT_INSN
|
|
4063
4146
|
|
|
4064
4147
|
/* ### Instruction trailers. ### */
|
|
4065
4148
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
4066
|
-
CHECK_CANARY();
|
|
4149
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
4067
4150
|
INC_SP(INSN_ATTR(sp_inc));
|
|
4068
4151
|
TOPN(0) = val;
|
|
4152
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
4153
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
4069
4154
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4070
4155
|
# undef INSN_ATTR
|
|
4071
4156
|
|
|
@@ -4073,54 +4158,7 @@ INSN_ENTRY(opt_regexpmatch2)
|
|
|
4073
4158
|
END_INSN(opt_regexpmatch2);
|
|
4074
4159
|
}
|
|
4075
4160
|
|
|
4076
|
-
/* insn
|
|
4077
|
-
INSN_ENTRY(opt_call_c_function)
|
|
4078
|
-
{
|
|
4079
|
-
/* ### Declare that we have just entered into an instruction. ### */
|
|
4080
|
-
START_OF_ORIGINAL_INSN(opt_call_c_function);
|
|
4081
|
-
DEBUG_ENTER_INSN("opt_call_c_function");
|
|
4082
|
-
|
|
4083
|
-
/* ### Declare and assign variables. ### */
|
|
4084
|
-
rb_insn_func_t funcptr = (rb_insn_func_t)GET_OPERAND(1);
|
|
4085
|
-
# define INSN_ATTR(x) attr_ ## x ## _opt_call_c_function(funcptr)
|
|
4086
|
-
bool leaf = INSN_ATTR(leaf);
|
|
4087
|
-
|
|
4088
|
-
/* ### Instruction preambles. ### */
|
|
4089
|
-
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
4090
|
-
POPN(INSN_ATTR(popn));
|
|
4091
|
-
SETUP_CANARY();
|
|
4092
|
-
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
4093
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, funcptr);
|
|
4094
|
-
|
|
4095
|
-
/* ### Here we do the instruction body. ### */
|
|
4096
|
-
# define NAME_OF_CURRENT_INSN opt_call_c_function
|
|
4097
|
-
# line 1467 "insns.def"
|
|
4098
|
-
{
|
|
4099
|
-
reg_cfp = (funcptr)(ec, reg_cfp);
|
|
4100
|
-
|
|
4101
|
-
if (reg_cfp == 0) {
|
|
4102
|
-
VALUE err = ec->errinfo;
|
|
4103
|
-
ec->errinfo = Qnil;
|
|
4104
|
-
THROW_EXCEPTION(err);
|
|
4105
|
-
}
|
|
4106
|
-
|
|
4107
|
-
RESTORE_REGS();
|
|
4108
|
-
NEXT_INSN();
|
|
4109
|
-
}
|
|
4110
|
-
# line 4111 "vm.inc"
|
|
4111
|
-
# undef NAME_OF_CURRENT_INSN
|
|
4112
|
-
|
|
4113
|
-
/* ### Instruction trailers. ### */
|
|
4114
|
-
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
4115
|
-
CHECK_CANARY();
|
|
4116
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4117
|
-
# undef INSN_ATTR
|
|
4118
|
-
|
|
4119
|
-
/* ### Leave the instruction. ### */
|
|
4120
|
-
END_INSN(opt_call_c_function);
|
|
4121
|
-
}
|
|
4122
|
-
|
|
4123
|
-
/* insn invokebuiltin(bf)(...)(ret) */
|
|
4161
|
+
/* insn invokebuiltin(bf)(...)(val) */
|
|
4124
4162
|
INSN_ENTRY(invokebuiltin)
|
|
4125
4163
|
{
|
|
4126
4164
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -4131,28 +4169,30 @@ INSN_ENTRY(invokebuiltin)
|
|
|
4131
4169
|
RB_BUILTIN bf = (RB_BUILTIN)GET_OPERAND(1);
|
|
4132
4170
|
# define INSN_ATTR(x) attr_ ## x ## _invokebuiltin(bf)
|
|
4133
4171
|
bool leaf = INSN_ATTR(leaf);
|
|
4134
|
-
VALUE
|
|
4172
|
+
VALUE val;
|
|
4135
4173
|
|
|
4136
4174
|
/* ### Instruction preambles. ### */
|
|
4137
4175
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
4138
|
-
SETUP_CANARY();
|
|
4176
|
+
SETUP_CANARY(leaf);
|
|
4139
4177
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
4140
4178
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, bf);
|
|
4141
4179
|
|
|
4142
4180
|
/* ### Here we do the instruction body. ### */
|
|
4143
4181
|
# define NAME_OF_CURRENT_INSN invokebuiltin
|
|
4144
|
-
# line
|
|
4182
|
+
# line 1469 "insns.def"
|
|
4145
4183
|
{
|
|
4146
|
-
|
|
4184
|
+
val = vm_invoke_builtin(ec, reg_cfp, bf, STACK_ADDR_FROM_TOP(bf->argc));
|
|
4147
4185
|
}
|
|
4148
|
-
# line
|
|
4186
|
+
# line 4187 "vm.inc"
|
|
4149
4187
|
# undef NAME_OF_CURRENT_INSN
|
|
4150
4188
|
|
|
4151
4189
|
/* ### Instruction trailers. ### */
|
|
4152
4190
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
4153
|
-
CHECK_CANARY();
|
|
4191
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
4154
4192
|
INC_SP(INSN_ATTR(sp_inc));
|
|
4155
|
-
TOPN(0) =
|
|
4193
|
+
TOPN(0) = val;
|
|
4194
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
4195
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
4156
4196
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4157
4197
|
# undef INSN_ATTR
|
|
4158
4198
|
|
|
@@ -4160,7 +4200,7 @@ INSN_ENTRY(invokebuiltin)
|
|
|
4160
4200
|
END_INSN(invokebuiltin);
|
|
4161
4201
|
}
|
|
4162
4202
|
|
|
4163
|
-
/* insn opt_invokebuiltin_delegate(bf, index)()(
|
|
4203
|
+
/* insn opt_invokebuiltin_delegate(bf, index)()(val) */
|
|
4164
4204
|
INSN_ENTRY(opt_invokebuiltin_delegate)
|
|
4165
4205
|
{
|
|
4166
4206
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -4172,29 +4212,31 @@ INSN_ENTRY(opt_invokebuiltin_delegate)
|
|
|
4172
4212
|
rb_num_t index = (rb_num_t)GET_OPERAND(2);
|
|
4173
4213
|
# define INSN_ATTR(x) attr_ ## x ## _opt_invokebuiltin_delegate(bf, index)
|
|
4174
4214
|
bool leaf = INSN_ATTR(leaf);
|
|
4175
|
-
VALUE
|
|
4215
|
+
VALUE val;
|
|
4176
4216
|
|
|
4177
4217
|
/* ### Instruction preambles. ### */
|
|
4178
4218
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
4179
|
-
SETUP_CANARY();
|
|
4219
|
+
SETUP_CANARY(leaf);
|
|
4180
4220
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
4181
4221
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, bf);
|
|
4182
4222
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, index);
|
|
4183
4223
|
|
|
4184
4224
|
/* ### Here we do the instruction body. ### */
|
|
4185
4225
|
# define NAME_OF_CURRENT_INSN opt_invokebuiltin_delegate
|
|
4186
|
-
# line
|
|
4226
|
+
# line 1480 "insns.def"
|
|
4187
4227
|
{
|
|
4188
|
-
|
|
4228
|
+
val = vm_invoke_builtin_delegate(ec, reg_cfp, bf, (unsigned int)index);
|
|
4189
4229
|
}
|
|
4190
|
-
# line
|
|
4230
|
+
# line 4231 "vm.inc"
|
|
4191
4231
|
# undef NAME_OF_CURRENT_INSN
|
|
4192
4232
|
|
|
4193
4233
|
/* ### Instruction trailers. ### */
|
|
4194
4234
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
4195
|
-
CHECK_CANARY();
|
|
4235
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
4196
4236
|
INC_SP(INSN_ATTR(sp_inc));
|
|
4197
|
-
TOPN(0) =
|
|
4237
|
+
TOPN(0) = val;
|
|
4238
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
4239
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
4198
4240
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4199
4241
|
# undef INSN_ATTR
|
|
4200
4242
|
|
|
@@ -4218,19 +4260,19 @@ INSN_ENTRY(opt_invokebuiltin_delegate_leave)
|
|
|
4218
4260
|
|
|
4219
4261
|
/* ### Instruction preambles. ### */
|
|
4220
4262
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
4221
|
-
SETUP_CANARY();
|
|
4263
|
+
SETUP_CANARY(leaf);
|
|
4222
4264
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
4223
4265
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, bf);
|
|
4224
4266
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, index);
|
|
4225
4267
|
|
|
4226
4268
|
/* ### Here we do the instruction body. ### */
|
|
4227
4269
|
# define NAME_OF_CURRENT_INSN opt_invokebuiltin_delegate_leave
|
|
4228
|
-
# line
|
|
4270
|
+
# line 1491 "insns.def"
|
|
4229
4271
|
{
|
|
4230
4272
|
val = vm_invoke_builtin_delegate(ec, reg_cfp, bf, (unsigned int)index);
|
|
4231
4273
|
|
|
4232
4274
|
/* leave fastpath */
|
|
4233
|
-
/* TracePoint/return
|
|
4275
|
+
/* TracePoint/return fallbacks this insn to opt_invokebuiltin_delegate */
|
|
4234
4276
|
if (vm_pop_frame(ec, GET_CFP(), GET_EP())) {
|
|
4235
4277
|
# if OPT_CALL_THREADED_CODE
|
|
4236
4278
|
rb_ec_thread_ptr(ec)->retval = val;
|
|
@@ -4243,14 +4285,16 @@ INSN_ENTRY(opt_invokebuiltin_delegate_leave)
|
|
|
4243
4285
|
RESTORE_REGS();
|
|
4244
4286
|
}
|
|
4245
4287
|
}
|
|
4246
|
-
# line
|
|
4288
|
+
# line 4289 "vm.inc"
|
|
4247
4289
|
# undef NAME_OF_CURRENT_INSN
|
|
4248
4290
|
|
|
4249
4291
|
/* ### Instruction trailers. ### */
|
|
4250
4292
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
4251
|
-
CHECK_CANARY();
|
|
4293
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
4252
4294
|
INC_SP(INSN_ATTR(sp_inc));
|
|
4253
4295
|
TOPN(0) = val;
|
|
4296
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
4297
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
4254
4298
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4255
4299
|
# undef INSN_ATTR
|
|
4256
4300
|
|
|
@@ -4268,7 +4312,7 @@ INSN_ENTRY(getlocal_WC_0)
|
|
|
4268
4312
|
/* ### Declare and assign variables. ### */
|
|
4269
4313
|
#line 10 "defs/opt_operand.def"
|
|
4270
4314
|
const rb_num_t level = 0;
|
|
4271
|
-
#line
|
|
4315
|
+
#line 4316 "vm.inc"
|
|
4272
4316
|
lindex_t idx = (lindex_t)GET_OPERAND(1);
|
|
4273
4317
|
# define INSN_ATTR(x) attr_ ## x ## _getlocal_WC_0(idx)
|
|
4274
4318
|
bool leaf = INSN_ATTR(leaf);
|
|
@@ -4276,7 +4320,7 @@ INSN_ENTRY(getlocal_WC_0)
|
|
|
4276
4320
|
|
|
4277
4321
|
/* ### Instruction preambles. ### */
|
|
4278
4322
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
4279
|
-
SETUP_CANARY();
|
|
4323
|
+
SETUP_CANARY(leaf);
|
|
4280
4324
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
4281
4325
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, idx);
|
|
4282
4326
|
|
|
@@ -4288,14 +4332,16 @@ INSN_ENTRY(getlocal_WC_0)
|
|
|
4288
4332
|
RB_DEBUG_COUNTER_INC(lvar_get);
|
|
4289
4333
|
(void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
|
|
4290
4334
|
}
|
|
4291
|
-
# line
|
|
4335
|
+
# line 4336 "vm.inc"
|
|
4292
4336
|
# undef NAME_OF_CURRENT_INSN
|
|
4293
4337
|
|
|
4294
4338
|
/* ### Instruction trailers. ### */
|
|
4295
4339
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
4296
|
-
CHECK_CANARY();
|
|
4340
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
4297
4341
|
INC_SP(INSN_ATTR(sp_inc));
|
|
4298
4342
|
TOPN(0) = val;
|
|
4343
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
4344
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
4299
4345
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4300
4346
|
# undef INSN_ATTR
|
|
4301
4347
|
|
|
@@ -4313,7 +4359,7 @@ INSN_ENTRY(getlocal_WC_1)
|
|
|
4313
4359
|
/* ### Declare and assign variables. ### */
|
|
4314
4360
|
#line 11 "defs/opt_operand.def"
|
|
4315
4361
|
const rb_num_t level = 1;
|
|
4316
|
-
#line
|
|
4362
|
+
#line 4363 "vm.inc"
|
|
4317
4363
|
lindex_t idx = (lindex_t)GET_OPERAND(1);
|
|
4318
4364
|
# define INSN_ATTR(x) attr_ ## x ## _getlocal_WC_1(idx)
|
|
4319
4365
|
bool leaf = INSN_ATTR(leaf);
|
|
@@ -4321,7 +4367,7 @@ INSN_ENTRY(getlocal_WC_1)
|
|
|
4321
4367
|
|
|
4322
4368
|
/* ### Instruction preambles. ### */
|
|
4323
4369
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
4324
|
-
SETUP_CANARY();
|
|
4370
|
+
SETUP_CANARY(leaf);
|
|
4325
4371
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
4326
4372
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, idx);
|
|
4327
4373
|
|
|
@@ -4333,14 +4379,16 @@ INSN_ENTRY(getlocal_WC_1)
|
|
|
4333
4379
|
RB_DEBUG_COUNTER_INC(lvar_get);
|
|
4334
4380
|
(void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
|
|
4335
4381
|
}
|
|
4336
|
-
# line
|
|
4382
|
+
# line 4383 "vm.inc"
|
|
4337
4383
|
# undef NAME_OF_CURRENT_INSN
|
|
4338
4384
|
|
|
4339
4385
|
/* ### Instruction trailers. ### */
|
|
4340
4386
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
4341
|
-
CHECK_CANARY();
|
|
4387
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
4342
4388
|
INC_SP(INSN_ATTR(sp_inc));
|
|
4343
4389
|
TOPN(0) = val;
|
|
4390
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
4391
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
4344
4392
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4345
4393
|
# undef INSN_ATTR
|
|
4346
4394
|
|
|
@@ -4358,7 +4406,7 @@ INSN_ENTRY(setlocal_WC_0)
|
|
|
4358
4406
|
/* ### Declare and assign variables. ### */
|
|
4359
4407
|
#line 12 "defs/opt_operand.def"
|
|
4360
4408
|
const rb_num_t level = 0;
|
|
4361
|
-
#line
|
|
4409
|
+
#line 4410 "vm.inc"
|
|
4362
4410
|
lindex_t idx = (lindex_t)GET_OPERAND(1);
|
|
4363
4411
|
# define INSN_ATTR(x) attr_ ## x ## _setlocal_WC_0(idx)
|
|
4364
4412
|
bool leaf = INSN_ATTR(leaf);
|
|
@@ -4366,7 +4414,7 @@ INSN_ENTRY(setlocal_WC_0)
|
|
|
4366
4414
|
|
|
4367
4415
|
/* ### Instruction preambles. ### */
|
|
4368
4416
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
4369
|
-
SETUP_CANARY();
|
|
4417
|
+
SETUP_CANARY(leaf);
|
|
4370
4418
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
4371
4419
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, idx);
|
|
4372
4420
|
|
|
@@ -4378,12 +4426,12 @@ INSN_ENTRY(setlocal_WC_0)
|
|
|
4378
4426
|
RB_DEBUG_COUNTER_INC(lvar_set);
|
|
4379
4427
|
(void)RB_DEBUG_COUNTER_INC_IF(lvar_set_dynamic, level > 0);
|
|
4380
4428
|
}
|
|
4381
|
-
# line
|
|
4429
|
+
# line 4430 "vm.inc"
|
|
4382
4430
|
# undef NAME_OF_CURRENT_INSN
|
|
4383
4431
|
|
|
4384
4432
|
/* ### Instruction trailers. ### */
|
|
4385
4433
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
4386
|
-
CHECK_CANARY();
|
|
4434
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
4387
4435
|
INC_SP(INSN_ATTR(sp_inc));
|
|
4388
4436
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4389
4437
|
# undef INSN_ATTR
|
|
@@ -4402,7 +4450,7 @@ INSN_ENTRY(setlocal_WC_1)
|
|
|
4402
4450
|
/* ### Declare and assign variables. ### */
|
|
4403
4451
|
#line 13 "defs/opt_operand.def"
|
|
4404
4452
|
const rb_num_t level = 1;
|
|
4405
|
-
#line
|
|
4453
|
+
#line 4454 "vm.inc"
|
|
4406
4454
|
lindex_t idx = (lindex_t)GET_OPERAND(1);
|
|
4407
4455
|
# define INSN_ATTR(x) attr_ ## x ## _setlocal_WC_1(idx)
|
|
4408
4456
|
bool leaf = INSN_ATTR(leaf);
|
|
@@ -4410,7 +4458,7 @@ INSN_ENTRY(setlocal_WC_1)
|
|
|
4410
4458
|
|
|
4411
4459
|
/* ### Instruction preambles. ### */
|
|
4412
4460
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
4413
|
-
SETUP_CANARY();
|
|
4461
|
+
SETUP_CANARY(leaf);
|
|
4414
4462
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
4415
4463
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, idx);
|
|
4416
4464
|
|
|
@@ -4422,12 +4470,12 @@ INSN_ENTRY(setlocal_WC_1)
|
|
|
4422
4470
|
RB_DEBUG_COUNTER_INC(lvar_set);
|
|
4423
4471
|
(void)RB_DEBUG_COUNTER_INC_IF(lvar_set_dynamic, level > 0);
|
|
4424
4472
|
}
|
|
4425
|
-
# line
|
|
4473
|
+
# line 4474 "vm.inc"
|
|
4426
4474
|
# undef NAME_OF_CURRENT_INSN
|
|
4427
4475
|
|
|
4428
4476
|
/* ### Instruction trailers. ### */
|
|
4429
4477
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
4430
|
-
CHECK_CANARY();
|
|
4478
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
4431
4479
|
INC_SP(INSN_ATTR(sp_inc));
|
|
4432
4480
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4433
4481
|
# undef INSN_ATTR
|
|
@@ -4446,7 +4494,7 @@ INSN_ENTRY(putobject_INT2FIX_0_)
|
|
|
4446
4494
|
/* ### Declare and assign variables. ### */
|
|
4447
4495
|
#line 15 "defs/opt_operand.def"
|
|
4448
4496
|
const VALUE val = INT2FIX(0);
|
|
4449
|
-
#line
|
|
4497
|
+
#line 4498 "vm.inc"
|
|
4450
4498
|
# define INSN_ATTR(x) attr_ ## x ## _putobject_INT2FIX_0_()
|
|
4451
4499
|
bool leaf = INSN_ATTR(leaf);
|
|
4452
4500
|
|
|
@@ -4458,6 +4506,8 @@ INSN_ENTRY(putobject_INT2FIX_0_)
|
|
|
4458
4506
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
4459
4507
|
INC_SP(INSN_ATTR(sp_inc));
|
|
4460
4508
|
TOPN(0) = val;
|
|
4509
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
4510
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
4461
4511
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4462
4512
|
# undef INSN_ATTR
|
|
4463
4513
|
|
|
@@ -4475,7 +4525,7 @@ INSN_ENTRY(putobject_INT2FIX_1_)
|
|
|
4475
4525
|
/* ### Declare and assign variables. ### */
|
|
4476
4526
|
#line 16 "defs/opt_operand.def"
|
|
4477
4527
|
const VALUE val = INT2FIX(1);
|
|
4478
|
-
#line
|
|
4528
|
+
#line 4529 "vm.inc"
|
|
4479
4529
|
# define INSN_ATTR(x) attr_ ## x ## _putobject_INT2FIX_1_()
|
|
4480
4530
|
bool leaf = INSN_ATTR(leaf);
|
|
4481
4531
|
|
|
@@ -4487,6 +4537,8 @@ INSN_ENTRY(putobject_INT2FIX_1_)
|
|
|
4487
4537
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
4488
4538
|
INC_SP(INSN_ATTR(sp_inc));
|
|
4489
4539
|
TOPN(0) = val;
|
|
4540
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
4541
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
4490
4542
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4491
4543
|
# undef INSN_ATTR
|
|
4492
4544
|
|
|
@@ -4497,7 +4549,7 @@ INSN_ENTRY(putobject_INT2FIX_1_)
|
|
|
4497
4549
|
/* insn trace_nop(...)(...)(...) */
|
|
4498
4550
|
INSN_ENTRY(trace_nop)
|
|
4499
4551
|
{
|
|
4500
|
-
vm_trace(ec, GET_CFP()
|
|
4552
|
+
vm_trace(ec, GET_CFP());
|
|
4501
4553
|
DISPATCH_ORIGINAL_INSN(nop);
|
|
4502
4554
|
END_INSN(trace_nop);
|
|
4503
4555
|
}
|
|
@@ -4505,7 +4557,7 @@ INSN_ENTRY(trace_nop)
|
|
|
4505
4557
|
/* insn trace_getlocal(...)(...)(...) */
|
|
4506
4558
|
INSN_ENTRY(trace_getlocal)
|
|
4507
4559
|
{
|
|
4508
|
-
vm_trace(ec, GET_CFP()
|
|
4560
|
+
vm_trace(ec, GET_CFP());
|
|
4509
4561
|
DISPATCH_ORIGINAL_INSN(getlocal);
|
|
4510
4562
|
END_INSN(trace_getlocal);
|
|
4511
4563
|
}
|
|
@@ -4513,7 +4565,7 @@ INSN_ENTRY(trace_getlocal)
|
|
|
4513
4565
|
/* insn trace_setlocal(...)(...)(...) */
|
|
4514
4566
|
INSN_ENTRY(trace_setlocal)
|
|
4515
4567
|
{
|
|
4516
|
-
vm_trace(ec, GET_CFP()
|
|
4568
|
+
vm_trace(ec, GET_CFP());
|
|
4517
4569
|
DISPATCH_ORIGINAL_INSN(setlocal);
|
|
4518
4570
|
END_INSN(trace_setlocal);
|
|
4519
4571
|
}
|
|
@@ -4521,7 +4573,7 @@ INSN_ENTRY(trace_setlocal)
|
|
|
4521
4573
|
/* insn trace_getblockparam(...)(...)(...) */
|
|
4522
4574
|
INSN_ENTRY(trace_getblockparam)
|
|
4523
4575
|
{
|
|
4524
|
-
vm_trace(ec, GET_CFP()
|
|
4576
|
+
vm_trace(ec, GET_CFP());
|
|
4525
4577
|
DISPATCH_ORIGINAL_INSN(getblockparam);
|
|
4526
4578
|
END_INSN(trace_getblockparam);
|
|
4527
4579
|
}
|
|
@@ -4529,7 +4581,7 @@ INSN_ENTRY(trace_getblockparam)
|
|
|
4529
4581
|
/* insn trace_setblockparam(...)(...)(...) */
|
|
4530
4582
|
INSN_ENTRY(trace_setblockparam)
|
|
4531
4583
|
{
|
|
4532
|
-
vm_trace(ec, GET_CFP()
|
|
4584
|
+
vm_trace(ec, GET_CFP());
|
|
4533
4585
|
DISPATCH_ORIGINAL_INSN(setblockparam);
|
|
4534
4586
|
END_INSN(trace_setblockparam);
|
|
4535
4587
|
}
|
|
@@ -4537,7 +4589,7 @@ INSN_ENTRY(trace_setblockparam)
|
|
|
4537
4589
|
/* insn trace_getblockparamproxy(...)(...)(...) */
|
|
4538
4590
|
INSN_ENTRY(trace_getblockparamproxy)
|
|
4539
4591
|
{
|
|
4540
|
-
vm_trace(ec, GET_CFP()
|
|
4592
|
+
vm_trace(ec, GET_CFP());
|
|
4541
4593
|
DISPATCH_ORIGINAL_INSN(getblockparamproxy);
|
|
4542
4594
|
END_INSN(trace_getblockparamproxy);
|
|
4543
4595
|
}
|
|
@@ -4545,7 +4597,7 @@ INSN_ENTRY(trace_getblockparamproxy)
|
|
|
4545
4597
|
/* insn trace_getspecial(...)(...)(...) */
|
|
4546
4598
|
INSN_ENTRY(trace_getspecial)
|
|
4547
4599
|
{
|
|
4548
|
-
vm_trace(ec, GET_CFP()
|
|
4600
|
+
vm_trace(ec, GET_CFP());
|
|
4549
4601
|
DISPATCH_ORIGINAL_INSN(getspecial);
|
|
4550
4602
|
END_INSN(trace_getspecial);
|
|
4551
4603
|
}
|
|
@@ -4553,7 +4605,7 @@ INSN_ENTRY(trace_getspecial)
|
|
|
4553
4605
|
/* insn trace_setspecial(...)(...)(...) */
|
|
4554
4606
|
INSN_ENTRY(trace_setspecial)
|
|
4555
4607
|
{
|
|
4556
|
-
vm_trace(ec, GET_CFP()
|
|
4608
|
+
vm_trace(ec, GET_CFP());
|
|
4557
4609
|
DISPATCH_ORIGINAL_INSN(setspecial);
|
|
4558
4610
|
END_INSN(trace_setspecial);
|
|
4559
4611
|
}
|
|
@@ -4561,7 +4613,7 @@ INSN_ENTRY(trace_setspecial)
|
|
|
4561
4613
|
/* insn trace_getinstancevariable(...)(...)(...) */
|
|
4562
4614
|
INSN_ENTRY(trace_getinstancevariable)
|
|
4563
4615
|
{
|
|
4564
|
-
vm_trace(ec, GET_CFP()
|
|
4616
|
+
vm_trace(ec, GET_CFP());
|
|
4565
4617
|
DISPATCH_ORIGINAL_INSN(getinstancevariable);
|
|
4566
4618
|
END_INSN(trace_getinstancevariable);
|
|
4567
4619
|
}
|
|
@@ -4569,7 +4621,7 @@ INSN_ENTRY(trace_getinstancevariable)
|
|
|
4569
4621
|
/* insn trace_setinstancevariable(...)(...)(...) */
|
|
4570
4622
|
INSN_ENTRY(trace_setinstancevariable)
|
|
4571
4623
|
{
|
|
4572
|
-
vm_trace(ec, GET_CFP()
|
|
4624
|
+
vm_trace(ec, GET_CFP());
|
|
4573
4625
|
DISPATCH_ORIGINAL_INSN(setinstancevariable);
|
|
4574
4626
|
END_INSN(trace_setinstancevariable);
|
|
4575
4627
|
}
|
|
@@ -4577,7 +4629,7 @@ INSN_ENTRY(trace_setinstancevariable)
|
|
|
4577
4629
|
/* insn trace_getclassvariable(...)(...)(...) */
|
|
4578
4630
|
INSN_ENTRY(trace_getclassvariable)
|
|
4579
4631
|
{
|
|
4580
|
-
vm_trace(ec, GET_CFP()
|
|
4632
|
+
vm_trace(ec, GET_CFP());
|
|
4581
4633
|
DISPATCH_ORIGINAL_INSN(getclassvariable);
|
|
4582
4634
|
END_INSN(trace_getclassvariable);
|
|
4583
4635
|
}
|
|
@@ -4585,7 +4637,7 @@ INSN_ENTRY(trace_getclassvariable)
|
|
|
4585
4637
|
/* insn trace_setclassvariable(...)(...)(...) */
|
|
4586
4638
|
INSN_ENTRY(trace_setclassvariable)
|
|
4587
4639
|
{
|
|
4588
|
-
vm_trace(ec, GET_CFP()
|
|
4640
|
+
vm_trace(ec, GET_CFP());
|
|
4589
4641
|
DISPATCH_ORIGINAL_INSN(setclassvariable);
|
|
4590
4642
|
END_INSN(trace_setclassvariable);
|
|
4591
4643
|
}
|
|
@@ -4593,7 +4645,7 @@ INSN_ENTRY(trace_setclassvariable)
|
|
|
4593
4645
|
/* insn trace_getconstant(...)(...)(...) */
|
|
4594
4646
|
INSN_ENTRY(trace_getconstant)
|
|
4595
4647
|
{
|
|
4596
|
-
vm_trace(ec, GET_CFP()
|
|
4648
|
+
vm_trace(ec, GET_CFP());
|
|
4597
4649
|
DISPATCH_ORIGINAL_INSN(getconstant);
|
|
4598
4650
|
END_INSN(trace_getconstant);
|
|
4599
4651
|
}
|
|
@@ -4601,7 +4653,7 @@ INSN_ENTRY(trace_getconstant)
|
|
|
4601
4653
|
/* insn trace_setconstant(...)(...)(...) */
|
|
4602
4654
|
INSN_ENTRY(trace_setconstant)
|
|
4603
4655
|
{
|
|
4604
|
-
vm_trace(ec, GET_CFP()
|
|
4656
|
+
vm_trace(ec, GET_CFP());
|
|
4605
4657
|
DISPATCH_ORIGINAL_INSN(setconstant);
|
|
4606
4658
|
END_INSN(trace_setconstant);
|
|
4607
4659
|
}
|
|
@@ -4609,7 +4661,7 @@ INSN_ENTRY(trace_setconstant)
|
|
|
4609
4661
|
/* insn trace_getglobal(...)(...)(...) */
|
|
4610
4662
|
INSN_ENTRY(trace_getglobal)
|
|
4611
4663
|
{
|
|
4612
|
-
vm_trace(ec, GET_CFP()
|
|
4664
|
+
vm_trace(ec, GET_CFP());
|
|
4613
4665
|
DISPATCH_ORIGINAL_INSN(getglobal);
|
|
4614
4666
|
END_INSN(trace_getglobal);
|
|
4615
4667
|
}
|
|
@@ -4617,7 +4669,7 @@ INSN_ENTRY(trace_getglobal)
|
|
|
4617
4669
|
/* insn trace_setglobal(...)(...)(...) */
|
|
4618
4670
|
INSN_ENTRY(trace_setglobal)
|
|
4619
4671
|
{
|
|
4620
|
-
vm_trace(ec, GET_CFP()
|
|
4672
|
+
vm_trace(ec, GET_CFP());
|
|
4621
4673
|
DISPATCH_ORIGINAL_INSN(setglobal);
|
|
4622
4674
|
END_INSN(trace_setglobal);
|
|
4623
4675
|
}
|
|
@@ -4625,7 +4677,7 @@ INSN_ENTRY(trace_setglobal)
|
|
|
4625
4677
|
/* insn trace_putnil(...)(...)(...) */
|
|
4626
4678
|
INSN_ENTRY(trace_putnil)
|
|
4627
4679
|
{
|
|
4628
|
-
vm_trace(ec, GET_CFP()
|
|
4680
|
+
vm_trace(ec, GET_CFP());
|
|
4629
4681
|
DISPATCH_ORIGINAL_INSN(putnil);
|
|
4630
4682
|
END_INSN(trace_putnil);
|
|
4631
4683
|
}
|
|
@@ -4633,7 +4685,7 @@ INSN_ENTRY(trace_putnil)
|
|
|
4633
4685
|
/* insn trace_putself(...)(...)(...) */
|
|
4634
4686
|
INSN_ENTRY(trace_putself)
|
|
4635
4687
|
{
|
|
4636
|
-
vm_trace(ec, GET_CFP()
|
|
4688
|
+
vm_trace(ec, GET_CFP());
|
|
4637
4689
|
DISPATCH_ORIGINAL_INSN(putself);
|
|
4638
4690
|
END_INSN(trace_putself);
|
|
4639
4691
|
}
|
|
@@ -4641,7 +4693,7 @@ INSN_ENTRY(trace_putself)
|
|
|
4641
4693
|
/* insn trace_putobject(...)(...)(...) */
|
|
4642
4694
|
INSN_ENTRY(trace_putobject)
|
|
4643
4695
|
{
|
|
4644
|
-
vm_trace(ec, GET_CFP()
|
|
4696
|
+
vm_trace(ec, GET_CFP());
|
|
4645
4697
|
DISPATCH_ORIGINAL_INSN(putobject);
|
|
4646
4698
|
END_INSN(trace_putobject);
|
|
4647
4699
|
}
|
|
@@ -4649,7 +4701,7 @@ INSN_ENTRY(trace_putobject)
|
|
|
4649
4701
|
/* insn trace_putspecialobject(...)(...)(...) */
|
|
4650
4702
|
INSN_ENTRY(trace_putspecialobject)
|
|
4651
4703
|
{
|
|
4652
|
-
vm_trace(ec, GET_CFP()
|
|
4704
|
+
vm_trace(ec, GET_CFP());
|
|
4653
4705
|
DISPATCH_ORIGINAL_INSN(putspecialobject);
|
|
4654
4706
|
END_INSN(trace_putspecialobject);
|
|
4655
4707
|
}
|
|
@@ -4657,7 +4709,7 @@ INSN_ENTRY(trace_putspecialobject)
|
|
|
4657
4709
|
/* insn trace_putstring(...)(...)(...) */
|
|
4658
4710
|
INSN_ENTRY(trace_putstring)
|
|
4659
4711
|
{
|
|
4660
|
-
vm_trace(ec, GET_CFP()
|
|
4712
|
+
vm_trace(ec, GET_CFP());
|
|
4661
4713
|
DISPATCH_ORIGINAL_INSN(putstring);
|
|
4662
4714
|
END_INSN(trace_putstring);
|
|
4663
4715
|
}
|
|
@@ -4665,7 +4717,7 @@ INSN_ENTRY(trace_putstring)
|
|
|
4665
4717
|
/* insn trace_concatstrings(...)(...)(...) */
|
|
4666
4718
|
INSN_ENTRY(trace_concatstrings)
|
|
4667
4719
|
{
|
|
4668
|
-
vm_trace(ec, GET_CFP()
|
|
4720
|
+
vm_trace(ec, GET_CFP());
|
|
4669
4721
|
DISPATCH_ORIGINAL_INSN(concatstrings);
|
|
4670
4722
|
END_INSN(trace_concatstrings);
|
|
4671
4723
|
}
|
|
@@ -4673,23 +4725,15 @@ INSN_ENTRY(trace_concatstrings)
|
|
|
4673
4725
|
/* insn trace_tostring(...)(...)(...) */
|
|
4674
4726
|
INSN_ENTRY(trace_tostring)
|
|
4675
4727
|
{
|
|
4676
|
-
vm_trace(ec, GET_CFP()
|
|
4728
|
+
vm_trace(ec, GET_CFP());
|
|
4677
4729
|
DISPATCH_ORIGINAL_INSN(tostring);
|
|
4678
4730
|
END_INSN(trace_tostring);
|
|
4679
4731
|
}
|
|
4680
4732
|
|
|
4681
|
-
/* insn trace_freezestring(...)(...)(...) */
|
|
4682
|
-
INSN_ENTRY(trace_freezestring)
|
|
4683
|
-
{
|
|
4684
|
-
vm_trace(ec, GET_CFP(), GET_PC());
|
|
4685
|
-
DISPATCH_ORIGINAL_INSN(freezestring);
|
|
4686
|
-
END_INSN(trace_freezestring);
|
|
4687
|
-
}
|
|
4688
|
-
|
|
4689
4733
|
/* insn trace_toregexp(...)(...)(...) */
|
|
4690
4734
|
INSN_ENTRY(trace_toregexp)
|
|
4691
4735
|
{
|
|
4692
|
-
vm_trace(ec, GET_CFP()
|
|
4736
|
+
vm_trace(ec, GET_CFP());
|
|
4693
4737
|
DISPATCH_ORIGINAL_INSN(toregexp);
|
|
4694
4738
|
END_INSN(trace_toregexp);
|
|
4695
4739
|
}
|
|
@@ -4697,7 +4741,7 @@ INSN_ENTRY(trace_toregexp)
|
|
|
4697
4741
|
/* insn trace_intern(...)(...)(...) */
|
|
4698
4742
|
INSN_ENTRY(trace_intern)
|
|
4699
4743
|
{
|
|
4700
|
-
vm_trace(ec, GET_CFP()
|
|
4744
|
+
vm_trace(ec, GET_CFP());
|
|
4701
4745
|
DISPATCH_ORIGINAL_INSN(intern);
|
|
4702
4746
|
END_INSN(trace_intern);
|
|
4703
4747
|
}
|
|
@@ -4705,7 +4749,7 @@ INSN_ENTRY(trace_intern)
|
|
|
4705
4749
|
/* insn trace_newarray(...)(...)(...) */
|
|
4706
4750
|
INSN_ENTRY(trace_newarray)
|
|
4707
4751
|
{
|
|
4708
|
-
vm_trace(ec, GET_CFP()
|
|
4752
|
+
vm_trace(ec, GET_CFP());
|
|
4709
4753
|
DISPATCH_ORIGINAL_INSN(newarray);
|
|
4710
4754
|
END_INSN(trace_newarray);
|
|
4711
4755
|
}
|
|
@@ -4713,7 +4757,7 @@ INSN_ENTRY(trace_newarray)
|
|
|
4713
4757
|
/* insn trace_newarraykwsplat(...)(...)(...) */
|
|
4714
4758
|
INSN_ENTRY(trace_newarraykwsplat)
|
|
4715
4759
|
{
|
|
4716
|
-
vm_trace(ec, GET_CFP()
|
|
4760
|
+
vm_trace(ec, GET_CFP());
|
|
4717
4761
|
DISPATCH_ORIGINAL_INSN(newarraykwsplat);
|
|
4718
4762
|
END_INSN(trace_newarraykwsplat);
|
|
4719
4763
|
}
|
|
@@ -4721,7 +4765,7 @@ INSN_ENTRY(trace_newarraykwsplat)
|
|
|
4721
4765
|
/* insn trace_duparray(...)(...)(...) */
|
|
4722
4766
|
INSN_ENTRY(trace_duparray)
|
|
4723
4767
|
{
|
|
4724
|
-
vm_trace(ec, GET_CFP()
|
|
4768
|
+
vm_trace(ec, GET_CFP());
|
|
4725
4769
|
DISPATCH_ORIGINAL_INSN(duparray);
|
|
4726
4770
|
END_INSN(trace_duparray);
|
|
4727
4771
|
}
|
|
@@ -4729,7 +4773,7 @@ INSN_ENTRY(trace_duparray)
|
|
|
4729
4773
|
/* insn trace_duphash(...)(...)(...) */
|
|
4730
4774
|
INSN_ENTRY(trace_duphash)
|
|
4731
4775
|
{
|
|
4732
|
-
vm_trace(ec, GET_CFP()
|
|
4776
|
+
vm_trace(ec, GET_CFP());
|
|
4733
4777
|
DISPATCH_ORIGINAL_INSN(duphash);
|
|
4734
4778
|
END_INSN(trace_duphash);
|
|
4735
4779
|
}
|
|
@@ -4737,7 +4781,7 @@ INSN_ENTRY(trace_duphash)
|
|
|
4737
4781
|
/* insn trace_expandarray(...)(...)(...) */
|
|
4738
4782
|
INSN_ENTRY(trace_expandarray)
|
|
4739
4783
|
{
|
|
4740
|
-
vm_trace(ec, GET_CFP()
|
|
4784
|
+
vm_trace(ec, GET_CFP());
|
|
4741
4785
|
DISPATCH_ORIGINAL_INSN(expandarray);
|
|
4742
4786
|
END_INSN(trace_expandarray);
|
|
4743
4787
|
}
|
|
@@ -4745,7 +4789,7 @@ INSN_ENTRY(trace_expandarray)
|
|
|
4745
4789
|
/* insn trace_concatarray(...)(...)(...) */
|
|
4746
4790
|
INSN_ENTRY(trace_concatarray)
|
|
4747
4791
|
{
|
|
4748
|
-
vm_trace(ec, GET_CFP()
|
|
4792
|
+
vm_trace(ec, GET_CFP());
|
|
4749
4793
|
DISPATCH_ORIGINAL_INSN(concatarray);
|
|
4750
4794
|
END_INSN(trace_concatarray);
|
|
4751
4795
|
}
|
|
@@ -4753,7 +4797,7 @@ INSN_ENTRY(trace_concatarray)
|
|
|
4753
4797
|
/* insn trace_splatarray(...)(...)(...) */
|
|
4754
4798
|
INSN_ENTRY(trace_splatarray)
|
|
4755
4799
|
{
|
|
4756
|
-
vm_trace(ec, GET_CFP()
|
|
4800
|
+
vm_trace(ec, GET_CFP());
|
|
4757
4801
|
DISPATCH_ORIGINAL_INSN(splatarray);
|
|
4758
4802
|
END_INSN(trace_splatarray);
|
|
4759
4803
|
}
|
|
@@ -4761,7 +4805,7 @@ INSN_ENTRY(trace_splatarray)
|
|
|
4761
4805
|
/* insn trace_newhash(...)(...)(...) */
|
|
4762
4806
|
INSN_ENTRY(trace_newhash)
|
|
4763
4807
|
{
|
|
4764
|
-
vm_trace(ec, GET_CFP()
|
|
4808
|
+
vm_trace(ec, GET_CFP());
|
|
4765
4809
|
DISPATCH_ORIGINAL_INSN(newhash);
|
|
4766
4810
|
END_INSN(trace_newhash);
|
|
4767
4811
|
}
|
|
@@ -4769,7 +4813,7 @@ INSN_ENTRY(trace_newhash)
|
|
|
4769
4813
|
/* insn trace_newrange(...)(...)(...) */
|
|
4770
4814
|
INSN_ENTRY(trace_newrange)
|
|
4771
4815
|
{
|
|
4772
|
-
vm_trace(ec, GET_CFP()
|
|
4816
|
+
vm_trace(ec, GET_CFP());
|
|
4773
4817
|
DISPATCH_ORIGINAL_INSN(newrange);
|
|
4774
4818
|
END_INSN(trace_newrange);
|
|
4775
4819
|
}
|
|
@@ -4777,7 +4821,7 @@ INSN_ENTRY(trace_newrange)
|
|
|
4777
4821
|
/* insn trace_pop(...)(...)(...) */
|
|
4778
4822
|
INSN_ENTRY(trace_pop)
|
|
4779
4823
|
{
|
|
4780
|
-
vm_trace(ec, GET_CFP()
|
|
4824
|
+
vm_trace(ec, GET_CFP());
|
|
4781
4825
|
DISPATCH_ORIGINAL_INSN(pop);
|
|
4782
4826
|
END_INSN(trace_pop);
|
|
4783
4827
|
}
|
|
@@ -4785,7 +4829,7 @@ INSN_ENTRY(trace_pop)
|
|
|
4785
4829
|
/* insn trace_dup(...)(...)(...) */
|
|
4786
4830
|
INSN_ENTRY(trace_dup)
|
|
4787
4831
|
{
|
|
4788
|
-
vm_trace(ec, GET_CFP()
|
|
4832
|
+
vm_trace(ec, GET_CFP());
|
|
4789
4833
|
DISPATCH_ORIGINAL_INSN(dup);
|
|
4790
4834
|
END_INSN(trace_dup);
|
|
4791
4835
|
}
|
|
@@ -4793,7 +4837,7 @@ INSN_ENTRY(trace_dup)
|
|
|
4793
4837
|
/* insn trace_dupn(...)(...)(...) */
|
|
4794
4838
|
INSN_ENTRY(trace_dupn)
|
|
4795
4839
|
{
|
|
4796
|
-
vm_trace(ec, GET_CFP()
|
|
4840
|
+
vm_trace(ec, GET_CFP());
|
|
4797
4841
|
DISPATCH_ORIGINAL_INSN(dupn);
|
|
4798
4842
|
END_INSN(trace_dupn);
|
|
4799
4843
|
}
|
|
@@ -4801,7 +4845,7 @@ INSN_ENTRY(trace_dupn)
|
|
|
4801
4845
|
/* insn trace_swap(...)(...)(...) */
|
|
4802
4846
|
INSN_ENTRY(trace_swap)
|
|
4803
4847
|
{
|
|
4804
|
-
vm_trace(ec, GET_CFP()
|
|
4848
|
+
vm_trace(ec, GET_CFP());
|
|
4805
4849
|
DISPATCH_ORIGINAL_INSN(swap);
|
|
4806
4850
|
END_INSN(trace_swap);
|
|
4807
4851
|
}
|
|
@@ -4809,7 +4853,7 @@ INSN_ENTRY(trace_swap)
|
|
|
4809
4853
|
/* insn trace_reverse(...)(...)(...) */
|
|
4810
4854
|
INSN_ENTRY(trace_reverse)
|
|
4811
4855
|
{
|
|
4812
|
-
vm_trace(ec, GET_CFP()
|
|
4856
|
+
vm_trace(ec, GET_CFP());
|
|
4813
4857
|
DISPATCH_ORIGINAL_INSN(reverse);
|
|
4814
4858
|
END_INSN(trace_reverse);
|
|
4815
4859
|
}
|
|
@@ -4817,7 +4861,7 @@ INSN_ENTRY(trace_reverse)
|
|
|
4817
4861
|
/* insn trace_topn(...)(...)(...) */
|
|
4818
4862
|
INSN_ENTRY(trace_topn)
|
|
4819
4863
|
{
|
|
4820
|
-
vm_trace(ec, GET_CFP()
|
|
4864
|
+
vm_trace(ec, GET_CFP());
|
|
4821
4865
|
DISPATCH_ORIGINAL_INSN(topn);
|
|
4822
4866
|
END_INSN(trace_topn);
|
|
4823
4867
|
}
|
|
@@ -4825,7 +4869,7 @@ INSN_ENTRY(trace_topn)
|
|
|
4825
4869
|
/* insn trace_setn(...)(...)(...) */
|
|
4826
4870
|
INSN_ENTRY(trace_setn)
|
|
4827
4871
|
{
|
|
4828
|
-
vm_trace(ec, GET_CFP()
|
|
4872
|
+
vm_trace(ec, GET_CFP());
|
|
4829
4873
|
DISPATCH_ORIGINAL_INSN(setn);
|
|
4830
4874
|
END_INSN(trace_setn);
|
|
4831
4875
|
}
|
|
@@ -4833,7 +4877,7 @@ INSN_ENTRY(trace_setn)
|
|
|
4833
4877
|
/* insn trace_adjuststack(...)(...)(...) */
|
|
4834
4878
|
INSN_ENTRY(trace_adjuststack)
|
|
4835
4879
|
{
|
|
4836
|
-
vm_trace(ec, GET_CFP()
|
|
4880
|
+
vm_trace(ec, GET_CFP());
|
|
4837
4881
|
DISPATCH_ORIGINAL_INSN(adjuststack);
|
|
4838
4882
|
END_INSN(trace_adjuststack);
|
|
4839
4883
|
}
|
|
@@ -4841,7 +4885,7 @@ INSN_ENTRY(trace_adjuststack)
|
|
|
4841
4885
|
/* insn trace_defined(...)(...)(...) */
|
|
4842
4886
|
INSN_ENTRY(trace_defined)
|
|
4843
4887
|
{
|
|
4844
|
-
vm_trace(ec, GET_CFP()
|
|
4888
|
+
vm_trace(ec, GET_CFP());
|
|
4845
4889
|
DISPATCH_ORIGINAL_INSN(defined);
|
|
4846
4890
|
END_INSN(trace_defined);
|
|
4847
4891
|
}
|
|
@@ -4849,7 +4893,7 @@ INSN_ENTRY(trace_defined)
|
|
|
4849
4893
|
/* insn trace_checkmatch(...)(...)(...) */
|
|
4850
4894
|
INSN_ENTRY(trace_checkmatch)
|
|
4851
4895
|
{
|
|
4852
|
-
vm_trace(ec, GET_CFP()
|
|
4896
|
+
vm_trace(ec, GET_CFP());
|
|
4853
4897
|
DISPATCH_ORIGINAL_INSN(checkmatch);
|
|
4854
4898
|
END_INSN(trace_checkmatch);
|
|
4855
4899
|
}
|
|
@@ -4857,7 +4901,7 @@ INSN_ENTRY(trace_checkmatch)
|
|
|
4857
4901
|
/* insn trace_checkkeyword(...)(...)(...) */
|
|
4858
4902
|
INSN_ENTRY(trace_checkkeyword)
|
|
4859
4903
|
{
|
|
4860
|
-
vm_trace(ec, GET_CFP()
|
|
4904
|
+
vm_trace(ec, GET_CFP());
|
|
4861
4905
|
DISPATCH_ORIGINAL_INSN(checkkeyword);
|
|
4862
4906
|
END_INSN(trace_checkkeyword);
|
|
4863
4907
|
}
|
|
@@ -4865,7 +4909,7 @@ INSN_ENTRY(trace_checkkeyword)
|
|
|
4865
4909
|
/* insn trace_checktype(...)(...)(...) */
|
|
4866
4910
|
INSN_ENTRY(trace_checktype)
|
|
4867
4911
|
{
|
|
4868
|
-
vm_trace(ec, GET_CFP()
|
|
4912
|
+
vm_trace(ec, GET_CFP());
|
|
4869
4913
|
DISPATCH_ORIGINAL_INSN(checktype);
|
|
4870
4914
|
END_INSN(trace_checktype);
|
|
4871
4915
|
}
|
|
@@ -4873,7 +4917,7 @@ INSN_ENTRY(trace_checktype)
|
|
|
4873
4917
|
/* insn trace_defineclass(...)(...)(...) */
|
|
4874
4918
|
INSN_ENTRY(trace_defineclass)
|
|
4875
4919
|
{
|
|
4876
|
-
vm_trace(ec, GET_CFP()
|
|
4920
|
+
vm_trace(ec, GET_CFP());
|
|
4877
4921
|
DISPATCH_ORIGINAL_INSN(defineclass);
|
|
4878
4922
|
END_INSN(trace_defineclass);
|
|
4879
4923
|
}
|
|
@@ -4881,7 +4925,7 @@ INSN_ENTRY(trace_defineclass)
|
|
|
4881
4925
|
/* insn trace_definemethod(...)(...)(...) */
|
|
4882
4926
|
INSN_ENTRY(trace_definemethod)
|
|
4883
4927
|
{
|
|
4884
|
-
vm_trace(ec, GET_CFP()
|
|
4928
|
+
vm_trace(ec, GET_CFP());
|
|
4885
4929
|
DISPATCH_ORIGINAL_INSN(definemethod);
|
|
4886
4930
|
END_INSN(trace_definemethod);
|
|
4887
4931
|
}
|
|
@@ -4889,7 +4933,7 @@ INSN_ENTRY(trace_definemethod)
|
|
|
4889
4933
|
/* insn trace_definesmethod(...)(...)(...) */
|
|
4890
4934
|
INSN_ENTRY(trace_definesmethod)
|
|
4891
4935
|
{
|
|
4892
|
-
vm_trace(ec, GET_CFP()
|
|
4936
|
+
vm_trace(ec, GET_CFP());
|
|
4893
4937
|
DISPATCH_ORIGINAL_INSN(definesmethod);
|
|
4894
4938
|
END_INSN(trace_definesmethod);
|
|
4895
4939
|
}
|
|
@@ -4897,7 +4941,7 @@ INSN_ENTRY(trace_definesmethod)
|
|
|
4897
4941
|
/* insn trace_send(...)(...)(...) */
|
|
4898
4942
|
INSN_ENTRY(trace_send)
|
|
4899
4943
|
{
|
|
4900
|
-
vm_trace(ec, GET_CFP()
|
|
4944
|
+
vm_trace(ec, GET_CFP());
|
|
4901
4945
|
DISPATCH_ORIGINAL_INSN(send);
|
|
4902
4946
|
END_INSN(trace_send);
|
|
4903
4947
|
}
|
|
@@ -4905,7 +4949,7 @@ INSN_ENTRY(trace_send)
|
|
|
4905
4949
|
/* insn trace_opt_send_without_block(...)(...)(...) */
|
|
4906
4950
|
INSN_ENTRY(trace_opt_send_without_block)
|
|
4907
4951
|
{
|
|
4908
|
-
vm_trace(ec, GET_CFP()
|
|
4952
|
+
vm_trace(ec, GET_CFP());
|
|
4909
4953
|
DISPATCH_ORIGINAL_INSN(opt_send_without_block);
|
|
4910
4954
|
END_INSN(trace_opt_send_without_block);
|
|
4911
4955
|
}
|
|
@@ -4913,7 +4957,7 @@ INSN_ENTRY(trace_opt_send_without_block)
|
|
|
4913
4957
|
/* insn trace_opt_str_freeze(...)(...)(...) */
|
|
4914
4958
|
INSN_ENTRY(trace_opt_str_freeze)
|
|
4915
4959
|
{
|
|
4916
|
-
vm_trace(ec, GET_CFP()
|
|
4960
|
+
vm_trace(ec, GET_CFP());
|
|
4917
4961
|
DISPATCH_ORIGINAL_INSN(opt_str_freeze);
|
|
4918
4962
|
END_INSN(trace_opt_str_freeze);
|
|
4919
4963
|
}
|
|
@@ -4921,7 +4965,7 @@ INSN_ENTRY(trace_opt_str_freeze)
|
|
|
4921
4965
|
/* insn trace_opt_nil_p(...)(...)(...) */
|
|
4922
4966
|
INSN_ENTRY(trace_opt_nil_p)
|
|
4923
4967
|
{
|
|
4924
|
-
vm_trace(ec, GET_CFP()
|
|
4968
|
+
vm_trace(ec, GET_CFP());
|
|
4925
4969
|
DISPATCH_ORIGINAL_INSN(opt_nil_p);
|
|
4926
4970
|
END_INSN(trace_opt_nil_p);
|
|
4927
4971
|
}
|
|
@@ -4929,7 +4973,7 @@ INSN_ENTRY(trace_opt_nil_p)
|
|
|
4929
4973
|
/* insn trace_opt_str_uminus(...)(...)(...) */
|
|
4930
4974
|
INSN_ENTRY(trace_opt_str_uminus)
|
|
4931
4975
|
{
|
|
4932
|
-
vm_trace(ec, GET_CFP()
|
|
4976
|
+
vm_trace(ec, GET_CFP());
|
|
4933
4977
|
DISPATCH_ORIGINAL_INSN(opt_str_uminus);
|
|
4934
4978
|
END_INSN(trace_opt_str_uminus);
|
|
4935
4979
|
}
|
|
@@ -4937,7 +4981,7 @@ INSN_ENTRY(trace_opt_str_uminus)
|
|
|
4937
4981
|
/* insn trace_opt_newarray_max(...)(...)(...) */
|
|
4938
4982
|
INSN_ENTRY(trace_opt_newarray_max)
|
|
4939
4983
|
{
|
|
4940
|
-
vm_trace(ec, GET_CFP()
|
|
4984
|
+
vm_trace(ec, GET_CFP());
|
|
4941
4985
|
DISPATCH_ORIGINAL_INSN(opt_newarray_max);
|
|
4942
4986
|
END_INSN(trace_opt_newarray_max);
|
|
4943
4987
|
}
|
|
@@ -4945,7 +4989,7 @@ INSN_ENTRY(trace_opt_newarray_max)
|
|
|
4945
4989
|
/* insn trace_opt_newarray_min(...)(...)(...) */
|
|
4946
4990
|
INSN_ENTRY(trace_opt_newarray_min)
|
|
4947
4991
|
{
|
|
4948
|
-
vm_trace(ec, GET_CFP()
|
|
4992
|
+
vm_trace(ec, GET_CFP());
|
|
4949
4993
|
DISPATCH_ORIGINAL_INSN(opt_newarray_min);
|
|
4950
4994
|
END_INSN(trace_opt_newarray_min);
|
|
4951
4995
|
}
|
|
@@ -4953,7 +4997,7 @@ INSN_ENTRY(trace_opt_newarray_min)
|
|
|
4953
4997
|
/* insn trace_invokesuper(...)(...)(...) */
|
|
4954
4998
|
INSN_ENTRY(trace_invokesuper)
|
|
4955
4999
|
{
|
|
4956
|
-
vm_trace(ec, GET_CFP()
|
|
5000
|
+
vm_trace(ec, GET_CFP());
|
|
4957
5001
|
DISPATCH_ORIGINAL_INSN(invokesuper);
|
|
4958
5002
|
END_INSN(trace_invokesuper);
|
|
4959
5003
|
}
|
|
@@ -4961,7 +5005,7 @@ INSN_ENTRY(trace_invokesuper)
|
|
|
4961
5005
|
/* insn trace_invokeblock(...)(...)(...) */
|
|
4962
5006
|
INSN_ENTRY(trace_invokeblock)
|
|
4963
5007
|
{
|
|
4964
|
-
vm_trace(ec, GET_CFP()
|
|
5008
|
+
vm_trace(ec, GET_CFP());
|
|
4965
5009
|
DISPATCH_ORIGINAL_INSN(invokeblock);
|
|
4966
5010
|
END_INSN(trace_invokeblock);
|
|
4967
5011
|
}
|
|
@@ -4969,7 +5013,7 @@ INSN_ENTRY(trace_invokeblock)
|
|
|
4969
5013
|
/* insn trace_leave(...)(...)(...) */
|
|
4970
5014
|
INSN_ENTRY(trace_leave)
|
|
4971
5015
|
{
|
|
4972
|
-
vm_trace(ec, GET_CFP()
|
|
5016
|
+
vm_trace(ec, GET_CFP());
|
|
4973
5017
|
DISPATCH_ORIGINAL_INSN(leave);
|
|
4974
5018
|
END_INSN(trace_leave);
|
|
4975
5019
|
}
|
|
@@ -4977,7 +5021,7 @@ INSN_ENTRY(trace_leave)
|
|
|
4977
5021
|
/* insn trace_throw(...)(...)(...) */
|
|
4978
5022
|
INSN_ENTRY(trace_throw)
|
|
4979
5023
|
{
|
|
4980
|
-
vm_trace(ec, GET_CFP()
|
|
5024
|
+
vm_trace(ec, GET_CFP());
|
|
4981
5025
|
DISPATCH_ORIGINAL_INSN(throw);
|
|
4982
5026
|
END_INSN(trace_throw);
|
|
4983
5027
|
}
|
|
@@ -4985,7 +5029,7 @@ INSN_ENTRY(trace_throw)
|
|
|
4985
5029
|
/* insn trace_jump(...)(...)(...) */
|
|
4986
5030
|
INSN_ENTRY(trace_jump)
|
|
4987
5031
|
{
|
|
4988
|
-
vm_trace(ec, GET_CFP()
|
|
5032
|
+
vm_trace(ec, GET_CFP());
|
|
4989
5033
|
DISPATCH_ORIGINAL_INSN(jump);
|
|
4990
5034
|
END_INSN(trace_jump);
|
|
4991
5035
|
}
|
|
@@ -4993,7 +5037,7 @@ INSN_ENTRY(trace_jump)
|
|
|
4993
5037
|
/* insn trace_branchif(...)(...)(...) */
|
|
4994
5038
|
INSN_ENTRY(trace_branchif)
|
|
4995
5039
|
{
|
|
4996
|
-
vm_trace(ec, GET_CFP()
|
|
5040
|
+
vm_trace(ec, GET_CFP());
|
|
4997
5041
|
DISPATCH_ORIGINAL_INSN(branchif);
|
|
4998
5042
|
END_INSN(trace_branchif);
|
|
4999
5043
|
}
|
|
@@ -5001,7 +5045,7 @@ INSN_ENTRY(trace_branchif)
|
|
|
5001
5045
|
/* insn trace_branchunless(...)(...)(...) */
|
|
5002
5046
|
INSN_ENTRY(trace_branchunless)
|
|
5003
5047
|
{
|
|
5004
|
-
vm_trace(ec, GET_CFP()
|
|
5048
|
+
vm_trace(ec, GET_CFP());
|
|
5005
5049
|
DISPATCH_ORIGINAL_INSN(branchunless);
|
|
5006
5050
|
END_INSN(trace_branchunless);
|
|
5007
5051
|
}
|
|
@@ -5009,7 +5053,7 @@ INSN_ENTRY(trace_branchunless)
|
|
|
5009
5053
|
/* insn trace_branchnil(...)(...)(...) */
|
|
5010
5054
|
INSN_ENTRY(trace_branchnil)
|
|
5011
5055
|
{
|
|
5012
|
-
vm_trace(ec, GET_CFP()
|
|
5056
|
+
vm_trace(ec, GET_CFP());
|
|
5013
5057
|
DISPATCH_ORIGINAL_INSN(branchnil);
|
|
5014
5058
|
END_INSN(trace_branchnil);
|
|
5015
5059
|
}
|
|
@@ -5017,7 +5061,7 @@ INSN_ENTRY(trace_branchnil)
|
|
|
5017
5061
|
/* insn trace_opt_getinlinecache(...)(...)(...) */
|
|
5018
5062
|
INSN_ENTRY(trace_opt_getinlinecache)
|
|
5019
5063
|
{
|
|
5020
|
-
vm_trace(ec, GET_CFP()
|
|
5064
|
+
vm_trace(ec, GET_CFP());
|
|
5021
5065
|
DISPATCH_ORIGINAL_INSN(opt_getinlinecache);
|
|
5022
5066
|
END_INSN(trace_opt_getinlinecache);
|
|
5023
5067
|
}
|
|
@@ -5025,7 +5069,7 @@ INSN_ENTRY(trace_opt_getinlinecache)
|
|
|
5025
5069
|
/* insn trace_opt_setinlinecache(...)(...)(...) */
|
|
5026
5070
|
INSN_ENTRY(trace_opt_setinlinecache)
|
|
5027
5071
|
{
|
|
5028
|
-
vm_trace(ec, GET_CFP()
|
|
5072
|
+
vm_trace(ec, GET_CFP());
|
|
5029
5073
|
DISPATCH_ORIGINAL_INSN(opt_setinlinecache);
|
|
5030
5074
|
END_INSN(trace_opt_setinlinecache);
|
|
5031
5075
|
}
|
|
@@ -5033,7 +5077,7 @@ INSN_ENTRY(trace_opt_setinlinecache)
|
|
|
5033
5077
|
/* insn trace_once(...)(...)(...) */
|
|
5034
5078
|
INSN_ENTRY(trace_once)
|
|
5035
5079
|
{
|
|
5036
|
-
vm_trace(ec, GET_CFP()
|
|
5080
|
+
vm_trace(ec, GET_CFP());
|
|
5037
5081
|
DISPATCH_ORIGINAL_INSN(once);
|
|
5038
5082
|
END_INSN(trace_once);
|
|
5039
5083
|
}
|
|
@@ -5041,7 +5085,7 @@ INSN_ENTRY(trace_once)
|
|
|
5041
5085
|
/* insn trace_opt_case_dispatch(...)(...)(...) */
|
|
5042
5086
|
INSN_ENTRY(trace_opt_case_dispatch)
|
|
5043
5087
|
{
|
|
5044
|
-
vm_trace(ec, GET_CFP()
|
|
5088
|
+
vm_trace(ec, GET_CFP());
|
|
5045
5089
|
DISPATCH_ORIGINAL_INSN(opt_case_dispatch);
|
|
5046
5090
|
END_INSN(trace_opt_case_dispatch);
|
|
5047
5091
|
}
|
|
@@ -5049,7 +5093,7 @@ INSN_ENTRY(trace_opt_case_dispatch)
|
|
|
5049
5093
|
/* insn trace_opt_plus(...)(...)(...) */
|
|
5050
5094
|
INSN_ENTRY(trace_opt_plus)
|
|
5051
5095
|
{
|
|
5052
|
-
vm_trace(ec, GET_CFP()
|
|
5096
|
+
vm_trace(ec, GET_CFP());
|
|
5053
5097
|
DISPATCH_ORIGINAL_INSN(opt_plus);
|
|
5054
5098
|
END_INSN(trace_opt_plus);
|
|
5055
5099
|
}
|
|
@@ -5057,7 +5101,7 @@ INSN_ENTRY(trace_opt_plus)
|
|
|
5057
5101
|
/* insn trace_opt_minus(...)(...)(...) */
|
|
5058
5102
|
INSN_ENTRY(trace_opt_minus)
|
|
5059
5103
|
{
|
|
5060
|
-
vm_trace(ec, GET_CFP()
|
|
5104
|
+
vm_trace(ec, GET_CFP());
|
|
5061
5105
|
DISPATCH_ORIGINAL_INSN(opt_minus);
|
|
5062
5106
|
END_INSN(trace_opt_minus);
|
|
5063
5107
|
}
|
|
@@ -5065,7 +5109,7 @@ INSN_ENTRY(trace_opt_minus)
|
|
|
5065
5109
|
/* insn trace_opt_mult(...)(...)(...) */
|
|
5066
5110
|
INSN_ENTRY(trace_opt_mult)
|
|
5067
5111
|
{
|
|
5068
|
-
vm_trace(ec, GET_CFP()
|
|
5112
|
+
vm_trace(ec, GET_CFP());
|
|
5069
5113
|
DISPATCH_ORIGINAL_INSN(opt_mult);
|
|
5070
5114
|
END_INSN(trace_opt_mult);
|
|
5071
5115
|
}
|
|
@@ -5073,7 +5117,7 @@ INSN_ENTRY(trace_opt_mult)
|
|
|
5073
5117
|
/* insn trace_opt_div(...)(...)(...) */
|
|
5074
5118
|
INSN_ENTRY(trace_opt_div)
|
|
5075
5119
|
{
|
|
5076
|
-
vm_trace(ec, GET_CFP()
|
|
5120
|
+
vm_trace(ec, GET_CFP());
|
|
5077
5121
|
DISPATCH_ORIGINAL_INSN(opt_div);
|
|
5078
5122
|
END_INSN(trace_opt_div);
|
|
5079
5123
|
}
|
|
@@ -5081,7 +5125,7 @@ INSN_ENTRY(trace_opt_div)
|
|
|
5081
5125
|
/* insn trace_opt_mod(...)(...)(...) */
|
|
5082
5126
|
INSN_ENTRY(trace_opt_mod)
|
|
5083
5127
|
{
|
|
5084
|
-
vm_trace(ec, GET_CFP()
|
|
5128
|
+
vm_trace(ec, GET_CFP());
|
|
5085
5129
|
DISPATCH_ORIGINAL_INSN(opt_mod);
|
|
5086
5130
|
END_INSN(trace_opt_mod);
|
|
5087
5131
|
}
|
|
@@ -5089,7 +5133,7 @@ INSN_ENTRY(trace_opt_mod)
|
|
|
5089
5133
|
/* insn trace_opt_eq(...)(...)(...) */
|
|
5090
5134
|
INSN_ENTRY(trace_opt_eq)
|
|
5091
5135
|
{
|
|
5092
|
-
vm_trace(ec, GET_CFP()
|
|
5136
|
+
vm_trace(ec, GET_CFP());
|
|
5093
5137
|
DISPATCH_ORIGINAL_INSN(opt_eq);
|
|
5094
5138
|
END_INSN(trace_opt_eq);
|
|
5095
5139
|
}
|
|
@@ -5097,7 +5141,7 @@ INSN_ENTRY(trace_opt_eq)
|
|
|
5097
5141
|
/* insn trace_opt_neq(...)(...)(...) */
|
|
5098
5142
|
INSN_ENTRY(trace_opt_neq)
|
|
5099
5143
|
{
|
|
5100
|
-
vm_trace(ec, GET_CFP()
|
|
5144
|
+
vm_trace(ec, GET_CFP());
|
|
5101
5145
|
DISPATCH_ORIGINAL_INSN(opt_neq);
|
|
5102
5146
|
END_INSN(trace_opt_neq);
|
|
5103
5147
|
}
|
|
@@ -5105,7 +5149,7 @@ INSN_ENTRY(trace_opt_neq)
|
|
|
5105
5149
|
/* insn trace_opt_lt(...)(...)(...) */
|
|
5106
5150
|
INSN_ENTRY(trace_opt_lt)
|
|
5107
5151
|
{
|
|
5108
|
-
vm_trace(ec, GET_CFP()
|
|
5152
|
+
vm_trace(ec, GET_CFP());
|
|
5109
5153
|
DISPATCH_ORIGINAL_INSN(opt_lt);
|
|
5110
5154
|
END_INSN(trace_opt_lt);
|
|
5111
5155
|
}
|
|
@@ -5113,7 +5157,7 @@ INSN_ENTRY(trace_opt_lt)
|
|
|
5113
5157
|
/* insn trace_opt_le(...)(...)(...) */
|
|
5114
5158
|
INSN_ENTRY(trace_opt_le)
|
|
5115
5159
|
{
|
|
5116
|
-
vm_trace(ec, GET_CFP()
|
|
5160
|
+
vm_trace(ec, GET_CFP());
|
|
5117
5161
|
DISPATCH_ORIGINAL_INSN(opt_le);
|
|
5118
5162
|
END_INSN(trace_opt_le);
|
|
5119
5163
|
}
|
|
@@ -5121,7 +5165,7 @@ INSN_ENTRY(trace_opt_le)
|
|
|
5121
5165
|
/* insn trace_opt_gt(...)(...)(...) */
|
|
5122
5166
|
INSN_ENTRY(trace_opt_gt)
|
|
5123
5167
|
{
|
|
5124
|
-
vm_trace(ec, GET_CFP()
|
|
5168
|
+
vm_trace(ec, GET_CFP());
|
|
5125
5169
|
DISPATCH_ORIGINAL_INSN(opt_gt);
|
|
5126
5170
|
END_INSN(trace_opt_gt);
|
|
5127
5171
|
}
|
|
@@ -5129,7 +5173,7 @@ INSN_ENTRY(trace_opt_gt)
|
|
|
5129
5173
|
/* insn trace_opt_ge(...)(...)(...) */
|
|
5130
5174
|
INSN_ENTRY(trace_opt_ge)
|
|
5131
5175
|
{
|
|
5132
|
-
vm_trace(ec, GET_CFP()
|
|
5176
|
+
vm_trace(ec, GET_CFP());
|
|
5133
5177
|
DISPATCH_ORIGINAL_INSN(opt_ge);
|
|
5134
5178
|
END_INSN(trace_opt_ge);
|
|
5135
5179
|
}
|
|
@@ -5137,7 +5181,7 @@ INSN_ENTRY(trace_opt_ge)
|
|
|
5137
5181
|
/* insn trace_opt_ltlt(...)(...)(...) */
|
|
5138
5182
|
INSN_ENTRY(trace_opt_ltlt)
|
|
5139
5183
|
{
|
|
5140
|
-
vm_trace(ec, GET_CFP()
|
|
5184
|
+
vm_trace(ec, GET_CFP());
|
|
5141
5185
|
DISPATCH_ORIGINAL_INSN(opt_ltlt);
|
|
5142
5186
|
END_INSN(trace_opt_ltlt);
|
|
5143
5187
|
}
|
|
@@ -5145,7 +5189,7 @@ INSN_ENTRY(trace_opt_ltlt)
|
|
|
5145
5189
|
/* insn trace_opt_and(...)(...)(...) */
|
|
5146
5190
|
INSN_ENTRY(trace_opt_and)
|
|
5147
5191
|
{
|
|
5148
|
-
vm_trace(ec, GET_CFP()
|
|
5192
|
+
vm_trace(ec, GET_CFP());
|
|
5149
5193
|
DISPATCH_ORIGINAL_INSN(opt_and);
|
|
5150
5194
|
END_INSN(trace_opt_and);
|
|
5151
5195
|
}
|
|
@@ -5153,7 +5197,7 @@ INSN_ENTRY(trace_opt_and)
|
|
|
5153
5197
|
/* insn trace_opt_or(...)(...)(...) */
|
|
5154
5198
|
INSN_ENTRY(trace_opt_or)
|
|
5155
5199
|
{
|
|
5156
|
-
vm_trace(ec, GET_CFP()
|
|
5200
|
+
vm_trace(ec, GET_CFP());
|
|
5157
5201
|
DISPATCH_ORIGINAL_INSN(opt_or);
|
|
5158
5202
|
END_INSN(trace_opt_or);
|
|
5159
5203
|
}
|
|
@@ -5161,7 +5205,7 @@ INSN_ENTRY(trace_opt_or)
|
|
|
5161
5205
|
/* insn trace_opt_aref(...)(...)(...) */
|
|
5162
5206
|
INSN_ENTRY(trace_opt_aref)
|
|
5163
5207
|
{
|
|
5164
|
-
vm_trace(ec, GET_CFP()
|
|
5208
|
+
vm_trace(ec, GET_CFP());
|
|
5165
5209
|
DISPATCH_ORIGINAL_INSN(opt_aref);
|
|
5166
5210
|
END_INSN(trace_opt_aref);
|
|
5167
5211
|
}
|
|
@@ -5169,7 +5213,7 @@ INSN_ENTRY(trace_opt_aref)
|
|
|
5169
5213
|
/* insn trace_opt_aset(...)(...)(...) */
|
|
5170
5214
|
INSN_ENTRY(trace_opt_aset)
|
|
5171
5215
|
{
|
|
5172
|
-
vm_trace(ec, GET_CFP()
|
|
5216
|
+
vm_trace(ec, GET_CFP());
|
|
5173
5217
|
DISPATCH_ORIGINAL_INSN(opt_aset);
|
|
5174
5218
|
END_INSN(trace_opt_aset);
|
|
5175
5219
|
}
|
|
@@ -5177,7 +5221,7 @@ INSN_ENTRY(trace_opt_aset)
|
|
|
5177
5221
|
/* insn trace_opt_aset_with(...)(...)(...) */
|
|
5178
5222
|
INSN_ENTRY(trace_opt_aset_with)
|
|
5179
5223
|
{
|
|
5180
|
-
vm_trace(ec, GET_CFP()
|
|
5224
|
+
vm_trace(ec, GET_CFP());
|
|
5181
5225
|
DISPATCH_ORIGINAL_INSN(opt_aset_with);
|
|
5182
5226
|
END_INSN(trace_opt_aset_with);
|
|
5183
5227
|
}
|
|
@@ -5185,7 +5229,7 @@ INSN_ENTRY(trace_opt_aset_with)
|
|
|
5185
5229
|
/* insn trace_opt_aref_with(...)(...)(...) */
|
|
5186
5230
|
INSN_ENTRY(trace_opt_aref_with)
|
|
5187
5231
|
{
|
|
5188
|
-
vm_trace(ec, GET_CFP()
|
|
5232
|
+
vm_trace(ec, GET_CFP());
|
|
5189
5233
|
DISPATCH_ORIGINAL_INSN(opt_aref_with);
|
|
5190
5234
|
END_INSN(trace_opt_aref_with);
|
|
5191
5235
|
}
|
|
@@ -5193,7 +5237,7 @@ INSN_ENTRY(trace_opt_aref_with)
|
|
|
5193
5237
|
/* insn trace_opt_length(...)(...)(...) */
|
|
5194
5238
|
INSN_ENTRY(trace_opt_length)
|
|
5195
5239
|
{
|
|
5196
|
-
vm_trace(ec, GET_CFP()
|
|
5240
|
+
vm_trace(ec, GET_CFP());
|
|
5197
5241
|
DISPATCH_ORIGINAL_INSN(opt_length);
|
|
5198
5242
|
END_INSN(trace_opt_length);
|
|
5199
5243
|
}
|
|
@@ -5201,7 +5245,7 @@ INSN_ENTRY(trace_opt_length)
|
|
|
5201
5245
|
/* insn trace_opt_size(...)(...)(...) */
|
|
5202
5246
|
INSN_ENTRY(trace_opt_size)
|
|
5203
5247
|
{
|
|
5204
|
-
vm_trace(ec, GET_CFP()
|
|
5248
|
+
vm_trace(ec, GET_CFP());
|
|
5205
5249
|
DISPATCH_ORIGINAL_INSN(opt_size);
|
|
5206
5250
|
END_INSN(trace_opt_size);
|
|
5207
5251
|
}
|
|
@@ -5209,7 +5253,7 @@ INSN_ENTRY(trace_opt_size)
|
|
|
5209
5253
|
/* insn trace_opt_empty_p(...)(...)(...) */
|
|
5210
5254
|
INSN_ENTRY(trace_opt_empty_p)
|
|
5211
5255
|
{
|
|
5212
|
-
vm_trace(ec, GET_CFP()
|
|
5256
|
+
vm_trace(ec, GET_CFP());
|
|
5213
5257
|
DISPATCH_ORIGINAL_INSN(opt_empty_p);
|
|
5214
5258
|
END_INSN(trace_opt_empty_p);
|
|
5215
5259
|
}
|
|
@@ -5217,7 +5261,7 @@ INSN_ENTRY(trace_opt_empty_p)
|
|
|
5217
5261
|
/* insn trace_opt_succ(...)(...)(...) */
|
|
5218
5262
|
INSN_ENTRY(trace_opt_succ)
|
|
5219
5263
|
{
|
|
5220
|
-
vm_trace(ec, GET_CFP()
|
|
5264
|
+
vm_trace(ec, GET_CFP());
|
|
5221
5265
|
DISPATCH_ORIGINAL_INSN(opt_succ);
|
|
5222
5266
|
END_INSN(trace_opt_succ);
|
|
5223
5267
|
}
|
|
@@ -5225,7 +5269,7 @@ INSN_ENTRY(trace_opt_succ)
|
|
|
5225
5269
|
/* insn trace_opt_not(...)(...)(...) */
|
|
5226
5270
|
INSN_ENTRY(trace_opt_not)
|
|
5227
5271
|
{
|
|
5228
|
-
vm_trace(ec, GET_CFP()
|
|
5272
|
+
vm_trace(ec, GET_CFP());
|
|
5229
5273
|
DISPATCH_ORIGINAL_INSN(opt_not);
|
|
5230
5274
|
END_INSN(trace_opt_not);
|
|
5231
5275
|
}
|
|
@@ -5233,23 +5277,15 @@ INSN_ENTRY(trace_opt_not)
|
|
|
5233
5277
|
/* insn trace_opt_regexpmatch2(...)(...)(...) */
|
|
5234
5278
|
INSN_ENTRY(trace_opt_regexpmatch2)
|
|
5235
5279
|
{
|
|
5236
|
-
vm_trace(ec, GET_CFP()
|
|
5280
|
+
vm_trace(ec, GET_CFP());
|
|
5237
5281
|
DISPATCH_ORIGINAL_INSN(opt_regexpmatch2);
|
|
5238
5282
|
END_INSN(trace_opt_regexpmatch2);
|
|
5239
5283
|
}
|
|
5240
5284
|
|
|
5241
|
-
/* insn trace_opt_call_c_function(...)(...)(...) */
|
|
5242
|
-
INSN_ENTRY(trace_opt_call_c_function)
|
|
5243
|
-
{
|
|
5244
|
-
vm_trace(ec, GET_CFP(), GET_PC());
|
|
5245
|
-
DISPATCH_ORIGINAL_INSN(opt_call_c_function);
|
|
5246
|
-
END_INSN(trace_opt_call_c_function);
|
|
5247
|
-
}
|
|
5248
|
-
|
|
5249
5285
|
/* insn trace_invokebuiltin(...)(...)(...) */
|
|
5250
5286
|
INSN_ENTRY(trace_invokebuiltin)
|
|
5251
5287
|
{
|
|
5252
|
-
vm_trace(ec, GET_CFP()
|
|
5288
|
+
vm_trace(ec, GET_CFP());
|
|
5253
5289
|
DISPATCH_ORIGINAL_INSN(invokebuiltin);
|
|
5254
5290
|
END_INSN(trace_invokebuiltin);
|
|
5255
5291
|
}
|
|
@@ -5257,7 +5293,7 @@ INSN_ENTRY(trace_invokebuiltin)
|
|
|
5257
5293
|
/* insn trace_opt_invokebuiltin_delegate(...)(...)(...) */
|
|
5258
5294
|
INSN_ENTRY(trace_opt_invokebuiltin_delegate)
|
|
5259
5295
|
{
|
|
5260
|
-
vm_trace(ec, GET_CFP()
|
|
5296
|
+
vm_trace(ec, GET_CFP());
|
|
5261
5297
|
DISPATCH_ORIGINAL_INSN(opt_invokebuiltin_delegate);
|
|
5262
5298
|
END_INSN(trace_opt_invokebuiltin_delegate);
|
|
5263
5299
|
}
|
|
@@ -5265,7 +5301,7 @@ INSN_ENTRY(trace_opt_invokebuiltin_delegate)
|
|
|
5265
5301
|
/* insn trace_opt_invokebuiltin_delegate_leave(...)(...)(...) */
|
|
5266
5302
|
INSN_ENTRY(trace_opt_invokebuiltin_delegate_leave)
|
|
5267
5303
|
{
|
|
5268
|
-
vm_trace(ec, GET_CFP()
|
|
5304
|
+
vm_trace(ec, GET_CFP());
|
|
5269
5305
|
DISPATCH_ORIGINAL_INSN(opt_invokebuiltin_delegate_leave);
|
|
5270
5306
|
END_INSN(trace_opt_invokebuiltin_delegate_leave);
|
|
5271
5307
|
}
|
|
@@ -5273,7 +5309,7 @@ INSN_ENTRY(trace_opt_invokebuiltin_delegate_leave)
|
|
|
5273
5309
|
/* insn trace_getlocal_WC_0(...)(...)(...) */
|
|
5274
5310
|
INSN_ENTRY(trace_getlocal_WC_0)
|
|
5275
5311
|
{
|
|
5276
|
-
vm_trace(ec, GET_CFP()
|
|
5312
|
+
vm_trace(ec, GET_CFP());
|
|
5277
5313
|
DISPATCH_ORIGINAL_INSN(getlocal_WC_0);
|
|
5278
5314
|
END_INSN(trace_getlocal_WC_0);
|
|
5279
5315
|
}
|
|
@@ -5281,7 +5317,7 @@ INSN_ENTRY(trace_getlocal_WC_0)
|
|
|
5281
5317
|
/* insn trace_getlocal_WC_1(...)(...)(...) */
|
|
5282
5318
|
INSN_ENTRY(trace_getlocal_WC_1)
|
|
5283
5319
|
{
|
|
5284
|
-
vm_trace(ec, GET_CFP()
|
|
5320
|
+
vm_trace(ec, GET_CFP());
|
|
5285
5321
|
DISPATCH_ORIGINAL_INSN(getlocal_WC_1);
|
|
5286
5322
|
END_INSN(trace_getlocal_WC_1);
|
|
5287
5323
|
}
|
|
@@ -5289,7 +5325,7 @@ INSN_ENTRY(trace_getlocal_WC_1)
|
|
|
5289
5325
|
/* insn trace_setlocal_WC_0(...)(...)(...) */
|
|
5290
5326
|
INSN_ENTRY(trace_setlocal_WC_0)
|
|
5291
5327
|
{
|
|
5292
|
-
vm_trace(ec, GET_CFP()
|
|
5328
|
+
vm_trace(ec, GET_CFP());
|
|
5293
5329
|
DISPATCH_ORIGINAL_INSN(setlocal_WC_0);
|
|
5294
5330
|
END_INSN(trace_setlocal_WC_0);
|
|
5295
5331
|
}
|
|
@@ -5297,7 +5333,7 @@ INSN_ENTRY(trace_setlocal_WC_0)
|
|
|
5297
5333
|
/* insn trace_setlocal_WC_1(...)(...)(...) */
|
|
5298
5334
|
INSN_ENTRY(trace_setlocal_WC_1)
|
|
5299
5335
|
{
|
|
5300
|
-
vm_trace(ec, GET_CFP()
|
|
5336
|
+
vm_trace(ec, GET_CFP());
|
|
5301
5337
|
DISPATCH_ORIGINAL_INSN(setlocal_WC_1);
|
|
5302
5338
|
END_INSN(trace_setlocal_WC_1);
|
|
5303
5339
|
}
|
|
@@ -5305,7 +5341,7 @@ INSN_ENTRY(trace_setlocal_WC_1)
|
|
|
5305
5341
|
/* insn trace_putobject_INT2FIX_0_(...)(...)(...) */
|
|
5306
5342
|
INSN_ENTRY(trace_putobject_INT2FIX_0_)
|
|
5307
5343
|
{
|
|
5308
|
-
vm_trace(ec, GET_CFP()
|
|
5344
|
+
vm_trace(ec, GET_CFP());
|
|
5309
5345
|
DISPATCH_ORIGINAL_INSN(putobject_INT2FIX_0_);
|
|
5310
5346
|
END_INSN(trace_putobject_INT2FIX_0_);
|
|
5311
5347
|
}
|
|
@@ -5313,7 +5349,7 @@ INSN_ENTRY(trace_putobject_INT2FIX_0_)
|
|
|
5313
5349
|
/* insn trace_putobject_INT2FIX_1_(...)(...)(...) */
|
|
5314
5350
|
INSN_ENTRY(trace_putobject_INT2FIX_1_)
|
|
5315
5351
|
{
|
|
5316
|
-
vm_trace(ec, GET_CFP()
|
|
5352
|
+
vm_trace(ec, GET_CFP());
|
|
5317
5353
|
DISPATCH_ORIGINAL_INSN(putobject_INT2FIX_1_);
|
|
5318
5354
|
END_INSN(trace_putobject_INT2FIX_1_);
|
|
5319
5355
|
}
|