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);
|
|
@@ -189,14 +191,16 @@ INSN_ENTRY(getblockparam)
|
|
|
189
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);
|
|
@@ -312,14 +316,16 @@ INSN_ENTRY(getblockparamproxy)
|
|
|
312
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
|
|
@@ -491,7 +501,7 @@ INSN_ENTRY(setinstancevariable)
|
|
|
491
501
|
END_INSN(setinstancevariable);
|
|
492
502
|
}
|
|
493
503
|
|
|
494
|
-
/* insn getclassvariable(id)()(val) */
|
|
504
|
+
/* insn getclassvariable(id, ic)()(val) */
|
|
495
505
|
INSN_ENTRY(getclassvariable)
|
|
496
506
|
{
|
|
497
507
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -500,30 +510,36 @@ INSN_ENTRY(getclassvariable)
|
|
|
500
510
|
|
|
501
511
|
/* ### Declare and assign variables. ### */
|
|
502
512
|
ID id = (ID)GET_OPERAND(1);
|
|
503
|
-
|
|
513
|
+
IVC ic = (IVC)GET_OPERAND(2);
|
|
514
|
+
# define INSN_ATTR(x) attr_ ## x ## _getclassvariable(id, ic)
|
|
504
515
|
bool leaf = INSN_ATTR(leaf);
|
|
505
516
|
VALUE val;
|
|
506
517
|
|
|
507
518
|
/* ### Instruction preambles. ### */
|
|
508
519
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
509
|
-
SETUP_CANARY();
|
|
520
|
+
SETUP_CANARY(leaf);
|
|
510
521
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
511
522
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, id);
|
|
523
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, ic);
|
|
512
524
|
|
|
513
525
|
/* ### Here we do the instruction body. ### */
|
|
514
526
|
# define NAME_OF_CURRENT_INSN getclassvariable
|
|
515
527
|
# line 238 "insns.def"
|
|
516
528
|
{
|
|
517
|
-
|
|
529
|
+
rb_cref_t * cref = vm_get_cref(GET_EP());
|
|
530
|
+
rb_control_frame_t *cfp = GET_CFP();
|
|
531
|
+
val = vm_getclassvariable(GET_ISEQ(), cref, cfp, id, (ICVARC)ic);
|
|
518
532
|
}
|
|
519
|
-
# line
|
|
533
|
+
# line 534 "vm.inc"
|
|
520
534
|
# undef NAME_OF_CURRENT_INSN
|
|
521
535
|
|
|
522
536
|
/* ### Instruction trailers. ### */
|
|
523
537
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
524
|
-
CHECK_CANARY();
|
|
538
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
525
539
|
INC_SP(INSN_ATTR(sp_inc));
|
|
526
540
|
TOPN(0) = val;
|
|
541
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
542
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
527
543
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
528
544
|
# undef INSN_ATTR
|
|
529
545
|
|
|
@@ -531,7 +547,7 @@ INSN_ENTRY(getclassvariable)
|
|
|
531
547
|
END_INSN(getclassvariable);
|
|
532
548
|
}
|
|
533
549
|
|
|
534
|
-
/* insn setclassvariable(id)(val)() */
|
|
550
|
+
/* insn setclassvariable(id, ic)(val)() */
|
|
535
551
|
INSN_ENTRY(setclassvariable)
|
|
536
552
|
{
|
|
537
553
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -540,29 +556,31 @@ INSN_ENTRY(setclassvariable)
|
|
|
540
556
|
|
|
541
557
|
/* ### Declare and assign variables. ### */
|
|
542
558
|
ID id = (ID)GET_OPERAND(1);
|
|
543
|
-
|
|
559
|
+
IVC ic = (IVC)GET_OPERAND(2);
|
|
560
|
+
# define INSN_ATTR(x) attr_ ## x ## _setclassvariable(id, ic)
|
|
544
561
|
bool leaf = INSN_ATTR(leaf);
|
|
545
562
|
VALUE val = TOPN(0);
|
|
546
563
|
|
|
547
564
|
/* ### Instruction preambles. ### */
|
|
548
565
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
549
|
-
SETUP_CANARY();
|
|
566
|
+
SETUP_CANARY(leaf);
|
|
550
567
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
551
568
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, id);
|
|
569
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, ic);
|
|
552
570
|
|
|
553
571
|
/* ### Here we do the instruction body. ### */
|
|
554
572
|
# define NAME_OF_CURRENT_INSN setclassvariable
|
|
555
|
-
# line
|
|
573
|
+
# line 252 "insns.def"
|
|
556
574
|
{
|
|
557
575
|
vm_ensure_not_refinement_module(GET_SELF());
|
|
558
|
-
|
|
576
|
+
vm_setclassvariable(GET_ISEQ(), vm_get_cref(GET_EP()), GET_CFP(), id, val, (ICVARC)ic);
|
|
559
577
|
}
|
|
560
|
-
# line
|
|
578
|
+
# line 579 "vm.inc"
|
|
561
579
|
# undef NAME_OF_CURRENT_INSN
|
|
562
580
|
|
|
563
581
|
/* ### Instruction trailers. ### */
|
|
564
582
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
565
|
-
CHECK_CANARY();
|
|
583
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
566
584
|
INC_SP(INSN_ATTR(sp_inc));
|
|
567
585
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
568
586
|
# undef INSN_ATTR
|
|
@@ -588,24 +606,26 @@ INSN_ENTRY(getconstant)
|
|
|
588
606
|
|
|
589
607
|
/* ### Instruction preambles. ### */
|
|
590
608
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
591
|
-
SETUP_CANARY();
|
|
609
|
+
SETUP_CANARY(leaf);
|
|
592
610
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
593
611
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, id);
|
|
594
612
|
|
|
595
613
|
/* ### Here we do the instruction body. ### */
|
|
596
614
|
# define NAME_OF_CURRENT_INSN getconstant
|
|
597
|
-
# line
|
|
615
|
+
# line 268 "insns.def"
|
|
598
616
|
{
|
|
599
617
|
val = vm_get_ev_const(ec, klass, id, allow_nil == Qtrue, 0);
|
|
600
618
|
}
|
|
601
|
-
# line
|
|
619
|
+
# line 620 "vm.inc"
|
|
602
620
|
# undef NAME_OF_CURRENT_INSN
|
|
603
621
|
|
|
604
622
|
/* ### Instruction trailers. ### */
|
|
605
623
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
606
|
-
CHECK_CANARY();
|
|
624
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
607
625
|
INC_SP(INSN_ATTR(sp_inc));
|
|
608
626
|
TOPN(0) = val;
|
|
627
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
628
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
609
629
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
610
630
|
# undef INSN_ATTR
|
|
611
631
|
|
|
@@ -629,24 +649,24 @@ INSN_ENTRY(setconstant)
|
|
|
629
649
|
|
|
630
650
|
/* ### Instruction preambles. ### */
|
|
631
651
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
632
|
-
SETUP_CANARY();
|
|
652
|
+
SETUP_CANARY(leaf);
|
|
633
653
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
634
654
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, id);
|
|
635
655
|
|
|
636
656
|
/* ### Here we do the instruction body. ### */
|
|
637
657
|
# define NAME_OF_CURRENT_INSN setconstant
|
|
638
|
-
# line
|
|
658
|
+
# line 284 "insns.def"
|
|
639
659
|
{
|
|
640
660
|
vm_check_if_namespace(cbase);
|
|
641
661
|
vm_ensure_not_refinement_module(GET_SELF());
|
|
642
662
|
rb_const_set(cbase, id, val);
|
|
643
663
|
}
|
|
644
|
-
# line
|
|
664
|
+
# line 665 "vm.inc"
|
|
645
665
|
# undef NAME_OF_CURRENT_INSN
|
|
646
666
|
|
|
647
667
|
/* ### Instruction trailers. ### */
|
|
648
668
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
649
|
-
CHECK_CANARY();
|
|
669
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
650
670
|
INC_SP(INSN_ATTR(sp_inc));
|
|
651
671
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
652
672
|
# undef INSN_ATTR
|
|
@@ -655,7 +675,7 @@ INSN_ENTRY(setconstant)
|
|
|
655
675
|
END_INSN(setconstant);
|
|
656
676
|
}
|
|
657
677
|
|
|
658
|
-
/* insn getglobal(
|
|
678
|
+
/* insn getglobal(gid)()(val) */
|
|
659
679
|
INSN_ENTRY(getglobal)
|
|
660
680
|
{
|
|
661
681
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -663,32 +683,33 @@ INSN_ENTRY(getglobal)
|
|
|
663
683
|
DEBUG_ENTER_INSN("getglobal");
|
|
664
684
|
|
|
665
685
|
/* ### Declare and assign variables. ### */
|
|
666
|
-
|
|
667
|
-
# define INSN_ATTR(x) attr_ ## x ## _getglobal(
|
|
686
|
+
ID gid = (ID)GET_OPERAND(1);
|
|
687
|
+
# define INSN_ATTR(x) attr_ ## x ## _getglobal(gid)
|
|
668
688
|
bool leaf = INSN_ATTR(leaf);
|
|
669
689
|
VALUE val;
|
|
670
690
|
|
|
671
691
|
/* ### Instruction preambles. ### */
|
|
672
692
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
673
|
-
SETUP_CANARY();
|
|
693
|
+
SETUP_CANARY(leaf);
|
|
674
694
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
675
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0,
|
|
695
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, gid);
|
|
676
696
|
|
|
677
697
|
/* ### Here we do the instruction body. ### */
|
|
678
698
|
# define NAME_OF_CURRENT_INSN getglobal
|
|
679
|
-
# line
|
|
699
|
+
# line 297 "insns.def"
|
|
680
700
|
{
|
|
681
|
-
|
|
682
|
-
val = rb_gvar_get(gentry);
|
|
701
|
+
val = rb_gvar_get(gid);
|
|
683
702
|
}
|
|
684
|
-
# line
|
|
703
|
+
# line 704 "vm.inc"
|
|
685
704
|
# undef NAME_OF_CURRENT_INSN
|
|
686
705
|
|
|
687
706
|
/* ### Instruction trailers. ### */
|
|
688
707
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
689
|
-
CHECK_CANARY();
|
|
708
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
690
709
|
INC_SP(INSN_ATTR(sp_inc));
|
|
691
710
|
TOPN(0) = val;
|
|
711
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
712
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
692
713
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
693
714
|
# undef INSN_ATTR
|
|
694
715
|
|
|
@@ -696,7 +717,7 @@ INSN_ENTRY(getglobal)
|
|
|
696
717
|
END_INSN(getglobal);
|
|
697
718
|
}
|
|
698
719
|
|
|
699
|
-
/* insn setglobal(
|
|
720
|
+
/* insn setglobal(gid)(val)() */
|
|
700
721
|
INSN_ENTRY(setglobal)
|
|
701
722
|
{
|
|
702
723
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -704,30 +725,29 @@ INSN_ENTRY(setglobal)
|
|
|
704
725
|
DEBUG_ENTER_INSN("setglobal");
|
|
705
726
|
|
|
706
727
|
/* ### Declare and assign variables. ### */
|
|
707
|
-
|
|
708
|
-
# define INSN_ATTR(x) attr_ ## x ## _setglobal(
|
|
728
|
+
ID gid = (ID)GET_OPERAND(1);
|
|
729
|
+
# define INSN_ATTR(x) attr_ ## x ## _setglobal(gid)
|
|
709
730
|
bool leaf = INSN_ATTR(leaf);
|
|
710
731
|
VALUE val = TOPN(0);
|
|
711
732
|
|
|
712
733
|
/* ### Instruction preambles. ### */
|
|
713
734
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
714
|
-
SETUP_CANARY();
|
|
735
|
+
SETUP_CANARY(leaf);
|
|
715
736
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
716
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0,
|
|
737
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, gid);
|
|
717
738
|
|
|
718
739
|
/* ### Here we do the instruction body. ### */
|
|
719
740
|
# define NAME_OF_CURRENT_INSN setglobal
|
|
720
|
-
# line
|
|
741
|
+
# line 308 "insns.def"
|
|
721
742
|
{
|
|
722
|
-
|
|
723
|
-
rb_gvar_set(gentry, val);
|
|
743
|
+
rb_gvar_set(gid, val);
|
|
724
744
|
}
|
|
725
|
-
# line
|
|
745
|
+
# line 746 "vm.inc"
|
|
726
746
|
# undef NAME_OF_CURRENT_INSN
|
|
727
747
|
|
|
728
748
|
/* ### Instruction trailers. ### */
|
|
729
749
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
730
|
-
CHECK_CANARY();
|
|
750
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
731
751
|
INC_SP(INSN_ATTR(sp_inc));
|
|
732
752
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
733
753
|
# undef INSN_ATTR
|
|
@@ -750,7 +770,7 @@ INSN_ENTRY(putnil)
|
|
|
750
770
|
|
|
751
771
|
/* ### Instruction preambles. ### */
|
|
752
772
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
753
|
-
SETUP_CANARY();
|
|
773
|
+
SETUP_CANARY(leaf);
|
|
754
774
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
755
775
|
|
|
756
776
|
/* ### Here we do the instruction body. ### */
|
|
@@ -759,14 +779,16 @@ INSN_ENTRY(putnil)
|
|
|
759
779
|
{
|
|
760
780
|
val = Qnil;
|
|
761
781
|
}
|
|
762
|
-
# line
|
|
782
|
+
# line 783 "vm.inc"
|
|
763
783
|
# undef NAME_OF_CURRENT_INSN
|
|
764
784
|
|
|
765
785
|
/* ### Instruction trailers. ### */
|
|
766
786
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
767
|
-
CHECK_CANARY();
|
|
787
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
768
788
|
INC_SP(INSN_ATTR(sp_inc));
|
|
769
789
|
TOPN(0) = val;
|
|
790
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
791
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
770
792
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
771
793
|
# undef INSN_ATTR
|
|
772
794
|
|
|
@@ -788,7 +810,7 @@ INSN_ENTRY(putself)
|
|
|
788
810
|
|
|
789
811
|
/* ### Instruction preambles. ### */
|
|
790
812
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
791
|
-
SETUP_CANARY();
|
|
813
|
+
SETUP_CANARY(leaf);
|
|
792
814
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
793
815
|
|
|
794
816
|
/* ### Here we do the instruction body. ### */
|
|
@@ -797,14 +819,16 @@ INSN_ENTRY(putself)
|
|
|
797
819
|
{
|
|
798
820
|
val = GET_SELF();
|
|
799
821
|
}
|
|
800
|
-
# line
|
|
822
|
+
# line 823 "vm.inc"
|
|
801
823
|
# undef NAME_OF_CURRENT_INSN
|
|
802
824
|
|
|
803
825
|
/* ### Instruction trailers. ### */
|
|
804
826
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
805
|
-
CHECK_CANARY();
|
|
827
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
806
828
|
INC_SP(INSN_ATTR(sp_inc));
|
|
807
829
|
TOPN(0) = val;
|
|
830
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
831
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
808
832
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
809
833
|
# undef INSN_ATTR
|
|
810
834
|
|
|
@@ -833,6 +857,8 @@ INSN_ENTRY(putobject)
|
|
|
833
857
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
834
858
|
INC_SP(INSN_ATTR(sp_inc));
|
|
835
859
|
TOPN(0) = val;
|
|
860
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
861
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
836
862
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
837
863
|
# undef INSN_ATTR
|
|
838
864
|
|
|
@@ -855,7 +881,7 @@ INSN_ENTRY(putspecialobject)
|
|
|
855
881
|
|
|
856
882
|
/* ### Instruction preambles. ### */
|
|
857
883
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
858
|
-
SETUP_CANARY();
|
|
884
|
+
SETUP_CANARY(leaf);
|
|
859
885
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
860
886
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, value_type);
|
|
861
887
|
|
|
@@ -868,14 +894,16 @@ INSN_ENTRY(putspecialobject)
|
|
|
868
894
|
type = (enum vm_special_object_type)value_type;
|
|
869
895
|
val = vm_get_special_object(GET_EP(), type);
|
|
870
896
|
}
|
|
871
|
-
# line
|
|
897
|
+
# line 898 "vm.inc"
|
|
872
898
|
# undef NAME_OF_CURRENT_INSN
|
|
873
899
|
|
|
874
900
|
/* ### Instruction trailers. ### */
|
|
875
901
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
876
|
-
CHECK_CANARY();
|
|
902
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
877
903
|
INC_SP(INSN_ATTR(sp_inc));
|
|
878
904
|
TOPN(0) = val;
|
|
905
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
906
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
879
907
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
880
908
|
# undef INSN_ATTR
|
|
881
909
|
|
|
@@ -898,7 +926,7 @@ INSN_ENTRY(putstring)
|
|
|
898
926
|
|
|
899
927
|
/* ### Instruction preambles. ### */
|
|
900
928
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
901
|
-
SETUP_CANARY();
|
|
929
|
+
SETUP_CANARY(leaf);
|
|
902
930
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
903
931
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, str);
|
|
904
932
|
|
|
@@ -906,16 +934,18 @@ INSN_ENTRY(putstring)
|
|
|
906
934
|
# define NAME_OF_CURRENT_INSN putstring
|
|
907
935
|
# line 367 "insns.def"
|
|
908
936
|
{
|
|
909
|
-
val =
|
|
937
|
+
val = rb_ec_str_resurrect(ec, str);
|
|
910
938
|
}
|
|
911
|
-
# line
|
|
939
|
+
# line 940 "vm.inc"
|
|
912
940
|
# undef NAME_OF_CURRENT_INSN
|
|
913
941
|
|
|
914
942
|
/* ### Instruction trailers. ### */
|
|
915
943
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
916
|
-
CHECK_CANARY();
|
|
944
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
917
945
|
INC_SP(INSN_ATTR(sp_inc));
|
|
918
946
|
TOPN(0) = val;
|
|
947
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
948
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
919
949
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
920
950
|
# undef INSN_ATTR
|
|
921
951
|
|
|
@@ -938,7 +968,7 @@ INSN_ENTRY(concatstrings)
|
|
|
938
968
|
|
|
939
969
|
/* ### Instruction preambles. ### */
|
|
940
970
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
941
|
-
SETUP_CANARY();
|
|
971
|
+
SETUP_CANARY(leaf);
|
|
942
972
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
943
973
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, num);
|
|
944
974
|
|
|
@@ -948,14 +978,16 @@ INSN_ENTRY(concatstrings)
|
|
|
948
978
|
{
|
|
949
979
|
val = rb_str_concat_literals(num, STACK_ADDR_FROM_TOP(num));
|
|
950
980
|
}
|
|
951
|
-
# line
|
|
981
|
+
# line 982 "vm.inc"
|
|
952
982
|
# undef NAME_OF_CURRENT_INSN
|
|
953
983
|
|
|
954
984
|
/* ### Instruction trailers. ### */
|
|
955
985
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
956
|
-
CHECK_CANARY();
|
|
986
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
957
987
|
INC_SP(INSN_ATTR(sp_inc));
|
|
958
988
|
TOPN(0) = val;
|
|
989
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
990
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
959
991
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
960
992
|
# undef INSN_ATTR
|
|
961
993
|
|
|
@@ -978,7 +1010,7 @@ INSN_ENTRY(tostring)
|
|
|
978
1010
|
|
|
979
1011
|
/* ### Instruction preambles. ### */
|
|
980
1012
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
981
|
-
SETUP_CANARY();
|
|
1013
|
+
SETUP_CANARY(leaf);
|
|
982
1014
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
983
1015
|
|
|
984
1016
|
/* ### Here we do the instruction body. ### */
|
|
@@ -987,14 +1019,16 @@ INSN_ENTRY(tostring)
|
|
|
987
1019
|
{
|
|
988
1020
|
val = rb_obj_as_string_result(str, val);
|
|
989
1021
|
}
|
|
990
|
-
# line
|
|
1022
|
+
# line 1023 "vm.inc"
|
|
991
1023
|
# undef NAME_OF_CURRENT_INSN
|
|
992
1024
|
|
|
993
1025
|
/* ### Instruction trailers. ### */
|
|
994
1026
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
995
|
-
CHECK_CANARY();
|
|
1027
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
996
1028
|
INC_SP(INSN_ATTR(sp_inc));
|
|
997
1029
|
TOPN(0) = val;
|
|
1030
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1031
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
998
1032
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
999
1033
|
# undef INSN_ATTR
|
|
1000
1034
|
|
|
@@ -1002,46 +1036,6 @@ INSN_ENTRY(tostring)
|
|
|
1002
1036
|
END_INSN(tostring);
|
|
1003
1037
|
}
|
|
1004
1038
|
|
|
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
1039
|
/* insn toregexp(opt, cnt)(...)(val) */
|
|
1046
1040
|
INSN_ENTRY(toregexp)
|
|
1047
1041
|
{
|
|
@@ -1058,27 +1052,29 @@ INSN_ENTRY(toregexp)
|
|
|
1058
1052
|
|
|
1059
1053
|
/* ### Instruction preambles. ### */
|
|
1060
1054
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1061
|
-
SETUP_CANARY();
|
|
1055
|
+
SETUP_CANARY(leaf);
|
|
1062
1056
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1063
1057
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, opt);
|
|
1064
1058
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cnt);
|
|
1065
1059
|
|
|
1066
1060
|
/* ### Here we do the instruction body. ### */
|
|
1067
1061
|
# define NAME_OF_CURRENT_INSN toregexp
|
|
1068
|
-
# line
|
|
1062
|
+
# line 407 "insns.def"
|
|
1069
1063
|
{
|
|
1070
1064
|
const VALUE ary = rb_ary_tmp_new_from_values(0, cnt, STACK_ADDR_FROM_TOP(cnt));
|
|
1071
1065
|
val = rb_reg_new_ary(ary, (int)opt);
|
|
1072
1066
|
rb_ary_clear(ary);
|
|
1073
1067
|
}
|
|
1074
|
-
# line
|
|
1068
|
+
# line 1069 "vm.inc"
|
|
1075
1069
|
# undef NAME_OF_CURRENT_INSN
|
|
1076
1070
|
|
|
1077
1071
|
/* ### Instruction trailers. ### */
|
|
1078
1072
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1079
|
-
CHECK_CANARY();
|
|
1073
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1080
1074
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1081
1075
|
TOPN(0) = val;
|
|
1076
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1077
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1082
1078
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1083
1079
|
# undef INSN_ATTR
|
|
1084
1080
|
|
|
@@ -1101,23 +1097,25 @@ INSN_ENTRY(intern)
|
|
|
1101
1097
|
|
|
1102
1098
|
/* ### Instruction preambles. ### */
|
|
1103
1099
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1104
|
-
SETUP_CANARY();
|
|
1100
|
+
SETUP_CANARY(leaf);
|
|
1105
1101
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1106
1102
|
|
|
1107
1103
|
/* ### Here we do the instruction body. ### */
|
|
1108
1104
|
# define NAME_OF_CURRENT_INSN intern
|
|
1109
|
-
# line
|
|
1105
|
+
# line 419 "insns.def"
|
|
1110
1106
|
{
|
|
1111
1107
|
sym = rb_str_intern(str);
|
|
1112
1108
|
}
|
|
1113
|
-
# line
|
|
1109
|
+
# line 1110 "vm.inc"
|
|
1114
1110
|
# undef NAME_OF_CURRENT_INSN
|
|
1115
1111
|
|
|
1116
1112
|
/* ### Instruction trailers. ### */
|
|
1117
1113
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1118
|
-
CHECK_CANARY();
|
|
1114
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1119
1115
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1120
1116
|
TOPN(0) = sym;
|
|
1117
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1118
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1121
1119
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1122
1120
|
# undef INSN_ATTR
|
|
1123
1121
|
|
|
@@ -1140,24 +1138,26 @@ INSN_ENTRY(newarray)
|
|
|
1140
1138
|
|
|
1141
1139
|
/* ### Instruction preambles. ### */
|
|
1142
1140
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1143
|
-
SETUP_CANARY();
|
|
1141
|
+
SETUP_CANARY(leaf);
|
|
1144
1142
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1145
1143
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, num);
|
|
1146
1144
|
|
|
1147
1145
|
/* ### Here we do the instruction body. ### */
|
|
1148
1146
|
# define NAME_OF_CURRENT_INSN newarray
|
|
1149
|
-
# line
|
|
1147
|
+
# line 430 "insns.def"
|
|
1150
1148
|
{
|
|
1151
|
-
val =
|
|
1149
|
+
val = rb_ec_ary_new_from_values(ec, num, STACK_ADDR_FROM_TOP(num));
|
|
1152
1150
|
}
|
|
1153
|
-
# line
|
|
1151
|
+
# line 1152 "vm.inc"
|
|
1154
1152
|
# undef NAME_OF_CURRENT_INSN
|
|
1155
1153
|
|
|
1156
1154
|
/* ### Instruction trailers. ### */
|
|
1157
1155
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1158
|
-
CHECK_CANARY();
|
|
1156
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1159
1157
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1160
1158
|
TOPN(0) = val;
|
|
1159
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1160
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1161
1161
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1162
1162
|
# undef INSN_ATTR
|
|
1163
1163
|
|
|
@@ -1180,13 +1180,13 @@ INSN_ENTRY(newarraykwsplat)
|
|
|
1180
1180
|
|
|
1181
1181
|
/* ### Instruction preambles. ### */
|
|
1182
1182
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1183
|
-
SETUP_CANARY();
|
|
1183
|
+
SETUP_CANARY(leaf);
|
|
1184
1184
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1185
1185
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, num);
|
|
1186
1186
|
|
|
1187
1187
|
/* ### Here we do the instruction body. ### */
|
|
1188
1188
|
# define NAME_OF_CURRENT_INSN newarraykwsplat
|
|
1189
|
-
# line
|
|
1189
|
+
# line 445 "insns.def"
|
|
1190
1190
|
{
|
|
1191
1191
|
if (RHASH_EMPTY_P(*STACK_ADDR_FROM_TOP(1))) {
|
|
1192
1192
|
val = rb_ary_new4(num-1, STACK_ADDR_FROM_TOP(num));
|
|
@@ -1200,9 +1200,11 @@ INSN_ENTRY(newarraykwsplat)
|
|
|
1200
1200
|
|
|
1201
1201
|
/* ### Instruction trailers. ### */
|
|
1202
1202
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1203
|
-
CHECK_CANARY();
|
|
1203
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1204
1204
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1205
1205
|
TOPN(0) = val;
|
|
1206
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1207
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1206
1208
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1207
1209
|
# undef INSN_ATTR
|
|
1208
1210
|
|
|
@@ -1225,25 +1227,27 @@ INSN_ENTRY(duparray)
|
|
|
1225
1227
|
|
|
1226
1228
|
/* ### Instruction preambles. ### */
|
|
1227
1229
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1228
|
-
SETUP_CANARY();
|
|
1230
|
+
SETUP_CANARY(leaf);
|
|
1229
1231
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1230
1232
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, ary);
|
|
1231
1233
|
|
|
1232
1234
|
/* ### Here we do the instruction body. ### */
|
|
1233
1235
|
# define NAME_OF_CURRENT_INSN duparray
|
|
1234
|
-
# line
|
|
1236
|
+
# line 460 "insns.def"
|
|
1235
1237
|
{
|
|
1236
1238
|
RUBY_DTRACE_CREATE_HOOK(ARRAY, RARRAY_LEN(ary));
|
|
1237
1239
|
val = rb_ary_resurrect(ary);
|
|
1238
1240
|
}
|
|
1239
|
-
# line
|
|
1241
|
+
# line 1242 "vm.inc"
|
|
1240
1242
|
# undef NAME_OF_CURRENT_INSN
|
|
1241
1243
|
|
|
1242
1244
|
/* ### Instruction trailers. ### */
|
|
1243
1245
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1244
|
-
CHECK_CANARY();
|
|
1246
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1245
1247
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1246
1248
|
TOPN(0) = val;
|
|
1249
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1250
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1247
1251
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1248
1252
|
# undef INSN_ATTR
|
|
1249
1253
|
|
|
@@ -1266,25 +1270,27 @@ INSN_ENTRY(duphash)
|
|
|
1266
1270
|
|
|
1267
1271
|
/* ### Instruction preambles. ### */
|
|
1268
1272
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1269
|
-
SETUP_CANARY();
|
|
1273
|
+
SETUP_CANARY(leaf);
|
|
1270
1274
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1271
1275
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, hash);
|
|
1272
1276
|
|
|
1273
1277
|
/* ### Here we do the instruction body. ### */
|
|
1274
1278
|
# define NAME_OF_CURRENT_INSN duphash
|
|
1275
|
-
# line
|
|
1279
|
+
# line 471 "insns.def"
|
|
1276
1280
|
{
|
|
1277
1281
|
RUBY_DTRACE_CREATE_HOOK(HASH, RHASH_SIZE(hash) << 1);
|
|
1278
1282
|
val = rb_hash_resurrect(hash);
|
|
1279
1283
|
}
|
|
1280
|
-
# line
|
|
1284
|
+
# line 1285 "vm.inc"
|
|
1281
1285
|
# undef NAME_OF_CURRENT_INSN
|
|
1282
1286
|
|
|
1283
1287
|
/* ### Instruction trailers. ### */
|
|
1284
1288
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1285
|
-
CHECK_CANARY();
|
|
1289
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1286
1290
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1287
1291
|
TOPN(0) = val;
|
|
1292
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1293
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1288
1294
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1289
1295
|
# undef INSN_ATTR
|
|
1290
1296
|
|
|
@@ -1314,11 +1320,11 @@ INSN_ENTRY(expandarray)
|
|
|
1314
1320
|
|
|
1315
1321
|
/* ### Here we do the instruction body. ### */
|
|
1316
1322
|
# define NAME_OF_CURRENT_INSN expandarray
|
|
1317
|
-
# line
|
|
1323
|
+
# line 492 "insns.def"
|
|
1318
1324
|
{
|
|
1319
1325
|
vm_expandarray(GET_SP(), ary, num, (int)flag);
|
|
1320
1326
|
}
|
|
1321
|
-
# line
|
|
1327
|
+
# line 1328 "vm.inc"
|
|
1322
1328
|
# undef NAME_OF_CURRENT_INSN
|
|
1323
1329
|
|
|
1324
1330
|
/* ### Instruction trailers. ### */
|
|
@@ -1347,23 +1353,25 @@ INSN_ENTRY(concatarray)
|
|
|
1347
1353
|
|
|
1348
1354
|
/* ### Instruction preambles. ### */
|
|
1349
1355
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1350
|
-
SETUP_CANARY();
|
|
1356
|
+
SETUP_CANARY(leaf);
|
|
1351
1357
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1352
1358
|
|
|
1353
1359
|
/* ### Here we do the instruction body. ### */
|
|
1354
1360
|
# define NAME_OF_CURRENT_INSN concatarray
|
|
1355
|
-
# line
|
|
1361
|
+
# line 503 "insns.def"
|
|
1356
1362
|
{
|
|
1357
1363
|
ary = vm_concat_array(ary1, ary2);
|
|
1358
1364
|
}
|
|
1359
|
-
# line
|
|
1365
|
+
# line 1366 "vm.inc"
|
|
1360
1366
|
# undef NAME_OF_CURRENT_INSN
|
|
1361
1367
|
|
|
1362
1368
|
/* ### Instruction trailers. ### */
|
|
1363
1369
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1364
|
-
CHECK_CANARY();
|
|
1370
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1365
1371
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1366
1372
|
TOPN(0) = ary;
|
|
1373
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1374
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1367
1375
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1368
1376
|
# undef INSN_ATTR
|
|
1369
1377
|
|
|
@@ -1387,24 +1395,26 @@ INSN_ENTRY(splatarray)
|
|
|
1387
1395
|
|
|
1388
1396
|
/* ### Instruction preambles. ### */
|
|
1389
1397
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1390
|
-
SETUP_CANARY();
|
|
1398
|
+
SETUP_CANARY(leaf);
|
|
1391
1399
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1392
1400
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, flag);
|
|
1393
1401
|
|
|
1394
1402
|
/* ### Here we do the instruction body. ### */
|
|
1395
1403
|
# define NAME_OF_CURRENT_INSN splatarray
|
|
1396
|
-
# line
|
|
1404
|
+
# line 514 "insns.def"
|
|
1397
1405
|
{
|
|
1398
1406
|
obj = vm_splat_array(flag, ary);
|
|
1399
1407
|
}
|
|
1400
|
-
# line
|
|
1408
|
+
# line 1409 "vm.inc"
|
|
1401
1409
|
# undef NAME_OF_CURRENT_INSN
|
|
1402
1410
|
|
|
1403
1411
|
/* ### Instruction trailers. ### */
|
|
1404
1412
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1405
|
-
CHECK_CANARY();
|
|
1413
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1406
1414
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1407
1415
|
TOPN(0) = obj;
|
|
1416
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1417
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1408
1418
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1409
1419
|
# undef INSN_ATTR
|
|
1410
1420
|
|
|
@@ -1427,30 +1437,34 @@ INSN_ENTRY(newhash)
|
|
|
1427
1437
|
|
|
1428
1438
|
/* ### Instruction preambles. ### */
|
|
1429
1439
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1430
|
-
SETUP_CANARY();
|
|
1440
|
+
SETUP_CANARY(leaf);
|
|
1431
1441
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1432
1442
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, num);
|
|
1433
1443
|
|
|
1434
1444
|
/* ### Here we do the instruction body. ### */
|
|
1435
1445
|
# define NAME_OF_CURRENT_INSN newhash
|
|
1436
|
-
# line
|
|
1446
|
+
# line 526 "insns.def"
|
|
1437
1447
|
{
|
|
1438
1448
|
RUBY_DTRACE_CREATE_HOOK(HASH, num);
|
|
1439
1449
|
|
|
1440
|
-
val = rb_hash_new_with_size(num / 2);
|
|
1441
|
-
|
|
1442
1450
|
if (num) {
|
|
1451
|
+
val = rb_hash_new_with_size(num / 2);
|
|
1443
1452
|
rb_hash_bulk_insert(num, STACK_ADDR_FROM_TOP(num), val);
|
|
1444
1453
|
}
|
|
1454
|
+
else {
|
|
1455
|
+
val = rb_hash_new();
|
|
1456
|
+
}
|
|
1445
1457
|
}
|
|
1446
|
-
# line
|
|
1458
|
+
# line 1459 "vm.inc"
|
|
1447
1459
|
# undef NAME_OF_CURRENT_INSN
|
|
1448
1460
|
|
|
1449
1461
|
/* ### Instruction trailers. ### */
|
|
1450
1462
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1451
|
-
CHECK_CANARY();
|
|
1463
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1452
1464
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1453
1465
|
TOPN(0) = val;
|
|
1466
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1467
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1454
1468
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1455
1469
|
# undef INSN_ATTR
|
|
1456
1470
|
|
|
@@ -1475,24 +1489,26 @@ INSN_ENTRY(newrange)
|
|
|
1475
1489
|
|
|
1476
1490
|
/* ### Instruction preambles. ### */
|
|
1477
1491
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1478
|
-
SETUP_CANARY();
|
|
1492
|
+
SETUP_CANARY(leaf);
|
|
1479
1493
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1480
1494
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, flag);
|
|
1481
1495
|
|
|
1482
1496
|
/* ### Here we do the instruction body. ### */
|
|
1483
1497
|
# define NAME_OF_CURRENT_INSN newrange
|
|
1484
|
-
# line
|
|
1498
|
+
# line 546 "insns.def"
|
|
1485
1499
|
{
|
|
1486
1500
|
val = rb_range_new(low, high, (int)flag);
|
|
1487
1501
|
}
|
|
1488
|
-
# line
|
|
1502
|
+
# line 1503 "vm.inc"
|
|
1489
1503
|
# undef NAME_OF_CURRENT_INSN
|
|
1490
1504
|
|
|
1491
1505
|
/* ### Instruction trailers. ### */
|
|
1492
1506
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1493
|
-
CHECK_CANARY();
|
|
1507
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1494
1508
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1495
1509
|
TOPN(0) = val;
|
|
1510
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1511
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1496
1512
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1497
1513
|
# undef INSN_ATTR
|
|
1498
1514
|
|
|
@@ -1514,22 +1530,22 @@ INSN_ENTRY(pop)
|
|
|
1514
1530
|
|
|
1515
1531
|
/* ### Instruction preambles. ### */
|
|
1516
1532
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1517
|
-
SETUP_CANARY();
|
|
1533
|
+
SETUP_CANARY(leaf);
|
|
1518
1534
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1519
1535
|
|
|
1520
1536
|
/* ### Here we do the instruction body. ### */
|
|
1521
1537
|
# define NAME_OF_CURRENT_INSN pop
|
|
1522
|
-
# line
|
|
1538
|
+
# line 560 "insns.def"
|
|
1523
1539
|
{
|
|
1524
1540
|
(void)val;
|
|
1525
1541
|
/* none */
|
|
1526
1542
|
}
|
|
1527
|
-
# line
|
|
1543
|
+
# line 1544 "vm.inc"
|
|
1528
1544
|
# undef NAME_OF_CURRENT_INSN
|
|
1529
1545
|
|
|
1530
1546
|
/* ### Instruction trailers. ### */
|
|
1531
1547
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1532
|
-
CHECK_CANARY();
|
|
1548
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1533
1549
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1534
1550
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1535
1551
|
# undef INSN_ATTR
|
|
@@ -1554,24 +1570,28 @@ INSN_ENTRY(dup)
|
|
|
1554
1570
|
|
|
1555
1571
|
/* ### Instruction preambles. ### */
|
|
1556
1572
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1557
|
-
SETUP_CANARY();
|
|
1573
|
+
SETUP_CANARY(leaf);
|
|
1558
1574
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1559
1575
|
|
|
1560
1576
|
/* ### Here we do the instruction body. ### */
|
|
1561
1577
|
# define NAME_OF_CURRENT_INSN dup
|
|
1562
|
-
# line
|
|
1578
|
+
# line 571 "insns.def"
|
|
1563
1579
|
{
|
|
1564
1580
|
val1 = val2 = val;
|
|
1565
1581
|
}
|
|
1566
|
-
# line
|
|
1582
|
+
# line 1583 "vm.inc"
|
|
1567
1583
|
# undef NAME_OF_CURRENT_INSN
|
|
1568
1584
|
|
|
1569
1585
|
/* ### Instruction trailers. ### */
|
|
1570
1586
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1571
|
-
CHECK_CANARY();
|
|
1587
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1572
1588
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1573
1589
|
TOPN(0) = val2;
|
|
1590
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1591
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1574
1592
|
TOPN(1) = val1;
|
|
1593
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(1), T_NONE));
|
|
1594
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(1), T_MOVED));
|
|
1575
1595
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1576
1596
|
# undef INSN_ATTR
|
|
1577
1597
|
|
|
@@ -1598,14 +1618,14 @@ INSN_ENTRY(dupn)
|
|
|
1598
1618
|
|
|
1599
1619
|
/* ### Here we do the instruction body. ### */
|
|
1600
1620
|
# define NAME_OF_CURRENT_INSN dupn
|
|
1601
|
-
# line
|
|
1621
|
+
# line 582 "insns.def"
|
|
1602
1622
|
{
|
|
1603
1623
|
void *dst = GET_SP();
|
|
1604
1624
|
void *src = STACK_ADDR_FROM_TOP(n);
|
|
1605
1625
|
|
|
1606
1626
|
MEMCPY(dst, src, VALUE, n);
|
|
1607
1627
|
}
|
|
1608
|
-
# line
|
|
1628
|
+
# line 1629 "vm.inc"
|
|
1609
1629
|
# undef NAME_OF_CURRENT_INSN
|
|
1610
1630
|
|
|
1611
1631
|
/* ### Instruction trailers. ### */
|
|
@@ -1639,7 +1659,11 @@ INSN_ENTRY(swap)
|
|
|
1639
1659
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1640
1660
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1641
1661
|
TOPN(0) = val;
|
|
1662
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1663
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1642
1664
|
TOPN(1) = obj;
|
|
1665
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(1), T_NONE));
|
|
1666
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(1), T_MOVED));
|
|
1643
1667
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1644
1668
|
# undef INSN_ATTR
|
|
1645
1669
|
|
|
@@ -1647,50 +1671,6 @@ INSN_ENTRY(swap)
|
|
|
1647
1671
|
END_INSN(swap);
|
|
1648
1672
|
}
|
|
1649
1673
|
|
|
1650
|
-
/* insn reverse(n)(...)(...) */
|
|
1651
|
-
INSN_ENTRY(reverse)
|
|
1652
|
-
{
|
|
1653
|
-
/* ### Declare that we have just entered into an instruction. ### */
|
|
1654
|
-
START_OF_ORIGINAL_INSN(reverse);
|
|
1655
|
-
DEBUG_ENTER_INSN("reverse");
|
|
1656
|
-
|
|
1657
|
-
/* ### Declare and assign variables. ### */
|
|
1658
|
-
rb_num_t n = (rb_num_t)GET_OPERAND(1);
|
|
1659
|
-
# define INSN_ATTR(x) attr_ ## x ## _reverse(n)
|
|
1660
|
-
bool leaf = INSN_ATTR(leaf);
|
|
1661
|
-
|
|
1662
|
-
/* ### Instruction preambles. ### */
|
|
1663
|
-
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1664
|
-
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1665
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, n);
|
|
1666
|
-
|
|
1667
|
-
/* ### Here we do the instruction body. ### */
|
|
1668
|
-
# define NAME_OF_CURRENT_INSN reverse
|
|
1669
|
-
# line 614 "insns.def"
|
|
1670
|
-
{
|
|
1671
|
-
rb_num_t i;
|
|
1672
|
-
VALUE *sp = STACK_ADDR_FROM_TOP(n);
|
|
1673
|
-
|
|
1674
|
-
for (i=0; i<n/2; i++) {
|
|
1675
|
-
VALUE v0 = sp[i];
|
|
1676
|
-
VALUE v1 = TOPN(i);
|
|
1677
|
-
sp[i] = v1;
|
|
1678
|
-
TOPN(i) = v0;
|
|
1679
|
-
}
|
|
1680
|
-
}
|
|
1681
|
-
# line 1682 "vm.inc"
|
|
1682
|
-
# undef NAME_OF_CURRENT_INSN
|
|
1683
|
-
|
|
1684
|
-
/* ### Instruction trailers. ### */
|
|
1685
|
-
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1686
|
-
INC_SP(INSN_ATTR(sp_inc));
|
|
1687
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1688
|
-
# undef INSN_ATTR
|
|
1689
|
-
|
|
1690
|
-
/* ### Leave the instruction. ### */
|
|
1691
|
-
END_INSN(reverse);
|
|
1692
|
-
}
|
|
1693
|
-
|
|
1694
1674
|
/* insn topn(n)(...)(val) */
|
|
1695
1675
|
INSN_ENTRY(topn)
|
|
1696
1676
|
{
|
|
@@ -1706,24 +1686,26 @@ INSN_ENTRY(topn)
|
|
|
1706
1686
|
|
|
1707
1687
|
/* ### Instruction preambles. ### */
|
|
1708
1688
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1709
|
-
SETUP_CANARY();
|
|
1689
|
+
SETUP_CANARY(leaf);
|
|
1710
1690
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1711
1691
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, n);
|
|
1712
1692
|
|
|
1713
1693
|
/* ### Here we do the instruction body. ### */
|
|
1714
1694
|
# define NAME_OF_CURRENT_INSN topn
|
|
1715
|
-
# line
|
|
1695
|
+
# line 617 "insns.def"
|
|
1716
1696
|
{
|
|
1717
1697
|
val = TOPN(n);
|
|
1718
1698
|
}
|
|
1719
|
-
# line
|
|
1699
|
+
# line 1700 "vm.inc"
|
|
1720
1700
|
# undef NAME_OF_CURRENT_INSN
|
|
1721
1701
|
|
|
1722
1702
|
/* ### Instruction trailers. ### */
|
|
1723
1703
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1724
|
-
CHECK_CANARY();
|
|
1704
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1725
1705
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1726
1706
|
TOPN(0) = val;
|
|
1707
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1708
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1727
1709
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1728
1710
|
# undef INSN_ATTR
|
|
1729
1711
|
|
|
@@ -1746,24 +1728,26 @@ INSN_ENTRY(setn)
|
|
|
1746
1728
|
|
|
1747
1729
|
/* ### Instruction preambles. ### */
|
|
1748
1730
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1749
|
-
SETUP_CANARY();
|
|
1731
|
+
SETUP_CANARY(leaf);
|
|
1750
1732
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1751
1733
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, n);
|
|
1752
1734
|
|
|
1753
1735
|
/* ### Here we do the instruction body. ### */
|
|
1754
1736
|
# define NAME_OF_CURRENT_INSN setn
|
|
1755
|
-
# line
|
|
1737
|
+
# line 628 "insns.def"
|
|
1756
1738
|
{
|
|
1757
1739
|
TOPN(n) = val;
|
|
1758
1740
|
}
|
|
1759
|
-
# line
|
|
1741
|
+
# line 1742 "vm.inc"
|
|
1760
1742
|
# undef NAME_OF_CURRENT_INSN
|
|
1761
1743
|
|
|
1762
1744
|
/* ### Instruction trailers. ### */
|
|
1763
1745
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1764
|
-
CHECK_CANARY();
|
|
1746
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1765
1747
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1766
1748
|
TOPN(0) = val;
|
|
1749
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1750
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1767
1751
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1768
1752
|
# undef INSN_ATTR
|
|
1769
1753
|
|
|
@@ -1798,7 +1782,7 @@ INSN_ENTRY(adjuststack)
|
|
|
1798
1782
|
END_INSN(adjuststack);
|
|
1799
1783
|
}
|
|
1800
1784
|
|
|
1801
|
-
/* insn defined(op_type, obj,
|
|
1785
|
+
/* insn defined(op_type, obj, pushval)(v)(val) */
|
|
1802
1786
|
INSN_ENTRY(defined)
|
|
1803
1787
|
{
|
|
1804
1788
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -1808,34 +1792,39 @@ INSN_ENTRY(defined)
|
|
|
1808
1792
|
/* ### Declare and assign variables. ### */
|
|
1809
1793
|
rb_num_t op_type = (rb_num_t)GET_OPERAND(1);
|
|
1810
1794
|
VALUE obj = (VALUE)GET_OPERAND(2);
|
|
1811
|
-
VALUE
|
|
1812
|
-
# define INSN_ATTR(x) attr_ ## x ## _defined(op_type, obj,
|
|
1795
|
+
VALUE pushval = (VALUE)GET_OPERAND(3);
|
|
1796
|
+
# define INSN_ATTR(x) attr_ ## x ## _defined(op_type, obj, pushval)
|
|
1813
1797
|
bool leaf = INSN_ATTR(leaf);
|
|
1814
1798
|
VALUE v = TOPN(0);
|
|
1815
1799
|
VALUE val;
|
|
1816
1800
|
|
|
1817
1801
|
/* ### Instruction preambles. ### */
|
|
1818
1802
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1819
|
-
SETUP_CANARY();
|
|
1803
|
+
SETUP_CANARY(leaf);
|
|
1820
1804
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1821
1805
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, op_type);
|
|
1822
1806
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, obj);
|
|
1823
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 2,
|
|
1807
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 2, pushval);
|
|
1824
1808
|
|
|
1825
1809
|
/* ### Here we do the instruction body. ### */
|
|
1826
1810
|
# define NAME_OF_CURRENT_INSN defined
|
|
1827
|
-
# line
|
|
1811
|
+
# line 654 "insns.def"
|
|
1828
1812
|
{
|
|
1829
|
-
val =
|
|
1813
|
+
val = Qnil;
|
|
1814
|
+
if (vm_defined(ec, GET_CFP(), op_type, obj, v)) {
|
|
1815
|
+
val = pushval;
|
|
1816
|
+
}
|
|
1830
1817
|
}
|
|
1831
|
-
# line
|
|
1818
|
+
# line 1819 "vm.inc"
|
|
1832
1819
|
# undef NAME_OF_CURRENT_INSN
|
|
1833
1820
|
|
|
1834
1821
|
/* ### Instruction trailers. ### */
|
|
1835
1822
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1836
|
-
CHECK_CANARY();
|
|
1823
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1837
1824
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1838
1825
|
TOPN(0) = val;
|
|
1826
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1827
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1839
1828
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1840
1829
|
# undef INSN_ATTR
|
|
1841
1830
|
|
|
@@ -1860,24 +1849,26 @@ INSN_ENTRY(checkmatch)
|
|
|
1860
1849
|
|
|
1861
1850
|
/* ### Instruction preambles. ### */
|
|
1862
1851
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1863
|
-
SETUP_CANARY();
|
|
1852
|
+
SETUP_CANARY(leaf);
|
|
1864
1853
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1865
1854
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, flag);
|
|
1866
1855
|
|
|
1867
1856
|
/* ### Here we do the instruction body. ### */
|
|
1868
1857
|
# define NAME_OF_CURRENT_INSN checkmatch
|
|
1869
|
-
# line
|
|
1858
|
+
# line 674 "insns.def"
|
|
1870
1859
|
{
|
|
1871
1860
|
result = vm_check_match(ec, target, pattern, flag);
|
|
1872
1861
|
}
|
|
1873
|
-
# line
|
|
1862
|
+
# line 1863 "vm.inc"
|
|
1874
1863
|
# undef NAME_OF_CURRENT_INSN
|
|
1875
1864
|
|
|
1876
1865
|
/* ### Instruction trailers. ### */
|
|
1877
1866
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1878
|
-
CHECK_CANARY();
|
|
1867
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1879
1868
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1880
1869
|
TOPN(0) = result;
|
|
1870
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1871
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1881
1872
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1882
1873
|
# undef INSN_ATTR
|
|
1883
1874
|
|
|
@@ -1901,25 +1892,27 @@ INSN_ENTRY(checkkeyword)
|
|
|
1901
1892
|
|
|
1902
1893
|
/* ### Instruction preambles. ### */
|
|
1903
1894
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1904
|
-
SETUP_CANARY();
|
|
1895
|
+
SETUP_CANARY(leaf);
|
|
1905
1896
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1906
1897
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, kw_bits_index);
|
|
1907
1898
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, keyword_index);
|
|
1908
1899
|
|
|
1909
1900
|
/* ### Here we do the instruction body. ### */
|
|
1910
1901
|
# define NAME_OF_CURRENT_INSN checkkeyword
|
|
1911
|
-
# line
|
|
1902
|
+
# line 684 "insns.def"
|
|
1912
1903
|
{
|
|
1913
1904
|
ret = vm_check_keyword(kw_bits_index, keyword_index, GET_EP());
|
|
1914
1905
|
}
|
|
1915
|
-
# line
|
|
1906
|
+
# line 1907 "vm.inc"
|
|
1916
1907
|
# undef NAME_OF_CURRENT_INSN
|
|
1917
1908
|
|
|
1918
1909
|
/* ### Instruction trailers. ### */
|
|
1919
1910
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1920
|
-
CHECK_CANARY();
|
|
1911
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1921
1912
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1922
1913
|
TOPN(0) = ret;
|
|
1914
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1915
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1923
1916
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1924
1917
|
# undef INSN_ATTR
|
|
1925
1918
|
|
|
@@ -1943,24 +1936,26 @@ INSN_ENTRY(checktype)
|
|
|
1943
1936
|
|
|
1944
1937
|
/* ### Instruction preambles. ### */
|
|
1945
1938
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1946
|
-
SETUP_CANARY();
|
|
1939
|
+
SETUP_CANARY(leaf);
|
|
1947
1940
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1948
1941
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, type);
|
|
1949
1942
|
|
|
1950
1943
|
/* ### Here we do the instruction body. ### */
|
|
1951
1944
|
# define NAME_OF_CURRENT_INSN checktype
|
|
1952
|
-
# line
|
|
1945
|
+
# line 694 "insns.def"
|
|
1953
1946
|
{
|
|
1954
1947
|
ret = (TYPE(val) == (int)type) ? Qtrue : Qfalse;
|
|
1955
1948
|
}
|
|
1956
|
-
# line
|
|
1949
|
+
# line 1950 "vm.inc"
|
|
1957
1950
|
# undef NAME_OF_CURRENT_INSN
|
|
1958
1951
|
|
|
1959
1952
|
/* ### Instruction trailers. ### */
|
|
1960
1953
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
1961
|
-
CHECK_CANARY();
|
|
1954
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
1962
1955
|
INC_SP(INSN_ATTR(sp_inc));
|
|
1963
1956
|
TOPN(0) = ret;
|
|
1957
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
1958
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
1964
1959
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
1965
1960
|
# undef INSN_ATTR
|
|
1966
1961
|
|
|
@@ -1968,48 +1963,6 @@ INSN_ENTRY(checktype)
|
|
|
1968
1963
|
END_INSN(checktype);
|
|
1969
1964
|
}
|
|
1970
1965
|
|
|
1971
|
-
/* insn methodref(id)(val)(ret) */
|
|
1972
|
-
INSN_ENTRY(methodref)
|
|
1973
|
-
{
|
|
1974
|
-
/* ### Declare that we have just entered into an instruction. ### */
|
|
1975
|
-
START_OF_ORIGINAL_INSN(methodref);
|
|
1976
|
-
DEBUG_ENTER_INSN("methodref");
|
|
1977
|
-
|
|
1978
|
-
/* ### Declare and assign variables. ### */
|
|
1979
|
-
ID id = (ID)GET_OPERAND(1);
|
|
1980
|
-
# define INSN_ATTR(x) attr_ ## x ## _methodref(id)
|
|
1981
|
-
bool leaf = INSN_ATTR(leaf);
|
|
1982
|
-
VALUE val = TOPN(0);
|
|
1983
|
-
VALUE ret;
|
|
1984
|
-
|
|
1985
|
-
/* ### Instruction preambles. ### */
|
|
1986
|
-
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
1987
|
-
SETUP_CANARY();
|
|
1988
|
-
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
1989
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, id);
|
|
1990
|
-
|
|
1991
|
-
/* ### Here we do the instruction body. ### */
|
|
1992
|
-
# define NAME_OF_CURRENT_INSN methodref
|
|
1993
|
-
# line 728 "insns.def"
|
|
1994
|
-
{
|
|
1995
|
-
ret = rb_obj_method(val, ID2SYM(id));
|
|
1996
|
-
RB_OBJ_FREEZE_RAW(ret);
|
|
1997
|
-
}
|
|
1998
|
-
# line 1999 "vm.inc"
|
|
1999
|
-
# undef NAME_OF_CURRENT_INSN
|
|
2000
|
-
|
|
2001
|
-
/* ### Instruction trailers. ### */
|
|
2002
|
-
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2003
|
-
CHECK_CANARY();
|
|
2004
|
-
INC_SP(INSN_ATTR(sp_inc));
|
|
2005
|
-
TOPN(0) = ret;
|
|
2006
|
-
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2007
|
-
# undef INSN_ATTR
|
|
2008
|
-
|
|
2009
|
-
/* ### Leave the instruction. ### */
|
|
2010
|
-
END_INSN(methodref);
|
|
2011
|
-
}
|
|
2012
|
-
|
|
2013
1966
|
/* insn defineclass(id, class_iseq, flags)(cbase, super)(val) */
|
|
2014
1967
|
INSN_ENTRY(defineclass)
|
|
2015
1968
|
{
|
|
@@ -2030,7 +1983,7 @@ INSN_ENTRY(defineclass)
|
|
|
2030
1983
|
/* ### Instruction preambles. ### */
|
|
2031
1984
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2032
1985
|
POPN(INSN_ATTR(popn));
|
|
2033
|
-
SETUP_CANARY();
|
|
1986
|
+
SETUP_CANARY(leaf);
|
|
2034
1987
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2035
1988
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, id);
|
|
2036
1989
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, class_iseq);
|
|
@@ -2038,7 +1991,7 @@ INSN_ENTRY(defineclass)
|
|
|
2038
1991
|
|
|
2039
1992
|
/* ### Here we do the instruction body. ### */
|
|
2040
1993
|
# define NAME_OF_CURRENT_INSN defineclass
|
|
2041
|
-
# line
|
|
1994
|
+
# line 710 "insns.def"
|
|
2042
1995
|
{
|
|
2043
1996
|
VALUE klass = vm_find_or_create_class_by_id(id, flags, cbase, super);
|
|
2044
1997
|
|
|
@@ -2054,12 +2007,12 @@ INSN_ENTRY(defineclass)
|
|
|
2054
2007
|
RESTORE_REGS();
|
|
2055
2008
|
NEXT_INSN();
|
|
2056
2009
|
}
|
|
2057
|
-
# line
|
|
2010
|
+
# line 2011 "vm.inc"
|
|
2058
2011
|
# undef NAME_OF_CURRENT_INSN
|
|
2059
2012
|
|
|
2060
2013
|
/* ### Instruction trailers. ### */
|
|
2061
2014
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2062
|
-
CHECK_CANARY();
|
|
2015
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2063
2016
|
PUSH(val);
|
|
2064
2017
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2065
2018
|
# undef INSN_ATTR
|
|
@@ -2084,23 +2037,23 @@ INSN_ENTRY(definemethod)
|
|
|
2084
2037
|
/* ### Instruction preambles. ### */
|
|
2085
2038
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2086
2039
|
POPN(INSN_ATTR(popn));
|
|
2087
|
-
SETUP_CANARY();
|
|
2040
|
+
SETUP_CANARY(leaf);
|
|
2088
2041
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2089
2042
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, id);
|
|
2090
2043
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, iseq);
|
|
2091
2044
|
|
|
2092
2045
|
/* ### Here we do the instruction body. ### */
|
|
2093
2046
|
# define NAME_OF_CURRENT_INSN definemethod
|
|
2094
|
-
# line
|
|
2047
|
+
# line 731 "insns.def"
|
|
2095
2048
|
{
|
|
2096
2049
|
vm_define_method(ec, Qnil, id, (VALUE)iseq, FALSE);
|
|
2097
2050
|
}
|
|
2098
|
-
# line
|
|
2051
|
+
# line 2052 "vm.inc"
|
|
2099
2052
|
# undef NAME_OF_CURRENT_INSN
|
|
2100
2053
|
|
|
2101
2054
|
/* ### Instruction trailers. ### */
|
|
2102
2055
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2103
|
-
CHECK_CANARY();
|
|
2056
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2104
2057
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2105
2058
|
# undef INSN_ATTR
|
|
2106
2059
|
|
|
@@ -2125,23 +2078,23 @@ INSN_ENTRY(definesmethod)
|
|
|
2125
2078
|
/* ### Instruction preambles. ### */
|
|
2126
2079
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2127
2080
|
POPN(INSN_ATTR(popn));
|
|
2128
|
-
SETUP_CANARY();
|
|
2081
|
+
SETUP_CANARY(leaf);
|
|
2129
2082
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2130
2083
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, id);
|
|
2131
2084
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, iseq);
|
|
2132
2085
|
|
|
2133
2086
|
/* ### Here we do the instruction body. ### */
|
|
2134
2087
|
# define NAME_OF_CURRENT_INSN definesmethod
|
|
2135
|
-
# line
|
|
2088
|
+
# line 740 "insns.def"
|
|
2136
2089
|
{
|
|
2137
2090
|
vm_define_method(ec, obj, id, (VALUE)iseq, TRUE);
|
|
2138
2091
|
}
|
|
2139
|
-
# line
|
|
2092
|
+
# line 2093 "vm.inc"
|
|
2140
2093
|
# undef NAME_OF_CURRENT_INSN
|
|
2141
2094
|
|
|
2142
2095
|
/* ### Instruction trailers. ### */
|
|
2143
2096
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2144
|
-
CHECK_CANARY();
|
|
2097
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2145
2098
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2146
2099
|
# undef INSN_ATTR
|
|
2147
2100
|
|
|
@@ -2149,7 +2102,7 @@ INSN_ENTRY(definesmethod)
|
|
|
2149
2102
|
END_INSN(definesmethod);
|
|
2150
2103
|
}
|
|
2151
2104
|
|
|
2152
|
-
/* insn send(
|
|
2105
|
+
/* insn send(cd, blockiseq)(...)(val) */
|
|
2153
2106
|
INSN_ENTRY(send)
|
|
2154
2107
|
{
|
|
2155
2108
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -2157,40 +2110,38 @@ INSN_ENTRY(send)
|
|
|
2157
2110
|
DEBUG_ENTER_INSN("send");
|
|
2158
2111
|
|
|
2159
2112
|
/* ### Declare and assign variables. ### */
|
|
2160
|
-
|
|
2161
|
-
|
|
2162
|
-
|
|
2163
|
-
# define INSN_ATTR(x) attr_ ## x ## _send(ci, cc, blockiseq)
|
|
2113
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
2114
|
+
ISEQ blockiseq = (ISEQ)GET_OPERAND(2);
|
|
2115
|
+
# define INSN_ATTR(x) attr_ ## x ## _send(cd, blockiseq)
|
|
2164
2116
|
bool leaf = INSN_ATTR(leaf);
|
|
2165
2117
|
VALUE val;
|
|
2166
2118
|
|
|
2167
2119
|
/* ### Instruction preambles. ### */
|
|
2168
2120
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2169
2121
|
POPN(INSN_ATTR(popn));
|
|
2170
|
-
SETUP_CANARY();
|
|
2122
|
+
SETUP_CANARY(leaf);
|
|
2171
2123
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2172
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0,
|
|
2173
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1,
|
|
2174
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 2, blockiseq);
|
|
2124
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
2125
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, blockiseq);
|
|
2175
2126
|
|
|
2176
2127
|
/* ### Here we do the instruction body. ### */
|
|
2177
2128
|
# define NAME_OF_CURRENT_INSN send
|
|
2178
|
-
# line
|
|
2129
|
+
# line 756 "insns.def"
|
|
2179
2130
|
{
|
|
2180
|
-
VALUE bh = vm_caller_setup_arg_block(ec, GET_CFP(), ci, blockiseq, false);
|
|
2181
|
-
val = vm_sendish(ec, GET_CFP(),
|
|
2131
|
+
VALUE bh = vm_caller_setup_arg_block(ec, GET_CFP(), cd->ci, blockiseq, false);
|
|
2132
|
+
val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_method);
|
|
2182
2133
|
|
|
2183
2134
|
if (val == Qundef) {
|
|
2184
2135
|
RESTORE_REGS();
|
|
2185
2136
|
NEXT_INSN();
|
|
2186
2137
|
}
|
|
2187
2138
|
}
|
|
2188
|
-
# line
|
|
2139
|
+
# line 2140 "vm.inc"
|
|
2189
2140
|
# undef NAME_OF_CURRENT_INSN
|
|
2190
2141
|
|
|
2191
2142
|
/* ### Instruction trailers. ### */
|
|
2192
2143
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2193
|
-
CHECK_CANARY();
|
|
2144
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2194
2145
|
PUSH(val);
|
|
2195
2146
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2196
2147
|
# undef INSN_ATTR
|
|
@@ -2199,7 +2150,7 @@ INSN_ENTRY(send)
|
|
|
2199
2150
|
END_INSN(send);
|
|
2200
2151
|
}
|
|
2201
2152
|
|
|
2202
|
-
/* insn opt_send_without_block(
|
|
2153
|
+
/* insn opt_send_without_block(cd)(...)(val) */
|
|
2203
2154
|
INSN_ENTRY(opt_send_without_block)
|
|
2204
2155
|
{
|
|
2205
2156
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -2207,38 +2158,36 @@ INSN_ENTRY(opt_send_without_block)
|
|
|
2207
2158
|
DEBUG_ENTER_INSN("opt_send_without_block");
|
|
2208
2159
|
|
|
2209
2160
|
/* ### Declare and assign variables. ### */
|
|
2210
|
-
|
|
2211
|
-
|
|
2212
|
-
# define INSN_ATTR(x) attr_ ## x ## _opt_send_without_block(ci, cc)
|
|
2161
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
2162
|
+
# define INSN_ATTR(x) attr_ ## x ## _opt_send_without_block(cd)
|
|
2213
2163
|
bool leaf = INSN_ATTR(leaf);
|
|
2214
2164
|
VALUE val;
|
|
2215
2165
|
|
|
2216
2166
|
/* ### Instruction preambles. ### */
|
|
2217
2167
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2218
2168
|
POPN(INSN_ATTR(popn));
|
|
2219
|
-
SETUP_CANARY();
|
|
2169
|
+
SETUP_CANARY(leaf);
|
|
2220
2170
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2221
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0,
|
|
2222
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cc);
|
|
2171
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
2223
2172
|
|
|
2224
2173
|
/* ### Here we do the instruction body. ### */
|
|
2225
2174
|
# define NAME_OF_CURRENT_INSN opt_send_without_block
|
|
2226
|
-
# line
|
|
2175
|
+
# line 775 "insns.def"
|
|
2227
2176
|
{
|
|
2228
2177
|
VALUE bh = VM_BLOCK_HANDLER_NONE;
|
|
2229
|
-
val = vm_sendish(ec, GET_CFP(),
|
|
2178
|
+
val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_method);
|
|
2230
2179
|
|
|
2231
2180
|
if (val == Qundef) {
|
|
2232
2181
|
RESTORE_REGS();
|
|
2233
2182
|
NEXT_INSN();
|
|
2234
2183
|
}
|
|
2235
2184
|
}
|
|
2236
|
-
# line
|
|
2185
|
+
# line 2186 "vm.inc"
|
|
2237
2186
|
# undef NAME_OF_CURRENT_INSN
|
|
2238
2187
|
|
|
2239
2188
|
/* ### Instruction trailers. ### */
|
|
2240
2189
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2241
|
-
CHECK_CANARY();
|
|
2190
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2242
2191
|
PUSH(val);
|
|
2243
2192
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2244
2193
|
# undef INSN_ATTR
|
|
@@ -2247,7 +2196,7 @@ INSN_ENTRY(opt_send_without_block)
|
|
|
2247
2196
|
END_INSN(opt_send_without_block);
|
|
2248
2197
|
}
|
|
2249
2198
|
|
|
2250
|
-
/* insn opt_str_freeze(str,
|
|
2199
|
+
/* insn opt_str_freeze(str, cd)()(val) */
|
|
2251
2200
|
INSN_ENTRY(opt_str_freeze)
|
|
2252
2201
|
{
|
|
2253
2202
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -2256,23 +2205,21 @@ INSN_ENTRY(opt_str_freeze)
|
|
|
2256
2205
|
|
|
2257
2206
|
/* ### Declare and assign variables. ### */
|
|
2258
2207
|
VALUE str = (VALUE)GET_OPERAND(1);
|
|
2259
|
-
|
|
2260
|
-
|
|
2261
|
-
# define INSN_ATTR(x) attr_ ## x ## _opt_str_freeze(str, ci, cc)
|
|
2208
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(2);
|
|
2209
|
+
# define INSN_ATTR(x) attr_ ## x ## _opt_str_freeze(str, cd)
|
|
2262
2210
|
bool leaf = INSN_ATTR(leaf);
|
|
2263
2211
|
VALUE val;
|
|
2264
2212
|
|
|
2265
2213
|
/* ### Instruction preambles. ### */
|
|
2266
2214
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2267
|
-
SETUP_CANARY();
|
|
2215
|
+
SETUP_CANARY(leaf);
|
|
2268
2216
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2269
2217
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, str);
|
|
2270
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1,
|
|
2271
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 2, cc);
|
|
2218
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cd);
|
|
2272
2219
|
|
|
2273
2220
|
/* ### Here we do the instruction body. ### */
|
|
2274
2221
|
# define NAME_OF_CURRENT_INSN opt_str_freeze
|
|
2275
|
-
# line
|
|
2222
|
+
# line 790 "insns.def"
|
|
2276
2223
|
{
|
|
2277
2224
|
val = vm_opt_str_freeze(str, BOP_FREEZE, idFreeze);
|
|
2278
2225
|
|
|
@@ -2281,14 +2228,16 @@ INSN_ENTRY(opt_str_freeze)
|
|
|
2281
2228
|
CALL_SIMPLE_METHOD();
|
|
2282
2229
|
}
|
|
2283
2230
|
}
|
|
2284
|
-
# line
|
|
2231
|
+
# line 2232 "vm.inc"
|
|
2285
2232
|
# undef NAME_OF_CURRENT_INSN
|
|
2286
2233
|
|
|
2287
2234
|
/* ### Instruction trailers. ### */
|
|
2288
2235
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2289
|
-
CHECK_CANARY();
|
|
2236
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2290
2237
|
INC_SP(INSN_ATTR(sp_inc));
|
|
2291
2238
|
TOPN(0) = val;
|
|
2239
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
2240
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
2292
2241
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2293
2242
|
# undef INSN_ATTR
|
|
2294
2243
|
|
|
@@ -2296,7 +2245,7 @@ INSN_ENTRY(opt_str_freeze)
|
|
|
2296
2245
|
END_INSN(opt_str_freeze);
|
|
2297
2246
|
}
|
|
2298
2247
|
|
|
2299
|
-
/* insn opt_nil_p(
|
|
2248
|
+
/* insn opt_nil_p(cd)(recv)(val) */
|
|
2300
2249
|
INSN_ENTRY(opt_nil_p)
|
|
2301
2250
|
{
|
|
2302
2251
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -2304,38 +2253,38 @@ INSN_ENTRY(opt_nil_p)
|
|
|
2304
2253
|
DEBUG_ENTER_INSN("opt_nil_p");
|
|
2305
2254
|
|
|
2306
2255
|
/* ### Declare and assign variables. ### */
|
|
2307
|
-
|
|
2308
|
-
|
|
2309
|
-
# define INSN_ATTR(x) attr_ ## x ## _opt_nil_p(ci, cc)
|
|
2256
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
2257
|
+
# define INSN_ATTR(x) attr_ ## x ## _opt_nil_p(cd)
|
|
2310
2258
|
bool leaf = INSN_ATTR(leaf);
|
|
2311
2259
|
VALUE recv = TOPN(0);
|
|
2312
2260
|
VALUE val;
|
|
2313
2261
|
|
|
2314
2262
|
/* ### Instruction preambles. ### */
|
|
2315
2263
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2316
|
-
SETUP_CANARY();
|
|
2264
|
+
SETUP_CANARY(leaf);
|
|
2317
2265
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2318
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0,
|
|
2319
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cc);
|
|
2266
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
2320
2267
|
|
|
2321
2268
|
/* ### Here we do the instruction body. ### */
|
|
2322
2269
|
# define NAME_OF_CURRENT_INSN opt_nil_p
|
|
2323
|
-
# line
|
|
2270
|
+
# line 805 "insns.def"
|
|
2324
2271
|
{
|
|
2325
|
-
val = vm_opt_nil_p(
|
|
2272
|
+
val = vm_opt_nil_p(GET_ISEQ(), cd, recv);
|
|
2326
2273
|
|
|
2327
2274
|
if (val == Qundef) {
|
|
2328
2275
|
CALL_SIMPLE_METHOD();
|
|
2329
2276
|
}
|
|
2330
2277
|
}
|
|
2331
|
-
# line
|
|
2278
|
+
# line 2279 "vm.inc"
|
|
2332
2279
|
# undef NAME_OF_CURRENT_INSN
|
|
2333
2280
|
|
|
2334
2281
|
/* ### Instruction trailers. ### */
|
|
2335
2282
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2336
|
-
CHECK_CANARY();
|
|
2283
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2337
2284
|
INC_SP(INSN_ATTR(sp_inc));
|
|
2338
2285
|
TOPN(0) = val;
|
|
2286
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
2287
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
2339
2288
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2340
2289
|
# undef INSN_ATTR
|
|
2341
2290
|
|
|
@@ -2343,7 +2292,7 @@ INSN_ENTRY(opt_nil_p)
|
|
|
2343
2292
|
END_INSN(opt_nil_p);
|
|
2344
2293
|
}
|
|
2345
2294
|
|
|
2346
|
-
/* insn opt_str_uminus(str,
|
|
2295
|
+
/* insn opt_str_uminus(str, cd)()(val) */
|
|
2347
2296
|
INSN_ENTRY(opt_str_uminus)
|
|
2348
2297
|
{
|
|
2349
2298
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -2352,23 +2301,21 @@ INSN_ENTRY(opt_str_uminus)
|
|
|
2352
2301
|
|
|
2353
2302
|
/* ### Declare and assign variables. ### */
|
|
2354
2303
|
VALUE str = (VALUE)GET_OPERAND(1);
|
|
2355
|
-
|
|
2356
|
-
|
|
2357
|
-
# define INSN_ATTR(x) attr_ ## x ## _opt_str_uminus(str, ci, cc)
|
|
2304
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(2);
|
|
2305
|
+
# define INSN_ATTR(x) attr_ ## x ## _opt_str_uminus(str, cd)
|
|
2358
2306
|
bool leaf = INSN_ATTR(leaf);
|
|
2359
2307
|
VALUE val;
|
|
2360
2308
|
|
|
2361
2309
|
/* ### Instruction preambles. ### */
|
|
2362
2310
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2363
|
-
SETUP_CANARY();
|
|
2311
|
+
SETUP_CANARY(leaf);
|
|
2364
2312
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2365
2313
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, str);
|
|
2366
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1,
|
|
2367
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 2, cc);
|
|
2314
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cd);
|
|
2368
2315
|
|
|
2369
2316
|
/* ### Here we do the instruction body. ### */
|
|
2370
2317
|
# define NAME_OF_CURRENT_INSN opt_str_uminus
|
|
2371
|
-
# line
|
|
2318
|
+
# line 818 "insns.def"
|
|
2372
2319
|
{
|
|
2373
2320
|
val = vm_opt_str_freeze(str, BOP_UMINUS, idUMinus);
|
|
2374
2321
|
|
|
@@ -2377,14 +2324,16 @@ INSN_ENTRY(opt_str_uminus)
|
|
|
2377
2324
|
CALL_SIMPLE_METHOD();
|
|
2378
2325
|
}
|
|
2379
2326
|
}
|
|
2380
|
-
# line
|
|
2327
|
+
# line 2328 "vm.inc"
|
|
2381
2328
|
# undef NAME_OF_CURRENT_INSN
|
|
2382
2329
|
|
|
2383
2330
|
/* ### Instruction trailers. ### */
|
|
2384
2331
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2385
|
-
CHECK_CANARY();
|
|
2332
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2386
2333
|
INC_SP(INSN_ATTR(sp_inc));
|
|
2387
2334
|
TOPN(0) = val;
|
|
2335
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
2336
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
2388
2337
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2389
2338
|
# undef INSN_ATTR
|
|
2390
2339
|
|
|
@@ -2407,24 +2356,26 @@ INSN_ENTRY(opt_newarray_max)
|
|
|
2407
2356
|
|
|
2408
2357
|
/* ### Instruction preambles. ### */
|
|
2409
2358
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2410
|
-
SETUP_CANARY();
|
|
2359
|
+
SETUP_CANARY(leaf);
|
|
2411
2360
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2412
2361
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, num);
|
|
2413
2362
|
|
|
2414
2363
|
/* ### Here we do the instruction body. ### */
|
|
2415
2364
|
# define NAME_OF_CURRENT_INSN opt_newarray_max
|
|
2416
|
-
# line
|
|
2365
|
+
# line 838 "insns.def"
|
|
2417
2366
|
{
|
|
2418
|
-
val = vm_opt_newarray_max(num, STACK_ADDR_FROM_TOP(num));
|
|
2367
|
+
val = vm_opt_newarray_max(ec, num, STACK_ADDR_FROM_TOP(num));
|
|
2419
2368
|
}
|
|
2420
|
-
# line
|
|
2369
|
+
# line 2370 "vm.inc"
|
|
2421
2370
|
# undef NAME_OF_CURRENT_INSN
|
|
2422
2371
|
|
|
2423
2372
|
/* ### Instruction trailers. ### */
|
|
2424
2373
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2425
|
-
CHECK_CANARY();
|
|
2374
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2426
2375
|
INC_SP(INSN_ATTR(sp_inc));
|
|
2427
2376
|
TOPN(0) = val;
|
|
2377
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
2378
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
2428
2379
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2429
2380
|
# undef INSN_ATTR
|
|
2430
2381
|
|
|
@@ -2447,24 +2398,26 @@ INSN_ENTRY(opt_newarray_min)
|
|
|
2447
2398
|
|
|
2448
2399
|
/* ### Instruction preambles. ### */
|
|
2449
2400
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2450
|
-
SETUP_CANARY();
|
|
2401
|
+
SETUP_CANARY(leaf);
|
|
2451
2402
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2452
2403
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, num);
|
|
2453
2404
|
|
|
2454
2405
|
/* ### Here we do the instruction body. ### */
|
|
2455
2406
|
# define NAME_OF_CURRENT_INSN opt_newarray_min
|
|
2456
|
-
# line
|
|
2407
|
+
# line 850 "insns.def"
|
|
2457
2408
|
{
|
|
2458
|
-
val = vm_opt_newarray_min(num, STACK_ADDR_FROM_TOP(num));
|
|
2409
|
+
val = vm_opt_newarray_min(ec, num, STACK_ADDR_FROM_TOP(num));
|
|
2459
2410
|
}
|
|
2460
|
-
# line
|
|
2411
|
+
# line 2412 "vm.inc"
|
|
2461
2412
|
# undef NAME_OF_CURRENT_INSN
|
|
2462
2413
|
|
|
2463
2414
|
/* ### Instruction trailers. ### */
|
|
2464
2415
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2465
|
-
CHECK_CANARY();
|
|
2416
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2466
2417
|
INC_SP(INSN_ATTR(sp_inc));
|
|
2467
2418
|
TOPN(0) = val;
|
|
2419
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
2420
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
2468
2421
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2469
2422
|
# undef INSN_ATTR
|
|
2470
2423
|
|
|
@@ -2472,7 +2425,7 @@ INSN_ENTRY(opt_newarray_min)
|
|
|
2472
2425
|
END_INSN(opt_newarray_min);
|
|
2473
2426
|
}
|
|
2474
2427
|
|
|
2475
|
-
/* insn invokesuper(
|
|
2428
|
+
/* insn invokesuper(cd, blockiseq)(...)(val) */
|
|
2476
2429
|
INSN_ENTRY(invokesuper)
|
|
2477
2430
|
{
|
|
2478
2431
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -2480,40 +2433,38 @@ INSN_ENTRY(invokesuper)
|
|
|
2480
2433
|
DEBUG_ENTER_INSN("invokesuper");
|
|
2481
2434
|
|
|
2482
2435
|
/* ### Declare and assign variables. ### */
|
|
2483
|
-
|
|
2484
|
-
|
|
2485
|
-
|
|
2486
|
-
# define INSN_ATTR(x) attr_ ## x ## _invokesuper(ci, cc, blockiseq)
|
|
2436
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
2437
|
+
ISEQ blockiseq = (ISEQ)GET_OPERAND(2);
|
|
2438
|
+
# define INSN_ATTR(x) attr_ ## x ## _invokesuper(cd, blockiseq)
|
|
2487
2439
|
bool leaf = INSN_ATTR(leaf);
|
|
2488
2440
|
VALUE val;
|
|
2489
2441
|
|
|
2490
2442
|
/* ### Instruction preambles. ### */
|
|
2491
2443
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2492
2444
|
POPN(INSN_ATTR(popn));
|
|
2493
|
-
SETUP_CANARY();
|
|
2445
|
+
SETUP_CANARY(leaf);
|
|
2494
2446
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2495
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0,
|
|
2496
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1,
|
|
2497
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 2, blockiseq);
|
|
2447
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
2448
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, blockiseq);
|
|
2498
2449
|
|
|
2499
2450
|
/* ### Here we do the instruction body. ### */
|
|
2500
2451
|
# define NAME_OF_CURRENT_INSN invokesuper
|
|
2501
|
-
# line
|
|
2452
|
+
# line 862 "insns.def"
|
|
2502
2453
|
{
|
|
2503
|
-
VALUE bh = vm_caller_setup_arg_block(ec, GET_CFP(), ci, blockiseq, true);
|
|
2504
|
-
val = vm_sendish(ec, GET_CFP(),
|
|
2454
|
+
VALUE bh = vm_caller_setup_arg_block(ec, GET_CFP(), cd->ci, blockiseq, true);
|
|
2455
|
+
val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_super);
|
|
2505
2456
|
|
|
2506
2457
|
if (val == Qundef) {
|
|
2507
2458
|
RESTORE_REGS();
|
|
2508
2459
|
NEXT_INSN();
|
|
2509
2460
|
}
|
|
2510
2461
|
}
|
|
2511
|
-
# line
|
|
2462
|
+
# line 2463 "vm.inc"
|
|
2512
2463
|
# undef NAME_OF_CURRENT_INSN
|
|
2513
2464
|
|
|
2514
2465
|
/* ### Instruction trailers. ### */
|
|
2515
2466
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2516
|
-
CHECK_CANARY();
|
|
2467
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2517
2468
|
PUSH(val);
|
|
2518
2469
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2519
2470
|
# undef INSN_ATTR
|
|
@@ -2522,7 +2473,7 @@ INSN_ENTRY(invokesuper)
|
|
|
2522
2473
|
END_INSN(invokesuper);
|
|
2523
2474
|
}
|
|
2524
2475
|
|
|
2525
|
-
/* insn invokeblock(
|
|
2476
|
+
/* insn invokeblock(cd)(...)(val) */
|
|
2526
2477
|
INSN_ENTRY(invokeblock)
|
|
2527
2478
|
{
|
|
2528
2479
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -2530,40 +2481,36 @@ INSN_ENTRY(invokeblock)
|
|
|
2530
2481
|
DEBUG_ENTER_INSN("invokeblock");
|
|
2531
2482
|
|
|
2532
2483
|
/* ### Declare and assign variables. ### */
|
|
2533
|
-
|
|
2534
|
-
# define INSN_ATTR(x) attr_ ## x ## _invokeblock(
|
|
2484
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
2485
|
+
# define INSN_ATTR(x) attr_ ## x ## _invokeblock(cd)
|
|
2535
2486
|
bool leaf = INSN_ATTR(leaf);
|
|
2536
2487
|
VALUE val;
|
|
2537
2488
|
|
|
2538
2489
|
/* ### Instruction preambles. ### */
|
|
2539
2490
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2540
2491
|
POPN(INSN_ATTR(popn));
|
|
2541
|
-
SETUP_CANARY();
|
|
2492
|
+
SETUP_CANARY(leaf);
|
|
2542
2493
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2543
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0,
|
|
2494
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
2544
2495
|
|
|
2545
2496
|
/* ### Here we do the instruction body. ### */
|
|
2546
2497
|
# define NAME_OF_CURRENT_INSN invokeblock
|
|
2547
|
-
# line
|
|
2498
|
+
# line 881 "insns.def"
|
|
2548
2499
|
{
|
|
2549
|
-
static struct rb_call_cache cc = {
|
|
2550
|
-
0, 0, NULL, NULL, vm_invokeblock_i,
|
|
2551
|
-
};
|
|
2552
|
-
|
|
2553
2500
|
VALUE bh = VM_BLOCK_HANDLER_NONE;
|
|
2554
|
-
val = vm_sendish(ec, GET_CFP(),
|
|
2501
|
+
val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_invokeblock);
|
|
2555
2502
|
|
|
2556
2503
|
if (val == Qundef) {
|
|
2557
2504
|
RESTORE_REGS();
|
|
2558
2505
|
NEXT_INSN();
|
|
2559
2506
|
}
|
|
2560
2507
|
}
|
|
2561
|
-
# line
|
|
2508
|
+
# line 2509 "vm.inc"
|
|
2562
2509
|
# undef NAME_OF_CURRENT_INSN
|
|
2563
2510
|
|
|
2564
2511
|
/* ### Instruction trailers. ### */
|
|
2565
2512
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2566
|
-
CHECK_CANARY();
|
|
2513
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2567
2514
|
PUSH(val);
|
|
2568
2515
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2569
2516
|
# undef INSN_ATTR
|
|
@@ -2587,12 +2534,12 @@ INSN_ENTRY(leave)
|
|
|
2587
2534
|
/* ### Instruction preambles. ### */
|
|
2588
2535
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2589
2536
|
POPN(INSN_ATTR(popn));
|
|
2590
|
-
SETUP_CANARY();
|
|
2537
|
+
SETUP_CANARY(leaf);
|
|
2591
2538
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2592
2539
|
|
|
2593
2540
|
/* ### Here we do the instruction body. ### */
|
|
2594
2541
|
# define NAME_OF_CURRENT_INSN leave
|
|
2595
|
-
# line
|
|
2542
|
+
# line 902 "insns.def"
|
|
2596
2543
|
{
|
|
2597
2544
|
if (OPT_CHECKED_RUN) {
|
|
2598
2545
|
const VALUE *const bp = vm_base_ptr(GET_CFP());
|
|
@@ -2601,8 +2548,6 @@ INSN_ENTRY(leave)
|
|
|
2601
2548
|
}
|
|
2602
2549
|
}
|
|
2603
2550
|
|
|
2604
|
-
RUBY_VM_CHECK_INTS(ec);
|
|
2605
|
-
|
|
2606
2551
|
if (vm_pop_frame(ec, GET_CFP(), GET_EP())) {
|
|
2607
2552
|
# if OPT_CALL_THREADED_CODE
|
|
2608
2553
|
rb_ec_thread_ptr(ec)->retval = val;
|
|
@@ -2615,12 +2560,12 @@ INSN_ENTRY(leave)
|
|
|
2615
2560
|
RESTORE_REGS();
|
|
2616
2561
|
}
|
|
2617
2562
|
}
|
|
2618
|
-
# line
|
|
2563
|
+
# line 2564 "vm.inc"
|
|
2619
2564
|
# undef NAME_OF_CURRENT_INSN
|
|
2620
2565
|
|
|
2621
2566
|
/* ### Instruction trailers. ### */
|
|
2622
2567
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2623
|
-
CHECK_CANARY();
|
|
2568
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2624
2569
|
PUSH(val);
|
|
2625
2570
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2626
2571
|
# undef INSN_ATTR
|
|
@@ -2645,27 +2590,28 @@ INSN_ENTRY(throw)
|
|
|
2645
2590
|
|
|
2646
2591
|
/* ### Instruction preambles. ### */
|
|
2647
2592
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2648
|
-
SETUP_CANARY();
|
|
2593
|
+
SETUP_CANARY(leaf);
|
|
2649
2594
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2650
2595
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, throw_state);
|
|
2651
2596
|
|
|
2652
2597
|
/* ### Here we do the instruction body. ### */
|
|
2653
2598
|
# define NAME_OF_CURRENT_INSN throw
|
|
2654
|
-
# line
|
|
2599
|
+
# line 935 "insns.def"
|
|
2655
2600
|
{
|
|
2656
|
-
RUBY_VM_CHECK_INTS(ec);
|
|
2657
2601
|
val = vm_throw(ec, GET_CFP(), throw_state, throwobj);
|
|
2658
2602
|
THROW_EXCEPTION(val);
|
|
2659
2603
|
/* unreachable */
|
|
2660
2604
|
}
|
|
2661
|
-
# line
|
|
2605
|
+
# line 2606 "vm.inc"
|
|
2662
2606
|
# undef NAME_OF_CURRENT_INSN
|
|
2663
2607
|
|
|
2664
2608
|
/* ### Instruction trailers. ### */
|
|
2665
2609
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2666
|
-
CHECK_CANARY();
|
|
2610
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2667
2611
|
INC_SP(INSN_ATTR(sp_inc));
|
|
2668
2612
|
TOPN(0) = val;
|
|
2613
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
2614
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
2669
2615
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2670
2616
|
# undef INSN_ATTR
|
|
2671
2617
|
|
|
@@ -2687,23 +2633,23 @@ INSN_ENTRY(jump)
|
|
|
2687
2633
|
|
|
2688
2634
|
/* ### Instruction preambles. ### */
|
|
2689
2635
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2690
|
-
SETUP_CANARY();
|
|
2636
|
+
SETUP_CANARY(leaf);
|
|
2691
2637
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2692
2638
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, dst);
|
|
2693
2639
|
|
|
2694
2640
|
/* ### Here we do the instruction body. ### */
|
|
2695
2641
|
# define NAME_OF_CURRENT_INSN jump
|
|
2696
|
-
# line
|
|
2642
|
+
# line 953 "insns.def"
|
|
2697
2643
|
{
|
|
2698
2644
|
RUBY_VM_CHECK_INTS(ec);
|
|
2699
2645
|
JUMP(dst);
|
|
2700
2646
|
}
|
|
2701
|
-
# line
|
|
2647
|
+
# line 2648 "vm.inc"
|
|
2702
2648
|
# undef NAME_OF_CURRENT_INSN
|
|
2703
2649
|
|
|
2704
2650
|
/* ### Instruction trailers. ### */
|
|
2705
2651
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2706
|
-
CHECK_CANARY();
|
|
2652
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2707
2653
|
INC_SP(INSN_ATTR(sp_inc));
|
|
2708
2654
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2709
2655
|
# undef INSN_ATTR
|
|
@@ -2727,25 +2673,25 @@ INSN_ENTRY(branchif)
|
|
|
2727
2673
|
|
|
2728
2674
|
/* ### Instruction preambles. ### */
|
|
2729
2675
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2730
|
-
SETUP_CANARY();
|
|
2676
|
+
SETUP_CANARY(leaf);
|
|
2731
2677
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2732
2678
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, dst);
|
|
2733
2679
|
|
|
2734
2680
|
/* ### Here we do the instruction body. ### */
|
|
2735
2681
|
# define NAME_OF_CURRENT_INSN branchif
|
|
2736
|
-
# line
|
|
2682
|
+
# line 966 "insns.def"
|
|
2737
2683
|
{
|
|
2738
2684
|
if (RTEST(val)) {
|
|
2739
2685
|
RUBY_VM_CHECK_INTS(ec);
|
|
2740
2686
|
JUMP(dst);
|
|
2741
2687
|
}
|
|
2742
2688
|
}
|
|
2743
|
-
# line
|
|
2689
|
+
# line 2690 "vm.inc"
|
|
2744
2690
|
# undef NAME_OF_CURRENT_INSN
|
|
2745
2691
|
|
|
2746
2692
|
/* ### Instruction trailers. ### */
|
|
2747
2693
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2748
|
-
CHECK_CANARY();
|
|
2694
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2749
2695
|
INC_SP(INSN_ATTR(sp_inc));
|
|
2750
2696
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2751
2697
|
# undef INSN_ATTR
|
|
@@ -2769,25 +2715,25 @@ INSN_ENTRY(branchunless)
|
|
|
2769
2715
|
|
|
2770
2716
|
/* ### Instruction preambles. ### */
|
|
2771
2717
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2772
|
-
SETUP_CANARY();
|
|
2718
|
+
SETUP_CANARY(leaf);
|
|
2773
2719
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2774
2720
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, dst);
|
|
2775
2721
|
|
|
2776
2722
|
/* ### Here we do the instruction body. ### */
|
|
2777
2723
|
# define NAME_OF_CURRENT_INSN branchunless
|
|
2778
|
-
# line
|
|
2724
|
+
# line 981 "insns.def"
|
|
2779
2725
|
{
|
|
2780
2726
|
if (!RTEST(val)) {
|
|
2781
2727
|
RUBY_VM_CHECK_INTS(ec);
|
|
2782
2728
|
JUMP(dst);
|
|
2783
2729
|
}
|
|
2784
2730
|
}
|
|
2785
|
-
# line
|
|
2731
|
+
# line 2732 "vm.inc"
|
|
2786
2732
|
# undef NAME_OF_CURRENT_INSN
|
|
2787
2733
|
|
|
2788
2734
|
/* ### Instruction trailers. ### */
|
|
2789
2735
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2790
|
-
CHECK_CANARY();
|
|
2736
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2791
2737
|
INC_SP(INSN_ATTR(sp_inc));
|
|
2792
2738
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2793
2739
|
# undef INSN_ATTR
|
|
@@ -2811,25 +2757,25 @@ INSN_ENTRY(branchnil)
|
|
|
2811
2757
|
|
|
2812
2758
|
/* ### Instruction preambles. ### */
|
|
2813
2759
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2814
|
-
SETUP_CANARY();
|
|
2760
|
+
SETUP_CANARY(leaf);
|
|
2815
2761
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2816
2762
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, dst);
|
|
2817
2763
|
|
|
2818
2764
|
/* ### Here we do the instruction body. ### */
|
|
2819
2765
|
# define NAME_OF_CURRENT_INSN branchnil
|
|
2820
|
-
# line
|
|
2766
|
+
# line 996 "insns.def"
|
|
2821
2767
|
{
|
|
2822
2768
|
if (NIL_P(val)) {
|
|
2823
2769
|
RUBY_VM_CHECK_INTS(ec);
|
|
2824
2770
|
JUMP(dst);
|
|
2825
2771
|
}
|
|
2826
2772
|
}
|
|
2827
|
-
# line
|
|
2773
|
+
# line 2774 "vm.inc"
|
|
2828
2774
|
# undef NAME_OF_CURRENT_INSN
|
|
2829
2775
|
|
|
2830
2776
|
/* ### Instruction trailers. ### */
|
|
2831
2777
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2832
|
-
CHECK_CANARY();
|
|
2778
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2833
2779
|
INC_SP(INSN_ATTR(sp_inc));
|
|
2834
2780
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2835
2781
|
# undef INSN_ATTR
|
|
@@ -2854,31 +2800,34 @@ INSN_ENTRY(opt_getinlinecache)
|
|
|
2854
2800
|
|
|
2855
2801
|
/* ### Instruction preambles. ### */
|
|
2856
2802
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2857
|
-
SETUP_CANARY();
|
|
2803
|
+
SETUP_CANARY(leaf);
|
|
2858
2804
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2859
2805
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, dst);
|
|
2860
2806
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, ic);
|
|
2861
2807
|
|
|
2862
2808
|
/* ### Here we do the instruction body. ### */
|
|
2863
2809
|
# define NAME_OF_CURRENT_INSN opt_getinlinecache
|
|
2864
|
-
# line
|
|
2810
|
+
# line 1013 "insns.def"
|
|
2865
2811
|
{
|
|
2866
|
-
|
|
2867
|
-
|
|
2868
|
-
|
|
2812
|
+
struct iseq_inline_constant_cache_entry *ice = ic->entry;
|
|
2813
|
+
if (ice && vm_ic_hit_p(ice, GET_EP())) {
|
|
2814
|
+
val = ice->value;
|
|
2815
|
+
JUMP(dst);
|
|
2869
2816
|
}
|
|
2870
2817
|
else {
|
|
2871
2818
|
val = Qnil;
|
|
2872
2819
|
}
|
|
2873
2820
|
}
|
|
2874
|
-
# line
|
|
2821
|
+
# line 2822 "vm.inc"
|
|
2875
2822
|
# undef NAME_OF_CURRENT_INSN
|
|
2876
2823
|
|
|
2877
2824
|
/* ### Instruction trailers. ### */
|
|
2878
2825
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2879
|
-
CHECK_CANARY();
|
|
2826
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2880
2827
|
INC_SP(INSN_ATTR(sp_inc));
|
|
2881
2828
|
TOPN(0) = val;
|
|
2829
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
2830
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
2882
2831
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2883
2832
|
# undef INSN_ATTR
|
|
2884
2833
|
|
|
@@ -2901,24 +2850,26 @@ INSN_ENTRY(opt_setinlinecache)
|
|
|
2901
2850
|
|
|
2902
2851
|
/* ### Instruction preambles. ### */
|
|
2903
2852
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2904
|
-
SETUP_CANARY();
|
|
2853
|
+
SETUP_CANARY(leaf);
|
|
2905
2854
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2906
2855
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, ic);
|
|
2907
2856
|
|
|
2908
2857
|
/* ### Here we do the instruction body. ### */
|
|
2909
2858
|
# define NAME_OF_CURRENT_INSN opt_setinlinecache
|
|
2910
|
-
# line
|
|
2859
|
+
# line 1031 "insns.def"
|
|
2911
2860
|
{
|
|
2912
|
-
vm_ic_update(ic, val, GET_EP());
|
|
2861
|
+
vm_ic_update(GET_ISEQ(), ic, val, GET_EP());
|
|
2913
2862
|
}
|
|
2914
|
-
# line
|
|
2863
|
+
# line 2864 "vm.inc"
|
|
2915
2864
|
# undef NAME_OF_CURRENT_INSN
|
|
2916
2865
|
|
|
2917
2866
|
/* ### Instruction trailers. ### */
|
|
2918
2867
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2919
|
-
CHECK_CANARY();
|
|
2868
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2920
2869
|
INC_SP(INSN_ATTR(sp_inc));
|
|
2921
2870
|
TOPN(0) = val;
|
|
2871
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
2872
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
2922
2873
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2923
2874
|
# undef INSN_ATTR
|
|
2924
2875
|
|
|
@@ -2943,23 +2894,23 @@ INSN_ENTRY(once)
|
|
|
2943
2894
|
/* ### Instruction preambles. ### */
|
|
2944
2895
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2945
2896
|
POPN(INSN_ATTR(popn));
|
|
2946
|
-
SETUP_CANARY();
|
|
2897
|
+
SETUP_CANARY(leaf);
|
|
2947
2898
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2948
2899
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, iseq);
|
|
2949
2900
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, ise);
|
|
2950
2901
|
|
|
2951
2902
|
/* ### Here we do the instruction body. ### */
|
|
2952
2903
|
# define NAME_OF_CURRENT_INSN once
|
|
2953
|
-
# line
|
|
2904
|
+
# line 1041 "insns.def"
|
|
2954
2905
|
{
|
|
2955
2906
|
val = vm_once_dispatch(ec, iseq, ise);
|
|
2956
2907
|
}
|
|
2957
|
-
# line
|
|
2908
|
+
# line 2909 "vm.inc"
|
|
2958
2909
|
# undef NAME_OF_CURRENT_INSN
|
|
2959
2910
|
|
|
2960
2911
|
/* ### Instruction trailers. ### */
|
|
2961
2912
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
2962
|
-
CHECK_CANARY();
|
|
2913
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
2963
2914
|
PUSH(val);
|
|
2964
2915
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
2965
2916
|
# undef INSN_ATTR
|
|
@@ -2984,14 +2935,14 @@ INSN_ENTRY(opt_case_dispatch)
|
|
|
2984
2935
|
|
|
2985
2936
|
/* ### Instruction preambles. ### */
|
|
2986
2937
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
2987
|
-
SETUP_CANARY();
|
|
2938
|
+
SETUP_CANARY(leaf);
|
|
2988
2939
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
2989
2940
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, hash);
|
|
2990
2941
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, else_offset);
|
|
2991
2942
|
|
|
2992
2943
|
/* ### Here we do the instruction body. ### */
|
|
2993
2944
|
# define NAME_OF_CURRENT_INSN opt_case_dispatch
|
|
2994
|
-
# line
|
|
2945
|
+
# line 1052 "insns.def"
|
|
2995
2946
|
{
|
|
2996
2947
|
OFFSET dst = vm_case_dispatch(hash, else_offset, key);
|
|
2997
2948
|
|
|
@@ -2999,12 +2950,12 @@ INSN_ENTRY(opt_case_dispatch)
|
|
|
2999
2950
|
JUMP(dst);
|
|
3000
2951
|
}
|
|
3001
2952
|
}
|
|
3002
|
-
# line
|
|
2953
|
+
# line 2954 "vm.inc"
|
|
3003
2954
|
# undef NAME_OF_CURRENT_INSN
|
|
3004
2955
|
|
|
3005
2956
|
/* ### Instruction trailers. ### */
|
|
3006
2957
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3007
|
-
CHECK_CANARY();
|
|
2958
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3008
2959
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3009
2960
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3010
2961
|
# undef INSN_ATTR
|
|
@@ -3013,7 +2964,7 @@ INSN_ENTRY(opt_case_dispatch)
|
|
|
3013
2964
|
END_INSN(opt_case_dispatch);
|
|
3014
2965
|
}
|
|
3015
2966
|
|
|
3016
|
-
/* insn opt_plus(
|
|
2967
|
+
/* insn opt_plus(cd)(recv, obj)(val) */
|
|
3017
2968
|
INSN_ENTRY(opt_plus)
|
|
3018
2969
|
{
|
|
3019
2970
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -3021,9 +2972,8 @@ INSN_ENTRY(opt_plus)
|
|
|
3021
2972
|
DEBUG_ENTER_INSN("opt_plus");
|
|
3022
2973
|
|
|
3023
2974
|
/* ### Declare and assign variables. ### */
|
|
3024
|
-
|
|
3025
|
-
|
|
3026
|
-
# define INSN_ATTR(x) attr_ ## x ## _opt_plus(ci, cc)
|
|
2975
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
2976
|
+
# define INSN_ATTR(x) attr_ ## x ## _opt_plus(cd)
|
|
3027
2977
|
bool leaf = INSN_ATTR(leaf);
|
|
3028
2978
|
VALUE recv = TOPN(1);
|
|
3029
2979
|
VALUE obj = TOPN(0);
|
|
@@ -3031,14 +2981,13 @@ INSN_ENTRY(opt_plus)
|
|
|
3031
2981
|
|
|
3032
2982
|
/* ### Instruction preambles. ### */
|
|
3033
2983
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3034
|
-
SETUP_CANARY();
|
|
2984
|
+
SETUP_CANARY(leaf);
|
|
3035
2985
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3036
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0,
|
|
3037
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cc);
|
|
2986
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3038
2987
|
|
|
3039
2988
|
/* ### Here we do the instruction body. ### */
|
|
3040
2989
|
# define NAME_OF_CURRENT_INSN opt_plus
|
|
3041
|
-
# line
|
|
2990
|
+
# line 1068 "insns.def"
|
|
3042
2991
|
{
|
|
3043
2992
|
val = vm_opt_plus(recv, obj);
|
|
3044
2993
|
|
|
@@ -3046,14 +2995,16 @@ INSN_ENTRY(opt_plus)
|
|
|
3046
2995
|
CALL_SIMPLE_METHOD();
|
|
3047
2996
|
}
|
|
3048
2997
|
}
|
|
3049
|
-
# line
|
|
2998
|
+
# line 2999 "vm.inc"
|
|
3050
2999
|
# undef NAME_OF_CURRENT_INSN
|
|
3051
3000
|
|
|
3052
3001
|
/* ### Instruction trailers. ### */
|
|
3053
3002
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3054
|
-
CHECK_CANARY();
|
|
3003
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3055
3004
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3056
3005
|
TOPN(0) = val;
|
|
3006
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3007
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3057
3008
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3058
3009
|
# undef INSN_ATTR
|
|
3059
3010
|
|
|
@@ -3061,7 +3012,7 @@ INSN_ENTRY(opt_plus)
|
|
|
3061
3012
|
END_INSN(opt_plus);
|
|
3062
3013
|
}
|
|
3063
3014
|
|
|
3064
|
-
/* insn opt_minus(
|
|
3015
|
+
/* insn opt_minus(cd)(recv, obj)(val) */
|
|
3065
3016
|
INSN_ENTRY(opt_minus)
|
|
3066
3017
|
{
|
|
3067
3018
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -3069,9 +3020,8 @@ INSN_ENTRY(opt_minus)
|
|
|
3069
3020
|
DEBUG_ENTER_INSN("opt_minus");
|
|
3070
3021
|
|
|
3071
3022
|
/* ### Declare and assign variables. ### */
|
|
3072
|
-
|
|
3073
|
-
|
|
3074
|
-
# define INSN_ATTR(x) attr_ ## x ## _opt_minus(ci, cc)
|
|
3023
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3024
|
+
# define INSN_ATTR(x) attr_ ## x ## _opt_minus(cd)
|
|
3075
3025
|
bool leaf = INSN_ATTR(leaf);
|
|
3076
3026
|
VALUE recv = TOPN(1);
|
|
3077
3027
|
VALUE obj = TOPN(0);
|
|
@@ -3079,14 +3029,13 @@ INSN_ENTRY(opt_minus)
|
|
|
3079
3029
|
|
|
3080
3030
|
/* ### Instruction preambles. ### */
|
|
3081
3031
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3082
|
-
SETUP_CANARY();
|
|
3032
|
+
SETUP_CANARY(leaf);
|
|
3083
3033
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3084
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0,
|
|
3085
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cc);
|
|
3034
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3086
3035
|
|
|
3087
3036
|
/* ### Here we do the instruction body. ### */
|
|
3088
3037
|
# define NAME_OF_CURRENT_INSN opt_minus
|
|
3089
|
-
# line
|
|
3038
|
+
# line 1082 "insns.def"
|
|
3090
3039
|
{
|
|
3091
3040
|
val = vm_opt_minus(recv, obj);
|
|
3092
3041
|
|
|
@@ -3094,14 +3043,16 @@ INSN_ENTRY(opt_minus)
|
|
|
3094
3043
|
CALL_SIMPLE_METHOD();
|
|
3095
3044
|
}
|
|
3096
3045
|
}
|
|
3097
|
-
# line
|
|
3046
|
+
# line 3047 "vm.inc"
|
|
3098
3047
|
# undef NAME_OF_CURRENT_INSN
|
|
3099
3048
|
|
|
3100
3049
|
/* ### Instruction trailers. ### */
|
|
3101
3050
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3102
|
-
CHECK_CANARY();
|
|
3051
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3103
3052
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3104
3053
|
TOPN(0) = val;
|
|
3054
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3055
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3105
3056
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3106
3057
|
# undef INSN_ATTR
|
|
3107
3058
|
|
|
@@ -3109,7 +3060,7 @@ INSN_ENTRY(opt_minus)
|
|
|
3109
3060
|
END_INSN(opt_minus);
|
|
3110
3061
|
}
|
|
3111
3062
|
|
|
3112
|
-
/* insn opt_mult(
|
|
3063
|
+
/* insn opt_mult(cd)(recv, obj)(val) */
|
|
3113
3064
|
INSN_ENTRY(opt_mult)
|
|
3114
3065
|
{
|
|
3115
3066
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -3117,9 +3068,8 @@ INSN_ENTRY(opt_mult)
|
|
|
3117
3068
|
DEBUG_ENTER_INSN("opt_mult");
|
|
3118
3069
|
|
|
3119
3070
|
/* ### Declare and assign variables. ### */
|
|
3120
|
-
|
|
3121
|
-
|
|
3122
|
-
# define INSN_ATTR(x) attr_ ## x ## _opt_mult(ci, cc)
|
|
3071
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3072
|
+
# define INSN_ATTR(x) attr_ ## x ## _opt_mult(cd)
|
|
3123
3073
|
bool leaf = INSN_ATTR(leaf);
|
|
3124
3074
|
VALUE recv = TOPN(1);
|
|
3125
3075
|
VALUE obj = TOPN(0);
|
|
@@ -3127,14 +3077,13 @@ INSN_ENTRY(opt_mult)
|
|
|
3127
3077
|
|
|
3128
3078
|
/* ### Instruction preambles. ### */
|
|
3129
3079
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3130
|
-
SETUP_CANARY();
|
|
3080
|
+
SETUP_CANARY(leaf);
|
|
3131
3081
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3132
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0,
|
|
3133
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cc);
|
|
3082
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3134
3083
|
|
|
3135
3084
|
/* ### Here we do the instruction body. ### */
|
|
3136
3085
|
# define NAME_OF_CURRENT_INSN opt_mult
|
|
3137
|
-
# line
|
|
3086
|
+
# line 1096 "insns.def"
|
|
3138
3087
|
{
|
|
3139
3088
|
val = vm_opt_mult(recv, obj);
|
|
3140
3089
|
|
|
@@ -3142,14 +3091,16 @@ INSN_ENTRY(opt_mult)
|
|
|
3142
3091
|
CALL_SIMPLE_METHOD();
|
|
3143
3092
|
}
|
|
3144
3093
|
}
|
|
3145
|
-
# line
|
|
3094
|
+
# line 3095 "vm.inc"
|
|
3146
3095
|
# undef NAME_OF_CURRENT_INSN
|
|
3147
3096
|
|
|
3148
3097
|
/* ### Instruction trailers. ### */
|
|
3149
3098
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3150
|
-
CHECK_CANARY();
|
|
3099
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3151
3100
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3152
3101
|
TOPN(0) = val;
|
|
3102
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3103
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3153
3104
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3154
3105
|
# undef INSN_ATTR
|
|
3155
3106
|
|
|
@@ -3157,7 +3108,7 @@ INSN_ENTRY(opt_mult)
|
|
|
3157
3108
|
END_INSN(opt_mult);
|
|
3158
3109
|
}
|
|
3159
3110
|
|
|
3160
|
-
/* insn opt_div(
|
|
3111
|
+
/* insn opt_div(cd)(recv, obj)(val) */
|
|
3161
3112
|
INSN_ENTRY(opt_div)
|
|
3162
3113
|
{
|
|
3163
3114
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -3165,9 +3116,8 @@ INSN_ENTRY(opt_div)
|
|
|
3165
3116
|
DEBUG_ENTER_INSN("opt_div");
|
|
3166
3117
|
|
|
3167
3118
|
/* ### Declare and assign variables. ### */
|
|
3168
|
-
|
|
3169
|
-
|
|
3170
|
-
# define INSN_ATTR(x) attr_ ## x ## _opt_div(ci, cc)
|
|
3119
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3120
|
+
# define INSN_ATTR(x) attr_ ## x ## _opt_div(cd)
|
|
3171
3121
|
bool leaf = INSN_ATTR(leaf);
|
|
3172
3122
|
VALUE recv = TOPN(1);
|
|
3173
3123
|
VALUE obj = TOPN(0);
|
|
@@ -3175,14 +3125,13 @@ INSN_ENTRY(opt_div)
|
|
|
3175
3125
|
|
|
3176
3126
|
/* ### Instruction preambles. ### */
|
|
3177
3127
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3178
|
-
SETUP_CANARY();
|
|
3128
|
+
SETUP_CANARY(leaf);
|
|
3179
3129
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3180
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0,
|
|
3181
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cc);
|
|
3130
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3182
3131
|
|
|
3183
3132
|
/* ### Here we do the instruction body. ### */
|
|
3184
3133
|
# define NAME_OF_CURRENT_INSN opt_div
|
|
3185
|
-
# line
|
|
3134
|
+
# line 1113 "insns.def"
|
|
3186
3135
|
{
|
|
3187
3136
|
val = vm_opt_div(recv, obj);
|
|
3188
3137
|
|
|
@@ -3190,14 +3139,16 @@ INSN_ENTRY(opt_div)
|
|
|
3190
3139
|
CALL_SIMPLE_METHOD();
|
|
3191
3140
|
}
|
|
3192
3141
|
}
|
|
3193
|
-
# line
|
|
3142
|
+
# line 3143 "vm.inc"
|
|
3194
3143
|
# undef NAME_OF_CURRENT_INSN
|
|
3195
3144
|
|
|
3196
3145
|
/* ### Instruction trailers. ### */
|
|
3197
3146
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3198
|
-
CHECK_CANARY();
|
|
3147
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3199
3148
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3200
3149
|
TOPN(0) = val;
|
|
3150
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3151
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3201
3152
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3202
3153
|
# undef INSN_ATTR
|
|
3203
3154
|
|
|
@@ -3205,7 +3156,7 @@ INSN_ENTRY(opt_div)
|
|
|
3205
3156
|
END_INSN(opt_div);
|
|
3206
3157
|
}
|
|
3207
3158
|
|
|
3208
|
-
/* insn opt_mod(
|
|
3159
|
+
/* insn opt_mod(cd)(recv, obj)(val) */
|
|
3209
3160
|
INSN_ENTRY(opt_mod)
|
|
3210
3161
|
{
|
|
3211
3162
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -3213,9 +3164,8 @@ INSN_ENTRY(opt_mod)
|
|
|
3213
3164
|
DEBUG_ENTER_INSN("opt_mod");
|
|
3214
3165
|
|
|
3215
3166
|
/* ### Declare and assign variables. ### */
|
|
3216
|
-
|
|
3217
|
-
|
|
3218
|
-
# define INSN_ATTR(x) attr_ ## x ## _opt_mod(ci, cc)
|
|
3167
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3168
|
+
# define INSN_ATTR(x) attr_ ## x ## _opt_mod(cd)
|
|
3219
3169
|
bool leaf = INSN_ATTR(leaf);
|
|
3220
3170
|
VALUE recv = TOPN(1);
|
|
3221
3171
|
VALUE obj = TOPN(0);
|
|
@@ -3223,14 +3173,13 @@ INSN_ENTRY(opt_mod)
|
|
|
3223
3173
|
|
|
3224
3174
|
/* ### Instruction preambles. ### */
|
|
3225
3175
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3226
|
-
SETUP_CANARY();
|
|
3176
|
+
SETUP_CANARY(leaf);
|
|
3227
3177
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3228
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0,
|
|
3229
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cc);
|
|
3178
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3230
3179
|
|
|
3231
3180
|
/* ### Here we do the instruction body. ### */
|
|
3232
3181
|
# define NAME_OF_CURRENT_INSN opt_mod
|
|
3233
|
-
# line
|
|
3182
|
+
# line 1129 "insns.def"
|
|
3234
3183
|
{
|
|
3235
3184
|
val = vm_opt_mod(recv, obj);
|
|
3236
3185
|
|
|
@@ -3238,14 +3187,16 @@ INSN_ENTRY(opt_mod)
|
|
|
3238
3187
|
CALL_SIMPLE_METHOD();
|
|
3239
3188
|
}
|
|
3240
3189
|
}
|
|
3241
|
-
# line
|
|
3190
|
+
# line 3191 "vm.inc"
|
|
3242
3191
|
# undef NAME_OF_CURRENT_INSN
|
|
3243
3192
|
|
|
3244
3193
|
/* ### Instruction trailers. ### */
|
|
3245
3194
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3246
|
-
CHECK_CANARY();
|
|
3195
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3247
3196
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3248
3197
|
TOPN(0) = val;
|
|
3198
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3199
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3249
3200
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3250
3201
|
# undef INSN_ATTR
|
|
3251
3202
|
|
|
@@ -3253,7 +3204,7 @@ INSN_ENTRY(opt_mod)
|
|
|
3253
3204
|
END_INSN(opt_mod);
|
|
3254
3205
|
}
|
|
3255
3206
|
|
|
3256
|
-
/* insn opt_eq(
|
|
3207
|
+
/* insn opt_eq(cd)(recv, obj)(val) */
|
|
3257
3208
|
INSN_ENTRY(opt_eq)
|
|
3258
3209
|
{
|
|
3259
3210
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -3261,9 +3212,8 @@ INSN_ENTRY(opt_eq)
|
|
|
3261
3212
|
DEBUG_ENTER_INSN("opt_eq");
|
|
3262
3213
|
|
|
3263
3214
|
/* ### Declare and assign variables. ### */
|
|
3264
|
-
|
|
3265
|
-
|
|
3266
|
-
# define INSN_ATTR(x) attr_ ## x ## _opt_eq(ci, cc)
|
|
3215
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3216
|
+
# define INSN_ATTR(x) attr_ ## x ## _opt_eq(cd)
|
|
3267
3217
|
bool leaf = INSN_ATTR(leaf);
|
|
3268
3218
|
VALUE recv = TOPN(1);
|
|
3269
3219
|
VALUE obj = TOPN(0);
|
|
@@ -3271,29 +3221,30 @@ INSN_ENTRY(opt_eq)
|
|
|
3271
3221
|
|
|
3272
3222
|
/* ### Instruction preambles. ### */
|
|
3273
3223
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3274
|
-
SETUP_CANARY();
|
|
3224
|
+
SETUP_CANARY(leaf);
|
|
3275
3225
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3276
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0,
|
|
3277
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cc);
|
|
3226
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3278
3227
|
|
|
3279
3228
|
/* ### Here we do the instruction body. ### */
|
|
3280
3229
|
# define NAME_OF_CURRENT_INSN opt_eq
|
|
3281
|
-
# line
|
|
3230
|
+
# line 1143 "insns.def"
|
|
3282
3231
|
{
|
|
3283
|
-
val =
|
|
3232
|
+
val = opt_equality(GET_ISEQ(), recv, obj, cd);
|
|
3284
3233
|
|
|
3285
3234
|
if (val == Qundef) {
|
|
3286
3235
|
CALL_SIMPLE_METHOD();
|
|
3287
3236
|
}
|
|
3288
3237
|
}
|
|
3289
|
-
# line
|
|
3238
|
+
# line 3239 "vm.inc"
|
|
3290
3239
|
# undef NAME_OF_CURRENT_INSN
|
|
3291
3240
|
|
|
3292
3241
|
/* ### Instruction trailers. ### */
|
|
3293
3242
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3294
|
-
CHECK_CANARY();
|
|
3243
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3295
3244
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3296
3245
|
TOPN(0) = val;
|
|
3246
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3247
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3297
3248
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3298
3249
|
# undef INSN_ATTR
|
|
3299
3250
|
|
|
@@ -3301,7 +3252,7 @@ INSN_ENTRY(opt_eq)
|
|
|
3301
3252
|
END_INSN(opt_eq);
|
|
3302
3253
|
}
|
|
3303
3254
|
|
|
3304
|
-
/* insn opt_neq(
|
|
3255
|
+
/* insn opt_neq(cd_eq, cd)(recv, obj)(val) */
|
|
3305
3256
|
INSN_ENTRY(opt_neq)
|
|
3306
3257
|
{
|
|
3307
3258
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -3309,11 +3260,9 @@ INSN_ENTRY(opt_neq)
|
|
|
3309
3260
|
DEBUG_ENTER_INSN("opt_neq");
|
|
3310
3261
|
|
|
3311
3262
|
/* ### Declare and assign variables. ### */
|
|
3312
|
-
|
|
3313
|
-
|
|
3314
|
-
|
|
3315
|
-
CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(4);
|
|
3316
|
-
# define INSN_ATTR(x) attr_ ## x ## _opt_neq(ci_eq, cc_eq, ci, cc)
|
|
3263
|
+
CALL_DATA cd_eq = (CALL_DATA)GET_OPERAND(1);
|
|
3264
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(2);
|
|
3265
|
+
# define INSN_ATTR(x) attr_ ## x ## _opt_neq(cd_eq, cd)
|
|
3317
3266
|
bool leaf = INSN_ATTR(leaf);
|
|
3318
3267
|
VALUE recv = TOPN(1);
|
|
3319
3268
|
VALUE obj = TOPN(0);
|
|
@@ -3321,31 +3270,31 @@ INSN_ENTRY(opt_neq)
|
|
|
3321
3270
|
|
|
3322
3271
|
/* ### Instruction preambles. ### */
|
|
3323
3272
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3324
|
-
SETUP_CANARY();
|
|
3273
|
+
SETUP_CANARY(leaf);
|
|
3325
3274
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3326
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0,
|
|
3327
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1,
|
|
3328
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 2, ci);
|
|
3329
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 3, cc);
|
|
3275
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd_eq);
|
|
3276
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cd);
|
|
3330
3277
|
|
|
3331
3278
|
/* ### Here we do the instruction body. ### */
|
|
3332
3279
|
# define NAME_OF_CURRENT_INSN opt_neq
|
|
3333
|
-
# line
|
|
3280
|
+
# line 1157 "insns.def"
|
|
3334
3281
|
{
|
|
3335
|
-
val = vm_opt_neq(
|
|
3282
|
+
val = vm_opt_neq(GET_ISEQ(), cd, cd_eq, recv, obj);
|
|
3336
3283
|
|
|
3337
3284
|
if (val == Qundef) {
|
|
3338
3285
|
CALL_SIMPLE_METHOD();
|
|
3339
3286
|
}
|
|
3340
3287
|
}
|
|
3341
|
-
# line
|
|
3288
|
+
# line 3289 "vm.inc"
|
|
3342
3289
|
# undef NAME_OF_CURRENT_INSN
|
|
3343
3290
|
|
|
3344
3291
|
/* ### Instruction trailers. ### */
|
|
3345
3292
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3346
|
-
CHECK_CANARY();
|
|
3293
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3347
3294
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3348
3295
|
TOPN(0) = val;
|
|
3296
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3297
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3349
3298
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3350
3299
|
# undef INSN_ATTR
|
|
3351
3300
|
|
|
@@ -3353,7 +3302,7 @@ INSN_ENTRY(opt_neq)
|
|
|
3353
3302
|
END_INSN(opt_neq);
|
|
3354
3303
|
}
|
|
3355
3304
|
|
|
3356
|
-
/* insn opt_lt(
|
|
3305
|
+
/* insn opt_lt(cd)(recv, obj)(val) */
|
|
3357
3306
|
INSN_ENTRY(opt_lt)
|
|
3358
3307
|
{
|
|
3359
3308
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -3361,9 +3310,8 @@ INSN_ENTRY(opt_lt)
|
|
|
3361
3310
|
DEBUG_ENTER_INSN("opt_lt");
|
|
3362
3311
|
|
|
3363
3312
|
/* ### Declare and assign variables. ### */
|
|
3364
|
-
|
|
3365
|
-
|
|
3366
|
-
# define INSN_ATTR(x) attr_ ## x ## _opt_lt(ci, cc)
|
|
3313
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3314
|
+
# define INSN_ATTR(x) attr_ ## x ## _opt_lt(cd)
|
|
3367
3315
|
bool leaf = INSN_ATTR(leaf);
|
|
3368
3316
|
VALUE recv = TOPN(1);
|
|
3369
3317
|
VALUE obj = TOPN(0);
|
|
@@ -3371,14 +3319,13 @@ INSN_ENTRY(opt_lt)
|
|
|
3371
3319
|
|
|
3372
3320
|
/* ### Instruction preambles. ### */
|
|
3373
3321
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3374
|
-
SETUP_CANARY();
|
|
3322
|
+
SETUP_CANARY(leaf);
|
|
3375
3323
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3376
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0,
|
|
3377
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cc);
|
|
3324
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3378
3325
|
|
|
3379
3326
|
/* ### Here we do the instruction body. ### */
|
|
3380
3327
|
# define NAME_OF_CURRENT_INSN opt_lt
|
|
3381
|
-
# line
|
|
3328
|
+
# line 1171 "insns.def"
|
|
3382
3329
|
{
|
|
3383
3330
|
val = vm_opt_lt(recv, obj);
|
|
3384
3331
|
|
|
@@ -3386,14 +3333,16 @@ INSN_ENTRY(opt_lt)
|
|
|
3386
3333
|
CALL_SIMPLE_METHOD();
|
|
3387
3334
|
}
|
|
3388
3335
|
}
|
|
3389
|
-
# line
|
|
3336
|
+
# line 3337 "vm.inc"
|
|
3390
3337
|
# undef NAME_OF_CURRENT_INSN
|
|
3391
3338
|
|
|
3392
3339
|
/* ### Instruction trailers. ### */
|
|
3393
3340
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3394
|
-
CHECK_CANARY();
|
|
3341
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3395
3342
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3396
3343
|
TOPN(0) = val;
|
|
3344
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3345
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3397
3346
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3398
3347
|
# undef INSN_ATTR
|
|
3399
3348
|
|
|
@@ -3401,7 +3350,7 @@ INSN_ENTRY(opt_lt)
|
|
|
3401
3350
|
END_INSN(opt_lt);
|
|
3402
3351
|
}
|
|
3403
3352
|
|
|
3404
|
-
/* insn opt_le(
|
|
3353
|
+
/* insn opt_le(cd)(recv, obj)(val) */
|
|
3405
3354
|
INSN_ENTRY(opt_le)
|
|
3406
3355
|
{
|
|
3407
3356
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -3409,9 +3358,8 @@ INSN_ENTRY(opt_le)
|
|
|
3409
3358
|
DEBUG_ENTER_INSN("opt_le");
|
|
3410
3359
|
|
|
3411
3360
|
/* ### Declare and assign variables. ### */
|
|
3412
|
-
|
|
3413
|
-
|
|
3414
|
-
# define INSN_ATTR(x) attr_ ## x ## _opt_le(ci, cc)
|
|
3361
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3362
|
+
# define INSN_ATTR(x) attr_ ## x ## _opt_le(cd)
|
|
3415
3363
|
bool leaf = INSN_ATTR(leaf);
|
|
3416
3364
|
VALUE recv = TOPN(1);
|
|
3417
3365
|
VALUE obj = TOPN(0);
|
|
@@ -3419,14 +3367,13 @@ INSN_ENTRY(opt_le)
|
|
|
3419
3367
|
|
|
3420
3368
|
/* ### Instruction preambles. ### */
|
|
3421
3369
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3422
|
-
SETUP_CANARY();
|
|
3370
|
+
SETUP_CANARY(leaf);
|
|
3423
3371
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3424
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0,
|
|
3425
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cc);
|
|
3372
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3426
3373
|
|
|
3427
3374
|
/* ### Here we do the instruction body. ### */
|
|
3428
3375
|
# define NAME_OF_CURRENT_INSN opt_le
|
|
3429
|
-
# line
|
|
3376
|
+
# line 1185 "insns.def"
|
|
3430
3377
|
{
|
|
3431
3378
|
val = vm_opt_le(recv, obj);
|
|
3432
3379
|
|
|
@@ -3434,14 +3381,16 @@ INSN_ENTRY(opt_le)
|
|
|
3434
3381
|
CALL_SIMPLE_METHOD();
|
|
3435
3382
|
}
|
|
3436
3383
|
}
|
|
3437
|
-
# line
|
|
3384
|
+
# line 3385 "vm.inc"
|
|
3438
3385
|
# undef NAME_OF_CURRENT_INSN
|
|
3439
3386
|
|
|
3440
3387
|
/* ### Instruction trailers. ### */
|
|
3441
3388
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3442
|
-
CHECK_CANARY();
|
|
3389
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3443
3390
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3444
3391
|
TOPN(0) = val;
|
|
3392
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3393
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3445
3394
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3446
3395
|
# undef INSN_ATTR
|
|
3447
3396
|
|
|
@@ -3449,7 +3398,7 @@ INSN_ENTRY(opt_le)
|
|
|
3449
3398
|
END_INSN(opt_le);
|
|
3450
3399
|
}
|
|
3451
3400
|
|
|
3452
|
-
/* insn opt_gt(
|
|
3401
|
+
/* insn opt_gt(cd)(recv, obj)(val) */
|
|
3453
3402
|
INSN_ENTRY(opt_gt)
|
|
3454
3403
|
{
|
|
3455
3404
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -3457,9 +3406,8 @@ INSN_ENTRY(opt_gt)
|
|
|
3457
3406
|
DEBUG_ENTER_INSN("opt_gt");
|
|
3458
3407
|
|
|
3459
3408
|
/* ### Declare and assign variables. ### */
|
|
3460
|
-
|
|
3461
|
-
|
|
3462
|
-
# define INSN_ATTR(x) attr_ ## x ## _opt_gt(ci, cc)
|
|
3409
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3410
|
+
# define INSN_ATTR(x) attr_ ## x ## _opt_gt(cd)
|
|
3463
3411
|
bool leaf = INSN_ATTR(leaf);
|
|
3464
3412
|
VALUE recv = TOPN(1);
|
|
3465
3413
|
VALUE obj = TOPN(0);
|
|
@@ -3467,14 +3415,13 @@ INSN_ENTRY(opt_gt)
|
|
|
3467
3415
|
|
|
3468
3416
|
/* ### Instruction preambles. ### */
|
|
3469
3417
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3470
|
-
SETUP_CANARY();
|
|
3418
|
+
SETUP_CANARY(leaf);
|
|
3471
3419
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3472
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0,
|
|
3473
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cc);
|
|
3420
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3474
3421
|
|
|
3475
3422
|
/* ### Here we do the instruction body. ### */
|
|
3476
3423
|
# define NAME_OF_CURRENT_INSN opt_gt
|
|
3477
|
-
# line
|
|
3424
|
+
# line 1199 "insns.def"
|
|
3478
3425
|
{
|
|
3479
3426
|
val = vm_opt_gt(recv, obj);
|
|
3480
3427
|
|
|
@@ -3482,14 +3429,16 @@ INSN_ENTRY(opt_gt)
|
|
|
3482
3429
|
CALL_SIMPLE_METHOD();
|
|
3483
3430
|
}
|
|
3484
3431
|
}
|
|
3485
|
-
# line
|
|
3432
|
+
# line 3433 "vm.inc"
|
|
3486
3433
|
# undef NAME_OF_CURRENT_INSN
|
|
3487
3434
|
|
|
3488
3435
|
/* ### Instruction trailers. ### */
|
|
3489
3436
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3490
|
-
CHECK_CANARY();
|
|
3437
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3491
3438
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3492
3439
|
TOPN(0) = val;
|
|
3440
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3441
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3493
3442
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3494
3443
|
# undef INSN_ATTR
|
|
3495
3444
|
|
|
@@ -3497,7 +3446,7 @@ INSN_ENTRY(opt_gt)
|
|
|
3497
3446
|
END_INSN(opt_gt);
|
|
3498
3447
|
}
|
|
3499
3448
|
|
|
3500
|
-
/* insn opt_ge(
|
|
3449
|
+
/* insn opt_ge(cd)(recv, obj)(val) */
|
|
3501
3450
|
INSN_ENTRY(opt_ge)
|
|
3502
3451
|
{
|
|
3503
3452
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -3505,9 +3454,8 @@ INSN_ENTRY(opt_ge)
|
|
|
3505
3454
|
DEBUG_ENTER_INSN("opt_ge");
|
|
3506
3455
|
|
|
3507
3456
|
/* ### Declare and assign variables. ### */
|
|
3508
|
-
|
|
3509
|
-
|
|
3510
|
-
# define INSN_ATTR(x) attr_ ## x ## _opt_ge(ci, cc)
|
|
3457
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3458
|
+
# define INSN_ATTR(x) attr_ ## x ## _opt_ge(cd)
|
|
3511
3459
|
bool leaf = INSN_ATTR(leaf);
|
|
3512
3460
|
VALUE recv = TOPN(1);
|
|
3513
3461
|
VALUE obj = TOPN(0);
|
|
@@ -3515,14 +3463,13 @@ INSN_ENTRY(opt_ge)
|
|
|
3515
3463
|
|
|
3516
3464
|
/* ### Instruction preambles. ### */
|
|
3517
3465
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3518
|
-
SETUP_CANARY();
|
|
3466
|
+
SETUP_CANARY(leaf);
|
|
3519
3467
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3520
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0,
|
|
3521
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cc);
|
|
3468
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3522
3469
|
|
|
3523
3470
|
/* ### Here we do the instruction body. ### */
|
|
3524
3471
|
# define NAME_OF_CURRENT_INSN opt_ge
|
|
3525
|
-
# line
|
|
3472
|
+
# line 1213 "insns.def"
|
|
3526
3473
|
{
|
|
3527
3474
|
val = vm_opt_ge(recv, obj);
|
|
3528
3475
|
|
|
@@ -3530,14 +3477,16 @@ INSN_ENTRY(opt_ge)
|
|
|
3530
3477
|
CALL_SIMPLE_METHOD();
|
|
3531
3478
|
}
|
|
3532
3479
|
}
|
|
3533
|
-
# line
|
|
3480
|
+
# line 3481 "vm.inc"
|
|
3534
3481
|
# undef NAME_OF_CURRENT_INSN
|
|
3535
3482
|
|
|
3536
3483
|
/* ### Instruction trailers. ### */
|
|
3537
3484
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3538
|
-
CHECK_CANARY();
|
|
3485
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3539
3486
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3540
3487
|
TOPN(0) = val;
|
|
3488
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3489
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3541
3490
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3542
3491
|
# undef INSN_ATTR
|
|
3543
3492
|
|
|
@@ -3545,7 +3494,7 @@ INSN_ENTRY(opt_ge)
|
|
|
3545
3494
|
END_INSN(opt_ge);
|
|
3546
3495
|
}
|
|
3547
3496
|
|
|
3548
|
-
/* insn opt_ltlt(
|
|
3497
|
+
/* insn opt_ltlt(cd)(recv, obj)(val) */
|
|
3549
3498
|
INSN_ENTRY(opt_ltlt)
|
|
3550
3499
|
{
|
|
3551
3500
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -3553,9 +3502,8 @@ INSN_ENTRY(opt_ltlt)
|
|
|
3553
3502
|
DEBUG_ENTER_INSN("opt_ltlt");
|
|
3554
3503
|
|
|
3555
3504
|
/* ### Declare and assign variables. ### */
|
|
3556
|
-
|
|
3557
|
-
|
|
3558
|
-
# define INSN_ATTR(x) attr_ ## x ## _opt_ltlt(ci, cc)
|
|
3505
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3506
|
+
# define INSN_ATTR(x) attr_ ## x ## _opt_ltlt(cd)
|
|
3559
3507
|
bool leaf = INSN_ATTR(leaf);
|
|
3560
3508
|
VALUE recv = TOPN(1);
|
|
3561
3509
|
VALUE obj = TOPN(0);
|
|
@@ -3563,14 +3511,13 @@ INSN_ENTRY(opt_ltlt)
|
|
|
3563
3511
|
|
|
3564
3512
|
/* ### Instruction preambles. ### */
|
|
3565
3513
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3566
|
-
SETUP_CANARY();
|
|
3514
|
+
SETUP_CANARY(leaf);
|
|
3567
3515
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3568
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0,
|
|
3569
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cc);
|
|
3516
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3570
3517
|
|
|
3571
3518
|
/* ### Here we do the instruction body. ### */
|
|
3572
3519
|
# define NAME_OF_CURRENT_INSN opt_ltlt
|
|
3573
|
-
# line
|
|
3520
|
+
# line 1231 "insns.def"
|
|
3574
3521
|
{
|
|
3575
3522
|
val = vm_opt_ltlt(recv, obj);
|
|
3576
3523
|
|
|
@@ -3578,14 +3525,16 @@ INSN_ENTRY(opt_ltlt)
|
|
|
3578
3525
|
CALL_SIMPLE_METHOD();
|
|
3579
3526
|
}
|
|
3580
3527
|
}
|
|
3581
|
-
# line
|
|
3528
|
+
# line 3529 "vm.inc"
|
|
3582
3529
|
# undef NAME_OF_CURRENT_INSN
|
|
3583
3530
|
|
|
3584
3531
|
/* ### Instruction trailers. ### */
|
|
3585
3532
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3586
|
-
CHECK_CANARY();
|
|
3533
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3587
3534
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3588
3535
|
TOPN(0) = val;
|
|
3536
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3537
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3589
3538
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3590
3539
|
# undef INSN_ATTR
|
|
3591
3540
|
|
|
@@ -3593,7 +3542,7 @@ INSN_ENTRY(opt_ltlt)
|
|
|
3593
3542
|
END_INSN(opt_ltlt);
|
|
3594
3543
|
}
|
|
3595
3544
|
|
|
3596
|
-
/* insn opt_and(
|
|
3545
|
+
/* insn opt_and(cd)(recv, obj)(val) */
|
|
3597
3546
|
INSN_ENTRY(opt_and)
|
|
3598
3547
|
{
|
|
3599
3548
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -3601,9 +3550,8 @@ INSN_ENTRY(opt_and)
|
|
|
3601
3550
|
DEBUG_ENTER_INSN("opt_and");
|
|
3602
3551
|
|
|
3603
3552
|
/* ### Declare and assign variables. ### */
|
|
3604
|
-
|
|
3605
|
-
|
|
3606
|
-
# define INSN_ATTR(x) attr_ ## x ## _opt_and(ci, cc)
|
|
3553
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3554
|
+
# define INSN_ATTR(x) attr_ ## x ## _opt_and(cd)
|
|
3607
3555
|
bool leaf = INSN_ATTR(leaf);
|
|
3608
3556
|
VALUE recv = TOPN(1);
|
|
3609
3557
|
VALUE obj = TOPN(0);
|
|
@@ -3611,14 +3559,13 @@ INSN_ENTRY(opt_and)
|
|
|
3611
3559
|
|
|
3612
3560
|
/* ### Instruction preambles. ### */
|
|
3613
3561
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3614
|
-
SETUP_CANARY();
|
|
3562
|
+
SETUP_CANARY(leaf);
|
|
3615
3563
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3616
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0,
|
|
3617
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cc);
|
|
3564
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3618
3565
|
|
|
3619
3566
|
/* ### Here we do the instruction body. ### */
|
|
3620
3567
|
# define NAME_OF_CURRENT_INSN opt_and
|
|
3621
|
-
# line
|
|
3568
|
+
# line 1245 "insns.def"
|
|
3622
3569
|
{
|
|
3623
3570
|
val = vm_opt_and(recv, obj);
|
|
3624
3571
|
|
|
@@ -3626,14 +3573,16 @@ INSN_ENTRY(opt_and)
|
|
|
3626
3573
|
CALL_SIMPLE_METHOD();
|
|
3627
3574
|
}
|
|
3628
3575
|
}
|
|
3629
|
-
# line
|
|
3576
|
+
# line 3577 "vm.inc"
|
|
3630
3577
|
# undef NAME_OF_CURRENT_INSN
|
|
3631
3578
|
|
|
3632
3579
|
/* ### Instruction trailers. ### */
|
|
3633
3580
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3634
|
-
CHECK_CANARY();
|
|
3581
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3635
3582
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3636
3583
|
TOPN(0) = val;
|
|
3584
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3585
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3637
3586
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3638
3587
|
# undef INSN_ATTR
|
|
3639
3588
|
|
|
@@ -3641,7 +3590,7 @@ INSN_ENTRY(opt_and)
|
|
|
3641
3590
|
END_INSN(opt_and);
|
|
3642
3591
|
}
|
|
3643
3592
|
|
|
3644
|
-
/* insn opt_or(
|
|
3593
|
+
/* insn opt_or(cd)(recv, obj)(val) */
|
|
3645
3594
|
INSN_ENTRY(opt_or)
|
|
3646
3595
|
{
|
|
3647
3596
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -3649,9 +3598,8 @@ INSN_ENTRY(opt_or)
|
|
|
3649
3598
|
DEBUG_ENTER_INSN("opt_or");
|
|
3650
3599
|
|
|
3651
3600
|
/* ### Declare and assign variables. ### */
|
|
3652
|
-
|
|
3653
|
-
|
|
3654
|
-
# define INSN_ATTR(x) attr_ ## x ## _opt_or(ci, cc)
|
|
3601
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3602
|
+
# define INSN_ATTR(x) attr_ ## x ## _opt_or(cd)
|
|
3655
3603
|
bool leaf = INSN_ATTR(leaf);
|
|
3656
3604
|
VALUE recv = TOPN(1);
|
|
3657
3605
|
VALUE obj = TOPN(0);
|
|
@@ -3659,14 +3607,13 @@ INSN_ENTRY(opt_or)
|
|
|
3659
3607
|
|
|
3660
3608
|
/* ### Instruction preambles. ### */
|
|
3661
3609
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3662
|
-
SETUP_CANARY();
|
|
3610
|
+
SETUP_CANARY(leaf);
|
|
3663
3611
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3664
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0,
|
|
3665
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cc);
|
|
3612
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3666
3613
|
|
|
3667
3614
|
/* ### Here we do the instruction body. ### */
|
|
3668
3615
|
# define NAME_OF_CURRENT_INSN opt_or
|
|
3669
|
-
# line
|
|
3616
|
+
# line 1259 "insns.def"
|
|
3670
3617
|
{
|
|
3671
3618
|
val = vm_opt_or(recv, obj);
|
|
3672
3619
|
|
|
@@ -3674,14 +3621,16 @@ INSN_ENTRY(opt_or)
|
|
|
3674
3621
|
CALL_SIMPLE_METHOD();
|
|
3675
3622
|
}
|
|
3676
3623
|
}
|
|
3677
|
-
# line
|
|
3624
|
+
# line 3625 "vm.inc"
|
|
3678
3625
|
# undef NAME_OF_CURRENT_INSN
|
|
3679
3626
|
|
|
3680
3627
|
/* ### Instruction trailers. ### */
|
|
3681
3628
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3682
|
-
CHECK_CANARY();
|
|
3629
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3683
3630
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3684
3631
|
TOPN(0) = val;
|
|
3632
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3633
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3685
3634
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3686
3635
|
# undef INSN_ATTR
|
|
3687
3636
|
|
|
@@ -3689,7 +3638,7 @@ INSN_ENTRY(opt_or)
|
|
|
3689
3638
|
END_INSN(opt_or);
|
|
3690
3639
|
}
|
|
3691
3640
|
|
|
3692
|
-
/* insn opt_aref(
|
|
3641
|
+
/* insn opt_aref(cd)(recv, obj)(val) */
|
|
3693
3642
|
INSN_ENTRY(opt_aref)
|
|
3694
3643
|
{
|
|
3695
3644
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -3697,9 +3646,8 @@ INSN_ENTRY(opt_aref)
|
|
|
3697
3646
|
DEBUG_ENTER_INSN("opt_aref");
|
|
3698
3647
|
|
|
3699
3648
|
/* ### Declare and assign variables. ### */
|
|
3700
|
-
|
|
3701
|
-
|
|
3702
|
-
# define INSN_ATTR(x) attr_ ## x ## _opt_aref(ci, cc)
|
|
3649
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3650
|
+
# define INSN_ATTR(x) attr_ ## x ## _opt_aref(cd)
|
|
3703
3651
|
bool leaf = INSN_ATTR(leaf);
|
|
3704
3652
|
VALUE recv = TOPN(1);
|
|
3705
3653
|
VALUE obj = TOPN(0);
|
|
@@ -3707,14 +3655,13 @@ INSN_ENTRY(opt_aref)
|
|
|
3707
3655
|
|
|
3708
3656
|
/* ### Instruction preambles. ### */
|
|
3709
3657
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3710
|
-
SETUP_CANARY();
|
|
3658
|
+
SETUP_CANARY(leaf);
|
|
3711
3659
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3712
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0,
|
|
3713
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cc);
|
|
3660
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3714
3661
|
|
|
3715
3662
|
/* ### Here we do the instruction body. ### */
|
|
3716
3663
|
# define NAME_OF_CURRENT_INSN opt_aref
|
|
3717
|
-
# line
|
|
3664
|
+
# line 1278 "insns.def"
|
|
3718
3665
|
{
|
|
3719
3666
|
val = vm_opt_aref(recv, obj);
|
|
3720
3667
|
|
|
@@ -3722,14 +3669,16 @@ INSN_ENTRY(opt_aref)
|
|
|
3722
3669
|
CALL_SIMPLE_METHOD();
|
|
3723
3670
|
}
|
|
3724
3671
|
}
|
|
3725
|
-
# line
|
|
3672
|
+
# line 3673 "vm.inc"
|
|
3726
3673
|
# undef NAME_OF_CURRENT_INSN
|
|
3727
3674
|
|
|
3728
3675
|
/* ### Instruction trailers. ### */
|
|
3729
3676
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3730
|
-
CHECK_CANARY();
|
|
3677
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3731
3678
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3732
3679
|
TOPN(0) = val;
|
|
3680
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3681
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3733
3682
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3734
3683
|
# undef INSN_ATTR
|
|
3735
3684
|
|
|
@@ -3737,7 +3686,7 @@ INSN_ENTRY(opt_aref)
|
|
|
3737
3686
|
END_INSN(opt_aref);
|
|
3738
3687
|
}
|
|
3739
3688
|
|
|
3740
|
-
/* insn opt_aset(
|
|
3689
|
+
/* insn opt_aset(cd)(recv, obj, set)(val) */
|
|
3741
3690
|
INSN_ENTRY(opt_aset)
|
|
3742
3691
|
{
|
|
3743
3692
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -3745,9 +3694,8 @@ INSN_ENTRY(opt_aset)
|
|
|
3745
3694
|
DEBUG_ENTER_INSN("opt_aset");
|
|
3746
3695
|
|
|
3747
3696
|
/* ### Declare and assign variables. ### */
|
|
3748
|
-
|
|
3749
|
-
|
|
3750
|
-
# define INSN_ATTR(x) attr_ ## x ## _opt_aset(ci, cc)
|
|
3697
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3698
|
+
# define INSN_ATTR(x) attr_ ## x ## _opt_aset(cd)
|
|
3751
3699
|
bool leaf = INSN_ATTR(leaf);
|
|
3752
3700
|
VALUE recv = TOPN(2);
|
|
3753
3701
|
VALUE obj = TOPN(1);
|
|
@@ -3756,14 +3704,13 @@ INSN_ENTRY(opt_aset)
|
|
|
3756
3704
|
|
|
3757
3705
|
/* ### Instruction preambles. ### */
|
|
3758
3706
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3759
|
-
SETUP_CANARY();
|
|
3707
|
+
SETUP_CANARY(leaf);
|
|
3760
3708
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3761
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0,
|
|
3762
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cc);
|
|
3709
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3763
3710
|
|
|
3764
3711
|
/* ### Here we do the instruction body. ### */
|
|
3765
3712
|
# define NAME_OF_CURRENT_INSN opt_aset
|
|
3766
|
-
# line
|
|
3713
|
+
# line 1295 "insns.def"
|
|
3767
3714
|
{
|
|
3768
3715
|
val = vm_opt_aset(recv, obj, set);
|
|
3769
3716
|
|
|
@@ -3771,14 +3718,16 @@ INSN_ENTRY(opt_aset)
|
|
|
3771
3718
|
CALL_SIMPLE_METHOD();
|
|
3772
3719
|
}
|
|
3773
3720
|
}
|
|
3774
|
-
# line
|
|
3721
|
+
# line 3722 "vm.inc"
|
|
3775
3722
|
# undef NAME_OF_CURRENT_INSN
|
|
3776
3723
|
|
|
3777
3724
|
/* ### Instruction trailers. ### */
|
|
3778
3725
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3779
|
-
CHECK_CANARY();
|
|
3726
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3780
3727
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3781
3728
|
TOPN(0) = val;
|
|
3729
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3730
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3782
3731
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3783
3732
|
# undef INSN_ATTR
|
|
3784
3733
|
|
|
@@ -3786,7 +3735,7 @@ INSN_ENTRY(opt_aset)
|
|
|
3786
3735
|
END_INSN(opt_aset);
|
|
3787
3736
|
}
|
|
3788
3737
|
|
|
3789
|
-
/* insn opt_aset_with(key,
|
|
3738
|
+
/* insn opt_aset_with(key, cd)(recv, val)(val) */
|
|
3790
3739
|
INSN_ENTRY(opt_aset_with)
|
|
3791
3740
|
{
|
|
3792
3741
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -3795,24 +3744,22 @@ INSN_ENTRY(opt_aset_with)
|
|
|
3795
3744
|
|
|
3796
3745
|
/* ### Declare and assign variables. ### */
|
|
3797
3746
|
VALUE key = (VALUE)GET_OPERAND(1);
|
|
3798
|
-
|
|
3799
|
-
|
|
3800
|
-
# define INSN_ATTR(x) attr_ ## x ## _opt_aset_with(key, ci, cc)
|
|
3747
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(2);
|
|
3748
|
+
# define INSN_ATTR(x) attr_ ## x ## _opt_aset_with(key, cd)
|
|
3801
3749
|
bool leaf = INSN_ATTR(leaf);
|
|
3802
3750
|
VALUE recv = TOPN(1);
|
|
3803
3751
|
VALUE val = TOPN(0);
|
|
3804
3752
|
|
|
3805
3753
|
/* ### Instruction preambles. ### */
|
|
3806
3754
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3807
|
-
SETUP_CANARY();
|
|
3755
|
+
SETUP_CANARY(leaf);
|
|
3808
3756
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3809
3757
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, key);
|
|
3810
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1,
|
|
3811
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 2, cc);
|
|
3758
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cd);
|
|
3812
3759
|
|
|
3813
3760
|
/* ### Here we do the instruction body. ### */
|
|
3814
3761
|
# define NAME_OF_CURRENT_INSN opt_aset_with
|
|
3815
|
-
# line
|
|
3762
|
+
# line 1311 "insns.def"
|
|
3816
3763
|
{
|
|
3817
3764
|
VALUE tmp = vm_opt_aset_with(recv, key, val);
|
|
3818
3765
|
|
|
@@ -3827,14 +3774,16 @@ INSN_ENTRY(opt_aset_with)
|
|
|
3827
3774
|
CALL_SIMPLE_METHOD();
|
|
3828
3775
|
}
|
|
3829
3776
|
}
|
|
3830
|
-
# line
|
|
3777
|
+
# line 3778 "vm.inc"
|
|
3831
3778
|
# undef NAME_OF_CURRENT_INSN
|
|
3832
3779
|
|
|
3833
3780
|
/* ### Instruction trailers. ### */
|
|
3834
3781
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3835
|
-
CHECK_CANARY();
|
|
3782
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3836
3783
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3837
3784
|
TOPN(0) = val;
|
|
3785
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3786
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3838
3787
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3839
3788
|
# undef INSN_ATTR
|
|
3840
3789
|
|
|
@@ -3842,7 +3791,7 @@ INSN_ENTRY(opt_aset_with)
|
|
|
3842
3791
|
END_INSN(opt_aset_with);
|
|
3843
3792
|
}
|
|
3844
3793
|
|
|
3845
|
-
/* insn opt_aref_with(key,
|
|
3794
|
+
/* insn opt_aref_with(key, cd)(recv)(val) */
|
|
3846
3795
|
INSN_ENTRY(opt_aref_with)
|
|
3847
3796
|
{
|
|
3848
3797
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -3851,24 +3800,22 @@ INSN_ENTRY(opt_aref_with)
|
|
|
3851
3800
|
|
|
3852
3801
|
/* ### Declare and assign variables. ### */
|
|
3853
3802
|
VALUE key = (VALUE)GET_OPERAND(1);
|
|
3854
|
-
|
|
3855
|
-
|
|
3856
|
-
# define INSN_ATTR(x) attr_ ## x ## _opt_aref_with(key, ci, cc)
|
|
3803
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(2);
|
|
3804
|
+
# define INSN_ATTR(x) attr_ ## x ## _opt_aref_with(key, cd)
|
|
3857
3805
|
bool leaf = INSN_ATTR(leaf);
|
|
3858
3806
|
VALUE recv = TOPN(0);
|
|
3859
3807
|
VALUE val;
|
|
3860
3808
|
|
|
3861
3809
|
/* ### Instruction preambles. ### */
|
|
3862
3810
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3863
|
-
SETUP_CANARY();
|
|
3811
|
+
SETUP_CANARY(leaf);
|
|
3864
3812
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3865
3813
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, key);
|
|
3866
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1,
|
|
3867
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 2, cc);
|
|
3814
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cd);
|
|
3868
3815
|
|
|
3869
3816
|
/* ### Here we do the instruction body. ### */
|
|
3870
3817
|
# define NAME_OF_CURRENT_INSN opt_aref_with
|
|
3871
|
-
# line
|
|
3818
|
+
# line 1334 "insns.def"
|
|
3872
3819
|
{
|
|
3873
3820
|
val = vm_opt_aref_with(recv, key);
|
|
3874
3821
|
|
|
@@ -3879,14 +3826,16 @@ INSN_ENTRY(opt_aref_with)
|
|
|
3879
3826
|
CALL_SIMPLE_METHOD();
|
|
3880
3827
|
}
|
|
3881
3828
|
}
|
|
3882
|
-
# line
|
|
3829
|
+
# line 3830 "vm.inc"
|
|
3883
3830
|
# undef NAME_OF_CURRENT_INSN
|
|
3884
3831
|
|
|
3885
3832
|
/* ### Instruction trailers. ### */
|
|
3886
3833
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3887
|
-
CHECK_CANARY();
|
|
3834
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3888
3835
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3889
3836
|
TOPN(0) = val;
|
|
3837
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3838
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3890
3839
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3891
3840
|
# undef INSN_ATTR
|
|
3892
3841
|
|
|
@@ -3894,7 +3843,7 @@ INSN_ENTRY(opt_aref_with)
|
|
|
3894
3843
|
END_INSN(opt_aref_with);
|
|
3895
3844
|
}
|
|
3896
3845
|
|
|
3897
|
-
/* insn opt_length(
|
|
3846
|
+
/* insn opt_length(cd)(recv)(val) */
|
|
3898
3847
|
INSN_ENTRY(opt_length)
|
|
3899
3848
|
{
|
|
3900
3849
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -3902,23 +3851,21 @@ INSN_ENTRY(opt_length)
|
|
|
3902
3851
|
DEBUG_ENTER_INSN("opt_length");
|
|
3903
3852
|
|
|
3904
3853
|
/* ### Declare and assign variables. ### */
|
|
3905
|
-
|
|
3906
|
-
|
|
3907
|
-
# define INSN_ATTR(x) attr_ ## x ## _opt_length(ci, cc)
|
|
3854
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3855
|
+
# define INSN_ATTR(x) attr_ ## x ## _opt_length(cd)
|
|
3908
3856
|
bool leaf = INSN_ATTR(leaf);
|
|
3909
3857
|
VALUE recv = TOPN(0);
|
|
3910
3858
|
VALUE val;
|
|
3911
3859
|
|
|
3912
3860
|
/* ### Instruction preambles. ### */
|
|
3913
3861
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3914
|
-
SETUP_CANARY();
|
|
3862
|
+
SETUP_CANARY(leaf);
|
|
3915
3863
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3916
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0,
|
|
3917
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cc);
|
|
3864
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3918
3865
|
|
|
3919
3866
|
/* ### Here we do the instruction body. ### */
|
|
3920
3867
|
# define NAME_OF_CURRENT_INSN opt_length
|
|
3921
|
-
# line
|
|
3868
|
+
# line 1351 "insns.def"
|
|
3922
3869
|
{
|
|
3923
3870
|
val = vm_opt_length(recv, BOP_LENGTH);
|
|
3924
3871
|
|
|
@@ -3926,14 +3873,16 @@ INSN_ENTRY(opt_length)
|
|
|
3926
3873
|
CALL_SIMPLE_METHOD();
|
|
3927
3874
|
}
|
|
3928
3875
|
}
|
|
3929
|
-
# line
|
|
3876
|
+
# line 3877 "vm.inc"
|
|
3930
3877
|
# undef NAME_OF_CURRENT_INSN
|
|
3931
3878
|
|
|
3932
3879
|
/* ### Instruction trailers. ### */
|
|
3933
3880
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3934
|
-
CHECK_CANARY();
|
|
3881
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3935
3882
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3936
3883
|
TOPN(0) = val;
|
|
3884
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3885
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3937
3886
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3938
3887
|
# undef INSN_ATTR
|
|
3939
3888
|
|
|
@@ -3941,7 +3890,7 @@ INSN_ENTRY(opt_length)
|
|
|
3941
3890
|
END_INSN(opt_length);
|
|
3942
3891
|
}
|
|
3943
3892
|
|
|
3944
|
-
/* insn opt_size(
|
|
3893
|
+
/* insn opt_size(cd)(recv)(val) */
|
|
3945
3894
|
INSN_ENTRY(opt_size)
|
|
3946
3895
|
{
|
|
3947
3896
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -3949,23 +3898,21 @@ INSN_ENTRY(opt_size)
|
|
|
3949
3898
|
DEBUG_ENTER_INSN("opt_size");
|
|
3950
3899
|
|
|
3951
3900
|
/* ### Declare and assign variables. ### */
|
|
3952
|
-
|
|
3953
|
-
|
|
3954
|
-
# define INSN_ATTR(x) attr_ ## x ## _opt_size(ci, cc)
|
|
3901
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3902
|
+
# define INSN_ATTR(x) attr_ ## x ## _opt_size(cd)
|
|
3955
3903
|
bool leaf = INSN_ATTR(leaf);
|
|
3956
3904
|
VALUE recv = TOPN(0);
|
|
3957
3905
|
VALUE val;
|
|
3958
3906
|
|
|
3959
3907
|
/* ### Instruction preambles. ### */
|
|
3960
3908
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
3961
|
-
SETUP_CANARY();
|
|
3909
|
+
SETUP_CANARY(leaf);
|
|
3962
3910
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
3963
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0,
|
|
3964
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cc);
|
|
3911
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
3965
3912
|
|
|
3966
3913
|
/* ### Here we do the instruction body. ### */
|
|
3967
3914
|
# define NAME_OF_CURRENT_INSN opt_size
|
|
3968
|
-
# line
|
|
3915
|
+
# line 1365 "insns.def"
|
|
3969
3916
|
{
|
|
3970
3917
|
val = vm_opt_length(recv, BOP_SIZE);
|
|
3971
3918
|
|
|
@@ -3973,14 +3920,16 @@ INSN_ENTRY(opt_size)
|
|
|
3973
3920
|
CALL_SIMPLE_METHOD();
|
|
3974
3921
|
}
|
|
3975
3922
|
}
|
|
3976
|
-
# line
|
|
3923
|
+
# line 3924 "vm.inc"
|
|
3977
3924
|
# undef NAME_OF_CURRENT_INSN
|
|
3978
3925
|
|
|
3979
3926
|
/* ### Instruction trailers. ### */
|
|
3980
3927
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
3981
|
-
CHECK_CANARY();
|
|
3928
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
3982
3929
|
INC_SP(INSN_ATTR(sp_inc));
|
|
3983
3930
|
TOPN(0) = val;
|
|
3931
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3932
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
3984
3933
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
3985
3934
|
# undef INSN_ATTR
|
|
3986
3935
|
|
|
@@ -3988,7 +3937,7 @@ INSN_ENTRY(opt_size)
|
|
|
3988
3937
|
END_INSN(opt_size);
|
|
3989
3938
|
}
|
|
3990
3939
|
|
|
3991
|
-
/* insn opt_empty_p(
|
|
3940
|
+
/* insn opt_empty_p(cd)(recv)(val) */
|
|
3992
3941
|
INSN_ENTRY(opt_empty_p)
|
|
3993
3942
|
{
|
|
3994
3943
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -3996,23 +3945,21 @@ INSN_ENTRY(opt_empty_p)
|
|
|
3996
3945
|
DEBUG_ENTER_INSN("opt_empty_p");
|
|
3997
3946
|
|
|
3998
3947
|
/* ### Declare and assign variables. ### */
|
|
3999
|
-
|
|
4000
|
-
|
|
4001
|
-
# define INSN_ATTR(x) attr_ ## x ## _opt_empty_p(ci, cc)
|
|
3948
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3949
|
+
# define INSN_ATTR(x) attr_ ## x ## _opt_empty_p(cd)
|
|
4002
3950
|
bool leaf = INSN_ATTR(leaf);
|
|
4003
3951
|
VALUE recv = TOPN(0);
|
|
4004
3952
|
VALUE val;
|
|
4005
3953
|
|
|
4006
3954
|
/* ### Instruction preambles. ### */
|
|
4007
3955
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
4008
|
-
SETUP_CANARY();
|
|
3956
|
+
SETUP_CANARY(leaf);
|
|
4009
3957
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
4010
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0,
|
|
4011
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cc);
|
|
3958
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
4012
3959
|
|
|
4013
3960
|
/* ### Here we do the instruction body. ### */
|
|
4014
3961
|
# define NAME_OF_CURRENT_INSN opt_empty_p
|
|
4015
|
-
# line
|
|
3962
|
+
# line 1379 "insns.def"
|
|
4016
3963
|
{
|
|
4017
3964
|
val = vm_opt_empty_p(recv);
|
|
4018
3965
|
|
|
@@ -4020,14 +3967,16 @@ INSN_ENTRY(opt_empty_p)
|
|
|
4020
3967
|
CALL_SIMPLE_METHOD();
|
|
4021
3968
|
}
|
|
4022
3969
|
}
|
|
4023
|
-
# line
|
|
3970
|
+
# line 3971 "vm.inc"
|
|
4024
3971
|
# undef NAME_OF_CURRENT_INSN
|
|
4025
3972
|
|
|
4026
3973
|
/* ### Instruction trailers. ### */
|
|
4027
3974
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
4028
|
-
CHECK_CANARY();
|
|
3975
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
4029
3976
|
INC_SP(INSN_ATTR(sp_inc));
|
|
4030
3977
|
TOPN(0) = val;
|
|
3978
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
3979
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
4031
3980
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4032
3981
|
# undef INSN_ATTR
|
|
4033
3982
|
|
|
@@ -4035,7 +3984,7 @@ INSN_ENTRY(opt_empty_p)
|
|
|
4035
3984
|
END_INSN(opt_empty_p);
|
|
4036
3985
|
}
|
|
4037
3986
|
|
|
4038
|
-
/* insn opt_succ(
|
|
3987
|
+
/* insn opt_succ(cd)(recv)(val) */
|
|
4039
3988
|
INSN_ENTRY(opt_succ)
|
|
4040
3989
|
{
|
|
4041
3990
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -4043,23 +3992,21 @@ INSN_ENTRY(opt_succ)
|
|
|
4043
3992
|
DEBUG_ENTER_INSN("opt_succ");
|
|
4044
3993
|
|
|
4045
3994
|
/* ### Declare and assign variables. ### */
|
|
4046
|
-
|
|
4047
|
-
|
|
4048
|
-
# define INSN_ATTR(x) attr_ ## x ## _opt_succ(ci, cc)
|
|
3995
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
3996
|
+
# define INSN_ATTR(x) attr_ ## x ## _opt_succ(cd)
|
|
4049
3997
|
bool leaf = INSN_ATTR(leaf);
|
|
4050
3998
|
VALUE recv = TOPN(0);
|
|
4051
3999
|
VALUE val;
|
|
4052
4000
|
|
|
4053
4001
|
/* ### Instruction preambles. ### */
|
|
4054
4002
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
4055
|
-
SETUP_CANARY();
|
|
4003
|
+
SETUP_CANARY(leaf);
|
|
4056
4004
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
4057
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0,
|
|
4058
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cc);
|
|
4005
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
4059
4006
|
|
|
4060
4007
|
/* ### Here we do the instruction body. ### */
|
|
4061
4008
|
# define NAME_OF_CURRENT_INSN opt_succ
|
|
4062
|
-
# line
|
|
4009
|
+
# line 1393 "insns.def"
|
|
4063
4010
|
{
|
|
4064
4011
|
val = vm_opt_succ(recv);
|
|
4065
4012
|
|
|
@@ -4067,14 +4014,16 @@ INSN_ENTRY(opt_succ)
|
|
|
4067
4014
|
CALL_SIMPLE_METHOD();
|
|
4068
4015
|
}
|
|
4069
4016
|
}
|
|
4070
|
-
# line
|
|
4017
|
+
# line 4018 "vm.inc"
|
|
4071
4018
|
# undef NAME_OF_CURRENT_INSN
|
|
4072
4019
|
|
|
4073
4020
|
/* ### Instruction trailers. ### */
|
|
4074
4021
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
4075
|
-
CHECK_CANARY();
|
|
4022
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
4076
4023
|
INC_SP(INSN_ATTR(sp_inc));
|
|
4077
4024
|
TOPN(0) = val;
|
|
4025
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
4026
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
4078
4027
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4079
4028
|
# undef INSN_ATTR
|
|
4080
4029
|
|
|
@@ -4082,7 +4031,7 @@ INSN_ENTRY(opt_succ)
|
|
|
4082
4031
|
END_INSN(opt_succ);
|
|
4083
4032
|
}
|
|
4084
4033
|
|
|
4085
|
-
/* insn opt_not(
|
|
4034
|
+
/* insn opt_not(cd)(recv)(val) */
|
|
4086
4035
|
INSN_ENTRY(opt_not)
|
|
4087
4036
|
{
|
|
4088
4037
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -4090,38 +4039,38 @@ INSN_ENTRY(opt_not)
|
|
|
4090
4039
|
DEBUG_ENTER_INSN("opt_not");
|
|
4091
4040
|
|
|
4092
4041
|
/* ### Declare and assign variables. ### */
|
|
4093
|
-
|
|
4094
|
-
|
|
4095
|
-
# define INSN_ATTR(x) attr_ ## x ## _opt_not(ci, cc)
|
|
4042
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
4043
|
+
# define INSN_ATTR(x) attr_ ## x ## _opt_not(cd)
|
|
4096
4044
|
bool leaf = INSN_ATTR(leaf);
|
|
4097
4045
|
VALUE recv = TOPN(0);
|
|
4098
4046
|
VALUE val;
|
|
4099
4047
|
|
|
4100
4048
|
/* ### Instruction preambles. ### */
|
|
4101
4049
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
4102
|
-
SETUP_CANARY();
|
|
4050
|
+
SETUP_CANARY(leaf);
|
|
4103
4051
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
4104
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0,
|
|
4105
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cc);
|
|
4052
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
4106
4053
|
|
|
4107
4054
|
/* ### Here we do the instruction body. ### */
|
|
4108
4055
|
# define NAME_OF_CURRENT_INSN opt_not
|
|
4109
|
-
# line
|
|
4056
|
+
# line 1407 "insns.def"
|
|
4110
4057
|
{
|
|
4111
|
-
val = vm_opt_not(
|
|
4058
|
+
val = vm_opt_not(GET_ISEQ(), cd, recv);
|
|
4112
4059
|
|
|
4113
4060
|
if (val == Qundef) {
|
|
4114
4061
|
CALL_SIMPLE_METHOD();
|
|
4115
4062
|
}
|
|
4116
4063
|
}
|
|
4117
|
-
# line
|
|
4064
|
+
# line 4065 "vm.inc"
|
|
4118
4065
|
# undef NAME_OF_CURRENT_INSN
|
|
4119
4066
|
|
|
4120
4067
|
/* ### Instruction trailers. ### */
|
|
4121
4068
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
4122
|
-
CHECK_CANARY();
|
|
4069
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
4123
4070
|
INC_SP(INSN_ATTR(sp_inc));
|
|
4124
4071
|
TOPN(0) = val;
|
|
4072
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
4073
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
4125
4074
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4126
4075
|
# undef INSN_ATTR
|
|
4127
4076
|
|
|
@@ -4129,7 +4078,7 @@ INSN_ENTRY(opt_not)
|
|
|
4129
4078
|
END_INSN(opt_not);
|
|
4130
4079
|
}
|
|
4131
4080
|
|
|
4132
|
-
/* insn opt_regexpmatch2(
|
|
4081
|
+
/* insn opt_regexpmatch2(cd)(obj2, obj1)(val) */
|
|
4133
4082
|
INSN_ENTRY(opt_regexpmatch2)
|
|
4134
4083
|
{
|
|
4135
4084
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
@@ -4137,9 +4086,8 @@ INSN_ENTRY(opt_regexpmatch2)
|
|
|
4137
4086
|
DEBUG_ENTER_INSN("opt_regexpmatch2");
|
|
4138
4087
|
|
|
4139
4088
|
/* ### Declare and assign variables. ### */
|
|
4140
|
-
|
|
4141
|
-
|
|
4142
|
-
# define INSN_ATTR(x) attr_ ## x ## _opt_regexpmatch2(ci, cc)
|
|
4089
|
+
CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
|
|
4090
|
+
# define INSN_ATTR(x) attr_ ## x ## _opt_regexpmatch2(cd)
|
|
4143
4091
|
bool leaf = INSN_ATTR(leaf);
|
|
4144
4092
|
VALUE obj2 = TOPN(1);
|
|
4145
4093
|
VALUE obj1 = TOPN(0);
|
|
@@ -4147,14 +4095,13 @@ INSN_ENTRY(opt_regexpmatch2)
|
|
|
4147
4095
|
|
|
4148
4096
|
/* ### Instruction preambles. ### */
|
|
4149
4097
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
4150
|
-
SETUP_CANARY();
|
|
4098
|
+
SETUP_CANARY(leaf);
|
|
4151
4099
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
4152
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0,
|
|
4153
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cc);
|
|
4100
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
|
|
4154
4101
|
|
|
4155
4102
|
/* ### Here we do the instruction body. ### */
|
|
4156
4103
|
# define NAME_OF_CURRENT_INSN opt_regexpmatch2
|
|
4157
|
-
# line
|
|
4104
|
+
# line 1422 "insns.def"
|
|
4158
4105
|
{
|
|
4159
4106
|
val = vm_opt_regexpmatch2(obj2, obj1);
|
|
4160
4107
|
|
|
@@ -4162,14 +4109,16 @@ INSN_ENTRY(opt_regexpmatch2)
|
|
|
4162
4109
|
CALL_SIMPLE_METHOD();
|
|
4163
4110
|
}
|
|
4164
4111
|
}
|
|
4165
|
-
# line
|
|
4112
|
+
# line 4113 "vm.inc"
|
|
4166
4113
|
# undef NAME_OF_CURRENT_INSN
|
|
4167
4114
|
|
|
4168
4115
|
/* ### Instruction trailers. ### */
|
|
4169
4116
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
4170
|
-
CHECK_CANARY();
|
|
4117
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
4171
4118
|
INC_SP(INSN_ATTR(sp_inc));
|
|
4172
4119
|
TOPN(0) = val;
|
|
4120
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
4121
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
4173
4122
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4174
4123
|
# undef INSN_ATTR
|
|
4175
4124
|
|
|
@@ -4177,51 +4126,148 @@ INSN_ENTRY(opt_regexpmatch2)
|
|
|
4177
4126
|
END_INSN(opt_regexpmatch2);
|
|
4178
4127
|
}
|
|
4179
4128
|
|
|
4180
|
-
/* insn
|
|
4181
|
-
INSN_ENTRY(
|
|
4129
|
+
/* insn invokebuiltin(bf)(...)(val) */
|
|
4130
|
+
INSN_ENTRY(invokebuiltin)
|
|
4182
4131
|
{
|
|
4183
4132
|
/* ### Declare that we have just entered into an instruction. ### */
|
|
4184
|
-
START_OF_ORIGINAL_INSN(
|
|
4185
|
-
DEBUG_ENTER_INSN("
|
|
4133
|
+
START_OF_ORIGINAL_INSN(invokebuiltin);
|
|
4134
|
+
DEBUG_ENTER_INSN("invokebuiltin");
|
|
4186
4135
|
|
|
4187
4136
|
/* ### Declare and assign variables. ### */
|
|
4188
|
-
|
|
4189
|
-
# define INSN_ATTR(x) attr_ ## x ##
|
|
4137
|
+
RB_BUILTIN bf = (RB_BUILTIN)GET_OPERAND(1);
|
|
4138
|
+
# define INSN_ATTR(x) attr_ ## x ## _invokebuiltin(bf)
|
|
4190
4139
|
bool leaf = INSN_ATTR(leaf);
|
|
4140
|
+
VALUE val;
|
|
4191
4141
|
|
|
4192
4142
|
/* ### Instruction preambles. ### */
|
|
4193
4143
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
4194
|
-
|
|
4195
|
-
SETUP_CANARY();
|
|
4144
|
+
SETUP_CANARY(leaf);
|
|
4196
4145
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
4197
|
-
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0,
|
|
4146
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, bf);
|
|
4198
4147
|
|
|
4199
4148
|
/* ### Here we do the instruction body. ### */
|
|
4200
|
-
# define NAME_OF_CURRENT_INSN
|
|
4201
|
-
# line
|
|
4149
|
+
# define NAME_OF_CURRENT_INSN invokebuiltin
|
|
4150
|
+
# line 1459 "insns.def"
|
|
4202
4151
|
{
|
|
4203
|
-
|
|
4152
|
+
val = vm_invoke_builtin(ec, reg_cfp, bf, STACK_ADDR_FROM_TOP(bf->argc));
|
|
4153
|
+
}
|
|
4154
|
+
# line 4155 "vm.inc"
|
|
4155
|
+
# undef NAME_OF_CURRENT_INSN
|
|
4204
4156
|
|
|
4205
|
-
|
|
4206
|
-
|
|
4207
|
-
|
|
4208
|
-
|
|
4209
|
-
|
|
4157
|
+
/* ### Instruction trailers. ### */
|
|
4158
|
+
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
4159
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
4160
|
+
INC_SP(INSN_ATTR(sp_inc));
|
|
4161
|
+
TOPN(0) = val;
|
|
4162
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
4163
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
4164
|
+
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4165
|
+
# undef INSN_ATTR
|
|
4210
4166
|
|
|
4211
|
-
|
|
4212
|
-
|
|
4167
|
+
/* ### Leave the instruction. ### */
|
|
4168
|
+
END_INSN(invokebuiltin);
|
|
4213
4169
|
}
|
|
4214
|
-
|
|
4170
|
+
|
|
4171
|
+
/* insn opt_invokebuiltin_delegate(bf, index)()(val) */
|
|
4172
|
+
INSN_ENTRY(opt_invokebuiltin_delegate)
|
|
4173
|
+
{
|
|
4174
|
+
/* ### Declare that we have just entered into an instruction. ### */
|
|
4175
|
+
START_OF_ORIGINAL_INSN(opt_invokebuiltin_delegate);
|
|
4176
|
+
DEBUG_ENTER_INSN("opt_invokebuiltin_delegate");
|
|
4177
|
+
|
|
4178
|
+
/* ### Declare and assign variables. ### */
|
|
4179
|
+
RB_BUILTIN bf = (RB_BUILTIN)GET_OPERAND(1);
|
|
4180
|
+
rb_num_t index = (rb_num_t)GET_OPERAND(2);
|
|
4181
|
+
# define INSN_ATTR(x) attr_ ## x ## _opt_invokebuiltin_delegate(bf, index)
|
|
4182
|
+
bool leaf = INSN_ATTR(leaf);
|
|
4183
|
+
VALUE val;
|
|
4184
|
+
|
|
4185
|
+
/* ### Instruction preambles. ### */
|
|
4186
|
+
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
4187
|
+
SETUP_CANARY(leaf);
|
|
4188
|
+
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
4189
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, bf);
|
|
4190
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, index);
|
|
4191
|
+
|
|
4192
|
+
/* ### Here we do the instruction body. ### */
|
|
4193
|
+
# define NAME_OF_CURRENT_INSN opt_invokebuiltin_delegate
|
|
4194
|
+
# line 1470 "insns.def"
|
|
4195
|
+
{
|
|
4196
|
+
val = vm_invoke_builtin_delegate(ec, reg_cfp, bf, (unsigned int)index);
|
|
4197
|
+
}
|
|
4198
|
+
# line 4199 "vm.inc"
|
|
4215
4199
|
# undef NAME_OF_CURRENT_INSN
|
|
4216
4200
|
|
|
4217
4201
|
/* ### Instruction trailers. ### */
|
|
4218
4202
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
4219
|
-
CHECK_CANARY();
|
|
4203
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
4204
|
+
INC_SP(INSN_ATTR(sp_inc));
|
|
4205
|
+
TOPN(0) = val;
|
|
4206
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
4207
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
4220
4208
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4221
4209
|
# undef INSN_ATTR
|
|
4222
4210
|
|
|
4223
4211
|
/* ### Leave the instruction. ### */
|
|
4224
|
-
END_INSN(
|
|
4212
|
+
END_INSN(opt_invokebuiltin_delegate);
|
|
4213
|
+
}
|
|
4214
|
+
|
|
4215
|
+
/* insn opt_invokebuiltin_delegate_leave(bf, index)()(val) */
|
|
4216
|
+
INSN_ENTRY(opt_invokebuiltin_delegate_leave)
|
|
4217
|
+
{
|
|
4218
|
+
/* ### Declare that we have just entered into an instruction. ### */
|
|
4219
|
+
START_OF_ORIGINAL_INSN(opt_invokebuiltin_delegate_leave);
|
|
4220
|
+
DEBUG_ENTER_INSN("opt_invokebuiltin_delegate_leave");
|
|
4221
|
+
|
|
4222
|
+
/* ### Declare and assign variables. ### */
|
|
4223
|
+
RB_BUILTIN bf = (RB_BUILTIN)GET_OPERAND(1);
|
|
4224
|
+
rb_num_t index = (rb_num_t)GET_OPERAND(2);
|
|
4225
|
+
# define INSN_ATTR(x) attr_ ## x ## _opt_invokebuiltin_delegate_leave(bf, index)
|
|
4226
|
+
bool leaf = INSN_ATTR(leaf);
|
|
4227
|
+
VALUE val;
|
|
4228
|
+
|
|
4229
|
+
/* ### Instruction preambles. ### */
|
|
4230
|
+
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
4231
|
+
SETUP_CANARY(leaf);
|
|
4232
|
+
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
4233
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, bf);
|
|
4234
|
+
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, index);
|
|
4235
|
+
|
|
4236
|
+
/* ### Here we do the instruction body. ### */
|
|
4237
|
+
# define NAME_OF_CURRENT_INSN opt_invokebuiltin_delegate_leave
|
|
4238
|
+
# line 1481 "insns.def"
|
|
4239
|
+
{
|
|
4240
|
+
val = vm_invoke_builtin_delegate(ec, reg_cfp, bf, (unsigned int)index);
|
|
4241
|
+
|
|
4242
|
+
/* leave fastpath */
|
|
4243
|
+
/* TracePoint/return fallbacks this insn to opt_invokebuiltin_delegate */
|
|
4244
|
+
if (vm_pop_frame(ec, GET_CFP(), GET_EP())) {
|
|
4245
|
+
# if OPT_CALL_THREADED_CODE
|
|
4246
|
+
rb_ec_thread_ptr(ec)->retval = val;
|
|
4247
|
+
return 0;
|
|
4248
|
+
# else
|
|
4249
|
+
return val;
|
|
4250
|
+
# endif
|
|
4251
|
+
}
|
|
4252
|
+
else {
|
|
4253
|
+
RESTORE_REGS();
|
|
4254
|
+
}
|
|
4255
|
+
}
|
|
4256
|
+
# line 4257 "vm.inc"
|
|
4257
|
+
# undef NAME_OF_CURRENT_INSN
|
|
4258
|
+
|
|
4259
|
+
/* ### Instruction trailers. ### */
|
|
4260
|
+
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
4261
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
4262
|
+
INC_SP(INSN_ATTR(sp_inc));
|
|
4263
|
+
TOPN(0) = val;
|
|
4264
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
4265
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
4266
|
+
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4267
|
+
# undef INSN_ATTR
|
|
4268
|
+
|
|
4269
|
+
/* ### Leave the instruction. ### */
|
|
4270
|
+
END_INSN(opt_invokebuiltin_delegate_leave);
|
|
4225
4271
|
}
|
|
4226
4272
|
|
|
4227
4273
|
/* insn getlocal_WC_0(idx)()(val) */
|
|
@@ -4234,7 +4280,7 @@ INSN_ENTRY(getlocal_WC_0)
|
|
|
4234
4280
|
/* ### Declare and assign variables. ### */
|
|
4235
4281
|
#line 10 "defs/opt_operand.def"
|
|
4236
4282
|
const rb_num_t level = 0;
|
|
4237
|
-
#line
|
|
4283
|
+
#line 4284 "vm.inc"
|
|
4238
4284
|
lindex_t idx = (lindex_t)GET_OPERAND(1);
|
|
4239
4285
|
# define INSN_ATTR(x) attr_ ## x ## _getlocal_WC_0(idx)
|
|
4240
4286
|
bool leaf = INSN_ATTR(leaf);
|
|
@@ -4242,7 +4288,7 @@ INSN_ENTRY(getlocal_WC_0)
|
|
|
4242
4288
|
|
|
4243
4289
|
/* ### Instruction preambles. ### */
|
|
4244
4290
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
4245
|
-
SETUP_CANARY();
|
|
4291
|
+
SETUP_CANARY(leaf);
|
|
4246
4292
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
4247
4293
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, idx);
|
|
4248
4294
|
|
|
@@ -4254,14 +4300,16 @@ INSN_ENTRY(getlocal_WC_0)
|
|
|
4254
4300
|
RB_DEBUG_COUNTER_INC(lvar_get);
|
|
4255
4301
|
(void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
|
|
4256
4302
|
}
|
|
4257
|
-
# line
|
|
4303
|
+
# line 4304 "vm.inc"
|
|
4258
4304
|
# undef NAME_OF_CURRENT_INSN
|
|
4259
4305
|
|
|
4260
4306
|
/* ### Instruction trailers. ### */
|
|
4261
4307
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
4262
|
-
CHECK_CANARY();
|
|
4308
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
4263
4309
|
INC_SP(INSN_ATTR(sp_inc));
|
|
4264
4310
|
TOPN(0) = val;
|
|
4311
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
4312
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
4265
4313
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4266
4314
|
# undef INSN_ATTR
|
|
4267
4315
|
|
|
@@ -4279,7 +4327,7 @@ INSN_ENTRY(getlocal_WC_1)
|
|
|
4279
4327
|
/* ### Declare and assign variables. ### */
|
|
4280
4328
|
#line 11 "defs/opt_operand.def"
|
|
4281
4329
|
const rb_num_t level = 1;
|
|
4282
|
-
#line
|
|
4330
|
+
#line 4331 "vm.inc"
|
|
4283
4331
|
lindex_t idx = (lindex_t)GET_OPERAND(1);
|
|
4284
4332
|
# define INSN_ATTR(x) attr_ ## x ## _getlocal_WC_1(idx)
|
|
4285
4333
|
bool leaf = INSN_ATTR(leaf);
|
|
@@ -4287,7 +4335,7 @@ INSN_ENTRY(getlocal_WC_1)
|
|
|
4287
4335
|
|
|
4288
4336
|
/* ### Instruction preambles. ### */
|
|
4289
4337
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
4290
|
-
SETUP_CANARY();
|
|
4338
|
+
SETUP_CANARY(leaf);
|
|
4291
4339
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
4292
4340
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, idx);
|
|
4293
4341
|
|
|
@@ -4299,14 +4347,16 @@ INSN_ENTRY(getlocal_WC_1)
|
|
|
4299
4347
|
RB_DEBUG_COUNTER_INC(lvar_get);
|
|
4300
4348
|
(void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
|
|
4301
4349
|
}
|
|
4302
|
-
# line
|
|
4350
|
+
# line 4351 "vm.inc"
|
|
4303
4351
|
# undef NAME_OF_CURRENT_INSN
|
|
4304
4352
|
|
|
4305
4353
|
/* ### Instruction trailers. ### */
|
|
4306
4354
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
4307
|
-
CHECK_CANARY();
|
|
4355
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
4308
4356
|
INC_SP(INSN_ATTR(sp_inc));
|
|
4309
4357
|
TOPN(0) = val;
|
|
4358
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
4359
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
4310
4360
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4311
4361
|
# undef INSN_ATTR
|
|
4312
4362
|
|
|
@@ -4324,7 +4374,7 @@ INSN_ENTRY(setlocal_WC_0)
|
|
|
4324
4374
|
/* ### Declare and assign variables. ### */
|
|
4325
4375
|
#line 12 "defs/opt_operand.def"
|
|
4326
4376
|
const rb_num_t level = 0;
|
|
4327
|
-
#line
|
|
4377
|
+
#line 4378 "vm.inc"
|
|
4328
4378
|
lindex_t idx = (lindex_t)GET_OPERAND(1);
|
|
4329
4379
|
# define INSN_ATTR(x) attr_ ## x ## _setlocal_WC_0(idx)
|
|
4330
4380
|
bool leaf = INSN_ATTR(leaf);
|
|
@@ -4332,7 +4382,7 @@ INSN_ENTRY(setlocal_WC_0)
|
|
|
4332
4382
|
|
|
4333
4383
|
/* ### Instruction preambles. ### */
|
|
4334
4384
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
4335
|
-
SETUP_CANARY();
|
|
4385
|
+
SETUP_CANARY(leaf);
|
|
4336
4386
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
4337
4387
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, idx);
|
|
4338
4388
|
|
|
@@ -4344,12 +4394,12 @@ INSN_ENTRY(setlocal_WC_0)
|
|
|
4344
4394
|
RB_DEBUG_COUNTER_INC(lvar_set);
|
|
4345
4395
|
(void)RB_DEBUG_COUNTER_INC_IF(lvar_set_dynamic, level > 0);
|
|
4346
4396
|
}
|
|
4347
|
-
# line
|
|
4397
|
+
# line 4398 "vm.inc"
|
|
4348
4398
|
# undef NAME_OF_CURRENT_INSN
|
|
4349
4399
|
|
|
4350
4400
|
/* ### Instruction trailers. ### */
|
|
4351
4401
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
4352
|
-
CHECK_CANARY();
|
|
4402
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
4353
4403
|
INC_SP(INSN_ATTR(sp_inc));
|
|
4354
4404
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4355
4405
|
# undef INSN_ATTR
|
|
@@ -4368,7 +4418,7 @@ INSN_ENTRY(setlocal_WC_1)
|
|
|
4368
4418
|
/* ### Declare and assign variables. ### */
|
|
4369
4419
|
#line 13 "defs/opt_operand.def"
|
|
4370
4420
|
const rb_num_t level = 1;
|
|
4371
|
-
#line
|
|
4421
|
+
#line 4422 "vm.inc"
|
|
4372
4422
|
lindex_t idx = (lindex_t)GET_OPERAND(1);
|
|
4373
4423
|
# define INSN_ATTR(x) attr_ ## x ## _setlocal_WC_1(idx)
|
|
4374
4424
|
bool leaf = INSN_ATTR(leaf);
|
|
@@ -4376,7 +4426,7 @@ INSN_ENTRY(setlocal_WC_1)
|
|
|
4376
4426
|
|
|
4377
4427
|
/* ### Instruction preambles. ### */
|
|
4378
4428
|
if (! leaf) ADD_PC(INSN_ATTR(width));
|
|
4379
|
-
SETUP_CANARY();
|
|
4429
|
+
SETUP_CANARY(leaf);
|
|
4380
4430
|
COLLECT_USAGE_INSN(INSN_ATTR(bin));
|
|
4381
4431
|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, idx);
|
|
4382
4432
|
|
|
@@ -4388,12 +4438,12 @@ INSN_ENTRY(setlocal_WC_1)
|
|
|
4388
4438
|
RB_DEBUG_COUNTER_INC(lvar_set);
|
|
4389
4439
|
(void)RB_DEBUG_COUNTER_INC_IF(lvar_set_dynamic, level > 0);
|
|
4390
4440
|
}
|
|
4391
|
-
# line
|
|
4441
|
+
# line 4442 "vm.inc"
|
|
4392
4442
|
# undef NAME_OF_CURRENT_INSN
|
|
4393
4443
|
|
|
4394
4444
|
/* ### Instruction trailers. ### */
|
|
4395
4445
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
4396
|
-
CHECK_CANARY();
|
|
4446
|
+
CHECK_CANARY(leaf, INSN_ATTR(bin));
|
|
4397
4447
|
INC_SP(INSN_ATTR(sp_inc));
|
|
4398
4448
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4399
4449
|
# undef INSN_ATTR
|
|
@@ -4412,7 +4462,7 @@ INSN_ENTRY(putobject_INT2FIX_0_)
|
|
|
4412
4462
|
/* ### Declare and assign variables. ### */
|
|
4413
4463
|
#line 15 "defs/opt_operand.def"
|
|
4414
4464
|
const VALUE val = INT2FIX(0);
|
|
4415
|
-
#line
|
|
4465
|
+
#line 4466 "vm.inc"
|
|
4416
4466
|
# define INSN_ATTR(x) attr_ ## x ## _putobject_INT2FIX_0_()
|
|
4417
4467
|
bool leaf = INSN_ATTR(leaf);
|
|
4418
4468
|
|
|
@@ -4424,6 +4474,8 @@ INSN_ENTRY(putobject_INT2FIX_0_)
|
|
|
4424
4474
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
4425
4475
|
INC_SP(INSN_ATTR(sp_inc));
|
|
4426
4476
|
TOPN(0) = val;
|
|
4477
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
4478
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
4427
4479
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4428
4480
|
# undef INSN_ATTR
|
|
4429
4481
|
|
|
@@ -4441,7 +4493,7 @@ INSN_ENTRY(putobject_INT2FIX_1_)
|
|
|
4441
4493
|
/* ### Declare and assign variables. ### */
|
|
4442
4494
|
#line 16 "defs/opt_operand.def"
|
|
4443
4495
|
const VALUE val = INT2FIX(1);
|
|
4444
|
-
#line
|
|
4496
|
+
#line 4497 "vm.inc"
|
|
4445
4497
|
# define INSN_ATTR(x) attr_ ## x ## _putobject_INT2FIX_1_()
|
|
4446
4498
|
bool leaf = INSN_ATTR(leaf);
|
|
4447
4499
|
|
|
@@ -4453,6 +4505,8 @@ INSN_ENTRY(putobject_INT2FIX_1_)
|
|
|
4453
4505
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
|
|
4454
4506
|
INC_SP(INSN_ATTR(sp_inc));
|
|
4455
4507
|
TOPN(0) = val;
|
|
4508
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
|
|
4509
|
+
VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
|
|
4456
4510
|
if (leaf) ADD_PC(INSN_ATTR(width));
|
|
4457
4511
|
# undef INSN_ATTR
|
|
4458
4512
|
|
|
@@ -4463,7 +4517,8 @@ INSN_ENTRY(putobject_INT2FIX_1_)
|
|
|
4463
4517
|
/* insn trace_nop(...)(...)(...) */
|
|
4464
4518
|
INSN_ENTRY(trace_nop)
|
|
4465
4519
|
{
|
|
4466
|
-
vm_trace(ec, GET_CFP()
|
|
4520
|
+
vm_trace(ec, GET_CFP());
|
|
4521
|
+
|
|
4467
4522
|
DISPATCH_ORIGINAL_INSN(nop);
|
|
4468
4523
|
END_INSN(trace_nop);
|
|
4469
4524
|
}
|
|
@@ -4471,7 +4526,8 @@ INSN_ENTRY(trace_nop)
|
|
|
4471
4526
|
/* insn trace_getlocal(...)(...)(...) */
|
|
4472
4527
|
INSN_ENTRY(trace_getlocal)
|
|
4473
4528
|
{
|
|
4474
|
-
vm_trace(ec, GET_CFP()
|
|
4529
|
+
vm_trace(ec, GET_CFP());
|
|
4530
|
+
|
|
4475
4531
|
DISPATCH_ORIGINAL_INSN(getlocal);
|
|
4476
4532
|
END_INSN(trace_getlocal);
|
|
4477
4533
|
}
|
|
@@ -4479,7 +4535,8 @@ INSN_ENTRY(trace_getlocal)
|
|
|
4479
4535
|
/* insn trace_setlocal(...)(...)(...) */
|
|
4480
4536
|
INSN_ENTRY(trace_setlocal)
|
|
4481
4537
|
{
|
|
4482
|
-
vm_trace(ec, GET_CFP()
|
|
4538
|
+
vm_trace(ec, GET_CFP());
|
|
4539
|
+
|
|
4483
4540
|
DISPATCH_ORIGINAL_INSN(setlocal);
|
|
4484
4541
|
END_INSN(trace_setlocal);
|
|
4485
4542
|
}
|
|
@@ -4487,7 +4544,8 @@ INSN_ENTRY(trace_setlocal)
|
|
|
4487
4544
|
/* insn trace_getblockparam(...)(...)(...) */
|
|
4488
4545
|
INSN_ENTRY(trace_getblockparam)
|
|
4489
4546
|
{
|
|
4490
|
-
vm_trace(ec, GET_CFP()
|
|
4547
|
+
vm_trace(ec, GET_CFP());
|
|
4548
|
+
|
|
4491
4549
|
DISPATCH_ORIGINAL_INSN(getblockparam);
|
|
4492
4550
|
END_INSN(trace_getblockparam);
|
|
4493
4551
|
}
|
|
@@ -4495,7 +4553,8 @@ INSN_ENTRY(trace_getblockparam)
|
|
|
4495
4553
|
/* insn trace_setblockparam(...)(...)(...) */
|
|
4496
4554
|
INSN_ENTRY(trace_setblockparam)
|
|
4497
4555
|
{
|
|
4498
|
-
vm_trace(ec, GET_CFP()
|
|
4556
|
+
vm_trace(ec, GET_CFP());
|
|
4557
|
+
|
|
4499
4558
|
DISPATCH_ORIGINAL_INSN(setblockparam);
|
|
4500
4559
|
END_INSN(trace_setblockparam);
|
|
4501
4560
|
}
|
|
@@ -4503,7 +4562,8 @@ INSN_ENTRY(trace_setblockparam)
|
|
|
4503
4562
|
/* insn trace_getblockparamproxy(...)(...)(...) */
|
|
4504
4563
|
INSN_ENTRY(trace_getblockparamproxy)
|
|
4505
4564
|
{
|
|
4506
|
-
vm_trace(ec, GET_CFP()
|
|
4565
|
+
vm_trace(ec, GET_CFP());
|
|
4566
|
+
|
|
4507
4567
|
DISPATCH_ORIGINAL_INSN(getblockparamproxy);
|
|
4508
4568
|
END_INSN(trace_getblockparamproxy);
|
|
4509
4569
|
}
|
|
@@ -4511,7 +4571,8 @@ INSN_ENTRY(trace_getblockparamproxy)
|
|
|
4511
4571
|
/* insn trace_getspecial(...)(...)(...) */
|
|
4512
4572
|
INSN_ENTRY(trace_getspecial)
|
|
4513
4573
|
{
|
|
4514
|
-
vm_trace(ec, GET_CFP()
|
|
4574
|
+
vm_trace(ec, GET_CFP());
|
|
4575
|
+
|
|
4515
4576
|
DISPATCH_ORIGINAL_INSN(getspecial);
|
|
4516
4577
|
END_INSN(trace_getspecial);
|
|
4517
4578
|
}
|
|
@@ -4519,7 +4580,8 @@ INSN_ENTRY(trace_getspecial)
|
|
|
4519
4580
|
/* insn trace_setspecial(...)(...)(...) */
|
|
4520
4581
|
INSN_ENTRY(trace_setspecial)
|
|
4521
4582
|
{
|
|
4522
|
-
vm_trace(ec, GET_CFP()
|
|
4583
|
+
vm_trace(ec, GET_CFP());
|
|
4584
|
+
|
|
4523
4585
|
DISPATCH_ORIGINAL_INSN(setspecial);
|
|
4524
4586
|
END_INSN(trace_setspecial);
|
|
4525
4587
|
}
|
|
@@ -4527,7 +4589,8 @@ INSN_ENTRY(trace_setspecial)
|
|
|
4527
4589
|
/* insn trace_getinstancevariable(...)(...)(...) */
|
|
4528
4590
|
INSN_ENTRY(trace_getinstancevariable)
|
|
4529
4591
|
{
|
|
4530
|
-
vm_trace(ec, GET_CFP()
|
|
4592
|
+
vm_trace(ec, GET_CFP());
|
|
4593
|
+
|
|
4531
4594
|
DISPATCH_ORIGINAL_INSN(getinstancevariable);
|
|
4532
4595
|
END_INSN(trace_getinstancevariable);
|
|
4533
4596
|
}
|
|
@@ -4535,7 +4598,8 @@ INSN_ENTRY(trace_getinstancevariable)
|
|
|
4535
4598
|
/* insn trace_setinstancevariable(...)(...)(...) */
|
|
4536
4599
|
INSN_ENTRY(trace_setinstancevariable)
|
|
4537
4600
|
{
|
|
4538
|
-
vm_trace(ec, GET_CFP()
|
|
4601
|
+
vm_trace(ec, GET_CFP());
|
|
4602
|
+
|
|
4539
4603
|
DISPATCH_ORIGINAL_INSN(setinstancevariable);
|
|
4540
4604
|
END_INSN(trace_setinstancevariable);
|
|
4541
4605
|
}
|
|
@@ -4543,7 +4607,8 @@ INSN_ENTRY(trace_setinstancevariable)
|
|
|
4543
4607
|
/* insn trace_getclassvariable(...)(...)(...) */
|
|
4544
4608
|
INSN_ENTRY(trace_getclassvariable)
|
|
4545
4609
|
{
|
|
4546
|
-
vm_trace(ec, GET_CFP()
|
|
4610
|
+
vm_trace(ec, GET_CFP());
|
|
4611
|
+
|
|
4547
4612
|
DISPATCH_ORIGINAL_INSN(getclassvariable);
|
|
4548
4613
|
END_INSN(trace_getclassvariable);
|
|
4549
4614
|
}
|
|
@@ -4551,7 +4616,8 @@ INSN_ENTRY(trace_getclassvariable)
|
|
|
4551
4616
|
/* insn trace_setclassvariable(...)(...)(...) */
|
|
4552
4617
|
INSN_ENTRY(trace_setclassvariable)
|
|
4553
4618
|
{
|
|
4554
|
-
vm_trace(ec, GET_CFP()
|
|
4619
|
+
vm_trace(ec, GET_CFP());
|
|
4620
|
+
|
|
4555
4621
|
DISPATCH_ORIGINAL_INSN(setclassvariable);
|
|
4556
4622
|
END_INSN(trace_setclassvariable);
|
|
4557
4623
|
}
|
|
@@ -4559,7 +4625,8 @@ INSN_ENTRY(trace_setclassvariable)
|
|
|
4559
4625
|
/* insn trace_getconstant(...)(...)(...) */
|
|
4560
4626
|
INSN_ENTRY(trace_getconstant)
|
|
4561
4627
|
{
|
|
4562
|
-
vm_trace(ec, GET_CFP()
|
|
4628
|
+
vm_trace(ec, GET_CFP());
|
|
4629
|
+
|
|
4563
4630
|
DISPATCH_ORIGINAL_INSN(getconstant);
|
|
4564
4631
|
END_INSN(trace_getconstant);
|
|
4565
4632
|
}
|
|
@@ -4567,7 +4634,8 @@ INSN_ENTRY(trace_getconstant)
|
|
|
4567
4634
|
/* insn trace_setconstant(...)(...)(...) */
|
|
4568
4635
|
INSN_ENTRY(trace_setconstant)
|
|
4569
4636
|
{
|
|
4570
|
-
vm_trace(ec, GET_CFP()
|
|
4637
|
+
vm_trace(ec, GET_CFP());
|
|
4638
|
+
|
|
4571
4639
|
DISPATCH_ORIGINAL_INSN(setconstant);
|
|
4572
4640
|
END_INSN(trace_setconstant);
|
|
4573
4641
|
}
|
|
@@ -4575,7 +4643,8 @@ INSN_ENTRY(trace_setconstant)
|
|
|
4575
4643
|
/* insn trace_getglobal(...)(...)(...) */
|
|
4576
4644
|
INSN_ENTRY(trace_getglobal)
|
|
4577
4645
|
{
|
|
4578
|
-
vm_trace(ec, GET_CFP()
|
|
4646
|
+
vm_trace(ec, GET_CFP());
|
|
4647
|
+
|
|
4579
4648
|
DISPATCH_ORIGINAL_INSN(getglobal);
|
|
4580
4649
|
END_INSN(trace_getglobal);
|
|
4581
4650
|
}
|
|
@@ -4583,7 +4652,8 @@ INSN_ENTRY(trace_getglobal)
|
|
|
4583
4652
|
/* insn trace_setglobal(...)(...)(...) */
|
|
4584
4653
|
INSN_ENTRY(trace_setglobal)
|
|
4585
4654
|
{
|
|
4586
|
-
vm_trace(ec, GET_CFP()
|
|
4655
|
+
vm_trace(ec, GET_CFP());
|
|
4656
|
+
|
|
4587
4657
|
DISPATCH_ORIGINAL_INSN(setglobal);
|
|
4588
4658
|
END_INSN(trace_setglobal);
|
|
4589
4659
|
}
|
|
@@ -4591,7 +4661,8 @@ INSN_ENTRY(trace_setglobal)
|
|
|
4591
4661
|
/* insn trace_putnil(...)(...)(...) */
|
|
4592
4662
|
INSN_ENTRY(trace_putnil)
|
|
4593
4663
|
{
|
|
4594
|
-
vm_trace(ec, GET_CFP()
|
|
4664
|
+
vm_trace(ec, GET_CFP());
|
|
4665
|
+
|
|
4595
4666
|
DISPATCH_ORIGINAL_INSN(putnil);
|
|
4596
4667
|
END_INSN(trace_putnil);
|
|
4597
4668
|
}
|
|
@@ -4599,7 +4670,8 @@ INSN_ENTRY(trace_putnil)
|
|
|
4599
4670
|
/* insn trace_putself(...)(...)(...) */
|
|
4600
4671
|
INSN_ENTRY(trace_putself)
|
|
4601
4672
|
{
|
|
4602
|
-
vm_trace(ec, GET_CFP()
|
|
4673
|
+
vm_trace(ec, GET_CFP());
|
|
4674
|
+
|
|
4603
4675
|
DISPATCH_ORIGINAL_INSN(putself);
|
|
4604
4676
|
END_INSN(trace_putself);
|
|
4605
4677
|
}
|
|
@@ -4607,7 +4679,8 @@ INSN_ENTRY(trace_putself)
|
|
|
4607
4679
|
/* insn trace_putobject(...)(...)(...) */
|
|
4608
4680
|
INSN_ENTRY(trace_putobject)
|
|
4609
4681
|
{
|
|
4610
|
-
vm_trace(ec, GET_CFP()
|
|
4682
|
+
vm_trace(ec, GET_CFP());
|
|
4683
|
+
|
|
4611
4684
|
DISPATCH_ORIGINAL_INSN(putobject);
|
|
4612
4685
|
END_INSN(trace_putobject);
|
|
4613
4686
|
}
|
|
@@ -4615,7 +4688,8 @@ INSN_ENTRY(trace_putobject)
|
|
|
4615
4688
|
/* insn trace_putspecialobject(...)(...)(...) */
|
|
4616
4689
|
INSN_ENTRY(trace_putspecialobject)
|
|
4617
4690
|
{
|
|
4618
|
-
vm_trace(ec, GET_CFP()
|
|
4691
|
+
vm_trace(ec, GET_CFP());
|
|
4692
|
+
|
|
4619
4693
|
DISPATCH_ORIGINAL_INSN(putspecialobject);
|
|
4620
4694
|
END_INSN(trace_putspecialobject);
|
|
4621
4695
|
}
|
|
@@ -4623,7 +4697,8 @@ INSN_ENTRY(trace_putspecialobject)
|
|
|
4623
4697
|
/* insn trace_putstring(...)(...)(...) */
|
|
4624
4698
|
INSN_ENTRY(trace_putstring)
|
|
4625
4699
|
{
|
|
4626
|
-
vm_trace(ec, GET_CFP()
|
|
4700
|
+
vm_trace(ec, GET_CFP());
|
|
4701
|
+
|
|
4627
4702
|
DISPATCH_ORIGINAL_INSN(putstring);
|
|
4628
4703
|
END_INSN(trace_putstring);
|
|
4629
4704
|
}
|
|
@@ -4631,7 +4706,8 @@ INSN_ENTRY(trace_putstring)
|
|
|
4631
4706
|
/* insn trace_concatstrings(...)(...)(...) */
|
|
4632
4707
|
INSN_ENTRY(trace_concatstrings)
|
|
4633
4708
|
{
|
|
4634
|
-
vm_trace(ec, GET_CFP()
|
|
4709
|
+
vm_trace(ec, GET_CFP());
|
|
4710
|
+
|
|
4635
4711
|
DISPATCH_ORIGINAL_INSN(concatstrings);
|
|
4636
4712
|
END_INSN(trace_concatstrings);
|
|
4637
4713
|
}
|
|
@@ -4639,23 +4715,17 @@ INSN_ENTRY(trace_concatstrings)
|
|
|
4639
4715
|
/* insn trace_tostring(...)(...)(...) */
|
|
4640
4716
|
INSN_ENTRY(trace_tostring)
|
|
4641
4717
|
{
|
|
4642
|
-
vm_trace(ec, GET_CFP()
|
|
4718
|
+
vm_trace(ec, GET_CFP());
|
|
4719
|
+
|
|
4643
4720
|
DISPATCH_ORIGINAL_INSN(tostring);
|
|
4644
4721
|
END_INSN(trace_tostring);
|
|
4645
4722
|
}
|
|
4646
4723
|
|
|
4647
|
-
/* insn trace_freezestring(...)(...)(...) */
|
|
4648
|
-
INSN_ENTRY(trace_freezestring)
|
|
4649
|
-
{
|
|
4650
|
-
vm_trace(ec, GET_CFP(), GET_PC());
|
|
4651
|
-
DISPATCH_ORIGINAL_INSN(freezestring);
|
|
4652
|
-
END_INSN(trace_freezestring);
|
|
4653
|
-
}
|
|
4654
|
-
|
|
4655
4724
|
/* insn trace_toregexp(...)(...)(...) */
|
|
4656
4725
|
INSN_ENTRY(trace_toregexp)
|
|
4657
4726
|
{
|
|
4658
|
-
vm_trace(ec, GET_CFP()
|
|
4727
|
+
vm_trace(ec, GET_CFP());
|
|
4728
|
+
|
|
4659
4729
|
DISPATCH_ORIGINAL_INSN(toregexp);
|
|
4660
4730
|
END_INSN(trace_toregexp);
|
|
4661
4731
|
}
|
|
@@ -4663,7 +4733,8 @@ INSN_ENTRY(trace_toregexp)
|
|
|
4663
4733
|
/* insn trace_intern(...)(...)(...) */
|
|
4664
4734
|
INSN_ENTRY(trace_intern)
|
|
4665
4735
|
{
|
|
4666
|
-
vm_trace(ec, GET_CFP()
|
|
4736
|
+
vm_trace(ec, GET_CFP());
|
|
4737
|
+
|
|
4667
4738
|
DISPATCH_ORIGINAL_INSN(intern);
|
|
4668
4739
|
END_INSN(trace_intern);
|
|
4669
4740
|
}
|
|
@@ -4671,7 +4742,8 @@ INSN_ENTRY(trace_intern)
|
|
|
4671
4742
|
/* insn trace_newarray(...)(...)(...) */
|
|
4672
4743
|
INSN_ENTRY(trace_newarray)
|
|
4673
4744
|
{
|
|
4674
|
-
vm_trace(ec, GET_CFP()
|
|
4745
|
+
vm_trace(ec, GET_CFP());
|
|
4746
|
+
|
|
4675
4747
|
DISPATCH_ORIGINAL_INSN(newarray);
|
|
4676
4748
|
END_INSN(trace_newarray);
|
|
4677
4749
|
}
|
|
@@ -4679,7 +4751,8 @@ INSN_ENTRY(trace_newarray)
|
|
|
4679
4751
|
/* insn trace_newarraykwsplat(...)(...)(...) */
|
|
4680
4752
|
INSN_ENTRY(trace_newarraykwsplat)
|
|
4681
4753
|
{
|
|
4682
|
-
vm_trace(ec, GET_CFP()
|
|
4754
|
+
vm_trace(ec, GET_CFP());
|
|
4755
|
+
|
|
4683
4756
|
DISPATCH_ORIGINAL_INSN(newarraykwsplat);
|
|
4684
4757
|
END_INSN(trace_newarraykwsplat);
|
|
4685
4758
|
}
|
|
@@ -4687,7 +4760,8 @@ INSN_ENTRY(trace_newarraykwsplat)
|
|
|
4687
4760
|
/* insn trace_duparray(...)(...)(...) */
|
|
4688
4761
|
INSN_ENTRY(trace_duparray)
|
|
4689
4762
|
{
|
|
4690
|
-
vm_trace(ec, GET_CFP()
|
|
4763
|
+
vm_trace(ec, GET_CFP());
|
|
4764
|
+
|
|
4691
4765
|
DISPATCH_ORIGINAL_INSN(duparray);
|
|
4692
4766
|
END_INSN(trace_duparray);
|
|
4693
4767
|
}
|
|
@@ -4695,7 +4769,8 @@ INSN_ENTRY(trace_duparray)
|
|
|
4695
4769
|
/* insn trace_duphash(...)(...)(...) */
|
|
4696
4770
|
INSN_ENTRY(trace_duphash)
|
|
4697
4771
|
{
|
|
4698
|
-
vm_trace(ec, GET_CFP()
|
|
4772
|
+
vm_trace(ec, GET_CFP());
|
|
4773
|
+
|
|
4699
4774
|
DISPATCH_ORIGINAL_INSN(duphash);
|
|
4700
4775
|
END_INSN(trace_duphash);
|
|
4701
4776
|
}
|
|
@@ -4703,7 +4778,8 @@ INSN_ENTRY(trace_duphash)
|
|
|
4703
4778
|
/* insn trace_expandarray(...)(...)(...) */
|
|
4704
4779
|
INSN_ENTRY(trace_expandarray)
|
|
4705
4780
|
{
|
|
4706
|
-
vm_trace(ec, GET_CFP()
|
|
4781
|
+
vm_trace(ec, GET_CFP());
|
|
4782
|
+
|
|
4707
4783
|
DISPATCH_ORIGINAL_INSN(expandarray);
|
|
4708
4784
|
END_INSN(trace_expandarray);
|
|
4709
4785
|
}
|
|
@@ -4711,7 +4787,8 @@ INSN_ENTRY(trace_expandarray)
|
|
|
4711
4787
|
/* insn trace_concatarray(...)(...)(...) */
|
|
4712
4788
|
INSN_ENTRY(trace_concatarray)
|
|
4713
4789
|
{
|
|
4714
|
-
vm_trace(ec, GET_CFP()
|
|
4790
|
+
vm_trace(ec, GET_CFP());
|
|
4791
|
+
|
|
4715
4792
|
DISPATCH_ORIGINAL_INSN(concatarray);
|
|
4716
4793
|
END_INSN(trace_concatarray);
|
|
4717
4794
|
}
|
|
@@ -4719,7 +4796,8 @@ INSN_ENTRY(trace_concatarray)
|
|
|
4719
4796
|
/* insn trace_splatarray(...)(...)(...) */
|
|
4720
4797
|
INSN_ENTRY(trace_splatarray)
|
|
4721
4798
|
{
|
|
4722
|
-
vm_trace(ec, GET_CFP()
|
|
4799
|
+
vm_trace(ec, GET_CFP());
|
|
4800
|
+
|
|
4723
4801
|
DISPATCH_ORIGINAL_INSN(splatarray);
|
|
4724
4802
|
END_INSN(trace_splatarray);
|
|
4725
4803
|
}
|
|
@@ -4727,7 +4805,8 @@ INSN_ENTRY(trace_splatarray)
|
|
|
4727
4805
|
/* insn trace_newhash(...)(...)(...) */
|
|
4728
4806
|
INSN_ENTRY(trace_newhash)
|
|
4729
4807
|
{
|
|
4730
|
-
vm_trace(ec, GET_CFP()
|
|
4808
|
+
vm_trace(ec, GET_CFP());
|
|
4809
|
+
|
|
4731
4810
|
DISPATCH_ORIGINAL_INSN(newhash);
|
|
4732
4811
|
END_INSN(trace_newhash);
|
|
4733
4812
|
}
|
|
@@ -4735,7 +4814,8 @@ INSN_ENTRY(trace_newhash)
|
|
|
4735
4814
|
/* insn trace_newrange(...)(...)(...) */
|
|
4736
4815
|
INSN_ENTRY(trace_newrange)
|
|
4737
4816
|
{
|
|
4738
|
-
vm_trace(ec, GET_CFP()
|
|
4817
|
+
vm_trace(ec, GET_CFP());
|
|
4818
|
+
|
|
4739
4819
|
DISPATCH_ORIGINAL_INSN(newrange);
|
|
4740
4820
|
END_INSN(trace_newrange);
|
|
4741
4821
|
}
|
|
@@ -4743,7 +4823,8 @@ INSN_ENTRY(trace_newrange)
|
|
|
4743
4823
|
/* insn trace_pop(...)(...)(...) */
|
|
4744
4824
|
INSN_ENTRY(trace_pop)
|
|
4745
4825
|
{
|
|
4746
|
-
vm_trace(ec, GET_CFP()
|
|
4826
|
+
vm_trace(ec, GET_CFP());
|
|
4827
|
+
|
|
4747
4828
|
DISPATCH_ORIGINAL_INSN(pop);
|
|
4748
4829
|
END_INSN(trace_pop);
|
|
4749
4830
|
}
|
|
@@ -4751,7 +4832,8 @@ INSN_ENTRY(trace_pop)
|
|
|
4751
4832
|
/* insn trace_dup(...)(...)(...) */
|
|
4752
4833
|
INSN_ENTRY(trace_dup)
|
|
4753
4834
|
{
|
|
4754
|
-
vm_trace(ec, GET_CFP()
|
|
4835
|
+
vm_trace(ec, GET_CFP());
|
|
4836
|
+
|
|
4755
4837
|
DISPATCH_ORIGINAL_INSN(dup);
|
|
4756
4838
|
END_INSN(trace_dup);
|
|
4757
4839
|
}
|
|
@@ -4759,7 +4841,8 @@ INSN_ENTRY(trace_dup)
|
|
|
4759
4841
|
/* insn trace_dupn(...)(...)(...) */
|
|
4760
4842
|
INSN_ENTRY(trace_dupn)
|
|
4761
4843
|
{
|
|
4762
|
-
vm_trace(ec, GET_CFP()
|
|
4844
|
+
vm_trace(ec, GET_CFP());
|
|
4845
|
+
|
|
4763
4846
|
DISPATCH_ORIGINAL_INSN(dupn);
|
|
4764
4847
|
END_INSN(trace_dupn);
|
|
4765
4848
|
}
|
|
@@ -4767,23 +4850,17 @@ INSN_ENTRY(trace_dupn)
|
|
|
4767
4850
|
/* insn trace_swap(...)(...)(...) */
|
|
4768
4851
|
INSN_ENTRY(trace_swap)
|
|
4769
4852
|
{
|
|
4770
|
-
vm_trace(ec, GET_CFP()
|
|
4853
|
+
vm_trace(ec, GET_CFP());
|
|
4854
|
+
|
|
4771
4855
|
DISPATCH_ORIGINAL_INSN(swap);
|
|
4772
4856
|
END_INSN(trace_swap);
|
|
4773
4857
|
}
|
|
4774
4858
|
|
|
4775
|
-
/* insn trace_reverse(...)(...)(...) */
|
|
4776
|
-
INSN_ENTRY(trace_reverse)
|
|
4777
|
-
{
|
|
4778
|
-
vm_trace(ec, GET_CFP(), GET_PC());
|
|
4779
|
-
DISPATCH_ORIGINAL_INSN(reverse);
|
|
4780
|
-
END_INSN(trace_reverse);
|
|
4781
|
-
}
|
|
4782
|
-
|
|
4783
4859
|
/* insn trace_topn(...)(...)(...) */
|
|
4784
4860
|
INSN_ENTRY(trace_topn)
|
|
4785
4861
|
{
|
|
4786
|
-
vm_trace(ec, GET_CFP()
|
|
4862
|
+
vm_trace(ec, GET_CFP());
|
|
4863
|
+
|
|
4787
4864
|
DISPATCH_ORIGINAL_INSN(topn);
|
|
4788
4865
|
END_INSN(trace_topn);
|
|
4789
4866
|
}
|
|
@@ -4791,7 +4868,8 @@ INSN_ENTRY(trace_topn)
|
|
|
4791
4868
|
/* insn trace_setn(...)(...)(...) */
|
|
4792
4869
|
INSN_ENTRY(trace_setn)
|
|
4793
4870
|
{
|
|
4794
|
-
vm_trace(ec, GET_CFP()
|
|
4871
|
+
vm_trace(ec, GET_CFP());
|
|
4872
|
+
|
|
4795
4873
|
DISPATCH_ORIGINAL_INSN(setn);
|
|
4796
4874
|
END_INSN(trace_setn);
|
|
4797
4875
|
}
|
|
@@ -4799,7 +4877,8 @@ INSN_ENTRY(trace_setn)
|
|
|
4799
4877
|
/* insn trace_adjuststack(...)(...)(...) */
|
|
4800
4878
|
INSN_ENTRY(trace_adjuststack)
|
|
4801
4879
|
{
|
|
4802
|
-
vm_trace(ec, GET_CFP()
|
|
4880
|
+
vm_trace(ec, GET_CFP());
|
|
4881
|
+
|
|
4803
4882
|
DISPATCH_ORIGINAL_INSN(adjuststack);
|
|
4804
4883
|
END_INSN(trace_adjuststack);
|
|
4805
4884
|
}
|
|
@@ -4807,7 +4886,8 @@ INSN_ENTRY(trace_adjuststack)
|
|
|
4807
4886
|
/* insn trace_defined(...)(...)(...) */
|
|
4808
4887
|
INSN_ENTRY(trace_defined)
|
|
4809
4888
|
{
|
|
4810
|
-
vm_trace(ec, GET_CFP()
|
|
4889
|
+
vm_trace(ec, GET_CFP());
|
|
4890
|
+
|
|
4811
4891
|
DISPATCH_ORIGINAL_INSN(defined);
|
|
4812
4892
|
END_INSN(trace_defined);
|
|
4813
4893
|
}
|
|
@@ -4815,7 +4895,8 @@ INSN_ENTRY(trace_defined)
|
|
|
4815
4895
|
/* insn trace_checkmatch(...)(...)(...) */
|
|
4816
4896
|
INSN_ENTRY(trace_checkmatch)
|
|
4817
4897
|
{
|
|
4818
|
-
vm_trace(ec, GET_CFP()
|
|
4898
|
+
vm_trace(ec, GET_CFP());
|
|
4899
|
+
|
|
4819
4900
|
DISPATCH_ORIGINAL_INSN(checkmatch);
|
|
4820
4901
|
END_INSN(trace_checkmatch);
|
|
4821
4902
|
}
|
|
@@ -4823,7 +4904,8 @@ INSN_ENTRY(trace_checkmatch)
|
|
|
4823
4904
|
/* insn trace_checkkeyword(...)(...)(...) */
|
|
4824
4905
|
INSN_ENTRY(trace_checkkeyword)
|
|
4825
4906
|
{
|
|
4826
|
-
vm_trace(ec, GET_CFP()
|
|
4907
|
+
vm_trace(ec, GET_CFP());
|
|
4908
|
+
|
|
4827
4909
|
DISPATCH_ORIGINAL_INSN(checkkeyword);
|
|
4828
4910
|
END_INSN(trace_checkkeyword);
|
|
4829
4911
|
}
|
|
@@ -4831,23 +4913,17 @@ INSN_ENTRY(trace_checkkeyword)
|
|
|
4831
4913
|
/* insn trace_checktype(...)(...)(...) */
|
|
4832
4914
|
INSN_ENTRY(trace_checktype)
|
|
4833
4915
|
{
|
|
4834
|
-
vm_trace(ec, GET_CFP()
|
|
4916
|
+
vm_trace(ec, GET_CFP());
|
|
4917
|
+
|
|
4835
4918
|
DISPATCH_ORIGINAL_INSN(checktype);
|
|
4836
4919
|
END_INSN(trace_checktype);
|
|
4837
4920
|
}
|
|
4838
4921
|
|
|
4839
|
-
/* insn trace_methodref(...)(...)(...) */
|
|
4840
|
-
INSN_ENTRY(trace_methodref)
|
|
4841
|
-
{
|
|
4842
|
-
vm_trace(ec, GET_CFP(), GET_PC());
|
|
4843
|
-
DISPATCH_ORIGINAL_INSN(methodref);
|
|
4844
|
-
END_INSN(trace_methodref);
|
|
4845
|
-
}
|
|
4846
|
-
|
|
4847
4922
|
/* insn trace_defineclass(...)(...)(...) */
|
|
4848
4923
|
INSN_ENTRY(trace_defineclass)
|
|
4849
4924
|
{
|
|
4850
|
-
vm_trace(ec, GET_CFP()
|
|
4925
|
+
vm_trace(ec, GET_CFP());
|
|
4926
|
+
|
|
4851
4927
|
DISPATCH_ORIGINAL_INSN(defineclass);
|
|
4852
4928
|
END_INSN(trace_defineclass);
|
|
4853
4929
|
}
|
|
@@ -4855,7 +4931,8 @@ INSN_ENTRY(trace_defineclass)
|
|
|
4855
4931
|
/* insn trace_definemethod(...)(...)(...) */
|
|
4856
4932
|
INSN_ENTRY(trace_definemethod)
|
|
4857
4933
|
{
|
|
4858
|
-
vm_trace(ec, GET_CFP()
|
|
4934
|
+
vm_trace(ec, GET_CFP());
|
|
4935
|
+
|
|
4859
4936
|
DISPATCH_ORIGINAL_INSN(definemethod);
|
|
4860
4937
|
END_INSN(trace_definemethod);
|
|
4861
4938
|
}
|
|
@@ -4863,7 +4940,8 @@ INSN_ENTRY(trace_definemethod)
|
|
|
4863
4940
|
/* insn trace_definesmethod(...)(...)(...) */
|
|
4864
4941
|
INSN_ENTRY(trace_definesmethod)
|
|
4865
4942
|
{
|
|
4866
|
-
vm_trace(ec, GET_CFP()
|
|
4943
|
+
vm_trace(ec, GET_CFP());
|
|
4944
|
+
|
|
4867
4945
|
DISPATCH_ORIGINAL_INSN(definesmethod);
|
|
4868
4946
|
END_INSN(trace_definesmethod);
|
|
4869
4947
|
}
|
|
@@ -4871,7 +4949,8 @@ INSN_ENTRY(trace_definesmethod)
|
|
|
4871
4949
|
/* insn trace_send(...)(...)(...) */
|
|
4872
4950
|
INSN_ENTRY(trace_send)
|
|
4873
4951
|
{
|
|
4874
|
-
vm_trace(ec, GET_CFP()
|
|
4952
|
+
vm_trace(ec, GET_CFP());
|
|
4953
|
+
|
|
4875
4954
|
DISPATCH_ORIGINAL_INSN(send);
|
|
4876
4955
|
END_INSN(trace_send);
|
|
4877
4956
|
}
|
|
@@ -4879,7 +4958,8 @@ INSN_ENTRY(trace_send)
|
|
|
4879
4958
|
/* insn trace_opt_send_without_block(...)(...)(...) */
|
|
4880
4959
|
INSN_ENTRY(trace_opt_send_without_block)
|
|
4881
4960
|
{
|
|
4882
|
-
vm_trace(ec, GET_CFP()
|
|
4961
|
+
vm_trace(ec, GET_CFP());
|
|
4962
|
+
|
|
4883
4963
|
DISPATCH_ORIGINAL_INSN(opt_send_without_block);
|
|
4884
4964
|
END_INSN(trace_opt_send_without_block);
|
|
4885
4965
|
}
|
|
@@ -4887,7 +4967,8 @@ INSN_ENTRY(trace_opt_send_without_block)
|
|
|
4887
4967
|
/* insn trace_opt_str_freeze(...)(...)(...) */
|
|
4888
4968
|
INSN_ENTRY(trace_opt_str_freeze)
|
|
4889
4969
|
{
|
|
4890
|
-
vm_trace(ec, GET_CFP()
|
|
4970
|
+
vm_trace(ec, GET_CFP());
|
|
4971
|
+
|
|
4891
4972
|
DISPATCH_ORIGINAL_INSN(opt_str_freeze);
|
|
4892
4973
|
END_INSN(trace_opt_str_freeze);
|
|
4893
4974
|
}
|
|
@@ -4895,15 +4976,17 @@ INSN_ENTRY(trace_opt_str_freeze)
|
|
|
4895
4976
|
/* insn trace_opt_nil_p(...)(...)(...) */
|
|
4896
4977
|
INSN_ENTRY(trace_opt_nil_p)
|
|
4897
4978
|
{
|
|
4898
|
-
vm_trace(ec, GET_CFP()
|
|
4899
|
-
|
|
4979
|
+
vm_trace(ec, GET_CFP());
|
|
4980
|
+
|
|
4981
|
+
DISPATCH_ORIGINAL_INSN(opt_send_without_block);
|
|
4900
4982
|
END_INSN(trace_opt_nil_p);
|
|
4901
4983
|
}
|
|
4902
4984
|
|
|
4903
4985
|
/* insn trace_opt_str_uminus(...)(...)(...) */
|
|
4904
4986
|
INSN_ENTRY(trace_opt_str_uminus)
|
|
4905
4987
|
{
|
|
4906
|
-
vm_trace(ec, GET_CFP()
|
|
4988
|
+
vm_trace(ec, GET_CFP());
|
|
4989
|
+
|
|
4907
4990
|
DISPATCH_ORIGINAL_INSN(opt_str_uminus);
|
|
4908
4991
|
END_INSN(trace_opt_str_uminus);
|
|
4909
4992
|
}
|
|
@@ -4911,7 +4994,8 @@ INSN_ENTRY(trace_opt_str_uminus)
|
|
|
4911
4994
|
/* insn trace_opt_newarray_max(...)(...)(...) */
|
|
4912
4995
|
INSN_ENTRY(trace_opt_newarray_max)
|
|
4913
4996
|
{
|
|
4914
|
-
vm_trace(ec, GET_CFP()
|
|
4997
|
+
vm_trace(ec, GET_CFP());
|
|
4998
|
+
|
|
4915
4999
|
DISPATCH_ORIGINAL_INSN(opt_newarray_max);
|
|
4916
5000
|
END_INSN(trace_opt_newarray_max);
|
|
4917
5001
|
}
|
|
@@ -4919,7 +5003,8 @@ INSN_ENTRY(trace_opt_newarray_max)
|
|
|
4919
5003
|
/* insn trace_opt_newarray_min(...)(...)(...) */
|
|
4920
5004
|
INSN_ENTRY(trace_opt_newarray_min)
|
|
4921
5005
|
{
|
|
4922
|
-
vm_trace(ec, GET_CFP()
|
|
5006
|
+
vm_trace(ec, GET_CFP());
|
|
5007
|
+
|
|
4923
5008
|
DISPATCH_ORIGINAL_INSN(opt_newarray_min);
|
|
4924
5009
|
END_INSN(trace_opt_newarray_min);
|
|
4925
5010
|
}
|
|
@@ -4927,7 +5012,8 @@ INSN_ENTRY(trace_opt_newarray_min)
|
|
|
4927
5012
|
/* insn trace_invokesuper(...)(...)(...) */
|
|
4928
5013
|
INSN_ENTRY(trace_invokesuper)
|
|
4929
5014
|
{
|
|
4930
|
-
vm_trace(ec, GET_CFP()
|
|
5015
|
+
vm_trace(ec, GET_CFP());
|
|
5016
|
+
|
|
4931
5017
|
DISPATCH_ORIGINAL_INSN(invokesuper);
|
|
4932
5018
|
END_INSN(trace_invokesuper);
|
|
4933
5019
|
}
|
|
@@ -4935,7 +5021,8 @@ INSN_ENTRY(trace_invokesuper)
|
|
|
4935
5021
|
/* insn trace_invokeblock(...)(...)(...) */
|
|
4936
5022
|
INSN_ENTRY(trace_invokeblock)
|
|
4937
5023
|
{
|
|
4938
|
-
vm_trace(ec, GET_CFP()
|
|
5024
|
+
vm_trace(ec, GET_CFP());
|
|
5025
|
+
|
|
4939
5026
|
DISPATCH_ORIGINAL_INSN(invokeblock);
|
|
4940
5027
|
END_INSN(trace_invokeblock);
|
|
4941
5028
|
}
|
|
@@ -4943,7 +5030,8 @@ INSN_ENTRY(trace_invokeblock)
|
|
|
4943
5030
|
/* insn trace_leave(...)(...)(...) */
|
|
4944
5031
|
INSN_ENTRY(trace_leave)
|
|
4945
5032
|
{
|
|
4946
|
-
vm_trace(ec, GET_CFP()
|
|
5033
|
+
vm_trace(ec, GET_CFP());
|
|
5034
|
+
|
|
4947
5035
|
DISPATCH_ORIGINAL_INSN(leave);
|
|
4948
5036
|
END_INSN(trace_leave);
|
|
4949
5037
|
}
|
|
@@ -4951,7 +5039,8 @@ INSN_ENTRY(trace_leave)
|
|
|
4951
5039
|
/* insn trace_throw(...)(...)(...) */
|
|
4952
5040
|
INSN_ENTRY(trace_throw)
|
|
4953
5041
|
{
|
|
4954
|
-
vm_trace(ec, GET_CFP()
|
|
5042
|
+
vm_trace(ec, GET_CFP());
|
|
5043
|
+
|
|
4955
5044
|
DISPATCH_ORIGINAL_INSN(throw);
|
|
4956
5045
|
END_INSN(trace_throw);
|
|
4957
5046
|
}
|
|
@@ -4959,7 +5048,8 @@ INSN_ENTRY(trace_throw)
|
|
|
4959
5048
|
/* insn trace_jump(...)(...)(...) */
|
|
4960
5049
|
INSN_ENTRY(trace_jump)
|
|
4961
5050
|
{
|
|
4962
|
-
vm_trace(ec, GET_CFP()
|
|
5051
|
+
vm_trace(ec, GET_CFP());
|
|
5052
|
+
|
|
4963
5053
|
DISPATCH_ORIGINAL_INSN(jump);
|
|
4964
5054
|
END_INSN(trace_jump);
|
|
4965
5055
|
}
|
|
@@ -4967,7 +5057,8 @@ INSN_ENTRY(trace_jump)
|
|
|
4967
5057
|
/* insn trace_branchif(...)(...)(...) */
|
|
4968
5058
|
INSN_ENTRY(trace_branchif)
|
|
4969
5059
|
{
|
|
4970
|
-
vm_trace(ec, GET_CFP()
|
|
5060
|
+
vm_trace(ec, GET_CFP());
|
|
5061
|
+
|
|
4971
5062
|
DISPATCH_ORIGINAL_INSN(branchif);
|
|
4972
5063
|
END_INSN(trace_branchif);
|
|
4973
5064
|
}
|
|
@@ -4975,7 +5066,8 @@ INSN_ENTRY(trace_branchif)
|
|
|
4975
5066
|
/* insn trace_branchunless(...)(...)(...) */
|
|
4976
5067
|
INSN_ENTRY(trace_branchunless)
|
|
4977
5068
|
{
|
|
4978
|
-
vm_trace(ec, GET_CFP()
|
|
5069
|
+
vm_trace(ec, GET_CFP());
|
|
5070
|
+
|
|
4979
5071
|
DISPATCH_ORIGINAL_INSN(branchunless);
|
|
4980
5072
|
END_INSN(trace_branchunless);
|
|
4981
5073
|
}
|
|
@@ -4983,7 +5075,8 @@ INSN_ENTRY(trace_branchunless)
|
|
|
4983
5075
|
/* insn trace_branchnil(...)(...)(...) */
|
|
4984
5076
|
INSN_ENTRY(trace_branchnil)
|
|
4985
5077
|
{
|
|
4986
|
-
vm_trace(ec, GET_CFP()
|
|
5078
|
+
vm_trace(ec, GET_CFP());
|
|
5079
|
+
|
|
4987
5080
|
DISPATCH_ORIGINAL_INSN(branchnil);
|
|
4988
5081
|
END_INSN(trace_branchnil);
|
|
4989
5082
|
}
|
|
@@ -4991,7 +5084,8 @@ INSN_ENTRY(trace_branchnil)
|
|
|
4991
5084
|
/* insn trace_opt_getinlinecache(...)(...)(...) */
|
|
4992
5085
|
INSN_ENTRY(trace_opt_getinlinecache)
|
|
4993
5086
|
{
|
|
4994
|
-
vm_trace(ec, GET_CFP()
|
|
5087
|
+
vm_trace(ec, GET_CFP());
|
|
5088
|
+
|
|
4995
5089
|
DISPATCH_ORIGINAL_INSN(opt_getinlinecache);
|
|
4996
5090
|
END_INSN(trace_opt_getinlinecache);
|
|
4997
5091
|
}
|
|
@@ -4999,7 +5093,8 @@ INSN_ENTRY(trace_opt_getinlinecache)
|
|
|
4999
5093
|
/* insn trace_opt_setinlinecache(...)(...)(...) */
|
|
5000
5094
|
INSN_ENTRY(trace_opt_setinlinecache)
|
|
5001
5095
|
{
|
|
5002
|
-
vm_trace(ec, GET_CFP()
|
|
5096
|
+
vm_trace(ec, GET_CFP());
|
|
5097
|
+
|
|
5003
5098
|
DISPATCH_ORIGINAL_INSN(opt_setinlinecache);
|
|
5004
5099
|
END_INSN(trace_opt_setinlinecache);
|
|
5005
5100
|
}
|
|
@@ -5007,7 +5102,8 @@ INSN_ENTRY(trace_opt_setinlinecache)
|
|
|
5007
5102
|
/* insn trace_once(...)(...)(...) */
|
|
5008
5103
|
INSN_ENTRY(trace_once)
|
|
5009
5104
|
{
|
|
5010
|
-
vm_trace(ec, GET_CFP()
|
|
5105
|
+
vm_trace(ec, GET_CFP());
|
|
5106
|
+
|
|
5011
5107
|
DISPATCH_ORIGINAL_INSN(once);
|
|
5012
5108
|
END_INSN(trace_once);
|
|
5013
5109
|
}
|
|
@@ -5015,7 +5111,8 @@ INSN_ENTRY(trace_once)
|
|
|
5015
5111
|
/* insn trace_opt_case_dispatch(...)(...)(...) */
|
|
5016
5112
|
INSN_ENTRY(trace_opt_case_dispatch)
|
|
5017
5113
|
{
|
|
5018
|
-
vm_trace(ec, GET_CFP()
|
|
5114
|
+
vm_trace(ec, GET_CFP());
|
|
5115
|
+
|
|
5019
5116
|
DISPATCH_ORIGINAL_INSN(opt_case_dispatch);
|
|
5020
5117
|
END_INSN(trace_opt_case_dispatch);
|
|
5021
5118
|
}
|
|
@@ -5023,135 +5120,152 @@ INSN_ENTRY(trace_opt_case_dispatch)
|
|
|
5023
5120
|
/* insn trace_opt_plus(...)(...)(...) */
|
|
5024
5121
|
INSN_ENTRY(trace_opt_plus)
|
|
5025
5122
|
{
|
|
5026
|
-
vm_trace(ec, GET_CFP()
|
|
5027
|
-
|
|
5123
|
+
vm_trace(ec, GET_CFP());
|
|
5124
|
+
|
|
5125
|
+
DISPATCH_ORIGINAL_INSN(opt_send_without_block);
|
|
5028
5126
|
END_INSN(trace_opt_plus);
|
|
5029
5127
|
}
|
|
5030
5128
|
|
|
5031
5129
|
/* insn trace_opt_minus(...)(...)(...) */
|
|
5032
5130
|
INSN_ENTRY(trace_opt_minus)
|
|
5033
5131
|
{
|
|
5034
|
-
vm_trace(ec, GET_CFP()
|
|
5035
|
-
|
|
5132
|
+
vm_trace(ec, GET_CFP());
|
|
5133
|
+
|
|
5134
|
+
DISPATCH_ORIGINAL_INSN(opt_send_without_block);
|
|
5036
5135
|
END_INSN(trace_opt_minus);
|
|
5037
5136
|
}
|
|
5038
5137
|
|
|
5039
5138
|
/* insn trace_opt_mult(...)(...)(...) */
|
|
5040
5139
|
INSN_ENTRY(trace_opt_mult)
|
|
5041
5140
|
{
|
|
5042
|
-
vm_trace(ec, GET_CFP()
|
|
5043
|
-
|
|
5141
|
+
vm_trace(ec, GET_CFP());
|
|
5142
|
+
|
|
5143
|
+
DISPATCH_ORIGINAL_INSN(opt_send_without_block);
|
|
5044
5144
|
END_INSN(trace_opt_mult);
|
|
5045
5145
|
}
|
|
5046
5146
|
|
|
5047
5147
|
/* insn trace_opt_div(...)(...)(...) */
|
|
5048
5148
|
INSN_ENTRY(trace_opt_div)
|
|
5049
5149
|
{
|
|
5050
|
-
vm_trace(ec, GET_CFP()
|
|
5051
|
-
|
|
5150
|
+
vm_trace(ec, GET_CFP());
|
|
5151
|
+
|
|
5152
|
+
DISPATCH_ORIGINAL_INSN(opt_send_without_block);
|
|
5052
5153
|
END_INSN(trace_opt_div);
|
|
5053
5154
|
}
|
|
5054
5155
|
|
|
5055
5156
|
/* insn trace_opt_mod(...)(...)(...) */
|
|
5056
5157
|
INSN_ENTRY(trace_opt_mod)
|
|
5057
5158
|
{
|
|
5058
|
-
vm_trace(ec, GET_CFP()
|
|
5059
|
-
|
|
5159
|
+
vm_trace(ec, GET_CFP());
|
|
5160
|
+
|
|
5161
|
+
DISPATCH_ORIGINAL_INSN(opt_send_without_block);
|
|
5060
5162
|
END_INSN(trace_opt_mod);
|
|
5061
5163
|
}
|
|
5062
5164
|
|
|
5063
5165
|
/* insn trace_opt_eq(...)(...)(...) */
|
|
5064
5166
|
INSN_ENTRY(trace_opt_eq)
|
|
5065
5167
|
{
|
|
5066
|
-
vm_trace(ec, GET_CFP()
|
|
5067
|
-
|
|
5168
|
+
vm_trace(ec, GET_CFP());
|
|
5169
|
+
|
|
5170
|
+
DISPATCH_ORIGINAL_INSN(opt_send_without_block);
|
|
5068
5171
|
END_INSN(trace_opt_eq);
|
|
5069
5172
|
}
|
|
5070
5173
|
|
|
5071
5174
|
/* insn trace_opt_neq(...)(...)(...) */
|
|
5072
5175
|
INSN_ENTRY(trace_opt_neq)
|
|
5073
5176
|
{
|
|
5074
|
-
vm_trace(ec, GET_CFP()
|
|
5075
|
-
|
|
5177
|
+
vm_trace(ec, GET_CFP());
|
|
5178
|
+
ADD_PC(1);
|
|
5179
|
+
DISPATCH_ORIGINAL_INSN(opt_send_without_block);
|
|
5076
5180
|
END_INSN(trace_opt_neq);
|
|
5077
5181
|
}
|
|
5078
5182
|
|
|
5079
5183
|
/* insn trace_opt_lt(...)(...)(...) */
|
|
5080
5184
|
INSN_ENTRY(trace_opt_lt)
|
|
5081
5185
|
{
|
|
5082
|
-
vm_trace(ec, GET_CFP()
|
|
5083
|
-
|
|
5186
|
+
vm_trace(ec, GET_CFP());
|
|
5187
|
+
|
|
5188
|
+
DISPATCH_ORIGINAL_INSN(opt_send_without_block);
|
|
5084
5189
|
END_INSN(trace_opt_lt);
|
|
5085
5190
|
}
|
|
5086
5191
|
|
|
5087
5192
|
/* insn trace_opt_le(...)(...)(...) */
|
|
5088
5193
|
INSN_ENTRY(trace_opt_le)
|
|
5089
5194
|
{
|
|
5090
|
-
vm_trace(ec, GET_CFP()
|
|
5091
|
-
|
|
5195
|
+
vm_trace(ec, GET_CFP());
|
|
5196
|
+
|
|
5197
|
+
DISPATCH_ORIGINAL_INSN(opt_send_without_block);
|
|
5092
5198
|
END_INSN(trace_opt_le);
|
|
5093
5199
|
}
|
|
5094
5200
|
|
|
5095
5201
|
/* insn trace_opt_gt(...)(...)(...) */
|
|
5096
5202
|
INSN_ENTRY(trace_opt_gt)
|
|
5097
5203
|
{
|
|
5098
|
-
vm_trace(ec, GET_CFP()
|
|
5099
|
-
|
|
5204
|
+
vm_trace(ec, GET_CFP());
|
|
5205
|
+
|
|
5206
|
+
DISPATCH_ORIGINAL_INSN(opt_send_without_block);
|
|
5100
5207
|
END_INSN(trace_opt_gt);
|
|
5101
5208
|
}
|
|
5102
5209
|
|
|
5103
5210
|
/* insn trace_opt_ge(...)(...)(...) */
|
|
5104
5211
|
INSN_ENTRY(trace_opt_ge)
|
|
5105
5212
|
{
|
|
5106
|
-
vm_trace(ec, GET_CFP()
|
|
5107
|
-
|
|
5213
|
+
vm_trace(ec, GET_CFP());
|
|
5214
|
+
|
|
5215
|
+
DISPATCH_ORIGINAL_INSN(opt_send_without_block);
|
|
5108
5216
|
END_INSN(trace_opt_ge);
|
|
5109
5217
|
}
|
|
5110
5218
|
|
|
5111
5219
|
/* insn trace_opt_ltlt(...)(...)(...) */
|
|
5112
5220
|
INSN_ENTRY(trace_opt_ltlt)
|
|
5113
5221
|
{
|
|
5114
|
-
vm_trace(ec, GET_CFP()
|
|
5115
|
-
|
|
5222
|
+
vm_trace(ec, GET_CFP());
|
|
5223
|
+
|
|
5224
|
+
DISPATCH_ORIGINAL_INSN(opt_send_without_block);
|
|
5116
5225
|
END_INSN(trace_opt_ltlt);
|
|
5117
5226
|
}
|
|
5118
5227
|
|
|
5119
5228
|
/* insn trace_opt_and(...)(...)(...) */
|
|
5120
5229
|
INSN_ENTRY(trace_opt_and)
|
|
5121
5230
|
{
|
|
5122
|
-
vm_trace(ec, GET_CFP()
|
|
5123
|
-
|
|
5231
|
+
vm_trace(ec, GET_CFP());
|
|
5232
|
+
|
|
5233
|
+
DISPATCH_ORIGINAL_INSN(opt_send_without_block);
|
|
5124
5234
|
END_INSN(trace_opt_and);
|
|
5125
5235
|
}
|
|
5126
5236
|
|
|
5127
5237
|
/* insn trace_opt_or(...)(...)(...) */
|
|
5128
5238
|
INSN_ENTRY(trace_opt_or)
|
|
5129
5239
|
{
|
|
5130
|
-
vm_trace(ec, GET_CFP()
|
|
5131
|
-
|
|
5240
|
+
vm_trace(ec, GET_CFP());
|
|
5241
|
+
|
|
5242
|
+
DISPATCH_ORIGINAL_INSN(opt_send_without_block);
|
|
5132
5243
|
END_INSN(trace_opt_or);
|
|
5133
5244
|
}
|
|
5134
5245
|
|
|
5135
5246
|
/* insn trace_opt_aref(...)(...)(...) */
|
|
5136
5247
|
INSN_ENTRY(trace_opt_aref)
|
|
5137
5248
|
{
|
|
5138
|
-
vm_trace(ec, GET_CFP()
|
|
5139
|
-
|
|
5249
|
+
vm_trace(ec, GET_CFP());
|
|
5250
|
+
|
|
5251
|
+
DISPATCH_ORIGINAL_INSN(opt_send_without_block);
|
|
5140
5252
|
END_INSN(trace_opt_aref);
|
|
5141
5253
|
}
|
|
5142
5254
|
|
|
5143
5255
|
/* insn trace_opt_aset(...)(...)(...) */
|
|
5144
5256
|
INSN_ENTRY(trace_opt_aset)
|
|
5145
5257
|
{
|
|
5146
|
-
vm_trace(ec, GET_CFP()
|
|
5147
|
-
|
|
5258
|
+
vm_trace(ec, GET_CFP());
|
|
5259
|
+
|
|
5260
|
+
DISPATCH_ORIGINAL_INSN(opt_send_without_block);
|
|
5148
5261
|
END_INSN(trace_opt_aset);
|
|
5149
5262
|
}
|
|
5150
5263
|
|
|
5151
5264
|
/* insn trace_opt_aset_with(...)(...)(...) */
|
|
5152
5265
|
INSN_ENTRY(trace_opt_aset_with)
|
|
5153
5266
|
{
|
|
5154
|
-
vm_trace(ec, GET_CFP()
|
|
5267
|
+
vm_trace(ec, GET_CFP());
|
|
5268
|
+
|
|
5155
5269
|
DISPATCH_ORIGINAL_INSN(opt_aset_with);
|
|
5156
5270
|
END_INSN(trace_opt_aset_with);
|
|
5157
5271
|
}
|
|
@@ -5159,7 +5273,8 @@ INSN_ENTRY(trace_opt_aset_with)
|
|
|
5159
5273
|
/* insn trace_opt_aref_with(...)(...)(...) */
|
|
5160
5274
|
INSN_ENTRY(trace_opt_aref_with)
|
|
5161
5275
|
{
|
|
5162
|
-
vm_trace(ec, GET_CFP()
|
|
5276
|
+
vm_trace(ec, GET_CFP());
|
|
5277
|
+
|
|
5163
5278
|
DISPATCH_ORIGINAL_INSN(opt_aref_with);
|
|
5164
5279
|
END_INSN(trace_opt_aref_with);
|
|
5165
5280
|
}
|
|
@@ -5167,63 +5282,89 @@ INSN_ENTRY(trace_opt_aref_with)
|
|
|
5167
5282
|
/* insn trace_opt_length(...)(...)(...) */
|
|
5168
5283
|
INSN_ENTRY(trace_opt_length)
|
|
5169
5284
|
{
|
|
5170
|
-
vm_trace(ec, GET_CFP()
|
|
5171
|
-
|
|
5285
|
+
vm_trace(ec, GET_CFP());
|
|
5286
|
+
|
|
5287
|
+
DISPATCH_ORIGINAL_INSN(opt_send_without_block);
|
|
5172
5288
|
END_INSN(trace_opt_length);
|
|
5173
5289
|
}
|
|
5174
5290
|
|
|
5175
5291
|
/* insn trace_opt_size(...)(...)(...) */
|
|
5176
5292
|
INSN_ENTRY(trace_opt_size)
|
|
5177
5293
|
{
|
|
5178
|
-
vm_trace(ec, GET_CFP()
|
|
5179
|
-
|
|
5294
|
+
vm_trace(ec, GET_CFP());
|
|
5295
|
+
|
|
5296
|
+
DISPATCH_ORIGINAL_INSN(opt_send_without_block);
|
|
5180
5297
|
END_INSN(trace_opt_size);
|
|
5181
5298
|
}
|
|
5182
5299
|
|
|
5183
5300
|
/* insn trace_opt_empty_p(...)(...)(...) */
|
|
5184
5301
|
INSN_ENTRY(trace_opt_empty_p)
|
|
5185
5302
|
{
|
|
5186
|
-
vm_trace(ec, GET_CFP()
|
|
5187
|
-
|
|
5303
|
+
vm_trace(ec, GET_CFP());
|
|
5304
|
+
|
|
5305
|
+
DISPATCH_ORIGINAL_INSN(opt_send_without_block);
|
|
5188
5306
|
END_INSN(trace_opt_empty_p);
|
|
5189
5307
|
}
|
|
5190
5308
|
|
|
5191
5309
|
/* insn trace_opt_succ(...)(...)(...) */
|
|
5192
5310
|
INSN_ENTRY(trace_opt_succ)
|
|
5193
5311
|
{
|
|
5194
|
-
vm_trace(ec, GET_CFP()
|
|
5195
|
-
|
|
5312
|
+
vm_trace(ec, GET_CFP());
|
|
5313
|
+
|
|
5314
|
+
DISPATCH_ORIGINAL_INSN(opt_send_without_block);
|
|
5196
5315
|
END_INSN(trace_opt_succ);
|
|
5197
5316
|
}
|
|
5198
5317
|
|
|
5199
5318
|
/* insn trace_opt_not(...)(...)(...) */
|
|
5200
5319
|
INSN_ENTRY(trace_opt_not)
|
|
5201
5320
|
{
|
|
5202
|
-
vm_trace(ec, GET_CFP()
|
|
5203
|
-
|
|
5321
|
+
vm_trace(ec, GET_CFP());
|
|
5322
|
+
|
|
5323
|
+
DISPATCH_ORIGINAL_INSN(opt_send_without_block);
|
|
5204
5324
|
END_INSN(trace_opt_not);
|
|
5205
5325
|
}
|
|
5206
5326
|
|
|
5207
5327
|
/* insn trace_opt_regexpmatch2(...)(...)(...) */
|
|
5208
5328
|
INSN_ENTRY(trace_opt_regexpmatch2)
|
|
5209
5329
|
{
|
|
5210
|
-
vm_trace(ec, GET_CFP()
|
|
5211
|
-
|
|
5330
|
+
vm_trace(ec, GET_CFP());
|
|
5331
|
+
|
|
5332
|
+
DISPATCH_ORIGINAL_INSN(opt_send_without_block);
|
|
5212
5333
|
END_INSN(trace_opt_regexpmatch2);
|
|
5213
5334
|
}
|
|
5214
5335
|
|
|
5215
|
-
/* insn
|
|
5216
|
-
INSN_ENTRY(
|
|
5336
|
+
/* insn trace_invokebuiltin(...)(...)(...) */
|
|
5337
|
+
INSN_ENTRY(trace_invokebuiltin)
|
|
5338
|
+
{
|
|
5339
|
+
vm_trace(ec, GET_CFP());
|
|
5340
|
+
|
|
5341
|
+
DISPATCH_ORIGINAL_INSN(invokebuiltin);
|
|
5342
|
+
END_INSN(trace_invokebuiltin);
|
|
5343
|
+
}
|
|
5344
|
+
|
|
5345
|
+
/* insn trace_opt_invokebuiltin_delegate(...)(...)(...) */
|
|
5346
|
+
INSN_ENTRY(trace_opt_invokebuiltin_delegate)
|
|
5347
|
+
{
|
|
5348
|
+
vm_trace(ec, GET_CFP());
|
|
5349
|
+
|
|
5350
|
+
DISPATCH_ORIGINAL_INSN(opt_invokebuiltin_delegate);
|
|
5351
|
+
END_INSN(trace_opt_invokebuiltin_delegate);
|
|
5352
|
+
}
|
|
5353
|
+
|
|
5354
|
+
/* insn trace_opt_invokebuiltin_delegate_leave(...)(...)(...) */
|
|
5355
|
+
INSN_ENTRY(trace_opt_invokebuiltin_delegate_leave)
|
|
5217
5356
|
{
|
|
5218
|
-
vm_trace(ec, GET_CFP()
|
|
5219
|
-
|
|
5220
|
-
|
|
5357
|
+
vm_trace(ec, GET_CFP());
|
|
5358
|
+
|
|
5359
|
+
DISPATCH_ORIGINAL_INSN(opt_invokebuiltin_delegate_leave);
|
|
5360
|
+
END_INSN(trace_opt_invokebuiltin_delegate_leave);
|
|
5221
5361
|
}
|
|
5222
5362
|
|
|
5223
5363
|
/* insn trace_getlocal_WC_0(...)(...)(...) */
|
|
5224
5364
|
INSN_ENTRY(trace_getlocal_WC_0)
|
|
5225
5365
|
{
|
|
5226
|
-
vm_trace(ec, GET_CFP()
|
|
5366
|
+
vm_trace(ec, GET_CFP());
|
|
5367
|
+
|
|
5227
5368
|
DISPATCH_ORIGINAL_INSN(getlocal_WC_0);
|
|
5228
5369
|
END_INSN(trace_getlocal_WC_0);
|
|
5229
5370
|
}
|
|
@@ -5231,7 +5372,8 @@ INSN_ENTRY(trace_getlocal_WC_0)
|
|
|
5231
5372
|
/* insn trace_getlocal_WC_1(...)(...)(...) */
|
|
5232
5373
|
INSN_ENTRY(trace_getlocal_WC_1)
|
|
5233
5374
|
{
|
|
5234
|
-
vm_trace(ec, GET_CFP()
|
|
5375
|
+
vm_trace(ec, GET_CFP());
|
|
5376
|
+
|
|
5235
5377
|
DISPATCH_ORIGINAL_INSN(getlocal_WC_1);
|
|
5236
5378
|
END_INSN(trace_getlocal_WC_1);
|
|
5237
5379
|
}
|
|
@@ -5239,7 +5381,8 @@ INSN_ENTRY(trace_getlocal_WC_1)
|
|
|
5239
5381
|
/* insn trace_setlocal_WC_0(...)(...)(...) */
|
|
5240
5382
|
INSN_ENTRY(trace_setlocal_WC_0)
|
|
5241
5383
|
{
|
|
5242
|
-
vm_trace(ec, GET_CFP()
|
|
5384
|
+
vm_trace(ec, GET_CFP());
|
|
5385
|
+
|
|
5243
5386
|
DISPATCH_ORIGINAL_INSN(setlocal_WC_0);
|
|
5244
5387
|
END_INSN(trace_setlocal_WC_0);
|
|
5245
5388
|
}
|
|
@@ -5247,7 +5390,8 @@ INSN_ENTRY(trace_setlocal_WC_0)
|
|
|
5247
5390
|
/* insn trace_setlocal_WC_1(...)(...)(...) */
|
|
5248
5391
|
INSN_ENTRY(trace_setlocal_WC_1)
|
|
5249
5392
|
{
|
|
5250
|
-
vm_trace(ec, GET_CFP()
|
|
5393
|
+
vm_trace(ec, GET_CFP());
|
|
5394
|
+
|
|
5251
5395
|
DISPATCH_ORIGINAL_INSN(setlocal_WC_1);
|
|
5252
5396
|
END_INSN(trace_setlocal_WC_1);
|
|
5253
5397
|
}
|
|
@@ -5255,7 +5399,8 @@ INSN_ENTRY(trace_setlocal_WC_1)
|
|
|
5255
5399
|
/* insn trace_putobject_INT2FIX_0_(...)(...)(...) */
|
|
5256
5400
|
INSN_ENTRY(trace_putobject_INT2FIX_0_)
|
|
5257
5401
|
{
|
|
5258
|
-
vm_trace(ec, GET_CFP()
|
|
5402
|
+
vm_trace(ec, GET_CFP());
|
|
5403
|
+
|
|
5259
5404
|
DISPATCH_ORIGINAL_INSN(putobject_INT2FIX_0_);
|
|
5260
5405
|
END_INSN(trace_putobject_INT2FIX_0_);
|
|
5261
5406
|
}
|
|
@@ -5263,7 +5408,8 @@ INSN_ENTRY(trace_putobject_INT2FIX_0_)
|
|
|
5263
5408
|
/* insn trace_putobject_INT2FIX_1_(...)(...)(...) */
|
|
5264
5409
|
INSN_ENTRY(trace_putobject_INT2FIX_1_)
|
|
5265
5410
|
{
|
|
5266
|
-
vm_trace(ec, GET_CFP()
|
|
5411
|
+
vm_trace(ec, GET_CFP());
|
|
5412
|
+
|
|
5267
5413
|
DISPATCH_ORIGINAL_INSN(putobject_INT2FIX_1_);
|
|
5268
5414
|
END_INSN(trace_putobject_INT2FIX_1_);
|
|
5269
5415
|
}
|