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.
Files changed (283) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -1
  3. data/Gemfile +2 -2
  4. data/ext/enterprise_script_service/Rakefile +1 -1
  5. data/ext/enterprise_script_service/mruby/.github/workflows/build.yml +117 -74
  6. data/ext/enterprise_script_service/mruby/.github/workflows/codeql-analysis.yml +41 -37
  7. data/ext/enterprise_script_service/mruby/.github/workflows/lint.yml +23 -0
  8. data/ext/enterprise_script_service/mruby/.github/workflows/oss-fuzz.yml +27 -0
  9. data/ext/enterprise_script_service/mruby/.github/workflows/spell-checker.yml +17 -0
  10. data/ext/enterprise_script_service/mruby/.gitlab-ci.yml +3 -3
  11. data/ext/enterprise_script_service/mruby/.markdownlint.yml +16 -0
  12. data/ext/enterprise_script_service/mruby/.travis.yml +2 -2
  13. data/ext/enterprise_script_service/mruby/.yamllint +8 -0
  14. data/ext/enterprise_script_service/mruby/AUTHORS +3 -0
  15. data/ext/enterprise_script_service/mruby/CODEOWNERS +1 -0
  16. data/ext/enterprise_script_service/mruby/CONTRIBUTING.md +6 -13
  17. data/ext/enterprise_script_service/mruby/Doxyfile +4 -4
  18. data/ext/enterprise_script_service/mruby/LICENSE +1 -1
  19. data/ext/enterprise_script_service/mruby/Makefile +1 -1
  20. data/ext/enterprise_script_service/mruby/README.md +4 -14
  21. data/ext/enterprise_script_service/mruby/Rakefile +18 -108
  22. data/ext/enterprise_script_service/mruby/TODO.md +17 -0
  23. data/ext/enterprise_script_service/mruby/appveyor.yml +31 -25
  24. data/ext/enterprise_script_service/mruby/benchmark/bm_ao_render.rb +1 -1
  25. data/ext/enterprise_script_service/mruby/build_config.rb +9 -152
  26. data/ext/enterprise_script_service/mruby/{examples/targets/build_config_ArduinoDue.rb → build_config/ArduinoDue.rb} +2 -19
  27. data/ext/enterprise_script_service/mruby/{examples/targets/build_config_IntelEdison.rb → build_config/IntelEdison.rb} +2 -2
  28. data/ext/enterprise_script_service/mruby/{examples/targets/build_config_IntelGalileo.rb → build_config/IntelGalileo.rb} +1 -18
  29. data/ext/enterprise_script_service/mruby/{examples/targets/build_config_RX630.rb → build_config/RX630.rb} +2 -19
  30. data/ext/enterprise_script_service/mruby/build_config/android_arm64-v8a.rb +11 -0
  31. data/ext/enterprise_script_service/mruby/build_config/android_armeabi.rb +11 -0
  32. 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
  33. data/ext/enterprise_script_service/mruby/build_config/bench.rb +11 -0
  34. data/ext/enterprise_script_service/mruby/build_config/boxing.rb +21 -0
  35. data/ext/enterprise_script_service/mruby/{examples/targets/build_config_chipKITMax32.rb → build_config/chipKITMax32.rb} +2 -19
  36. data/ext/enterprise_script_service/mruby/{travis_config.rb → build_config/ci/gcc-clang.rb} +10 -10
  37. data/ext/enterprise_script_service/mruby/build_config/ci/msvc.rb +20 -0
  38. data/ext/enterprise_script_service/mruby/build_config/clang-asan.rb +11 -0
  39. data/ext/enterprise_script_service/mruby/build_config/cross-32bit.rb +14 -0
  40. data/ext/enterprise_script_service/mruby/build_config/default.rb +80 -0
  41. data/ext/enterprise_script_service/mruby/{examples/targets/build_config_dreamcast_shelf.rb → build_config/dreamcast_shelf.rb} +5 -19
  42. data/ext/enterprise_script_service/mruby/build_config/gameboyadvance.rb +73 -0
  43. data/ext/enterprise_script_service/mruby/build_config/host-cxx.rb +12 -0
  44. data/ext/enterprise_script_service/mruby/build_config/host-debug.rb +20 -0
  45. data/ext/enterprise_script_service/mruby/build_config/host-gprof.rb +14 -0
  46. data/ext/enterprise_script_service/mruby/build_config/host-m32.rb +15 -0
  47. data/ext/enterprise_script_service/mruby/build_config/host-shared.rb +36 -0
  48. data/ext/enterprise_script_service/mruby/build_config/mrbc.rb +11 -0
  49. data/ext/enterprise_script_service/mruby/build_config/no-float.rb +17 -0
  50. data/ext/enterprise_script_service/mruby/doc/guides/compile.md +138 -49
  51. data/ext/enterprise_script_service/mruby/doc/guides/debugger.md +5 -4
  52. data/ext/enterprise_script_service/mruby/doc/guides/gc-arena-howto.md +1 -1
  53. data/ext/enterprise_script_service/mruby/doc/guides/mrbconf.md +49 -22
  54. data/ext/enterprise_script_service/mruby/doc/guides/mrbgems.md +31 -14
  55. data/ext/enterprise_script_service/mruby/doc/guides/symbol.md +83 -0
  56. data/ext/enterprise_script_service/mruby/doc/limitations.md +35 -36
  57. data/ext/enterprise_script_service/mruby/doc/mruby3.md +163 -0
  58. data/ext/enterprise_script_service/mruby/doc/opcode.md +93 -107
  59. data/ext/enterprise_script_service/mruby/examples/mrbgems/c_and_ruby_extension_example/mrblib/example.rb +1 -1
  60. data/ext/enterprise_script_service/mruby/examples/mrbgems/c_and_ruby_extension_example/src/example.c +5 -1
  61. data/ext/enterprise_script_service/mruby/examples/mrbgems/c_extension_example/src/example.c +5 -1
  62. data/ext/enterprise_script_service/mruby/examples/mrbgems/ruby_extension_example/mrblib/example.rb +1 -1
  63. data/ext/enterprise_script_service/mruby/include/mrbconf.h +81 -62
  64. data/ext/enterprise_script_service/mruby/include/mruby.h +137 -96
  65. data/ext/enterprise_script_service/mruby/include/mruby/array.h +23 -6
  66. data/ext/enterprise_script_service/mruby/include/mruby/boxing_nan.h +73 -48
  67. data/ext/enterprise_script_service/mruby/include/mruby/boxing_no.h +8 -8
  68. data/ext/enterprise_script_service/mruby/include/mruby/boxing_word.h +79 -48
  69. data/ext/enterprise_script_service/mruby/include/mruby/class.h +10 -8
  70. data/ext/enterprise_script_service/mruby/include/mruby/common.h +4 -1
  71. data/ext/enterprise_script_service/mruby/include/mruby/compile.h +13 -7
  72. data/ext/enterprise_script_service/mruby/include/mruby/debug.h +2 -2
  73. data/ext/enterprise_script_service/mruby/include/mruby/dump.h +17 -35
  74. data/ext/enterprise_script_service/mruby/include/mruby/endian.h +44 -0
  75. data/ext/enterprise_script_service/mruby/include/mruby/error.h +39 -5
  76. data/ext/enterprise_script_service/mruby/include/mruby/gc.h +1 -0
  77. data/ext/enterprise_script_service/mruby/include/mruby/hash.h +33 -13
  78. data/ext/enterprise_script_service/mruby/include/mruby/irep.h +64 -14
  79. data/ext/enterprise_script_service/mruby/include/mruby/khash.h +6 -14
  80. data/ext/enterprise_script_service/mruby/include/mruby/numeric.h +36 -63
  81. data/ext/enterprise_script_service/mruby/include/mruby/opcode.h +1 -27
  82. data/ext/enterprise_script_service/mruby/include/mruby/ops.h +27 -23
  83. data/ext/enterprise_script_service/mruby/include/mruby/presym.h +40 -0
  84. data/ext/enterprise_script_service/mruby/include/mruby/presym/disable.h +70 -0
  85. data/ext/enterprise_script_service/mruby/include/mruby/presym/enable.h +37 -0
  86. data/ext/enterprise_script_service/mruby/include/mruby/presym/scanning.h +73 -0
  87. data/ext/enterprise_script_service/mruby/include/mruby/proc.h +80 -13
  88. data/ext/enterprise_script_service/mruby/include/mruby/string.h +10 -15
  89. data/ext/enterprise_script_service/mruby/include/mruby/throw.h +14 -3
  90. data/ext/enterprise_script_service/mruby/include/mruby/value.h +29 -19
  91. data/ext/enterprise_script_service/mruby/include/mruby/variable.h +1 -0
  92. data/ext/enterprise_script_service/mruby/include/mruby/version.h +26 -7
  93. data/ext/enterprise_script_service/mruby/lib/mruby/build.rb +198 -44
  94. data/ext/enterprise_script_service/mruby/lib/mruby/build/command.rb +55 -37
  95. data/ext/enterprise_script_service/mruby/lib/mruby/build/load_gems.rb +12 -10
  96. data/ext/enterprise_script_service/mruby/lib/{mruby-core-ext.rb → mruby/core_ext.rb} +10 -3
  97. data/ext/enterprise_script_service/mruby/lib/mruby/gem.rb +75 -32
  98. data/ext/enterprise_script_service/mruby/lib/mruby/lockfile.rb +1 -1
  99. data/ext/enterprise_script_service/mruby/lib/mruby/presym.rb +132 -0
  100. data/ext/enterprise_script_service/mruby/mrbgems/default-no-fpu.gembox +3 -0
  101. data/ext/enterprise_script_service/mruby/mrbgems/default-no-stdio.gembox +4 -0
  102. data/ext/enterprise_script_service/mruby/mrbgems/default.gembox +9 -88
  103. data/ext/enterprise_script_service/mruby/mrbgems/full-core.gembox +1 -4
  104. data/ext/enterprise_script_service/mruby/mrbgems/math.gembox +10 -0
  105. data/ext/enterprise_script_service/mruby/mrbgems/metaprog.gembox +15 -0
  106. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/mrblib/array.rb +1 -1
  107. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/src/array.c +5 -4
  108. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-config/mrbgem.rake +28 -19
  109. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-config/mruby-config +18 -8
  110. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/bintest/mrdb.rb +3 -6
  111. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/bintest/print.rb +10 -10
  112. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apibreak.c +14 -9
  113. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c +3 -2
  114. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c +4 -3
  115. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.h +2 -6
  116. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdbconf.h +4 -4
  117. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/bintest/mirb.rb +23 -5
  118. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/mrbgem.rake +11 -2
  119. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +41 -34
  120. data/ext/enterprise_script_service/mruby/mrbgems/{mruby-compiler → mruby-bin-mrbc}/bintest/mrbc.rb +0 -0
  121. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/mrbgem.rake +3 -4
  122. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/tools/mrbc/mrbc.c +19 -9
  123. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/bintest/mruby.rb +25 -4
  124. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/mrbgem.rake +1 -1
  125. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +22 -6
  126. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-strip/bintest/mruby-strip.rb +1 -1
  127. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-strip/tools/mruby-strip/mruby-strip.c +2 -2
  128. data/ext/enterprise_script_service/mruby/mrbgems/mruby-catch/mrbgem.rake +5 -0
  129. data/ext/enterprise_script_service/mruby/mrbgems/mruby-catch/mrblib/catch.rb +27 -0
  130. data/ext/enterprise_script_service/mruby/mrbgems/mruby-class-ext/src/class.c +2 -1
  131. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/codegen.c +430 -399
  132. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/keywords +5 -0
  133. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/lex.def +49 -44
  134. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/parse.y +559 -217
  135. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/y.tab.c +4774 -4193
  136. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/mrbgem.rake +18 -19
  137. data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/mrblib/complex.rb +1 -1
  138. data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/src/complex.c +8 -7
  139. data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/test/complex.rb +4 -4
  140. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enumerator/mrblib/enumerator.rb +1 -0
  141. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enumerator/test/enumerator.rb +2 -2
  142. data/ext/enterprise_script_service/mruby/mrbgems/mruby-error/mrbgem.rake +2 -2
  143. data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/src/eval.c +17 -25
  144. data/ext/enterprise_script_service/mruby/mrbgems/mruby-fiber/src/fiber.c +18 -13
  145. data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/src/hash-ext.c +30 -2
  146. data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/test/hash.rb +7 -0
  147. data/ext/enterprise_script_service/mruby/mrbgems/mruby-inline-struct/test/inline.c +2 -2
  148. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/README.md +18 -16
  149. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/include/mruby/ext/io.h +2 -2
  150. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/file.rb +9 -4
  151. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/io.rb +2 -2
  152. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file.c +55 -52
  153. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file_test.c +4 -2
  154. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/io.c +99 -87
  155. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/file.rb +2 -0
  156. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/io.rb +2 -3
  157. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/mruby_io_test.c +1 -1
  158. data/ext/enterprise_script_service/mruby/mrbgems/mruby-kernel-ext/src/kernel.c +7 -6
  159. data/ext/enterprise_script_service/mruby/mrbgems/mruby-math/src/math.c +13 -12
  160. data/ext/enterprise_script_service/mruby/mrbgems/mruby-math/test/math.rb +5 -4
  161. data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/src/metaprog.c +43 -58
  162. data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/test/metaprog.rb +4 -4
  163. data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/README.md +4 -3
  164. data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/src/method.c +77 -74
  165. data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/test/method.rb +4 -4
  166. data/ext/enterprise_script_service/mruby/mrbgems/mruby-numeric-ext/src/numeric_ext.c +14 -13
  167. data/ext/enterprise_script_service/mruby/mrbgems/mruby-object-ext/src/object.c +5 -4
  168. data/ext/enterprise_script_service/mruby/mrbgems/mruby-objectspace/src/mruby_objectspace.c +18 -12
  169. data/ext/enterprise_script_service/mruby/mrbgems/mruby-os-memsize/mrbgem.rake +10 -0
  170. data/ext/enterprise_script_service/mruby/mrbgems/mruby-os-memsize/src/memsize.c +231 -0
  171. data/ext/enterprise_script_service/mruby/mrbgems/mruby-os-memsize/test/memsize.rb +63 -0
  172. data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/README.md +15 -18
  173. data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/src/pack.c +38 -88
  174. data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/mrblib/print.rb +1 -30
  175. data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/src/print.c +62 -26
  176. data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/src/proc.c +32 -19
  177. data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/test/proc.c +1 -1
  178. data/ext/enterprise_script_service/mruby/mrbgems/mruby-random/src/random.c +98 -43
  179. data/ext/enterprise_script_service/mruby/mrbgems/mruby-random/test/random.rb +2 -2
  180. data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/mrblib/range.rb +39 -6
  181. data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/src/range.c +20 -40
  182. data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/test/range.rb +27 -3
  183. data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/mrblib/rational.rb +11 -17
  184. data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/src/rational.c +216 -38
  185. data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/test/rational.rb +6 -6
  186. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/README.md +6 -4
  187. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/src/mrb_sleep.c +4 -4
  188. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/README.md +3 -2
  189. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/src/socket.c +47 -45
  190. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/src/sprintf.c +102 -71
  191. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/test/sprintf.rb +4 -2
  192. data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/mrblib/string.rb +23 -1
  193. data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/src/string.c +13 -9
  194. data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/mrblib/struct.rb +1 -1
  195. data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/src/struct.c +18 -25
  196. data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/src/symbol.c +6 -5
  197. data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/test/symbol.rb +1 -1
  198. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/README.md +0 -1
  199. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/driver.c +5 -5
  200. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/mrbgem.rake +16 -44
  201. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/vformat.c +4 -4
  202. data/ext/enterprise_script_service/mruby/mrbgems/mruby-time/src/time.c +27 -27
  203. data/ext/enterprise_script_service/mruby/mrbgems/stdlib-ext.gembox +18 -0
  204. data/ext/enterprise_script_service/mruby/mrbgems/stdlib-io.gembox +12 -0
  205. data/ext/enterprise_script_service/mruby/mrbgems/stdlib.gembox +54 -0
  206. data/ext/enterprise_script_service/mruby/mrblib/10error.rb +4 -0
  207. data/ext/enterprise_script_service/mruby/mrblib/array.rb +17 -9
  208. data/ext/enterprise_script_service/mruby/mrblib/enum.rb +1 -1
  209. data/ext/enterprise_script_service/mruby/mrblib/hash.rb +0 -20
  210. data/ext/enterprise_script_service/mruby/mrblib/init_mrblib.c +0 -11
  211. data/ext/enterprise_script_service/mruby/mrblib/numeric.rb +36 -11
  212. data/ext/enterprise_script_service/mruby/mrblib/range.rb +25 -3
  213. data/ext/enterprise_script_service/mruby/oss-fuzz/mruby_proto_fuzzer.cpp +2 -2
  214. data/ext/enterprise_script_service/mruby/oss-fuzz/proto_to_ruby.h +1 -1
  215. data/ext/enterprise_script_service/mruby/src/array.c +43 -80
  216. data/ext/enterprise_script_service/mruby/src/backtrace.c +16 -17
  217. data/ext/enterprise_script_service/mruby/src/class.c +774 -182
  218. data/ext/enterprise_script_service/mruby/src/codedump.c +223 -198
  219. data/ext/enterprise_script_service/mruby/src/debug.c +6 -6
  220. data/ext/enterprise_script_service/mruby/src/dump.c +466 -141
  221. data/ext/enterprise_script_service/mruby/src/enum.c +1 -1
  222. data/ext/enterprise_script_service/mruby/src/error.c +36 -13
  223. data/ext/enterprise_script_service/mruby/src/etc.c +43 -34
  224. data/ext/enterprise_script_service/mruby/src/fmt_fp.c +5 -6
  225. data/ext/enterprise_script_service/mruby/src/gc.c +73 -71
  226. data/ext/enterprise_script_service/mruby/src/hash.c +1050 -707
  227. data/ext/enterprise_script_service/mruby/src/kernel.c +75 -220
  228. data/ext/enterprise_script_service/mruby/src/load.c +196 -166
  229. data/ext/enterprise_script_service/mruby/src/numeric.c +352 -314
  230. data/ext/enterprise_script_service/mruby/src/object.c +97 -90
  231. data/ext/enterprise_script_service/mruby/src/print.c +4 -3
  232. data/ext/enterprise_script_service/mruby/src/proc.c +48 -56
  233. data/ext/enterprise_script_service/mruby/src/range.c +45 -21
  234. data/ext/enterprise_script_service/mruby/src/state.c +25 -32
  235. data/ext/enterprise_script_service/mruby/src/string.c +59 -101
  236. data/ext/enterprise_script_service/mruby/src/symbol.c +121 -56
  237. data/ext/enterprise_script_service/mruby/src/value_array.h +1 -0
  238. data/ext/enterprise_script_service/mruby/src/variable.c +158 -158
  239. data/ext/enterprise_script_service/mruby/src/vm.c +617 -602
  240. data/ext/enterprise_script_service/mruby/tasks/benchmark.rake +6 -6
  241. data/ext/enterprise_script_service/mruby/tasks/bin.rake +23 -0
  242. data/ext/enterprise_script_service/mruby/tasks/core.rake +12 -0
  243. data/ext/enterprise_script_service/mruby/tasks/doc.rake +50 -38
  244. data/ext/enterprise_script_service/mruby/tasks/gitlab.rake +83 -77
  245. data/ext/enterprise_script_service/mruby/tasks/libmruby.rake +10 -1
  246. data/ext/enterprise_script_service/mruby/tasks/mrbgems.rake +13 -1
  247. data/ext/enterprise_script_service/mruby/tasks/mrblib.rake +40 -0
  248. data/ext/enterprise_script_service/mruby/tasks/presym.rake +44 -0
  249. data/ext/enterprise_script_service/mruby/tasks/test.rake +68 -0
  250. data/ext/enterprise_script_service/mruby/tasks/toolchains/gcc.rake +6 -5
  251. data/ext/enterprise_script_service/mruby/tasks/toolchains/openwrt.rake +10 -14
  252. data/ext/enterprise_script_service/mruby/tasks/toolchains/visualcpp.rake +17 -21
  253. data/ext/enterprise_script_service/mruby/test/bintest.rb +5 -5
  254. data/ext/enterprise_script_service/mruby/test/t/argumenterror.rb +16 -0
  255. data/ext/enterprise_script_service/mruby/test/t/array.rb +7 -3
  256. data/ext/enterprise_script_service/mruby/test/t/bs_literal.rb +1 -1
  257. data/ext/enterprise_script_service/mruby/test/t/float.rb +18 -8
  258. data/ext/enterprise_script_service/mruby/test/t/hash.rb +903 -281
  259. data/ext/enterprise_script_service/mruby/test/t/integer.rb +10 -38
  260. data/ext/enterprise_script_service/mruby/test/t/kernel.rb +1 -1
  261. data/ext/enterprise_script_service/mruby/test/t/literals.rb +50 -0
  262. data/ext/enterprise_script_service/mruby/test/t/module.rb +2 -2
  263. data/ext/enterprise_script_service/mruby/test/t/numeric.rb +1 -1
  264. data/ext/enterprise_script_service/mruby/test/t/range.rb +83 -1
  265. data/ext/enterprise_script_service/mruby/test/t/string.rb +4 -0
  266. data/ext/enterprise_script_service/mruby/test/t/superclass.rb +10 -10
  267. data/ext/enterprise_script_service/mruby/test/t/syntax.rb +24 -0
  268. data/ext/enterprise_script_service/mruby/test/t/vformat.rb +3 -3
  269. data/ext/enterprise_script_service/mruby_config.rb +2 -5
  270. data/ext/enterprise_script_service/mruby_engine.cpp +1 -1
  271. data/lib/script_core/version.rb +1 -1
  272. data/spec/script_core_spec.rb +13 -0
  273. metadata +61 -23
  274. data/ext/enterprise_script_service/mruby/.github/workflows/main.yml +0 -24
  275. data/ext/enterprise_script_service/mruby/TODO +0 -8
  276. data/ext/enterprise_script_service/mruby/appveyor_config.rb +0 -46
  277. data/ext/enterprise_script_service/mruby/benchmark/build_config_boxing.rb +0 -28
  278. data/ext/enterprise_script_service/mruby/examples/targets/build_config_android_arm64-v8a.rb +0 -26
  279. data/ext/enterprise_script_service/mruby/examples/targets/build_config_android_armeabi.rb +0 -26
  280. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/src/kernel.c +0 -30
  281. data/ext/enterprise_script_service/mruby/mrblib/mrblib.rake +0 -18
  282. data/ext/enterprise_script_service/mruby/src/crc.c +0 -39
  283. data/ext/enterprise_script_service/mruby/src/mruby_core.rake +0 -19
