script_core 0.2.3 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -6,6 +6,9 @@
6
6
 
7
7
  #include <string.h>
8
8
  #include <stdlib.h>
9
+ #ifdef MRB_USE_MALLOC_TRIM
10
+ #include <malloc.h>
11
+ #endif
9
12
  #include <mruby.h>
10
13
  #include <mruby/array.h>
11
14
  #include <mruby/class.h>
@@ -19,6 +22,7 @@
19
22
  #include <mruby/gc.h>
20
23
  #include <mruby/error.h>
21
24
  #include <mruby/throw.h>
25
+ #include <mruby/presym.h>
22
26
 
23
27
  /*
24
28
  = Tri-color Incremental Garbage Collection
@@ -35,9 +39,14 @@
35
39
  * Gray - Marked, But the child objects are unmarked.
36
40
  * Black - Marked, the child objects are also marked.
37
41
 
42
+ Extra color
43
+
44
+ * Red - Static (ROM object) no need to be collected.
45
+ - All child objects should be Red as well.
46
+
38
47
  == Two White Types
39
48
 
40
- There're two white color types in a flip-flop fashion: White-A and White-B,
49
+ There are two white color types in a flip-flop fashion: White-A and White-B,
41
50
  which respectively represent the Current White color (the newly allocated
42
51
  objects in the current GC cycle) and the Sweep Target White color (the
43
52
  dead objects to be swept).
@@ -99,8 +108,14 @@ struct free_obj {
99
108
  struct RBasic *next;
100
109
  };
101
110
 
111
+ struct RVALUE_initializer {
112
+ MRB_OBJECT_HEADER;
113
+ char padding[sizeof(void*) * 4 - sizeof(uint32_t)];
114
+ };
115
+
102
116
  typedef struct {
103
117
  union {
118
+ struct RVALUE_initializer init; /* must be first member to ensure initialization */
104
119
  struct free_obj free;
105
120
  struct RBasic basic;
106
121
  struct RObject object;
