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
|
@@ -3,36 +3,35 @@
|
|
|
3
3
|
spec.author = 'mruby developers'
|
|
4
4
|
spec.summary = 'mruby compiler library'
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
if build.cxx_exception_enabled?
|
|
13
|
-
core_objs <<
|
|
14
|
-
build.compile_as_cxx("#{dir}/core/y.tab.c", "#{build_dir}/core/y.tab.cxx",
|
|
15
|
-
objfile("#{build_dir}/y.tab"), ["#{dir}/core"]) <<
|
|
16
|
-
build.compile_as_cxx("#{dir}/core/codegen.c", "#{build_dir}/core/codegen.cxx")
|
|
17
|
-
else
|
|
18
|
-
core_objs << objfile("#{build_dir}/core/y.tab")
|
|
19
|
-
file objfile("#{build_dir}/core/y.tab") => "#{dir}/core/y.tab.c" do |t|
|
|
20
|
-
cc.run t.name, t.prerequisites.first, [], ["#{dir}/core"]
|
|
6
|
+
objs = %w[codegen y.tab].map do |name|
|
|
7
|
+
src = "#{dir}/core/#{name}.c"
|
|
8
|
+
if build.cxx_exception_enabled?
|
|
9
|
+
build.compile_as_cxx(src)
|
|
10
|
+
else
|
|
11
|
+
objfile(src.pathmap("#{build_dir}/core/%n"))
|
|
21
12
|
end
|
|
22
13
|
end
|
|
14
|
+
build.libmruby_core_objs << objs
|
|
15
|
+
|
|
16
|
+
lex_def = "#{dir}/core/lex.def"
|
|
23
17
|
|
|
24
18
|
# Parser
|
|
25
19
|
file "#{dir}/core/y.tab.c" => ["#{dir}/core/parse.y", lex_def] do |t|
|
|
26
20
|
yacc.run t.name, t.prerequisites.first
|
|
27
|
-
|
|
28
|
-
File.write(t.name, content)
|
|
21
|
+
replace_line_directive(t.name)
|
|
29
22
|
end
|
|
30
23
|
|
|
31
24
|
# Lexical analyzer
|
|
32
25
|
file lex_def => "#{dir}/core/keywords" do |t|
|
|
33
26
|
gperf.run t.name, t.prerequisites.first
|
|
27
|
+
replace_line_directive(t.name)
|
|
34
28
|
end
|
|
35
29
|
|
|
36
|
-
|
|
37
|
-
|
|
30
|
+
def replace_line_directive(path)
|
|
31
|
+
content = File.read(path).gsub(%r{
|
|
32
|
+
^\#line\s+\d+\s+"\K.*$ | # #line directive
|
|
33
|
+
^/\*\s+Command-line:.*\s\K\S+(?=\s+\*/$) # header comment in lex.def
|
|
34
|
+
}x, &:relative_path)
|
|
35
|
+
File.write(path, content)
|
|
36
|
+
end
|
|
38
37
|
end
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
#include <mruby.h>
|
|
2
2
|
#include <mruby/class.h>
|
|
3
3
|
#include <mruby/numeric.h>
|
|
4
|
+
#include <mruby/presym.h>
|
|
4
5
|
#include <math.h>
|
|
5
6
|
|
|
6
|
-
#ifdef
|
|
7
|
-
# error Complex conflicts '
|
|
7
|
+
#ifdef MRB_NO_FLOAT
|
|
8
|
+
# error Complex conflicts with 'MRB_NO_FLOAT' configuration
|
|
8
9
|
#endif
|
|
9
10
|
|
|
10
11
|
struct mrb_complex {
|
|
@@ -12,13 +13,13 @@ struct mrb_complex {
|
|
|
12
13
|
mrb_float imaginary;
|
|
13
14
|
};
|
|
14
15
|
|
|
15
|
-
#ifdef
|
|
16
|
+
#ifdef MRB_USE_FLOAT32
|
|
16
17
|
#define F(x) x##f
|
|
17
18
|
#else
|
|
18
19
|
#define F(x) x
|
|
19
20
|
#endif
|
|
20
21
|
|
|
21
|
-
#if defined(MRB_64BIT) || defined(
|
|
22
|
+
#if defined(MRB_64BIT) || defined(MRB_USE_FLOAT32)
|
|
22
23
|
|
|
23
24
|
#define COMPLEX_USE_ISTRUCT
|
|
24
25
|
/* use TT_ISTRUCT */
|
|
@@ -69,7 +70,7 @@ complex_ptr(mrb_state *mrb, mrb_value v)
|
|
|
69
70
|
static mrb_value
|
|
70
71
|
complex_new(mrb_state *mrb, mrb_float real, mrb_float imaginary)
|
|
71
72
|
{
|
|
72
|
-
struct RClass *c =
|
|
73
|
+
struct RClass *c = mrb_class_get_id(mrb, MRB_SYM(Complex));
|
|
73
74
|
struct mrb_complex *p;
|
|
74
75
|
struct RBasic *comp = complex_alloc(mrb, c, &p);
|
|
75
76
|
p->real = real;
|
|
@@ -122,7 +123,7 @@ complex_to_i(mrb_state *mrb, mrb_value self)
|
|
|
122
123
|
if (p->imaginary != 0) {
|
|
123
124
|
mrb_raisef(mrb, E_RANGE_ERROR, "can't convert %v into Float", self);
|
|
124
125
|
}
|
|
125
|
-
return mrb_int_value(mrb, p->real);
|
|
126
|
+
return mrb_int_value(mrb, (mrb_int)p->real);
|
|
126
127
|
}
|
|
127
128
|
|
|
128
129
|
static mrb_value
|
|
@@ -224,7 +225,7 @@ void mrb_mruby_complex_gem_init(mrb_state *mrb)
|
|
|
224
225
|
#ifdef COMPLEX_USE_ISTRUCT
|
|
225
226
|
mrb_assert(sizeof(struct mrb_complex) < ISTRUCT_DATA_SIZE);
|
|
226
227
|
#endif
|
|
227
|
-
comp = mrb_define_class(mrb, "Complex",
|
|
228
|
+
comp = mrb_define_class(mrb, "Complex", mrb_class_get_id(mrb, MRB_SYM(Numeric)));
|
|
228
229
|
#ifdef COMPLEX_USE_ISTRUCT
|
|
229
230
|
MRB_SET_INSTANCE_TT(comp, MRB_TT_ISTRUCT);
|
|
230
231
|
#else
|
|
@@ -56,11 +56,11 @@ def assert_complex(real, exp)
|
|
|
56
56
|
assert 'Complex#/' do
|
|
57
57
|
assert_complex Complex(2, 3) / Complex(2, 3) , (1 + 0i)
|
|
58
58
|
assert_complex Complex(900) / Complex(1) , (900 + 0i)
|
|
59
|
-
assert_complex Complex(-2, 9) / Complex(-9, 2), ((36 / 85)
|
|
60
|
-
assert_complex Complex(9, 8) / 4 , ((9 / 4)
|
|
59
|
+
assert_complex Complex(-2, 9) / Complex(-9, 2), ((36.0 / 85) - (77i / 85))
|
|
60
|
+
assert_complex Complex(9, 8) / 4 , ((9.0 / 4) + 2i)
|
|
61
61
|
assert_complex Complex(20, 9) / 9.8 , (2.0408163265306123 + 0.9183673469387754i)
|
|
62
62
|
if 1e39.infinite? then
|
|
63
|
-
#
|
|
63
|
+
# MRB_USE_FLOAT32 in effect
|
|
64
64
|
ten = 1e21
|
|
65
65
|
one = 1e20
|
|
66
66
|
else
|
|
@@ -80,7 +80,7 @@ def assert_complex(real, exp)
|
|
|
80
80
|
assert_float Complex(-1).abs, 1
|
|
81
81
|
assert_float Complex(3.0, -4.0).abs, 5.0
|
|
82
82
|
if 1e39.infinite? then
|
|
83
|
-
#
|
|
83
|
+
# MRB_USE_FLOAT32 in effect
|
|
84
84
|
exp = 125
|
|
85
85
|
else
|
|
86
86
|
exp = 1021
|
|
@@ -445,7 +445,7 @@ def (o = Object.new).each
|
|
|
445
445
|
}
|
|
446
446
|
end
|
|
447
447
|
|
|
448
|
-
assert '
|
|
448
|
+
assert 'Integer#times' do
|
|
449
449
|
a = 3
|
|
450
450
|
b = a.times
|
|
451
451
|
c = []
|
|
@@ -567,7 +567,7 @@ def (o = Object.new).each
|
|
|
567
567
|
# Without initial object
|
|
568
568
|
passed_args = []
|
|
569
569
|
enum = Enumerator.produce {|obj| passed_args << obj; (obj || 0).succ }
|
|
570
|
-
assert_equal Enumerator, enum.class
|
|
570
|
+
assert_equal Enumerator, enum.class
|
|
571
571
|
assert_take [1, 2, 3], enum
|
|
572
572
|
assert_equal [nil, 1, 2], passed_args
|
|
573
573
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
spec.summary = 'extensional error handling'
|
|
5
5
|
|
|
6
6
|
if build.cxx_exception_enabled?
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
objs << build.compile_as_cxx("#{spec.dir}/src/exception.c")
|
|
8
|
+
objs.delete_if { |v| v == objfile("#{spec.build_dir}/src/exception") }
|
|
9
9
|
end
|
|
10
10
|
end
|
|
@@ -5,14 +5,16 @@
|
|
|
5
5
|
#include <mruby/proc.h>
|
|
6
6
|
#include <mruby/opcode.h>
|
|
7
7
|
#include <mruby/error.h>
|
|
8
|
+
#include <mruby/presym.h>
|
|
8
9
|
|
|
10
|
+
struct REnv *mrb_env_new(mrb_state *mrb, struct mrb_context *c, mrb_callinfo *ci, int nstacks, mrb_value *stack, struct RClass *tc);
|
|
9
11
|
mrb_value mrb_exec_irep(mrb_state *mrb, mrb_value self, struct RProc *p);
|
|
10
12
|
mrb_value mrb_obj_instance_eval(mrb_state *mrb, mrb_value self);
|
|
11
13
|
|
|
12
14
|
void mrb_codedump_all(mrb_state*, struct RProc*);
|
|
13
15
|
|
|
14
16
|
static struct RProc*
|
|
15
|
-
create_proc_from_string(mrb_state *mrb, char *s, mrb_int len, mrb_value binding, const char *file, mrb_int line)
|
|
17
|
+
create_proc_from_string(mrb_state *mrb, const char *s, mrb_int len, mrb_value binding, const char *file, mrb_int line)
|
|
16
18
|
{
|
|
17
19
|
mrbc_context *cxt;
|
|
18
20
|
struct mrb_parser_state *p;
|
|
@@ -20,7 +22,6 @@ create_proc_from_string(mrb_state *mrb, char *s, mrb_int len, mrb_value binding,
|
|
|
20
22
|
struct REnv *e;
|
|
21
23
|
mrb_callinfo *ci; /* callinfo of eval caller */
|
|
22
24
|
struct RClass *target_class = NULL;
|
|
23
|
-
int bidx;
|
|
24
25
|
|
|
25
26
|
if (!mrb_nil_p(binding)) {
|
|
26
27
|
mrb_raise(mrb, E_ARGUMENT_ERROR, "Binding of eval must be nil.");
|
|
@@ -39,7 +40,7 @@ create_proc_from_string(mrb_state *mrb, char *s, mrb_int len, mrb_value binding,
|
|
|
39
40
|
|
|
40
41
|
/* only occur when memory ran out */
|
|
41
42
|
if (!p) {
|
|
42
|
-
mrb_raise(mrb, E_RUNTIME_ERROR, "Failed to create parser state
|
|
43
|
+
mrb_raise(mrb, E_RUNTIME_ERROR, "Failed to create parser state (out of memory)");
|
|
43
44
|
}
|
|
44
45
|
|
|
45
46
|
if (0 < p->nerr) {
|
|
@@ -79,28 +80,19 @@ create_proc_from_string(mrb_state *mrb, char *s, mrb_int len, mrb_value binding,
|
|
|
79
80
|
target_class = MRB_PROC_TARGET_CLASS(ci->proc);
|
|
80
81
|
}
|
|
81
82
|
if (ci->proc && !MRB_PROC_CFUNC_P(ci->proc)) {
|
|
82
|
-
if (ci
|
|
83
|
-
e
|
|
83
|
+
if ((e = mrb_vm_ci_env(ci)) != NULL) {
|
|
84
|
+
/* do nothing, because e is assigned already */
|
|
84
85
|
}
|
|
85
86
|
else {
|
|
86
|
-
e = (
|
|
87
|
-
|
|
88
|
-
e->mid = ci->mid;
|
|
89
|
-
e->stack = ci[1].stackent;
|
|
90
|
-
e->cxt = mrb->c;
|
|
91
|
-
MRB_ENV_SET_LEN(e, ci->proc->body.irep->nlocals);
|
|
92
|
-
bidx = ci->argc;
|
|
93
|
-
if (ci->argc < 0) bidx = 2;
|
|
94
|
-
else bidx += 1;
|
|
95
|
-
MRB_ENV_SET_BIDX(e, bidx);
|
|
96
|
-
ci->env = e;
|
|
87
|
+
e = mrb_env_new(mrb, mrb->c, ci, ci->proc->body.irep->nlocals, ci->stack, target_class);
|
|
88
|
+
ci->u.env = e;
|
|
97
89
|
}
|
|
98
90
|
proc->e.env = e;
|
|
99
91
|
proc->flags |= MRB_PROC_ENVSET;
|
|
100
92
|
mrb_field_write_barrier(mrb, (struct RBasic*)proc, (struct RBasic*)e);
|
|
101
93
|
}
|
|
102
94
|
proc->upper = ci->proc;
|
|
103
|
-
mrb->c->ci
|
|
95
|
+
mrb_vm_ci_target_class_set(mrb->c->ci, target_class);
|
|
104
96
|
/* mrb_codedump_all(mrb, proc); */
|
|
105
97
|
|
|
106
98
|
mrb_parser_free(p);
|
|
@@ -124,17 +116,17 @@ exec_irep(mrb_state *mrb, mrb_value self, struct RProc *proc)
|
|
|
124
116
|
return ret;
|
|
125
117
|
}
|
|
126
118
|
/* clear block */
|
|
127
|
-
mrb->c->stack[1] = mrb_nil_value();
|
|
119
|
+
mrb->c->ci->stack[1] = mrb_nil_value();
|
|
128
120
|
return mrb_exec_irep(mrb, self, proc);
|
|
129
121
|
}
|
|
130
122
|
|
|
131
123
|
static mrb_value
|
|
132
124
|
f_eval(mrb_state *mrb, mrb_value self)
|
|
133
125
|
{
|
|
134
|
-
char *s;
|
|
126
|
+
const char *s;
|
|
135
127
|
mrb_int len;
|
|
136
128
|
mrb_value binding = mrb_nil_value();
|
|
137
|
-
char *file = NULL;
|
|
129
|
+
const char *file = NULL;
|
|
138
130
|
mrb_int line = 1;
|
|
139
131
|
struct RProc *proc;
|
|
140
132
|
|
|
@@ -149,14 +141,14 @@ static mrb_value
|
|
|
149
141
|
f_instance_eval(mrb_state *mrb, mrb_value self)
|
|
150
142
|
{
|
|
151
143
|
mrb_value b;
|
|
152
|
-
mrb_int argc; mrb_value *argv;
|
|
144
|
+
mrb_int argc; const mrb_value *argv;
|
|
153
145
|
|
|
154
146
|
mrb_get_args(mrb, "*!&", &argv, &argc, &b);
|
|
155
147
|
|
|
156
148
|
if (mrb_nil_p(b)) {
|
|
157
|
-
char *s;
|
|
149
|
+
const char *s;
|
|
158
150
|
mrb_int len;
|
|
159
|
-
char *file = NULL;
|
|
151
|
+
const char *file = NULL;
|
|
160
152
|
mrb_int line = 1;
|
|
161
153
|
mrb_value cv;
|
|
162
154
|
struct RProc *proc;
|
|
@@ -166,7 +158,7 @@ f_instance_eval(mrb_state *mrb, mrb_value self)
|
|
|
166
158
|
proc = create_proc_from_string(mrb, s, len, mrb_nil_value(), file, line);
|
|
167
159
|
MRB_PROC_SET_TARGET_CLASS(proc, mrb_class_ptr(cv));
|
|
168
160
|
mrb_assert(!MRB_PROC_CFUNC_P(proc));
|
|
169
|
-
mrb->c->ci
|
|
161
|
+
mrb_vm_ci_target_class_set(mrb->c->ci, mrb_class_ptr(cv));
|
|
170
162
|
return exec_irep(mrb, self, proc);
|
|
171
163
|
}
|
|
172
164
|
else {
|
|
@@ -179,7 +171,7 @@ void
|
|
|
179
171
|
mrb_mruby_eval_gem_init(mrb_state* mrb)
|
|
180
172
|
{
|
|
181
173
|
mrb_define_module_function(mrb, mrb->kernel_module, "eval", f_eval, MRB_ARGS_ARG(1, 3));
|
|
182
|
-
mrb_define_method(mrb,
|
|
174
|
+
mrb_define_method(mrb, mrb_class_get_id(mrb, MRB_SYM(BasicObject)), "instance_eval", f_instance_eval, MRB_ARGS_OPT(3)|MRB_ARGS_BLOCK());
|
|
183
175
|
}
|
|
184
176
|
|
|
185
177
|
void
|
|
@@ -93,7 +93,6 @@ fiber_init(mrb_state *mrb, mrb_value self)
|
|
|
93
93
|
}
|
|
94
94
|
c->stbase = (mrb_value *)mrb_malloc(mrb, slen*sizeof(mrb_value));
|
|
95
95
|
c->stend = c->stbase + slen;
|
|
96
|
-
c->stack = c->stbase;
|
|
97
96
|
|
|
98
97
|
#ifdef MRB_NAN_BOXING
|
|
99
98
|
{
|
|
@@ -110,20 +109,19 @@ fiber_init(mrb_state *mrb, mrb_value self)
|
|
|
110
109
|
#endif
|
|
111
110
|
|
|
112
111
|
/* copy receiver from a block */
|
|
113
|
-
c->
|
|
112
|
+
c->stbase[0] = mrb->c->ci->stack[0];
|
|
114
113
|
|
|
115
114
|
/* initialize callinfo stack */
|
|
116
115
|
c->cibase = (mrb_callinfo *)mrb_calloc(mrb, FIBER_CI_INIT_SIZE, sizeof(mrb_callinfo));
|
|
117
116
|
c->ciend = c->cibase + FIBER_CI_INIT_SIZE;
|
|
118
117
|
c->ci = c->cibase;
|
|
119
|
-
c->ci->stackent = c->stack;
|
|
120
118
|
|
|
121
119
|
/* adjust return callinfo */
|
|
122
120
|
ci = c->ci;
|
|
123
|
-
ci
|
|
124
|
-
ci
|
|
121
|
+
mrb_vm_ci_target_class_set(ci, MRB_PROC_TARGET_CLASS(p));
|
|
122
|
+
mrb_vm_ci_proc_set(ci, p);
|
|
125
123
|
mrb_field_write_barrier(mrb, (struct RBasic*)mrb_obj_ptr(self), (struct RBasic*)p);
|
|
126
|
-
ci->
|
|
124
|
+
ci->stack = c->stbase;
|
|
127
125
|
ci[1] = ci[0];
|
|
128
126
|
c->ci++; /* push dummy callinfo */
|
|
129
127
|
|
|
@@ -154,7 +152,7 @@ fiber_result(mrb_state *mrb, const mrb_value *a, mrb_int len)
|
|
|
154
152
|
}
|
|
155
153
|
|
|
156
154
|
/* mark return from context modifying method */
|
|
157
|
-
#define MARK_CONTEXT_MODIFY(c) (c)->ci->target_class = NULL
|
|
155
|
+
#define MARK_CONTEXT_MODIFY(c) (c)->ci->u.target_class = NULL
|
|
158
156
|
|
|
159
157
|
static void
|
|
160
158
|
fiber_check_cfunc(mrb_state *mrb, struct mrb_context *c)
|
|
@@ -214,21 +212,27 @@ fiber_switch(mrb_state *mrb, mrb_value self, mrb_int len, const mrb_value *a, mr
|
|
|
214
212
|
mrb_raise(mrb, E_FIBER_ERROR, "double resume (current)");
|
|
215
213
|
}
|
|
216
214
|
mrb_stack_extend(mrb, len+2); /* for receiver and (optional) block */
|
|
217
|
-
b = c->
|
|
215
|
+
b = c->stbase+1;
|
|
218
216
|
e = b + len;
|
|
219
217
|
while (b<e) {
|
|
220
218
|
*b++ = *a++;
|
|
221
219
|
}
|
|
220
|
+
if (vmexec) {
|
|
221
|
+
c->ci--; /* pop dummy callinfo */
|
|
222
|
+
}
|
|
222
223
|
c->cibase->argc = (int)len;
|
|
223
|
-
value = c->
|
|
224
|
+
value = c->stbase[0] = MRB_PROC_ENV(c->cibase->proc)->stack[0];
|
|
224
225
|
}
|
|
225
226
|
else {
|
|
226
227
|
value = fiber_result(mrb, a, len);
|
|
228
|
+
if (vmexec) {
|
|
229
|
+
c->ci->stack[c->ci[1].acc] = value;
|
|
230
|
+
}
|
|
227
231
|
}
|
|
228
232
|
|
|
229
233
|
if (vmexec) {
|
|
230
234
|
c->vmexec = TRUE;
|
|
231
|
-
value = mrb_vm_exec(mrb, c->ci
|
|
235
|
+
value = mrb_vm_exec(mrb, c->ci->proc, c->ci->pc);
|
|
232
236
|
mrb->c = old_c;
|
|
233
237
|
}
|
|
234
238
|
else {
|
|
@@ -255,7 +259,7 @@ fiber_switch(mrb_state *mrb, mrb_value self, mrb_int len, const mrb_value *a, mr
|
|
|
255
259
|
static mrb_value
|
|
256
260
|
fiber_resume(mrb_state *mrb, mrb_value self)
|
|
257
261
|
{
|
|
258
|
-
mrb_value *a;
|
|
262
|
+
const mrb_value *a;
|
|
259
263
|
mrb_int len;
|
|
260
264
|
mrb_bool vmexec = FALSE;
|
|
261
265
|
|
|
@@ -315,7 +319,7 @@ static mrb_value
|
|
|
315
319
|
fiber_transfer(mrb_state *mrb, mrb_value self)
|
|
316
320
|
{
|
|
317
321
|
struct mrb_context *c = fiber_check(mrb, self);
|
|
318
|
-
mrb_value* a;
|
|
322
|
+
const mrb_value* a;
|
|
319
323
|
mrb_int len;
|
|
320
324
|
|
|
321
325
|
fiber_check_cfunc(mrb, mrb->c);
|
|
@@ -354,6 +358,7 @@ mrb_fiber_yield(mrb_state *mrb, mrb_int len, const mrb_value *a)
|
|
|
354
358
|
if (c->vmexec) {
|
|
355
359
|
c->vmexec = FALSE;
|
|
356
360
|
mrb->c->ci->acc = CI_ACC_RESUMED;
|
|
361
|
+
c->ci--; /* pop callinfo for yield */
|
|
357
362
|
}
|
|
358
363
|
MARK_CONTEXT_MODIFY(mrb->c);
|
|
359
364
|
return fiber_result(mrb, a, len);
|
|
@@ -374,7 +379,7 @@ mrb_fiber_yield(mrb_state *mrb, mrb_int len, const mrb_value *a)
|
|
|
374
379
|
static mrb_value
|
|
375
380
|
fiber_yield(mrb_state *mrb, mrb_value self)
|
|
376
381
|
{
|
|
377
|
-
mrb_value *a;
|
|
382
|
+
const mrb_value *a;
|
|
378
383
|
mrb_int len;
|
|
379
384
|
|
|
380
385
|
mrb_get_args(mrb, "*!", &a, &len);
|
|
@@ -22,7 +22,8 @@
|
|
|
22
22
|
static mrb_value
|
|
23
23
|
hash_values_at(mrb_state *mrb, mrb_value hash)
|
|
24
24
|
{
|
|
25
|
-
mrb_value *argv
|
|
25
|
+
const mrb_value *argv;
|
|
26
|
+
mrb_value result;
|
|
26
27
|
mrb_int argc, i;
|
|
27
28
|
int ai;
|
|
28
29
|
|
|
@@ -49,7 +50,8 @@ hash_values_at(mrb_state *mrb, mrb_value hash)
|
|
|
49
50
|
static mrb_value
|
|
50
51
|
hash_slice(mrb_state *mrb, mrb_value hash)
|
|
51
52
|
{
|
|
52
|
-
mrb_value *argv
|
|
53
|
+
const mrb_value *argv;
|
|
54
|
+
mrb_value result;
|
|
53
55
|
mrb_int argc, i;
|
|
54
56
|
|
|
55
57
|
mrb_get_args(mrb, "*", &argv, &argc);
|
|
@@ -67,6 +69,31 @@ hash_slice(mrb_state *mrb, mrb_value hash)
|
|
|
67
69
|
return result;
|
|
68
70
|
}
|
|
69
71
|
|
|
72
|
+
/*
|
|
73
|
+
* call-seq:
|
|
74
|
+
* hsh.except(*keys) -> a_hash
|
|
75
|
+
*
|
|
76
|
+
* Returns a hash excluding the given keys and their values.
|
|
77
|
+
*
|
|
78
|
+
* h = { a: 100, b: 200, c: 300 }
|
|
79
|
+
* h.except(:a) #=> {:b=>200, :c=>300}
|
|
80
|
+
* h.except(:b, :c, :d) #=> {:a=>100}
|
|
81
|
+
*/
|
|
82
|
+
static mrb_value
|
|
83
|
+
hash_except(mrb_state *mrb, mrb_value hash)
|
|
84
|
+
{
|
|
85
|
+
const mrb_value *argv;
|
|
86
|
+
mrb_value result;
|
|
87
|
+
mrb_int argc, i;
|
|
88
|
+
|
|
89
|
+
mrb_get_args(mrb, "*", &argv, &argc);
|
|
90
|
+
result = mrb_hash_dup(mrb, hash);
|
|
91
|
+
for (i = 0; i < argc; i++) {
|
|
92
|
+
mrb_hash_delete_key(mrb, result, argv[i]);
|
|
93
|
+
}
|
|
94
|
+
return result;
|
|
95
|
+
}
|
|
96
|
+
|
|
70
97
|
void
|
|
71
98
|
mrb_mruby_hash_ext_gem_init(mrb_state *mrb)
|
|
72
99
|
{
|
|
@@ -75,6 +102,7 @@ mrb_mruby_hash_ext_gem_init(mrb_state *mrb)
|
|
|
75
102
|
h = mrb->hash_class;
|
|
76
103
|
mrb_define_method(mrb, h, "values_at", hash_values_at, MRB_ARGS_ANY());
|
|
77
104
|
mrb_define_method(mrb, h, "slice", hash_slice, MRB_ARGS_ANY());
|
|
105
|
+
mrb_define_method(mrb, h, "except", hash_except, MRB_ARGS_ANY());
|
|
78
106
|
}
|
|
79
107
|
|
|
80
108
|
void
|