@@ -51,6 +51,8 @@
51
51
  assert_equal '', File.extname('foo/.bar')
52
52
  assert_equal '', File.extname('foo.txt/bar')
53
53
  assert_equal '', File.extname('.foo')
54
+ assert_equal '.rb', File.extname('.a.rb')
55
+ assert_equal '.', File.extname('foo.')
54
56
  end
55
57
 
56
58
  assert('File#flock') do
@@ -7,7 +7,7 @@
7
7
  def assert_io_open(meth)
8
8
  assert "assert_io_open" do
9
9
  fd = IO.sysopen($mrbtest_io_rfname)
10
- assert_equal Fixnum, fd.class
10
+ assert_equal Integer, fd.class
11
11
  io1 = IO.__send__(meth, fd)
12
12
  begin
13
13
  assert_equal IO, io1.class
@@ -27,7 +27,6 @@ def assert_io_open(meth)
27
27
 
28
28
  assert_raise(RuntimeError) { IO.__send__(meth, 1023) } # For Windows
29
29
  assert_raise(RuntimeError) { IO.__send__(meth, 1 << 26) }
30
- assert_raise(RuntimeError) { IO.__send__(meth, 1 << 32) } if (1 << 32).kind_of?(Integer)
31
30
  end
32
31
  end
33
32
 
