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
@@ -13,15 +13,6 @@ This document is collecting these limitations.
13
13
  This document does not contain a complete list of limitations.
14
14
  Please help to improve it by submitting your findings.
15
15
 
16
-
17
- ## `1/2` gives `0.5`
18
-
19
- Since mruby does not have `Bignum`, bigger integers are represented
20
- by `Float` numbers. To enhance interoperability between `Fixnum`
21
- and `Float`, mruby provides `Float#upto` and other iterating
22
- methods for the `Float` class. As a side effect, `1/2` gives `0.5`
23
- not `0`.
24
-
25
16
  ## `Array` passed to `puts`
26
17
 
27
18
  Passing an Array to `puts` results in different output.
@@ -38,7 +29,7 @@ puts [1,2,3]
38
29
  3
39
30
  ```
40
31
 
41
- #### mruby [2.1.2 (2020-08-06)]
32
+ #### mruby [3.0.0 (2021-03-05)]
42
33
 
43
34
  ```
44
35
  [1, 2, 3]
@@ -61,9 +52,17 @@ end
61
52
 
62
53
  `ZeroDivisionError` is raised.
63
54
 
64
- #### mruby [2.1.2 (2020-08-06)]
55
+ #### mruby [3.0.0 (2021-03-05)]
65
56
 
66
- No exception is raised.
57
+ No exception is raised. Instead you have to do:
58
+
59
+ ```ruby
60
+ begin
61
+ 1 / 0
62
+ rescue => e
63
+ raise e
64
+ end
65
+ ```
67
66
 
68
67
  ## Fiber execution can't cross C function boundary
69
68
 
@@ -89,7 +88,7 @@ p Liste.new "foobar"
89
88
 
90
89
  ` [] `
91
90
 
92
- #### mruby [2.1.2 (2020-08-06)]
91
+ #### mruby [3.0.0 (2021-03-05)]
93
92
 
94
93
  `ArgumentError` is raised.
95
94
 
@@ -119,7 +118,7 @@ false
119
118
  true
120
119
  ```
121
120
 
122
- #### mruby [2.1.2 (2020-08-06)]
121
+ #### mruby [3.0.0 (2021-03-05)]
123
122
 
124
123
  ```
125
124
  true
@@ -156,7 +155,7 @@ p 'ok'
156
155
  ok
157
156
  ```
158
157
 
159
- #### mruby [2.1.2 (2020-08-06)]
158
+ #### mruby [3.0.0 (2021-03-05)]
160
159
 
161
160
  ```
162
161
  test.rb:8: undefined method 'test_func' (NoMethodError)
@@ -178,7 +177,7 @@ defined?(Foo)
178
177
  nil
179
178
  ```
180
179
 
181
- #### mruby [2.1.2 (2020-08-06)]
180
+ #### mruby [3.0.0 (2021-03-05)]
182
181
 
183
182
  `NameError` is raised.
184
183
 
@@ -195,7 +194,7 @@ alias $a $__a__
195
194
 
196
195
  ` nil `
197
196
 
198
- #### mruby [2.1.2 (2020-08-06)]
197
+ #### mruby [3.0.0 (2021-03-05)]
199
198
 
200
199
  Syntax error
201
200
 
@@ -217,7 +216,7 @@ end
217
216
  `ArgumentError` is raised.
218
217
  The re-defined `+` operator does not accept any arguments.
219
218
 
220
- #### mruby [2.1.2 (2020-08-06)]
219
+ #### mruby [3.0.0 (2021-03-05)]
221
220
 
222
221
  ` 'ab' `
223
222
  Behavior of the operator wasn't changed.
@@ -233,7 +232,7 @@ $ ruby -e 'puts Proc.new {}.binding'
233
232
  #<Binding:0x00000e9deabb9950>
234
233
  ```
235
234
 
236
- #### mruby [2.1.2 (2020-08-06)]
235
+ #### mruby [3.0.0 (2021-03-05)]
237
236
 
