script_core 0.2.3 → 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 (529) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +35 -57
  3. data/.ruby-version +1 -1
  4. data/Gemfile +2 -2
  5. data/README.md +7 -1
  6. data/ext/enterprise_script_service/Rakefile +1 -1
  7. data/ext/enterprise_script_service/libseccomp/.travis.yml +24 -12
  8. data/ext/enterprise_script_service/libseccomp/CHANGELOG +32 -0
  9. data/ext/enterprise_script_service/libseccomp/CONTRIBUTING.md +37 -26
  10. data/ext/enterprise_script_service/libseccomp/CREDITS +11 -0
  11. data/ext/enterprise_script_service/libseccomp/README.md +21 -1
  12. data/ext/enterprise_script_service/libseccomp/configure.ac +13 -8
  13. data/ext/enterprise_script_service/libseccomp/doc/Makefile.am +6 -0
  14. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_api_get.3 +12 -2
  15. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_arch_add.3 +38 -6
  16. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_attr_set.3 +53 -2
  17. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_export_bpf.3 +20 -2
  18. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_init.3 +9 -2
  19. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_load.3 +32 -2
  20. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_merge.3 +16 -2
  21. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_alloc.3 +113 -0
  22. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_fd.3 +1 -0
  23. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_free.3 +1 -0
  24. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_id_valid.3 +1 -0
  25. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_receive.3 +1 -0
  26. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_respond.3 +1 -0
  27. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_rule_add.3 +64 -3
  28. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_syscall_priority.3 +18 -3
  29. data/ext/enterprise_script_service/libseccomp/include/seccomp-syscalls.h +19 -0
  30. data/ext/enterprise_script_service/libseccomp/include/seccomp.h.in +116 -0
  31. data/ext/enterprise_script_service/libseccomp/src/.gitignore +2 -0
  32. data/ext/enterprise_script_service/libseccomp/src/Makefile.am +31 -17
  33. data/ext/enterprise_script_service/libseccomp/src/api.c +254 -58
  34. data/ext/enterprise_script_service/libseccomp/src/arch-aarch64.h +1 -9
  35. data/ext/enterprise_script_service/libseccomp/src/arch-arm.c +47 -2
  36. data/ext/enterprise_script_service/libseccomp/src/arch-arm.h +1 -9
  37. data/ext/enterprise_script_service/libseccomp/src/arch-gperf-generate +40 -0
  38. data/ext/enterprise_script_service/libseccomp/src/arch-mips.c +41 -4
  39. data/ext/enterprise_script_service/libseccomp/src/arch-mips.h +2 -10
  40. data/ext/enterprise_script_service/libseccomp/src/arch-mips64.c +41 -4
  41. data/ext/enterprise_script_service/libseccomp/src/arch-mips64.h +3 -11
  42. data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32.c +41 -4
  43. data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32.h +2 -10
  44. data/ext/enterprise_script_service/libseccomp/src/arch-parisc.h +1 -10
  45. data/ext/enterprise_script_service/libseccomp/src/arch-parisc64.c +3 -3
  46. data/ext/enterprise_script_service/libseccomp/src/arch-parisc64.h +29 -0
  47. data/ext/enterprise_script_service/libseccomp/src/arch-ppc.h +1 -9
  48. data/ext/enterprise_script_service/libseccomp/src/arch-ppc64.c +606 -8
  49. data/ext/enterprise_script_service/libseccomp/src/arch-ppc64.h +2 -10
  50. data/ext/enterprise_script_service/libseccomp/src/arch-riscv64.c +31 -0
  51. data/ext/enterprise_script_service/libseccomp/src/arch-riscv64.h +22 -0
  52. data/ext/enterprise_script_service/libseccomp/src/arch-s390.c +171 -12
  53. data/ext/enterprise_script_service/libseccomp/src/arch-s390.h +1 -17
  54. data/ext/enterprise_script_service/libseccomp/src/arch-s390x.c +166 -10
  55. data/ext/enterprise_script_service/libseccomp/src/arch-s390x.h +1 -20
  56. data/ext/enterprise_script_service/libseccomp/src/arch-syscall-dump.c +8 -1
  57. data/ext/enterprise_script_service/libseccomp/src/arch-syscall-validate +359 -143
  58. data/ext/enterprise_script_service/libseccomp/src/arch-x32.c +36 -2
  59. data/ext/enterprise_script_service/libseccomp/src/arch-x32.h +2 -10
  60. data/ext/enterprise_script_service/libseccomp/src/arch-x86.c +172 -10
  61. data/ext/enterprise_script_service/libseccomp/src/arch-x86.h +1 -14
  62. data/ext/enterprise_script_service/libseccomp/src/arch-x86_64.h +1 -9
  63. data/ext/enterprise_script_service/libseccomp/src/arch.c +11 -3
  64. data/ext/enterprise_script_service/libseccomp/src/arch.h +7 -0
  65. data/ext/enterprise_script_service/libseccomp/src/db.c +268 -57
  66. data/ext/enterprise_script_service/libseccomp/src/db.h +16 -2
  67. data/ext/enterprise_script_service/libseccomp/src/gen_bpf.c +503 -148
  68. data/ext/enterprise_script_service/libseccomp/src/gen_bpf.h +2 -1
  69. data/ext/enterprise_script_service/libseccomp/src/gen_pfc.c +165 -37
  70. data/ext/enterprise_script_service/libseccomp/src/python/libseccomp.pxd +37 -1
  71. data/ext/enterprise_script_service/libseccomp/src/python/seccomp.pyx +295 -5
  72. data/ext/enterprise_script_service/libseccomp/src/syscalls.c +56 -0
  73. data/ext/enterprise_script_service/libseccomp/src/syscalls.csv +470 -0
  74. data/ext/enterprise_script_service/libseccomp/src/syscalls.h +62 -0
  75. data/ext/enterprise_script_service/libseccomp/src/syscalls.perf.template +82 -0
  76. data/ext/enterprise_script_service/libseccomp/src/system.c +196 -16
  77. data/ext/enterprise_script_service/libseccomp/src/system.h +68 -13
  78. data/ext/enterprise_script_service/libseccomp/tests/.gitignore +10 -2
  79. data/ext/enterprise_script_service/libseccomp/tests/06-sim-actions.tests +1 -1
  80. data/ext/enterprise_script_service/libseccomp/tests/11-basic-basic_errors.c +5 -5
  81. data/ext/enterprise_script_service/libseccomp/tests/13-basic-attrs.c +35 -1
  82. data/ext/enterprise_script_service/libseccomp/tests/13-basic-attrs.py +10 -1
  83. data/ext/enterprise_script_service/libseccomp/tests/15-basic-resolver.c +4 -3
  84. data/ext/enterprise_script_service/libseccomp/tests/16-sim-arch_basic.c +12 -0
  85. data/ext/enterprise_script_service/libseccomp/tests/16-sim-arch_basic.py +1 -0
  86. data/ext/enterprise_script_service/libseccomp/tests/{18-sim-basic_whitelist.c → 18-sim-basic_allowlist.c} +0 -0
  87. data/ext/enterprise_script_service/libseccomp/tests/{18-sim-basic_whitelist.py → 18-sim-basic_allowlist.py} +0 -0
  88. data/ext/enterprise_script_service/libseccomp/tests/18-sim-basic_allowlist.tests +32 -0
  89. data/ext/enterprise_script_service/libseccomp/tests/23-sim-arch_all_le_basic.c +3 -0
  90. data/ext/enterprise_script_service/libseccomp/tests/23-sim-arch_all_le_basic.py +1 -0
  91. data/ext/enterprise_script_service/libseccomp/tests/30-sim-socket_syscalls.c +3 -0
  92. data/ext/enterprise_script_service/libseccomp/tests/30-sim-socket_syscalls.py +1 -0
  93. data/ext/enterprise_script_service/libseccomp/tests/30-sim-socket_syscalls.tests +33 -17
  94. data/ext/enterprise_script_service/libseccomp/tests/{34-sim-basic_blacklist.c → 34-sim-basic_denylist.c} +0 -0
  95. data/ext/enterprise_script_service/libseccomp/tests/{34-sim-basic_blacklist.py → 34-sim-basic_denylist.py} +0 -0
  96. data/ext/enterprise_script_service/libseccomp/tests/34-sim-basic_denylist.tests +32 -0
  97. data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.c +3 -0
  98. data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.py +1 -0
  99. data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.tests +25 -25
  100. data/ext/enterprise_script_service/libseccomp/tests/39-basic-api_level.c +24 -3
  101. data/ext/enterprise_script_service/libseccomp/tests/39-basic-api_level.py +16 -1
  102. data/ext/enterprise_script_service/libseccomp/tests/47-live-kill_process.c +3 -3
  103. data/ext/enterprise_script_service/libseccomp/tests/51-live-user_notification.c +112 -0
  104. data/ext/enterprise_script_service/libseccomp/tests/51-live-user_notification.py +60 -0
  105. data/ext/enterprise_script_service/libseccomp/tests/51-live-user_notification.tests +11 -0
  106. data/ext/enterprise_script_service/libseccomp/tests/52-basic-load.c +48 -0
  107. data/ext/enterprise_script_service/libseccomp/tests/52-basic-load.py +38 -0
  108. data/ext/enterprise_script_service/libseccomp/tests/52-basic-load.tests +11 -0
  109. data/ext/enterprise_script_service/libseccomp/tests/53-sim-binary_tree.c +156 -0
  110. data/ext/enterprise_script_service/libseccomp/tests/53-sim-binary_tree.py +95 -0
  111. data/ext/enterprise_script_service/libseccomp/tests/53-sim-binary_tree.tests +65 -0
  112. data/ext/enterprise_script_service/libseccomp/tests/54-live-binary_tree.c +128 -0
  113. data/ext/enterprise_script_service/libseccomp/tests/54-live-binary_tree.py +95 -0
  114. data/ext/enterprise_script_service/libseccomp/tests/54-live-binary_tree.tests +11 -0
  115. data/ext/enterprise_script_service/libseccomp/tests/55-basic-pfc_binary_tree.c +134 -0
  116. data/ext/enterprise_script_service/libseccomp/tests/55-basic-pfc_binary_tree.sh +46 -0
  117. data/ext/enterprise_script_service/libseccomp/tests/55-basic-pfc_binary_tree.tests +11 -0
  118. data/ext/enterprise_script_service/libseccomp/tests/56-basic-iterate_syscalls.c +90 -0
  119. data/ext/enterprise_script_service/libseccomp/tests/56-basic-iterate_syscalls.py +65 -0
  120. data/ext/enterprise_script_service/libseccomp/tests/56-basic-iterate_syscalls.tests +11 -0
  121. data/ext/enterprise_script_service/libseccomp/tests/57-basic-rawsysrc.c +64 -0
  122. data/ext/enterprise_script_service/libseccomp/tests/57-basic-rawsysrc.py +46 -0
  123. data/ext/enterprise_script_service/libseccomp/tests/57-basic-rawsysrc.tests +11 -0
  124. data/ext/enterprise_script_service/libseccomp/tests/58-live-tsync_notify.c +116 -0
  125. data/ext/enterprise_script_service/libseccomp/tests/58-live-tsync_notify.py +61 -0
  126. data/ext/enterprise_script_service/libseccomp/tests/58-live-tsync_notify.tests +11 -0
  127. data/ext/enterprise_script_service/libseccomp/tests/Makefile.am +34 -10
  128. data/ext/enterprise_script_service/libseccomp/tests/regression +10 -3
  129. data/ext/enterprise_script_service/libseccomp/tests/util.c +3 -3
  130. data/ext/enterprise_script_service/libseccomp/tools/Makefile.am +0 -3
  131. data/ext/enterprise_script_service/libseccomp/tools/check-syntax +1 -1
  132. data/ext/enterprise_script_service/libseccomp/tools/scmp_arch_detect.c +3 -0
  133. data/ext/enterprise_script_service/libseccomp/tools/scmp_bpf_disasm.c +4 -2
  134. data/ext/enterprise_script_service/libseccomp/tools/scmp_bpf_sim.c +4 -0
  135. data/ext/enterprise_script_service/libseccomp/tools/util.c +14 -12
  136. data/ext/enterprise_script_service/libseccomp/tools/util.h +7 -0
  137. data/ext/enterprise_script_service/mruby/.github/workflows/build.yml +149 -0
  138. data/ext/enterprise_script_service/mruby/.github/workflows/codeql-analysis.yml +55 -0
  139. data/ext/enterprise_script_service/mruby/.github/workflows/lint.yml +23 -0
  140. data/ext/enterprise_script_service/mruby/.github/workflows/oss-fuzz.yml +27 -0
  141. data/ext/enterprise_script_service/mruby/.github/workflows/spell-checker.yml +17 -0
  142. data/ext/enterprise_script_service/mruby/.gitignore +3 -0
  143. data/ext/enterprise_script_service/mruby/.gitlab-ci.yml +3 -3
  144. data/ext/enterprise_script_service/mruby/.markdownlint.yml +16 -0
  145. data/ext/enterprise_script_service/mruby/.travis.yml +7 -10
  146. data/ext/enterprise_script_service/mruby/.yamllint +8 -0
  147. data/ext/enterprise_script_service/mruby/AUTHORS +4 -0
  148. data/ext/enterprise_script_service/mruby/CODEOWNERS +1 -0
  149. data/ext/enterprise_script_service/mruby/CONTRIBUTING.md +6 -13
  150. data/ext/enterprise_script_service/mruby/Doxyfile +4 -4
  151. data/ext/enterprise_script_service/mruby/LICENSE +1 -1
  152. data/ext/enterprise_script_service/mruby/Makefile +1 -1
  153. data/ext/enterprise_script_service/mruby/README.md +5 -11
  154. data/ext/enterprise_script_service/mruby/Rakefile +18 -108
  155. data/ext/enterprise_script_service/mruby/TODO.md +17 -0
  156. data/ext/enterprise_script_service/mruby/appveyor.yml +29 -26
  157. data/ext/enterprise_script_service/mruby/benchmark/bm_ao_render.rb +1 -1
  158. data/ext/enterprise_script_service/mruby/build_config.rb +9 -152
  159. data/ext/enterprise_script_service/mruby/{examples/targets/build_config_ArduinoDue.rb → build_config/ArduinoDue.rb} +4 -21
  160. data/ext/enterprise_script_service/mruby/{examples/targets/build_config_IntelEdison.rb → build_config/IntelEdison.rb} +4 -4
  161. data/ext/enterprise_script_service/mruby/{examples/targets/build_config_IntelGalileo.rb → build_config/IntelGalileo.rb} +3 -20
  162. data/ext/enterprise_script_service/mruby/{examples/targets/build_config_RX630.rb → build_config/RX630.rb} +4 -21
  163. data/ext/enterprise_script_service/mruby/build_config/android_arm64-v8a.rb +11 -0
  164. data/ext/enterprise_script_service/mruby/build_config/android_armeabi.rb +11 -0
  165. 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
  166. data/ext/enterprise_script_service/mruby/build_config/bench.rb +11 -0
  167. data/ext/enterprise_script_service/mruby/build_config/boxing.rb +21 -0
  168. data/ext/enterprise_script_service/mruby/{examples/targets/build_config_chipKITMax32.rb → build_config/chipKITMax32.rb} +4 -21
  169. data/ext/enterprise_script_service/mruby/{appveyor_config.rb → build_config/ci/gcc-clang.rb} +11 -8
  170. data/ext/enterprise_script_service/mruby/build_config/ci/msvc.rb +20 -0
  171. data/ext/enterprise_script_service/mruby/build_config/clang-asan.rb +11 -0
  172. data/ext/enterprise_script_service/mruby/build_config/cross-32bit.rb +14 -0
  173. data/ext/enterprise_script_service/mruby/build_config/default.rb +80 -0
  174. data/ext/enterprise_script_service/mruby/build_config/dreamcast_shelf.rb +94 -0
  175. data/ext/enterprise_script_service/mruby/build_config/gameboyadvance.rb +73 -0
  176. data/ext/enterprise_script_service/mruby/build_config/host-cxx.rb +12 -0
  177. data/ext/enterprise_script_service/mruby/build_config/host-debug.rb +20 -0
  178. data/ext/enterprise_script_service/mruby/build_config/host-gprof.rb +14 -0
  179. data/ext/enterprise_script_service/mruby/build_config/host-m32.rb +15 -0
  180. data/ext/enterprise_script_service/mruby/build_config/host-shared.rb +36 -0
  181. data/ext/enterprise_script_service/mruby/build_config/mrbc.rb +11 -0
  182. data/ext/enterprise_script_service/mruby/build_config/no-float.rb +17 -0
  183. data/ext/enterprise_script_service/mruby/doc/guides/compile.md +142 -49
  184. data/ext/enterprise_script_service/mruby/doc/guides/debugger.md +5 -4
  185. data/ext/enterprise_script_service/mruby/doc/guides/gc-arena-howto.md +1 -1
  186. data/ext/enterprise_script_service/mruby/doc/guides/mrbconf.md +53 -30
  187. data/ext/enterprise_script_service/mruby/doc/guides/mrbgems.md +31 -14
  188. data/ext/enterprise_script_service/mruby/doc/guides/symbol.md +83 -0
  189. data/ext/enterprise_script_service/mruby/doc/limitations.md +35 -36
  190. data/ext/enterprise_script_service/mruby/doc/mruby3.md +163 -0
  191. data/ext/enterprise_script_service/mruby/doc/opcode.md +102 -103
  192. data/ext/enterprise_script_service/mruby/examples/mrbgems/c_and_ruby_extension_example/mrblib/example.rb +1 -1
  193. data/ext/enterprise_script_service/mruby/examples/mrbgems/c_and_ruby_extension_example/src/example.c +5 -1
  194. data/ext/enterprise_script_service/mruby/examples/mrbgems/c_extension_example/src/example.c +5 -1
  195. data/ext/enterprise_script_service/mruby/examples/mrbgems/ruby_extension_example/mrblib/example.rb +1 -1
  196. data/ext/enterprise_script_service/mruby/include/mrbconf.h +88 -66
  197. data/ext/enterprise_script_service/mruby/include/mruby.h +160 -104
  198. data/ext/enterprise_script_service/mruby/include/mruby/array.h +27 -6
  199. data/ext/enterprise_script_service/mruby/include/mruby/boxing_nan.h +80 -46
  200. data/ext/enterprise_script_service/mruby/include/mruby/boxing_no.h +8 -8
  201. data/ext/enterprise_script_service/mruby/include/mruby/boxing_word.h +76 -55
  202. data/ext/enterprise_script_service/mruby/include/mruby/class.h +10 -8
  203. data/ext/enterprise_script_service/mruby/include/mruby/common.h +14 -1
  204. data/ext/enterprise_script_service/mruby/include/mruby/compile.h +20 -6
  205. data/ext/enterprise_script_service/mruby/include/mruby/debug.h +2 -2
  206. data/ext/enterprise_script_service/mruby/include/mruby/dump.h +18 -52
  207. data/ext/enterprise_script_service/mruby/include/mruby/endian.h +44 -0
  208. data/ext/enterprise_script_service/mruby/include/mruby/error.h +39 -5
  209. data/ext/enterprise_script_service/mruby/include/mruby/gc.h +1 -0
  210. data/ext/enterprise_script_service/mruby/include/mruby/hash.h +33 -13
  211. data/ext/enterprise_script_service/mruby/include/mruby/irep.h +74 -14
  212. data/ext/enterprise_script_service/mruby/include/mruby/istruct.h +4 -1
  213. data/ext/enterprise_script_service/mruby/include/mruby/khash.h +19 -9
  214. data/ext/enterprise_script_service/mruby/include/mruby/numeric.h +37 -63
  215. data/ext/enterprise_script_service/mruby/include/mruby/opcode.h +1 -27
  216. data/ext/enterprise_script_service/mruby/include/mruby/ops.h +29 -24
  217. data/ext/enterprise_script_service/mruby/include/mruby/presym.h +40 -0
  218. data/ext/enterprise_script_service/mruby/include/mruby/presym/disable.h +70 -0
  219. data/ext/enterprise_script_service/mruby/include/mruby/presym/enable.h +37 -0
  220. data/ext/enterprise_script_service/mruby/include/mruby/presym/scanning.h +73 -0
  221. data/ext/enterprise_script_service/mruby/include/mruby/proc.h +93 -21
  222. data/ext/enterprise_script_service/mruby/include/mruby/string.h +12 -16
  223. data/ext/enterprise_script_service/mruby/include/mruby/throw.h +14 -3
  224. data/ext/enterprise_script_service/mruby/include/mruby/value.h +60 -59
  225. data/ext/enterprise_script_service/mruby/include/mruby/variable.h +1 -0
  226. data/ext/enterprise_script_service/mruby/include/mruby/version.h +25 -6
  227. data/ext/enterprise_script_service/mruby/lib/mruby/build.rb +198 -72
  228. data/ext/enterprise_script_service/mruby/lib/mruby/build/command.rb +71 -78
  229. data/ext/enterprise_script_service/mruby/lib/mruby/build/load_gems.rb +12 -10
  230. data/ext/enterprise_script_service/mruby/lib/{mruby-core-ext.rb → mruby/core_ext.rb} +10 -3
  231. data/ext/enterprise_script_service/mruby/lib/mruby/gem.rb +84 -32
  232. data/ext/enterprise_script_service/mruby/lib/mruby/lockfile.rb +1 -1
  233. data/ext/enterprise_script_service/mruby/lib/mruby/presym.rb +132 -0
  234. data/ext/enterprise_script_service/mruby/lib/mruby/source.rb +3 -1
  235. data/ext/enterprise_script_service/mruby/mrbgems/default-no-fpu.gembox +3 -0
  236. data/ext/enterprise_script_service/mruby/mrbgems/default-no-stdio.gembox +4 -0
  237. data/ext/enterprise_script_service/mruby/mrbgems/default.gembox +9 -81
  238. data/ext/enterprise_script_service/mruby/mrbgems/full-core.gembox +1 -4
  239. data/ext/enterprise_script_service/mruby/mrbgems/math.gembox +10 -0
  240. data/ext/enterprise_script_service/mruby/mrbgems/metaprog.gembox +15 -0
  241. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/mrblib/array.rb +1 -32
  242. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/src/array.c +10 -12
  243. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/test/array.rb +0 -13
  244. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-config/mrbgem.rake +30 -18
  245. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-config/mruby-config +18 -8
  246. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/bintest/mrdb.rb +3 -6
  247. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/bintest/print.rb +10 -10
  248. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apibreak.c +14 -9
  249. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c +3 -2
  250. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c +4 -4
  251. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.h +2 -6
  252. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdbconf.h +6 -2
  253. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/bintest/mirb.rb +23 -5
  254. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/mrbgem.rake +11 -2
  255. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +46 -35
  256. data/ext/enterprise_script_service/mruby/mrbgems/{mruby-compiler → mruby-bin-mrbc}/bintest/mrbc.rb +0 -0
  257. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/mrbgem.rake +3 -4
  258. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/tools/mrbc/mrbc.c +41 -28
  259. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/bintest/mruby.rb +25 -4
  260. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/mrbgem.rake +1 -2
  261. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +26 -6
  262. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-strip/bintest/mruby-strip.rb +1 -1
  263. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-strip/tools/mruby-strip/mruby-strip.c +6 -2
  264. data/ext/enterprise_script_service/mruby/mrbgems/mruby-catch/mrbgem.rake +5 -0
  265. data/ext/enterprise_script_service/mruby/mrbgems/mruby-catch/mrblib/catch.rb +27 -0
  266. data/ext/enterprise_script_service/mruby/mrbgems/mruby-class-ext/src/class.c +7 -1
  267. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/codegen.c +495 -436
  268. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/keywords +5 -0
  269. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/lex.def +49 -44
  270. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/parse.y +637 -220
  271. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/y.tab.c +13734 -0
  272. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/mrbgem.rake +20 -23
  273. data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/mrblib/complex.rb +2 -2
  274. data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/src/complex.c +9 -9
  275. data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/test/complex.rb +4 -4
  276. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enumerator/mrblib/enumerator.rb +1 -0
  277. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enumerator/test/enumerator.rb +2 -2
  278. data/ext/enterprise_script_service/mruby/mrbgems/mruby-error/mrbgem.rake +2 -2
  279. data/ext/enterprise_script_service/mruby/mrbgems/mruby-error/src/exception.c +3 -3
  280. data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/src/eval.c +19 -238
  281. data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/test/eval.rb +21 -0
  282. data/ext/enterprise_script_service/mruby/mrbgems/mruby-fiber/src/fiber.c +19 -15
  283. data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/src/hash-ext.c +31 -5
  284. data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/test/hash.rb +7 -0
  285. data/ext/enterprise_script_service/mruby/mrbgems/mruby-inline-struct/test/inline.c +5 -6
  286. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/README.md +18 -16
  287. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/include/mruby/ext/io.h +39 -7
  288. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrbgem.rake +2 -8
  289. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/file.rb +9 -4
  290. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/file_constants.rb +0 -16
  291. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/io.rb +9 -14
  292. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file.c +107 -59
  293. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file_test.c +22 -38
  294. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/io.c +417 -203
  295. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/file.rb +20 -12
  296. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/io.rb +33 -2
  297. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/mruby_io_test.c +58 -50
  298. data/ext/enterprise_script_service/mruby/mrbgems/mruby-kernel-ext/src/kernel.c +13 -14
  299. data/ext/enterprise_script_service/mruby/mrbgems/mruby-math/src/math.c +13 -12
  300. data/ext/enterprise_script_service/mruby/mrbgems/mruby-math/test/math.rb +5 -4
  301. data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/src/metaprog.c +56 -73
  302. data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/test/metaprog.rb +13 -4
  303. data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/README.md +4 -3
  304. data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/src/method.c +80 -78
  305. data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/test/method.rb +4 -4
  306. data/ext/enterprise_script_service/mruby/mrbgems/mruby-numeric-ext/src/numeric_ext.c +14 -13
  307. data/ext/enterprise_script_service/mruby/mrbgems/mruby-object-ext/src/object.c +8 -16
  308. data/ext/enterprise_script_service/mruby/mrbgems/mruby-objectspace/src/mruby_objectspace.c +18 -13
  309. data/ext/enterprise_script_service/mruby/mrbgems/mruby-os-memsize/mrbgem.rake +10 -0
  310. data/ext/enterprise_script_service/mruby/mrbgems/mruby-os-memsize/src/memsize.c +231 -0
  311. data/ext/enterprise_script_service/mruby/mrbgems/mruby-os-memsize/test/memsize.rb +63 -0
  312. data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/README.md +15 -18
  313. data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/src/pack.c +120 -67
  314. data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/mrblib/print.rb +1 -30
  315. data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/src/print.c +65 -26
  316. data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/src/proc.c +34 -21
  317. data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/test/proc.c +1 -1
  318. data/ext/enterprise_script_service/mruby/mrbgems/mruby-random/src/random.c +98 -43
  319. data/ext/enterprise_script_service/mruby/mrbgems/mruby-random/test/random.rb +2 -2
  320. data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/mrblib/range.rb +39 -6
  321. data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/src/range.c +21 -43
  322. data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/test/range.rb +27 -3
  323. data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/mrblib/rational.rb +12 -20
  324. data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/src/rational.c +216 -38
  325. data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/test/rational.rb +6 -6
  326. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/README.md +6 -4
  327. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/src/mrb_sleep.c +5 -5
  328. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/README.md +3 -2
  329. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrbgem.rake +1 -1
  330. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/src/socket.c +47 -45
  331. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/test/sockettest.c +3 -2
  332. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/src/sprintf.c +161 -93
  333. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/test/sprintf.rb +9 -25
  334. data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/mrblib/string.rb +23 -1
  335. data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/src/string.c +17 -14
  336. data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/mrblib/struct.rb +1 -1
  337. data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/src/struct.c +23 -36
  338. data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/src/symbol.c +7 -6
  339. data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/test/symbol.rb +1 -1
  340. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/README.md +0 -1
  341. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/driver.c +5 -5
  342. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/mrbgem.rake +17 -44
  343. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/vformat.c +4 -4
  344. data/ext/enterprise_script_service/mruby/mrbgems/mruby-time/src/time.c +37 -41
  345. data/ext/enterprise_script_service/mruby/mrbgems/stdlib-ext.gembox +18 -0
  346. data/ext/enterprise_script_service/mruby/mrbgems/stdlib-io.gembox +12 -0
  347. data/ext/enterprise_script_service/mruby/mrbgems/stdlib.gembox +54 -0
  348. data/ext/enterprise_script_service/mruby/mrblib/00class.rb +10 -0
  349. data/ext/enterprise_script_service/mruby/mrblib/10error.rb +4 -0
  350. data/ext/enterprise_script_service/mruby/mrblib/array.rb +17 -9
  351. data/ext/enterprise_script_service/mruby/mrblib/enum.rb +1 -1
  352. data/ext/enterprise_script_service/mruby/mrblib/hash.rb +3 -23
  353. data/ext/enterprise_script_service/mruby/mrblib/init_mrblib.c +0 -11
  354. data/ext/enterprise_script_service/mruby/mrblib/numeric.rb +36 -11
  355. data/ext/enterprise_script_service/mruby/mrblib/range.rb +25 -3
  356. data/ext/enterprise_script_service/mruby/oss-fuzz/mruby_proto_fuzzer.cpp +2 -2
  357. data/ext/enterprise_script_service/mruby/oss-fuzz/proto_to_ruby.h +1 -1
  358. data/ext/enterprise_script_service/mruby/src/array.c +67 -90
  359. data/ext/enterprise_script_service/mruby/src/backtrace.c +18 -19
  360. data/ext/enterprise_script_service/mruby/src/class.c +819 -211
  361. data/ext/enterprise_script_service/mruby/src/codedump.c +226 -197
  362. data/ext/enterprise_script_service/mruby/src/debug.c +14 -11
  363. data/ext/enterprise_script_service/mruby/src/dump.c +470 -207
  364. data/ext/enterprise_script_service/mruby/src/enum.c +1 -1
  365. data/ext/enterprise_script_service/mruby/src/error.c +94 -20
  366. data/ext/enterprise_script_service/mruby/src/etc.c +56 -39
  367. data/ext/enterprise_script_service/mruby/src/fmt_fp.c +103 -27
  368. data/ext/enterprise_script_service/mruby/src/gc.c +86 -349
  369. data/ext/enterprise_script_service/mruby/src/hash.c +1058 -723
  370. data/ext/enterprise_script_service/mruby/src/kernel.c +78 -226
  371. data/ext/enterprise_script_service/mruby/src/load.c +215 -159
  372. data/ext/enterprise_script_service/mruby/src/numeric.c +400 -382
  373. data/ext/enterprise_script_service/mruby/src/object.c +115 -90
  374. data/ext/enterprise_script_service/mruby/src/print.c +31 -6
  375. data/ext/enterprise_script_service/mruby/src/proc.c +56 -45
  376. data/ext/enterprise_script_service/mruby/src/range.c +49 -33
  377. data/ext/enterprise_script_service/mruby/src/state.c +58 -42
  378. data/ext/enterprise_script_service/mruby/src/string.c +151 -156
  379. data/ext/enterprise_script_service/mruby/src/symbol.c +132 -66
  380. data/ext/enterprise_script_service/mruby/src/value_array.h +1 -0
  381. data/ext/enterprise_script_service/mruby/src/variable.c +158 -158
  382. data/ext/enterprise_script_service/mruby/src/vm.c +655 -645
  383. data/ext/enterprise_script_service/mruby/tasks/benchmark.rake +6 -6
  384. data/ext/enterprise_script_service/mruby/tasks/bin.rake +23 -0
  385. data/ext/enterprise_script_service/mruby/tasks/core.rake +12 -0
  386. data/ext/enterprise_script_service/mruby/tasks/doc.rake +50 -38
  387. data/ext/enterprise_script_service/mruby/tasks/gitlab.rake +64 -61
  388. data/ext/enterprise_script_service/mruby/tasks/libmruby.rake +10 -1
  389. data/ext/enterprise_script_service/mruby/tasks/mrbgems.rake +13 -1
  390. data/ext/enterprise_script_service/mruby/tasks/mrblib.rake +40 -0
  391. data/ext/enterprise_script_service/mruby/tasks/presym.rake +44 -0
  392. data/ext/enterprise_script_service/mruby/tasks/test.rake +68 -0
  393. data/ext/enterprise_script_service/mruby/tasks/toolchains/android.rake +46 -1
  394. data/ext/enterprise_script_service/mruby/tasks/toolchains/gcc.rake +8 -7
  395. data/ext/enterprise_script_service/mruby/tasks/toolchains/openwrt.rake +13 -17
  396. data/ext/enterprise_script_service/mruby/tasks/toolchains/visualcpp.rake +21 -25
  397. data/ext/enterprise_script_service/mruby/test/assert.rb +5 -4
  398. data/ext/enterprise_script_service/mruby/test/bintest.rb +5 -5
  399. data/ext/enterprise_script_service/mruby/test/t/argumenterror.rb +16 -0
  400. data/ext/enterprise_script_service/mruby/test/t/array.rb +7 -3
  401. data/ext/enterprise_script_service/mruby/test/t/bs_literal.rb +1 -1
  402. data/ext/enterprise_script_service/mruby/test/t/ensure.rb +8 -26
  403. data/ext/enterprise_script_service/mruby/test/t/exception.rb +2 -2
  404. data/ext/enterprise_script_service/mruby/test/t/float.rb +18 -8
  405. data/ext/enterprise_script_service/mruby/test/t/hash.rb +903 -281
  406. data/ext/enterprise_script_service/mruby/test/t/integer.rb +10 -38
  407. data/ext/enterprise_script_service/mruby/test/t/kernel.rb +16 -25
  408. data/ext/enterprise_script_service/mruby/test/t/literals.rb +50 -0
  409. data/ext/enterprise_script_service/mruby/test/t/module.rb +2 -2
  410. data/ext/enterprise_script_service/mruby/test/t/numeric.rb +1 -1
  411. data/ext/enterprise_script_service/mruby/test/t/range.rb +83 -1
  412. data/ext/enterprise_script_service/mruby/test/t/string.rb +4 -0
  413. data/ext/enterprise_script_service/mruby/test/t/superclass.rb +10 -10
  414. data/ext/enterprise_script_service/mruby/test/t/syntax.rb +24 -0
  415. data/ext/enterprise_script_service/mruby/test/t/vformat.rb +3 -3
  416. data/ext/enterprise_script_service/mruby_config.rb +2 -5
  417. data/ext/enterprise_script_service/mruby_engine.cpp +1 -1
  418. data/ext/enterprise_script_service/msgpack/.github/depends/boost.sh +56 -0
  419. data/ext/enterprise_script_service/msgpack/.github/workflows/coverage.yml +62 -0
  420. data/ext/enterprise_script_service/msgpack/.github/workflows/gha.yml +304 -0
  421. data/ext/enterprise_script_service/msgpack/CHANGELOG.md +11 -0
  422. data/ext/enterprise_script_service/msgpack/CMakeLists.txt +82 -39
  423. data/ext/enterprise_script_service/msgpack/Files.cmake +22 -12
  424. data/ext/enterprise_script_service/msgpack/QUICKSTART-C.md +26 -29
  425. data/ext/enterprise_script_service/msgpack/README.md +3 -2
  426. data/ext/enterprise_script_service/msgpack/appveyor.yml +6 -2
  427. data/ext/enterprise_script_service/msgpack/ci/build_cmake.sh +3 -1
  428. data/ext/enterprise_script_service/msgpack/cmake/CodeCoverage.cmake +55 -0
  429. data/ext/enterprise_script_service/msgpack/codecov.yml +36 -0
  430. data/ext/enterprise_script_service/msgpack/example/CMakeLists.txt +9 -5
  431. data/ext/enterprise_script_service/msgpack/example/boost/CMakeLists.txt +1 -1
  432. data/ext/enterprise_script_service/msgpack/example/c/CMakeLists.txt +17 -6
  433. data/ext/enterprise_script_service/msgpack/example/c/boundary.c +296 -0
  434. data/ext/enterprise_script_service/msgpack/example/c/jsonconv.c +419 -0
  435. data/ext/enterprise_script_service/msgpack/example/c/simple_c.c +1 -1
  436. data/ext/enterprise_script_service/msgpack/example/cpp03/CMakeLists.txt +3 -3
  437. data/ext/enterprise_script_service/msgpack/example/cpp11/CMakeLists.txt +2 -2
  438. data/ext/enterprise_script_service/msgpack/example/x3/CMakeLists.txt +2 -2
  439. data/ext/enterprise_script_service/msgpack/include/msgpack/pack.h +24 -1
  440. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/array_ref.hpp +5 -4
  441. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/boost/optional.hpp +4 -4
  442. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp17/vector_byte.hpp +8 -8
  443. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/map.hpp +4 -4
  444. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector.hpp +4 -4
  445. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_char.hpp +8 -8
  446. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_unsigned_char.hpp +8 -8
  447. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/wstring.hpp +4 -4
  448. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/unpack.hpp +6 -6
  449. data/ext/enterprise_script_service/msgpack/include/msgpack/version_master.h +2 -2
  450. data/ext/enterprise_script_service/msgpack/include/msgpack/zbuffer.h +4 -4
  451. data/ext/enterprise_script_service/msgpack/make_file_list.sh +38 -11
  452. data/ext/enterprise_script_service/msgpack/src/vrefbuffer.c +6 -0
  453. data/ext/enterprise_script_service/msgpack/test/CMakeLists.txt +86 -64
  454. data/ext/enterprise_script_service/msgpack/test/array_ref.cpp +4 -0
  455. data/ext/enterprise_script_service/msgpack/test/boost_fusion.cpp +4 -0
  456. data/ext/enterprise_script_service/msgpack/test/boost_optional.cpp +4 -0
  457. data/ext/enterprise_script_service/msgpack/test/boost_string_ref.cpp +4 -1
  458. data/ext/enterprise_script_service/msgpack/test/boost_string_view.cpp +4 -0
  459. data/ext/enterprise_script_service/msgpack/test/boost_variant.cpp +4 -0
  460. data/ext/enterprise_script_service/msgpack/test/buffer.cpp +4 -47
  461. data/ext/enterprise_script_service/msgpack/test/buffer_c.cpp +148 -0
  462. data/ext/enterprise_script_service/msgpack/test/carray.cpp +4 -0
  463. data/ext/enterprise_script_service/msgpack/test/cases.cpp +8 -4
  464. data/ext/enterprise_script_service/msgpack/test/convert.cpp +8 -4
  465. data/ext/enterprise_script_service/msgpack/test/fixint.cpp +4 -0
  466. data/ext/enterprise_script_service/msgpack/test/fixint_c.cpp +4 -0
  467. data/ext/enterprise_script_service/msgpack/test/fuzz_unpack_pack_fuzzer_cpp11.cpp +4 -0
  468. data/ext/enterprise_script_service/msgpack/test/iterator_cpp11.cpp +4 -0
  469. data/ext/enterprise_script_service/msgpack/test/json.cpp +4 -0
  470. data/ext/enterprise_script_service/msgpack/test/limit.cpp +8 -4
  471. data/ext/enterprise_script_service/msgpack/test/msgpack_basic.cpp +4 -0
  472. data/ext/enterprise_script_service/msgpack/test/msgpack_c.cpp +159 -0
  473. data/ext/enterprise_script_service/msgpack/test/msgpack_container.cpp +4 -0
  474. data/ext/enterprise_script_service/msgpack/test/msgpack_cpp11.cpp +32 -27
  475. data/ext/enterprise_script_service/msgpack/test/msgpack_cpp17.cpp +4 -0
  476. data/ext/enterprise_script_service/msgpack/test/msgpack_stream.cpp +4 -0
  477. data/ext/enterprise_script_service/msgpack/test/msgpack_tuple.cpp +4 -1
  478. data/ext/enterprise_script_service/msgpack/test/msgpack_vref.cpp +4 -0
  479. data/ext/enterprise_script_service/msgpack/test/msgpack_x3_parse.cpp +4 -0
  480. data/ext/enterprise_script_service/msgpack/test/object.cpp +4 -1
  481. data/ext/enterprise_script_service/msgpack/test/object_with_zone.cpp +12 -8
  482. data/ext/enterprise_script_service/msgpack/test/pack_unpack.cpp +30 -26
  483. data/ext/enterprise_script_service/msgpack/test/pack_unpack_c.cpp +4 -0
  484. data/ext/enterprise_script_service/msgpack/test/raw.cpp +4 -0
  485. data/ext/enterprise_script_service/msgpack/test/reference.cpp +4 -0
  486. data/ext/enterprise_script_service/msgpack/test/reference_cpp11.cpp +4 -0
  487. data/ext/enterprise_script_service/msgpack/test/reference_wrapper_cpp11.cpp +4 -0
  488. data/ext/enterprise_script_service/msgpack/test/shared_ptr_cpp11.cpp +4 -0
  489. data/ext/enterprise_script_service/msgpack/test/size_equal_only.cpp +4 -0
  490. data/ext/enterprise_script_service/msgpack/test/streaming.cpp +8 -4
  491. data/ext/enterprise_script_service/msgpack/test/streaming_c.cpp +4 -0
  492. data/ext/enterprise_script_service/msgpack/test/unique_ptr_cpp11.cpp +4 -0
  493. data/ext/enterprise_script_service/msgpack/test/user_class.cpp +16 -12
  494. data/ext/enterprise_script_service/msgpack/test/version.cpp +4 -0
  495. data/ext/enterprise_script_service/msgpack/test/visitor.cpp +4 -0
  496. data/ext/enterprise_script_service/msgpack/test/zone.cpp +4 -0
  497. data/lib/script_core/engine.rb +24 -5
  498. data/lib/script_core/executable.rb +4 -3
  499. data/lib/script_core/version.rb +1 -1
  500. data/lib/tasks/script_core.rake +3 -1
  501. data/script_core.gemspec +1 -2
  502. data/spec/dummy/app/lib/script_engine.rb +64 -5
  503. data/spec/script_core_spec.rb +13 -0
  504. metadata +123 -61
  505. data/ext/enterprise_script_service/libseccomp/src/arch-aarch64-syscalls.c +0 -559
  506. data/ext/enterprise_script_service/libseccomp/src/arch-arm-syscalls.c +0 -570
  507. data/ext/enterprise_script_service/libseccomp/src/arch-mips-syscalls.c +0 -562
  508. data/ext/enterprise_script_service/libseccomp/src/arch-mips64-syscalls.c +0 -562
  509. data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32-syscalls.c +0 -562
  510. data/ext/enterprise_script_service/libseccomp/src/arch-parisc-syscalls.c +0 -542
  511. data/ext/enterprise_script_service/libseccomp/src/arch-ppc-syscalls.c +0 -559
  512. data/ext/enterprise_script_service/libseccomp/src/arch-ppc64-syscalls.c +0 -559
  513. data/ext/enterprise_script_service/libseccomp/src/arch-s390-syscalls.c +0 -626
  514. data/ext/enterprise_script_service/libseccomp/src/arch-s390x-syscalls.c +0 -626
  515. data/ext/enterprise_script_service/libseccomp/src/arch-x32-syscalls.c +0 -558
  516. data/ext/enterprise_script_service/libseccomp/src/arch-x86-syscalls.c +0 -692
  517. data/ext/enterprise_script_service/libseccomp/src/arch-x86_64-syscalls.c +0 -559
  518. data/ext/enterprise_script_service/libseccomp/tests/18-sim-basic_whitelist.tests +0 -32
  519. data/ext/enterprise_script_service/libseccomp/tests/34-sim-basic_blacklist.tests +0 -32
  520. data/ext/enterprise_script_service/mruby/TODO +0 -8
  521. data/ext/enterprise_script_service/mruby/benchmark/build_config_boxing.rb +0 -28
  522. data/ext/enterprise_script_service/mruby/examples/targets/build_config_android_arm64-v8a.rb +0 -26
  523. data/ext/enterprise_script_service/mruby/examples/targets/build_config_android_armeabi.rb +0 -26
  524. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/src/kernel.c +0 -30
  525. data/ext/enterprise_script_service/mruby/mrblib/mrblib.rake +0 -18
  526. data/ext/enterprise_script_service/mruby/src/crc.c +0 -39
  527. data/ext/enterprise_script_service/mruby/src/mruby_core.rake +0 -19
  528. data/ext/enterprise_script_service/mruby/travis_config.rb +0 -54
  529. data/ext/enterprise_script_service/msgpack/.travis.yml +0 -258
