script_core 0.2.7 → 0.3.0
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/.ruby-version +1 -1
- data/Gemfile +2 -2
- data/ext/enterprise_script_service/Rakefile +1 -1
- data/ext/enterprise_script_service/mruby/.github/workflows/build.yml +117 -74
- data/ext/enterprise_script_service/mruby/.github/workflows/codeql-analysis.yml +41 -37
- data/ext/enterprise_script_service/mruby/.github/workflows/lint.yml +23 -0
- data/ext/enterprise_script_service/mruby/.github/workflows/oss-fuzz.yml +27 -0
- data/ext/enterprise_script_service/mruby/.github/workflows/spell-checker.yml +17 -0
- data/ext/enterprise_script_service/mruby/.gitlab-ci.yml +3 -3
- data/ext/enterprise_script_service/mruby/.markdownlint.yml +16 -0
- data/ext/enterprise_script_service/mruby/.travis.yml +2 -2
- data/ext/enterprise_script_service/mruby/.yamllint +8 -0
- data/ext/enterprise_script_service/mruby/AUTHORS +3 -0
- data/ext/enterprise_script_service/mruby/CODEOWNERS +1 -0
- data/ext/enterprise_script_service/mruby/CONTRIBUTING.md +6 -13
- data/ext/enterprise_script_service/mruby/Doxyfile +4 -4
- data/ext/enterprise_script_service/mruby/LICENSE +1 -1
- data/ext/enterprise_script_service/mruby/Makefile +1 -1
- data/ext/enterprise_script_service/mruby/README.md +4 -14
- data/ext/enterprise_script_service/mruby/Rakefile +18 -108
- data/ext/enterprise_script_service/mruby/TODO.md +17 -0
- data/ext/enterprise_script_service/mruby/appveyor.yml +31 -25
- data/ext/enterprise_script_service/mruby/benchmark/bm_ao_render.rb +1 -1
- data/ext/enterprise_script_service/mruby/build_config.rb +9 -152
- data/ext/enterprise_script_service/mruby/{examples/targets/build_config_ArduinoDue.rb → build_config/ArduinoDue.rb} +2 -19
- data/ext/enterprise_script_service/mruby/{examples/targets/build_config_IntelEdison.rb → build_config/IntelEdison.rb} +2 -2
- data/ext/enterprise_script_service/mruby/{examples/targets/build_config_IntelGalileo.rb → build_config/IntelGalileo.rb} +1 -18
- data/ext/enterprise_script_service/mruby/{examples/targets/build_config_RX630.rb → build_config/RX630.rb} +2 -19
- data/ext/enterprise_script_service/mruby/build_config/android_arm64-v8a.rb +11 -0
- data/ext/enterprise_script_service/mruby/build_config/android_armeabi.rb +11 -0
- data/ext/enterprise_script_service/mruby/{examples/targets/build_config_android_armeabi_v7a_neon_hard.rb → build_config/android_armeabi_v7a_neon_hard.rb} +0 -15
- data/ext/enterprise_script_service/mruby/build_config/bench.rb +11 -0
- data/ext/enterprise_script_service/mruby/build_config/boxing.rb +21 -0
- data/ext/enterprise_script_service/mruby/{examples/targets/build_config_chipKITMax32.rb → build_config/chipKITMax32.rb} +2 -19
- data/ext/enterprise_script_service/mruby/{travis_config.rb → build_config/ci/gcc-clang.rb} +10 -10
- data/ext/enterprise_script_service/mruby/build_config/ci/msvc.rb +20 -0
- data/ext/enterprise_script_service/mruby/build_config/clang-asan.rb +11 -0
- data/ext/enterprise_script_service/mruby/build_config/cross-32bit.rb +14 -0
- data/ext/enterprise_script_service/mruby/build_config/default.rb +80 -0
- data/ext/enterprise_script_service/mruby/{examples/targets/build_config_dreamcast_shelf.rb → build_config/dreamcast_shelf.rb} +5 -19
- data/ext/enterprise_script_service/mruby/build_config/gameboyadvance.rb +73 -0
- data/ext/enterprise_script_service/mruby/build_config/host-cxx.rb +12 -0
- data/ext/enterprise_script_service/mruby/build_config/host-debug.rb +20 -0
- data/ext/enterprise_script_service/mruby/build_config/host-gprof.rb +14 -0
- data/ext/enterprise_script_service/mruby/build_config/host-m32.rb +15 -0
- data/ext/enterprise_script_service/mruby/build_config/host-shared.rb +36 -0
- data/ext/enterprise_script_service/mruby/build_config/mrbc.rb +11 -0
- data/ext/enterprise_script_service/mruby/build_config/no-float.rb +17 -0
- data/ext/enterprise_script_service/mruby/doc/guides/compile.md +138 -49
- data/ext/enterprise_script_service/mruby/doc/guides/debugger.md +5 -4
- data/ext/enterprise_script_service/mruby/doc/guides/gc-arena-howto.md +1 -1
- data/ext/enterprise_script_service/mruby/doc/guides/mrbconf.md +49 -22
- data/ext/enterprise_script_service/mruby/doc/guides/mrbgems.md +31 -14
- data/ext/enterprise_script_service/mruby/doc/guides/symbol.md +83 -0
- data/ext/enterprise_script_service/mruby/doc/limitations.md +35 -36
- data/ext/enterprise_script_service/mruby/doc/mruby3.md +163 -0
- data/ext/enterprise_script_service/mruby/doc/opcode.md +93 -107
- data/ext/enterprise_script_service/mruby/examples/mrbgems/c_and_ruby_extension_example/mrblib/example.rb +1 -1
- data/ext/enterprise_script_service/mruby/examples/mrbgems/c_and_ruby_extension_example/src/example.c +5 -1
- data/ext/enterprise_script_service/mruby/examples/mrbgems/c_extension_example/src/example.c +5 -1
- data/ext/enterprise_script_service/mruby/examples/mrbgems/ruby_extension_example/mrblib/example.rb +1 -1
- data/ext/enterprise_script_service/mruby/include/mrbconf.h +81 -62
- data/ext/enterprise_script_service/mruby/include/mruby.h +137 -96
- data/ext/enterprise_script_service/mruby/include/mruby/array.h +23 -6
- data/ext/enterprise_script_service/mruby/include/mruby/boxing_nan.h +73 -48
- data/ext/enterprise_script_service/mruby/include/mruby/boxing_no.h +8 -8
- data/ext/enterprise_script_service/mruby/include/mruby/boxing_word.h +79 -48
- data/ext/enterprise_script_service/mruby/include/mruby/class.h +10 -8
- data/ext/enterprise_script_service/mruby/include/mruby/common.h +4 -1
- data/ext/enterprise_script_service/mruby/include/mruby/compile.h +13 -7
- data/ext/enterprise_script_service/mruby/include/mruby/debug.h +2 -2
- data/ext/enterprise_script_service/mruby/include/mruby/dump.h +17 -35
- data/ext/enterprise_script_service/mruby/include/mruby/endian.h +44 -0
- data/ext/enterprise_script_service/mruby/include/mruby/error.h +39 -5
- data/ext/enterprise_script_service/mruby/include/mruby/gc.h +1 -0
- data/ext/enterprise_script_service/mruby/include/mruby/hash.h +33 -13
- data/ext/enterprise_script_service/mruby/include/mruby/irep.h +64 -14
- data/ext/enterprise_script_service/mruby/include/mruby/khash.h +6 -14
- data/ext/enterprise_script_service/mruby/include/mruby/numeric.h +36 -63
- data/ext/enterprise_script_service/mruby/include/mruby/opcode.h +1 -27
- data/ext/enterprise_script_service/mruby/include/mruby/ops.h +27 -23
- data/ext/enterprise_script_service/mruby/include/mruby/presym.h +40 -0
- data/ext/enterprise_script_service/mruby/include/mruby/presym/disable.h +70 -0
- data/ext/enterprise_script_service/mruby/include/mruby/presym/enable.h +37 -0
- data/ext/enterprise_script_service/mruby/include/mruby/presym/scanning.h +73 -0
- data/ext/enterprise_script_service/mruby/include/mruby/proc.h +80 -13
- data/ext/enterprise_script_service/mruby/include/mruby/string.h +10 -15
- data/ext/enterprise_script_service/mruby/include/mruby/throw.h +14 -3
- data/ext/enterprise_script_service/mruby/include/mruby/value.h +29 -19
- data/ext/enterprise_script_service/mruby/include/mruby/variable.h +1 -0
- data/ext/enterprise_script_service/mruby/include/mruby/version.h +26 -7
- data/ext/enterprise_script_service/mruby/lib/mruby/build.rb +198 -44
- data/ext/enterprise_script_service/mruby/lib/mruby/build/command.rb +55 -37
- data/ext/enterprise_script_service/mruby/lib/mruby/build/load_gems.rb +12 -10
- data/ext/enterprise_script_service/mruby/lib/{mruby-core-ext.rb → mruby/core_ext.rb} +10 -3
- data/ext/enterprise_script_service/mruby/lib/mruby/gem.rb +75 -32
- data/ext/enterprise_script_service/mruby/lib/mruby/lockfile.rb +1 -1
- data/ext/enterprise_script_service/mruby/lib/mruby/presym.rb +132 -0
- data/ext/enterprise_script_service/mruby/mrbgems/default-no-fpu.gembox +3 -0
- data/ext/enterprise_script_service/mruby/mrbgems/default-no-stdio.gembox +4 -0
- data/ext/enterprise_script_service/mruby/mrbgems/default.gembox +9 -88
- data/ext/enterprise_script_service/mruby/mrbgems/full-core.gembox +1 -4
- data/ext/enterprise_script_service/mruby/mrbgems/math.gembox +10 -0
- data/ext/enterprise_script_service/mruby/mrbgems/metaprog.gembox +15 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/mrblib/array.rb +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/src/array.c +5 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-config/mrbgem.rake +28 -19
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-config/mruby-config +18 -8
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/bintest/mrdb.rb +3 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/bintest/print.rb +10 -10
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apibreak.c +14 -9
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c +3 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c +4 -3
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.h +2 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdbconf.h +4 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/bintest/mirb.rb +23 -5
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/mrbgem.rake +11 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +41 -34
- data/ext/enterprise_script_service/mruby/mrbgems/{mruby-compiler → mruby-bin-mrbc}/bintest/mrbc.rb +0 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/mrbgem.rake +3 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/tools/mrbc/mrbc.c +19 -9
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/bintest/mruby.rb +25 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/mrbgem.rake +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +22 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-strip/bintest/mruby-strip.rb +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-strip/tools/mruby-strip/mruby-strip.c +2 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-catch/mrbgem.rake +5 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-catch/mrblib/catch.rb +27 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-class-ext/src/class.c +2 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/codegen.c +430 -399
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/keywords +5 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/lex.def +49 -44
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/parse.y +559 -217
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/y.tab.c +4774 -4193
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/mrbgem.rake +18 -19
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/mrblib/complex.rb +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/src/complex.c +8 -7
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/test/complex.rb +4 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-enumerator/mrblib/enumerator.rb +1 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-enumerator/test/enumerator.rb +2 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-error/mrbgem.rake +2 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/src/eval.c +17 -25
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-fiber/src/fiber.c +18 -13
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/src/hash-ext.c +30 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/test/hash.rb +7 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-inline-struct/test/inline.c +2 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/README.md +18 -16
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/include/mruby/ext/io.h +2 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/file.rb +9 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/io.rb +2 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file.c +55 -52
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file_test.c +4 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/io.c +99 -87
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/file.rb +2 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/io.rb +2 -3
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/mruby_io_test.c +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-kernel-ext/src/kernel.c +7 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-math/src/math.c +13 -12
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-math/test/math.rb +5 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/src/metaprog.c +43 -58
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/test/metaprog.rb +4 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/README.md +4 -3
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/src/method.c +77 -74
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/test/method.rb +4 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-numeric-ext/src/numeric_ext.c +14 -13
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-object-ext/src/object.c +5 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-objectspace/src/mruby_objectspace.c +18 -12
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-os-memsize/mrbgem.rake +10 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-os-memsize/src/memsize.c +231 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-os-memsize/test/memsize.rb +63 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/README.md +15 -18
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/src/pack.c +38 -88
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/mrblib/print.rb +1 -30
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/src/print.c +62 -26
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/src/proc.c +32 -19
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/test/proc.c +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-random/src/random.c +98 -43
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-random/test/random.rb +2 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/mrblib/range.rb +39 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/src/range.c +20 -40
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/test/range.rb +27 -3
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/mrblib/rational.rb +11 -17
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/src/rational.c +216 -38
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/test/rational.rb +6 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/README.md +6 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/src/mrb_sleep.c +4 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/README.md +3 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/src/socket.c +47 -45
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/src/sprintf.c +102 -71
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/test/sprintf.rb +4 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/mrblib/string.rb +23 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/src/string.c +13 -9
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/mrblib/struct.rb +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/src/struct.c +18 -25
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/src/symbol.c +6 -5
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/test/symbol.rb +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/README.md +0 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/driver.c +5 -5
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/mrbgem.rake +16 -44
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/vformat.c +4 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-time/src/time.c +27 -27
- data/ext/enterprise_script_service/mruby/mrbgems/stdlib-ext.gembox +18 -0
- data/ext/enterprise_script_service/mruby/mrbgems/stdlib-io.gembox +12 -0
- data/ext/enterprise_script_service/mruby/mrbgems/stdlib.gembox +54 -0
- data/ext/enterprise_script_service/mruby/mrblib/10error.rb +4 -0
- data/ext/enterprise_script_service/mruby/mrblib/array.rb +17 -9
- data/ext/enterprise_script_service/mruby/mrblib/enum.rb +1 -1
- data/ext/enterprise_script_service/mruby/mrblib/hash.rb +0 -20
- data/ext/enterprise_script_service/mruby/mrblib/init_mrblib.c +0 -11
- data/ext/enterprise_script_service/mruby/mrblib/numeric.rb +36 -11
- data/ext/enterprise_script_service/mruby/mrblib/range.rb +25 -3
- data/ext/enterprise_script_service/mruby/oss-fuzz/mruby_proto_fuzzer.cpp +2 -2
- data/ext/enterprise_script_service/mruby/oss-fuzz/proto_to_ruby.h +1 -1
- data/ext/enterprise_script_service/mruby/src/array.c +43 -80
- data/ext/enterprise_script_service/mruby/src/backtrace.c +16 -17
- data/ext/enterprise_script_service/mruby/src/class.c +774 -182
- data/ext/enterprise_script_service/mruby/src/codedump.c +223 -198
- data/ext/enterprise_script_service/mruby/src/debug.c +6 -6
- data/ext/enterprise_script_service/mruby/src/dump.c +466 -141
- data/ext/enterprise_script_service/mruby/src/enum.c +1 -1
- data/ext/enterprise_script_service/mruby/src/error.c +36 -13
- data/ext/enterprise_script_service/mruby/src/etc.c +43 -34
- data/ext/enterprise_script_service/mruby/src/fmt_fp.c +5 -6
- data/ext/enterprise_script_service/mruby/src/gc.c +73 -71
- data/ext/enterprise_script_service/mruby/src/hash.c +1050 -707
- data/ext/enterprise_script_service/mruby/src/kernel.c +75 -220
- data/ext/enterprise_script_service/mruby/src/load.c +196 -166
- data/ext/enterprise_script_service/mruby/src/numeric.c +352 -314
- data/ext/enterprise_script_service/mruby/src/object.c +97 -90
- data/ext/enterprise_script_service/mruby/src/print.c +4 -3
- data/ext/enterprise_script_service/mruby/src/proc.c +48 -56
- data/ext/enterprise_script_service/mruby/src/range.c +45 -21
- data/ext/enterprise_script_service/mruby/src/state.c +25 -32
- data/ext/enterprise_script_service/mruby/src/string.c +59 -101
- data/ext/enterprise_script_service/mruby/src/symbol.c +121 -56
- data/ext/enterprise_script_service/mruby/src/value_array.h +1 -0
- data/ext/enterprise_script_service/mruby/src/variable.c +158 -158
- data/ext/enterprise_script_service/mruby/src/vm.c +617 -602
- data/ext/enterprise_script_service/mruby/tasks/benchmark.rake +6 -6
- data/ext/enterprise_script_service/mruby/tasks/bin.rake +23 -0
- data/ext/enterprise_script_service/mruby/tasks/core.rake +12 -0
- data/ext/enterprise_script_service/mruby/tasks/doc.rake +50 -38
- data/ext/enterprise_script_service/mruby/tasks/gitlab.rake +83 -77
- data/ext/enterprise_script_service/mruby/tasks/libmruby.rake +10 -1
- data/ext/enterprise_script_service/mruby/tasks/mrbgems.rake +13 -1
- data/ext/enterprise_script_service/mruby/tasks/mrblib.rake +40 -0
- data/ext/enterprise_script_service/mruby/tasks/presym.rake +44 -0
- data/ext/enterprise_script_service/mruby/tasks/test.rake +68 -0
- data/ext/enterprise_script_service/mruby/tasks/toolchains/gcc.rake +6 -5
- data/ext/enterprise_script_service/mruby/tasks/toolchains/openwrt.rake +10 -14
- data/ext/enterprise_script_service/mruby/tasks/toolchains/visualcpp.rake +17 -21
- data/ext/enterprise_script_service/mruby/test/bintest.rb +5 -5
- data/ext/enterprise_script_service/mruby/test/t/argumenterror.rb +16 -0
- data/ext/enterprise_script_service/mruby/test/t/array.rb +7 -3
- data/ext/enterprise_script_service/mruby/test/t/bs_literal.rb +1 -1
- data/ext/enterprise_script_service/mruby/test/t/float.rb +18 -8
- data/ext/enterprise_script_service/mruby/test/t/hash.rb +903 -281
- data/ext/enterprise_script_service/mruby/test/t/integer.rb +10 -38
- data/ext/enterprise_script_service/mruby/test/t/kernel.rb +1 -1
- data/ext/enterprise_script_service/mruby/test/t/literals.rb +50 -0
- data/ext/enterprise_script_service/mruby/test/t/module.rb +2 -2
- data/ext/enterprise_script_service/mruby/test/t/numeric.rb +1 -1
- data/ext/enterprise_script_service/mruby/test/t/range.rb +83 -1
- data/ext/enterprise_script_service/mruby/test/t/string.rb +4 -0
- data/ext/enterprise_script_service/mruby/test/t/superclass.rb +10 -10
- data/ext/enterprise_script_service/mruby/test/t/syntax.rb +24 -0
- data/ext/enterprise_script_service/mruby/test/t/vformat.rb +3 -3
- data/ext/enterprise_script_service/mruby_config.rb +2 -5
- data/ext/enterprise_script_service/mruby_engine.cpp +1 -1
- data/lib/script_core/version.rb +1 -1
- data/spec/script_core_spec.rb +13 -0
- metadata +61 -23
- data/ext/enterprise_script_service/mruby/.github/workflows/main.yml +0 -24
- data/ext/enterprise_script_service/mruby/TODO +0 -8
- data/ext/enterprise_script_service/mruby/appveyor_config.rb +0 -46
- data/ext/enterprise_script_service/mruby/benchmark/build_config_boxing.rb +0 -28
- data/ext/enterprise_script_service/mruby/examples/targets/build_config_android_arm64-v8a.rb +0 -26
- data/ext/enterprise_script_service/mruby/examples/targets/build_config_android_armeabi.rb +0 -26
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/src/kernel.c +0 -30
- data/ext/enterprise_script_service/mruby/mrblib/mrblib.rake +0 -18
- data/ext/enterprise_script_service/mruby/src/crc.c +0 -39
- data/ext/enterprise_script_service/mruby/src/mruby_core.rake +0 -19
|
@@ -21,7 +21,14 @@ typedef struct mrb_shared_array {
|
|
|
21
21
|
mrb_value *ptr;
|
|
22
22
|
} mrb_shared_array;
|
|
23
23
|
|
|
24
|
-
#
|
|
24
|
+
#if defined(MRB_32BIT) && defined(MRB_NO_BOXING)
|
|
25
|
+
# define MRB_ARY_NO_EMBED
|
|
26
|
+
# define MRB_ARY_EMBED_LEN_MAX 0
|
|
27
|
+
#else
|
|
28
|
+
# define MRB_ARY_EMBED_LEN_MAX ((mrb_int)(sizeof(void*)*3/sizeof(mrb_value)))
|
|
29
|
+
mrb_static_assert(MRB_ARY_EMBED_LEN_MAX > 0, "MRB_ARY_EMBED_LEN_MAX > 0");
|
|
30
|
+
#endif
|
|
31
|
+
|
|
25
32
|
struct RArray {
|
|
26
33
|
MRB_OBJECT_HEADER;
|
|
27
34
|
union {
|
|
@@ -33,7 +40,9 @@ struct RArray {
|
|
|
33
40
|
} aux;
|
|
34
41
|
mrb_value *ptr;
|
|
35
42
|
} heap;
|
|
36
|
-
|
|
43
|
+
#ifndef MRB_ARY_NO_EMBED
|
|
44
|
+
mrb_value ary[MRB_ARY_EMBED_LEN_MAX];
|
|
45
|
+
#endif
|
|
37
46
|
} as;
|
|
38
47
|
};
|
|
39
48
|
|
|
@@ -41,12 +50,20 @@ struct RArray {
|
|
|
41
50
|
#define mrb_ary_value(p) mrb_obj_value((void*)(p))
|
|
42
51
|
#define RARRAY(v) ((struct RArray*)(mrb_ptr(v)))
|
|
43
52
|
|
|
53
|
+
#ifdef MRB_ARY_NO_EMBED
|
|
54
|
+
#define ARY_EMBED_P(a) 0
|
|
55
|
+
#define ARY_UNSET_EMBED_FLAG(a) (void)0
|
|
56
|
+
#define ARY_EMBED_LEN(a) 0
|
|
57
|
+
#define ARY_SET_EMBED_LEN(a,len) (void)0
|
|
58
|
+
#define ARY_EMBED_PTR(a) 0
|
|
59
|
+
#else
|
|
44
60
|
#define MRB_ARY_EMBED_MASK 7
|
|
45
61
|
#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
|
|
46
62
|
#define ARY_UNSET_EMBED_FLAG(a) ((a)->flags &= ~(MRB_ARY_EMBED_MASK))
|
|
47
63
|
#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
|
|
48
64
|
#define ARY_SET_EMBED_LEN(a,len) ((a)->flags = ((a)->flags&~MRB_ARY_EMBED_MASK) | ((uint32_t)(len) + 1))
|
|
49
|
-
#define ARY_EMBED_PTR(a) ((
|
|
65
|
+
#define ARY_EMBED_PTR(a) ((a)->as.ary)
|
|
66
|
+
#endif
|
|
50
67
|
|
|
51
68
|
#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(a)->as.heap.len)
|
|
52
69
|
#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
|
|
@@ -232,10 +249,10 @@ MRB_API mrb_value mrb_ary_entry(mrb_value ary, mrb_int offset);
|
|
|
232
249
|
*
|
|
233
250
|
* Equivalent to:
|
|
234
251
|
*
|
|
235
|
-
* ary
|
|
252
|
+
* ary[head, len] = rpl
|
|
236
253
|
*
|
|
237
254
|
* @param mrb The mruby state reference.
|
|
238
|
-
* @param self The array from which the value will be
|
|
255
|
+
* @param self The array from which the value will be partiality replaced.
|
|
239
256
|
* @param head Beginning position of a replacement subsequence.
|
|
240
257
|
* @param len Length of a replacement subsequence.
|
|
241
258
|
* @param rpl The array of replacement elements.
|
|
@@ -279,7 +296,7 @@ MRB_API mrb_value mrb_ary_clear(mrb_state *mrb, mrb_value self);
|
|
|
279
296
|
*
|
|
280
297
|
* @param mrb The mruby state reference.
|
|
281
298
|
* @param ary The target array
|
|
282
|
-
* @param sep The
|
|
299
|
+
* @param sep The separator, can be NULL
|
|
283
300
|
*/
|
|
284
301
|
MRB_API mrb_value mrb_ary_join(mrb_state *mrb, mrb_value ary, mrb_value sep);
|
|
285
302
|
|
|
@@ -7,12 +7,12 @@
|
|
|
7
7
|
#ifndef MRUBY_BOXING_NAN_H
|
|
8
8
|
#define MRUBY_BOXING_NAN_H
|
|
9
9
|
|
|
10
|
-
#ifdef
|
|
11
|
-
# error ---->> MRB_NAN_BOXING and
|
|
10
|
+
#ifdef MRB_USE_FLOAT32
|
|
11
|
+
# error ---->> MRB_NAN_BOXING and MRB_USE_FLOAT32 conflict <<----
|
|
12
12
|
#endif
|
|
13
13
|
|
|
14
|
-
#ifdef
|
|
15
|
-
# error ---->> MRB_NAN_BOXING and
|
|
14
|
+
#ifdef MRB_NO_FLOAT
|
|
15
|
+
# error ---->> MRB_NAN_BOXING and MRB_NO_FLOAT conflict <<----
|
|
16
16
|
#endif
|
|
17
17
|
|
|
18
18
|
#ifdef MRB_INT64
|
|
@@ -21,6 +21,8 @@
|
|
|
21
21
|
|
|
22
22
|
#define MRB_FIXNUM_SHIFT 0
|
|
23
23
|
#define MRB_SYMBOL_SHIFT 0
|
|
24
|
+
#define MRB_FIXNUM_MIN INT32_MIN
|
|
25
|
+
#define MRB_FIXNUM_MAX INT32_MAX
|
|
24
26
|
|
|
25
27
|
/* value representation by nan-boxing:
|
|
26
28
|
* float : FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF
|
|
@@ -31,75 +33,98 @@
|
|
|
31
33
|
* in the right direction. Also, TTTTTT is the mrb_vtype + 1;
|
|
32
34
|
*/
|
|
33
35
|
typedef struct mrb_value {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
uint32_t ttt;
|
|
41
|
-
,union {
|
|
42
|
-
mrb_int i;
|
|
43
|
-
mrb_sym sym;
|
|
44
|
-
};
|
|
45
|
-
)
|
|
46
|
-
};
|
|
36
|
+
uint64_t u;
|
|
37
|
+
} mrb_value;
|
|
38
|
+
|
|
39
|
+
union mrb_value_ {
|
|
40
|
+
mrb_float f;
|
|
41
|
+
uint64_t u;
|
|
47
42
|
#ifdef MRB_64BIT
|
|
48
|
-
|
|
43
|
+
void *p;
|
|
44
|
+
# define BOXNAN_IMMEDIATE_VALUE uint32_t i
|
|
45
|
+
#else
|
|
46
|
+
# define BOXNAN_IMMEDIATE_VALUE union { uint32_t i; void *p; }
|
|
49
47
|
#endif
|
|
50
|
-
|
|
48
|
+
struct {
|
|
49
|
+
MRB_ENDIAN_LOHI(
|
|
50
|
+
uint32_t ttt;
|
|
51
|
+
,BOXNAN_IMMEDIATE_VALUE;
|
|
52
|
+
)
|
|
51
53
|
};
|
|
52
|
-
|
|
54
|
+
mrb_value value;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
mrb_static_assert1(sizeof(mrb_value) == sizeof(union mrb_value_));
|
|
53
58
|
|
|
54
|
-
|
|
59
|
+
static inline union mrb_value_
|
|
60
|
+
mrb_val_union(mrb_value v)
|
|
61
|
+
{
|
|
62
|
+
union mrb_value_ x;
|
|
63
|
+
x.value = v;
|
|
64
|
+
return x;
|
|
65
|
+
}
|
|
55
66
|
|
|
56
|
-
#define mrb_tt(o) ((enum mrb_vtype)(((o).
|
|
57
|
-
#define mrb_type(o) (enum mrb_vtype)((uint32_t)0xfff00000 < (o).
|
|
58
|
-
#define
|
|
59
|
-
#define
|
|
60
|
-
#define
|
|
61
|
-
#define mrb_symbol(o) (o).
|
|
67
|
+
#define mrb_tt(o) ((enum mrb_vtype)((mrb_val_union(o).ttt & 0xfc000)>>14)-1)
|
|
68
|
+
#define mrb_type(o) (enum mrb_vtype)((uint32_t)0xfff00000 < mrb_val_union(o).ttt ? mrb_tt(o) : MRB_TT_FLOAT)
|
|
69
|
+
#define mrb_float(o) mrb_val_union(o).f
|
|
70
|
+
#define mrb_fixnum(o) ((mrb_int)mrb_val_union(o).i)
|
|
71
|
+
#define mrb_integer(o) mrb_fixnum(o)
|
|
72
|
+
#define mrb_symbol(o) ((mrb_sym)mrb_val_union(o).i)
|
|
62
73
|
|
|
63
74
|
#ifdef MRB_64BIT
|
|
64
|
-
|
|
75
|
+
#define mrb_ptr(o) ((void*)((((uintptr_t)0x3fffffffffff)&((uintptr_t)(mrb_val_union(o).p)))<<2))
|
|
65
76
|
#define mrb_cptr(o) (((struct RCptr*)mrb_ptr(o))->p)
|
|
66
77
|
#define BOXNAN_SHIFT_LONG_POINTER(v) (((uintptr_t)(v)>>34)&0x3fff)
|
|
67
78
|
#else
|
|
68
|
-
#define
|
|
79
|
+
#define mrb_ptr(o) ((void*)mrb_val_union(o).i)
|
|
80
|
+
#define mrb_cptr(o) mrb_ptr(o)
|
|
69
81
|
#define BOXNAN_SHIFT_LONG_POINTER(v) 0
|
|
70
82
|
#endif
|
|
71
83
|
|
|
72
|
-
#define BOXNAN_SET_VALUE(o, tt, attr, v) do {\
|
|
73
|
-
|
|
74
|
-
|
|
84
|
+
#define BOXNAN_SET_VALUE(o, tt, attr, v) do { \
|
|
85
|
+
union mrb_value_ mrb_value_union_variable; \
|
|
86
|
+
mrb_value_union_variable.attr = (v);\
|
|
87
|
+
mrb_value_union_variable.ttt = 0xfff00000 | (((tt)+1)<<14);\
|
|
88
|
+
o = mrb_value_union_variable.value;\
|
|
75
89
|
} while (0)
|
|
76
90
|
|
|
91
|
+
#ifdef MRB_64BIT
|
|
77
92
|
#define BOXNAN_SET_OBJ_VALUE(o, tt, v) do {\
|
|
78
|
-
|
|
79
|
-
|
|
93
|
+
union mrb_value_ mrb_value_union_variable;\
|
|
94
|
+
mrb_value_union_variable.p = (void*)((uintptr_t)(v)>>2);\
|
|
95
|
+
mrb_value_union_variable.ttt = (0xfff00000|(((tt)+1)<<14)|BOXNAN_SHIFT_LONG_POINTER(v));\
|
|
96
|
+
o = mrb_value_union_variable.value;\
|
|
80
97
|
} while (0)
|
|
98
|
+
#else
|
|
99
|
+
#define BOXNAN_SET_OBJ_VALUE(o, tt, v) BOXNAN_SET_VALUE(o, tt, i, (uint32_t)v)
|
|
100
|
+
#endif
|
|
81
101
|
|
|
82
102
|
#define SET_FLOAT_VALUE(mrb,r,v) do { \
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
103
|
+
union mrb_value_ mrb_value_union_variable; \
|
|
104
|
+
if ((v) != (v)) { /* NaN */ \
|
|
105
|
+
mrb_value_union_variable.ttt = 0x7ff80000; \
|
|
106
|
+
mrb_value_union_variable.i = 0; \
|
|
86
107
|
} \
|
|
87
108
|
else { \
|
|
88
|
-
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
#define
|
|
94
|
-
#define
|
|
95
|
-
#define
|
|
96
|
-
#define
|
|
109
|
+
mrb_value_union_variable.f = (v); \
|
|
110
|
+
} \
|
|
111
|
+
r = mrb_value_union_variable.value; \
|
|
112
|
+
} while(0)
|
|
113
|
+
|
|
114
|
+
#define SET_NIL_VALUE(r) BOXNAN_SET_VALUE(r, MRB_TT_FALSE, i, 0)
|
|
115
|
+
#define SET_FALSE_VALUE(r) BOXNAN_SET_VALUE(r, MRB_TT_FALSE, i, 1)
|
|
116
|
+
#define SET_TRUE_VALUE(r) BOXNAN_SET_VALUE(r, MRB_TT_TRUE, i, 1)
|
|
117
|
+
#define SET_BOOL_VALUE(r,b) BOXNAN_SET_VALUE(r, b ? MRB_TT_TRUE : MRB_TT_FALSE, i, 1)
|
|
118
|
+
#define SET_INT_VALUE(mrb, r,n) BOXNAN_SET_VALUE(r, MRB_TT_INTEGER, i, (uint32_t)(n))
|
|
119
|
+
#define SET_FIXNUM_VALUE(r,n) BOXNAN_SET_VALUE(r, MRB_TT_INTEGER, i, (uint32_t)(n))
|
|
120
|
+
#define SET_SYM_VALUE(r,v) BOXNAN_SET_VALUE(r, MRB_TT_SYMBOL, i, (uint32_t)(v))
|
|
97
121
|
#define SET_OBJ_VALUE(r,v) BOXNAN_SET_OBJ_VALUE(r, (((struct RObject*)(v))->tt), (v))
|
|
98
122
|
#ifdef MRB_64BIT
|
|
123
|
+
MRB_API mrb_value mrb_nan_boxing_cptr_value(struct mrb_state*, void*);
|
|
99
124
|
#define SET_CPTR_VALUE(mrb,r,v) ((r) = mrb_nan_boxing_cptr_value(mrb, v))
|
|
100
125
|
#else
|
|
101
|
-
#define SET_CPTR_VALUE(mrb,r,v) BOXNAN_SET_VALUE(r, MRB_TT_CPTR,
|
|
126
|
+
#define SET_CPTR_VALUE(mrb,r,v) BOXNAN_SET_VALUE(r, MRB_TT_CPTR, p, v)
|
|
102
127
|
#endif
|
|
103
|
-
#define SET_UNDEF_VALUE(r) BOXNAN_SET_VALUE(r, MRB_TT_UNDEF,
|
|
128
|
+
#define SET_UNDEF_VALUE(r) BOXNAN_SET_VALUE(r, MRB_TT_UNDEF, i, 0)
|
|
104
129
|
|
|
105
130
|
#endif /* MRUBY_BOXING_NAN_H */
|
|
@@ -9,9 +9,11 @@
|
|
|
9
9
|
|
|
10
10
|
#define MRB_FIXNUM_SHIFT 0
|
|
11
11
|
#define MRB_SYMBOL_SHIFT 0
|
|
12
|
+
#define MRB_FIXNUM_MIN MRB_INT_MIN
|
|
13
|
+
#define MRB_FIXNUM_MAX MRB_INT_MAX
|
|
12
14
|
|
|
13
15
|
union mrb_value_union {
|
|
14
|
-
#ifndef
|
|
16
|
+
#ifndef MRB_NO_FLOAT
|
|
15
17
|
mrb_float f;
|
|
16
18
|
#endif
|
|
17
19
|
void *p;
|
|
@@ -24,16 +26,13 @@ typedef struct mrb_value {
|
|
|
24
26
|
enum mrb_vtype tt;
|
|
25
27
|
} mrb_value;
|
|
26
28
|
|
|
27
|
-
#ifndef MRB_WITHOUT_FLOAT
|
|
28
|
-
#define mrb_float_pool(mrb,f) mrb_float_value(mrb,f)
|
|
29
|
-
#endif
|
|
30
|
-
|
|
31
29
|
#define mrb_ptr(o) (o).value.p
|
|
32
30
|
#define mrb_cptr(o) mrb_ptr(o)
|
|
33
|
-
#ifndef
|
|
31
|
+
#ifndef MRB_NO_FLOAT
|
|
34
32
|
#define mrb_float(o) (o).value.f
|
|
35
33
|
#endif
|
|
36
34
|
#define mrb_fixnum(o) (o).value.i
|
|
35
|
+
#define mrb_integer(o) mrb_fixnum(o)
|
|
37
36
|
#define mrb_symbol(o) (o).value.sym
|
|
38
37
|
#define mrb_type(o) (o).tt
|
|
39
38
|
|
|
@@ -46,8 +45,9 @@ typedef struct mrb_value {
|
|
|
46
45
|
#define SET_FALSE_VALUE(r) BOXNIX_SET_VALUE(r, MRB_TT_FALSE, value.i, 1)
|
|
47
46
|
#define SET_TRUE_VALUE(r) BOXNIX_SET_VALUE(r, MRB_TT_TRUE, value.i, 1)
|
|
48
47
|
#define SET_BOOL_VALUE(r,b) BOXNIX_SET_VALUE(r, b ? MRB_TT_TRUE : MRB_TT_FALSE, value.i, 1)
|
|
49
|
-
#define SET_INT_VALUE(r,n) BOXNIX_SET_VALUE(r,
|
|
50
|
-
#
|
|
48
|
+
#define SET_INT_VALUE(mrb,r,n) BOXNIX_SET_VALUE(r, MRB_TT_INTEGER, value.i, (n))
|
|
49
|
+
#define SET_FIXNUM_VALUE(r,n) BOXNIX_SET_VALUE(r, MRB_TT_INTEGER, value.i, (n))
|
|
50
|
+
#ifndef MRB_NO_FLOAT
|
|
51
51
|
#define SET_FLOAT_VALUE(mrb,r,v) BOXNIX_SET_VALUE(r, MRB_TT_FLOAT, value.f, (v))
|
|
52
52
|
#endif
|
|
53
53
|
#define SET_SYM_VALUE(r,v) BOXNIX_SET_VALUE(r, MRB_TT_SYMBOL, value.sym, (v))
|
|
@@ -7,17 +7,18 @@
|
|
|
7
7
|
#ifndef MRUBY_BOXING_WORD_H
|
|
8
8
|
#define MRUBY_BOXING_WORD_H
|
|
9
9
|
|
|
10
|
-
#
|
|
11
|
-
#error MRB_INT64 cannot be used with MRB_WORD_BOXING in 32-bit mode.
|
|
12
|
-
#endif
|
|
13
|
-
|
|
14
|
-
#ifndef MRB_WITHOUT_FLOAT
|
|
10
|
+
#ifndef MRB_NO_FLOAT
|
|
15
11
|
struct RFloat {
|
|
16
12
|
MRB_OBJECT_HEADER;
|
|
17
13
|
mrb_float f;
|
|
18
14
|
};
|
|
19
15
|
#endif
|
|
20
16
|
|
|
17
|
+
struct RInteger {
|
|
18
|
+
MRB_OBJECT_HEADER;
|
|
19
|
+
mrb_int i;
|
|
20
|
+
};
|
|
21
|
+
|
|
21
22
|
enum mrb_special_consts {
|
|
22
23
|
MRB_Qnil = 0,
|
|
23
24
|
MRB_Qfalse = 4,
|
|
@@ -32,6 +33,14 @@ enum mrb_special_consts {
|
|
|
32
33
|
#endif
|
|
33
34
|
#define MRB_SYMBOL_SHIFT BOXWORD_SYMBOL_SHIFT
|
|
34
35
|
|
|
36
|
+
#if defined(MRB_64BIT) && defined(MRB_INT64)
|
|
37
|
+
# define MRB_FIXNUM_MIN (INT64_MIN>>MRB_FIXNUM_SHIFT)
|
|
38
|
+
# define MRB_FIXNUM_MAX (INT64_MAX>>MRB_FIXNUM_SHIFT)
|
|
39
|
+
#else
|
|
40
|
+
# define MRB_FIXNUM_MIN (INT32_MIN>>MRB_FIXNUM_SHIFT)
|
|
41
|
+
# define MRB_FIXNUM_MAX (INT32_MAX>>MRB_FIXNUM_SHIFT)
|
|
42
|
+
#endif
|
|
43
|
+
|
|
35
44
|
#define BOXWORD_FIXNUM_BIT_POS 1
|
|
36
45
|
#define BOXWORD_SYMBOL_BIT_POS 2
|
|
37
46
|
#define BOXWORD_FIXNUM_SHIFT BOXWORD_FIXNUM_BIT_POS
|
|
@@ -46,14 +55,12 @@ enum mrb_special_consts {
|
|
|
46
55
|
#define BOXWORD_SYMBOL_MASK ((1 << BOXWORD_SYMBOL_BIT_POS) - 1)
|
|
47
56
|
#define BOXWORD_IMMEDIATE_MASK 0x07
|
|
48
57
|
|
|
49
|
-
#define BOXWORD_SHIFT_VALUE(o,n,t) \
|
|
50
|
-
(t)(((long)(o).w) >> BOXWORD_##n##_SHIFT)
|
|
51
58
|
#define BOXWORD_SET_SHIFT_VALUE(o,n,v) \
|
|
52
|
-
((o).w = (((
|
|
59
|
+
((o).w = (((uintptr_t)(v)) << BOXWORD_##n##_SHIFT) | BOXWORD_##n##_FLAG)
|
|
53
60
|
#define BOXWORD_SHIFT_VALUE_P(o,n) \
|
|
54
61
|
(((o).w & BOXWORD_##n##_MASK) == BOXWORD_##n##_FLAG)
|
|
55
62
|
#define BOXWORD_OBJ_TYPE_P(o,n) \
|
|
56
|
-
(!mrb_immediate_p(o) && (o).
|
|
63
|
+
(!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
|
|
57
64
|
|
|
58
65
|
/*
|
|
59
66
|
* mrb_value representation:
|
|
@@ -66,54 +73,72 @@ enum mrb_special_consts {
|
|
|
66
73
|
* symbol: ...SSSS SS10 (use only upper 32-bit as symbol value on 64-bit CPU)
|
|
67
74
|
* object: ...PPPP P000 (any bits are 1)
|
|
68
75
|
*/
|
|
69
|
-
typedef
|
|
70
|
-
|
|
71
|
-
|
|
76
|
+
typedef struct mrb_value {
|
|
77
|
+
uintptr_t w;
|
|
78
|
+
} mrb_value;
|
|
79
|
+
|
|
80
|
+
union mrb_value_ {
|
|
81
|
+
void *p;
|
|
72
82
|
#ifdef MRB_64BIT
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
83
|
+
/* use struct to avoid bit shift. */
|
|
84
|
+
struct {
|
|
85
|
+
MRB_ENDIAN_LOHI(
|
|
86
|
+
mrb_sym sym;
|
|
87
|
+
,uint32_t sym_flag;
|
|
88
|
+
)
|
|
89
|
+
};
|
|
80
90
|
#endif
|
|
81
|
-
|
|
82
|
-
#ifndef
|
|
83
|
-
|
|
91
|
+
struct RBasic *bp;
|
|
92
|
+
#ifndef MRB_NO_FLOAT
|
|
93
|
+
struct RFloat *fp;
|
|
84
94
|
#endif
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
95
|
+
struct RInteger *ip;
|
|
96
|
+
struct RCptr *vp;
|
|
97
|
+
uintptr_t w;
|
|
98
|
+
mrb_value value;
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
mrb_static_assert1(sizeof(mrb_value) == sizeof(union mrb_value_));
|
|
102
|
+
|
|
103
|
+
static inline union mrb_value_
|
|
104
|
+
mrb_val_union(mrb_value v)
|
|
105
|
+
{
|
|
106
|
+
union mrb_value_ x;
|
|
107
|
+
x.value = v;
|
|
108
|
+
return x;
|
|
109
|
+
}
|
|
89
110
|
|
|
90
111
|
MRB_API mrb_value mrb_word_boxing_cptr_value(struct mrb_state*, void*);
|
|
91
|
-
#ifndef
|
|
112
|
+
#ifndef MRB_NO_FLOAT
|
|
92
113
|
MRB_API mrb_value mrb_word_boxing_float_value(struct mrb_state*, mrb_float);
|
|
93
|
-
MRB_API mrb_value mrb_word_boxing_float_pool(struct mrb_state*, mrb_float);
|
|
94
114
|
#endif
|
|
115
|
+
MRB_API mrb_value mrb_word_boxing_int_value(struct mrb_state*, mrb_int);
|
|
95
116
|
|
|
96
|
-
#
|
|
97
|
-
#define mrb_float_pool(mrb,f) mrb_word_boxing_float_pool(mrb,f)
|
|
98
|
-
#endif
|
|
117
|
+
#define mrb_immediate_p(o) ((o).w & BOXWORD_IMMEDIATE_MASK || (o).w == MRB_Qnil)
|
|
99
118
|
|
|
100
|
-
#define mrb_ptr(o) (o).
|
|
101
|
-
#define mrb_cptr(o) (o).
|
|
102
|
-
#ifndef
|
|
103
|
-
#define mrb_float(o) (o).
|
|
119
|
+
#define mrb_ptr(o) mrb_val_union(o).p
|
|
120
|
+
#define mrb_cptr(o) mrb_val_union(o).vp->p
|
|
121
|
+
#ifndef MRB_NO_FLOAT
|
|
122
|
+
#define mrb_float(o) mrb_val_union(o).fp->f
|
|
104
123
|
#endif
|
|
105
|
-
#define mrb_fixnum(o)
|
|
124
|
+
#define mrb_fixnum(o) (mrb_int)(((intptr_t)(o).w) >> BOXWORD_FIXNUM_SHIFT)
|
|
125
|
+
MRB_INLINE mrb_int
|
|
126
|
+
mrb_integer_func(mrb_value o) {
|
|
127
|
+
if (mrb_immediate_p(o)) return mrb_fixnum(o);
|
|
128
|
+
return mrb_val_union(o).ip->i;
|
|
129
|
+
}
|
|
130
|
+
#define mrb_integer(o) mrb_integer_func(o)
|
|
106
131
|
#ifdef MRB_64BIT
|
|
107
|
-
#define mrb_symbol(o) (o).
|
|
132
|
+
#define mrb_symbol(o) mrb_val_union(o).sym
|
|
108
133
|
#else
|
|
109
|
-
#define mrb_symbol(o)
|
|
134
|
+
#define mrb_symbol(o) (mrb_sym)(((o).w) >> BOXWORD_SYMBOL_SHIFT)
|
|
110
135
|
#endif
|
|
111
|
-
#define mrb_bool(o) (((o).w & ~(
|
|
136
|
+
#define mrb_bool(o) (((o).w & ~(uintptr_t)MRB_Qfalse) != 0)
|
|
112
137
|
|
|
113
|
-
#define mrb_immediate_p(o) ((o).w & BOXWORD_IMMEDIATE_MASK || (o).w == MRB_Qnil)
|
|
114
138
|
#define mrb_fixnum_p(o) BOXWORD_SHIFT_VALUE_P(o, FIXNUM)
|
|
139
|
+
#define mrb_integer_p(o) (BOXWORD_SHIFT_VALUE_P(o, FIXNUM)||BOXWORD_OBJ_TYPE_P(o, INTEGER))
|
|
115
140
|
#ifdef MRB_64BIT
|
|
116
|
-
#define mrb_symbol_p(o) ((o).
|
|
141
|
+
#define mrb_symbol_p(o) (mrb_val_union(o).sym_flag == BOXWORD_SYMBOL_FLAG)
|
|
117
142
|
#else
|
|
118
143
|
#define mrb_symbol_p(o) BOXWORD_SHIFT_VALUE_P(o, SYMBOL)
|
|
119
144
|
#endif
|
|
@@ -121,7 +146,7 @@ MRB_API mrb_value mrb_word_boxing_float_pool(struct mrb_state*, mrb_float);
|
|
|
121
146
|
#define mrb_nil_p(o) ((o).w == MRB_Qnil)
|
|
122
147
|
#define mrb_false_p(o) ((o).w == MRB_Qfalse)
|
|
123
148
|
#define mrb_true_p(o) ((o).w == MRB_Qtrue)
|
|
124
|
-
#ifndef
|
|
149
|
+
#ifndef MRB_NO_FLOAT
|
|
125
150
|
#define mrb_float_p(o) BOXWORD_OBJ_TYPE_P(o, FLOAT)
|
|
126
151
|
#endif
|
|
127
152
|
#define mrb_array_p(o) BOXWORD_OBJ_TYPE_P(o, ARRAY)
|
|
@@ -143,7 +168,7 @@ MRB_API mrb_value mrb_word_boxing_float_pool(struct mrb_state*, mrb_float);
|
|
|
143
168
|
#define mrb_istruct_p(o) BOXWORD_OBJ_TYPE_P(o, ISTRUCT)
|
|
144
169
|
#define mrb_break_p(o) BOXWORD_OBJ_TYPE_P(o, BREAK)
|
|
145
170
|
|
|
146
|
-
#ifndef
|
|
171
|
+
#ifndef MRB_NO_FLOAT
|
|
147
172
|
#define SET_FLOAT_VALUE(mrb,r,v) ((r) = mrb_word_boxing_float_value(mrb, v))
|
|
148
173
|
#endif
|
|
149
174
|
#define SET_CPTR_VALUE(mrb,r,v) ((r) = mrb_word_boxing_cptr_value(mrb, v))
|
|
@@ -152,23 +177,29 @@ MRB_API mrb_value mrb_word_boxing_float_pool(struct mrb_state*, mrb_float);
|
|
|
152
177
|
#define SET_FALSE_VALUE(r) ((r).w = MRB_Qfalse)
|
|
153
178
|
#define SET_TRUE_VALUE(r) ((r).w = MRB_Qtrue)
|
|
154
179
|
#define SET_BOOL_VALUE(r,b) ((b) ? SET_TRUE_VALUE(r) : SET_FALSE_VALUE(r))
|
|
155
|
-
#define SET_INT_VALUE(r,n)
|
|
180
|
+
#define SET_INT_VALUE(mrb,r,n) ((r) = mrb_word_boxing_int_value(mrb, n))
|
|
181
|
+
#define SET_FIXNUM_VALUE(r,n) BOXWORD_SET_SHIFT_VALUE(r, FIXNUM, n)
|
|
156
182
|
#ifdef MRB_64BIT
|
|
157
|
-
#define SET_SYM_VALUE(r,v)
|
|
183
|
+
#define SET_SYM_VALUE(r,v) do {\
|
|
184
|
+
union mrb_value_ mrb_value_union_variable;\
|
|
185
|
+
mrb_value_union_variable.sym = v;\
|
|
186
|
+
mrb_value_union_variable.sym_flag = BOXWORD_SYMBOL_FLAG;\
|
|
187
|
+
(r) = mrb_value_union_variable.value;\
|
|
188
|
+
} while (0)
|
|
158
189
|
#else
|
|
159
190
|
#define SET_SYM_VALUE(r,n) BOXWORD_SET_SHIFT_VALUE(r, SYMBOL, n)
|
|
160
191
|
#endif
|
|
161
|
-
#define SET_OBJ_VALUE(r,v) ((r).
|
|
192
|
+
#define SET_OBJ_VALUE(r,v) ((r).w = (uintptr_t)(v))
|
|
162
193
|
|
|
163
194
|
MRB_INLINE enum mrb_vtype
|
|
164
195
|
mrb_type(mrb_value o)
|
|
165
196
|
{
|
|
166
197
|
return !mrb_bool(o) ? MRB_TT_FALSE :
|
|
167
198
|
mrb_true_p(o) ? MRB_TT_TRUE :
|
|
168
|
-
mrb_fixnum_p(o) ?
|
|
199
|
+
mrb_fixnum_p(o) ? MRB_TT_INTEGER :
|
|
169
200
|
mrb_symbol_p(o) ? MRB_TT_SYMBOL :
|
|
170
201
|
mrb_undef_p(o) ? MRB_TT_UNDEF :
|
|
171
|
-
o.
|
|
202
|
+
mrb_val_union(o).bp->tt;
|
|
172
203
|
}
|
|
173
204
|
|
|
174
205
|
#endif /* MRUBY_BOXING_WORD_H */
|