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
@@ -4,26 +4,20 @@
4
4
  #include <mruby/opcode.h>
5
5
  #include <mruby/string.h>
6
6
  #include <mruby/proc.h>
7
+ #include <mruby/dump.h>
7
8
 
8
- #ifndef MRB_DISABLE_STDIO
9
+ #ifndef MRB_NO_STDIO
9
10
  static void
10
- print_r(mrb_state *mrb, mrb_irep *irep, size_t n)
11
+ print_r(mrb_state *mrb, const mrb_irep *irep, size_t n)
11
12
  {
12
- size_t i;
13
-
14
13
  if (n == 0) return;
15
-
16
- for (i=0; i+1<irep->nlocals; i++) {
17
- if (irep->lv[i].r == n) {
18
- mrb_sym sym = irep->lv[i].name;
19
- printf(" R%d:%s", (int)n, mrb_sym_dump(mrb, sym));
20
- break;
21
- }
22
- }
14
+ if (n >= irep->nlocals) return;
15
+ if (!irep->lv[n-1]) return;
16
+ printf(" R%d:%s", (int)n, mrb_sym_dump(mrb, irep->lv[n-1]));
23
17
  }
24
18
 
25
19
  static void
26
- print_lv_a(mrb_state *mrb, mrb_irep *irep, uint16_t a)
20
+ print_lv_a(mrb_state *mrb, const mrb_irep *irep, uint16_t a)
27
21
  {
28
22
  if (!irep->lv || a >= irep->nlocals || a == 0) {
29
23
  printf("\n");
@@ -35,7 +29,7 @@ print_lv_a(mrb_state *mrb, mrb_irep *irep, uint16_t a)
35
29
  }
36
30
 
37
31
  static void
38
- print_lv_ab(mrb_state *mrb, mrb_irep *irep, uint16_t a, uint16_t b)
32
+ print_lv_ab(mrb_state *mrb, const mrb_irep *irep, uint16_t a, uint16_t b)
39
33
  {
40
34
  if (!irep->lv || (a >= irep->nlocals && b >= irep->nlocals) || a+b == 0) {
41
35
  printf("\n");
@@ -48,7 +42,7 @@ print_lv_ab(mrb_state *mrb, mrb_irep *irep, uint16_t a, uint16_t b)
48
42
  }
49
43
 
50
44
  static void
51
- print_header(mrb_state *mrb, mrb_irep *irep, ptrdiff_t i)
45
+ print_header(mrb_state *mrb, const mrb_irep *irep, uint32_t i)
52
46
  {
53
47
  int32_t line;
54
48
 
@@ -63,10 +57,10 @@ print_header(mrb_state *mrb, mrb_irep *irep, ptrdiff_t i)
63
57
  printf("%03d ", (int)i);
64
58
  }
65
59
 
66
- #define CASE(insn,ops) case insn: FETCH_ ## ops (); L_ ## insn
60
+ #define CASE(insn,ops) case insn: FETCH_ ## ops ();
67
61
 
68
62
  static void
69
- codedump(mrb_state *mrb, mrb_irep *irep)
63
+ codedump(mrb_state *mrb, const mrb_irep *irep)
70
64
  {
71
65
  int ai;
72
66
  const mrb_code *pc, *pcend;
@@ -82,9 +76,36 @@ codedump(mrb_state *mrb, mrb_irep *irep)
82
76
 
83
77
  printf("local variable names:\n");
84
78
  for (i = 1; i < irep->nlocals; ++i) {
85
- char const *s = mrb_sym_dump(mrb, irep->lv[i - 1].name);
86
- int n = irep->lv[i - 1].r ? irep->lv[i - 1].r : i;
87
- printf(" R%d:%s\n", n, s ? s : "");
79
+ char const *s = mrb_sym_dump(mrb, irep->lv[i - 1]);
80
+ printf(" R%d:%s\n", i, s ? s : "");
81
+ }
82
+ }
83
+
84
+ if (irep->clen > 0) {
85
+ int i = irep->clen;
86
+ const struct mrb_irep_catch_handler *e = mrb_irep_catch_handler_table(irep);
87
+
88
+ for (; i > 0; i --, e ++) {
89
+ uint32_t begin = mrb_irep_catch_handler_unpack(e->begin);
90
+ uint32_t end = mrb_irep_catch_handler_unpack(e->end);
91
+ uint32_t target = mrb_irep_catch_handler_unpack(e->target);
92
+ char buf[20];
93
+ const char *type;
94
+
95
+ switch (e->type) {
96
+ case MRB_CATCH_RESCUE:
97
+ type = "rescue";
98
+ break;
99
+ case MRB_CATCH_ENSURE:
100
+ type = "ensure";
101
+ break;
102
+ default:
103
+ buf[0] = '\0';
104
+ snprintf(buf, sizeof(buf), "0x%02x <unknown>", (int)e->type);
105
+ type = buf;
106
+ break;
107
+ }
108
+ printf("catch type: %-8s begin: %04" PRIu32 " end: %04" PRIu32 " target: %04" PRIu32 "\n", type, begin, end, target);
88
109
  }
89
110
  }
90
111
 
@@ -94,172 +115,203 @@ codedump(mrb_state *mrb, mrb_irep *irep)
94
115
  ptrdiff_t i;
95
116
  uint32_t a;
96
117
  uint16_t b;
97
- uint8_t c;
118
+ uint16_t c;
98
119
 
99
120
  ai = mrb_gc_arena_save(mrb);
100
121
 
101
122
  i = pc - irep->iseq;
102
- next_file = mrb_debug_get_filename(mrb, irep, i);
123
+ next_file = mrb_debug_get_filename(mrb, irep, (uint32_t)i);
103
124
  if (next_file && file != next_file) {
104
125
  printf("file: %s\n", next_file);
105
126
  file = next_file;
106
127
  }
107
- print_header(mrb, irep, i);
128
+ print_header(mrb, irep, (uint32_t)i);
108
129
  ins = READ_B();
109
130
  switch (ins) {
110
- CASE(OP_NOP, Z):
131
+ CASE(OP_NOP, Z);
111
132
  printf("OP_NOP\n");
112
133
  break;
113
- CASE(OP_MOVE, BB):
134
+ CASE(OP_MOVE, BB);
114
135
  printf("OP_MOVE\tR%d\tR%d\t", a, b);
115
136
  print_lv_ab(mrb, irep, a, b);
116
137
  break;
117
- CASE(OP_LOADL, BB):
118
- {
119
- mrb_value v = irep->pool[b];
120
- mrb_value s = mrb_inspect(mrb, v);
121
- printf("OP_LOADL\tR%d\tL(%d)\t; %s", a, b, RSTRING_PTR(s));
138
+ CASE(OP_LOADL16, BS);
139
+ goto op_loadl;
140
+ CASE(OP_LOADL, BB);
141
+ op_loadl:
142
+ switch (irep->pool[b].tt) {
143
+ case IREP_TT_FLOAT:
144
+ #ifndef MRB_NO_FLOAT
145
+ printf("OP_LOADL\tR%d\tL(%d)\t; %f", a, b, (double)irep->pool[b].u.f);
146
+ #endif
147
+ break;
148
+ case IREP_TT_INT32:
149
+ printf("OP_LOADL\tR%d\tL(%d)\t; %" PRId32, a, b, irep->pool[b].u.i32);
150
+ break;
151
+ #ifdef MRB_64BIT
152
+ case IREP_TT_INT64:
153
+ printf("OP_LOADL\tR%d\tL(%d)\t; %" PRId64, a, b, irep->pool[b].u.i64);
154
+ break;
155
+ #endif
156
+ default:
157
+ printf("OP_LOADL\tR%d\tL(%d)\t", a, b);
158
+ break;
122
159
  }
123
160
  print_lv_a(mrb, irep, a);
124
161
  break;
125
- CASE(OP_LOADI, BB):
162
+ CASE(OP_LOADI, BB);
126
163
  printf("OP_LOADI\tR%d\t%d\t", a, b);
127
164
  print_lv_a(mrb, irep, a);
128
165
  break;
129
- CASE(OP_LOADINEG, BB):
166
+ CASE(OP_LOADINEG, BB);
130
167
  printf("OP_LOADI\tR%d\t-%d\t", a, b);
131
168
  print_lv_a(mrb, irep, a);
132
169
  break;
133
- CASE(OP_LOADI16, BS):
170
+ CASE(OP_LOADI16, BS);
134
171
  printf("OP_LOADI16\tR%d\t%d\t", a, (int)(int16_t)b);
135
172
  print_lv_a(mrb, irep, a);
136
173
  break;
137
- CASE(OP_LOADI__1, B):
174
+ CASE(OP_LOADI32, BSS);
175
+ printf("OP_LOADI32\tR%d\t%d\t", a, (int32_t)(((uint32_t)b<<16)+c));
176
+ print_lv_a(mrb, irep, a);
177
+ break;
178
+ CASE(OP_LOADI__1, B);
138
179
  printf("OP_LOADI__1\tR%d\t\t", a);
139
180
  print_lv_a(mrb, irep, a);
140
181
  break;
141
- CASE(OP_LOADI_0, B): goto L_LOADI;
142
- CASE(OP_LOADI_1, B): goto L_LOADI;
143
- CASE(OP_LOADI_2, B): goto L_LOADI;
144
- CASE(OP_LOADI_3, B): goto L_LOADI;
145
- CASE(OP_LOADI_4, B): goto L_LOADI;
146
- CASE(OP_LOADI_5, B): goto L_LOADI;
147
- CASE(OP_LOADI_6, B): goto L_LOADI;
148
- CASE(OP_LOADI_7, B):
182
+ CASE(OP_LOADI_0, B); goto L_LOADI;
183
+ CASE(OP_LOADI_1, B); goto L_LOADI;
184
+ CASE(OP_LOADI_2, B); goto L_LOADI;
185
+ CASE(OP_LOADI_3, B); goto L_LOADI;
186
+ CASE(OP_LOADI_4, B); goto L_LOADI;
187
+ CASE(OP_LOADI_5, B); goto L_LOADI;
188
+ CASE(OP_LOADI_6, B); goto L_LOADI;
189
+ CASE(OP_LOADI_7, B);
149
190
  L_LOADI:
150
191
  printf("OP_LOADI_%d\tR%d\t\t", ins-(int)OP_LOADI_0, a);
151
192
  print_lv_a(mrb, irep, a);
152
193
  break;
153
- CASE(OP_LOADSYM, BB):
194
+ CASE(OP_LOADSYM16, BS);
195
+ goto op_loadsym;
196
+ CASE(OP_LOADSYM, BB);
197
+ op_loadsym:
154
198
  printf("OP_LOADSYM\tR%d\t:%s\t", a, mrb_sym_dump(mrb, irep->syms[b]));
155
199
  print_lv_a(mrb, irep, a);
156
200
  break;
157
- CASE(OP_LOADNIL, B):
201
+ CASE(OP_LOADNIL, B);
158
202
  printf("OP_LOADNIL\tR%d\t\t", a);
159
203
  print_lv_a(mrb, irep, a);
160
204
  break;
161
- CASE(OP_LOADSELF, B):
205
+ CASE(OP_LOADSELF, B);
162
206
  printf("OP_LOADSELF\tR%d\t\t", a);
163
207
  print_lv_a(mrb, irep, a);
164
208
  break;
165
- CASE(OP_LOADT, B):
209
+ CASE(OP_LOADT, B);
166
210
  printf("OP_LOADT\tR%d\t\t", a);
167
211
  print_lv_a(mrb, irep, a);
168
212
  break;
169
- CASE(OP_LOADF, B):
213
+ CASE(OP_LOADF, B);
170
214
  printf("OP_LOADF\tR%d\t\t", a);
171
215
  print_lv_a(mrb, irep, a);
172
216
  break;
173
- CASE(OP_GETGV, BB):
217
+ CASE(OP_GETGV, BB);
174
218
  printf("OP_GETGV\tR%d\t:%s", a, mrb_sym_dump(mrb, irep->syms[b]));
175
219
  print_lv_a(mrb, irep, a);
176
220
  break;
177
- CASE(OP_SETGV, BB):
221
+ CASE(OP_SETGV, BB);
178
222
  printf("OP_SETGV\t:%s\tR%d", mrb_sym_dump(mrb, irep->syms[b]), a);
179
223
  print_lv_a(mrb, irep, a);
180
224
  break;
181
- CASE(OP_GETSV, BB):
225
+ CASE(OP_GETSV, BB);
182
226
  printf("OP_GETSV\tR%d\t:%s", a, mrb_sym_dump(mrb, irep->syms[b]));
183
227
  print_lv_a(mrb, irep, a);
184
228
  break;
185
- CASE(OP_SETSV, BB):
229
+ CASE(OP_SETSV, BB);
186
230
  printf("OP_SETSV\t:%s\tR%d", mrb_sym_dump(mrb, irep->syms[b]), a);
187
231
  print_lv_a(mrb, irep, a);
188
232
  break;
189
- CASE(OP_GETCONST, BB):
233
+ CASE(OP_GETCONST, BB);
190
234
  printf("OP_GETCONST\tR%d\t:%s", a, mrb_sym_dump(mrb, irep->syms[b]));
191
235
  print_lv_a(mrb, irep, a);
192
236
  break;
193
- CASE(OP_SETCONST, BB):
237
+ CASE(OP_SETCONST, BB);
194
238
  printf("OP_SETCONST\t:%s\tR%d", mrb_sym_dump(mrb, irep->syms[b]), a);
195
239
  print_lv_a(mrb, irep, a);
196
240
  break;
197
- CASE(OP_GETMCNST, BB):
241
+ CASE(OP_GETMCNST, BB);
198
242
  printf("OP_GETMCNST\tR%d\tR%d::%s", a, a, mrb_sym_dump(mrb, irep->syms[b]));
199
243
  print_lv_a(mrb, irep, a);
200
244
  break;
201
- CASE(OP_SETMCNST, BB):
245
+ CASE(OP_SETMCNST, BB);
202
246
  printf("OP_SETMCNST\tR%d::%s\tR%d", a+1, mrb_sym_dump(mrb, irep->syms[b]), a);
203
247
  print_lv_a(mrb, irep, a);
204
248
  break;
205
- CASE(OP_GETIV, BB):
249
+ CASE(OP_GETIV, BB);
206
250
  printf("OP_GETIV\tR%d\t%s", a, mrb_sym_dump(mrb, irep->syms[b]));
207
251
  print_lv_a(mrb, irep, a);
208
252
  break;
209
- CASE(OP_SETIV, BB):
253
+ CASE(OP_SETIV, BB);
210
254
  printf("OP_SETIV\t%s\tR%d", mrb_sym_dump(mrb, irep->syms[b]), a);
211
255
  print_lv_a(mrb, irep, a);
212
256
  break;
213
- CASE(OP_GETUPVAR, BBB):
257
+ CASE(OP_GETUPVAR, BBB);
214
258
  printf("OP_GETUPVAR\tR%d\t%d\t%d", a, b, c);
215
259
  print_lv_a(mrb, irep, a);
216
260
  break;
217
- CASE(OP_SETUPVAR, BBB):
261
+ CASE(OP_SETUPVAR, BBB);
218
262
  printf("OP_SETUPVAR\tR%d\t%d\t%d", a, b, c);
219
263
  print_lv_a(mrb, irep, a);
220
264
  break;
221
- CASE(OP_GETCV, BB):
265
+ CASE(OP_GETCV, BB);
222
266
  printf("OP_GETCV\tR%d\t%s", a, mrb_sym_dump(mrb, irep->syms[b]));
223
267
  print_lv_a(mrb, irep, a);
224
268
  break;
225
- CASE(OP_SETCV, BB):
269
+ CASE(OP_SETCV, BB);
226
270
  printf("OP_SETCV\t%s\tR%d", mrb_sym_dump(mrb, irep->syms[b]), a);
227
271
  print_lv_a(mrb, irep, a);
228
272
  break;
229
- CASE(OP_JMP, S):
230
- printf("OP_JMP\t\t%03d\n", a);
273
+ CASE(OP_JMP, S);
274
+ i = pc - irep->iseq;
275
+ printf("OP_JMP\t\t%03d\n", (int)i+(int16_t)a);
231
276
  break;
232
- CASE(OP_JMPIF, BS):
233
- printf("OP_JMPIF\tR%d\t%03d\t", a, b);
277
+ CASE(OP_JMPUW, S);
278
+ i = pc - irep->iseq;
279
+ printf("OP_JMPUW\t\t%03d\n", (int)i+(int16_t)a);
280
+ break;
281
+ CASE(OP_JMPIF, BS);
282
+ i = pc - irep->iseq;
283
+ printf("OP_JMPIF\tR%d\t%03d\t", a, (int)i+(int16_t)b);
234
284
  print_lv_a(mrb, irep, a);
235
285
  break;
236
- CASE(OP_JMPNOT, BS):
237
- printf("OP_JMPNOT\tR%d\t%03d\t", a, b);
286
+ CASE(OP_JMPNOT, BS);
287
+ i = pc - irep->iseq;
288
+ printf("OP_JMPNOT\tR%d\t%03d\t", a, (int)i+(int16_t)b);
238
289
  print_lv_a(mrb, irep, a);
239
290
  break;
240
- CASE(OP_JMPNIL, BS):
241
- printf("OP_JMPNIL\tR%d\t%03d\t", a, b);
291
+ CASE(OP_JMPNIL, BS);
292
+ i = pc - irep->iseq;
293
+ printf("OP_JMPNIL\tR%d\t%03d\t", a, (int)i+(int16_t)b);
242
294
  print_lv_a(mrb, irep, a);
243
295
  break;
244
- CASE(OP_SENDV, BB):
296
+ CASE(OP_SENDV, BB);
245
297
  printf("OP_SENDV\tR%d\t:%s\n", a, mrb_sym_dump(mrb, irep->syms[b]));
246
298
  break;
247
- CASE(OP_SENDVB, BB):
299
+ CASE(OP_SENDVB, BB);
248
300
  printf("OP_SENDVB\tR%d\t:%s\n", a, mrb_sym_dump(mrb, irep->syms[b]));
249
301
  break;
250
- CASE(OP_SEND, BBB):
302
+ CASE(OP_SEND, BBB);
251
303
  printf("OP_SEND\tR%d\t:%s\t%d\n", a, mrb_sym_dump(mrb, irep->syms[b]), c);
252
304
  break;
253
- CASE(OP_SENDB, BBB):
305
+ CASE(OP_SENDB, BBB);
254
306
  printf("OP_SENDB\tR%d\t:%s\t%d\n", a, mrb_sym_dump(mrb, irep->syms[b]), c);
255
307
  break;
256
- CASE(OP_CALL, Z):
308
+ CASE(OP_CALL, Z);
257
309
  printf("OP_CALL\n");
258
310
  break;
259
- CASE(OP_SUPER, BB):
311
+ CASE(OP_SUPER, BB);
260
312
  printf("OP_SUPER\tR%d\t%d\n", a, b);
261
313
  break;
262
- CASE(OP_ARGARY, BS):
314
+ CASE(OP_ARGARY, BS);
263
315
  printf("OP_ARGARY\tR%d\t%d:%d:%d:%d (%d)", a,
264
316
  (b>>11)&0x3f,
265
317
  (b>>10)&0x1,
@@ -268,7 +320,7 @@ codedump(mrb_state *mrb, mrb_irep *irep)
268
320
  (b>>0)&0xf);
269
321
  print_lv_a(mrb, irep, a);
270
322
  break;
271
- CASE(OP_ENTER, W):
323
+ CASE(OP_ENTER, W);
272
324
  printf("OP_ENTER\t%d:%d:%d:%d:%d:%d:%d\n",
273
325
  MRB_ASPEC_REQ(a),
274
326
  MRB_ASPEC_OPT(a),
@@ -278,30 +330,30 @@ codedump(mrb_state *mrb, mrb_irep *irep)
278
330
  MRB_ASPEC_KDICT(a),
279
331
  MRB_ASPEC_BLOCK(a));
280
332
  break;
281
- CASE(OP_KEY_P, BB):
333
+ CASE(OP_KEY_P, BB);
282
334
  printf("OP_KEY_P\tR%d\t:%s\t", a, mrb_sym_dump(mrb, irep->syms[b]));
283
335
  print_lv_a(mrb, irep, a);
284
336
  break;
285
- CASE(OP_KEYEND, Z):
337
+ CASE(OP_KEYEND, Z);
286
338
  printf("OP_KEYEND\n");
287
339
  break;
288
- CASE(OP_KARG, BB):
340
+ CASE(OP_KARG, BB);
289
341
  printf("OP_KARG\tR%d\t:%s\t", a, mrb_sym_dump(mrb, irep->syms[b]));
290
342
  print_lv_a(mrb, irep, a);
291
343
  break;
292
- CASE(OP_RETURN, B):
344
+ CASE(OP_RETURN, B);
293
345
  printf("OP_RETURN\tR%d\t\t", a);
294
346
  print_lv_a(mrb, irep, a);
295
347
  break;
296
- CASE(OP_RETURN_BLK, B):
348
+ CASE(OP_RETURN_BLK, B);
297
349
  printf("OP_RETURN_BLK\tR%d\t\t", a);
298
350
  print_lv_a(mrb, irep, a);
299
351
  break;
300
- CASE(OP_BREAK, B):
352
+ CASE(OP_BREAK, B);
301
353
  printf("OP_BREAK\tR%d\t\t", a);
302
354
  print_lv_a(mrb, irep, a);
303
355
  break;
304
- CASE(OP_BLKPUSH, BS):
356
+ CASE(OP_BLKPUSH, BS);
305
357
  printf("OP_BLKPUSH\tR%d\t%d:%d:%d:%d (%d)", a,
306
358
  (b>>11)&0x3f,
307
359
  (b>>10)&0x1,
@@ -310,219 +362,190 @@ codedump(mrb_state *mrb, mrb_irep *irep)
310
362
  (b>>0)&0xf);
311
363
  print_lv_a(mrb, irep, a);
312
364
  break;
313
- CASE(OP_LAMBDA, BB):
314
- printf("OP_LAMBDA\tR%d\tI(%d:%p)\n", a, b, irep->reps[b]);
365
+ CASE(OP_LAMBDA, BB);
366
+ printf("OP_LAMBDA\tR%d\tI(%d:%p)\n", a, b, (void*)irep->reps[b]);
367
+ break;
368
+ CASE(OP_BLOCK, BB);
369
+ printf("OP_BLOCK\tR%d\tI(%d:%p)\n", a, b, (void*)irep->reps[b]);
315
370
  break;
316
- CASE(OP_BLOCK, BB):
317
- printf("OP_BLOCK\tR%d\tI(%d:%p)\n", a, b, irep->reps[b]);
371
+ CASE(OP_METHOD, BB);
372
+ printf("OP_METHOD\tR%d\tI(%d:%p)\n", a, b, (void*)irep->reps[b]);
318
373
  break;
319
- CASE(OP_METHOD, BB):
320
- printf("OP_METHOD\tR%d\tI(%d:%p)\n", a, b, irep->reps[b]);
374
+ CASE(OP_LAMBDA16, BS);
375
+ printf("OP_LAMBDA\tR%d\tI(%d:%p)\n", a, b, (void*)irep->reps[b]);
321
376
  break;
322
- CASE(OP_RANGE_INC, B):
377
+ CASE(OP_BLOCK16, BS);
378
+ printf("OP_BLOCK\tR%d\tI(%d:%p)\n", a, b, (void*)irep->reps[b]);
379
+ break;
380
+ CASE(OP_METHOD16, BS);
381
+ printf("OP_METHOD\tR%d\tI(%d:%p)\n", a, b, (void*)irep->reps[b]);
382
+ break;
383
+ CASE(OP_RANGE_INC, B);
323
384
  printf("OP_RANGE_INC\tR%d\n", a);
324
385
  break;
325
- CASE(OP_RANGE_EXC, B):
386
+ CASE(OP_RANGE_EXC, B);
326
387
  printf("OP_RANGE_EXC\tR%d\n", a);
327
388
  break;
328
- CASE(OP_DEF, BB):
389
+ CASE(OP_DEF, BB);
329
390
  printf("OP_DEF\tR%d\t:%s\n", a, mrb_sym_dump(mrb, irep->syms[b]));
330
391
  break;
331
- CASE(OP_UNDEF, B):
392
+ CASE(OP_UNDEF, B);
332
393
  printf("OP_UNDEF\t:%s\n", mrb_sym_dump(mrb, irep->syms[a]));
333
394
  break;
334
- CASE(OP_ALIAS, BB):
395
+ CASE(OP_ALIAS, BB);
335
396
  printf("OP_ALIAS\t:%s\t%s\n", mrb_sym_dump(mrb, irep->syms[a]), mrb_sym_dump(mrb, irep->syms[b]));
336
397
  break;
337
- CASE(OP_ADD, B):
338
- printf("OP_ADD\tR%d\t\n", a);
398
+ CASE(OP_ADD, B);
399
+ printf("OP_ADD\tR%d\tR%d\n", a, a+1);
339
400
  break;
340
- CASE(OP_ADDI, BB):
401
+ CASE(OP_ADDI, BB);
341
402
  printf("OP_ADDI\tR%d\t%d\n", a, b);
342
403
  break;
343
- CASE(OP_SUB, B):
344
- printf("OP_SUB\tR%d\t\n", a);
404
+ CASE(OP_SUB, B);
405
+ printf("OP_SUB\tR%d\tR%d\n", a, a+1);
345
406
  break;
346
- CASE(OP_SUBI, BB):
407
+ CASE(OP_SUBI, BB);
347
408
  printf("OP_SUBI\tR%d\t%d\n", a, b);
348
409
  break;
349
- CASE(OP_MUL, B):
350
- printf("OP_MUL\tR%d\t\n", a);
410
+ CASE(OP_MUL, B);
411
+ printf("OP_MUL\tR%d\tR%d\n", a, a+1);
351
412
  break;
352
- CASE(OP_DIV, B):
353
- printf("OP_DIV\tR%d\t\n", a);
413
+ CASE(OP_DIV, B);
414
+ printf("OP_DIV\tR%d\tR%d\n", a, a+1);
354
415
  break;
355
- CASE(OP_LT, B):
356
- printf("OP_LT\t\tR%d\t\n", a);
416
+ CASE(OP_LT, B);
417
+ printf("OP_LT\t\tR%d\tR%d\n", a, a+1);
357
418
  break;
358
- CASE(OP_LE, B):
359
- printf("OP_LE\t\tR%d\t\n", a);
419
+ CASE(OP_LE, B);
420
+ printf("OP_LE\t\tR%d\tR%d\n", a, a+1);
360
421
  break;
361
- CASE(OP_GT, B):
362
- printf("OP_GT\t\tR%d\t\n", a);
422
+ CASE(OP_GT, B);
423
+ printf("OP_GT\t\tR%d\tR%d\n", a, a+1);
363
424
  break;
364
- CASE(OP_GE, B):
365
- printf("OP_GE\t\tR%d\t\n", a);
425
+ CASE(OP_GE, B);
426
+ printf("OP_GE\t\tR%d\tR%d\n", a, a+1);
366
427
  break;
367
- CASE(OP_EQ, B):
368
- printf("OP_EQ\t\tR%d\t\n", a);
428
+ CASE(OP_EQ, B);
429
+ printf("OP_EQ\t\tR%d\tR%d\n", a, a+1);
369
430
  break;
370
- CASE(OP_ARRAY, BB):
431
+ CASE(OP_ARRAY, BB);
371
432
  printf("OP_ARRAY\tR%d\t%d\t", a, b);
372
433
  print_lv_a(mrb, irep, a);
373
434
  break;
374
- CASE(OP_ARRAY2, BBB):
435
+ CASE(OP_ARRAY2, BBB);
375
436
  printf("OP_ARRAY\tR%d\tR%d\t%d\t", a, b, c);
376
437
  print_lv_ab(mrb, irep, a, b);
377
438
  break;
378
- CASE(OP_ARYCAT, B):
439
+ CASE(OP_ARYCAT, B);
379
440
  printf("OP_ARYCAT\tR%d\t", a);
380
441
  print_lv_a(mrb, irep, a);
381
442
  break;
382
- CASE(OP_ARYPUSH, B):
443
+ CASE(OP_ARYPUSH, B);
383
444
  printf("OP_ARYPUSH\tR%d\t", a);
384
445
  print_lv_a(mrb, irep, a);
385
446
  break;
386
- CASE(OP_ARYDUP, B):
447
+ CASE(OP_ARYDUP, B);
387
448
  printf("OP_ARYDUP\tR%d\t", a);
388
449
  print_lv_a(mrb, irep, a);
389
450
  break;
390
- CASE(OP_AREF, BBB):
451
+ CASE(OP_AREF, BBB);
391
452
  printf("OP_AREF\tR%d\tR%d\t%d", a, b, c);
392
453
  print_lv_ab(mrb, irep, a, b);
393
454
  break;
394
- CASE(OP_ASET, BBB):
455
+ CASE(OP_ASET, BBB);
395
456
  printf("OP_ASET\tR%d\tR%d\t%d", a, b, c);
396
457
  print_lv_ab(mrb, irep, a, b);
397
458
  break;
398
- CASE(OP_APOST, BBB):
459
+ CASE(OP_APOST, BBB);
399
460
  printf("OP_APOST\tR%d\t%d\t%d", a, b, c);
400
461
  print_lv_a(mrb, irep, a);
401
462
  break;
402
- CASE(OP_INTERN, B):
463
+ CASE(OP_INTERN, B);
403
464
  printf("OP_INTERN\tR%d", a);
404
465
  print_lv_a(mrb, irep, a);
405
466
  break;
406
- CASE(OP_STRING, BB):
407
- {
408
- mrb_value v = irep->pool[b];
409
- mrb_value s = mrb_str_dump(mrb, mrb_str_new(mrb, RSTRING_PTR(v), RSTRING_LEN(v)));
410
- printf("OP_STRING\tR%d\tL(%d)\t; %s", a, b, RSTRING_PTR(s));
467
+ CASE(OP_STRING16, BS);
468
+ goto op_string;
469
+ CASE(OP_STRING, BB);
470
+ op_string:
471
+ if ((irep->pool[b].tt & IREP_TT_NFLAG) == 0) {
472
+ printf("OP_STRING\tR%d\tL(%d)\t; %s", a, b, irep->pool[b].u.str);
473
+ }
474
+ else {
475
+ printf("OP_STRING\tR%d\tL(%d)\t", a, b);
411
476
  }
412
477
  print_lv_a(mrb, irep, a);
413
478
  break;
414
- CASE(OP_STRCAT, B):
479
+ CASE(OP_STRCAT, B);
415
480
  printf("OP_STRCAT\tR%d\t", a);
416
481
  print_lv_a(mrb, irep, a);
417
482
  break;
418
- CASE(OP_HASH, BB):
483
+ CASE(OP_HASH, BB);
419
484
  printf("OP_HASH\tR%d\t%d\t", a, b);
420
485
  print_lv_a(mrb, irep, a);
421
486
  break;
422
- CASE(OP_HASHADD, BB):
487
+ CASE(OP_HASHADD, BB);
423
488
  printf("OP_HASHADD\tR%d\t%d\t", a, b);
424
489
  print_lv_a(mrb, irep, a);
425
490
  break;
426
- CASE(OP_HASHCAT, B):
491
+ CASE(OP_HASHCAT, B);
427
492
  printf("OP_HASHCAT\tR%d\t", a);
428
493
  print_lv_a(mrb, irep, a);
429
494
  break;
430
495
 
431
- CASE(OP_OCLASS, B):
496
+ CASE(OP_OCLASS, B);
432
497
  printf("OP_OCLASS\tR%d\t\t", a);
433
498
  print_lv_a(mrb, irep, a);
434
499
  break;
435
- CASE(OP_CLASS, BB):
500
+ CASE(OP_CLASS, BB);
436
501
  printf("OP_CLASS\tR%d\t:%s", a, mrb_sym_dump(mrb, irep->syms[b]));
437
502
  print_lv_a(mrb, irep, a);
438
503
  break;
439
- CASE(OP_MODULE, BB):
504
+ CASE(OP_MODULE, BB);
440
505
  printf("OP_MODULE\tR%d\t:%s", a, mrb_sym_dump(mrb, irep->syms[b]));
441
506
  print_lv_a(mrb, irep, a);
442
507
  break;
443
- CASE(OP_EXEC, BB):
444
- printf("OP_EXEC\tR%d\tI(%d:%p)", a, b, irep->reps[b]);
508
+ CASE(OP_EXEC, BB);
509
+ printf("OP_EXEC\tR%d\tI(%d:%p)", a, b, (void*)irep->reps[b]);
445
510
  print_lv_a(mrb, irep, a);
446
511
  break;
447
- CASE(OP_SCLASS, B):
512
+ CASE(OP_SCLASS, B);
448
513
  printf("OP_SCLASS\tR%d\t", a);
449
514
  print_lv_a(mrb, irep, a);
450
515
  break;
451
- CASE(OP_TCLASS, B):
516
+ CASE(OP_TCLASS, B);
452
517
  printf("OP_TCLASS\tR%d\t\t", a);
453
518
  print_lv_a(mrb, irep, a);
454
519
  break;
455
- CASE(OP_ERR, B):
456
- {
457
- mrb_value v = irep->pool[a];
458
- mrb_value s = mrb_str_dump(mrb, mrb_str_new(mrb, RSTRING_PTR(v), RSTRING_LEN(v)));
459
- printf("OP_ERR\t%s\n", RSTRING_PTR(s));
520
+ CASE(OP_ERR, B);
521
+ if ((irep->pool[a].tt & IREP_TT_NFLAG) == 0) {
522
+ printf("OP_ERR\t%s\n", irep->pool[a].u.str);
523
+ }
524
+ else {
525
+ printf("OP_ERR\tL(%d)\n", a);
460
526
  }
461
527
  break;
462
- CASE(OP_EPUSH, B):
463
- printf("OP_EPUSH\t\t:I(%d:%p)\n", a, irep->reps[a]);
464
- break;
465
- CASE(OP_ONERR, S):
466
- printf("OP_ONERR\t%03d\n", a);
467
- break;
468
- CASE(OP_EXCEPT, B):
528
+ CASE(OP_EXCEPT, B);
469
529
  printf("OP_EXCEPT\tR%d\t\t", a);
470
530
  print_lv_a(mrb, irep, a);
471
531
  break;
472
- CASE(OP_RESCUE, BB):
532
+ CASE(OP_RESCUE, BB);
473
533
  printf("OP_RESCUE\tR%d\tR%d", a, b);
474
534
  print_lv_ab(mrb, irep, a, b);
475
535
  break;
476
- CASE(OP_RAISE, B):
477
- printf("OP_RAISE\tR%d\t\t", a);
536
+ CASE(OP_RAISEIF, B);
537
+ printf("OP_RAISEIF\tR%d\t\t", a);
478
538
  print_lv_a(mrb, irep, a);
479
539
  break;
480
- CASE(OP_POPERR, B):
481
- printf("OP_POPERR\t%d\t\t\n", a);
482
- break;
483
- CASE(OP_EPOP, B):
484
- printf("OP_EPOP\t%d\n", a);
485
- break;
486
540
 
487
- CASE(OP_DEBUG, BBB):
541
+ CASE(OP_DEBUG, BBB);
488
542
  printf("OP_DEBUG\t%d\t%d\t%d\n", a, b, c);
489
543
  break;
490
544
 
491
- CASE(OP_STOP, Z):
545
+ CASE(OP_STOP, Z);
492
546
  printf("OP_STOP\n");
493
547
  break;
494
548
 
495
- CASE(OP_EXT1, Z):
496
- ins = READ_B();
497
- printf("OP_EXT1\n");
498
- print_header(mrb, irep, pc-irep->iseq-2);
499
- switch (ins) {
500
- #define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); goto L_OP_ ## i;
501
- #include "mruby/ops.h"
502
- #undef OPCODE
503
- }
504
- break;
505
- CASE(OP_EXT2, Z):
506
- ins = READ_B();
507
- printf("OP_EXT2\n");
508
- print_header(mrb, irep, pc-irep->iseq-2);
509
- switch (ins) {
510
- #define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); goto L_OP_ ## i;
511
- #include "mruby/ops.h"
512
- #undef OPCODE
513
- }
514
- break;
515
- CASE(OP_EXT3, Z):
516
- ins = READ_B();
517
- printf("OP_EXT3\n");
518
- print_header(mrb, irep, pc-irep->iseq-2);
519
- switch (ins) {
520
- #define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); goto L_OP_ ## i;
521
- #include "mruby/ops.h"
522
- #undef OPCODE
523
- }
524
- break;
525
-
526
549
  default:
527
550
  printf("OP_unknown (0x%x)\n", ins);
528
551
  break;
@@ -533,13 +556,15 @@ codedump(mrb_state *mrb, mrb_irep *irep)
533
556
  }
534
557
 
535
558
  static void
536
- codedump_recur(mrb_state *mrb, mrb_irep *irep)
559
+ codedump_recur(mrb_state *mrb, const mrb_irep *irep)
537
560
  {
538
561
  int i;
539
562
 
540
563
  codedump(mrb, irep);
541
- for (i=0; i<irep->rlen; i++) {
542
- codedump_recur(mrb, irep->reps[i]);
564
+ if (irep->reps) {
565
+ for (i=0; i<irep->rlen; i++) {
566
+ codedump_recur(mrb, irep->reps[i]);
567
+ }
543
568
  }
544
569
  }
545
570
  #endif
@@ -547,7 +572,7 @@ codedump_recur(mrb_state *mrb, mrb_irep *irep)
547
572
  void
548
573
  mrb_codedump_all(mrb_state *mrb, struct RProc *proc)
549
574
  {
550
- #ifndef MRB_DISABLE_STDIO
575
+ #ifndef MRB_NO_STDIO
551
576
  codedump_recur(mrb, proc->body.irep);
552
577
  #endif
553
578
  }