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