238
237
  ```
239
238
  $ ./bin/mruby -e 'puts Proc.new {}.binding'
@@ -245,8 +244,7 @@ trace (most recent call last):
245
244
  ## Keyword arguments
246
245
 
247
246
  mruby keyword arguments behave slightly different from CRuby 2.5
248
- to make the behavior simpler and less confusing. Maybe in the
249
- future, the simpler behavior will be adopted to CRuby as well.
247
+ to make the behavior simpler and less confusing.
250
248
 
251
249
  #### Ruby [ruby 2.5.1p57 (2018-03-29 revision 63029)]
252
250
 
@@ -255,7 +253,7 @@ $ ruby -e 'def m(*r,**k) p [r,k] end; m("a"=>1,:b=>2)'
255
253
  [[{"a"=>1}], {:b=>2}]
256
254
  ```
257
255
 
258
- #### mruby [mruby 2.1.2]
256
+ #### mruby [3.0.0 (2021-03-05)]
259
257
 
260
258
  ```
261
259
  $ ./bin/mruby -e 'def m(*r,**k) p [r,k] end; m("a"=>1,:b=>2)'
@@ -264,12 +262,27 @@ trace (most recent call last):
264
262
  -e:1: keyword argument hash with non symbol keys (ArgumentError)
265
263
  ```
266
264
 
265
+ ## `nil?` redefinition in conditional expressions
266
+
267
+ Redefinition of `nil?` is ignored in conditional expressions.
268
+
269
+ ```ruby
270
+ a = "a"
271
+ def a.nil?
272
+ true
273
+ end
274
+ puts(a.nil? ? "truthy" : "falsy")
275
+ ```
276
+
277
+ Ruby outputs `falsy`. mruby outputs `truthy`.
278
+
267
279
  ## Argument Destructuring
268
280
 
269
281
  ```ruby
270
282
  def m(a,(b,c),d); p [a,b,c,d]; end
271
283
  m(1,[2,3],4) # => [1,2,3,4]
272
284
  ```
285
+
273
286
  Destructured arguments (`b` and `c` in above example) cannot be accessed
274
287
  from the default expression of optional arguments and keyword arguments,
275
288
  since actual assignment is done after the evaluation of those default