@@ -9,6 +9,7 @@
9
9
  #include <mruby/numeric.h>
10
10
  #include <mruby/string.h>
11
11
  #include <mruby/class.h>
12
+ #include <mruby/presym.h>
12
13
 
13
14
  MRB_API mrb_bool
14
15
  mrb_obj_eq(mrb_state *mrb, mrb_value v1, mrb_value v2)
@@ -19,12 +20,12 @@ mrb_obj_eq(mrb_state *mrb, mrb_value v1, mrb_value v2)
19
20
  return TRUE;
20
21
 
21
22
  case MRB_TT_FALSE:
22
- case MRB_TT_FIXNUM:
23
- return (mrb_fixnum(v1) == mrb_fixnum(v2));
23
+ case MRB_TT_INTEGER:
24
+ return (mrb_integer(v1) == mrb_integer(v2));
24
25
  case MRB_TT_SYMBOL:
25
26
  return (mrb_symbol(v1) == mrb_symbol(v2));
26
27
 
27
- #ifndef MRB_WITHOUT_FLOAT
28
+ #ifndef MRB_NO_FLOAT
28
29
  case MRB_TT_FLOAT:
29
30
  return (mrb_float(v1) == mrb_float(v2));
30
31
  #endif
@@ -47,7 +48,18 @@ mrb_equal(mrb_state *mrb, mrb_value obj1, mrb_value obj2)
47
48
  mrb_value result;
