debase-ruby_core_source 0.10.9 → 0.10.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +1 -1
- data/Rakefile +6 -3
- data/debase-ruby_core_source.gemspec +2 -1
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/addr2line.h +2 -3
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/builtin.h +17 -2
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/ccan/build_assert/build_assert.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/ccan/check_type/check_type.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/ccan/container_of/container_of.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/ccan/list/list.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/ccan/str/str.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/constant.h +10 -5
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/debug_counter.h +127 -48
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/dln.h +3 -18
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/encindex.h +3 -2
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/eval_intern.h +16 -7
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/gc.h +13 -2
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/hrtime.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/id.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/id_table.h +2 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/insns.inc +0 -4
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/insns_info.inc +323 -536
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/array.h +119 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/bignum.h +246 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/bits.h +566 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/class.h +174 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/compar.h +50 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/compile.h +32 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/compilers.h +108 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/complex.h +29 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/cont.h +25 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/dir.h +17 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/enc.h +20 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/encoding.h +28 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/enum.h +19 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/enumerator.h +22 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/error.h +124 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/eval.h +33 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/file.h +39 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/fixnum.h +185 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/gc.h +161 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/hash.h +241 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/imemo.h +243 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/inits.h +51 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/io.h +35 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/load.h +19 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/loadpath.h +17 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/math.h +24 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/missing.h +19 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/numeric.h +255 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/object.h +83 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/parse.h +23 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/proc.h +33 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/process.h +136 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/random.h +17 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/range.h +41 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/rational.h +71 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/re.h +29 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/sanitizers.h +191 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/scheduler.h +44 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/serial.h +24 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/signal.h +22 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/static_assert.h +17 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/string.h +140 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/struct.h +154 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/symbol.h +41 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/thread.h +54 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/time.h +35 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/transcode.h +21 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/util.h +31 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/variable.h +84 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/vm.h +136 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/warnings.h +17 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal.h +107 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/iseq.h +11 -18
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/known_errors.inc +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/method.h +21 -8
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/mjit.h +89 -48
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/mjit_compile.inc +2746 -2288
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/node.h +32 -24
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/node_name.inc +2 -2
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/opt_sc.inc +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/optinsn.inc +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/optunifs.inc +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/parse.h +1 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/probes_helper.h +2 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/ractor_core.h +343 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/regenc.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/regint.h +1 -1
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/regparse.h +0 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/revision.h +2 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/ruby_assert.h +15 -0
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/ruby_atomic.h +23 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/siphash.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/symbol.h +4 -4
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/thread_pthread.h +45 -5
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/thread_win32.h +28 -3
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/timev.h +1 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/transcode_data.h +2 -3
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/transient_heap.h +6 -3
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/variable.h +22 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/version.h +23 -11
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/vm.inc +707 -671
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/vm_call_iseq_optimized.inc +93 -86
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/vm_callinfo.h +456 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/vm_core.h +262 -194
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/vm_debug.h +116 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/vm_exec.h +9 -6
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/vm_insnhelper.h +28 -26
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/vm_opts.h +6 -5
- data/lib/debase/ruby_core_source/ruby-3.0.0-p0/vm_sync.h +136 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/vmtc.inc +0 -4
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/addr2line.h +2 -3
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/builtin.h +83 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/ccan/build_assert/build_assert.h +13 -13
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/ccan/check_type/check_type.h +17 -17
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/ccan/container_of/container_of.h +63 -63
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/ccan/list/list.h +262 -262
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/ccan/str/str.h +4 -4
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/constant.h +10 -9
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/darray.h +198 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/debug_counter.h +137 -48
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/dln.h +3 -23
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/encindex.h +3 -2
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/eval_intern.h +34 -41
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/gc.h +24 -11
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/hrtime.h +9 -9
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/id.h +4 -3
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/id_table.h +3 -1
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/insns.inc +6 -8
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/insns_info.inc +1907 -2543
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/array.h +113 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/bignum.h +246 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/bits.h +565 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/class.h +188 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/compar.h +49 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/compile.h +35 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/compilers.h +107 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/complex.h +29 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/cont.h +24 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/dir.h +16 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/enc.h +19 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/encoding.h +30 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/enum.h +18 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/enumerator.h +21 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/error.h +191 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/eval.h +32 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/file.h +38 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/fixnum.h +184 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/gc.h +175 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/hash.h +243 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/imemo.h +243 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/inits.h +50 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/io.h +38 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/load.h +18 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/loadpath.h +16 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/math.h +23 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/missing.h +18 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/numeric.h +271 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/object.h +83 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/parse.h +23 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/proc.h +32 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/process.h +137 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/random.h +16 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/range.h +40 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/rational.h +72 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/re.h +30 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/sanitizers.h +190 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/serial.h +23 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/signal.h +21 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/static_assert.h +16 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/string.h +141 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/struct.h +153 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/symbol.h +40 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/thread.h +53 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/time.h +34 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/transcode.h +20 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/util.h +27 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/variable.h +83 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/vm.h +132 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/warnings.h +16 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal.h +109 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/iseq.h +44 -35
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/known_errors.inc +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/method.h +21 -4
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/mjit.h +231 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/mjit_compile.inc +3322 -2940
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/node.h +39 -23
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/node_name.inc +210 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/opt_sc.inc +0 -2
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/optinsn.inc +7 -7
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/optunifs.inc +1 -1
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/parse.h +9 -5
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/probes_helper.h +9 -7
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/ractor_core.h +346 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/regenc.h +8 -8
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/regint.h +16 -12
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/regparse.h +2 -2
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/revision.h +2 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/ruby_assert.h +14 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/ruby_atomic.h +23 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/siphash.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/symbol.h +14 -14
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/thread_pthread.h +45 -5
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/thread_win32.h +30 -5
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/timev.h +1 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/transcode_data.h +49 -50
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/transient_heap.h +6 -3
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/variable.h +21 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/version.h +15 -4
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/vm.inc +1033 -887
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/vm_call_iseq_optimized.inc +244 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/vm_callinfo.h +454 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/vm_core.h +508 -362
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/vm_debug.h +119 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/vm_exec.h +22 -18
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/vm_insnhelper.h +42 -32
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/vm_opts.h +8 -5
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/vm_sync.h +137 -0
- data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/vmtc.inc +6 -8
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/yjit.h +63 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/yjit_asm.h +392 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/yjit_codegen.h +19 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/yjit_core.h +302 -0
- data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/yjit_iface.h +38 -0
- data/lib/debase/ruby_core_source/version.rb +1 -1
- data/lib/debase/ruby_core_source.rb +0 -2
- metadata +240 -110
- data/lib/debase/ruby_core_source/ruby-2.7.0-preview2/internal.h +0 -2682
- data/lib/debase/ruby_core_source/ruby-2.7.0-preview2/revision.h +0 -2
- data/lib/debase/ruby_core_source/ruby-2.7.0-preview2/ruby_assert.h +0 -15
- data/lib/debase/ruby_core_source/ruby-2.7.0-preview2/ruby_atomic.h +0 -244
- data/lib/debase/ruby_core_source/ruby-2.7.0-preview2/vm_call_iseq_optimized.inc +0 -237
- data/lib/debase/ruby_core_source/ruby-2.7.0-preview2/vm_debug.h +0 -34
- data/lib/debase/ruby_core_source/ruby-2.7.0-preview3/internal.h +0 -2657
- data/lib/debase/ruby_core_source/ruby-2.7.0-preview3/mjit.h +0 -175
- data/lib/debase/ruby_core_source/ruby-2.7.0-preview3/node_name.inc +0 -208
- data/lib/debase/ruby_core_source/ruby-2.7.0-preview3/revision.h +0 -2
- data/lib/debase/ruby_core_source/ruby-2.7.0-preview3/ruby_assert.h +0 -15
- data/lib/debase/ruby_core_source/ruby-2.7.0-preview3/ruby_atomic.h +0 -244
- data/lib/debase/ruby_core_source/ruby-2.7.0-preview3/vm_debug.h +0 -34
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#ifndef INTERNAL_EVAL_H /*-*-C-*-vi:se ft=c:*/
|
|
2
|
+
#define INTERNAL_EVAL_H
|
|
3
|
+
/**
|
|
4
|
+
* @file
|
|
5
|
+
* @author Ruby developers <ruby-core@ruby-lang.org>
|
|
6
|
+
* @copyright This file is a part of the programming language Ruby.
|
|
7
|
+
* Permission is hereby granted, to either redistribute and/or
|
|
8
|
+
* modify this file, provided that the conditions mentioned in the
|
|
9
|
+
* file COPYING are met. Consult the file for details.
|
|
10
|
+
* @brief Internal header for the evaluator.
|
|
11
|
+
* @note There also is eval_intern.h, which is evaluator's internal
|
|
12
|
+
* header (related to this file, but not the same role).
|
|
13
|
+
*/
|
|
14
|
+
#include "ruby/ruby.h" /* for ID */
|
|
15
|
+
|
|
16
|
+
#define id_signo ruby_static_id_signo
|
|
17
|
+
#define id_status ruby_static_id_status
|
|
18
|
+
|
|
19
|
+
/* eval.c */
|
|
20
|
+
extern ID ruby_static_id_signo;
|
|
21
|
+
extern ID ruby_static_id_status;
|
|
22
|
+
VALUE rb_refinement_module_get_refined_class(VALUE module);
|
|
23
|
+
void rb_class_modify_check(VALUE);
|
|
24
|
+
NORETURN(VALUE rb_f_raise(int argc, VALUE *argv));
|
|
25
|
+
|
|
26
|
+
/* eval_error.c */
|
|
27
|
+
VALUE rb_get_backtrace(VALUE info);
|
|
28
|
+
|
|
29
|
+
/* eval_jump.c */
|
|
30
|
+
void rb_call_end_proc(VALUE data);
|
|
31
|
+
void rb_mark_end_proc(void);
|
|
32
|
+
|
|
33
|
+
#endif /* INTERNAL_EVAL_H */
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
#ifndef INTERNAL_FILE_H /*-*-C-*-vi:se ft=c:*/
|
|
2
|
+
#define INTERNAL_FILE_H
|
|
3
|
+
/**
|
|
4
|
+
* @file
|
|
5
|
+
* @author Ruby developers <ruby-core@ruby-lang.org>
|
|
6
|
+
* @copyright This file is a part of the programming language Ruby.
|
|
7
|
+
* Permission is hereby granted, to either redistribute and/or
|
|
8
|
+
* modify this file, provided that the conditions mentioned in the
|
|
9
|
+
* file COPYING are met. Consult the file for details.
|
|
10
|
+
* @brief Internal header for File.
|
|
11
|
+
*/
|
|
12
|
+
#include "ruby/ruby.h" /* for VALUE */
|
|
13
|
+
#include "ruby/encoding.h" /* for rb_encodinng */
|
|
14
|
+
|
|
15
|
+
/* file.c */
|
|
16
|
+
extern const char ruby_null_device[];
|
|
17
|
+
VALUE rb_home_dir_of(VALUE user, VALUE result);
|
|
18
|
+
VALUE rb_default_home_dir(VALUE result);
|
|
19
|
+
VALUE rb_realpath_internal(VALUE basedir, VALUE path, int strict);
|
|
20
|
+
VALUE rb_check_realpath(VALUE basedir, VALUE path, rb_encoding *origenc);
|
|
21
|
+
void rb_file_const(const char*, VALUE);
|
|
22
|
+
int rb_file_load_ok(const char *);
|
|
23
|
+
VALUE rb_file_expand_path_fast(VALUE, VALUE);
|
|
24
|
+
VALUE rb_file_expand_path_internal(VALUE, VALUE, int, int, VALUE);
|
|
25
|
+
VALUE rb_get_path_check_to_string(VALUE);
|
|
26
|
+
VALUE rb_get_path_check_convert(VALUE);
|
|
27
|
+
int ruby_is_fd_loadable(int fd);
|
|
28
|
+
|
|
29
|
+
RUBY_SYMBOL_EXPORT_BEGIN
|
|
30
|
+
/* file.c (export) */
|
|
31
|
+
#ifdef HAVE_READLINK
|
|
32
|
+
VALUE rb_readlink(VALUE path, rb_encoding *enc);
|
|
33
|
+
#endif
|
|
34
|
+
#ifdef __APPLE__
|
|
35
|
+
VALUE rb_str_normalize_ospath(const char *ptr, long len);
|
|
36
|
+
#endif
|
|
37
|
+
RUBY_SYMBOL_EXPORT_END
|
|
38
|
+
|
|
39
|
+
#endif /* INTERNAL_FILE_H */
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
#ifndef INTERNAL_FIXNUM_H /*-*-C-*-vi:se ft=c:*/
|
|
2
|
+
#define INTERNAL_FIXNUM_H
|
|
3
|
+
/**
|
|
4
|
+
* @file
|
|
5
|
+
* @author Ruby developers <ruby-core@ruby-lang.org>
|
|
6
|
+
* @copyright This file is a part of the programming language Ruby.
|
|
7
|
+
* Permission is hereby granted, to either redistribute and/or
|
|
8
|
+
* modify this file, provided that the conditions mentioned in the
|
|
9
|
+
* file COPYING are met. Consult the file for details.
|
|
10
|
+
* @brief Internal header for Fixnums.
|
|
11
|
+
*/
|
|
12
|
+
#include "ruby/internal/config.h" /* for HAVE_LONG_LONG */
|
|
13
|
+
#include <limits.h> /* for CHAR_BIT */
|
|
14
|
+
#include "internal/compilers.h" /* for __has_builtin */
|
|
15
|
+
#include "ruby/internal/stdbool.h" /* for bool */
|
|
16
|
+
#include "ruby/intern.h" /* for rb_big_mul */
|
|
17
|
+
#include "ruby/ruby.h" /* for RB_FIXABLE */
|
|
18
|
+
|
|
19
|
+
#if HAVE_LONG_LONG && SIZEOF_LONG * 2 <= SIZEOF_LONG_LONG
|
|
20
|
+
# define DLONG LONG_LONG
|
|
21
|
+
# define DL2NUM(x) LL2NUM(x)
|
|
22
|
+
#elif defined(HAVE_INT128_T)
|
|
23
|
+
# define DLONG int128_t
|
|
24
|
+
# define DL2NUM(x) (RB_FIXABLE(x) ? LONG2FIX(x) : rb_int128t2big(x))
|
|
25
|
+
VALUE rb_int128t2big(int128_t n); /* in bignum.c */
|
|
26
|
+
#endif
|
|
27
|
+
|
|
28
|
+
static inline long rb_overflowed_fix_to_int(long x);
|
|
29
|
+
static inline VALUE rb_fix_plus_fix(VALUE x, VALUE y);
|
|
30
|
+
static inline VALUE rb_fix_minus_fix(VALUE x, VALUE y);
|
|
31
|
+
static inline VALUE rb_fix_mul_fix(VALUE x, VALUE y);
|
|
32
|
+
static inline void rb_fix_divmod_fix(VALUE x, VALUE y, VALUE *divp, VALUE *modp);
|
|
33
|
+
static inline VALUE rb_fix_div_fix(VALUE x, VALUE y);
|
|
34
|
+
static inline VALUE rb_fix_mod_fix(VALUE x, VALUE y);
|
|
35
|
+
static inline bool FIXNUM_POSITIVE_P(VALUE num);
|
|
36
|
+
static inline bool FIXNUM_NEGATIVE_P(VALUE num);
|
|
37
|
+
static inline bool FIXNUM_ZERO_P(VALUE num);
|
|
38
|
+
|
|
39
|
+
static inline long
|
|
40
|
+
rb_overflowed_fix_to_int(long x)
|
|
41
|
+
{
|
|
42
|
+
return (long)((unsigned long)(x >> 1) ^ (1LU << (SIZEOF_LONG * CHAR_BIT - 1)));
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
static inline VALUE
|
|
46
|
+
rb_fix_plus_fix(VALUE x, VALUE y)
|
|
47
|
+
{
|
|
48
|
+
#if !__has_builtin(__builtin_add_overflow)
|
|
49
|
+
long lz = FIX2LONG(x) + FIX2LONG(y);
|
|
50
|
+
return LONG2NUM(lz);
|
|
51
|
+
#else
|
|
52
|
+
long lz;
|
|
53
|
+
/* NOTE
|
|
54
|
+
* (1) `LONG2FIX(FIX2LONG(x)+FIX2LONG(y))`
|
|
55
|
+
+ = `((lx*2+1)/2 + (ly*2+1)/2)*2+1`
|
|
56
|
+
+ = `lx*2 + ly*2 + 1`
|
|
57
|
+
+ = `(lx*2+1) + (ly*2+1) - 1`
|
|
58
|
+
+ = `x + y - 1`
|
|
59
|
+
* (2) Fixnum's LSB is always 1.
|
|
60
|
+
* It means you can always run `x - 1` without overflow.
|
|
61
|
+
* (3) Of course `z = x + (y-1)` may overflow.
|
|
62
|
+
* At that time true value is
|
|
63
|
+
* * positive: 0b0 1xxx...1, and z = 0b1xxx...1
|
|
64
|
+
* * negative: 0b1 0xxx...1, and z = 0b0xxx...1
|
|
65
|
+
* To convert this true value to long,
|
|
66
|
+
* (a) Use arithmetic shift
|
|
67
|
+
* * positive: 0b11xxx...
|
|
68
|
+
* * negative: 0b00xxx...
|
|
69
|
+
* (b) invert MSB
|
|
70
|
+
* * positive: 0b01xxx...
|
|
71
|
+
* * negative: 0b10xxx...
|
|
72
|
+
*/
|
|
73
|
+
if (__builtin_add_overflow((long)x, (long)y-1, &lz)) {
|
|
74
|
+
return rb_int2big(rb_overflowed_fix_to_int(lz));
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
return (VALUE)lz;
|
|
78
|
+
}
|
|
79
|
+
#endif
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
static inline VALUE
|
|
83
|
+
rb_fix_minus_fix(VALUE x, VALUE y)
|
|
84
|
+
{
|
|
85
|
+
#if !__has_builtin(__builtin_sub_overflow)
|
|
86
|
+
long lz = FIX2LONG(x) - FIX2LONG(y);
|
|
87
|
+
return LONG2NUM(lz);
|
|
88
|
+
#else
|
|
89
|
+
long lz;
|
|
90
|
+
if (__builtin_sub_overflow((long)x, (long)y-1, &lz)) {
|
|
91
|
+
return rb_int2big(rb_overflowed_fix_to_int(lz));
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
return (VALUE)lz;
|
|
95
|
+
}
|
|
96
|
+
#endif
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/* arguments must be Fixnum */
|
|
100
|
+
static inline VALUE
|
|
101
|
+
rb_fix_mul_fix(VALUE x, VALUE y)
|
|
102
|
+
{
|
|
103
|
+
long lx = FIX2LONG(x);
|
|
104
|
+
long ly = FIX2LONG(y);
|
|
105
|
+
#ifdef DLONG
|
|
106
|
+
return DL2NUM((DLONG)lx * (DLONG)ly);
|
|
107
|
+
#else
|
|
108
|
+
if (MUL_OVERFLOW_FIXNUM_P(lx, ly)) {
|
|
109
|
+
return rb_big_mul(rb_int2big(lx), rb_int2big(ly));
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
return LONG2FIX(lx * ly);
|
|
113
|
+
}
|
|
114
|
+
#endif
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/*
|
|
118
|
+
* This behaves different from C99 for negative arguments.
|
|
119
|
+
* Note that div may overflow fixnum.
|
|
120
|
+
*/
|
|
121
|
+
static inline void
|
|
122
|
+
rb_fix_divmod_fix(VALUE a, VALUE b, VALUE *divp, VALUE *modp)
|
|
123
|
+
{
|
|
124
|
+
/* assume / and % comply C99.
|
|
125
|
+
* ldiv(3) won't be inlined by GCC and clang.
|
|
126
|
+
* I expect / and % are compiled as single idiv.
|
|
127
|
+
*/
|
|
128
|
+
long x = FIX2LONG(a);
|
|
129
|
+
long y = FIX2LONG(b);
|
|
130
|
+
long div, mod;
|
|
131
|
+
if (x == FIXNUM_MIN && y == -1) {
|
|
132
|
+
if (divp) *divp = LONG2NUM(-FIXNUM_MIN);
|
|
133
|
+
if (modp) *modp = LONG2FIX(0);
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
div = x / y;
|
|
137
|
+
mod = x % y;
|
|
138
|
+
if (y > 0 ? mod < 0 : mod > 0) {
|
|
139
|
+
mod += y;
|
|
140
|
+
div -= 1;
|
|
141
|
+
}
|
|
142
|
+
if (divp) *divp = LONG2FIX(div);
|
|
143
|
+
if (modp) *modp = LONG2FIX(mod);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/* div() for Ruby
|
|
147
|
+
* This behaves different from C99 for negative arguments.
|
|
148
|
+
*/
|
|
149
|
+
static inline VALUE
|
|
150
|
+
rb_fix_div_fix(VALUE x, VALUE y)
|
|
151
|
+
{
|
|
152
|
+
VALUE div;
|
|
153
|
+
rb_fix_divmod_fix(x, y, &div, NULL);
|
|
154
|
+
return div;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/* mod() for Ruby
|
|
158
|
+
* This behaves different from C99 for negative arguments.
|
|
159
|
+
*/
|
|
160
|
+
static inline VALUE
|
|
161
|
+
rb_fix_mod_fix(VALUE x, VALUE y)
|
|
162
|
+
{
|
|
163
|
+
VALUE mod;
|
|
164
|
+
rb_fix_divmod_fix(x, y, NULL, &mod);
|
|
165
|
+
return mod;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
static inline bool
|
|
169
|
+
FIXNUM_POSITIVE_P(VALUE num)
|
|
170
|
+
{
|
|
171
|
+
return (SIGNED_VALUE)num > (SIGNED_VALUE)INT2FIX(0);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
static inline bool
|
|
175
|
+
FIXNUM_NEGATIVE_P(VALUE num)
|
|
176
|
+
{
|
|
177
|
+
return (SIGNED_VALUE)num < 0;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
static inline bool
|
|
181
|
+
FIXNUM_ZERO_P(VALUE num)
|
|
182
|
+
{
|
|
183
|
+
return num == INT2FIX(0);
|
|
184
|
+
}
|
|
185
|
+
#endif /* INTERNAL_FIXNUM_H */
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
#ifndef INTERNAL_GC_H /*-*-C-*-vi:se ft=c:*/
|
|
2
|
+
#define INTERNAL_GC_H
|
|
3
|
+
/**
|
|
4
|
+
* @file
|
|
5
|
+
* @author Ruby developers <ruby-core@ruby-lang.org>
|
|
6
|
+
* @copyright This file is a part of the programming language Ruby.
|
|
7
|
+
* Permission is hereby granted, to either redistribute and/or
|
|
8
|
+
* modify this file, provided that the conditions mentioned in the
|
|
9
|
+
* file COPYING are met. Consult the file for details.
|
|
10
|
+
* @brief Internal header for GC.
|
|
11
|
+
*/
|
|
12
|
+
#include "ruby/internal/config.h"
|
|
13
|
+
|
|
14
|
+
#include <stddef.h> /* for size_t */
|
|
15
|
+
|
|
16
|
+
#include "internal/compilers.h" /* for __has_attribute */
|
|
17
|
+
#include "ruby/ruby.h" /* for rb_event_flag_t */
|
|
18
|
+
|
|
19
|
+
struct rb_execution_context_struct; /* in vm_core.h */
|
|
20
|
+
struct rb_objspace; /* in vm_core.h */
|
|
21
|
+
|
|
22
|
+
#ifdef NEWOBJ_OF
|
|
23
|
+
# undef NEWOBJ_OF
|
|
24
|
+
# undef RB_NEWOBJ_OF
|
|
25
|
+
# undef RB_OBJ_WRITE
|
|
26
|
+
#endif
|
|
27
|
+
|
|
28
|
+
/* optimized version of NEWOBJ() */
|
|
29
|
+
#define RB_NEWOBJ_OF(var, T, c, f) \
|
|
30
|
+
T *(var) = (T *)(((f) & FL_WB_PROTECTED) ? \
|
|
31
|
+
rb_wb_protected_newobj_of((c), (f) & ~FL_WB_PROTECTED) : \
|
|
32
|
+
rb_wb_unprotected_newobj_of((c), (f)))
|
|
33
|
+
|
|
34
|
+
#define RB_EC_NEWOBJ_OF(ec, var, T, c, f) \
|
|
35
|
+
T *(var) = (T *)(((f) & FL_WB_PROTECTED) ? \
|
|
36
|
+
rb_ec_wb_protected_newobj_of((ec), (c), (f) & ~FL_WB_PROTECTED) : \
|
|
37
|
+
rb_wb_unprotected_newobj_of((c), (f)))
|
|
38
|
+
|
|
39
|
+
#define NEWOBJ_OF(var, T, c, f) RB_NEWOBJ_OF((var), T, (c), (f))
|
|
40
|
+
#define RB_OBJ_GC_FLAGS_MAX 6 /* used in ext/objspace */
|
|
41
|
+
|
|
42
|
+
#ifndef USE_UNALIGNED_MEMBER_ACCESS
|
|
43
|
+
# define UNALIGNED_MEMBER_ACCESS(expr) (expr)
|
|
44
|
+
#elif ! USE_UNALIGNED_MEMBER_ACCESS
|
|
45
|
+
# define UNALIGNED_MEMBER_ACCESS(expr) (expr)
|
|
46
|
+
#elif ! (__has_warning("-Waddress-of-packed-member") || GCC_VERSION_SINCE(9, 0, 0))
|
|
47
|
+
# define UNALIGNED_MEMBER_ACCESS(expr) (expr)
|
|
48
|
+
#else
|
|
49
|
+
# include "internal/warnings.h"
|
|
50
|
+
# define UNALIGNED_MEMBER_ACCESS(expr) __extension__({ \
|
|
51
|
+
COMPILER_WARNING_PUSH; \
|
|
52
|
+
COMPILER_WARNING_IGNORED(-Waddress-of-packed-member); \
|
|
53
|
+
__typeof__(expr) unaligned_member_access_result = (expr); \
|
|
54
|
+
COMPILER_WARNING_POP; \
|
|
55
|
+
unaligned_member_access_result; \
|
|
56
|
+
})
|
|
57
|
+
#endif
|
|
58
|
+
|
|
59
|
+
#define UNALIGNED_MEMBER_PTR(ptr, mem) UNALIGNED_MEMBER_ACCESS(&(ptr)->mem)
|
|
60
|
+
#define RB_OBJ_WRITE(a, slot, b) \
|
|
61
|
+
rb_obj_write((VALUE)(a), UNALIGNED_MEMBER_ACCESS((VALUE *)(slot)), \
|
|
62
|
+
(VALUE)(b), __FILE__, __LINE__)
|
|
63
|
+
|
|
64
|
+
/* gc.c */
|
|
65
|
+
extern VALUE *ruby_initial_gc_stress_ptr;
|
|
66
|
+
extern int ruby_disable_gc;
|
|
67
|
+
RUBY_ATTR_MALLOC void *ruby_mimmalloc(size_t size);
|
|
68
|
+
void ruby_mimfree(void *ptr);
|
|
69
|
+
void rb_objspace_set_event_hook(const rb_event_flag_t event);
|
|
70
|
+
VALUE rb_objspace_gc_enable(struct rb_objspace *);
|
|
71
|
+
VALUE rb_objspace_gc_disable(struct rb_objspace *);
|
|
72
|
+
void ruby_gc_set_params(void);
|
|
73
|
+
void rb_copy_wb_protected_attribute(VALUE dest, VALUE obj);
|
|
74
|
+
#if __has_attribute(alloc_align)
|
|
75
|
+
__attribute__((__alloc_align__(1)))
|
|
76
|
+
#endif
|
|
77
|
+
RUBY_ATTR_MALLOC void *rb_aligned_malloc(size_t, size_t) RUBY_ATTR_ALLOC_SIZE((2));
|
|
78
|
+
size_t rb_size_mul_or_raise(size_t, size_t, VALUE); /* used in compile.c */
|
|
79
|
+
size_t rb_size_mul_add_or_raise(size_t, size_t, size_t, VALUE); /* used in iseq.h */
|
|
80
|
+
RUBY_ATTR_MALLOC void *rb_xmalloc_mul_add(size_t, size_t, size_t);
|
|
81
|
+
void *rb_xrealloc_mul_add(const void *, size_t, size_t, size_t);
|
|
82
|
+
RUBY_ATTR_MALLOC void *rb_xmalloc_mul_add_mul(size_t, size_t, size_t, size_t);
|
|
83
|
+
RUBY_ATTR_MALLOC void *rb_xcalloc_mul_add_mul(size_t, size_t, size_t, size_t);
|
|
84
|
+
static inline void *ruby_sized_xrealloc_inlined(void *ptr, size_t new_size, size_t old_size) RUBY_ATTR_RETURNS_NONNULL RUBY_ATTR_ALLOC_SIZE((2));
|
|
85
|
+
static inline void *ruby_sized_xrealloc2_inlined(void *ptr, size_t new_count, size_t elemsiz, size_t old_count) RUBY_ATTR_RETURNS_NONNULL RUBY_ATTR_ALLOC_SIZE((2, 3));
|
|
86
|
+
static inline void ruby_sized_xfree_inlined(void *ptr, size_t size);
|
|
87
|
+
VALUE rb_class_allocate_instance(VALUE klass);
|
|
88
|
+
|
|
89
|
+
RUBY_SYMBOL_EXPORT_BEGIN
|
|
90
|
+
/* gc.c (export) */
|
|
91
|
+
const char *rb_objspace_data_type_name(VALUE obj);
|
|
92
|
+
VALUE rb_wb_protected_newobj_of(VALUE, VALUE);
|
|
93
|
+
VALUE rb_wb_unprotected_newobj_of(VALUE, VALUE);
|
|
94
|
+
VALUE rb_ec_wb_protected_newobj_of(struct rb_execution_context_struct *ec, VALUE klass, VALUE flags);
|
|
95
|
+
size_t rb_obj_memsize_of(VALUE);
|
|
96
|
+
void rb_gc_verify_internal_consistency(void);
|
|
97
|
+
size_t rb_obj_gc_flags(VALUE, ID[], size_t);
|
|
98
|
+
void rb_gc_mark_values(long n, const VALUE *values);
|
|
99
|
+
void rb_gc_mark_vm_stack_values(long n, const VALUE *values);
|
|
100
|
+
void *ruby_sized_xrealloc(void *ptr, size_t new_size, size_t old_size) RUBY_ATTR_RETURNS_NONNULL RUBY_ATTR_ALLOC_SIZE((2));
|
|
101
|
+
void *ruby_sized_xrealloc2(void *ptr, size_t new_count, size_t element_size, size_t old_count) RUBY_ATTR_RETURNS_NONNULL RUBY_ATTR_ALLOC_SIZE((2, 3));
|
|
102
|
+
void ruby_sized_xfree(void *x, size_t size);
|
|
103
|
+
RUBY_SYMBOL_EXPORT_END
|
|
104
|
+
|
|
105
|
+
MJIT_SYMBOL_EXPORT_BEGIN
|
|
106
|
+
int rb_ec_stack_check(struct rb_execution_context_struct *ec);
|
|
107
|
+
void rb_gc_writebarrier_remember(VALUE obj);
|
|
108
|
+
const char *rb_obj_info(VALUE obj);
|
|
109
|
+
MJIT_SYMBOL_EXPORT_END
|
|
110
|
+
|
|
111
|
+
#if defined(HAVE_MALLOC_USABLE_SIZE) || defined(HAVE_MALLOC_SIZE) || defined(_WIN32)
|
|
112
|
+
|
|
113
|
+
static inline void *
|
|
114
|
+
ruby_sized_xrealloc_inlined(void *ptr, size_t new_size, size_t old_size)
|
|
115
|
+
{
|
|
116
|
+
return ruby_xrealloc(ptr, new_size);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
static inline void *
|
|
120
|
+
ruby_sized_xrealloc2_inlined(void *ptr, size_t new_count, size_t elemsiz, size_t old_count)
|
|
121
|
+
{
|
|
122
|
+
return ruby_xrealloc2(ptr, new_count, elemsiz);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
static inline void
|
|
126
|
+
ruby_sized_xfree_inlined(void *ptr, size_t size)
|
|
127
|
+
{
|
|
128
|
+
ruby_xfree(ptr);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
# define SIZED_REALLOC_N(x, y, z, w) REALLOC_N(x, y, z)
|
|
132
|
+
|
|
133
|
+
#else
|
|
134
|
+
|
|
135
|
+
static inline void *
|
|
136
|
+
ruby_sized_xrealloc_inlined(void *ptr, size_t new_size, size_t old_size)
|
|
137
|
+
{
|
|
138
|
+
return ruby_sized_xrealloc(ptr, new_size, old_size);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
static inline void *
|
|
142
|
+
ruby_sized_xrealloc2_inlined(void *ptr, size_t new_count, size_t elemsiz, size_t old_count)
|
|
143
|
+
{
|
|
144
|
+
return ruby_sized_xrealloc2(ptr, new_count, elemsiz, old_count);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
static inline void
|
|
148
|
+
ruby_sized_xfree_inlined(void *ptr, size_t size)
|
|
149
|
+
{
|
|
150
|
+
ruby_sized_xfree(ptr, size);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
# define SIZED_REALLOC_N(v, T, m, n) \
|
|
154
|
+
((v) = (T *)ruby_sized_xrealloc2((void *)(v), (m), sizeof(T), (n)))
|
|
155
|
+
|
|
156
|
+
#endif /* HAVE_MALLOC_USABLE_SIZE */
|
|
157
|
+
|
|
158
|
+
#define ruby_sized_xrealloc ruby_sized_xrealloc_inlined
|
|
159
|
+
#define ruby_sized_xrealloc2 ruby_sized_xrealloc2_inlined
|
|
160
|
+
#define ruby_sized_xfree ruby_sized_xfree_inlined
|
|
161
|
+
#endif /* INTERNAL_GC_H */
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
#ifndef INTERNAL_HASH_H /*-*-C-*-vi:se ft=c:*/
|
|
2
|
+
#define INTERNAL_HASH_H
|
|
3
|
+
/**
|
|
4
|
+
* @file
|
|
5
|
+
* @author Ruby developers <ruby-core@ruby-lang.org>
|
|
6
|
+
* @copyright This file is a part of the programming language Ruby.
|
|
7
|
+
* Permission is hereby granted, to either redistribute and/or
|
|
8
|
+
* modify this file, provided that the conditions mentioned in the
|
|
9
|
+
* file COPYING are met. Consult the file for details.
|
|
10
|
+
* @brief Internal header for Hash.
|
|
11
|
+
*/
|
|
12
|
+
#include "ruby/internal/config.h"
|
|
13
|
+
#include <stddef.h> /* for size_t */
|
|
14
|
+
#include "ruby/internal/stdbool.h" /* for bool */
|
|
15
|
+
#include "ruby/ruby.h" /* for struct RBasic */
|
|
16
|
+
#include "ruby/st.h" /* for struct st_table */
|
|
17
|
+
|
|
18
|
+
#define RHASH_AR_TABLE_MAX_SIZE SIZEOF_VALUE
|
|
19
|
+
|
|
20
|
+
struct ar_table_struct;
|
|
21
|
+
typedef unsigned char ar_hint_t;
|
|
22
|
+
|
|
23
|
+
enum ruby_rhash_flags {
|
|
24
|
+
RHASH_PASS_AS_KEYWORDS = FL_USER1, /* FL 1 */
|
|
25
|
+
RHASH_PROC_DEFAULT = FL_USER2, /* FL 2 */
|
|
26
|
+
RHASH_ST_TABLE_FLAG = FL_USER3, /* FL 3 */
|
|
27
|
+
RHASH_AR_TABLE_SIZE_MASK = (FL_USER4|FL_USER5|FL_USER6|FL_USER7), /* FL 4..7 */
|
|
28
|
+
RHASH_AR_TABLE_SIZE_SHIFT = (FL_USHIFT+4),
|
|
29
|
+
RHASH_AR_TABLE_BOUND_MASK = (FL_USER8|FL_USER9|FL_USER10|FL_USER11), /* FL 8..11 */
|
|
30
|
+
RHASH_AR_TABLE_BOUND_SHIFT = (FL_USHIFT+8),
|
|
31
|
+
|
|
32
|
+
#if USE_TRANSIENT_HEAP
|
|
33
|
+
RHASH_TRANSIENT_FLAG = FL_USER12, /* FL 12 */
|
|
34
|
+
#endif
|
|
35
|
+
|
|
36
|
+
// we can not put it in "enum" because it can exceed "int" range.
|
|
37
|
+
#define RHASH_LEV_MASK (FL_USER13 | FL_USER14 | FL_USER15 | /* FL 13..19 */ \
|
|
38
|
+
FL_USER16 | FL_USER17 | FL_USER18 | FL_USER19)
|
|
39
|
+
|
|
40
|
+
RHASH_LEV_SHIFT = (FL_USHIFT + 13),
|
|
41
|
+
RHASH_LEV_MAX = 127, /* 7 bits */
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
struct RHash {
|
|
45
|
+
struct RBasic basic;
|
|
46
|
+
union {
|
|
47
|
+
st_table *st;
|
|
48
|
+
struct ar_table_struct *ar; /* possibly 0 */
|
|
49
|
+
} as;
|
|
50
|
+
const VALUE ifnone;
|
|
51
|
+
union {
|
|
52
|
+
ar_hint_t ary[RHASH_AR_TABLE_MAX_SIZE];
|
|
53
|
+
VALUE word;
|
|
54
|
+
} ar_hint;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
#define RHASH(obj) ((struct RHash *)(obj))
|
|
58
|
+
|
|
59
|
+
#ifdef RHASH_IFNONE
|
|
60
|
+
# undef RHASH_IFNONE
|
|
61
|
+
#endif
|
|
62
|
+
|
|
63
|
+
#ifdef RHASH_SIZE
|
|
64
|
+
# undef RHASH_SIZE
|
|
65
|
+
#endif
|
|
66
|
+
|
|
67
|
+
#ifdef RHASH_EMPTY_P
|
|
68
|
+
# undef RHASH_EMPTY_P
|
|
69
|
+
#endif
|
|
70
|
+
|
|
71
|
+
/* hash.c */
|
|
72
|
+
void rb_hash_st_table_set(VALUE hash, st_table *st);
|
|
73
|
+
VALUE rb_hash_default_value(VALUE hash, VALUE key);
|
|
74
|
+
VALUE rb_hash_set_default_proc(VALUE hash, VALUE proc);
|
|
75
|
+
long rb_dbl_long_hash(double d);
|
|
76
|
+
st_table *rb_init_identtable(void);
|
|
77
|
+
VALUE rb_to_hash_type(VALUE obj);
|
|
78
|
+
VALUE rb_hash_key_str(VALUE);
|
|
79
|
+
VALUE rb_hash_values(VALUE hash);
|
|
80
|
+
VALUE rb_hash_rehash(VALUE hash);
|
|
81
|
+
int rb_hash_add_new_element(VALUE hash, VALUE key, VALUE val);
|
|
82
|
+
VALUE rb_hash_set_pair(VALUE hash, VALUE pair);
|
|
83
|
+
int rb_hash_stlike_delete(VALUE hash, st_data_t *pkey, st_data_t *pval);
|
|
84
|
+
int rb_hash_stlike_foreach_with_replace(VALUE hash, st_foreach_check_callback_func *func, st_update_callback_func *replace, st_data_t arg);
|
|
85
|
+
int rb_hash_stlike_update(VALUE hash, st_data_t key, st_update_callback_func *func, st_data_t arg);
|
|
86
|
+
extern st_table *rb_hash_st_table(VALUE hash);
|
|
87
|
+
|
|
88
|
+
static inline unsigned RHASH_AR_TABLE_SIZE_RAW(VALUE h);
|
|
89
|
+
static inline VALUE RHASH_IFNONE(VALUE h);
|
|
90
|
+
static inline size_t RHASH_SIZE(VALUE h);
|
|
91
|
+
static inline bool RHASH_EMPTY_P(VALUE h);
|
|
92
|
+
static inline bool RHASH_AR_TABLE_P(VALUE h);
|
|
93
|
+
static inline bool RHASH_ST_TABLE_P(VALUE h);
|
|
94
|
+
static inline struct ar_table_struct *RHASH_AR_TABLE(VALUE h);
|
|
95
|
+
static inline st_table *RHASH_ST_TABLE(VALUE h);
|
|
96
|
+
static inline size_t RHASH_ST_SIZE(VALUE h);
|
|
97
|
+
static inline void RHASH_ST_CLEAR(VALUE h);
|
|
98
|
+
static inline bool RHASH_TRANSIENT_P(VALUE h);
|
|
99
|
+
static inline void RHASH_SET_TRANSIENT_FLAG(VALUE h);
|
|
100
|
+
static inline void RHASH_UNSET_TRANSIENT_FLAG(VALUE h);
|
|
101
|
+
|
|
102
|
+
RUBY_SYMBOL_EXPORT_BEGIN
|
|
103
|
+
/* hash.c (export) */
|
|
104
|
+
VALUE rb_hash_delete_entry(VALUE hash, VALUE key);
|
|
105
|
+
VALUE rb_ident_hash_new(void);
|
|
106
|
+
int rb_hash_stlike_foreach(VALUE hash, st_foreach_callback_func *func, st_data_t arg);
|
|
107
|
+
RUBY_SYMBOL_EXPORT_END
|
|
108
|
+
|
|
109
|
+
MJIT_SYMBOL_EXPORT_BEGIN
|
|
110
|
+
VALUE rb_hash_new_with_size(st_index_t size);
|
|
111
|
+
VALUE rb_hash_resurrect(VALUE hash);
|
|
112
|
+
int rb_hash_stlike_lookup(VALUE hash, st_data_t key, st_data_t *pval);
|
|
113
|
+
VALUE rb_hash_keys(VALUE hash);
|
|
114
|
+
VALUE rb_hash_has_key(VALUE hash, VALUE key);
|
|
115
|
+
VALUE rb_hash_compare_by_id_p(VALUE hash);
|
|
116
|
+
|
|
117
|
+
st_table *rb_hash_tbl_raw(VALUE hash, const char *file, int line);
|
|
118
|
+
#define RHASH_TBL_RAW(h) rb_hash_tbl_raw(h, __FILE__, __LINE__)
|
|
119
|
+
MJIT_SYMBOL_EXPORT_END
|
|
120
|
+
|
|
121
|
+
#if 0 /* for debug */
|
|
122
|
+
|
|
123
|
+
static inline bool
|
|
124
|
+
RHASH_AR_TABLE_P(VALUE h)
|
|
125
|
+
{
|
|
126
|
+
extern int rb_hash_ar_table_p(VALUE hash);
|
|
127
|
+
return rb_hash_ar_table_p(h)
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
static inline struct ar_table_struct *
|
|
131
|
+
RHASH_AR_TABLE(VALUE h)
|
|
132
|
+
{
|
|
133
|
+
extern struct ar_table_struct *rb_hash_ar_table(VALUE hash);
|
|
134
|
+
return rb_hash_ar_table(h)
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
static inline st_table *
|
|
138
|
+
RHASH_ST_TABLE(VALUE h)
|
|
139
|
+
{
|
|
140
|
+
return rb_hash_st_table(h)
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
#else
|
|
144
|
+
|
|
145
|
+
static inline bool
|
|
146
|
+
RHASH_AR_TABLE_P(VALUE h)
|
|
147
|
+
{
|
|
148
|
+
return ! FL_TEST_RAW(h, RHASH_ST_TABLE_FLAG);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
static inline struct ar_table_struct *
|
|
152
|
+
RHASH_AR_TABLE(VALUE h)
|
|
153
|
+
{
|
|
154
|
+
return RHASH(h)->as.ar;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
static inline st_table *
|
|
158
|
+
RHASH_ST_TABLE(VALUE h)
|
|
159
|
+
{
|
|
160
|
+
return RHASH(h)->as.st;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
#endif
|
|
164
|
+
|
|
165
|
+
static inline VALUE
|
|
166
|
+
RHASH_IFNONE(VALUE h)
|
|
167
|
+
{
|
|
168
|
+
return RHASH(h)->ifnone;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
static inline size_t
|
|
172
|
+
RHASH_SIZE(VALUE h)
|
|
173
|
+
{
|
|
174
|
+
if (RHASH_AR_TABLE_P(h)) {
|
|
175
|
+
return RHASH_AR_TABLE_SIZE_RAW(h);
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
return RHASH_ST_SIZE(h);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
static inline bool
|
|
183
|
+
RHASH_EMPTY_P(VALUE h)
|
|
184
|
+
{
|
|
185
|
+
return RHASH_SIZE(h) == 0;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
static inline bool
|
|
189
|
+
RHASH_ST_TABLE_P(VALUE h)
|
|
190
|
+
{
|
|
191
|
+
return ! RHASH_AR_TABLE_P(h);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
static inline size_t
|
|
195
|
+
RHASH_ST_SIZE(VALUE h)
|
|
196
|
+
{
|
|
197
|
+
return RHASH_ST_TABLE(h)->num_entries;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
static inline void
|
|
201
|
+
RHASH_ST_CLEAR(VALUE h)
|
|
202
|
+
{
|
|
203
|
+
FL_UNSET_RAW(h, RHASH_ST_TABLE_FLAG);
|
|
204
|
+
RHASH(h)->as.ar = NULL;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
static inline unsigned
|
|
208
|
+
RHASH_AR_TABLE_SIZE_RAW(VALUE h)
|
|
209
|
+
{
|
|
210
|
+
VALUE ret = FL_TEST_RAW(h, RHASH_AR_TABLE_SIZE_MASK);
|
|
211
|
+
ret >>= RHASH_AR_TABLE_SIZE_SHIFT;
|
|
212
|
+
return (unsigned)ret;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
static inline bool
|
|
216
|
+
RHASH_TRANSIENT_P(VALUE h)
|
|
217
|
+
{
|
|
218
|
+
#if USE_TRANSIENT_HEAP
|
|
219
|
+
return FL_TEST_RAW(h, RHASH_TRANSIENT_FLAG);
|
|
220
|
+
#else
|
|
221
|
+
return false;
|
|
222
|
+
#endif
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
static inline void
|
|
226
|
+
RHASH_SET_TRANSIENT_FLAG(VALUE h)
|
|
227
|
+
{
|
|
228
|
+
#if USE_TRANSIENT_HEAP
|
|
229
|
+
FL_SET_RAW(h, RHASH_TRANSIENT_FLAG);
|
|
230
|
+
#endif
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
static inline void
|
|
234
|
+
RHASH_UNSET_TRANSIENT_FLAG(VALUE h)
|
|
235
|
+
{
|
|
236
|
+
#if USE_TRANSIENT_HEAP
|
|
237
|
+
FL_UNSET_RAW(h, RHASH_TRANSIENT_FLAG);
|
|
238
|
+
#endif
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
#endif /* INTERNAL_HASH_H */
|