@@ -283,17 +296,3 @@ f(1,[2,3])
283
296
  ```
284
297
 
285
298
  CRuby gives `[1,2,3,nil]`. mruby raises `NoMethodError` for `b`.
286
-
287
- ## `nil?` redefinition in conditional expressions
288
-
289
- Redefinition of `nil?` is ignored in conditional expressions.
290
-
291
- ```ruby
292
- a = "a"
293
- def a.nil?
294
- true
295
- end
296
- puts(a.nil? ? "truthy" : "falsy")
297
- ```
298
-
299
- Ruby outputs `falsy`. mruby outputs `truthy`.
@@ -0,0 +1,163 @@
1
+ User visible changes in `mruby3`
2
+ ===
3
+
4
+ # Build System
5
+
6
+ ## `build_config` directory
7
+
8
+ Typical build configuration files are located in `build_config`
9
+ directory. For examples:
10
+
11
+ * `default`: the default configuration
12
+ * `host-gprof`: compiles with `gprof` for performance tuning
13
+ * `host-m32`: compiles in gcc 32bit mode on 64bit platforms
14
+ * `boxing`: compiles all three boxing options
15
+ * `clang-asan`: compiles with `clang`'s Address Sanitizer
16
+
17
+ You can specify the build configuration file with the
18
+ `MRUBY_CONFIG` environment variable (or `CONFIG` in short).
19
+ If the value specified by `MRUBY_CONFIG` is not the path to
20
+ the configuration file, `build_config/${MRUBY_CONFIG}.rb` is
21
+ used. So you can specify it as `rake MRUBY_CONFIG=boxing`,
22
+ for example.
23
+
24
+ # Build Configuration Contribution
25
+
26
+ When you write a new build configuration description, please
27
+ contribute. We welcome your contribution as a GitHub
28
+ pull-request.
29
+
30
+ # Language Changes
31
+
32
+ ## New Syntax
33
+
34
+ We have ported some new syntax from CRuby.
35
+
36
+ * Single line pattern matching (`12 => x`);
37
+ mruby matches only with local variables at the moment
38
+ * Numbered block parameter (`x.map{_1 * 2}`)
39
+ * End-less `def` (`def double(x) = x*2`)
40
+
41
+ # Configuration Options Changed
42
+
43
+ ## Renamed for consistency
44
+
45
+ Some configuration macro names are changed for consistency (use `MRB_USE_XXX`
46
+ or `MRB_NO_XXX`).
47
+
48
+ | mruby2 | mruby3 |
49
+ |--------------------------------|---------------------------|
50
+ | `MRB_ENABLE_ALL_SYMBOLS` | `MRB_USE_ALL_SYMBOLS` |
51
+ | `MRB_ENABLE_CXX_ABI` | `MRB_USE_CXX_ABI` |
52
+ | `MRB_ENABLE_CXX_EXCEPTION` | `MRB_USE_CXX_EXCEPTION` |
53
+ | `MRB_ENABLE_DEBUG_HOOK` | `MRB_USE_DEBUG_HOOK` |
54
+ | `MRB_DISABLE_DIRECT_THREADING` | `MRB_NO_DIRECT_THREADING` |
55
+ | `MRB_DISABLE_STDIO` | `MRB_NO_STDIO` |
56
+ | `MRB_METHOD_T_STRUCT` | `MRB_USE_METHOD_T_STRUCT` |
57
+ | `MRB_USE_FLOAT` | `MRB_USE_FLOAT32` |
58
+ | `MRB_WITHOUT_FLOAT` | `MRB_NO_FLOAT` |
59
+ | `ENABLE_LINENOISE` | `MRB_USE_LINENOISE` |
60
+ | `ENABLE_READLINE` | `MRB_USE_READLINE` |
61
+ | `DISABLE_MIRB_UNDERSCORE` | `MRB_NO_MIRB_UNDERSCORE` |
62
+
63
+ * `MRB_USE_FLOAT32` is changed from `MRB_USE_FLOAT` to make sure `float` here
64
+ means using single precision float, and not the opposite of `MRB_NO_FLOAT`.
65
+ * `MRB_USE_METHOD_T_STRUCT` uses `struct` version of `mrb_method_t`. More
66
+ portable but consumes more memory. Turned on by default on 32bit platforms.
67
+ * `MRB_` prefix is added to those without.
68
+
69
+ ## `MRB_NO_BOXING`
70
+
71
+ Uses `struct` to represent `mrb_value`. Consumes more memory
72
+ but easier to investigate the internal and to debug. It used
73
+ to be default `mrb_value` representation. Now the default is
74
+ `MRB_WORD_BOXING`.
75
+
76
+ ## `MRB_WORD_BOXING`
77
+
78
+ Pack `mrb_value` in an `intptr_t` integer. Consumes less
79
+ memory compared to `MRB_NO_BOXING` especially on 32 bit
80
+ platforms. `Fixnum` size is 31 bits so some integer values
81
+ does not fit in `Fixnum` integers.
82
+
83
+ ## `MRB_NAN_BOXING`
84
+
85
+ Pack `mrb_value` in a floating pointer number. Nothing
86
+ changed from previous versions.
87
+
88
+ ## `MRB_USE_MALLOC_TRIM`
89
+
90
+ Call `malloc_trim(0)` from mrb_full_gc() if this macro is defined.
91
+ If you are using glibc malloc, this macro could reduce memory consumption.
92
+
93
+ # Command Line Program
94
+
95
+ ## `bin/mruby` (by mrbgems/mruby-bin-mruby)
96
+
97
+ The mruby3 now automatically detects `*.mrb` files without the `-b`
98
+ switch. Therefore, it can be mixed with the `*.rb` file in combination
99
+ with the `-r` switch and specified at the same time.
100
+ Here's an example that works fine:
101
+
102
+ ```console
103
+ $ bin/mruby app.mrb
104
+ $ bin/mruby -r lib1.mrb -r lib2.rb app.rb
105
+ $ bin/mruby -r lib1.rb -r lib2.rb < app.mrb
106
+ ```
107
+
108
+ # Internal Changes
109
+
110
+ ## New Instructions
111
+
112
+ `mruby3` introduces a few new instructions.
113
+
114
+ Instructions that access pool[i]/syms[i] where i>255.
115
+
116
+ * `OP_LOADL16`
117
+ * `OP_STRING16`
118
+ * `OP_LOADSYM16`
119
+
120
+ Instructions that load a 32 bit integer.
121
+
122
+ * `OP_LOADI32`
123
+
124
+ Instruction that unwinds jump table for rescue/ensure.
125
+
126
+ * `OP_JMPUW`
127
+
128
+ Renamed from `OP_RAISE`
129
+
130
+ * `OP_RAISEIF`
131
+
132
+ Instruction that is reserved for the future keyword argument support.
133
+
134
+ * OP_SENDVK
135
+
136
+ ## Removed Instructions
137
+
138
+ Instructions for old exception handling
139
+
140
+ * `OP_ONERR`
141
+ * `OP_POPERR`
142
+ * `OP_EPUSH`
143
+ * `OP_EPOP`
144
+
145
+ No more operand extension
146
+
147
+ * `OP_EXT1`
148
+ * `OP_EXT2`
149
+ * `OP_EXT3`
150
+
151
+ ## Changed Instructions
152
+
153
+ Jump addresses used to be specified by absolute offset from the start of `iseq`. Now they are relative offset from the address of the next instruction.
154
+
155
+ ## `Random` now use `xoshiro128++`.
156
+
157
+ For better and faster random number generation.
158
+
159
+ ## Preallocated Symbol
160
+
161
+ Preallocated symbols are interned at compile-time. They can be accessed via symbols macros (e.g. `MRB_SYM()`).
162
+
163
+ See [Symbols](https://github.com/mruby/mruby/blob/master/doc/guides/symbol.md).
@@ -20,121 +20,107 @@ sign) of operands.
20
20
  * sS: signed 16bit
21
21
  * W: 24bit
22
22
 
23
- First two byte operands may be extended to 16bit. When those byte
24
- operands are bigger than 256, the instruction will be prefixed by
25
- `OP_EXT1` (means 1st operand is 16bit) or `OP_EXT2` (means 2nd operand
26
- is 16bit) or `OP_EXT3` (means 1st and 2nd operands are 16bit).
27
-
28
- For instructions marked by `'`, `OP_EXT1` can be prefixed. For those
29
- with `"`, either `OP_EXT1` or `OP_EXT2` or `OP_EXT2` can be prefixed.
30
-
31
23
  ## table.1 Instruction Table