48
49
 
49
50
  if (mrb_obj_eq(mrb, obj1, obj2)) return TRUE;
50
- result = mrb_funcall(mrb, obj1, "==", 1, obj2);
51
+ #ifndef MRB_NO_FLOAT
52
+ /* value mixing with integer and float */
53
+ if (mrb_integer_p(obj1)) {
54
+ if (mrb_float_p(obj2) && (mrb_float)mrb_integer(obj1) == mrb_float(obj2))
55
+ return TRUE;
56
+ }
57
+ else if (mrb_float_p(obj1)) {
58
+ if (mrb_integer_p(obj2) && mrb_float(obj1) == (mrb_float)mrb_integer(obj2))
59
+ return TRUE;
60
+ }
61
+ #endif
62
+ result = mrb_funcall_id(mrb, obj1, MRB_OPSYM(eq), 1, obj2);
51
63
  if (mrb_test(result)) return TRUE;
52
64
  return FALSE;
53
65
  }
@@ -83,13 +95,17 @@ mrb_true(mrb_state *mrb, mrb_value obj)
83
95
  static mrb_value
84
96
  nil_to_s(mrb_state *mrb, mrb_value obj)
85
97
  {
86
- return mrb_str_new_frozen(mrb, 0, 0);
98
+ mrb_value str = mrb_str_new_frozen(mrb, NULL, 0);
99
+ RSTR_SET_ASCII_FLAG(mrb_str_ptr(str));
100
+ return str;
87
101
  }
