script_core 0.2.7 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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