debase-ruby_core_source 0.10.14 → 0.10.17
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +32 -0
- data/debase-ruby_core_source.gemspec +2 -2
- data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/addr2line.h +1 -1
- data/lib/debase/ruby_core_source/ruby-2.5.4-p155/ccan/build_assert/build_assert.h +40 -0
- data/lib/debase/ruby_core_source/ruby-2.5.4-p155/ccan/check_type/check_type.h +63 -0
- data/lib/debase/ruby_core_source/ruby-2.5.4-p155/ccan/container_of/container_of.h +142 -0
- data/lib/debase/ruby_core_source/ruby-2.5.4-p155/ccan/list/list.h +773 -0
- data/lib/debase/ruby_core_source/ruby-2.5.4-p155/ccan/str/str.h +16 -0
- data/lib/debase/ruby_core_source/ruby-2.5.4-p155/constant.h +51 -0
- data/lib/debase/ruby_core_source/ruby-2.5.4-p155/debug_counter.h +109 -0
- data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/dln.h +10 -9
- data/lib/debase/ruby_core_source/ruby-2.5.4-p155/encindex.h +69 -0
- data/lib/debase/ruby_core_source/ruby-2.5.4-p155/eval_intern.h +334 -0
- data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/gc.h +27 -10
- data/lib/debase/ruby_core_source/ruby-2.5.4-p155/id.h +250 -0
- data/lib/debase/ruby_core_source/ruby-2.5.4-p155/id_table.h +31 -0
- data/lib/debase/ruby_core_source/ruby-2.5.4-p155/insns.inc +217 -0
- data/lib/debase/ruby_core_source/ruby-2.5.4-p155/insns_info.inc +1570 -0
- data/lib/debase/ruby_core_source/ruby-2.5.4-p155/internal.h +2036 -0
- data/lib/debase/ruby_core_source/ruby-2.5.4-p155/iseq.h +308 -0
- data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/known_errors.inc +16 -1
- data/lib/debase/ruby_core_source/ruby-2.5.4-p155/method.h +218 -0
- data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/node.h +115 -79
- data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/node_name.inc +12 -22
- data/lib/debase/ruby_core_source/ruby-2.5.4-p155/opt_sc.inc +1601 -0
- data/lib/debase/ruby_core_source/ruby-2.5.4-p155/optinsn.inc +103 -0
- data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/optunifs.inc +28 -83
- data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/parse.h +74 -60
- data/lib/debase/ruby_core_source/ruby-2.5.4-p155/probes_helper.h +43 -0
- data/lib/debase/ruby_core_source/ruby-2.5.4-p155/regenc.h +254 -0
- data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/regint.h +299 -211
- data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/regparse.h +45 -37
- data/lib/debase/ruby_core_source/ruby-2.5.4-p155/revision.h +1 -0
- data/lib/debase/ruby_core_source/ruby-2.5.4-p155/ruby_assert.h +54 -0
- data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/ruby_atomic.h +84 -26
- data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/siphash.h +1 -1
- data/lib/debase/ruby_core_source/ruby-2.5.4-p155/symbol.h +108 -0
- data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/thread_pthread.h +14 -11
- data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/thread_win32.h +2 -6
- data/lib/debase/ruby_core_source/ruby-2.5.4-p155/timev.h +42 -0
- data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/transcode_data.h +34 -12
- data/lib/debase/ruby_core_source/ruby-2.5.4-p155/version.h +73 -0
- data/lib/debase/ruby_core_source/ruby-2.5.4-p155/vm.inc +3667 -0
- data/lib/debase/ruby_core_source/ruby-2.5.4-p155/vm_call_iseq_optimized.inc +213 -0
- data/lib/debase/ruby_core_source/ruby-2.5.4-p155/vm_core.h +1768 -0
- data/lib/debase/ruby_core_source/{ruby-1.9.3-p550/debug.h → ruby-2.5.4-p155/vm_debug.h} +4 -8
- data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/vm_exec.h +38 -30
- data/lib/debase/ruby_core_source/ruby-2.5.4-p155/vm_insnhelper.h +255 -0
- data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/vm_opts.h +14 -9
- data/lib/debase/ruby_core_source/ruby-2.5.4-p155/vmtc.inc +214 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/addr2line.h +20 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/builtin.h +84 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/ccan/build_assert/build_assert.h +40 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/ccan/check_type/check_type.h +63 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/ccan/container_of/container_of.h +142 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/ccan/list/list.h +789 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/ccan/str/str.h +17 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/constant.h +55 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/darray.h +226 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/debug_counter.h +469 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/dln.h +31 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/encindex.h +70 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/eval_intern.h +339 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/gc.h +143 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/hrtime.h +216 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/id.h +295 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/id_table.h +36 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/insns.inc +249 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/insns_info.inc +9064 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/array.h +113 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/bignum.h +246 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/bits.h +565 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/class.h +211 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/cmdlineopt.h +61 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/compar.h +49 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/compile.h +35 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/compilers.h +107 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/complex.h +29 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/cont.h +24 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/dir.h +16 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/enc.h +19 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/encoding.h +30 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/enum.h +18 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/enumerator.h +21 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/error.h +191 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/eval.h +32 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/file.h +38 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/fixnum.h +184 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/gc.h +188 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/hash.h +243 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/imemo.h +243 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/inits.h +50 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/io.h +38 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/load.h +18 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/loadpath.h +16 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/math.h +23 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/missing.h +18 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/numeric.h +271 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/object.h +83 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/parse.h +23 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/proc.h +32 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/process.h +137 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/ractor.h +6 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/random.h +16 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/range.h +40 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/rational.h +72 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/re.h +30 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/sanitizers.h +190 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/serial.h +23 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/signal.h +21 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/static_assert.h +16 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/string.h +141 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/struct.h +153 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/symbol.h +41 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/thread.h +53 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/time.h +34 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/transcode.h +20 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/util.h +27 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/variable.h +83 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/vm.h +134 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/warnings.h +16 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal.h +109 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/iseq.h +325 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/known_errors.inc +791 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/method.h +254 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/mjit.h +231 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/mjit_compile.inc +8333 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/node.h +510 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/node_name.inc +208 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/opt_sc.inc +109 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/optinsn.inc +128 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/optunifs.inc +43 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/parse.h +214 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/probes_helper.h +44 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/ractor_core.h +346 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/regenc.h +255 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/regint.h +957 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/regparse.h +370 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/revision.h +2 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/ruby_assert.h +14 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/ruby_atomic.h +23 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/siphash.h +48 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/symbol.h +119 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/thread_none.h +17 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/thread_pthread.h +115 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/thread_win32.h +61 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/timev.h +57 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/transcode_data.h +138 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/transient_heap.h +65 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/variable.h +21 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/version.h +91 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/vm.inc +5481 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/vm_call_iseq_optimized.inc +244 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/vm_callinfo.h +502 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/vm_core.h +2089 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/vm_debug.h +113 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/vm_exec.h +197 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/vm_insnhelper.h +262 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/vm_opts.h +73 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/vm_sync.h +137 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/vmtc.inc +243 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/yjit.h +73 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/yjit_asm.h +408 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/yjit_codegen.h +23 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/yjit_core.h +307 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/yjit_iface.h +38 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/addr2line.h +20 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/builtin.h +121 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/ccan/build_assert/build_assert.h +40 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/ccan/check_type/check_type.h +63 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/ccan/container_of/container_of.h +142 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/ccan/list/list.h +789 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/ccan/str/str.h +17 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/constant.h +55 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/darray.h +179 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/debug_counter.h +469 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/dln.h +31 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/encindex.h +70 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/eval_intern.h +339 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/gc.h +143 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/hrtime.h +226 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/id.h +295 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/id_table.h +36 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/insns.inc +249 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/insns_info.inc +9061 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/array.h +162 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/bignum.h +246 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/bits.h +565 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/class.h +212 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/cmdlineopt.h +58 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/compar.h +49 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/compile.h +35 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/compilers.h +107 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/complex.h +29 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/cont.h +26 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/dir.h +16 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/enc.h +19 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/encoding.h +30 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/enum.h +18 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/enumerator.h +21 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/error.h +191 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/eval.h +32 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/file.h +38 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/fixnum.h +184 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/gc.h +188 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/hash.h +243 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/imemo.h +242 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/inits.h +50 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/io.h +38 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/load.h +18 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/loadpath.h +16 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/math.h +23 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/missing.h +18 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/numeric.h +271 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/object.h +83 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/parse.h +23 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/proc.h +32 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/process.h +137 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/ractor.h +6 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/random.h +16 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/range.h +40 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/rational.h +72 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/re.h +30 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/sanitizers.h +190 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/serial.h +23 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/signal.h +21 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/static_assert.h +16 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/string.h +146 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/struct.h +153 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/symbol.h +42 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/thread.h +54 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/time.h +34 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/transcode.h +20 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/util.h +27 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/variable.h +83 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/vm.h +134 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal/warnings.h +16 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/internal.h +113 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/iseq.h +328 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/known_errors.inc +791 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/method.h +253 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/mjit.h +136 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/mjit_compile_attr.inc +430 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/mjit_compiler.h +58 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/mjit_unit.h +29 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/node.h +510 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/node_name.inc +208 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/opt_sc.inc +109 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/optinsn.inc +128 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/optunifs.inc +43 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/parse.h +214 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/probes_helper.h +44 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/ractor_core.h +341 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/regenc.h +255 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/regint.h +957 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/regparse.h +370 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/revision.h +2 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/ruby_assert.h +14 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/ruby_atomic.h +23 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/siphash.h +48 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/symbol.h +119 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/thread_none.h +20 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/thread_pthread.h +132 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/thread_win32.h +63 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/timev.h +57 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/transcode_data.h +138 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/transient_heap.h +65 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/variable.h +21 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/version.h +68 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/vm.inc +5476 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/vm_call_iseq_optimized.inc +244 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/vm_callinfo.h +522 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/vm_core.h +2130 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/vm_debug.h +122 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/vm_exec.h +197 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/vm_insnhelper.h +269 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/vm_opts.h +73 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/vm_sync.h +137 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/vmtc.inc +243 -0
- data/lib/debase/ruby_core_source/ruby-3.2.0-preview2/yjit.h +72 -0
- data/lib/debase/ruby_core_source/version.rb +1 -1
- metadata +284 -44
- data/lib/debase/ruby_core_source/ruby-1.9.3-p550/constant.h +0 -34
- data/lib/debase/ruby_core_source/ruby-1.9.3-p550/encdb.h +0 -167
- data/lib/debase/ruby_core_source/ruby-1.9.3-p550/eval_intern.h +0 -234
- data/lib/debase/ruby_core_source/ruby-1.9.3-p550/id.h +0 -177
- data/lib/debase/ruby_core_source/ruby-1.9.3-p550/insns.inc +0 -179
- data/lib/debase/ruby_core_source/ruby-1.9.3-p550/insns_info.inc +0 -695
- data/lib/debase/ruby_core_source/ruby-1.9.3-p550/internal.h +0 -242
- data/lib/debase/ruby_core_source/ruby-1.9.3-p550/iseq.h +0 -126
- data/lib/debase/ruby_core_source/ruby-1.9.3-p550/method.h +0 -105
- data/lib/debase/ruby_core_source/ruby-1.9.3-p550/opt_sc.inc +0 -670
- data/lib/debase/ruby_core_source/ruby-1.9.3-p550/optinsn.inc +0 -30
- data/lib/debase/ruby_core_source/ruby-1.9.3-p550/regenc.h +0 -219
- data/lib/debase/ruby_core_source/ruby-1.9.3-p550/revision.h +0 -1
- data/lib/debase/ruby_core_source/ruby-1.9.3-p550/timev.h +0 -21
- data/lib/debase/ruby_core_source/ruby-1.9.3-p550/transdb.h +0 -189
- data/lib/debase/ruby_core_source/ruby-1.9.3-p550/version.h +0 -52
- data/lib/debase/ruby_core_source/ruby-1.9.3-p550/vm.inc +0 -3054
- data/lib/debase/ruby_core_source/ruby-1.9.3-p550/vm_core.h +0 -763
- data/lib/debase/ruby_core_source/ruby-1.9.3-p550/vm_insnhelper.h +0 -220
- data/lib/debase/ruby_core_source/ruby-1.9.3-p550/vmtc.inc +0 -97
@@ -0,0 +1,408 @@
|
|
1
|
+
#ifndef YJIT_ASM_H
|
2
|
+
#define YJIT_ASM_H 1
|
3
|
+
|
4
|
+
#include <stdint.h>
|
5
|
+
#include <stddef.h>
|
6
|
+
#include <stdbool.h>
|
7
|
+
|
8
|
+
// Maximum number of labels to link
|
9
|
+
#define MAX_LABELS 32
|
10
|
+
|
11
|
+
// Maximum number of label references
|
12
|
+
#define MAX_LABEL_REFS 32
|
13
|
+
|
14
|
+
// Reference to an ASM label
|
15
|
+
typedef struct LabelRef
|
16
|
+
{
|
17
|
+
// Position in the code block where the label reference exists
|
18
|
+
uint32_t pos;
|
19
|
+
|
20
|
+
// Label which this refers to
|
21
|
+
uint32_t label_idx;
|
22
|
+
|
23
|
+
} labelref_t;
|
24
|
+
|
25
|
+
// Block of executable memory into which instructions can be written
|
26
|
+
typedef struct CodeBlock
|
27
|
+
{
|
28
|
+
// Memory block
|
29
|
+
// Users are advised to not use this directly.
|
30
|
+
uint8_t *mem_block_;
|
31
|
+
|
32
|
+
// Memory block size
|
33
|
+
uint32_t mem_size;
|
34
|
+
|
35
|
+
// Current writing position
|
36
|
+
uint32_t write_pos;
|
37
|
+
|
38
|
+
// Table of registered label addresses
|
39
|
+
uint32_t label_addrs[MAX_LABELS];
|
40
|
+
|
41
|
+
// Table of registered label names
|
42
|
+
// Note that these should be constant strings only
|
43
|
+
const char *label_names[MAX_LABELS];
|
44
|
+
|
45
|
+
// References to labels
|
46
|
+
labelref_t label_refs[MAX_LABEL_REFS];
|
47
|
+
|
48
|
+
// Number of labels registeered
|
49
|
+
uint32_t num_labels;
|
50
|
+
|
51
|
+
// Number of references to labels
|
52
|
+
uint32_t num_refs;
|
53
|
+
|
54
|
+
|
55
|
+
// Keep track of the current aligned write position.
|
56
|
+
// Used for changing protection when writing to the JIT buffer
|
57
|
+
uint32_t current_aligned_write_pos;
|
58
|
+
|
59
|
+
// Set if the assembler is unable to output some instructions,
|
60
|
+
// for example, when there is not enough space or when a jump
|
61
|
+
// target is too far away.
|
62
|
+
bool dropped_bytes;
|
63
|
+
|
64
|
+
// Flag to enable or disable comments
|
65
|
+
bool has_asm;
|
66
|
+
|
67
|
+
|
68
|
+
} codeblock_t;
|
69
|
+
|
70
|
+
// 1 is not aligned so this won't match any pages
|
71
|
+
#define ALIGNED_WRITE_POSITION_NONE 1
|
72
|
+
|
73
|
+
enum OpndType
|
74
|
+
{
|
75
|
+
OPND_NONE,
|
76
|
+
OPND_REG,
|
77
|
+
OPND_IMM,
|
78
|
+
OPND_MEM
|
79
|
+
};
|
80
|
+
|
81
|
+
enum RegType
|
82
|
+
{
|
83
|
+
REG_GP,
|
84
|
+
REG_FP,
|
85
|
+
REG_XMM,
|
86
|
+
REG_IP
|
87
|
+
};
|
88
|
+
|
89
|
+
typedef struct X86Reg
|
90
|
+
{
|
91
|
+
// Register type
|
92
|
+
uint8_t reg_type;
|
93
|
+
|
94
|
+
// Register index number
|
95
|
+
uint8_t reg_no;
|
96
|
+
|
97
|
+
} x86reg_t;
|
98
|
+
|
99
|
+
typedef struct X86Mem
|
100
|
+
{
|
101
|
+
/// Base register number
|
102
|
+
uint8_t base_reg_no;
|
103
|
+
|
104
|
+
/// Index register number
|
105
|
+
uint8_t idx_reg_no;
|
106
|
+
|
107
|
+
/// SIB scale exponent value (power of two, two bits)
|
108
|
+
uint8_t scale_exp;
|
109
|
+
|
110
|
+
/// Has index register flag
|
111
|
+
bool has_idx;
|
112
|
+
|
113
|
+
// TODO: should this be here, or should we have an extra operand type?
|
114
|
+
/// IP-relative addressing flag
|
115
|
+
bool is_iprel;
|
116
|
+
|
117
|
+
/// Constant displacement from the base, not scaled
|
118
|
+
int32_t disp;
|
119
|
+
|
120
|
+
} x86mem_t;
|
121
|
+
|
122
|
+
typedef struct X86Opnd
|
123
|
+
{
|
124
|
+
// Operand type
|
125
|
+
uint8_t type;
|
126
|
+
|
127
|
+
// Size in bits
|
128
|
+
uint16_t num_bits;
|
129
|
+
|
130
|
+
union
|
131
|
+
{
|
132
|
+
// Register operand
|
133
|
+
x86reg_t reg;
|
134
|
+
|
135
|
+
// Memory operand
|
136
|
+
x86mem_t mem;
|
137
|
+
|
138
|
+
// Signed immediate value
|
139
|
+
int64_t imm;
|
140
|
+
|
141
|
+
// Unsigned immediate value
|
142
|
+
uint64_t unsig_imm;
|
143
|
+
} as;
|
144
|
+
|
145
|
+
} x86opnd_t;
|
146
|
+
|
147
|
+
// Dummy none/null operand
|
148
|
+
static const x86opnd_t NO_OPND = { OPND_NONE, 0, .as.imm = 0 };
|
149
|
+
|
150
|
+
// Instruction pointer
|
151
|
+
static const x86opnd_t RIP = { OPND_REG, 64, .as.reg = { REG_IP, 5 }};
|
152
|
+
|
153
|
+
// 64-bit GP registers
|
154
|
+
static const x86opnd_t RAX = { OPND_REG, 64, .as.reg = { REG_GP, 0 }};
|
155
|
+
static const x86opnd_t RCX = { OPND_REG, 64, .as.reg = { REG_GP, 1 }};
|
156
|
+
static const x86opnd_t RDX = { OPND_REG, 64, .as.reg = { REG_GP, 2 }};
|
157
|
+
static const x86opnd_t RBX = { OPND_REG, 64, .as.reg = { REG_GP, 3 }};
|
158
|
+
static const x86opnd_t RSP = { OPND_REG, 64, .as.reg = { REG_GP, 4 }};
|
159
|
+
static const x86opnd_t RBP = { OPND_REG, 64, .as.reg = { REG_GP, 5 }};
|
160
|
+
static const x86opnd_t RSI = { OPND_REG, 64, .as.reg = { REG_GP, 6 }};
|
161
|
+
static const x86opnd_t RDI = { OPND_REG, 64, .as.reg = { REG_GP, 7 }};
|
162
|
+
static const x86opnd_t R8 = { OPND_REG, 64, .as.reg = { REG_GP, 8 }};
|
163
|
+
static const x86opnd_t R9 = { OPND_REG, 64, .as.reg = { REG_GP, 9 }};
|
164
|
+
static const x86opnd_t R10 = { OPND_REG, 64, .as.reg = { REG_GP, 10 }};
|
165
|
+
static const x86opnd_t R11 = { OPND_REG, 64, .as.reg = { REG_GP, 11 }};
|
166
|
+
static const x86opnd_t R12 = { OPND_REG, 64, .as.reg = { REG_GP, 12 }};
|
167
|
+
static const x86opnd_t R13 = { OPND_REG, 64, .as.reg = { REG_GP, 13 }};
|
168
|
+
static const x86opnd_t R14 = { OPND_REG, 64, .as.reg = { REG_GP, 14 }};
|
169
|
+
static const x86opnd_t R15 = { OPND_REG, 64, .as.reg = { REG_GP, 15 }};
|
170
|
+
|
171
|
+
// 32-bit GP registers
|
172
|
+
static const x86opnd_t EAX = { OPND_REG, 32, .as.reg = { REG_GP, 0 }};
|
173
|
+
static const x86opnd_t ECX = { OPND_REG, 32, .as.reg = { REG_GP, 1 }};
|
174
|
+
static const x86opnd_t EDX = { OPND_REG, 32, .as.reg = { REG_GP, 2 }};
|
175
|
+
static const x86opnd_t EBX = { OPND_REG, 32, .as.reg = { REG_GP, 3 }};
|
176
|
+
static const x86opnd_t ESP = { OPND_REG, 32, .as.reg = { REG_GP, 4 }};
|
177
|
+
static const x86opnd_t EBP = { OPND_REG, 32, .as.reg = { REG_GP, 5 }};
|
178
|
+
static const x86opnd_t ESI = { OPND_REG, 32, .as.reg = { REG_GP, 6 }};
|
179
|
+
static const x86opnd_t EDI = { OPND_REG, 32, .as.reg = { REG_GP, 7 }};
|
180
|
+
static const x86opnd_t R8D = { OPND_REG, 32, .as.reg = { REG_GP, 8 }};
|
181
|
+
static const x86opnd_t R9D = { OPND_REG, 32, .as.reg = { REG_GP, 9 }};
|
182
|
+
static const x86opnd_t R10D = { OPND_REG, 32, .as.reg = { REG_GP, 10 }};
|
183
|
+
static const x86opnd_t R11D = { OPND_REG, 32, .as.reg = { REG_GP, 11 }};
|
184
|
+
static const x86opnd_t R12D = { OPND_REG, 32, .as.reg = { REG_GP, 12 }};
|
185
|
+
static const x86opnd_t R13D = { OPND_REG, 32, .as.reg = { REG_GP, 13 }};
|
186
|
+
static const x86opnd_t R14D = { OPND_REG, 32, .as.reg = { REG_GP, 14 }};
|
187
|
+
static const x86opnd_t R15D = { OPND_REG, 32, .as.reg = { REG_GP, 15 }};
|
188
|
+
|
189
|
+
// 16-bit GP registers
|
190
|
+
static const x86opnd_t AX = { OPND_REG, 16, .as.reg = { REG_GP, 0 }};
|
191
|
+
static const x86opnd_t CX = { OPND_REG, 16, .as.reg = { REG_GP, 1 }};
|
192
|
+
static const x86opnd_t DX = { OPND_REG, 16, .as.reg = { REG_GP, 2 }};
|
193
|
+
static const x86opnd_t BX = { OPND_REG, 16, .as.reg = { REG_GP, 3 }};
|
194
|
+
static const x86opnd_t SP = { OPND_REG, 16, .as.reg = { REG_GP, 4 }};
|
195
|
+
static const x86opnd_t BP = { OPND_REG, 16, .as.reg = { REG_GP, 5 }};
|
196
|
+
static const x86opnd_t SI = { OPND_REG, 16, .as.reg = { REG_GP, 6 }};
|
197
|
+
static const x86opnd_t DI = { OPND_REG, 16, .as.reg = { REG_GP, 7 }};
|
198
|
+
static const x86opnd_t R8W = { OPND_REG, 16, .as.reg = { REG_GP, 8 }};
|
199
|
+
static const x86opnd_t R9W = { OPND_REG, 16, .as.reg = { REG_GP, 9 }};
|
200
|
+
static const x86opnd_t R10W = { OPND_REG, 16, .as.reg = { REG_GP, 10 }};
|
201
|
+
static const x86opnd_t R11W = { OPND_REG, 16, .as.reg = { REG_GP, 11 }};
|
202
|
+
static const x86opnd_t R12W = { OPND_REG, 16, .as.reg = { REG_GP, 12 }};
|
203
|
+
static const x86opnd_t R13W = { OPND_REG, 16, .as.reg = { REG_GP, 13 }};
|
204
|
+
static const x86opnd_t R14W = { OPND_REG, 16, .as.reg = { REG_GP, 14 }};
|
205
|
+
static const x86opnd_t R15W = { OPND_REG, 16, .as.reg = { REG_GP, 15 }};
|
206
|
+
|
207
|
+
// 8-bit GP registers
|
208
|
+
static const x86opnd_t AL = { OPND_REG, 8, .as.reg = { REG_GP, 0 }};
|
209
|
+
static const x86opnd_t CL = { OPND_REG, 8, .as.reg = { REG_GP, 1 }};
|
210
|
+
static const x86opnd_t DL = { OPND_REG, 8, .as.reg = { REG_GP, 2 }};
|
211
|
+
static const x86opnd_t BL = { OPND_REG, 8, .as.reg = { REG_GP, 3 }};
|
212
|
+
static const x86opnd_t SPL = { OPND_REG, 8, .as.reg = { REG_GP, 4 }};
|
213
|
+
static const x86opnd_t BPL = { OPND_REG, 8, .as.reg = { REG_GP, 5 }};
|
214
|
+
static const x86opnd_t SIL = { OPND_REG, 8, .as.reg = { REG_GP, 6 }};
|
215
|
+
static const x86opnd_t DIL = { OPND_REG, 8, .as.reg = { REG_GP, 7 }};
|
216
|
+
static const x86opnd_t R8B = { OPND_REG, 8, .as.reg = { REG_GP, 8 }};
|
217
|
+
static const x86opnd_t R9B = { OPND_REG, 8, .as.reg = { REG_GP, 9 }};
|
218
|
+
static const x86opnd_t R10B = { OPND_REG, 8, .as.reg = { REG_GP, 10 }};
|
219
|
+
static const x86opnd_t R11B = { OPND_REG, 8, .as.reg = { REG_GP, 11 }};
|
220
|
+
static const x86opnd_t R12B = { OPND_REG, 8, .as.reg = { REG_GP, 12 }};
|
221
|
+
static const x86opnd_t R13B = { OPND_REG, 8, .as.reg = { REG_GP, 13 }};
|
222
|
+
static const x86opnd_t R14B = { OPND_REG, 8, .as.reg = { REG_GP, 14 }};
|
223
|
+
static const x86opnd_t R15B = { OPND_REG, 8, .as.reg = { REG_GP, 15 }};
|
224
|
+
|
225
|
+
// C argument registers
|
226
|
+
#define NUM_C_ARG_REGS 6
|
227
|
+
#define C_ARG_REGS ( (x86opnd_t[]){ RDI, RSI, RDX, RCX, R8, R9 } )
|
228
|
+
|
229
|
+
// Compute the number of bits needed to store a signed or unsigned value
|
230
|
+
static inline uint32_t sig_imm_size(int64_t imm);
|
231
|
+
static inline uint32_t unsig_imm_size(uint64_t imm);
|
232
|
+
|
233
|
+
// Memory operand with base register and displacement/offset
|
234
|
+
static inline x86opnd_t mem_opnd(uint32_t num_bits, x86opnd_t base_reg, int32_t disp);
|
235
|
+
|
236
|
+
// Scale-index-base memory operand
|
237
|
+
static inline x86opnd_t mem_opnd_sib(uint32_t num_bits, x86opnd_t base_reg, x86opnd_t index_reg, int32_t scale, int32_t disp);
|
238
|
+
|
239
|
+
// Immediate number operand
|
240
|
+
static inline x86opnd_t imm_opnd(int64_t val);
|
241
|
+
|
242
|
+
// Constant pointer operand
|
243
|
+
static inline x86opnd_t const_ptr_opnd(const void *ptr);
|
244
|
+
|
245
|
+
// Struct member operand
|
246
|
+
#define member_opnd(base_reg, struct_type, member_name) mem_opnd( \
|
247
|
+
8 * sizeof(((struct_type*)0)->member_name), \
|
248
|
+
base_reg, \
|
249
|
+
offsetof(struct_type, member_name) \
|
250
|
+
)
|
251
|
+
|
252
|
+
// Struct member operand with an array index
|
253
|
+
#define member_opnd_idx(base_reg, struct_type, member_name, idx) mem_opnd( \
|
254
|
+
8 * sizeof(((struct_type*)0)->member_name[0]), \
|
255
|
+
base_reg, \
|
256
|
+
(offsetof(struct_type, member_name) + \
|
257
|
+
sizeof(((struct_type*)0)->member_name[0]) * idx) \
|
258
|
+
)
|
259
|
+
|
260
|
+
// Allocate executable memory
|
261
|
+
static uint8_t *alloc_exec_mem(uint32_t mem_size);
|
262
|
+
|
263
|
+
// Code block functions
|
264
|
+
static inline void cb_init(codeblock_t *cb, uint8_t *mem_block, uint32_t mem_size);
|
265
|
+
static inline void cb_align_pos(codeblock_t *cb, uint32_t multiple);
|
266
|
+
static inline void cb_set_pos(codeblock_t *cb, uint32_t pos);
|
267
|
+
static inline void cb_set_write_ptr(codeblock_t *cb, uint8_t *code_ptr);
|
268
|
+
static inline uint8_t *cb_get_ptr(const codeblock_t *cb, uint32_t index);
|
269
|
+
static inline uint8_t *cb_get_write_ptr(const codeblock_t *cb);
|
270
|
+
static inline void cb_write_byte(codeblock_t *cb, uint8_t byte);
|
271
|
+
static inline void cb_write_bytes(codeblock_t *cb, uint32_t num_bytes, ...);
|
272
|
+
static inline void cb_write_int(codeblock_t *cb, uint64_t val, uint32_t num_bits);
|
273
|
+
static inline uint32_t cb_new_label(codeblock_t *cb, const char *name);
|
274
|
+
static inline void cb_write_label(codeblock_t *cb, uint32_t label_idx);
|
275
|
+
static inline void cb_label_ref(codeblock_t *cb, uint32_t label_idx);
|
276
|
+
static inline void cb_link_labels(codeblock_t *cb);
|
277
|
+
static inline void cb_mark_all_writeable(codeblock_t *cb);
|
278
|
+
static inline void cb_mark_position_writeable(codeblock_t *cb, uint32_t write_pos);
|
279
|
+
static inline void cb_mark_all_executable(codeblock_t *cb);
|
280
|
+
|
281
|
+
// Encode individual instructions into a code block
|
282
|
+
static inline void add(codeblock_t *cb, x86opnd_t opnd0, x86opnd_t opnd1);
|
283
|
+
static inline void and(codeblock_t *cb, x86opnd_t opnd0, x86opnd_t opnd1);
|
284
|
+
static inline void call_ptr(codeblock_t *cb, x86opnd_t scratch_reg, uint8_t *dst_ptr);
|
285
|
+
static inline void call_label(codeblock_t *cb, uint32_t label_idx);
|
286
|
+
static inline void call(codeblock_t *cb, x86opnd_t opnd);
|
287
|
+
static inline void cmova(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
|
288
|
+
static inline void cmovae(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
|
289
|
+
static inline void cmovb(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
|
290
|
+
static inline void cmovbe(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
|
291
|
+
static inline void cmovc(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
|
292
|
+
static inline void cmove(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
|
293
|
+
static inline void cmovg(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
|
294
|
+
static inline void cmovge(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
|
295
|
+
static inline void cmovl(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
|
296
|
+
static inline void cmovle(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
|
297
|
+
static inline void cmovna(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
|
298
|
+
static inline void cmovnae(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
|
299
|
+
static inline void cmovnb(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
|
300
|
+
static inline void cmovnbe(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
|
301
|
+
static inline void cmovnc(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
|
302
|
+
static inline void cmovne(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
|
303
|
+
static inline void cmovng(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
|
304
|
+
static inline void cmovnge(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
|
305
|
+
static inline void cmovnl(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
|
306
|
+
static inline void cmovnle(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
|
307
|
+
static inline void cmovno(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
|
308
|
+
static inline void cmovnp(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
|
309
|
+
static inline void cmovns(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
|
310
|
+
static inline void cmovnz(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
|
311
|
+
static inline void cmovo(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
|
312
|
+
static inline void cmovp(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
|
313
|
+
static inline void cmovpe(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
|
314
|
+
static inline void cmovpo(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
|
315
|
+
static inline void cmovs(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
|
316
|
+
static inline void cmovz(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
|
317
|
+
static inline void cmp(codeblock_t *cb, x86opnd_t opnd0, x86opnd_t opnd1);
|
318
|
+
static inline void cdq(codeblock_t *cb);
|
319
|
+
static inline void cqo(codeblock_t *cb);
|
320
|
+
static inline void int3(codeblock_t *cb);
|
321
|
+
static inline void ja_label(codeblock_t *cb, uint32_t label_idx);
|
322
|
+
static inline void jae_label(codeblock_t *cb, uint32_t label_idx);
|
323
|
+
static inline void jb_label(codeblock_t *cb, uint32_t label_idx);
|
324
|
+
static inline void jbe_label(codeblock_t *cb, uint32_t label_idx);
|
325
|
+
static inline void jc_label(codeblock_t *cb, uint32_t label_idx);
|
326
|
+
static inline void je_label(codeblock_t *cb, uint32_t label_idx);
|
327
|
+
static inline void jg_label(codeblock_t *cb, uint32_t label_idx);
|
328
|
+
static inline void jge_label(codeblock_t *cb, uint32_t label_idx);
|
329
|
+
static inline void jl_label(codeblock_t *cb, uint32_t label_idx);
|
330
|
+
static inline void jle_label(codeblock_t *cb, uint32_t label_idx);
|
331
|
+
static inline void jna_label(codeblock_t *cb, uint32_t label_idx);
|
332
|
+
static inline void jnae_label(codeblock_t *cb, uint32_t label_idx);
|
333
|
+
static inline void jnb_label(codeblock_t *cb, uint32_t label_idx);
|
334
|
+
static inline void jnbe_label(codeblock_t *cb, uint32_t label_idx);
|
335
|
+
static inline void jnc_label(codeblock_t *cb, uint32_t label_idx);
|
336
|
+
static inline void jne_label(codeblock_t *cb, uint32_t label_idx);
|
337
|
+
static inline void jng_label(codeblock_t *cb, uint32_t label_idx);
|
338
|
+
static inline void jnge_label(codeblock_t *cb, uint32_t label_idx);
|
339
|
+
static inline void jnl_label(codeblock_t *cb, uint32_t label_idx);
|
340
|
+
static inline void jnle_label(codeblock_t *cb, uint32_t label_idx);
|
341
|
+
static inline void jno_label(codeblock_t *cb, uint32_t label_idx);
|
342
|
+
static inline void jnp_label(codeblock_t *cb, uint32_t label_idx);
|
343
|
+
static inline void jns_label(codeblock_t *cb, uint32_t label_idx);
|
344
|
+
static inline void jnz_label(codeblock_t *cb, uint32_t label_idx);
|
345
|
+
static inline void jo_label(codeblock_t *cb, uint32_t label_idx);
|
346
|
+
static inline void jp_label(codeblock_t *cb, uint32_t label_idx);
|
347
|
+
static inline void jpe_label(codeblock_t *cb, uint32_t label_idx);
|
348
|
+
static inline void jpo_label(codeblock_t *cb, uint32_t label_idx);
|
349
|
+
static inline void js_label(codeblock_t *cb, uint32_t label_idx);
|
350
|
+
static inline void jz_label(codeblock_t *cb, uint32_t label_idx);
|
351
|
+
static inline void ja_ptr(codeblock_t *cb, uint8_t *ptr);
|
352
|
+
static inline void jae_ptr(codeblock_t *cb, uint8_t *ptr);
|
353
|
+
static inline void jb_ptr(codeblock_t *cb, uint8_t *ptr);
|
354
|
+
static inline void jbe_ptr(codeblock_t *cb, uint8_t *ptr);
|
355
|
+
static inline void jc_ptr(codeblock_t *cb, uint8_t *ptr);
|
356
|
+
static inline void je_ptr(codeblock_t *cb, uint8_t *ptr);
|
357
|
+
static inline void jg_ptr(codeblock_t *cb, uint8_t *ptr);
|
358
|
+
static inline void jge_ptr(codeblock_t *cb, uint8_t *ptr);
|
359
|
+
static inline void jl_ptr(codeblock_t *cb, uint8_t *ptr);
|
360
|
+
static inline void jle_ptr(codeblock_t *cb, uint8_t *ptr);
|
361
|
+
static inline void jna_ptr(codeblock_t *cb, uint8_t *ptr);
|
362
|
+
static inline void jnae_ptr(codeblock_t *cb, uint8_t *ptr);
|
363
|
+
static inline void jnb_ptr(codeblock_t *cb, uint8_t *ptr);
|
364
|
+
static inline void jnbe_ptr(codeblock_t *cb, uint8_t *ptr);
|
365
|
+
static inline void jnc_ptr(codeblock_t *cb, uint8_t *ptr);
|
366
|
+
static inline void jne_ptr(codeblock_t *cb, uint8_t *ptr);
|
367
|
+
static inline void jng_ptr(codeblock_t *cb, uint8_t *ptr);
|
368
|
+
static inline void jnge_ptr(codeblock_t *cb, uint8_t *ptr);
|
369
|
+
static inline void jnl_ptr(codeblock_t *cb, uint8_t *ptr);
|
370
|
+
static inline void jnle_ptr(codeblock_t *cb, uint8_t *ptr);
|
371
|
+
static inline void jno_ptr(codeblock_t *cb, uint8_t *ptr);
|
372
|
+
static inline void jnp_ptr(codeblock_t *cb, uint8_t *ptr);
|
373
|
+
static inline void jns_ptr(codeblock_t *cb, uint8_t *ptr);
|
374
|
+
static inline void jnz_ptr(codeblock_t *cb, uint8_t *ptr);
|
375
|
+
static inline void jo_ptr(codeblock_t *cb, uint8_t *ptr);
|
376
|
+
static inline void jp_ptr(codeblock_t *cb, uint8_t *ptr);
|
377
|
+
static inline void jpe_ptr(codeblock_t *cb, uint8_t *ptr);
|
378
|
+
static inline void jpo_ptr(codeblock_t *cb, uint8_t *ptr);
|
379
|
+
static inline void js_ptr(codeblock_t *cb, uint8_t *ptr);
|
380
|
+
static inline void jz_ptr(codeblock_t *cb, uint8_t *ptr);
|
381
|
+
static inline void jmp_label(codeblock_t *cb, uint32_t label_idx);
|
382
|
+
static inline void jmp_ptr(codeblock_t *cb, uint8_t *ptr);
|
383
|
+
static inline void jmp_rm(codeblock_t *cb, x86opnd_t opnd);
|
384
|
+
static inline void jmp32(codeblock_t *cb, int32_t offset);
|
385
|
+
static inline void lea(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
|
386
|
+
static inline void mov(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
|
387
|
+
static inline void movsx(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
|
388
|
+
static inline void neg(codeblock_t *cb, x86opnd_t opnd);
|
389
|
+
static inline void nop(codeblock_t *cb, uint32_t length);
|
390
|
+
static inline void not(codeblock_t *cb, x86opnd_t opnd);
|
391
|
+
static inline void or(codeblock_t *cb, x86opnd_t opnd0, x86opnd_t opnd1);
|
392
|
+
static inline void pop(codeblock_t *cb, x86opnd_t reg);
|
393
|
+
static inline void popfq(codeblock_t *cb);
|
394
|
+
static inline void push(codeblock_t *cb, x86opnd_t opnd);
|
395
|
+
static inline void pushfq(codeblock_t *cb);
|
396
|
+
static inline void ret(codeblock_t *cb);
|
397
|
+
static inline void sal(codeblock_t *cb, x86opnd_t opnd0, x86opnd_t opnd1);
|
398
|
+
static inline void sar(codeblock_t *cb, x86opnd_t opnd0, x86opnd_t opnd1);
|
399
|
+
static inline void shl(codeblock_t *cb, x86opnd_t opnd0, x86opnd_t opnd1);
|
400
|
+
static inline void shr(codeblock_t *cb, x86opnd_t opnd0, x86opnd_t opnd1);
|
401
|
+
static inline void sub(codeblock_t *cb, x86opnd_t opnd0, x86opnd_t opnd1);
|
402
|
+
static inline void test(codeblock_t *cb, x86opnd_t rm_opnd, x86opnd_t test_opnd);
|
403
|
+
static inline void ud2(codeblock_t *cb);
|
404
|
+
static inline void xchg(codeblock_t *cb, x86opnd_t rm_opnd, x86opnd_t r_opnd);
|
405
|
+
static inline void xor(codeblock_t *cb, x86opnd_t opnd0, x86opnd_t opnd1);
|
406
|
+
static inline void cb_write_lock_prefix(codeblock_t *cb);
|
407
|
+
|
408
|
+
#endif
|
@@ -0,0 +1,23 @@
|
|
1
|
+
#ifndef YJIT_CODEGEN_H
|
2
|
+
#define YJIT_CODEGEN_H 1
|
3
|
+
|
4
|
+
typedef enum codegen_status {
|
5
|
+
YJIT_END_BLOCK,
|
6
|
+
YJIT_KEEP_COMPILING,
|
7
|
+
YJIT_CANT_COMPILE
|
8
|
+
} codegen_status_t;
|
9
|
+
|
10
|
+
// Code generation function signature
|
11
|
+
typedef codegen_status_t (*codegen_fn)(jitstate_t *jit, ctx_t *ctx, codeblock_t *cb);
|
12
|
+
|
13
|
+
static void jit_ensure_block_entry_exit(jitstate_t *jit);
|
14
|
+
|
15
|
+
static uint8_t *yjit_entry_prologue(codeblock_t *cb, const rb_iseq_t *iseq);
|
16
|
+
|
17
|
+
static block_t *gen_single_block(blockid_t blockid, const ctx_t *start_ctx, rb_execution_context_t *ec);
|
18
|
+
|
19
|
+
static void gen_code_for_exit_from_stub(void);
|
20
|
+
|
21
|
+
static void yjit_init_codegen(void);
|
22
|
+
|
23
|
+
#endif // #ifndef YJIT_CODEGEN_H
|