88
102
 
89
103
  static mrb_value
90
104
  nil_inspect(mrb_state *mrb, mrb_value obj)
91
105
  {
92
- return mrb_str_new_lit_frozen(mrb, "nil");
106
+ mrb_value str = mrb_str_new_lit_frozen(mrb, "nil");
107
+ RSTR_SET_ASCII_FLAG(mrb_str_ptr(str));
108
+ return str;
93
109
  }
94
110
 
95
111
  /***********************************************************************
@@ -150,7 +166,9 @@ true_xor(mrb_state *mrb, mrb_value obj)
150
166
  static mrb_value
151
167
  true_to_s(mrb_state *mrb, mrb_value obj)
152
168
  {
153
- return mrb_str_new_lit_frozen(mrb, "true");
169
+ mrb_value str = mrb_str_new_lit_frozen(mrb, "true");
170
+ RSTR_SET_ASCII_FLAG(mrb_str_ptr(str));
171
+ return str;
154
172
  }
155
173
 
156
174
  /* 15.2.5.3.4 */
@@ -257,7 +275,9 @@ false_or(mrb_state *mrb, mrb_value obj)
257
275
  static mrb_value
258
276
  false_to_s(mrb_state *mrb, mrb_value obj)
259
277
  {
260
- return mrb_str_new_lit_frozen(mrb, "false");
278
+ mrb_value str = mrb_str_new_lit_frozen(mrb, "false");
279
+ RSTR_SET_ASCII_FLAG(mrb_str_ptr(str));
280
+ return str;
261
281
  }