@@ -117,7 +132,7 @@ typedef struct {
117
132
  struct RException exc;
118
133
  struct RBreak brk;
119
134
  #ifdef MRB_WORD_BOXING
120
- #ifndef MRB_WITHOUT_FLOAT
135
+ #ifndef MRB_NO_FLOAT
121
136
  struct RFloat floatv;
122
137
  #endif
123
138
  struct RCptr cptr;
@@ -185,6 +200,7 @@ gettimeofday_time(void)
185
200
  #define GC_WHITE_A 1
186
201
  #define GC_WHITE_B (1 << 1)
187
202
  #define GC_BLACK (1 << 2)
203
+ #define GC_RED 7
188
204
  #define GC_WHITES (GC_WHITE_A | GC_WHITE_B)
189
205
  #define GC_COLOR_MASK 7
190
206
 
@@ -194,13 +210,16 @@ gettimeofday_time(void)
194
210
  #define paint_partial_white(s, o) ((o)->color = (s)->current_white_part)
195
211
  #define is_gray(o) ((o)->color == GC_GRAY)
196
212
  #define is_white(o) ((o)->color & GC_WHITES)
197
- #define is_black(o) ((o)->color & GC_BLACK)
213
+ #define is_black(o) ((o)->color == GC_BLACK)
214
+ #define is_red(o) ((o)->color == GC_RED)
198
215
  #define flip_white_part(s) ((s)->current_white_part = other_white_part(s))
199
216
  #define other_white_part(s) ((s)->current_white_part ^ GC_WHITES)
200
217
  #define is_dead(s, o) (((o)->color & other_white_part(s) & GC_WHITES) || (o)->tt == MRB_TT_FREE)
201
218
 
202
219
  #define objects(p) ((RVALUE *)p->objects)
203
220
 
221
+ mrb_noreturn void mrb_raise_nomemory(mrb_state *mrb);
222
+
204
223
  MRB_API void*
205
224
  mrb_realloc_simple(mrb_state *mrb, void *p, size_t len)
206
225
  {
@@ -223,14 +242,8 @@ mrb_realloc(mrb_state *mrb, void *p, size_t len)
223
242
  p2 = mrb_realloc_simple(mrb, p, len);
224
243
  if (len == 0) return p2;
225
244
  if (p2 == NULL) {
226
- if (mrb->gc.out_of_memory) {
227
- mrb_exc_raise(mrb, mrb_obj_value(mrb->nomem_err));
228
- /* mrb_panic(mrb); */
229
- }
230
- else {
231
- mrb->gc.out_of_memory = TRUE;
232
- mrb_exc_raise(mrb, mrb_obj_value(mrb->nomem_err));
233
- }
245
+ mrb->gc.out_of_memory = TRUE;
246
+ mrb_raise_nomemory(mrb);
234
247
  }
235
248
  else {
236
249
  mrb->gc.out_of_memory = FALSE;
@@ -461,7 +474,7 @@ mrb_gc_protect(mrb_state *mrb, mrb_value obj)
461
474
  gc_protect(mrb, &mrb->gc, mrb_basic_ptr(obj));
462
475
  }
463
476
 
464
- #define GC_ROOT_NAME "_gc_root_"
477
+ #define GC_ROOT_SYM MRB_SYM(_gc_root_)
465
478
 
466
479
  /* mrb_gc_register() keeps the object from GC.
467
480
 
@@ -478,7 +491,7 @@ mrb_gc_register(mrb_state *mrb, mrb_value obj)
478
491
  mrb_value table;
479
492
 
480
493
  if (mrb_immediate_p(obj)) return;
481
- root = mrb_intern_lit(mrb, GC_ROOT_NAME);
494
+ root = GC_ROOT_SYM;
482
495
  table = mrb_gv_get(mrb, root);
483
496
  if (mrb_nil_p(table) || !mrb_array_p(table)) {
484
497
  table = mrb_ary_new(mrb);
@@ -497,7 +510,7 @@ mrb_gc_unregister(mrb_state *mrb, mrb_value obj)
497
510
  mrb_int i;
498
511
 
499
512
  if (mrb_immediate_p(obj)) return;
500
- root = mrb_intern_lit(mrb, GC_ROOT_NAME);
513
+ root = GC_ROOT_SYM;
501
514
  table = mrb_gv_get(mrb, root);
502
515
  if (mrb_nil_p(table)) return;
503
516
  if (!mrb_array_p(table)) {
@@ -585,11 +598,11 @@ add_gray_list(mrb_state *mrb, mrb_gc *gc, struct RBasic *obj)
585
598
  gc->gray_list = obj;
586
599
  }
587
600
 
588
- static int
601
+ static mrb_int
589
602
  ci_nregs(mrb_callinfo *ci)
590
603
  {
591
- struct RProc *p = ci->proc;
592
- int n = 0;
604
+ const struct RProc *p = ci->proc;
605
+ mrb_int n = 0;
593
606
 
594
607
  if (!p) {
595
608
  if (ci->argc < 0) return 3;
@@ -614,11 +627,14 @@ mark_context_stack(mrb_state *mrb, struct mrb_context *c)
614
627
  size_t e;
615
628
  mrb_value nil;
616
629
 
617
- if (c->stack == NULL) return;
618
- e = c->stack - c->stbase;
630
+ if (c->stbase == NULL) return;
619
631
  if (c->ci) {
632
+ e = (c->ci->stack ? c->ci->stack - c->stbase : 0);
620
633
  e += ci_nregs(c->ci);
621
634
  }
635
+ else {
636
+ e = 0;
637
+ }
622
638
  if (c->stbase + e > c->stend) e = c->stend - c->stbase;
623
639
  for (i=0; i<e; i++) {
624
640
  mrb_value v = c->stbase[i];
@@ -637,7 +653,6 @@ mark_context_stack(mrb_state *mrb, struct mrb_context *c)
637
653
  static void
638
654
  mark_context(mrb_state *mrb, struct mrb_context *c)
639
655
  {
640
- int i;
641
656
  mrb_callinfo *ci;
642
657
 
643
658
  start:
@@ -649,15 +664,10 @@ mark_context(mrb_state *mrb, struct mrb_context *c)
649
664
  /* mark call stack */
650
665
  if (c->cibase) {
651
666
  for (ci = c->cibase; ci <= c->ci; ci++) {
652
- mrb_gc_mark(mrb, (struct RBasic*)ci->env);
653
667
  mrb_gc_mark(mrb, (struct RBasic*)ci->proc);
654
- mrb_gc_mark(mrb, (struct RBasic*)ci->target_class);
668
+ mrb_gc_mark(mrb, (struct RBasic*)ci->u.target_class);
655
669
  }
656
670
  }
657
- /* mark ensure stack */
658
- for (i=0; i<c->eidx; i++) {
659
- mrb_gc_mark(mrb, (struct RBasic*)c->ensure[i]);
660
- }
661
671
  /* mark fibers */
662
672
  mrb_gc_mark(mrb, (struct RBasic*)c->fib);
663
673
  if (c->prev) {
@@ -671,7 +681,6 @@ gc_mark_children(mrb_state *mrb, mrb_gc *gc, struct RBasic *obj)
671
681
  {
672
682
  mrb_assert(is_gray(obj));
673
683
  paint_black(obj);
674
- gc->gray_list = obj->gcnext;
675
684
  mrb_gc_mark(mrb, (struct RBasic*)obj->c);
676
685
  switch (obj->tt) {
677
686
  case MRB_TT_ICLASS:
@@ -714,10 +723,10 @@ gc_mark_children(mrb_state *mrb, mrb_gc *gc, struct RBasic *obj)
714
723
  struct REnv *e = (struct REnv*)obj;
715
724
  mrb_int i, len;
716
725
 
717
- if (MRB_ENV_STACK_SHARED_P(e) && e->cxt && e->cxt->fib) {
726
+ if (MRB_ENV_ONSTACK_P(e) && e->cxt && e->cxt->fib) {
718
727
  mrb_gc_mark(mrb, (struct RBasic*)e->cxt->fib);
719
728
  }
720
- len = MRB_ENV_STACK_LEN(e);
729
+ len = MRB_ENV_LEN(e);
721
730
  for (i=0; i<len; i++) {
722
731
  mrb_gc_mark_value(mrb, e->stack[i]);
723
732
  }
@@ -735,10 +744,11 @@ gc_mark_children(mrb_state *mrb, mrb_gc *gc, struct RBasic *obj)
735
744
  case MRB_TT_ARRAY:
736
745
  {
737
746
  struct RArray *a = (struct RArray*)obj;
738
- size_t i, e;
747
+ size_t i, e=ARY_LEN(a);
748
+ mrb_value *p = ARY_PTR(a);
739
749
 
740
- for (i=0,e=ARY_LEN(a); i<e; i++) {
741
- mrb_gc_mark_value(mrb, ARY_PTR(a)[i]);
750
+ for (i=0; i<e; i++) {
751
+ mrb_gc_mark_value(mrb, p[i]);
742
752
  }
743
753
  }
744
754
  break;
@@ -759,6 +769,14 @@ gc_mark_children(mrb_state *mrb, mrb_gc *gc, struct RBasic *obj)
759
769
  mrb_gc_mark_range(mrb, (struct RRange*)obj);
760
770
  break;
761
771
 
772
+ case MRB_TT_BREAK:
773
+ {
774
+ struct RBreak *brk = (struct RBreak*)obj;
775
+ mrb_gc_mark(mrb, (struct RBasic*)mrb_break_proc_get(brk));
776
+ mrb_gc_mark_value(mrb, mrb_break_value_get(brk));
777
+ }
778
+ break;
779
+
762
780
  default:
763
781
  break;
764
782
  }
@@ -769,6 +787,7 @@ mrb_gc_mark(mrb_state *mrb, struct RBasic *obj)
769
787
  {
770
788
  if (obj == 0) return;
771
789
  if (!is_white(obj)) return;
790
+ if (is_red(obj)) return;
772
791
  mrb_assert((obj)->tt != MRB_TT_FREE);
773
792
  add_gray_list(mrb, &mrb->gc, obj);
774
793
  }
@@ -778,22 +797,6 @@ obj_free(mrb_state *mrb, struct RBasic *obj, int end)
778
797
  {
779
798
  DEBUG(fprintf(stderr, "obj_free(%p,tt=%d)\n",obj,obj->tt));
780
799
  switch (obj->tt) {
781
- /* immediate - no mark */
782
- case MRB_TT_TRUE:
783
- case MRB_TT_FIXNUM:
784
- case MRB_TT_SYMBOL:
785
- /* cannot happen */
786
- return;
787
-
788
- #ifndef MRB_WITHOUT_FLOAT
789
- case MRB_TT_FLOAT:
790
- #ifdef MRB_WORD_BOXING
791
- break;
792
- #else
793
- return;
794
- #endif
795
- #endif
796
-
797
800
  case MRB_TT_OBJECT:
798
801
  mrb_gc_free_iv(mrb, (struct RObject*)obj);
799
802
  break;
@@ -807,18 +810,20 @@ obj_free(mrb_state *mrb, struct RBasic *obj, int end)
807
810
  case MRB_TT_SCLASS:
808
811
  mrb_gc_free_mt(mrb, (struct RClass*)obj);
809
812
  mrb_gc_free_iv(mrb, (struct RObject*)obj);
810
- mrb_mc_clear_by_class(mrb, (struct RClass*)obj);
813
+ if (!end)
814
+ mrb_mc_clear_by_class(mrb, (struct RClass*)obj);
811
815
  break;
812
816
  case MRB_TT_ICLASS:
813
817
  if (MRB_FLAG_TEST(obj, MRB_FL_CLASS_IS_ORIGIN))
814
818
  mrb_gc_free_mt(mrb, (struct RClass*)obj);
815
- mrb_mc_clear_by_class(mrb, (struct RClass*)obj);
819
+ if (!end)
820
+ mrb_mc_clear_by_class(mrb, (struct RClass*)obj);
816
821
  break;
817
822
  case MRB_TT_ENV:
818
823
  {
819
824
  struct REnv *e = (struct REnv*)obj;
820
825
 
821
- if (MRB_ENV_STACK_SHARED_P(e)) {
826
+ if (MRB_ENV_ONSTACK_P(e)) {
822
827
  /* cannot be freed */
823
828
  e->stack = NULL;
824
829
  break;
@@ -838,9 +843,9 @@ obj_free(mrb_state *mrb, struct RBasic *obj, int end)
838
843
  mrb_callinfo *ce = c->cibase;
839
844
 
840
845
  while (ce <= ci) {
841
- struct REnv *e = ci->env;
846
+ struct REnv *e = ci->u.env;
842
847
  if (e && !mrb_object_dead_p(mrb, (struct RBasic*)e) &&
843
- e->tt == MRB_TT_ENV && MRB_ENV_STACK_SHARED_P(e)) {
848
+ e->tt == MRB_TT_ENV && MRB_ENV_ONSTACK_P(e)) {
844
849
  mrb_env_unshare(mrb, e);
845
850
  }
846
851
  ci--;
@@ -872,7 +877,7 @@ obj_free(mrb_state *mrb, struct RBasic *obj, int end)
872
877
  struct RProc *p = (struct RProc*)obj;
873
878
 
874
879
  if (!MRB_PROC_CFUNC_P(p) && p->body.irep) {
875
- mrb_irep *irep = p->body.irep;
880
+ mrb_irep *irep = (mrb_irep*)p->body.irep;
876
881
  if (end) {
877
882
  mrb_irep_cutref(mrb, irep);
878
883
  }
@@ -928,10 +933,10 @@ root_scan_phase(mrb_state *mrb, mrb_gc *gc)
928
933
  mrb_gc_mark(mrb, (struct RBasic*)mrb->hash_class);
929
934
  mrb_gc_mark(mrb, (struct RBasic*)mrb->range_class);
930
935
 
931
- #ifndef MRB_WITHOUT_FLOAT
936
+ #ifndef MRB_NO_FLOAT
932
937
  mrb_gc_mark(mrb, (struct RBasic*)mrb->float_class);
933
938
  #endif
934
- mrb_gc_mark(mrb, (struct RBasic*)mrb->fixnum_class);
939
+ mrb_gc_mark(mrb, (struct RBasic*)mrb->integer_class);
935
940
  mrb_gc_mark(mrb, (struct RBasic*)mrb->true_class);
936
941
  mrb_gc_mark(mrb, (struct RBasic*)mrb->false_class);
937
942
  mrb_gc_mark(mrb, (struct RBasic*)mrb->nil_class);
@@ -958,13 +963,12 @@ root_scan_phase(mrb_state *mrb, mrb_gc *gc)
958
963
  }
959
964
  }
960
965
 
966
+ /* rough estimation of number of GC marks (non recursive) */
961
967
  static size_t
962
- gc_gray_mark(mrb_state *mrb, mrb_gc *gc, struct RBasic *obj)
968
+ gc_gray_counts(mrb_state *mrb, mrb_gc *gc, struct RBasic *obj)
963
969
  {
964
970
  size_t children = 0;
965
971
 
966
- gc_mark_children(mrb, gc, obj);
967
-
968
972
  switch (obj->tt) {
969
973
  case MRB_TT_ICLASS:
970
974
  children++;
@@ -989,7 +993,7 @@ gc_gray_mark(mrb_state *mrb, mrb_gc *gc, struct RBasic *obj)
989
993
  break;
990
994
 
991
995
  case MRB_TT_ENV:
992
- children += MRB_ENV_STACK_LEN(obj);
996
+ children += MRB_ENV_LEN(obj);
993
997
  break;
994
998
 
995
999
  case MRB_TT_FIBER:
@@ -1001,7 +1005,7 @@ gc_gray_mark(mrb_state *mrb, mrb_gc *gc, struct RBasic *obj)
1001
1005
  if (!c || c->status == MRB_FIBER_TERMINATED) break;
1002
1006
 
1003
1007
  /* mark stack */
1004
- i = c->stack - c->stbase;
1008
+ i = c->ci->stack - c->stbase;
1005
1009
 
1006
1010
  if (c->ci) {
1007
1011
  i += ci_nregs(c->ci);
@@ -1009,9 +1013,6 @@ gc_gray_mark(mrb_state *mrb, mrb_gc *gc, struct RBasic *obj)
1009
1013
  if (c->stbase + i > c->stend) i = c->stend - c->stbase;
1010
1014
  children += i;
1011
1015
 
1012
- /* mark ensure stack */
1013
- children += c->eidx;
1014
-
1015
1016
  /* mark closure */
1016
1017
  if (c->cibase) {
1017
1018
  for (i=0, ci = c->cibase; ci <= c->ci; i++, ci++)
@@ -1035,6 +1036,7 @@ gc_gray_mark(mrb_state *mrb, mrb_gc *gc, struct RBasic *obj)
1035
1036
 
1036
1037
  case MRB_TT_PROC:
1037
1038
  case MRB_TT_RANGE:
1039
+ case MRB_TT_BREAK:
1038
1040
  children+=2;
1039
1041
  break;
1040
1042
 
@@ -1048,10 +1050,9 @@ gc_gray_mark(mrb_state *mrb, mrb_gc *gc, struct RBasic *obj)
1048
1050
  static void
1049
1051
  gc_mark_gray_list(mrb_state *mrb, mrb_gc *gc) {
1050
1052
  while (gc->gray_list) {
1051
- if (is_gray(gc->gray_list))
1052
- gc_mark_children(mrb, gc, gc->gray_list);
1053
- else
1054
- gc->gray_list = gc->gray_list->gcnext;
1053
+ struct RBasic *obj = gc->gray_list;
1054
+ gc->gray_list = obj->gcnext;
1055
+ gc_mark_children(mrb, gc, obj);
1055
1056
  }
1056
1057
  }
1057
1058
 
@@ -1062,7 +1063,10 @@ incremental_marking_phase(mrb_state *mrb, mrb_gc *gc, size_t limit)
1062
1063
  size_t tried_marks = 0;
1063
1064
 
1064
1065
  while (gc->gray_list && tried_marks < limit) {
1065
- tried_marks += gc_gray_mark(mrb, gc, gc->gray_list);
1066
+ struct RBasic *obj = gc->gray_list;
1067
+ gc->gray_list = obj->gcnext;
1068
+ gc_mark_children(mrb, gc, obj);
1069
+ tried_marks += gc_gray_counts(mrb, gc, obj);
1066
1070
  }
1067
1071
 
1068
1072
  return tried_marks;
@@ -1079,7 +1083,9 @@ final_marking_phase(mrb_state *mrb, mrb_gc *gc)
1079
1083
  }
1080
1084
  mrb_gc_mark_gv(mrb);
1081
1085
  mark_context(mrb, mrb->c);
1082
- mark_context(mrb, mrb->root_c);
1086
+ if (mrb->c != mrb->root_c) {
1087
+ mark_context(mrb, mrb->root_c);
1088
+ }
1083
1089
  mrb_gc_mark(mrb, (struct RBasic*)mrb->exc);
1084
1090
  gc_mark_gray_list(mrb, gc);
1085
1091
  mrb_assert(gc->gray_list == NULL);
@@ -1294,6 +1300,7 @@ mrb_full_gc(mrb_state *mrb)
1294
1300
  {
1295
1301
  mrb_gc *gc = &mrb->gc;
1296
1302
 
1303
+ if (!mrb->c) return;
1297
1304
  if (gc->disabled || gc->iterating) return;
1298
1305
 
1299
1306
  GC_INVOKE_TIME_REPORT("mrb_full_gc()");
@@ -1317,6 +1324,9 @@ mrb_full_gc(mrb_state *mrb)
1317
1324
  gc->full = FALSE;
1318
1325
  }
1319
1326
 
1327
+ #ifdef MRB_USE_MALLOC_TRIM
1328
+ malloc_trim(0);
1329
+ #endif
1320
1330
  GC_TIME_STOP_AND_REPORT;
1321
1331
  }
1322
1332
 
@@ -1601,11 +1611,12 @@ mrb_objspace_each_objects(mrb_state *mrb, mrb_each_object_callback *callback, vo
1601
1611
  }
1602
1612
  }
1603
1613
 
1604
- #ifdef GC_TEST
1605
- #ifdef GC_DEBUG
1606
- static mrb_value gc_test(mrb_state *, mrb_value);
1607
- #endif
1608
- #endif
1614
+ size_t
1615
+ mrb_objspace_page_slot_size(void)
1616
+ {
1617
+ return sizeof(RVALUE);
1618
+ }
1619
+
1609
1620
 
1610
1621
  void
1611
1622
  mrb_init_gc(mrb_state *mrb)
@@ -1626,278 +1637,4 @@ mrb_init_gc(mrb_state *mrb)
1626
1637
  mrb_define_class_method(mrb, gc, "step_ratio=", gc_step_ratio_set, MRB_ARGS_REQ(1));
1627
1638
  mrb_define_class_method(mrb, gc, "generational_mode=", gc_generational_mode_set, MRB_ARGS_REQ(1));
1628
1639
  mrb_define_class_method(mrb, gc, "generational_mode", gc_generational_mode_get, MRB_ARGS_NONE());
1629
- #ifdef GC_TEST
1630
- #ifdef GC_DEBUG
1631
- mrb_define_class_method(mrb, gc, "test", gc_test, MRB_ARGS_NONE());
1632
- #endif
1633
- #endif
1634
- }
1635
-
1636
- #ifdef GC_TEST
1637
- #ifdef GC_DEBUG
1638
- void
1639
- test_mrb_field_write_barrier(void)
1640
- {
1641
- mrb_state *mrb = mrb_open();
1642
- struct RBasic *obj, *value;
1643
- mrb_gc *gc = &mrb->gc;
1644
-
1645
- puts("test_mrb_field_write_barrier");
1646
- gc->generational = FALSE;
1647
- obj = mrb_basic_ptr(mrb_ary_new(mrb));
1648
- value = mrb_basic_ptr(mrb_str_new_lit(mrb, "value"));
1649
- paint_black(obj);
1650
- paint_partial_white(gc, value);
1651
-
1652
-
1653
- puts(" in MRB_GC_STATE_MARK");
1654
- gc->state = MRB_GC_STATE_MARK;
1655
- mrb_field_write_barrier(mrb, obj, value);
1656
-
1657
- mrb_assert(is_gray(value));
1658
-
1659
-
1660
- puts(" in MRB_GC_STATE_SWEEP");
1661
- paint_partial_white(gc, value);
1662
- gc->state = MRB_GC_STATE_SWEEP;
1663
- mrb_field_write_barrier(mrb, obj, value);
1664
-
1665
- mrb_assert(obj->color & gc->current_white_part);
1666
- mrb_assert(value->color & gc->current_white_part);
1667
-
1668
-
1669
- puts(" fail with black");
1670
- gc->state = MRB_GC_STATE_MARK;
1671
- paint_white(obj);
1672
- paint_partial_white(gc, value);
1673
- mrb_field_write_barrier(mrb, obj, value);
1674
-
1675
- mrb_assert(obj->color & gc->current_white_part);
1676
-
1677
-
1678
- puts(" fail with gray");
1679
- gc->state = MRB_GC_STATE_MARK;
1680
- paint_black(obj);
1681
- paint_gray(value);
1682
- mrb_field_write_barrier(mrb, obj, value);
1683
-
1684
- mrb_assert(is_gray(value));
1685
-
1686
-
1687
- {
1688
- puts("test_mrb_field_write_barrier_value");
1689
- obj = mrb_basic_ptr(mrb_ary_new(mrb));
1690
- mrb_value value = mrb_str_new_lit(mrb, "value");
1691
- paint_black(obj);
1692
- paint_partial_white(gc, mrb_basic_ptr(value));
1693
-
1694
- gc->state = MRB_GC_STATE_MARK;
1695
- mrb_field_write_barrier_value(mrb, obj, value);
1696
-
1697
- mrb_assert(is_gray(mrb_basic_ptr(value)));
1698
- }
1699
-
1700
- mrb_close(mrb);
1701
- }
1702
-
1703
- void
1704
- test_mrb_write_barrier(void)
1705
- {
1706
- mrb_state *mrb = mrb_open();
1707
- struct RBasic *obj;
1708
- mrb_gc *gc = &mrb->gc;
1709
-
1710
- puts("test_mrb_write_barrier");
1711
- obj = mrb_basic_ptr(mrb_ary_new(mrb));
1712
- paint_black(obj);
1713
-
1714
- puts(" in MRB_GC_STATE_MARK");
1715
- gc->state = MRB_GC_STATE_MARK;
1716
- mrb_write_barrier(mrb, obj);
1717
-
1718
- mrb_assert(is_gray(obj));
1719
- mrb_assert(gc->atomic_gray_list == obj);
1720
-
1721
-
1722
- puts(" fail with gray");
1723
- paint_gray(obj);
1724
- mrb_write_barrier(mrb, obj);
1725
-
1726
- mrb_assert(is_gray(obj));
1727
-
1728
- mrb_close(mrb);
1729
- }
1730
-
1731
- void
1732
- test_add_gray_list(void)
1733
- {
1734
- mrb_state *mrb = mrb_open();
1735
- struct RBasic *obj1, *obj2;
1736
- mrb_gc *gc = &mrb->gc;
1737
-
1738
- puts("test_add_gray_list");
1739
- change_gen_gc_mode(mrb, gc, FALSE);
1740
- mrb_assert(gc->gray_list == NULL);
1741
- obj1 = mrb_basic_ptr(mrb_str_new_lit(mrb, "test"));
1742
- add_gray_list(mrb, gc, obj1);
1743
- mrb_assert(gc->gray_list == obj1);
1744
- mrb_assert(is_gray(obj1));
1745
-
1746
- obj2 = mrb_basic_ptr(mrb_str_new_lit(mrb, "test"));
1747
- add_gray_list(mrb, gc, obj2);
1748
- mrb_assert(gc->gray_list == obj2);
1749
- mrb_assert(gc->gray_list->gcnext == obj1);
1750
- mrb_assert(is_gray(obj2));
1751
-
1752
- mrb_close(mrb);
1753
- }
1754
-
1755
- void
1756
- test_gc_gray_mark(void)
1757
- {
1758
- mrb_state *mrb = mrb_open();
1759
- mrb_value obj_v, value_v;
1760
- struct RBasic *obj;
1761
- size_t gray_num = 0;
1762
- mrb_gc *gc = &mrb->gc;
1763
-
1764
- puts("test_gc_gray_mark");
1765
-
1766
- puts(" in MRB_TT_CLASS");
1767
- obj = (struct RBasic*)mrb->object_class;
1768
- paint_gray(obj);
1769
- gray_num = gc_gray_mark(mrb, gc, obj);
1770
- mrb_assert(is_black(obj));
1771
- mrb_assert(gray_num > 1);
1772
-
1773
- puts(" in MRB_TT_ARRAY");
1774
- obj_v = mrb_ary_new(mrb);
1775
- value_v = mrb_str_new_lit(mrb, "test");
1776
- paint_gray(mrb_basic_ptr(obj_v));
1777
- paint_partial_white(gc, mrb_basic_ptr(value_v));
1778
- mrb_ary_push(mrb, obj_v, value_v);
1779
- gray_num = gc_gray_mark(mrb, gc, mrb_basic_ptr(obj_v));
1780
- mrb_assert(is_black(mrb_basic_ptr(obj_v)));
1781
- mrb_assert(is_gray(mrb_basic_ptr(value_v)));
1782
- mrb_assert(gray_num == 1);
1783
-
1784
- mrb_close(mrb);
1785
- }
1786
-
1787
- void
1788
- test_incremental_gc(void)
1789
- {
1790
- mrb_state *mrb = mrb_open();
1791
- size_t max = ~0, live = 0, total = 0, freed = 0;
1792
- RVALUE *free;
1793
- mrb_heap_page *page;
1794
- mrb_gc *gc = &mrb->gc;
1795
-
1796
- puts("test_incremental_gc");
1797
- change_gen_gc_mode(mrb, gc, FALSE);
1798
-
1799
- puts(" in mrb_full_gc");
1800
- mrb_full_gc(mrb);
1801
-
1802
- mrb_assert(gc->state == MRB_GC_STATE_ROOT);
1803
- puts(" in MRB_GC_STATE_ROOT");
1804
- incremental_gc(mrb, gc, max);
1805
- mrb_assert(gc->state == MRB_GC_STATE_MARK);
1806
- puts(" in MRB_GC_STATE_MARK");
1807
- incremental_gc_until(mrb, gc, MRB_GC_STATE_SWEEP);
1808
- mrb_assert(gc->state == MRB_GC_STATE_SWEEP);
1809
-
1810
- puts(" in MRB_GC_STATE_SWEEP");
1811
- page = gc->heaps;
1812
- while (page) {
1813
- RVALUE *p = objects(page);
1814
- RVALUE *e = p + MRB_HEAP_PAGE_SIZE;
1815
- while (p<e) {
1816
- if (is_black(&p->as.basic)) {
1817
- live++;
1818
- }
1819
- if (is_gray(&p->as.basic) && !is_dead(gc, &p->as.basic)) {
1820
- printf("%p\n", &p->as.basic);
1821
- }
1822
- p++;
1823
- }
1824
- page = page->next;
1825
- total += MRB_HEAP_PAGE_SIZE;
1826
- }
1827
-
1828
- mrb_assert(gc->gray_list == NULL);
1829
-
1830
- incremental_gc(mrb, gc, max);
1831
- mrb_assert(gc->state == MRB_GC_STATE_SWEEP);
1832
-
1833
- incremental_gc(mrb, gc, max);
1834
- mrb_assert(gc->state == MRB_GC_STATE_ROOT);
1835
-
1836
- free = (RVALUE*)gc->heaps->freelist;
1837
- while (free) {
1838
- freed++;
1839
- free = (RVALUE*)free->as.free.next;
1840
- }
1841
-
1842
- mrb_assert(gc->live == live);
1843
- mrb_assert(gc->live == total-freed);
1844
-
1845
- puts("test_incremental_gc(gen)");
1846
- incremental_gc_until(mrb, gc, MRB_GC_STATE_SWEEP);
1847
- change_gen_gc_mode(mrb, gc, TRUE);
1848
-
1849
- mrb_assert(gc->full == FALSE);
1850
- mrb_assert(gc->state == MRB_GC_STATE_ROOT);
1851
-
1852
- puts(" in minor");
1853
- mrb_assert(is_minor_gc(gc));
1854
- mrb_assert(gc->majorgc_old_threshold > 0);
1855
- gc->majorgc_old_threshold = 0;
1856
- mrb_incremental_gc(mrb);
1857
- mrb_assert(gc->full == TRUE);
1858
- mrb_assert(gc->state == MRB_GC_STATE_ROOT);
1859
-
1860
- puts(" in major");
1861
- mrb_assert(is_major_gc(gc));
1862
- do {
1863
- mrb_incremental_gc(mrb);
1864
- } while (gc->state != MRB_GC_STATE_ROOT);
1865
- mrb_assert(gc->full == FALSE);
1866
-
1867
- mrb_close(mrb);
1868
- }
1869
-
1870
- void
1871
- test_incremental_sweep_phase(void)
1872
- {
1873
- mrb_state *mrb = mrb_open();
1874
- mrb_gc *gc = &mrb->gc;
1875
-
1876
- puts("test_incremental_sweep_phase");
1877
-
1878
- add_heap(mrb, gc);
1879
- gc->sweeps = gc->heaps;
1880
-
1881
- mrb_assert(gc->heaps->next->next == NULL);
1882
- mrb_assert(gc->free_heaps->next->next == NULL);
1883
- incremental_sweep_phase(mrb, gc, MRB_HEAP_PAGE_SIZE * 3);
1884
-
1885
- mrb_assert(gc->heaps->next == NULL);
1886
- mrb_assert(gc->heaps == gc->free_heaps);
1887
-
1888
- mrb_close(mrb);
1889
- }
1890
-
1891
- static mrb_value
1892
- gc_test(mrb_state *mrb, mrb_value self)
1893
- {
1894
- test_mrb_field_write_barrier();
1895
- test_mrb_write_barrier();
1896
- test_add_gray_list();
1897
- test_gc_gray_mark();
1898
- test_incremental_gc();
1899
- test_incremental_sweep_phase();
1900
- return mrb_nil_value();
1901
1640
  }
1902
- #endif /* GC_DEBUG */
1903
- #endif /* GC_TEST */