32
24
 
33
25
  | Instruction Name | Operand type | Semantics |
34
26
  |------------------|--------------|--------------------------------------------------------|
35
27
  | OP_NOP | - | no operation |
36
- | OP_MOVE" | BB | R(a) = R(b) |
37
- | OP_LOADL" | BB | R(a) = Pool(b) |
38
- | OP_LOADI" | BB | R(a) = mrb_int(b) |
39
- | OP_LOADINEG" | BB | R(a) = mrb_int(-b) |
40
- | OP_LOADI__1' | B | R(a) = mrb_int(-1) |
41
- | OP_LOADI_0' | B | R(a) = mrb_int(0) |
42
- | OP_LOADI_1' | B | R(a) = mrb_int(1) |
43
- | OP_LOADI_2' | B | R(a) = mrb_int(2) |
44
- | OP_LOADI_3' | B | R(a) = mrb_int(3) |
45
- | OP_LOADI_4' | B | R(a) = mrb_int(4) |
46
- | OP_LOADI_5' | B | R(a) = mrb_int(5) |
47
- | OP_LOADI_6' | B | R(a) = mrb_int(6) |
48
- | OP_LOADI_7' | B | R(a) = mrb_int(7) |
49
- | OP_LOADI16' | BsS | R(a) = mrb_int(b) |
50
- | OP_LOADSYM" | BB | R(a) = Syms(b) |
51
- | OP_LOADNIL' | B | R(a) = nil |
52
- | OP_LOADSELF' | B | R(a) = self |
53
- | OP_LOADT' | B | R(a) = true |
54
- | OP_LOADF' | B | R(a) = false |
55
- | OP_GETGV" | BB | R(a) = getglobal(Syms(b)) |
56
- | OP_SETGV" | BB | setglobal(Syms(b), R(a)) |
57
- | OP_GETSV" | BB | R(a) = Special[Syms(b)] |
58
- | OP_SETSV" | BB | Special[Syms(b)] = R(a) |
59
- | OP_GETIV" | BB | R(a) = ivget(Syms(b)) |
60
- | OP_SETIV" | BB | ivset(Syms(b),R(a)) |
61
- | OP_GETCV" | BB | R(a) = cvget(Syms(b)) |
62
- | OP_SETCV" | BB | cvset(Syms(b),R(a)) |
63
- | OP_GETCONST" | BB | R(a) = constget(Syms(b)) |
64
- | OP_SETCONST" | BB | constset(Syms(b),R(a)) |
65
- | OP_GETMCNST" | BB | R(a) = R(a)::Syms(b) |
66
- | OP_SETMCNST" | BB | R(a+1)::Syms(b) = R(a) |
67
- | OP_GETUPVAR" | BBB | R(a) = uvget(b,c) |
68
- | OP_SETUPVAR" | BBB | uvset(b,c,R(a)) |
28
+ | OP_MOVE | BB | R(a) = R(b) |
29
+ | OP_LOADL | BB | R(a) = Pool(b) |
30
+ | OP_LOADI | BB | R(a) = mrb_int(b) |
31
+ | OP_LOADINEG | BB | R(a) = mrb_int(-b) |
32
+ | OP_LOADI__1 | B | R(a) = mrb_int(-1) |
33
+ | OP_LOADI_0 | B | R(a) = mrb_int(0) |
34
+ | OP_LOADI_1 | B | R(a) = mrb_int(1) |
35
+ | OP_LOADI_2 | B | R(a) = mrb_int(2) |
36
+ | OP_LOADI_3 | B | R(a) = mrb_int(3) |
37
+ | OP_LOADI_4 | B | R(a) = mrb_int(4) |
38
+ | OP_LOADI_5 | B | R(a) = mrb_int(5) |
39
+ | OP_LOADI_6 | B | R(a) = mrb_int(6) |
40
+ | OP_LOADI_7 | B | R(a) = mrb_int(7) |
41
+ | OP_LOADI16 | BsS | R(a) = mrb_int(b) |
42
+ | OP_LOADSYM | BB | R(a) = Syms(b) |
43
+ | OP_LOADNIL | B | R(a) = nil |
44
+ | OP_LOADSELF | B | R(a) = self |
45
+ | OP_LOADT | B | R(a) = true |
46
+ | OP_LOADF | B | R(a) = false |
47
+ | OP_GETGV | BB | R(a) = getglobal(Syms(b)) |
48
+ | OP_SETGV | BB | setglobal(Syms(b), R(a)) |
49
+ | OP_GETSV | BB | R(a) = Special[Syms(b)] |
50
+ | OP_SETSV | BB | Special[Syms(b)] = R(a) |
51
+ | OP_GETIV | BB | R(a) = ivget(Syms(b)) |
52
+ | OP_SETIV | BB | ivset(Syms(b),R(a)) |
53
+ | OP_GETCV | BB | R(a) = cvget(Syms(b)) |
54
+ | OP_SETCV | BB | cvset(Syms(b),R(a)) |
55
+ | OP_GETCONST | BB | R(a) = constget(Syms(b)) |
56
+ | OP_SETCONST | BB | constset(Syms(b),R(a)) |
57
+ | OP_GETMCNST | BB | R(a) = R(a)::Syms(b) |
58
+ | OP_SETMCNST | BB | R(a+1)::Syms(b) = R(a) |
59
+ | OP_GETUPVAR | BBB | R(a) = uvget(b,c) |
60
+ | OP_SETUPVAR | BBB | uvset(b,c,R(a)) |
69
61
  | OP_JMP | S | pc=a |