@@ -433,7 +432,7 @@ def io._buf
433
432
  $? = nil
434
433
  io = IO.popen("#{$cmd}echo mruby-io")
435
434
  assert_true io.close_on_exec?
436
- assert_equal Fixnum, io.pid.class
435
+ assert_equal Integer, io.pid.class
437
436
 
438
437
  out = io.read
439
438
  assert_equal out.class, String
@@ -80,7 +80,7 @@ mrb_io_test_io_setup(mrb_state *mrb, mrb_value self)
80
80
  FILE *fp;
81
81
  int i;
82
82
  #if !defined(_WIN32) && !defined(_WIN64)
83
- struct sockaddr_un sun0;
83
+ struct sockaddr_un sun0 = { 0 }; /* Initialize them all because it is environment dependent */
84
84
  #endif
85
85
 
86
86
  mrb_gv_set(mrb, mrb_intern_cstr(mrb, "$mrbtest_io_msg"), mrb_str_new_cstr(mrb, msg));
@@ -3,6 +3,7 @@
3
3
  #include <mruby/array.h>
4
4
  #include <mruby/hash.h>
5
5
  #include <mruby/range.h>
6
+ #include <mruby/presym.h>
6
7
 
7
8
  static mrb_value
8
9
  mrb_f_caller(mrb_state *mrb, mrb_value self)