262
282
 
263
283
  void
@@ -296,110 +316,115 @@ mrb_init_object(mrb_state *mrb)
296
316
  mrb_define_method(mrb, f, "inspect", false_to_s, MRB_ARGS_NONE());
297
317
  }
298
318
 
299
- static mrb_value
300
- convert_type(mrb_state *mrb, mrb_value val, const char *tname, const char *method, mrb_bool raise)
319
+ static const struct types {
320
+ const enum mrb_vtype type;
321
+ const char *name;
322
+ } builtin_types[] = {
323
+ /* {MRB_TT_NIL, "nil"}, */
324
+ {MRB_TT_FALSE, "false"},
325
+ {MRB_TT_TRUE, "true"},
326
+ {MRB_TT_INTEGER,"Integer"},
327
+ {MRB_TT_SYMBOL, "Symbol"}, /* :symbol */
328
+ {MRB_TT_MODULE, "Module"},
329
+ {MRB_TT_OBJECT, "Object"},
330
+ {MRB_TT_CLASS, "Class"},
331
+ {MRB_TT_ICLASS, "iClass"}, /* internal use: mixed-in module holder */
332
+ {MRB_TT_SCLASS, "SClass"},
333
+ {MRB_TT_PROC, "Proc"},
334
+ #ifndef MRB_NO_FLOAT
335
+ {MRB_TT_FLOAT, "Float"},
336
+ #endif
337
+ {MRB_TT_ARRAY, "Array"},
338
+ {MRB_TT_HASH, "Hash"},
339
+ {MRB_TT_STRING, "String"},
340
+ {MRB_TT_RANGE, "Range"},
341
+ /* {MRB_TT_BIGNUM, "Bignum"}, */
342
+ {MRB_TT_DATA, "Data"}, /* internal use: wrapped C pointers */
343
+ /* {MRB_TT_UNDEF, "undef"}, */ /* internal use: #undef; should not happen */
344
+ {MRB_TT_MAXDEFINE, 0}
345
+ };
346
+
347
+ static const char*
348
+ type_name(enum mrb_vtype t)
301
349
  {
302
- mrb_sym m = 0;
350
+ const struct types *type = builtin_types;
303
351
 
304
- m = mrb_intern_cstr(mrb, method);
305
- if (!mrb_respond_to(mrb, val, m)) {
352
+ while (type->type < MRB_TT_MAXDEFINE) {
353
+ if (type->type == t) return type->name;
354
+ type++;
355
+ }
356
+ return NULL;
357
+ }
358
+
359
+ static mrb_value
360
+ convert_type(mrb_state *mrb, mrb_value val, const char *tname, mrb_sym method, mrb_bool raise)
361
+ {
362
+ if (!mrb_respond_to(mrb, val, method)) {
306
363
  if (raise) {
307
- mrb_raisef(mrb, E_TYPE_ERROR, "can't convert %Y into %s", val, tname);
364
+ if (tname) mrb_raisef(mrb, E_TYPE_ERROR, "can't convert %Y into %s", val, tname);
365
+ mrb_raisef(mrb, E_TYPE_ERROR, "can't convert %Y", val);
308
366
  }
309
367
  return mrb_nil_value();
310
368
  }
311
- return mrb_funcall_argv(mrb, val, m, 0, 0);
369
+ return mrb_funcall_argv(mrb, val, method, 0, 0);
312
370
  }
313
371
 
314
372
  MRB_API mrb_value
315
- mrb_convert_type(mrb_state *mrb, mrb_value val, enum mrb_vtype type, const char *tname, const char *method)
373
+ mrb_type_convert(mrb_state *mrb, mrb_value val, enum mrb_vtype type, mrb_sym method)
316
374
  {
317
375
  mrb_value v;
376
+ const char *tname;
318
377
 
319
378
  if (mrb_type(val) == type) return val;
379
+ tname = type_name(type);
320
380
  v = convert_type(mrb, val, tname, method, TRUE);
321
381
  if (mrb_type(v) != type) {
322
- mrb_raisef(mrb, E_TYPE_ERROR, "%v cannot be converted to %s by #%s", val, tname, method);
382
+ if (type == MRB_TT_STRING) return mrb_any_to_s(mrb, val);
383
+ mrb_raisef(mrb, E_TYPE_ERROR, "%v cannot be converted to %s by #%n", val, tname, method);
323
384
  }
324
385
  return v;
325
386
  }
326
387
 
327
388
  MRB_API mrb_value
328
- mrb_check_convert_type(mrb_state *mrb, mrb_value val, enum mrb_vtype type, const char *tname, const char *method)
389
+ mrb_type_convert_check(mrb_state *mrb, mrb_value val, enum mrb_vtype type, mrb_sym method)
329
390
  {
330
391
  mrb_value v;
331
392
 
332
393
  if (mrb_type(val) == type && type != MRB_TT_DATA && type != MRB_TT_ISTRUCT) return val;
333
- v = convert_type(mrb, val, tname, method, FALSE);
394
+ v = convert_type(mrb, val, type_name(type), method, FALSE);
334
395
  if (mrb_nil_p(v) || mrb_type(v) != type) return mrb_nil_value();
335
396
  return v;
336
397
  }
337
398
 
338
- static const struct types {
339
- unsigned char type;
340
- const char *name;
341
- } builtin_types[] = {
342
- /* {MRB_TT_NIL, "nil"}, */
343
- {MRB_TT_FALSE, "false"},
344
- {MRB_TT_TRUE, "true"},
345
- {MRB_TT_FIXNUM, "Fixnum"},
346
- {MRB_TT_SYMBOL, "Symbol"}, /* :symbol */
347
- {MRB_TT_MODULE, "Module"},
348
- {MRB_TT_OBJECT, "Object"},
349
- {MRB_TT_CLASS, "Class"},
350
- {MRB_TT_ICLASS, "iClass"}, /* internal use: mixed-in module holder */
351
- {MRB_TT_SCLASS, "SClass"},
352
- {MRB_TT_PROC, "Proc"},
353
- #ifndef MRB_WITHOUT_FLOAT
354
- {MRB_TT_FLOAT, "Float"},
355
- #endif
356
- {MRB_TT_ARRAY, "Array"},
357
- {MRB_TT_HASH, "Hash"},
358
- {MRB_TT_STRING, "String"},
359
- {MRB_TT_RANGE, "Range"},
360
- /* {MRB_TT_BIGNUM, "Bignum"}, */
361
- {MRB_TT_FILE, "File"},
362
- {MRB_TT_DATA, "Data"}, /* internal use: wrapped C pointers */
363
- /* {MRB_TT_VARMAP, "Varmap"}, */ /* internal use: dynamic variables */
364
- /* {MRB_TT_NODE, "Node"}, */ /* internal use: syntax tree node */
365
- /* {MRB_TT_UNDEF, "undef"}, */ /* internal use: #undef; should not happen */
366
- {MRB_TT_MAXDEFINE, 0}
367
- };
368
-
369
399
  MRB_API void
370
400
  mrb_check_type(mrb_state *mrb, mrb_value x, enum mrb_vtype t)
371
401
  {
372
- const struct types *type = builtin_types;
373
- enum mrb_vtype xt;
374
-
375
- xt = mrb_type(x);
376
- if ((xt != t) || (xt == MRB_TT_DATA) || (xt == MRB_TT_ISTRUCT)) {
377
- while (type->type < MRB_TT_MAXDEFINE) {
378
- if (type->type == t) {
379
- const char *etype;
380
-
381
- if (mrb_nil_p(x)) {
382
- etype = "nil";
383
- }
384
- else if (mrb_fixnum_p(x)) {
385
- etype = "Fixnum";
386
- }
387
- else if (mrb_symbol_p(x)) {
388
- etype = "Symbol";
389
- }
390
- else if (mrb_immediate_p(x)) {
391
- etype = RSTRING_PTR(mrb_obj_as_string(mrb, x));
392
- }
393
- else {
394
- etype = mrb_obj_classname(mrb, x);
395
- }
396
- mrb_raisef(mrb, E_TYPE_ERROR, "wrong argument type %s (expected %s)",
397
- etype, type->name);
398
- }
399
- type++;
400
- }
401
- mrb_raisef(mrb, E_TYPE_ERROR, "unknown type %d (%d given)", t, mrb_type(x));
402
+ enum mrb_vtype xt = mrb_type(x);
403
+ const char *tname, *ename;
404
+
405
+ if (t == xt) return;
406
+
407
+ tname = type_name(t);
408
+ if (mrb_nil_p(x)) {
409
+ ename = "nil";
410
+ }
411
+ else if (mrb_integer_p(x)) {
412
+ ename = "Fixnum";
413
+ }
414
+ else if (mrb_symbol_p(x)) {
415
+ ename = "Symbol";
416
+ }
417
+ else if (mrb_immediate_p(x)) {
418
+ ename = RSTRING_PTR(mrb_obj_as_string(mrb, x));
419
+ }
420
+ else {
421
+ ename = mrb_obj_classname(mrb, x);
422
+ }
423
+ if (tname) {
424
+ mrb_raisef(mrb, E_TYPE_ERROR, "wrong argument type %s (expected %s)",
425
+ ename, tname);
402
426
  }
427
+ mrb_raisef(mrb, E_TYPE_ERROR, "unknown type %d (%s given)", t, ename);
403
428
  }
404
429
 
405
430
  /* 15.3.1.3.46 */
@@ -485,8 +510,8 @@ MRB_API mrb_value
485
510
  mrb_to_int(mrb_state *mrb, mrb_value val)
486
511
  {
487
512
 
488
- if (!mrb_fixnum_p(val)) {
489
- #ifndef MRB_WITHOUT_FLOAT
513
+ if (!mrb_integer_p(val)) {
514
+ #ifndef MRB_NO_FLOAT
490
515
  if (mrb_float_p(val)) {
491
516
  return mrb_flo_to_fixnum(mrb, val);
492
517
  }
@@ -506,13 +531,13 @@ mrb_convert_to_integer(mrb_state *mrb, mrb_value val, mrb_int base)
506
531
  mrb_raise(mrb, E_TYPE_ERROR, "can't convert nil into Integer");
507
532
  }
508
533
  switch (mrb_type(val)) {
509
- #ifndef MRB_WITHOUT_FLOAT
534
+ #ifndef MRB_NO_FLOAT
510
535
  case MRB_TT_FLOAT:
511
536
  if (base != 0) goto arg_error;
512
537
  return mrb_flo_to_fixnum(mrb, val);
513
538
  #endif
514
539
 
515
- case MRB_TT_FIXNUM:
540
+ case MRB_TT_INTEGER:
516
541
  if (base != 0) goto arg_error;
517
542
  return val;
518
543
 
@@ -542,7 +567,7 @@ mrb_Integer(mrb_state *mrb, mrb_value val)
542
567
  return mrb_convert_to_integer(mrb, val, 0);
543
568
  }
544
569
 
545
- #ifndef MRB_WITHOUT_FLOAT
570
+ #ifndef MRB_NO_FLOAT
546
571
  MRB_API mrb_value
547
572
  mrb_Float(mrb_state *mrb, mrb_value val)
548
573
  {
@@ -550,8 +575,8 @@ mrb_Float(mrb_state *mrb, mrb_value val)
550
575
  mrb_raise(mrb, E_TYPE_ERROR, "can't convert nil into Float");
551
576
  }
552
577
  switch (mrb_type(val)) {
553
- case MRB_TT_FIXNUM:
554
- return mrb_float_value(mrb, (mrb_float)mrb_fixnum(val));
578
+ case MRB_TT_INTEGER:
579
+ return mrb_float_value(mrb, (mrb_float)mrb_integer(val));
555
580
 
556
581
  case MRB_TT_FLOAT:
557
582
  return val;
@@ -560,7 +585,7 @@ mrb_Float(mrb_state *mrb, mrb_value val)
560
585
  return mrb_float_value(mrb, mrb_str_to_dbl(mrb, val, TRUE));
561
586
 
562
587
  default:
563
- return mrb_convert_type(mrb, val, MRB_TT_FLOAT, "Float", "to_f");
588
+ return mrb_type_convert(mrb, val, MRB_TT_FLOAT, MRB_SYM(to_f));
564
589
  }
565
590
  }
566
591
  #endif
@@ -629,12 +654,12 @@ mrb_check_hash_type(mrb_state *mrb, mrb_value hash)
629
654
  MRB_API mrb_value
630
655
  mrb_inspect(mrb_state *mrb, mrb_value obj)
631
656
  {
632
- return mrb_obj_as_string(mrb, mrb_funcall(mrb, obj, "inspect", 0));
657
+ return mrb_obj_as_string(mrb, mrb_funcall_id(mrb, obj, MRB_SYM(inspect), 0));
633
658
  }
634
659
 
635
660
  MRB_API mrb_bool
636
661
  mrb_eql(mrb_state *mrb, mrb_value obj1, mrb_value obj2)
637
662
  {
638
663
  if (mrb_obj_eq(mrb, obj1, obj2)) return TRUE;
639
- return mrb_test(mrb_funcall(mrb, obj1, "eql?", 1, obj2));
664
+ return mrb_test(mrb_funcall_id(mrb, obj1, MRB_SYM_Q(eql), 1, obj2));
640
665
  }
@@ -7,24 +7,49 @@
7
7
  #include <mruby.h>
8
8
  #include <mruby/string.h>
9
9
  #include <mruby/variable.h>
10
+ #include <mruby/error.h>
11
+ #include <mruby/presym.h>
12
+ #include <string.h>
13
+
14
+ #ifndef MRB_NO_STDIO
15
+ static void
16
+ printcstr(const char *str, size_t len, FILE *stream)
17
+ {
18
+ if (str) {
19
+ fwrite(str, len, 1, stream);
20
+ putc('\n', stream);
21
+ }
22
+ }
10
23
 
11
- #ifndef MRB_DISABLE_STDIO
12
24
  static void
13
25
  printstr(mrb_value obj, FILE *stream)
14
26
  {
15
27
  if (mrb_string_p(obj)) {
16
- fwrite(RSTRING_PTR(obj), RSTRING_LEN(obj), 1, stream);
17
- putc('\n', stream);
28
+ printcstr(RSTRING_PTR(obj), RSTRING_LEN(obj), stream);
18
29
  }
19
30
  }
20
31
  #else
32
+ # define printcstr(str, len, stream) (void)0
21
33
  # define printstr(obj, stream) (void)0
22
34
  #endif
23
35
 
36
+ void
37
+ mrb_core_init_printabort(void)
38
+ {
39
+ static const char *str = "Failed mruby core initialization";
40
+ printcstr(str, strlen(str), stdout);
41
+ }
42
+
24
43
  MRB_API void
25
44
  mrb_p(mrb_state *mrb, mrb_value obj)
26
45
  {
27
- printstr(mrb_inspect(mrb, obj), stdout);
46
+ if (mrb_type(obj) == MRB_TT_EXCEPTION && mrb_obj_ptr(obj) == mrb->nomem_err) {
47
+ static const char *str = "Out of memory";
48
+ printcstr(str, strlen(str), stdout);
49
+ }
50
+ else {
51
+ printstr(mrb_inspect(mrb, obj), stdout);
52
+ }
28
53
  }
29
54
 
30
55
  MRB_API void
@@ -36,11 +61,11 @@ mrb_print_error(mrb_state *mrb)
36
61
  MRB_API void
37
62
  mrb_show_version(mrb_state *mrb)
38
63
  {
39
- printstr(mrb_const_get(mrb, mrb_obj_value(mrb->object_class), mrb_intern_lit(mrb, "MRUBY_DESCRIPTION")), stdout);
64
+ printstr(mrb_const_get(mrb, mrb_obj_value(mrb->object_class), MRB_SYM(MRUBY_DESCRIPTION)), stdout);
40
65
  }
41
66
 
42
67
  MRB_API void
43
68
  mrb_show_copyright(mrb_state *mrb)
44
69
  {
45
- printstr(mrb_const_get(mrb, mrb_obj_value(mrb->object_class), mrb_intern_lit(mrb, "MRUBY_COPYRIGHT")), stdout);
70
+ printstr(mrb_const_get(mrb, mrb_obj_value(mrb->object_class), MRB_SYM(MRUBY_COPYRIGHT)), stdout);
46
71
  }
@@ -8,13 +8,33 @@
8
8
  #include <mruby/class.h>
9
9
  #include <mruby/proc.h>
10
10
  #include <mruby/opcode.h>
11
+ #include <mruby/data.h>
12
+ #include <mruby/presym.h>
11
13
 
12
14
  static const mrb_code call_iseq[] = {
13
15
  OP_CALL,
14
16
  };
15
17
 
18
+ static const mrb_irep call_irep = {
19
+ 0, /* nlocals */
20
+ 2, /* nregs */
21
+ 0, /* clen */
22
+ MRB_ISEQ_NO_FREE | MRB_IREP_NO_FREE, /* flags */
23
+ call_iseq, /* iseq */
24
+ NULL, /* pool */
25
+ NULL, /* syms */
26
+ NULL, /* reps */
27
+ NULL, /* lv */
28
+ NULL, /* debug_info */
29
+ 1, /* ilen */
30
+ 0, /* plen */
31
+ 0, /* slen */
32
+ 1, /* rlen */
33
+ 0, /* refcnt */
34
+ };
35
+
16
36
  struct RProc*
17
- mrb_proc_new(mrb_state *mrb, mrb_irep *irep)
37
+ mrb_proc_new(mrb_state *mrb, const mrb_irep *irep)
18
38
  {
19
39
  struct RProc *p;
20
40
  mrb_callinfo *ci = mrb->c->ci;
@@ -27,33 +47,34 @@ mrb_proc_new(mrb_state *mrb, mrb_irep *irep)
27
47
  tc = MRB_PROC_TARGET_CLASS(ci->proc);
28
48
  }
29
49
  if (tc == NULL) {
30
- tc = ci->target_class;
50
+ tc = mrb_vm_ci_target_class(ci);
31
51
  }
32
52
  p->upper = ci->proc;
33
53
  p->e.target_class = tc;
34
54
  }
35
55
  p->body.irep = irep;
36
- mrb_irep_incref(mrb, irep);
56
+ if (irep) {
57
+ mrb_irep_incref(mrb, (mrb_irep*)irep);
58
+ }
37
59
 
38
60
  return p;
39
61
  }
40
62
 
41
- static struct REnv*
42
- env_new(mrb_state *mrb, mrb_int nlocals)
63
+ struct REnv*
64
+ mrb_env_new(mrb_state *mrb, struct mrb_context *c, mrb_callinfo *ci, int nstacks, mrb_value *stack, struct RClass *tc)
43
65
  {
44
66
  struct REnv *e;
45
- mrb_callinfo *ci = mrb->c->ci;
46
- int bidx;
67
+ mrb_int bidx;
47
68
 
48
- e = (struct REnv*)mrb_obj_alloc(mrb, MRB_TT_ENV, NULL);
49
- MRB_ENV_SET_STACK_LEN(e, nlocals);
69
+ e = (struct REnv*)mrb_obj_alloc(mrb, MRB_TT_ENV, tc);
70
+ MRB_ENV_SET_LEN(e, nstacks);
50
71
  bidx = ci->argc;
51
- if (ci->argc < 0) bidx = 2;
72
+ if (bidx < 0) bidx = 2;
52
73
  else bidx += 1;
53
74
  MRB_ENV_SET_BIDX(e, bidx);
54
75
  e->mid = ci->mid;
55
- e->stack = mrb->c->stack;
56
- e->cxt = mrb->c;
76
+ e->stack = stack;
77
+ e->cxt = c;
57
78
 
58
79
  return e;
59
80
  }
@@ -62,21 +83,17 @@ static void
62
83
  closure_setup(mrb_state *mrb, struct RProc *p)
63
84
  {
64
85
  mrb_callinfo *ci = mrb->c->ci;
65
- struct RProc *up = p->upper;
86
+ const struct RProc *up = p->upper;
66
87
  struct REnv *e = NULL;
67
88
 
68
- if (ci && ci->env) {
69
- e = ci->env;
89
+ if (ci && (e = mrb_vm_ci_env(ci)) != NULL) {
90
+ /* do nothing, because e is assigned already */
70
91
  }
71
92
  else if (up) {
72
93
  struct RClass *tc = MRB_PROC_TARGET_CLASS(p);
73
94
 
74
- e = env_new(mrb, up->body.irep->nlocals);
75
- ci->env = e;
76
- if (tc) {
77
- e->c = tc;
78
- mrb_field_write_barrier(mrb, (struct RBasic*)e, (struct RBasic*)tc);
79
- }
95
+ e = mrb_env_new(mrb, mrb->c, ci, up->body.irep->nlocals, ci->stack, tc);
96
+ ci->u.env = e;
80
97
  if (MRB_PROC_ENV_P(up) && MRB_PROC_ENV(up)->cxt == NULL) {
81
98
  e->mid = MRB_PROC_ENV(up)->mid;
82
99
  }
@@ -89,7 +106,7 @@ closure_setup(mrb_state *mrb, struct RProc *p)
89
106
  }
90
107
 
91
108
  struct RProc*
92
- mrb_closure_new(mrb_state *mrb, mrb_irep *irep)
109
+ mrb_closure_new(mrb_state *mrb, const mrb_irep *irep)
93
110
  {
94
111
  struct RProc *p = mrb_proc_new(mrb, irep);
95
112
 
@@ -118,11 +135,14 @@ mrb_proc_new_cfunc_with_env(mrb_state *mrb, mrb_func_t func, mrb_int argc, const
118
135
  struct REnv *e;
119
136
  int i;
120
137
 
121
- p->e.env = e = env_new(mrb, argc);
138
+ p->e.env = e = mrb_env_new(mrb, mrb->c, mrb->c->ci, 0, NULL, NULL);
122
139
  p->flags |= MRB_PROC_ENVSET;
123
140
  mrb_field_write_barrier(mrb, (struct RBasic*)p, (struct RBasic*)e);
124
- MRB_ENV_UNSHARE_STACK(e);
141
+ MRB_ENV_CLOSE(e);
142
+
125
143
  e->stack = (mrb_value*)mrb_malloc(mrb, sizeof(mrb_value) * argc);
144
+ MRB_ENV_SET_LEN(e, argc);
145
+
126
146
  if (argv) {
127
147
  for (i = 0; i < argc; ++i) {
128
148
  e->stack[i] = argv[i];
@@ -145,7 +165,7 @@ mrb_closure_new_cfunc(mrb_state *mrb, mrb_func_t func, int nlocals)
145
165
  MRB_API mrb_value
146
166
  mrb_proc_cfunc_env_get(mrb_state *mrb, mrb_int idx)
147
167
  {
148
- struct RProc *p = mrb->c->ci->proc;
168
+ const struct RProc *p = mrb->c->ci->proc;
149
169
  struct REnv *e;
150
170
 
151
171
  if (!p || !MRB_PROC_CFUNC_P(p)) {
@@ -155,9 +175,9 @@ mrb_proc_cfunc_env_get(mrb_state *mrb, mrb_int idx)
155
175
  if (!e) {
156
176
  mrb_raise(mrb, E_TYPE_ERROR, "Can't get cfunc env from cfunc Proc without REnv.");
157
177
  }
158
- if (idx < 0 || MRB_ENV_STACK_LEN(e) <= idx) {
178
+ if (idx < 0 || MRB_ENV_LEN(e) <= idx) {
159
179
  mrb_raisef(mrb, E_INDEX_ERROR, "Env index out of range: %i (expected: 0 <= index < %i)",
160
- idx, MRB_ENV_STACK_LEN(e));
180
+ idx, MRB_ENV_LEN(e));
161
181
  }
162
182
 
163
183
  return e->stack[idx];
@@ -173,7 +193,7 @@ mrb_proc_copy(struct RProc *a, struct RProc *b)
173
193
  a->flags = b->flags;
174
194
  a->body = b->body;
175
195
  if (!MRB_PROC_CFUNC_P(a) && a->body.irep) {
176
- a->body.irep->refcnt++;
196
+ mrb_irep_incref(NULL, (mrb_irep*)a->body.irep);
177
197
  }
178
198
  a->upper = b->upper;
179
199
  a->e.env = b->e.env;
@@ -192,9 +212,9 @@ mrb_proc_s_new(mrb_state *mrb, mrb_value proc_class)
192
212
  p = (struct RProc *)mrb_obj_alloc(mrb, MRB_TT_PROC, mrb_class_ptr(proc_class));
193
213
  mrb_proc_copy(p, mrb_proc_ptr(blk));
194
214
  proc = mrb_obj_value(p);
195
- mrb_funcall_with_block(mrb, proc, mrb_intern_lit(mrb, "initialize"), 0, NULL, proc);
215
+ mrb_funcall_with_block(mrb, proc, MRB_SYM(initialize), 0, NULL, proc);
196
216
  if (!MRB_PROC_STRICT_P(p) &&
197
- mrb->c->ci > mrb->c->cibase && MRB_PROC_ENV(p) == mrb->c->ci[-1].env) {
217
+ mrb->c->ci > mrb->c->cibase && MRB_PROC_ENV(p) == mrb->c->ci[-1].u.env) {
198
218
  p->flags |= MRB_PROC_ORPHAN;
199
219
  }
200
220
  return proc;
@@ -203,9 +223,8 @@ mrb_proc_s_new(mrb_state *mrb, mrb_value proc_class)
203
223
  static mrb_value
204
224
  mrb_proc_init_copy(mrb_state *mrb, mrb_value self)
205
225
  {
206
- mrb_value proc;
226
+ mrb_value proc = mrb_get_arg1(mrb);
207
227
 
208
- mrb_get_args(mrb, "o", &proc);
209
228
  if (!mrb_proc_p(proc)) {
210
229
  mrb_raise(mrb, E_ARGUMENT_ERROR, "not a proc");
211
230
  }
@@ -217,7 +236,7 @@ mrb_proc_init_copy(mrb_state *mrb, mrb_value self)
217
236
  static mrb_value
218
237
  proc_arity(mrb_state *mrb, mrb_value self)
219
238
  {
220
- return mrb_fixnum_value(mrb_proc_arity(mrb_proc_ptr(self)));
239
+ return mrb_int_value(mrb, mrb_proc_arity(mrb_proc_ptr(self)));
221
240
  }
222
241
 
223
242
  /* 15.3.1.2.6 */
@@ -255,7 +274,7 @@ proc_lambda(mrb_state *mrb, mrb_value self)
255
274
  mrb_int
256
275
  mrb_proc_arity(const struct RProc *p)
257
276
  {
258
- struct mrb_irep *irep;
277
+ const mrb_irep *irep;
259
278
  const mrb_code *pc;
260
279
  mrb_aspec aspec;
261
280
  int ma, op, ra, pa, arity;
@@ -291,23 +310,15 @@ mrb_init_proc(mrb_state *mrb)
291
310
  {
292
311
  struct RProc *p;
293
312
  mrb_method_t m;
294
- mrb_irep *call_irep = (mrb_irep *)mrb_malloc(mrb, sizeof(mrb_irep));
295
- static const mrb_irep mrb_irep_zero = { 0 };
296
-
297
- *call_irep = mrb_irep_zero;
298
- call_irep->flags = MRB_ISEQ_NO_FREE;
299
- call_irep->iseq = call_iseq;
300
- call_irep->ilen = 1;
301
- call_irep->nregs = 2; /* receiver and block */
302
313
 
303
314
  mrb_define_class_method(mrb, mrb->proc_class, "new", mrb_proc_s_new, MRB_ARGS_NONE()|MRB_ARGS_BLOCK());
304
315
  mrb_define_method(mrb, mrb->proc_class, "initialize_copy", mrb_proc_init_copy, MRB_ARGS_REQ(1));
305
316
  mrb_define_method(mrb, mrb->proc_class, "arity", proc_arity, MRB_ARGS_NONE());
306
317
 
307
- p = mrb_proc_new(mrb, call_irep);
318
+ p = mrb_proc_new(mrb, &call_irep);
308
319
  MRB_METHOD_FROM_PROC(m, p);
309
- mrb_define_method_raw(mrb, mrb->proc_class, mrb_intern_lit(mrb, "call"), m);
310
- mrb_define_method_raw(mrb, mrb->proc_class, mrb_intern_lit(mrb, "[]"), m);
320
+ mrb_define_method_raw(mrb, mrb->proc_class, MRB_SYM(call), m);
321
+ mrb_define_method_raw(mrb, mrb->proc_class, MRB_OPSYM(aref), m);
311
322
 
312
323
  mrb_define_class_method(mrb, mrb->kernel_module, "lambda", proc_lambda, MRB_ARGS_NONE()|MRB_ARGS_BLOCK()); /* 15.3.1.2.6 */
313
324
  mrb_define_method(mrb, mrb->kernel_module, "lambda", proc_lambda, MRB_ARGS_NONE()|MRB_ARGS_BLOCK()); /* 15.3.1.3.27 */