70
- | OP_JMPIF' | BS | if R(a) pc=b |
71
- | OP_JMPNOT' | BS | if !R(a) pc=b |
72
- | OP_JMPNIL' | BS | if R(a)==nil pc=b |
73
- | OP_ONERR | S | rescue_push(a) |
74
- | OP_EXCEPT' | B | R(a) = exc |
75
- | OP_RESCUE" | BB | R(b) = R(a).isa?(R(b)) |
76
- | OP_POPERR' | B | a.times{rescue_pop()} |
77
- | OP_RAISE' | B | raise(R(a)) |
78
- | OP_EPUSH' | B | ensure_push(SEQ[a]) |
79
- | OP_EPOP' | B | A.times{ensure_pop().call} |
80
- | OP_SENDV" | BB | R(a) = call(R(a),Syms(b),*R(a+1)) |
81
- | OP_SENDVB" | BB | R(a) = call(R(a),Syms(b),*R(a+1),&R(a+2)) |
82
- | OP_SEND" | BBB | R(a) = call(R(a),Syms(b),R(a+1),...,R(a+c)) |
83
- | OP_SENDB" | BBB | R(a) = call(R(a),Syms(b),R(a+1),...,R(a+c),&R(a+c+1)) |
62
+ | OP_JMPIF | BS | if R(a) pc=b |
63
+ | OP_JMPNOT | BS | if !R(a) pc=b |
64
+ | OP_JMPNIL | BS | if R(a)==nil pc=b |
65
+ | OP_JMPUW | S | unwind_and_jump_to(a) |
66
+ | OP_EXCEPT | B | R(a) = exc |
67
+ | OP_RESCUE | BB | R(b) = R(a).isa?(R(b)) |
68
+ | OP_RAISEIF | B | raise(R(a)) if R(a) |
69
+ | OP_SENDV | BB | R(a) = call(R(a),Syms(b),*R(a+1)) |
70
+ | OP_SENDVB | BB | R(a) = call(R(a),Syms(b),*R(a+1),&R(a+2)) |
71
+ | OP_SEND | BBB | R(a) = call(R(a),Syms(b),R(a+1),...,R(a+c)) |
72
+ | OP_SENDB | BBB | R(a) = call(R(a),Syms(b),R(a+1),...,R(a+c),&R(a+c+1)) |
84
73
  | OP_CALL | - | R(0) = self.call(frame.argc, frame.argv) |