@@ -57,7 +58,7 @@ mrb_f_caller(mrb_state *mrb, mrb_value self)
57
58
  return mrb_ary_new(mrb);
58
59
  }
59
60
 
60
- return mrb_funcall(mrb, bt, "[]", 2, mrb_fixnum_value(lev), mrb_fixnum_value(n));
61
+ return mrb_funcall_id(mrb, bt, MRB_OPSYM(aref), 2, mrb_fixnum_value(lev), mrb_fixnum_value(n));
61
62
  }
62
63
 
63
64
  /*
@@ -84,7 +85,7 @@ mrb_f_method(mrb_state *mrb, mrb_value self)
84
85
  * call-seq:
85
86
  * Integer(arg,base=0) -> integer
86
87
  *
87
- * Converts <i>arg</i> to a <code>Fixnum</code>.
88
+ * Converts <i>arg</i> to a <code>Integer</code>.
88
89
  * Numeric types are converted directly (with floating point numbers
89
90
  * being truncated). <i>base</i> (0, or between 2 and 36) is a base for
90
91
  * integer string representation. If <i>arg</i> is a <code>String</code>,
@@ -112,7 +113,7 @@ mrb_f_integer(mrb_state *mrb, mrb_value self)
112
113
  return mrb_convert_to_integer(mrb, arg, base);
113
114
  }
114
115
 
115
- #ifndef MRB_WITHOUT_FLOAT
116
+ #ifndef MRB_NO_FLOAT
116
117
  /*
117
118
  * call-seq:
118
119
  * Float(arg) -> float
@@ -151,7 +152,7 @@ mrb_f_string(mrb_state *mrb, mrb_value self)
151
152
  mrb_value arg = mrb_get_arg1(mrb);
152
153
  mrb_value tmp;
153
154
 
154
- tmp = mrb_convert_type(mrb, arg, MRB_TT_STRING, "String", "to_s");
155
+ tmp = mrb_type_convert(mrb, arg, MRB_TT_STRING, MRB_SYM(to_s));
155
156
  return tmp;
156
157
  }
157
158
 
@@ -170,7 +171,7 @@ mrb_f_array(mrb_state *mrb, mrb_value self)
170
171
  mrb_value arg = mrb_get_arg1(mrb);
171
172
  mrb_value tmp;
172
173
 
173
- tmp = mrb_check_convert_type(mrb, arg, MRB_TT_ARRAY, "Array", "to_a");
174
+ tmp = mrb_type_convert_check(mrb, arg, MRB_TT_ARRAY, MRB_SYM(to_a));
174
175
  if (mrb_nil_p(tmp)) {
175
176
  return mrb_ary_new_from_values(mrb, 1, &arg);
176
177
  }
@@ -212,7 +213,7 @@ mrb_mruby_kernel_ext_gem_init(mrb_state *mrb)
212
213
  mrb_define_module_function(mrb, krn, "caller", mrb_f_caller, MRB_ARGS_OPT(2));
213
214
  mrb_define_method(mrb, krn, "__method__", mrb_f_method, MRB_ARGS_NONE());
214
215
  mrb_define_module_function(mrb, krn, "Integer", mrb_f_integer, MRB_ARGS_ARG(1,1));
215
- #ifndef MRB_WITHOUT_FLOAT
216
+ #ifndef MRB_NO_FLOAT
216
217
  mrb_define_module_function(mrb, krn, "Float", mrb_f_float, MRB_ARGS_REQ(1));
217
218
  #endif
218
219
  mrb_define_module_function(mrb, krn, "String", mrb_f_string, MRB_ARGS_REQ(1));
@@ -4,20 +4,21 @@
4
4
  ** See Copyright Notice in mruby.h
5
5
  */
6
6
 
7
- #ifdef MRB_WITHOUT_FLOAT
8
- # error Math conflicts 'MRB_WITHOUT_FLOAT' configuration in your 'build_config.rb'
7
+ #include <mruby.h>
8
+
9
+ #ifdef MRB_NO_FLOAT
10
+ # error Math conflicts with 'MRB_NO_FLOAT' configuration
9
11
  #endif
10
12
 
11
- #include <mruby.h>
12
13
  #include <mruby/array.h>
13
-
14
+ #include <mruby/presym.h>
14
15
  #include <math.h>
15
16
 
16
17
  static void
17
18
  domain_error(mrb_state *mrb, const char *func)
18
19
  {
19
- struct RClass *math = mrb_module_get(mrb, "Math");
20
- struct RClass *domainerror = mrb_class_get_under(mrb, math, "DomainError");
20
+ struct RClass *math = mrb_module_get_id(mrb, MRB_SYM(Math));
21
+ struct RClass *domainerror = mrb_class_get_under_id(mrb, math, MRB_SYM(DomainError));
21
22
  mrb_raisef(mrb, domainerror, "Numerical argument is out of domain - %s", func);
22
23
  }
23
24
 
@@ -629,7 +630,7 @@ math_cbrt(mrb_state *mrb, mrb_value obj)
629
630
  * Math.frexp(numeric) -> [ fraction, exponent ]
630
631
  *
631
632
  * Returns a two-element array containing the normalized fraction (a
632
- * <code>Float</code>) and exponent (a <code>Fixnum</code>) of
633
+ * <code>Float</code>) and exponent (a <code>Integer</code>) of
633
634
  * <i>numeric</i>.
634
635
  *
635
636
  * fraction, exponent = Math.frexp(1234) #=> [0.6025390625, 11]
@@ -730,18 +731,18 @@ mrb_mruby_math_gem_init(mrb_state* mrb)
730
731
  struct RClass *mrb_math;
731
732
  mrb_math = mrb_define_module(mrb, "Math");
732
733
 
733
- mrb_define_class_under(mrb, mrb_math, "DomainError", mrb->eStandardError_class);
734
+ mrb_define_class_under_id(mrb, mrb_math, MRB_SYM(DomainError), mrb->eStandardError_class);
734
735
 
735
736
  #ifdef M_PI
736
- mrb_define_const(mrb, mrb_math, "PI", mrb_float_value(mrb, M_PI));
737
+ mrb_define_const_id(mrb, mrb_math, MRB_SYM(PI), mrb_float_value(mrb, M_PI));
737
738
  #else
738
- mrb_define_const(mrb, mrb_math, "PI", mrb_float_value(mrb, atan(1.0)*4.0));
739
+ mrb_define_const_id(mrb, mrb_math, MRB_SYM(PI), mrb_float_value(mrb, atan(1.0)*4.0));
739
740
  #endif
740
741
 
741
742
  #ifdef M_E
742
- mrb_define_const(mrb, mrb_math, "E", mrb_float_value(mrb, M_E));
743
+ mrb_define_const_id(mrb, mrb_math, MRB_SYM(E), mrb_float_value(mrb, M_E));
743
744
  #else
744
- mrb_define_const(mrb, mrb_math, "E", mrb_float_value(mrb, exp(1.0)));
745
+ mrb_define_const_id(mrb, mrb_math, MRB_SYM(E), mrb_float_value(mrb, exp(1.0)));
745
746
  #endif
746
747
 
747
748
  mrb_define_module_function(mrb, mrb_math, "sin", math_sin, MRB_ARGS_REQ(1));
@@ -209,17 +209,18 @@ def assert_float_and_int(exp_ary, act_ary)
209
209
  assert_float(+Math::PI, Math.atan2(+0.0, -0.0))
