script_core 0.2.7 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -9,6 +9,7 @@
|
|
9
9
|
#include <mruby/range.h>
|
10
10
|
#include <mruby/string.h>
|
11
11
|
#include <mruby/array.h>
|
12
|
+
#include <mruby/presym.h>
|
12
13
|
|
13
14
|
#define RANGE_INITIALIZED_MASK 1
|
14
15
|
#define RANGE_INITIALIZED(p) ((p)->flags |= RANGE_INITIALIZED_MASK)
|
@@ -23,15 +24,17 @@ r_check(mrb_state *mrb, mrb_value a, mrb_value b)
|
|
23
24
|
|
24
25
|
ta = mrb_type(a);
|
25
26
|
tb = mrb_type(b);
|
26
|
-
#ifdef
|
27
|
-
if (ta ==
|
27
|
+
#ifdef MRB_NO_FLOAT
|
28
|
+
if (ta == MRB_TT_INTEGER && tb == MRB_TT_INTEGER ) {
|
28
29
|
#else
|
29
|
-
if ((ta ==
|
30
|
-
(tb ==
|
30
|
+
if ((ta == MRB_TT_INTEGER || ta == MRB_TT_FLOAT) &&
|
31
|
+
(tb == MRB_TT_INTEGER || tb == MRB_TT_FLOAT)) {
|
31
32
|
#endif
|
32
33
|
return;
|
33
34
|
}
|
34
35
|
|
36
|
+
if (mrb_nil_p(a) || mrb_nil_p(b)) return;
|
37
|
+
|
35
38
|
n = mrb_cmp(mrb, a, b);
|
36
39
|
if (n == -2) { /* can not be compared */
|
37
40
|
mrb_raise(mrb, E_ARGUMENT_ERROR, "bad value for range");
|
@@ -78,7 +81,7 @@ range_ptr_init(mrb_state *mrb, struct RRange *r, mrb_value beg, mrb_value end, m
|
|
78
81
|
if (r) {
|
79
82
|
if (RANGE_INITIALIZED_P(r)) {
|
80
83
|
/* Ranges are immutable, so that they should be initialized only once. */
|
81
|
-
mrb_name_error(mrb,
|
84
|
+
mrb_name_error(mrb, MRB_SYM(initialize), "'initialize' called twice");
|
82
85
|
}
|
83
86
|
else {
|
84
87
|
range_ptr_alloc_edges(mrb, r);
|
@@ -161,6 +164,7 @@ range_initialize(mrb_state *mrb, mrb_value range)
|
|
161
164
|
|
162
165
|
mrb_get_args(mrb, "oo|b", &beg, &end, &exclusive);
|
163
166
|
range_ptr_replace(mrb, mrb_range_raw_ptr(range), beg, end, exclusive);
|
167
|
+
mrb_obj_freeze(mrb, range);
|
164
168
|
return range;
|
165
169
|
}
|
166
170
|
|
@@ -212,15 +216,25 @@ range_include(mrb_state *mrb, mrb_value range)
|
|
212
216
|
mrb_value val = mrb_get_arg1(mrb);
|
213
217
|
struct RRange *r = mrb_range_ptr(mrb, range);
|
214
218
|
mrb_value beg, end;
|
215
|
-
mrb_bool include_p;
|
216
219
|
|
217
220
|
beg = RANGE_BEG(r);
|
218
221
|
end = RANGE_END(r);
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
222
|
+
if (mrb_nil_p(beg)) {
|
223
|
+
if (RANGE_EXCL(r) ? r_gt(mrb, end, val) /* end > val */
|
224
|
+
: r_ge(mrb, end, val)) { /* end >= val */
|
225
|
+
return mrb_true_value();
|
226
|
+
}
|
227
|
+
}
|
228
|
+
else if (r_le(mrb, beg, val)) { /* beg <= val */
|
229
|
+
if (mrb_nil_p(end)) {
|
230
|
+
return mrb_true_value();
|
231
|
+
}
|
232
|
+
if (RANGE_EXCL(r) ? r_gt(mrb, end, val) /* end > val */
|
233
|
+
: r_ge(mrb, end, val)) { /* end >= val */
|
234
|
+
return mrb_true_value();
|
235
|
+
}
|
236
|
+
}
|
237
|
+
return mrb_false_value();
|
224
238
|
}
|
225
239
|
|
226
240
|
/* 15.2.14.4.12(x) */
|
@@ -257,14 +271,21 @@ range_to_s(mrb_state *mrb, mrb_value range)
|
|
257
271
|
static mrb_value
|
258
272
|
range_inspect(mrb_state *mrb, mrb_value range)
|
259
273
|
{
|
260
|
-
mrb_value str
|
274
|
+
mrb_value str;
|
261
275
|
struct RRange *r = mrb_range_ptr(mrb, range);
|
262
276
|
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
277
|
+
if (!mrb_nil_p(RANGE_BEG(r))) {
|
278
|
+
str = mrb_inspect(mrb, RANGE_BEG(r));
|
279
|
+
str = mrb_str_dup(mrb, str);
|
280
|
+
mrb_str_cat(mrb, str, "...", RANGE_EXCL(r) ? 3 : 2);
|
281
|
+
}
|
282
|
+
else {
|
283
|
+
str = mrb_str_new(mrb, "...", RANGE_EXCL(r) ? 3 : 2);
|
284
|
+
}
|
285
|
+
if (!mrb_nil_p(RANGE_END(r))) {
|
286
|
+
mrb_value str2 = mrb_inspect(mrb, RANGE_END(r));
|
287
|
+
mrb_str_cat_str(mrb, str, str2);
|
288
|
+
}
|
268
289
|
|
269
290
|
return str;
|
270
291
|
}
|
@@ -316,6 +337,7 @@ range_initialize_copy(mrb_state *mrb, mrb_value copy)
|
|
316
337
|
|
317
338
|
r = mrb_range_ptr(mrb, src);
|
318
339
|
range_ptr_replace(mrb, mrb_range_raw_ptr(copy), RANGE_BEG(r), RANGE_END(r), RANGE_EXCL(r));
|
340
|
+
mrb_obj_freeze(mrb, copy);
|
319
341
|
|
320
342
|
return copy;
|
321
343
|
}
|
@@ -328,8 +350,8 @@ mrb_get_values_at(mrb_state *mrb, mrb_value obj, mrb_int olen, mrb_int argc, con
|
|
328
350
|
result = mrb_ary_new(mrb);
|
329
351
|
|
330
352
|
for (i = 0; i < argc; ++i) {
|
331
|
-
if (
|
332
|
-
mrb_ary_push(mrb, result, func(mrb, obj,
|
353
|
+
if (mrb_integer_p(argv[i])) {
|
354
|
+
mrb_ary_push(mrb, result, func(mrb, obj, mrb_integer(argv[i])));
|
333
355
|
}
|
334
356
|
else if (mrb_range_beg_len(mrb, argv[i], &beg, &len, olen, FALSE) == MRB_RANGE_OK) {
|
335
357
|
mrb_int const end = olen < beg + len ? olen : beg + len;
|
@@ -381,13 +403,15 @@ MRB_API enum mrb_range_beg_len
|
|
381
403
|
mrb_range_beg_len(mrb_state *mrb, mrb_value range, mrb_int *begp, mrb_int *lenp, mrb_int len, mrb_bool trunc)
|
382
404
|
{
|
383
405
|
mrb_int beg, end;
|
406
|
+
mrb_bool excl;
|
384
407
|
struct RRange *r;
|
385
408
|
|
386
409
|
if (!mrb_range_p(range)) return MRB_RANGE_TYPE_MISMATCH;
|
387
410
|
r = mrb_range_ptr(mrb, range);
|
388
411
|
|
389
412
|
beg = mrb_int(mrb, RANGE_BEG(r));
|
390
|
-
end = mrb_int(mrb, RANGE_END(r));
|
413
|
+
end = mrb_nil_p(RANGE_END(r)) ? -1 : mrb_int(mrb, RANGE_END(r));
|
414
|
+
excl = mrb_nil_p(RANGE_END(r)) ? 0 : RANGE_EXCL(r);
|
391
415
|
|
392
416
|
if (beg < 0) {
|
393
417
|
beg += len;
|
@@ -400,7 +424,7 @@ mrb_range_beg_len(mrb_state *mrb, mrb_value range, mrb_int *begp, mrb_int *lenp,
|
|
400
424
|
}
|
401
425
|
|
402
426
|
if (end < 0) end += len;
|
403
|
-
if (!
|
427
|
+
if (!excl && (!trunc || end < len)) end++; /* include end point */
|
404
428
|
len = end - beg;
|
405
429
|
if (len < 0) len = 0;
|
406
430
|
|
@@ -77,11 +77,13 @@ mrb_open(void)
|
|
77
77
|
return mrb;
|
78
78
|
}
|
79
79
|
|
80
|
+
#ifndef MRB_NO_GEMS
|
80
81
|
static void
|
81
82
|
init_mrbgems(mrb_state *mrb, void *opaque)
|
82
83
|
{
|
83
84
|
mrb_init_mrbgems(mrb);
|
84
85
|
}
|
86
|
+
#endif
|
85
87
|
|
86
88
|
MRB_API mrb_state*
|
87
89
|
mrb_open_allocf(mrb_allocf f, void *ud)
|
@@ -92,7 +94,7 @@ mrb_open_allocf(mrb_allocf f, void *ud)
|
|
92
94
|
return NULL;
|
93
95
|
}
|
94
96
|
|
95
|
-
#ifndef
|
97
|
+
#ifndef MRB_NO_GEMS
|
96
98
|
if (mrb_core_init_protect(mrb, init_mrbgems, NULL)) {
|
97
99
|
mrb_close(mrb);
|
98
100
|
return NULL;
|
@@ -107,12 +109,14 @@ void mrb_free_symtbl(mrb_state *mrb);
|
|
107
109
|
void
|
108
110
|
mrb_irep_incref(mrb_state *mrb, mrb_irep *irep)
|
109
111
|
{
|
112
|
+
if (irep->flags & MRB_IREP_NO_FREE) return;
|
110
113
|
irep->refcnt++;
|
111
114
|
}
|
112
115
|
|
113
116
|
void
|
114
117
|
mrb_irep_decref(mrb_state *mrb, mrb_irep *irep)
|
115
118
|
{
|
119
|
+
if (irep->flags & MRB_IREP_NO_FREE) return;
|
116
120
|
irep->refcnt--;
|
117
121
|
if (irep->refcnt == 0) {
|
118
122
|
mrb_irep_free(mrb, irep);
|
@@ -122,12 +126,14 @@ mrb_irep_decref(mrb_state *mrb, mrb_irep *irep)
|
|
122
126
|
void
|
123
127
|
mrb_irep_cutref(mrb_state *mrb, mrb_irep *irep)
|
124
128
|
{
|
125
|
-
mrb_irep
|
129
|
+
mrb_irep **reps;
|
126
130
|
int i;
|
127
131
|
|
132
|
+
if (irep->flags & MRB_IREP_NO_FREE) return;
|
133
|
+
reps = (mrb_irep**)irep->reps;
|
128
134
|
for (i=0; i<irep->rlen; i++) {
|
129
|
-
tmp =
|
130
|
-
|
135
|
+
mrb_irep *tmp = reps[i];
|
136
|
+
reps[i] = NULL;
|
131
137
|
if (tmp) mrb_irep_decref(mrb, tmp);
|
132
138
|
}
|
133
139
|
}
|
@@ -137,59 +143,46 @@ mrb_irep_free(mrb_state *mrb, mrb_irep *irep)
|
|
137
143
|
{
|
138
144
|
int i;
|
139
145
|
|
146
|
+
if (irep->flags & MRB_IREP_NO_FREE) return;
|
140
147
|
if (!(irep->flags & MRB_ISEQ_NO_FREE))
|
141
148
|
mrb_free(mrb, (void*)irep->iseq);
|
142
|
-
if (irep->pool)
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
#if defined(MRB_WORD_BOXING) && !defined(MRB_WITHOUT_FLOAT)
|
148
|
-
else if (mrb_float_p(irep->pool[i])) {
|
149
|
-
mrb_free(mrb, mrb_obj_ptr(irep->pool[i]));
|
149
|
+
if (irep->pool) {
|
150
|
+
for (i=0; i<irep->plen; i++) {
|
151
|
+
if ((irep->pool[i].tt & 3) == IREP_TT_STR) {
|
152
|
+
mrb_free(mrb, (void*)irep->pool[i].u.str);
|
153
|
+
}
|
150
154
|
}
|
151
|
-
|
155
|
+
mrb_free(mrb, (void*)irep->pool);
|
152
156
|
}
|
153
|
-
mrb_free(mrb, irep->
|
154
|
-
mrb_free(mrb, irep->syms);
|
157
|
+
mrb_free(mrb, (void*)irep->syms);
|
155
158
|
if (irep->reps) {
|
156
159
|
for (i=0; i<irep->rlen; i++) {
|
157
160
|
if (irep->reps[i])
|
158
|
-
mrb_irep_decref(mrb, irep->reps[i]);
|
161
|
+
mrb_irep_decref(mrb, (mrb_irep*)irep->reps[i]);
|
159
162
|
}
|
163
|
+
mrb_free(mrb, (void*)irep->reps);
|
160
164
|
}
|
161
|
-
mrb_free(mrb, irep->
|
162
|
-
mrb_free(mrb, irep->lv);
|
165
|
+
mrb_free(mrb, (void*)irep->lv);
|
163
166
|
mrb_debug_info_free(mrb, irep->debug_info);
|
164
167
|
mrb_free(mrb, irep);
|
165
168
|
}
|
166
169
|
|
167
|
-
void mrb_free_backtrace(mrb_state *mrb);
|
168
|
-
|
169
170
|
MRB_API void
|
170
171
|
mrb_free_context(mrb_state *mrb, struct mrb_context *c)
|
171
172
|
{
|
172
173
|
if (!c) return;
|
173
174
|
mrb_free(mrb, c->stbase);
|
174
175
|
mrb_free(mrb, c->cibase);
|
175
|
-
mrb_free(mrb, c->rescue);
|
176
|
-
mrb_free(mrb, c->ensure);
|
177
176
|
mrb_free(mrb, c);
|
178
177
|
}
|
179
178
|
|
180
|
-
|
179
|
+
int mrb_protect_atexit(mrb_state *mrb);
|
180
|
+
|
181
|
+
MRB_API void
|
181
182
|
mrb_close(mrb_state *mrb)
|
182
183
|
{
|
183
184
|
if (!mrb) return;
|
184
|
-
|
185
|
-
mrb_int i;
|
186
|
-
for (i = mrb->atexit_stack_len; i > 0; --i) {
|
187
|
-
mrb->atexit_stack[i - 1](mrb);
|
188
|
-
}
|
189
|
-
#ifndef MRB_FIXED_STATE_ATEXIT_STACK
|
190
|
-
mrb_free(mrb, mrb->atexit_stack);
|
191
|
-
#endif
|
192
|
-
}
|
185
|
+
mrb_protect_atexit(mrb);
|
193
186
|
|
194
187
|
/* free */
|
195
188
|
mrb_gc_destroy(mrb, &mrb->gc);
|
@@ -8,7 +8,7 @@
|
|
8
8
|
# define _CRT_NONSTDC_NO_DEPRECATE
|
9
9
|
#endif
|
10
10
|
|
11
|
-
#ifndef
|
11
|
+
#ifndef MRB_NO_FLOAT
|
12
12
|
#include <float.h>
|
13
13
|
#include <math.h>
|
14
14
|
#endif
|
@@ -22,6 +22,7 @@
|
|
22
22
|
#include <mruby/range.h>
|
23
23
|
#include <mruby/string.h>
|
24
24
|
#include <mruby/numeric.h>
|
25
|
+
#include <mruby/presym.h>
|
25
26
|
|
26
27
|
typedef struct mrb_shared_string {
|
27
28
|
int refcnt;
|
@@ -175,19 +176,6 @@ mrb_str_new_capa(mrb_state *mrb, size_t capa)
|
|
175
176
|
return mrb_obj_value(s);
|
176
177
|
}
|
177
178
|
|
178
|
-
#ifndef MRB_STR_BUF_MIN_SIZE
|
179
|
-
# define MRB_STR_BUF_MIN_SIZE 128
|
180
|
-
#endif
|
181
|
-
|
182
|
-
MRB_API mrb_value
|
183
|
-
mrb_str_buf_new(mrb_state *mrb, size_t capa)
|
184
|
-
{
|
185
|
-
if (capa < MRB_STR_BUF_MIN_SIZE) {
|
186
|
-
capa = MRB_STR_BUF_MIN_SIZE;
|
187
|
-
}
|
188
|
-
return mrb_str_new_capa(mrb, capa);
|
189
|
-
}
|
190
|
-
|
191
179
|
static void
|
192
180
|
resize_capa(mrb_state *mrb, struct RString *s, size_t capacity)
|
193
181
|
{
|
@@ -297,10 +285,12 @@ static const char utf8len_codepage[256] =
|
|
297
285
|
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
298
286
|
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
299
287
|
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
300
|
-
|
288
|
+
1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
|
301
289
|
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,1,1,1,1,1,1,1,1,1,1,1,
|
302
290
|
};
|
303
291
|
|
292
|
+
#define utf8_islead(c) ((unsigned char)((c)&0xc0) != 0x80)
|
293
|
+
|
304
294
|
mrb_int
|
305
295
|
mrb_utf8len(const char* p, const char* e)
|
306
296
|
{
|
@@ -312,7 +302,7 @@ mrb_utf8len(const char* p, const char* e)
|
|
312
302
|
if (len == 1) return 1;
|
313
303
|
if (len > e - p) return 1;
|
314
304
|
for (i = 1; i < len; ++i)
|
315
|
-
if ((p[i]
|
305
|
+
if (utf8_islead(p[i]))
|
316
306
|
return 1;
|
317
307
|
return len;
|
318
308
|
}
|
@@ -320,15 +310,15 @@ mrb_utf8len(const char* p, const char* e)
|
|
320
310
|
mrb_int
|
321
311
|
mrb_utf8_strlen(const char *str, mrb_int byte_len)
|
322
312
|
{
|
323
|
-
mrb_int
|
313
|
+
mrb_int len = 0;
|
324
314
|
const char *p = str;
|
325
315
|
const char *e = p + byte_len;
|
326
316
|
|
327
317
|
while (p < e) {
|
328
318
|
p += mrb_utf8len(p, e);
|
329
|
-
|
319
|
+
len++;
|
330
320
|
}
|
331
|
-
return
|
321
|
+
return len;
|
332
322
|
}
|
333
323
|
|
334
324
|
static mrb_int
|
@@ -583,9 +573,6 @@ str_share(mrb_state *mrb, struct RString *orig, struct RString *s)
|
|
583
573
|
else if (RSTR_FSHARED_P(orig)) {
|
584
574
|
str_init_fshared(orig, s, orig->as.heap.aux.fshared);
|
585
575
|
}
|
586
|
-
else if (mrb_frozen_p(orig) && !RSTR_POOL_P(orig)) {
|
587
|
-
str_init_fshared(orig, s, orig);
|
588
|
-
}
|
589
576
|
else {
|
590
577
|
if (orig->as.heap.aux.capa > orig->as.heap.len) {
|
591
578
|
orig->as.heap.ptr = (char *)mrb_realloc(mrb, orig->as.heap.ptr, len+1);
|
@@ -596,29 +583,6 @@ str_share(mrb_state *mrb, struct RString *orig, struct RString *s)
|
|
596
583
|
}
|
597
584
|
}
|
598
585
|
|
599
|
-
mrb_value
|
600
|
-
mrb_str_pool(mrb_state *mrb, const char *p, mrb_int len, mrb_bool nofree)
|
601
|
-
{
|
602
|
-
struct RString *s = (struct RString *)mrb_malloc(mrb, sizeof(struct RString));
|
603
|
-
|
604
|
-
s->tt = MRB_TT_STRING;
|
605
|
-
s->c = mrb->string_class;
|
606
|
-
s->flags = 0;
|
607
|
-
|
608
|
-
if (RSTR_EMBEDDABLE_P(len)) {
|
609
|
-
str_init_embed(s, p, len);
|
610
|
-
}
|
611
|
-
else if (nofree) {
|
612
|
-
str_init_nofree(s, p, len);
|
613
|
-
}
|
614
|
-
else {
|
615
|
-
str_init_normal(mrb, s, p, len);
|
616
|
-
}
|
617
|
-
RSTR_SET_POOL_FLAG(s);
|
618
|
-
MRB_SET_FROZEN_FLAG(s);
|
619
|
-
return mrb_obj_value(s);
|
620
|
-
}
|
621
|
-
|
622
586
|
mrb_value
|
623
587
|
mrb_str_byte_subseq(mrb_state *mrb, mrb_value str, mrb_int beg, mrb_int len)
|
624
588
|
{
|
@@ -898,7 +862,7 @@ mrb_str_to_cstr(mrb_state *mrb, mrb_value str0)
|
|
898
862
|
MRB_API void
|
899
863
|
mrb_str_concat(mrb_state *mrb, mrb_value self, mrb_value other)
|
900
864
|
{
|
901
|
-
other =
|
865
|
+
other = mrb_obj_as_string(mrb, other);
|
902
866
|
mrb_str_cat_str(mrb, self, other);
|
903
867
|
}
|
904
868
|
|
@@ -1111,29 +1075,11 @@ mrb_str_equal_m(mrb_state *mrb, mrb_value str1)
|
|
1111
1075
|
}
|
1112
1076
|
/* ---------------------------------- */
|
1113
1077
|
|
1114
|
-
MRB_API mrb_value
|
1115
|
-
mrb_str_to_str(mrb_state *mrb, mrb_value str)
|
1116
|
-
{
|
1117
|
-
switch (mrb_type(str)) {
|
1118
|
-
case MRB_TT_STRING:
|
1119
|
-
return str;
|
1120
|
-
case MRB_TT_SYMBOL:
|
1121
|
-
return mrb_sym_str(mrb, mrb_symbol(str));
|
1122
|
-
case MRB_TT_FIXNUM:
|
1123
|
-
return mrb_fixnum_to_str(mrb, str, 10);
|
1124
|
-
case MRB_TT_CLASS:
|
1125
|
-
case MRB_TT_MODULE:
|
1126
|
-
return mrb_mod_to_s(mrb, str);
|
1127
|
-
default:
|
1128
|
-
return mrb_convert_type(mrb, str, MRB_TT_STRING, "String", "to_s");
|
1129
|
-
}
|
1130
|
-
}
|
1131
|
-
|
1132
1078
|
/* obslete: use RSTRING_PTR() */
|
1133
1079
|
MRB_API const char*
|
1134
1080
|
mrb_string_value_ptr(mrb_state *mrb, mrb_value str)
|
1135
1081
|
{
|
1136
|
-
str =
|
1082
|
+
str = mrb_obj_as_string(mrb, str);
|
1137
1083
|
return RSTRING_PTR(str);
|
1138
1084
|
}
|
1139
1085
|
|
@@ -1179,8 +1125,8 @@ str_convert_range(mrb_state *mrb, mrb_value str, mrb_value indx, mrb_value alen,
|
|
1179
1125
|
}
|
1180
1126
|
else {
|
1181
1127
|
switch (mrb_type(indx)) {
|
1182
|
-
case
|
1183
|
-
*beg =
|
1128
|
+
case MRB_TT_INTEGER:
|
1129
|
+
*beg = mrb_integer(indx);
|
1184
1130
|
*len = 1;
|
1185
1131
|
return STR_CHAR_RANGE;
|
1186
1132
|
|
@@ -1195,8 +1141,8 @@ str_convert_range(mrb_state *mrb, mrb_value str, mrb_value indx, mrb_value alen,
|
|
1195
1141
|
|
1196
1142
|
default:
|
1197
1143
|
indx = mrb_to_int(mrb, indx);
|
1198
|
-
if (
|
1199
|
-
*beg =
|
1144
|
+
if (mrb_integer_p(indx)) {
|
1145
|
+
*beg = mrb_integer(indx);
|
1200
1146
|
*len = 1;
|
1201
1147
|
return STR_CHAR_RANGE;
|
1202
1148
|
}
|
@@ -1211,7 +1157,7 @@ range_arg:
|
|
1211
1157
|
break;
|
1212
1158
|
}
|
1213
1159
|
|
1214
|
-
mrb_raise(mrb, E_TYPE_ERROR, "can't convert to
|
1160
|
+
mrb_raise(mrb, E_TYPE_ERROR, "can't convert to Integer");
|
1215
1161
|
}
|
1216
1162
|
}
|
1217
1163
|
return STR_OUT_OF_RANGE;
|
@@ -1255,8 +1201,8 @@ mrb_str_aref(mrb_state *mrb, mrb_value str, mrb_value indx, mrb_value alen)
|
|
1255
1201
|
* str.slice(range) => new_str or nil
|
1256
1202
|
* str.slice(other_str) => new_str or nil
|
1257
1203
|
*
|
1258
|
-
* Element Reference---If passed a single <code>
|
1259
|
-
* of the character at that position. If passed two <code>
|
1204
|
+
* Element Reference---If passed a single <code>Integer</code>, returns the code
|
1205
|
+
* of the character at that position. If passed two <code>Integer</code>
|
1260
1206
|
* objects, returns a substring starting at the offset given by the first, and
|
1261
1207
|
* a length given by the second. If given a range, a substring containing
|
1262
1208
|
* characters at offsets given by the range is returned. In all three cases, if
|
@@ -1314,7 +1260,7 @@ str_replace_partial(mrb_state *mrb, mrb_value src, mrb_int pos, mrb_int end, mrb
|
|
1314
1260
|
}
|
1315
1261
|
|
1316
1262
|
replen = (mrb_nil_p(rep) ? 0 : RSTRING_LEN(rep));
|
1317
|
-
newlen = replen + len - (end - pos);
|
1263
|
+
newlen = replen + (len - (end - pos));
|
1318
1264
|
|
1319
1265
|
if (newlen >= MRB_SSIZE_MAX || newlen < replen /* overflowed */) {
|
1320
1266
|
mrb_raise(mrb, E_RUNTIME_ERROR, "string size too big");
|
@@ -1809,13 +1755,17 @@ mrb_str_hash(mrb_state *mrb, mrb_value str)
|
|
1809
1755
|
struct RString *s = mrb_str_ptr(str);
|
1810
1756
|
mrb_int len = RSTR_LEN(s);
|
1811
1757
|
char *p = RSTR_PTR(s);
|
1812
|
-
|
1758
|
+
uint32_t hash = 0;
|
1813
1759
|
|
1814
|
-
|
1815
|
-
|
1816
|
-
|
1760
|
+
for(int i = 0; i < len; ++i) {
|
1761
|
+
hash += p[i];
|
1762
|
+
hash += (hash << 10);
|
1763
|
+
hash ^= (hash >> 6);
|
1817
1764
|
}
|
1818
|
-
|
1765
|
+
hash += (hash << 3);
|
1766
|
+
hash ^= (hash >> 11);
|
1767
|
+
hash += (hash << 15);
|
1768
|
+
return hash;
|
1819
1769
|
}
|
1820
1770
|
|
1821
1771
|
/* 15.2.10.5.20 */
|
@@ -1962,10 +1912,20 @@ mrb_str_intern(mrb_state *mrb, mrb_value self)
|
|
1962
1912
|
MRB_API mrb_value
|
1963
1913
|
mrb_obj_as_string(mrb_state *mrb, mrb_value obj)
|
1964
1914
|
{
|
1965
|
-
|
1915
|
+
switch (mrb_type(obj)) {
|
1916
|
+
case MRB_TT_STRING:
|
1966
1917
|
return obj;
|
1918
|
+
case MRB_TT_SYMBOL:
|
1919
|
+
return mrb_sym_str(mrb, mrb_symbol(obj));
|
1920
|
+
case MRB_TT_INTEGER:
|
1921
|
+
return mrb_fixnum_to_str(mrb, obj, 10);
|
1922
|
+
case MRB_TT_SCLASS:
|
1923
|
+
case MRB_TT_CLASS:
|
1924
|
+
case MRB_TT_MODULE:
|
1925
|
+
return mrb_mod_to_s(mrb, obj);
|
1926
|
+
default:
|
1927
|
+
return mrb_type_convert(mrb, obj, MRB_TT_STRING, MRB_SYM(to_s));
|
1967
1928
|
}
|
1968
|
-
return mrb_str_to_str(mrb, obj);
|
1969
1929
|
}
|
1970
1930
|
|
1971
1931
|
MRB_API mrb_value
|
@@ -2257,13 +2217,13 @@ mrb_str_split_m(mrb_state *mrb, mrb_value str)
|
|
2257
2217
|
}
|
2258
2218
|
|
2259
2219
|
mrb_value
|
2260
|
-
mrb_str_len_to_inum(mrb_state *mrb, const char *str,
|
2220
|
+
mrb_str_len_to_inum(mrb_state *mrb, const char *str, size_t len, mrb_int base, int badcheck)
|
2261
2221
|
{
|
2262
2222
|
const char *p = str;
|
2263
2223
|
const char *pend = str + len;
|
2264
2224
|
char sign = 1;
|
2265
2225
|
int c;
|
2266
|
-
|
2226
|
+
mrb_int n = 0;
|
2267
2227
|
mrb_int val;
|
2268
2228
|
|
2269
2229
|
#define conv_digit(c) \
|
@@ -2390,19 +2350,17 @@ mrb_str_len_to_inum(mrb_state *mrb, const char *str, mrb_int len, mrb_int base,
|
|
2390
2350
|
if (c < 0 || c >= base) {
|
2391
2351
|
break;
|
2392
2352
|
}
|
2393
|
-
n
|
2394
|
-
|
2395
|
-
|
2396
|
-
|
2397
|
-
|
2398
|
-
|
2399
|
-
}
|
2400
|
-
else
|
2401
|
-
#endif
|
2402
|
-
{
|
2403
|
-
mrb_raisef(mrb, E_RANGE_ERROR, "string (%l) too big for integer", str, pend-str);
|
2353
|
+
if (mrb_int_mul_overflow(n, base, &n)) goto overflow;
|
2354
|
+
if (MRB_INT_MAX - c < n) {
|
2355
|
+
if (sign == 0 && MRB_INT_MAX - n == c - 1) {
|
2356
|
+
n = MRB_INT_MIN;
|
2357
|
+
sign = 1;
|
2358
|
+
break;
|
2404
2359
|
}
|
2360
|
+
overflow:
|
2361
|
+
mrb_raisef(mrb, E_RANGE_ERROR, "string (%l) too big for integer", str, pend-str);
|
2405
2362
|
}
|
2363
|
+
n += c;
|
2406
2364
|
}
|
2407
2365
|
val = (mrb_int)n;
|
2408
2366
|
if (badcheck) {
|
@@ -2412,7 +2370,7 @@ mrb_str_len_to_inum(mrb_state *mrb, const char *str, mrb_int len, mrb_int base,
|
|
2412
2370
|
if (p<pend) goto bad; /* trailing garbage */
|
2413
2371
|
}
|
2414
2372
|
|
2415
|
-
return
|
2373
|
+
return mrb_int_value(mrb, sign ? val : -val);
|
2416
2374
|
nullbyte:
|
2417
2375
|
mrb_raise(mrb, E_ARGUMENT_ERROR, "string contains null byte");
|
2418
2376
|
/* not reached */
|
@@ -2504,7 +2462,7 @@ mrb_str_to_i(mrb_state *mrb, mrb_value self)
|
|
2504
2462
|
return mrb_str_to_inum(mrb, self, base, FALSE);
|
2505
2463
|
}
|
2506
2464
|
|
2507
|
-
#ifndef
|
2465
|
+
#ifndef MRB_NO_FLOAT
|
2508
2466
|
double
|
2509
2467
|
mrb_str_len_to_dbl(mrb_state *mrb, const char *s, size_t len, mrb_bool badcheck)
|
2510
2468
|
{
|
@@ -2526,8 +2484,8 @@ mrb_str_len_to_dbl(mrb_state *mrb, const char *s, size_t len, mrb_bool badcheck)
|
|
2526
2484
|
|
2527
2485
|
if (!badcheck) return 0.0;
|
2528
2486
|
x = mrb_str_len_to_inum(mrb, p, pend-p, 0, badcheck);
|
2529
|
-
if (
|
2530
|
-
d = (double)
|
2487
|
+
if (mrb_integer_p(x))
|
2488
|
+
d = (double)mrb_integer(x);
|
2531
2489
|
else /* if (mrb_float_p(x)) */
|
2532
2490
|
d = mrb_float(x);
|
2533
2491
|
return d;
|
@@ -2902,7 +2860,7 @@ mrb_str_byteslice(mrb_state *mrb, mrb_value str)
|
|
2902
2860
|
}
|
2903
2861
|
}
|
2904
2862
|
else {
|
2905
|
-
beg =
|
2863
|
+
beg = mrb_integer(mrb_to_int(mrb, a1));
|
2906
2864
|
len = 1;
|
2907
2865
|
empty = FALSE;
|
2908
2866
|
}
|
@@ -2965,7 +2923,7 @@ mrb_init_string(mrb_state *mrb)
|
|
2965
2923
|
mrb_define_method(mrb, s, "slice", mrb_str_aref_m, MRB_ARGS_ANY()); /* 15.2.10.5.34 */
|
2966
2924
|
mrb_define_method(mrb, s, "split", mrb_str_split_m, MRB_ARGS_ANY()); /* 15.2.10.5.35 */
|
2967
2925
|
|
2968
|
-
#ifndef
|
2926
|
+
#ifndef MRB_NO_FLOAT
|
2969
2927
|
mrb_define_method(mrb, s, "to_f", mrb_str_to_f, MRB_ARGS_NONE()); /* 15.2.10.5.38 */
|
2970
2928
|
#endif
|
2971
2929
|
mrb_define_method(mrb, s, "to_i", mrb_str_to_i, MRB_ARGS_ANY()); /* 15.2.10.5.39 */
|
@@ -2982,7 +2940,7 @@ mrb_init_string(mrb_state *mrb)
|
|
2982
2940
|
mrb_define_method(mrb, s, "byteslice", mrb_str_byteslice, MRB_ARGS_ARG(1,1));
|
2983
2941
|
}
|
2984
2942
|
|
2985
|
-
#ifndef
|
2943
|
+
#ifndef MRB_NO_FLOAT
|
2986
2944
|
/*
|
2987
2945
|
* Source code for the "strtod" library procedure.
|
2988
2946
|
*
|
@@ -3044,7 +3002,7 @@ mrb_float_read(const char *string, char **endPtr)
|
|
3044
3002
|
int c;
|
3045
3003
|
int exp = 0; /* Exponent read from "EX" field. */
|
3046
3004
|
int fracExp = 0; /* Exponent that derives from the fractional
|
3047
|
-
* part. Under normal
|
3005
|
+
* part. Under normal circumstances, it is
|
3048
3006
|
* the negative of the number of digits in F.
|
3049
3007
|
* However, if I is very long, the last digits
|
3050
3008
|
* of I get dropped (otherwise a long I with a
|