85
- | OP_SUPER" | BB | R(a) = super(R(a+1),... ,R(a+b+1)) |
86
- | OP_ARGARY' | BS | R(a) = argument array (16=5:1:5:1:4) |
74
+ | OP_SUPER | BB | R(a) = super(R(a+1),... ,R(a+b+1)) |
75
+ | OP_ARGARY | BS | R(a) = argument array (16=5:1:5:1:4) |
87
76
  | OP_ENTER | W | arg setup according to flags (23=5:5:1:5:5:1:1) |
88
- | OP_KEY_P" | BB | R(a) = kdict.key?(Syms(b)) |
77
+ | OP_KEY_P | BB | R(a) = kdict.key?(Syms(b)) |
89
78
  | OP_KEYEND | - | raise unless kdict.empty? |
90
- | OP_KARG" | BB | R(a) = kdict[Syms(b)]; kdict.delete(Syms(b)) |
91
- | OP_RETURN' | B | return R(a) (normal) |
92
- | OP_RETURN_BLK' | B | return R(a) (in-block return) |
93
- | OP_BREAK' | B | break R(a) |
94
- | OP_BLKPUSH' | BS | R(a) = block (16=5:1:5:1:4) |
95
- | OP_ADD' | B | R(a) = R(a)+R(a+1) |
96
- | OP_ADDI" | BB | R(a) = R(a)+mrb_int(b) |
97
- | OP_SUB' | B | R(a) = R(a)-R(a+1) |
98
- | OP_SUBI" | BB | R(a) = R(a)-mrb_int(b) |
99
- | OP_MUL' | B | R(a) = R(a)*R(a+1) |
100
- | OP_DIV' | B | R(a) = R(a)/R(a+1) |
101
- | OP_EQ' | B | R(a) = R(a)==R(a+1) |
102
- | OP_LT' | B | R(a) = R(a)<R(a+1) |
103
- | OP_LE' | B | R(a) = R(a)<=R(a+1) |
104
- | OP_GT' | B | R(a) = R(a)>R(a+1) |
105
- | OP_GE' | B | R(a) = R(a)>=R(a+1) |
106
- | OP_ARRAY" | BB | R(a) = ary_new(R(a),R(a+1)..R(a+b)) |
107
- | OP_ARRAY2" | BBB | R(a) = ary_new(R(b),R(b+1)..R(b+c)) |
108
- | OP_ARYCAT' | B | ary_cat(R(a),R(a+1)) |
109
- | OP_ARYPUSH' | B | ary_push(R(a),R(a+1)) |
110
- | OP_ARYDUP' | B | R(a) = ary_dup(R(a)) |
111
- | OP_AREF" | BBB | R(a) = R(b)[c] |
112
- | OP_ASET" | BBB | R(a)[c] = R(b) |
113
- | OP_APOST" | BBB | *R(a),R(a+1)..R(a+c) = R(a)[b..] |
114
- | OP_INTERN' | B | R(a) = intern(R(a)) |
115
- | OP_STRING" | BB | R(a) = str_dup(Lit(b)) |
116
- | OP_STRCAT' | B | str_cat(R(a),R(a+1)) |
117
- | OP_HASH" | BB | R(a) = hash_new(R(a),R(a+1)..R(a+b)) |
118
- | OP_HASHADD" | BB | R(a) = hash_push(R(a),R(a+1)..R(a+b)) |
119
- | OP_HASHCAT' | B | R(a) = hash_cat(R(a),R(a+1)) |
120
- | OP_LAMBDA" | BB | R(a) = lambda(SEQ[b],OP_L_LAMBDA) |
121
- | OP_BLOCK" | BB | R(a) = lambda(SEQ[b],OP_L_BLOCK) |
122
- | OP_METHOD" | BB | R(a) = lambda(SEQ[b],OP_L_METHOD) |
123
- | OP_RANGE_INC' | B | R(a) = range_new(R(a),R(a+1),FALSE) |
124
- | OP_RANGE_EXC' | B | R(a) = range_new(R(a),R(a+1),TRUE) |
125
- | OP_OCLASS' | B | R(a) = ::Object |
126
- | OP_CLASS" | BB | R(a) = newclass(R(a),Syms(b),R(a+1)) |
127
- | OP_MODULE" | BB | R(a) = newmodule(R(a),Syms(b)) |
128
- | OP_EXEC" | BB | R(a) = blockexec(R(a),SEQ[b]) |
129
- | OP_DEF" | BB | R(a).newmethod(Syms(b),R(a+1)) |
130
- | OP_ALIAS" | BB | alias_method(target_class,Syms(a),Syms(b)) |
131
- | OP_UNDEF' | B | undef_method(target_class,Syms(a)) |
132
- | OP_SCLASS' | B | R(a) = R(a).singleton_class |
133
- | OP_TCLASS' | B | R(a) = target_class |
134
- | OP_DEBUG" | BBB | print a,b,c |
135
- | OP_ERR' | B | raise(LocalJumpError, Lit(a)) |
136
- | OP_EXT1 | - | make 1st operand 16bit |
137
- | OP_EXT2 | - | make 2nd operand 16bit |
138
- | OP_EXT3 | - | make 1st and 2nd operands 16bit |
79
+ | OP_KARG | BB | R(a) = kdict[Syms(b)]; kdict.delete(Syms(b)) |
80
+ | OP_RETURN | B | return R(a) (normal) |
81
+ | OP_RETURN_BLK | B | return R(a) (in-block return) |
82
+ | OP_BREAK | B | break R(a) |
83
+ | OP_BLKPUSH | BS | R(a) = block (16=5:1:5:1:4) |
84
+ | OP_ADD | B | R(a) = R(a)+R(a+1) |
85
+ | OP_ADDI | BB | R(a) = R(a)+mrb_int(b) |
86
+ | OP_SUB | B | R(a) = R(a)-R(a+1) |
87
+ | OP_SUBI | BB | R(a) = R(a)-mrb_int(b) |
88
+ | OP_MUL | B | R(a) = R(a)*R(a+1) |
89
+ | OP_DIV | B | R(a) = R(a)/R(a+1) |
90
+ | OP_EQ | B | R(a) = R(a)==R(a+1) |
91
+ | OP_LT | B | R(a) = R(a)<R(a+1) |
92
+ | OP_LE | B | R(a) = R(a)<=R(a+1) |
93
+ | OP_GT | B | R(a) = R(a)>R(a+1) |
94
+ | OP_GE | B | R(a) = R(a)>=R(a+1) |
95
+ | OP_ARRAY | BB | R(a) = ary_new(R(a),R(a+1)..R(a+b)) |
96
+ | OP_ARRAY2 | BBB | R(a) = ary_new(R(b),R(b+1)..R(b+c)) |
97
+ | OP_ARYCAT | B | ary_cat(R(a),R(a+1)) |
98
+ | OP_ARYPUSH | B | ary_push(R(a),R(a+1)) |
99
+ | OP_ARYDUP | B | R(a) = ary_dup(R(a)) |
100
+ | OP_AREF | BBB | R(a) = R(b)[c] |
101
+ | OP_ASET | BBB | R(a)[c] = R(b) |
102
+ | OP_APOST | BBB | *R(a),R(a+1)..R(a+c) = R(a)[b..] |
103
+ | OP_INTERN | B | R(a) = intern(R(a)) |
104
+ | OP_STRING | BB | R(a) = str_dup(Lit(b)) |
105
+ | OP_STRCAT | B | str_cat(R(a),R(a+1)) |
106
+ | OP_HASH | BB | R(a) = hash_new(R(a),R(a+1)..R(a+b)) |
107
+ | OP_HASHADD | BB | R(a) = hash_push(R(a),R(a+1)..R(a+b)) |
108
+ | OP_HASHCAT | B | R(a) = hash_cat(R(a),R(a+1)) |
109
+ | OP_LAMBDA | BB | R(a) = lambda(SEQ[b],OP_L_LAMBDA) |
110
+ | OP_BLOCK | BB | R(a) = lambda(SEQ[b],OP_L_BLOCK) |
111
+ | OP_METHOD | BB | R(a) = lambda(SEQ[b],OP_L_METHOD) |
112
+ | OP_RANGE_INC | B | R(a) = range_new(R(a),R(a+1),FALSE) |
113
+ | OP_RANGE_EXC | B | R(a) = range_new(R(a),R(a+1),TRUE) |
114
+ | OP_OCLASS | B | R(a) = ::Object |
115
+ | OP_CLASS | BB | R(a) = newclass(R(a),Syms(b),R(a+1)) |
116
+ | OP_MODULE | BB | R(a) = newmodule(R(a),Syms(b)) |
117
+ | OP_EXEC | BB | R(a) = blockexec(R(a),SEQ[b]) |
118
+ | OP_DEF | BB | R(a).newmethod(Syms(b),R(a+1)) |
119
+ | OP_ALIAS | BB | alias_method(target_class,Syms(a),Syms(b)) |
120
+ | OP_UNDEF | B | undef_method(target_class,Syms(a)) |
121
+ | OP_SCLASS | B | R(a) = R(a).singleton_class |
122
+ | OP_TCLASS | B | R(a) = target_class |
123
+ | OP_DEBUG | BBB | print a,b,c |
124
+ | OP_ERR | B | raise(LocalJumpError, Lit(a)) |
139
125
  | OP_STOP | - | stop VM |
140
126
  |------------------|--------------|--------------------------------------------------------|