210
210
  assert_float(-Math::PI, Math.atan2(-0.0, -0.0))
211
211
 
212
+ assert_float(0, Math.atan2(0, 1))
213
+ assert_float(Math::PI / 4, Math.atan2(1, 1))
214
+ assert_float(Math::PI / 2, Math.atan2(1, 0))
215
+
212
216
  inf = Float::INFINITY
217
+ skip "Math.atan2() return NaN" if Math.atan2(+inf, -inf).nan?
213
218
  expected = 3.0 * Math::PI / 4.0
214
219
  assert_float(+expected, Math.atan2(+inf, -inf))
215
220
  assert_float(-expected, Math.atan2(-inf, -inf))
216
221
  expected = Math::PI / 4.0
217
222
  assert_float(+expected, Math.atan2(+inf, +inf))
218
223
  assert_float(-expected, Math.atan2(-inf, +inf))
219
-
220
- assert_float(0, Math.atan2(0, 1))
221
- assert_float(Math::PI / 4, Math.atan2(1, 1))
222
- assert_float(Math::PI / 2, Math.atan2(1, 0))
223
224
  end
224
225
 
225
226
  assert('Math.ldexp') do
@@ -5,6 +5,7 @@
5
5
  #include "mruby/proc.h"
6
6
  #include "mruby/class.h"
7
7
  #include "mruby/string.h"
8
+ #include "mruby/presym.h"
8
9
 
9
10
  typedef enum {
10
11
  NOEX_PUBLIC = 0x00,
@@ -132,8 +133,8 @@ mrb_obj_ivar_set(mrb_state *mrb, mrb_value self)
132
133
  static mrb_value
133
134
  mrb_local_variables(mrb_state *mrb, mrb_value self)
134
135
  {
135
- struct RProc *proc;
136
- mrb_irep *irep;
136
+ const struct RProc *proc;
137
+ const mrb_irep *irep;
137
138
  mrb_value vars;
138
139
  size_t i;
139
140
 
@@ -148,8 +149,8 @@ mrb_local_variables(mrb_state *mrb, mrb_value self)
148
149
  irep = proc->body.irep;
149
150
  if (irep->lv) {
150
151
  for (i = 0; i + 1 < irep->nlocals; ++i) {
151
- if (irep->lv[i].name) {
152
- mrb_sym sym = irep->lv[i].name;
152
+ if (irep->lv[i]) {
153
+ mrb_sym sym = irep->lv[i];
153
154
  const char *name = mrb_sym_name(mrb, sym);
154
155
  switch (name[0]) {
155
156
  case '*': case '&':
@@ -169,28 +170,38 @@ mrb_local_variables(mrb_state *mrb, mrb_value self)
169
170
  }
170
171
 
171
172
  KHASH_DECLARE(st, mrb_sym, char, FALSE)
173
+ KHASH_DEFINE(st, mrb_sym, char, FALSE, kh_int_hash_func, kh_int_hash_equal)
172
174
 
173
- static void
174
- method_entry_loop(mrb_state *mrb, struct RClass *klass, khash_t(st) *set, khash_t(st) *undef)
175
+ struct mt_set {
176
+ khash_t(st) *set;
177
+ khash_t(st) *undef;
178
+ };
179
+
180
+ static int
181
+ method_entry_i(mrb_state *mrb, mrb_sym mid, mrb_method_t m, void *p)
175
182
  {
176
- khint_t i;
183
+ struct mt_set *s = (struct mt_set*)p;
177
184
 
178
- khash_t(mt) *h = klass->mt;
179
- if (!h || kh_size(h) == 0) return;
180
- for (i=0;i<kh_end(h);i++) {
181
- if (kh_exist(h, i)) {
182
- mrb_method_t m = kh_value(h, i);
183
- if (MRB_METHOD_UNDEF_P(m)) {
184
- if (undef) {
185
- kh_put(st, mrb, undef, kh_key(h, i));
186
- }
187
- }
188
- else if (undef == NULL ||
189
- kh_get(st, mrb, undef, kh_key(h, i)) == kh_end(undef)) {
190
- kh_put(st, mrb, set, kh_key(h, i));
191
- }
185
+ if (MRB_METHOD_UNDEF_P(m)) {
186
+ if (s->undef) {
187
+ kh_put(st, mrb, s->undef, mid);
192
188
  }
193
189
  }
190
+ else if (s->undef == NULL ||
191
+ kh_get(st, mrb, s->undef, mid) == kh_end(s->undef)) {
192
+ kh_put(st, mrb, s->set, mid);
193
+ }
194
+ return 0;
195
+ }
196
+
197
+ static void
198
+ method_entry_loop(mrb_state *mrb, struct RClass *klass, khash_t(st) *set, khash_t(st) *undef)
199
+ {
200
+ struct mt_set s;
201
+
202
+ s.set = set;
203
+ s.undef = undef;
204
+ mrb_mt_foreach(mrb, klass, method_entry_i, (void*)&s);
194
205
  }
195
206
 
196
207
  static mrb_value
@@ -391,21 +402,12 @@ mrb_obj_singleton_methods_m(mrb_state *mrb, mrb_value self)
391
402
  return mrb_obj_singleton_methods(mrb, recur, self);
392
403
  }
393
404
 
405
+ mrb_value mrb_mod_define_method_m(mrb_state *mrb, struct RClass *c);
406
+
394
407
  static mrb_value
395
408
  mod_define_singleton_method(mrb_state *mrb, mrb_value self)
396
409
  {
397
- struct RProc *p;
398
- mrb_method_t m;
399
- mrb_sym mid;
400
- mrb_value blk = mrb_nil_value();
401
-
402
- mrb_get_args(mrb, "n&!", &mid, &blk);
403
- p = (struct RProc*)mrb_obj_alloc(mrb, MRB_TT_PROC, mrb->proc_class);
404
- mrb_proc_copy(p, mrb_proc_ptr(blk));
405
- p->flags |= MRB_PROC_STRICT;
406
- MRB_METHOD_FROM_PROC(m, p);
407
- mrb_define_method_raw(mrb, mrb_class_ptr(mrb_singleton_class(mrb, self)), mid, m);
408
- return mrb_symbol_value(mid);
410
+ return mrb_mod_define_method_m(mrb, mrb_class_ptr(mrb_singleton_class(mrb, self)));
409
411
  }
410
412
 
411
413
  static mrb_bool
@@ -608,28 +610,6 @@ mrb_mod_instance_methods(mrb_state *mrb, mrb_value mod)
608
610
  return mrb_class_instance_method_list(mrb, recur, c, 0);
609
611
  }
610
612
 
611
- static void
612
- remove_method(mrb_state *mrb, mrb_value mod, mrb_sym mid)
613
- {
614
- struct RClass *c = mrb_class_ptr(mod);
615
- khash_t(mt) *h;
616
- khiter_t k;
617
-
618
- MRB_CLASS_ORIGIN(c);
619
- h = c->mt;
620
-
621
- if (h) {
622
- k = kh_get(mt, mrb, h, mid);
623
- if (k != kh_end(h)) {
624
- kh_del(mt, mrb, h, k);
625
- mrb_funcall(mrb, mod, "method_removed", 1, mrb_symbol_value(mid));
626
- return;
627
- }
628
- }
629
-
630
- mrb_name_error(mrb, mid, "method '%n' not defined in %v", mid, mod);
631
- }
632
-
633
613
  /* 15.2.2.4.41 */
634
614
  /*
635
615
  * call-seq:
@@ -643,12 +623,14 @@ static mrb_value
643
623
  mrb_mod_remove_method(mrb_state *mrb, mrb_value mod)
644
624
  {
645
625
  mrb_int argc;
646
- mrb_value *argv;
626
+ const mrb_value *argv;
627
+ struct RClass *c = mrb_class_ptr(mod);
647
628
 
648
629
  mrb_get_args(mrb, "*", &argv, &argc);
649
630
  mrb_check_frozen(mrb, mrb_obj_ptr(mod));
650
631
  while (argc--) {
651
- remove_method(mrb, mod, mrb_obj_to_sym(mrb, *argv));
632
+ mrb_remove_method(mrb, c, mrb_obj_to_sym(mrb, *argv));
633
+ mrb_funcall_id(mrb, mod, MRB_SYM(method_removed), 1, *argv);
652
634
  argv++;
653
635
  }
654
636
  return mod;
@@ -664,7 +646,7 @@ mrb_mod_s_constants(mrb_state *mrb, mrb_value mod)
664
646
  static mrb_value
665
647
  mrb_mod_s_nesting(mrb_state *mrb, mrb_value mod)
666
648
  {
667
- struct RProc *proc;
649
+ const struct RProc *proc;
668
650
  mrb_value ary;
669
651
  struct RClass *c = NULL;
670
652
 
@@ -684,6 +666,9 @@ mrb_mod_s_nesting(mrb_state *mrb, mrb_value mod)
684
666
  return ary;
685
667
  }
686
668
 
669
+ /* implementation of #send method */
670
+ mrb_value mrb_f_send(mrb_state *mrb, mrb_value self);
671
+
687
672
  void
688
673
  mrb_mruby_metaprog_gem_init(mrb_state* mrb)
689
674
  {
@@ -395,15 +395,15 @@ def foo; end
395
395
 
396
396
  assert('alias_method and remove_method') do
397
397
  begin
398
- Fixnum.alias_method :to_s_, :to_s
399
- Fixnum.remove_method :to_s
398
+ Integer.alias_method :to_s_, :to_s
399
+ Integer.remove_method :to_s
400
400
 
401
401
  assert_nothing_raised do
402
402
  # segfaults if mrb_cptr is used
403
403
  1.to_s
404
404
  end
405
405
  ensure
406
- Fixnum.alias_method :to_s, :to_s_
407
- Fixnum.remove_method :to_s_
406
+ Integer.alias_method :to_s, :to_s_
407
+ Integer.remove_method :to_s_
408
408
  end
409
409
  end
@@ -1,7 +1,7 @@
1
1
  mruby-method
2
2
  ===
3
3
 
4
- A implementetion of class **Method** and **UnboundMethod** for mruby
4
+ A implementation of class **Method** and **UnboundMethod** for mruby
5
5
 
6
6
  ```ruby
7
7
  p Enumerable.instance_method(:find_all).source_location
@@ -10,11 +10,12 @@ p Enumerable.instance_method(:find_all).source_location
10
10
 
11
11
  # Note
12
12
 
13
- `source_location` method need this configuration in build_config.rb
13
+ You need to enable debug option in your build configuration to use
14
+ `source_location` method in this gem, for example:
14
15
 
15
16
  ```ruby
16
17
  MRuby::Build.new do |conf|
17
- enable_debug
18
+ conf.enable_debug
18
19
  end
19
20
  ```
20
21
 
@@ -4,6 +4,7 @@
4
4
  #include "mruby/variable.h"
5
5
  #include "mruby/proc.h"
6
6
  #include "mruby/string.h"
7
+ #include "mruby/presym.h"
7
8
 
8
9
  static struct RObject *
9
10
  method_object_alloc(mrb_state *mrb, struct RClass *mclass)
@@ -29,24 +30,24 @@ static mrb_value
29
30
  unbound_method_bind(mrb_state *mrb, mrb_value self)
30
31
  {
31
32
  struct RObject *me;
32
- mrb_value owner = mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_owner"));
33
- mrb_value name = mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_name"));
34
- mrb_value proc = mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_proc"));
35
- mrb_value klass = mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_klass"));
33
+ mrb_value owner = mrb_iv_get(mrb, self, MRB_SYM(_owner));
34
+ mrb_value name = mrb_iv_get(mrb, self, MRB_SYM(_name));
35
+ mrb_value proc = mrb_iv_get(mrb, self, MRB_SYM(_proc));
36
+ mrb_value klass = mrb_iv_get(mrb, self, MRB_SYM(_klass));
36
37
  mrb_value recv = mrb_get_arg1(mrb);
37
38
 
38
39
  bind_check(mrb, recv, owner);
39
- me = method_object_alloc(mrb, mrb_class_get(mrb, "Method"));
40
- mrb_obj_iv_set(mrb, me, mrb_intern_lit(mrb, "_owner"), owner);
41
- mrb_obj_iv_set(mrb, me, mrb_intern_lit(mrb, "_recv"), recv);
42
- mrb_obj_iv_set(mrb, me, mrb_intern_lit(mrb, "_name"), name);
43
- mrb_obj_iv_set(mrb, me, mrb_intern_lit(mrb, "_proc"), proc);
44
- mrb_obj_iv_set(mrb, me, mrb_intern_lit(mrb, "_klass"), klass);
40
+ me = method_object_alloc(mrb, mrb_class_get_id(mrb, MRB_SYM(Method)));
41
+ mrb_obj_iv_set(mrb, me, MRB_SYM(_owner), owner);
42
+ mrb_obj_iv_set(mrb, me, MRB_SYM(_recv), recv);
43
+ mrb_obj_iv_set(mrb, me, MRB_SYM(_name), name);
44
+ mrb_obj_iv_set(mrb, me, MRB_SYM(_proc), proc);
45
+ mrb_obj_iv_set(mrb, me, MRB_SYM(_klass), klass);
45
46
 
46
47
  return mrb_obj_value(me);
47
48
  }
48
49
 
49
- #define IV_GET(value, name) mrb_iv_get(mrb, value, mrb_intern_lit(mrb, name))
50
+ #define IV_GET(value, name) mrb_iv_get(mrb, value, name)
50
51
  static mrb_value
51
52
  method_eql(mrb_state *mrb, mrb_value self)
52
53
  {
@@ -61,22 +62,22 @@ method_eql(mrb_state *mrb, mrb_value self)
61
62
  if (mrb_class(mrb, self) != mrb_class(mrb, other))
62
63
  return mrb_false_value();
63
64
 
64
- klass = mrb_class_ptr(IV_GET(self, "_klass"));
65
- if (klass != mrb_class_ptr(IV_GET(other, "_klass")))
65
+ klass = mrb_class_ptr(IV_GET(self, MRB_SYM(_klass)));
66
+ if (klass != mrb_class_ptr(IV_GET(other, MRB_SYM(_klass))))
66
67
  return mrb_false_value();
67
68
 
68
- owner = mrb_class_ptr(IV_GET(self, "_owner"));
69
- if (owner != mrb_class_ptr(IV_GET(other, "_owner")))
69
+ owner = mrb_class_ptr(IV_GET(self, MRB_SYM(_owner)));
70
+ if (owner != mrb_class_ptr(IV_GET(other, MRB_SYM(_owner))))
70
71
  return mrb_false_value();
71
72
 
72
- receiver = IV_GET(self, "_recv");
73
- if (!mrb_obj_equal(mrb, receiver, IV_GET(other, "_recv")))
73
+ receiver = IV_GET(self, MRB_SYM(_recv));
74
+ if (!mrb_obj_equal(mrb, receiver, IV_GET(other, MRB_SYM(_recv))))
74
75
  return mrb_false_value();
75
76
 
76
- orig_proc = IV_GET(self, "_proc");
77
- other_proc = IV_GET(other, "_proc");
77
+ orig_proc = IV_GET(self, MRB_SYM(_proc));
78
+ other_proc = IV_GET(other, MRB_SYM(_proc));
78
79
  if (mrb_nil_p(orig_proc) && mrb_nil_p(other_proc)) {
79
- if (mrb_symbol(IV_GET(self, "_name")) == mrb_symbol(IV_GET(other, "_name")))
80
+ if (mrb_symbol(IV_GET(self, MRB_SYM(_name))) == mrb_symbol(IV_GET(other, MRB_SYM(_name))))
80
81
  return mrb_true_value();
81
82
  else
82
83
  return mrb_false_value();
@@ -109,7 +110,7 @@ method_eql(mrb_state *mrb, mrb_value self)
109
110
 
110
111
  static mrb_value
111
112
  mcall(mrb_state *mrb, mrb_value recv, mrb_value proc, mrb_value name, struct RClass *owner,
112
- mrb_int argc, mrb_value *argv, mrb_value block)
113
+ mrb_int argc, const mrb_value *argv, mrb_value block)
113
114
  {
114
115
  mrb_value ret;
115
116
  mrb_sym orig_mid = mrb->c->ci->mid;
@@ -118,7 +119,7 @@ mcall(mrb_state *mrb, mrb_value recv, mrb_value proc, mrb_value name, struct RCl
118
119
  if (mrb_nil_p(proc)) {
119
120
  mrb_value missing_argv = mrb_ary_new_from_values(mrb, argc, argv);
120
121
  mrb_ary_unshift(mrb, missing_argv, name);
121
- ret = mrb_funcall_argv(mrb, recv, mrb_intern_lit(mrb, "method_missing"), argc + 1, RARRAY_PTR(missing_argv));
122
+ ret = mrb_funcall_argv(mrb, recv, MRB_SYM(method_missing), argc + 1, RARRAY_PTR(missing_argv));
122
123
  }
123
124
  else if (!mrb_nil_p(block)) {
124
125
  /*
@@ -137,12 +138,13 @@ mcall(mrb_state *mrb, mrb_value recv, mrb_value proc, mrb_value name, struct RCl
137
138
  static mrb_value
138
139
  method_call(mrb_state *mrb, mrb_value self)
139
140
  {
140
- mrb_value proc = mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_proc"));
141
- mrb_value name = mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_name"));
142
- mrb_value recv = mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_recv"));
143
- struct RClass *owner = mrb_class_ptr(mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_owner")));
141
+ mrb_value proc = mrb_iv_get(mrb, self, MRB_SYM(_proc));
142
+ mrb_value name = mrb_iv_get(mrb, self, MRB_SYM(_name));
143
+ mrb_value recv = mrb_iv_get(mrb, self, MRB_SYM(_recv));
144
+ struct RClass *owner = mrb_class_ptr(mrb_iv_get(mrb, self, MRB_SYM(_owner)));
144
145
  mrb_int argc;
145
- mrb_value *argv, block;
146
+ const mrb_value *argv;
147
+ mrb_value block;
146
148
 
147
149
  mrb_get_args(mrb, "*&", &argv, &argc, &block);
148
150
  return mcall(mrb, recv, proc, name, owner, argc, argv, block);
@@ -151,12 +153,13 @@ method_call(mrb_state *mrb, mrb_value self)
151
153
  static mrb_value
152
154
  method_bcall(mrb_state *mrb, mrb_value self)
153
155
  {
154
- mrb_value proc = mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_proc"));
155
- mrb_value name = mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_name"));
156
- mrb_value recv = mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_recv"));
157
- mrb_value owner = mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_owner"));
156
+ mrb_value proc = mrb_iv_get(mrb, self, MRB_SYM(_proc));
157
+ mrb_value name = mrb_iv_get(mrb, self, MRB_SYM(_name));
158
+ mrb_value recv = mrb_iv_get(mrb, self, MRB_SYM(_recv));
159
+ mrb_value owner = mrb_iv_get(mrb, self, MRB_SYM(_owner));
158
160
  mrb_int argc;
159
- mrb_value *argv, block;
161
+ const mrb_value *argv;
162
+ mrb_value block;
160
163
 
161
164
  mrb_get_args(mrb, "o*&", &recv, &argv, &argc, &block);
162
165
  bind_check(mrb, recv, owner);
@@ -167,17 +170,17 @@ static mrb_value
167
170
  method_unbind(mrb_state *mrb, mrb_value self)
168
171
  {
169
172
  struct RObject *ume;
170
- mrb_value owner = mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_owner"));
171
- mrb_value name = mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_name"));
172
- mrb_value proc = mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_proc"));
173
- mrb_value klass = mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_klass"));
173
+ mrb_value owner = mrb_iv_get(mrb, self, MRB_SYM(_owner));
174
+ mrb_value name = mrb_iv_get(mrb, self, MRB_SYM(_name));
175
+ mrb_value proc = mrb_iv_get(mrb, self, MRB_SYM(_proc));
176
+ mrb_value klass = mrb_iv_get(mrb, self, MRB_SYM(_klass));
174
177
 
175
178
  ume = method_object_alloc(mrb, mrb_class_get(mrb, "UnboundMethod"));
176
- mrb_obj_iv_set(mrb, ume, mrb_intern_lit(mrb, "_owner"), owner);
177
- mrb_obj_iv_set(mrb, ume, mrb_intern_lit(mrb, "_recv"), mrb_nil_value());
178
- mrb_obj_iv_set(mrb, ume, mrb_intern_lit(mrb, "_name"), name);
179
- mrb_obj_iv_set(mrb, ume, mrb_intern_lit(mrb, "_proc"), proc);
180
- mrb_obj_iv_set(mrb, ume, mrb_intern_lit(mrb, "_klass"), klass);
179
+ mrb_obj_iv_set(mrb, ume, MRB_SYM(_owner), owner);
180
+ mrb_obj_iv_set(mrb, ume, MRB_SYM(_recv), mrb_nil_value());
181
+ mrb_obj_iv_set(mrb, ume, MRB_SYM(_name), name);
182
+ mrb_obj_iv_set(mrb, ume, MRB_SYM(_proc), proc);
183
+ mrb_obj_iv_set(mrb, ume, MRB_SYM(_klass), klass);
181
184
 
182
185
  return mrb_obj_value(ume);
183
186
  }
@@ -196,10 +199,10 @@ method_search_vm(mrb_state *mrb, struct RClass **cp, mrb_sym mid)
196
199
  static mrb_value
197
200
  method_super_method(mrb_state *mrb, mrb_value self)
198
201
  {
199
- mrb_value recv = mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_recv"));
200
- mrb_value klass = mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_klass"));
201
- mrb_value owner = mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_owner"));
202
- mrb_value name = mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_name"));
202
+ mrb_value recv = mrb_iv_get(mrb, self, MRB_SYM(_recv));
203
+ mrb_value klass = mrb_iv_get(mrb, self, MRB_SYM(_klass));
204
+ mrb_value owner = mrb_iv_get(mrb, self, MRB_SYM(_owner));
205
+ mrb_value name = mrb_iv_get(mrb, self, MRB_SYM(_name));
203
206
  struct RClass *super, *rklass;
204
207
  struct RProc *proc;
205
208
  struct RObject *me;
@@ -225,11 +228,11 @@ method_super_method(mrb_state *mrb, mrb_value self)
225
228
  super = super->c;
226
229
 
227
230
  me = method_object_alloc(mrb, mrb_obj_class(mrb, self));
228
- mrb_obj_iv_set(mrb, me, mrb_intern_lit(mrb, "_owner"), mrb_obj_value(super));
229
- mrb_obj_iv_set(mrb, me, mrb_intern_lit(mrb, "_recv"), recv);
230
- mrb_obj_iv_set(mrb, me, mrb_intern_lit(mrb, "_name"), name);
231
- mrb_obj_iv_set(mrb, me, mrb_intern_lit(mrb, "_proc"), mrb_obj_value(proc));
232
- mrb_obj_iv_set(mrb, me, mrb_intern_lit(mrb, "_klass"), mrb_obj_value(rklass));
231
+ mrb_obj_iv_set(mrb, me, MRB_SYM(_owner), mrb_obj_value(super));
232
+ mrb_obj_iv_set(mrb, me, MRB_SYM(_recv), recv);
233
+ mrb_obj_iv_set(mrb, me, MRB_SYM(_name), name);
234
+ mrb_obj_iv_set(mrb, me, MRB_SYM(_proc), mrb_obj_value(proc));
235
+ mrb_obj_iv_set(mrb, me, MRB_SYM(_klass), mrb_obj_value(rklass));
233
236
 
234
237
  return mrb_obj_value(me);
235
238
  }
@@ -237,7 +240,7 @@ method_super_method(mrb_state *mrb, mrb_value self)
237
240
  static mrb_value
238
241
  method_arity(mrb_state *mrb, mrb_value self)
239
242
  {
240
- mrb_value proc = mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_proc"));
243
+ mrb_value proc = mrb_iv_get(mrb, self, MRB_SYM(_proc));
241
244
  mrb_int arity = mrb_nil_p(proc) ? -1 : mrb_proc_arity(mrb_proc_ptr(proc));
242
245
  return mrb_fixnum_value(arity);
243
246
  }
@@ -245,7 +248,7 @@ method_arity(mrb_state *mrb, mrb_value self)
245
248
  static mrb_value
246
249
  method_source_location(mrb_state *mrb, mrb_value self)
247
250
  {
248
- mrb_value proc = mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_proc"));
251
+ mrb_value proc = mrb_iv_get(mrb, self, MRB_SYM(_proc));
249
252
  struct RProc *rproc;
250
253
  struct RClass *orig;
251
254
  mrb_value ret;
@@ -256,7 +259,7 @@ method_source_location(mrb_state *mrb, mrb_value self)
256
259
  rproc = mrb_proc_ptr(proc);
257
260
  orig = rproc->c;
258
261
  rproc->c = mrb->proc_class;
259
- ret = mrb_funcall(mrb, proc, "source_location", 0);
262
+ ret = mrb_funcall_id(mrb, proc, MRB_SYM(source_location), 0);
260
263
  rproc->c = orig;
261
264
  return ret;
262
265
  }
@@ -264,13 +267,13 @@ method_source_location(mrb_state *mrb, mrb_value self)
264
267
  static mrb_value
265
268
  method_parameters(mrb_state *mrb, mrb_value self)
266
269
  {
267
- mrb_value proc = mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_proc"));
270
+ mrb_value proc = mrb_iv_get(mrb, self, MRB_SYM(_proc));
268
271
  struct RProc *rproc;
269
272
  struct RClass *orig;
270
273
  mrb_value ret;
271
274
 
272
275
  if (mrb_nil_p(proc)) {
273
- mrb_value rest = mrb_symbol_value(mrb_intern_lit(mrb, "rest"));
276
+ mrb_value rest = mrb_symbol_value(MRB_SYM(rest));
274
277
  mrb_value arest = mrb_ary_new_from_values(mrb, 1, &rest);
275
278
  return mrb_ary_new_from_values(mrb, 1, &arest);
276
279
  }
@@ -278,7 +281,7 @@ method_parameters(mrb_state *mrb, mrb_value self)
278
281
  rproc = mrb_proc_ptr(proc);
279
282
  orig = rproc->c;
280
283
  rproc->c = mrb->proc_class;
281
- ret = mrb_funcall(mrb, proc, "parameters", 0);
284
+ ret = mrb_funcall_id(mrb, proc, MRB_SYM(parameters), 0);
282
285
  rproc->c = orig;
283
286
  return ret;
284
287
  }
@@ -286,9 +289,9 @@ method_parameters(mrb_state *mrb, mrb_value self)
286
289
  static mrb_value
287
290
  method_to_s(mrb_state *mrb, mrb_value self)
288
291
  {
289
- mrb_value owner = mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_owner"));
290
- mrb_value klass = mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_klass"));
291
- mrb_value name = mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_name"));
292
+ mrb_value owner = mrb_iv_get(mrb, self, MRB_SYM(_owner));
293
+ mrb_value klass = mrb_iv_get(mrb, self, MRB_SYM(_klass));
294
+ mrb_value name = mrb_iv_get(mrb, self, MRB_SYM(_name));
292
295
  mrb_value str = mrb_str_new_lit(mrb, "#<");
293
296
  struct RClass *rklass;
294
297
 
@@ -322,10 +325,10 @@ mrb_search_method_owner(mrb_state *mrb, struct RClass *c, mrb_value obj, mrb_sym
322
325
  if (unbound) {
323
326
  goto name_error;
324
327
  }
325
- if (!mrb_respond_to(mrb, obj, mrb_intern_lit(mrb, "respond_to_missing?"))) {
328
+ if (!mrb_respond_to(mrb, obj, MRB_SYM_Q(respond_to_missing))) {
326
329
  goto name_error;
327
330
  }
328
- ret = mrb_funcall(mrb, obj, "respond_to_missing?", 2, mrb_symbol_value(name), mrb_true_value());
331
+ ret = mrb_funcall_id(mrb, obj, MRB_SYM_Q(respond_to_missing), 2, mrb_symbol_value(name), mrb_true_value());
329
332
  if (!mrb_test(ret)) {
330
333
  goto name_error;
331
334
  }
@@ -354,11 +357,11 @@ mrb_kernel_method(mrb_state *mrb, mrb_value self)
354
357
  mrb_search_method_owner(mrb, mrb_class(mrb, self), self, name, &owner, &proc, FALSE);
355
358
 
356
359
  me = method_object_alloc(mrb, mrb_class_get(mrb, "Method"));
357
- mrb_obj_iv_set(mrb, me, mrb_intern_lit(mrb, "_owner"), mrb_obj_value(owner));
358
- mrb_obj_iv_set(mrb, me, mrb_intern_lit(mrb, "_recv"), self);
359
- mrb_obj_iv_set(mrb, me, mrb_intern_lit(mrb, "_name"), mrb_symbol_value(name));
360
- mrb_obj_iv_set(mrb, me, mrb_intern_lit(mrb, "_proc"), proc ? mrb_obj_value(proc) : mrb_nil_value());
361
- mrb_obj_iv_set(mrb, me, mrb_intern_lit(mrb, "_klass"), mrb_obj_value(mrb_class(mrb, self)));
360
+ mrb_obj_iv_set(mrb, me, MRB_SYM(_owner), mrb_obj_value(owner));
361
+ mrb_obj_iv_set(mrb, me, MRB_SYM(_recv), self);
362
+ mrb_obj_iv_set(mrb, me, MRB_SYM(_name), mrb_symbol_value(name));
363
+ mrb_obj_iv_set(mrb, me, MRB_SYM(_proc), proc ? mrb_obj_value(proc) : mrb_nil_value());
364
+ mrb_obj_iv_set(mrb, me, MRB_SYM(_klass), mrb_obj_value(mrb_class(mrb, self)));
362
365
 
363
366
  return mrb_obj_value(me);
364
367
  }
@@ -376,11 +379,11 @@ mrb_module_instance_method(mrb_state *mrb, mrb_value self)
376
379
  mrb_search_method_owner(mrb, mrb_class_ptr(self), self, name, &owner, &proc, TRUE);
377
380
 
378
381
  ume = method_object_alloc(mrb, mrb_class_get(mrb, "UnboundMethod"));
379
- mrb_obj_iv_set(mrb, ume, mrb_intern_lit(mrb, "_owner"), mrb_obj_value(owner));
380
- mrb_obj_iv_set(mrb, ume, mrb_intern_lit(mrb, "_recv"), mrb_nil_value());
381
- mrb_obj_iv_set(mrb, ume, mrb_intern_lit(mrb, "_name"), mrb_symbol_value(name));
382
- mrb_obj_iv_set(mrb, ume, mrb_intern_lit(mrb, "_proc"), proc ? mrb_obj_value(proc) : mrb_nil_value());
383
- mrb_obj_iv_set(mrb, ume, mrb_intern_lit(mrb, "_klass"), self);
382
+ mrb_obj_iv_set(mrb, ume, MRB_SYM(_owner), mrb_obj_value(owner));
383
+ mrb_obj_iv_set(mrb, ume, MRB_SYM(_recv), mrb_nil_value());
384
+ mrb_obj_iv_set(mrb, ume, MRB_SYM(_name), mrb_symbol_value(name));
385
+ mrb_obj_iv_set(mrb, ume, MRB_SYM(_proc), proc ? mrb_obj_value(proc) : mrb_nil_value());
386
+ mrb_obj_iv_set(mrb, ume, MRB_SYM(_klass), self);
384
387
 
385
388
  return mrb_obj_value(ume);
386
389
  }
@@ -388,19 +391,19 @@ mrb_module_instance_method(mrb_state *mrb, mrb_value self)
388
391
  static mrb_value
389
392
  method_owner(mrb_state *mrb, mrb_value self)
390
393
  {
391
- return mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_owner"));
394
+ return mrb_iv_get(mrb, self, MRB_SYM(_owner));
392
395
  }
393
396
 
394
397
  static mrb_value
395
398
  method_receiver(mrb_state *mrb, mrb_value self)
396
399
  {
397
- return mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_recv"));
400
+ return mrb_iv_get(mrb, self, MRB_SYM(_recv));
398
401
  }
399
402
 
400
403
  static mrb_value
401
404
  method_name(mrb_state *mrb, mrb_value self)
402
405
  {
403
- return mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_name"));
406
+ return mrb_iv_get(mrb, self, MRB_SYM(_name));
404
407
  }
405
408
 
406
409
  void