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
@@ -11,6 +11,47 @@
11
11
  #include <mruby/string.h>
12
12
  #include <mruby/dump.h>
13
13
  #include <mruby/class.h>
14
+ #include <mruby/presym.h>
15
+
16
+ #ifndef MRB_NO_PRESYM
17
+
18
+ #ifndef MRB_PRESYM_SCANNING
19
+ /* const uint16_t presym_length_table[] */
20
+ /* const char * const presym_name_table[] */
21
+ # include <mruby/presym/table.h>
22
+ #endif
23
+
24
+ static mrb_sym
25
+ presym_find(const char *name, size_t len)
26
+ {
27
+ if (presym_length_table[MRB_PRESYM_MAX-1] < len) return 0;
28
+
29
+ mrb_sym start, idx, presym_size = MRB_PRESYM_MAX;
30
+ int cmp;
31
+ for (start = 0; presym_size != 0; presym_size/=2) {
32
+ idx = start+presym_size/2;
33
+ cmp = (int)len-(int)presym_length_table[idx];
34
+ if (cmp == 0) {
35
+ cmp = memcmp(name, presym_name_table[idx], len);
36
+ if (cmp == 0) return idx+1;
37
+ }
38
+ if (0 < cmp) {
39
+ start = ++idx;
40
+ --presym_size;
41
+ }
42
+ }
43
+ return 0;
44
+ }
45
+
46
+ static const char*
47
+ presym_sym2name(mrb_sym sym, mrb_int *lenp)
48
+ {
49
+ if (sym > MRB_PRESYM_MAX) return NULL;
50
+ if (lenp) *lenp = presym_length_table[sym-1];
51
+ return presym_name_table[sym-1];
52
+ }
53
+
54
+ #endif /* MRB_NO_PRESYM */
14
55
 
15
56
  /* ------------------------------------------------------ */
16
57
  typedef struct symbol_name {
@@ -20,46 +61,35 @@ typedef struct symbol_name {
20
61
  const char *name;
21
62
  } symbol_name;
22
63
 
23
- #define SYMBOL_INLINE_BIT_POS 1
24
- #define SYMBOL_INLINE_LOWER_BIT_POS 2
25
- #define SYMBOL_INLINE (1 << (SYMBOL_INLINE_BIT_POS - 1))
26
- #define SYMBOL_INLINE_LOWER (1 << (SYMBOL_INLINE_LOWER_BIT_POS - 1))
27
- #define SYMBOL_NORMAL_SHIFT SYMBOL_INLINE_BIT_POS
28
- #define SYMBOL_INLINE_SHIFT SYMBOL_INLINE_LOWER_BIT_POS
29
- #ifdef MRB_ENABLE_ALL_SYMBOLS
30
- # define SYMBOL_INLINE_P(sym) FALSE
31
- # define SYMBOL_INLINE_LOWER_P(sym) FALSE
32
- # define sym_inline_pack(name, len) 0
33
- # define sym_inline_unpack(sym, buf, lenp) NULL
34
- #else
35
- # define SYMBOL_INLINE_P(sym) ((sym) & SYMBOL_INLINE)
36
- # define SYMBOL_INLINE_LOWER_P(sym) ((sym) & SYMBOL_INLINE_LOWER)
37
- #endif
38
-
39
64
  static void
40
65
  sym_validate_len(mrb_state *mrb, size_t len)
41
66
  {
42
- if (len >= RITE_LV_NULL_MARK) {
67
+ if (len >= UINT16_MAX) {
43
68
  mrb_raise(mrb, E_ARGUMENT_ERROR, "symbol length too long");
44
69
  }
45
70
  }
46
71
 
47
- #ifndef MRB_ENABLE_ALL_SYMBOLS
72
+ #ifdef MRB_USE_ALL_SYMBOLS
73
+ # define SYMBOL_INLINE_P(sym) FALSE
74
+ # define sym_inline_pack(name, len) 0
75
+ # define sym_inline_unpack(sym, buf, lenp) NULL
76
+ #else
77
+ # define SYMBOL_INLINE_P(sym) ((sym) >= (1<<24))
78
+
48
79
  static const char pack_table[] = "_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
49
80
 
50
81
  static mrb_sym
51
- sym_inline_pack(const char *name, uint16_t len)
82
+ sym_inline_pack(const char *name, size_t len)
52
83
  {
53
- const int lower_length_max = (MRB_SYMBOL_BIT - 2) / 5;
54
- const int mix_length_max = (MRB_SYMBOL_BIT - 2) / 6;
84
+ const size_t pack_length_max = 5;
55
85
 
56
86
  char c;
57
87
  const char *p;
58
- int i;
88
+ size_t i;
59
89
  mrb_sym sym = 0;
60
- mrb_bool lower = TRUE;
61
90
 
62
- if (len > lower_length_max) return 0; /* too long */
91
+ if (len > pack_length_max) return 0; /* too long */
92
+ if (len == 0) return 0; /* empty string */
63
93
  for (i=0; i<len; i++) {
64
94
  uint32_t bits;
65
95
 
@@ -68,36 +98,21 @@ sym_inline_pack(const char *name, uint16_t len)
68
98
  p = strchr(pack_table, (int)c);
69
99
  if (p == 0) return 0; /* non alnum char */
70
100
  bits = (uint32_t)(p - pack_table)+1;
71
- if (bits > 27) lower = FALSE;
72
- if (i >= mix_length_max) break;
73
- sym |= bits<<(i*6+SYMBOL_INLINE_SHIFT);
101
+ sym |= bits<<(24-i*6);
74
102
  }
75
- if (lower) {
76
- sym = 0;
77
- for (i=0; i<len; i++) {
78
- uint32_t bits;
79
-
80
- c = name[i];
81
- p = strchr(pack_table, (int)c);
82
- bits = (uint32_t)(p - pack_table)+1;
83
- sym |= bits<<(i*5+SYMBOL_INLINE_SHIFT);
84
- }
85
- return sym | SYMBOL_INLINE | SYMBOL_INLINE_LOWER;
86
- }
87
- if (len > mix_length_max) return 0;
88
- return sym | SYMBOL_INLINE;
103
+ mrb_assert(SYMBOL_INLINE_P(sym));
104
+ return sym;
89
105
  }
90
106
 
91
107
  static const char*
92
108
  sym_inline_unpack(mrb_sym sym, char *buf, mrb_int *lenp)
93
109
  {
94
- int bit_per_char = SYMBOL_INLINE_LOWER_P(sym) ? 5 : 6;
95
110
  int i;
96
111
 
97
112
  mrb_assert(SYMBOL_INLINE_P(sym));
98
113
 
99
- for (i=0; i<30/bit_per_char; i++) {
100
- uint32_t bits = sym>>(i*bit_per_char+SYMBOL_INLINE_SHIFT) & ((1<<bit_per_char)-1);
114
+ for (i=0; i<5; i++) {
115
+ uint32_t bits = sym>>(24-i*6) & 0x3f;
101
116
  if (bits == 0) break;
102
117
  buf[i] = pack_table[bits-1];;
103
118
  }
@@ -124,12 +139,18 @@ symhash(const char *key, size_t len)
124
139
  }
125
140
 
126
141
  static mrb_sym
127
- find_symbol(mrb_state *mrb, const char *name, uint16_t len, uint8_t *hashp)
142
+ find_symbol(mrb_state *mrb, const char *name, size_t len, uint8_t *hashp)
128
143
  {
129
144
  mrb_sym i;
130
145
  symbol_name *sname;
131
146
  uint8_t hash;
132
147
 
148
+ #ifndef MRB_NO_PRESYM
149
+ /* presym */
150
+ i = presym_find(name, len);
151
+ if (i > 0) return i;
152
+ #endif
153
+
133
154
  /* inline symbol */
134
155
  i = sym_inline_pack(name, len);
135
156
  if (i > 0) return i;
@@ -142,14 +163,14 @@ find_symbol(mrb_state *mrb, const char *name, uint16_t len, uint8_t *hashp)
142
163
  do {
143
164
  sname = &mrb->symtbl[i];
144
165
  if (sname->len == len && memcmp(sname->name, name, len) == 0) {
145
- return i<<SYMBOL_NORMAL_SHIFT;
166
+ return (i+MRB_PRESYM_MAX);
146
167
  }
147
168
  if (sname->prev == 0xff) {
148
169
  i -= 0xff;
149
170
  sname = &mrb->symtbl[i];
150
171
  while (mrb->symtbl < sname) {
151
172
  if (sname->len == len && memcmp(sname->name, name, len) == 0) {
152
- return (mrb_sym)(sname - mrb->symtbl)<<SYMBOL_NORMAL_SHIFT;
173
+ return (mrb_sym)((sname - mrb->symtbl)+MRB_PRESYM_MAX);
153
174
  }
154
175
  sname--;
155
176
  }
@@ -172,11 +193,13 @@ sym_intern(mrb_state *mrb, const char *name, size_t len, mrb_bool lit)
172
193
  if (sym > 0) return sym;
173
194
 
174
195
  /* registering a new symbol */
175
- sym = ++mrb->symidx;
196
+ sym = mrb->symidx + 1;
176
197
  if (mrb->symcapa < sym) {
177
- if (mrb->symcapa == 0) mrb->symcapa = 100;
178
- else mrb->symcapa = (size_t)(mrb->symcapa * 6 / 5);
179
- mrb->symtbl = (symbol_name*)mrb_realloc(mrb, mrb->symtbl, sizeof(symbol_name)*(mrb->symcapa+1));
198
+ size_t symcapa = mrb->symcapa;
199
+ if (symcapa == 0) symcapa = 100;
200
+ else symcapa = (size_t)(symcapa * 6 / 5);
201
+ mrb->symtbl = (symbol_name*)mrb_realloc(mrb, mrb->symtbl, sizeof(symbol_name)*(symcapa+1));
202
+ mrb->symcapa = symcapa;
180
203
  }
181
204
  sname = &mrb->symtbl[sym];
182
205
  sname->len = (uint16_t)len;
@@ -201,9 +224,9 @@ sym_intern(mrb_state *mrb, const char *name, size_t len, mrb_bool lit)
201
224
  else {
202
225
  sname->prev = 0;
203
226
  }
204
- mrb->symhash[hash] = sym;
227
+ mrb->symhash[hash] = mrb->symidx = sym;
205
228
 
206
- return sym<<SYMBOL_NORMAL_SHIFT;
229
+ return (sym+MRB_PRESYM_MAX);
207
230
  }
208
231
 
209
232
  MRB_API mrb_sym
@@ -230,36 +253,69 @@ mrb_intern_str(mrb_state *mrb, mrb_value str)
230
253
  return mrb_intern(mrb, RSTRING_PTR(str), RSTRING_LEN(str));
231
254
  }
232
255
 
233
- MRB_API mrb_value
234
- mrb_check_intern(mrb_state *mrb, const char *name, size_t len)
256
+ MRB_API mrb_sym
257
+ mrb_intern_check(mrb_state *mrb, const char *name, size_t len)
235
258
  {
236
259
  mrb_sym sym;
237
260
 
238
261
  sym_validate_len(mrb, len);
239
262
  sym = find_symbol(mrb, name, len, NULL);
240
- if (sym > 0) return mrb_symbol_value(sym);
241
- return mrb_nil_value();
263
+ if (sym > 0) return sym;
264
+ return 0;
265
+ }
266
+
267
+ MRB_API mrb_value
268
+ mrb_check_intern(mrb_state *mrb, const char *name, size_t len)
269
+ {
270
+ mrb_sym sym = mrb_intern_check(mrb, name, len);
271
+ if (sym == 0) return mrb_nil_value();
272
+ return mrb_symbol_value(sym);
273
+ }
274
+
275
+ MRB_API mrb_sym
276
+ mrb_intern_check_cstr(mrb_state *mrb, const char *name)
277
+ {
278
+ return mrb_intern_check(mrb, name, strlen(name));
242
279
  }
243
280
 
244
281
  MRB_API mrb_value
245
282
  mrb_check_intern_cstr(mrb_state *mrb, const char *name)
246
283
  {
247
- return mrb_check_intern(mrb, name, strlen(name));
284
+ mrb_sym sym = mrb_intern_check_cstr(mrb, name);
285
+ if (sym == 0) return mrb_nil_value();
286
+ return mrb_symbol_value(sym);
287
+ }
288
+
289
+ MRB_API mrb_sym
290
+ mrb_intern_check_str(mrb_state *mrb, mrb_value str)
291
+ {
292
+ return mrb_intern_check(mrb, RSTRING_PTR(str), RSTRING_LEN(str));
248
293
  }
249
294
 
250
295
  MRB_API mrb_value
251
296
  mrb_check_intern_str(mrb_state *mrb, mrb_value str)
252
297
  {
253
- return mrb_check_intern(mrb, RSTRING_PTR(str), RSTRING_LEN(str));
298
+ mrb_sym sym = mrb_intern_check_str(mrb, str);
299
+ if (sym == 0) return mrb_nil_value();
300
+ return mrb_symbol_value(sym);
254
301
  }
255
302
 
256
303
  static const char*
257
304
  sym2name_len(mrb_state *mrb, mrb_sym sym, char *buf, mrb_int *lenp)
258
305
  {
306
+ if (sym == 0) goto outofsym;
259
307
  if (SYMBOL_INLINE_P(sym)) return sym_inline_unpack(sym, buf, lenp);
260
308
 
261
- sym >>= SYMBOL_NORMAL_SHIFT;
262
- if (sym == 0 || mrb->symidx < sym) {
309
+ #ifndef MRB_NO_PRESYM
310
+ {
311
+ const char *name = presym_sym2name(sym, lenp);
312
+ if (name) return name;
313
+ }
314
+ #endif
315
+ sym -= MRB_PRESYM_MAX;
316
+
317
+ if (mrb->symidx < sym) {
318
+ outofsym:
263
319
  if (lenp) *lenp = 0;
264
320
  return NULL;
265
321
  }
@@ -271,7 +327,19 @@ sym2name_len(mrb_state *mrb, mrb_sym sym, char *buf, mrb_int *lenp)
271
327
  MRB_API const char*
272
328
  mrb_sym_name_len(mrb_state *mrb, mrb_sym sym, mrb_int *lenp)
273
329
  {
330
+ #ifdef MRB_USE_ALL_SYMBOLS
331
+ return sym2name_len(mrb, sym, NULL, lenp);
332
+ #else
274
333
  return sym2name_len(mrb, sym, mrb->symbuf, lenp);
334
+ #endif
335
+ }
336
+
337
+ mrb_bool
338
+ mrb_sym_static_p(mrb_state *mrb, mrb_sym sym)
339
+ {
340
+ if (SYMBOL_INLINE_P(sym)) return TRUE;
341
+ if (sym > MRB_PRESYM_MAX) return FALSE;
342
+ return TRUE;
275
343
  }
276
344
 
277
345
  void
@@ -495,7 +563,7 @@ sym_inspect(mrb_state *mrb, mrb_value sym)
495
563
  char *sp;
496
564
 
497
565
  name = mrb_sym_name_len(mrb, id, &len);
498
- str = mrb_str_new(mrb, 0, len+1);
566
+ str = mrb_str_new(mrb, NULL, len+1);
499
567
  sp = RSTRING_PTR(str);
500
568
  sp[0] = ':';
501
569
  memcpy(sp+1, name, len);
@@ -538,8 +606,7 @@ sym_name(mrb_state *mrb, mrb_sym sym, mrb_bool dump)
538
606
  return name;
539
607
  }
540
608
  else {
541
- mrb_value str = SYMBOL_INLINE_P(sym) ?
542
- mrb_str_new(mrb, name, len) : mrb_str_new_static(mrb, name, len);
609
+ mrb_value str = mrb_str_new_static(mrb, name, len);
543
610
  str = mrb_str_dump(mrb, str);
544
611
  return RSTRING_PTR(str);
545
612
  }
@@ -562,10 +629,9 @@ mrb_sym_dump(mrb_state *mrb, mrb_sym sym)
562
629
  static mrb_value
563
630
  sym_cmp(mrb_state *mrb, mrb_value s1)
564
631
  {
565
- mrb_value s2;
632
+ mrb_value s2 = mrb_get_arg1(mrb);
566
633
  mrb_sym sym1, sym2;
567
634
 
568
- mrb_get_args(mrb, "o", &s2);
569
635
  if (!mrb_symbol_p(s2)) return mrb_nil_value();
570
636
  sym1 = mrb_symbol(s1);
571
637
  sym2 = mrb_symbol(s2);
@@ -6,6 +6,7 @@
6
6
  static inline void
7
7
  value_move(mrb_value *s1, const mrb_value *s2, size_t n)
8
8
  {
9
+ if (n == 0) return;
9
10
  if (s1 > s2 && s1 < s2 + n)
10
11
  {
11
12
  s1 += n;
@@ -10,22 +10,18 @@
10
10
  #include <mruby/proc.h>
11
11
  #include <mruby/string.h>
12
12
  #include <mruby/variable.h>
13
+ #include <mruby/presym.h>
13
14
 
14
- #ifndef MRB_IV_SEGMENT_SIZE
15
- #define MRB_IV_SEGMENT_SIZE 4
16
- #endif
17
-
18
- typedef struct segment {
19
- mrb_sym key[MRB_IV_SEGMENT_SIZE];
20
- mrb_value val[MRB_IV_SEGMENT_SIZE];
21
- struct segment *next;
22
- } segment;
15
+ struct iv_elem {
16
+ mrb_sym key;
17
+ mrb_value val;
18
+ };
23
19
 
24
20
  /* Instance variable table structure */
25
21
  typedef struct iv_tbl {
26
- segment *rootseg;
27
22
  size_t size;
28
- size_t last_len;
23
+ size_t alloc;
24
+ struct iv_elem *table;
29
25
  } iv_tbl;
30
26
 
31
27
  /* Creates the instance variable table. */
@@ -36,67 +32,82 @@ iv_new(mrb_state *mrb)
36
32
 
37
33
  t = (iv_tbl*)mrb_malloc(mrb, sizeof(iv_tbl));
38
34
  t->size = 0;
39
- t->rootseg = NULL;
40
- t->last_len = 0;
35
+ t->alloc = 0;
36
+ t->table = NULL;
41
37
 
42
38
  return t;
43
39
  }
44
40
 
41
+ static void iv_put(mrb_state *mrb, iv_tbl *t, mrb_sym sym, mrb_value val);
42
+
43
+ static void
44
+ iv_rehash(mrb_state *mrb, iv_tbl *t)
45
+ {
46
+ size_t old_alloc = t->alloc;
47
+ size_t new_alloc = old_alloc+1;
48
+ struct iv_elem *old_table = t->table;
49
+
50
+ khash_power2(new_alloc);
51
+ if (old_alloc == new_alloc) return;
52
+
53
+ t->alloc = new_alloc;
54
+ t->size = 0;
55
+ t->table = (struct iv_elem*)mrb_calloc(mrb, sizeof(struct iv_elem), new_alloc);
56
+
57
+ for (size_t i = 0; i < old_alloc; i++) {
58
+ struct iv_elem *slot = &old_table[i];
59
+
60
+ /* key = 0 means empty; val = undef means deleted */
61
+ if (slot->key != 0 && !mrb_undef_p(slot->val)) {
62
+ iv_put(mrb, t, slot->key, slot->val);
63
+ }
64
+ }
65
+ mrb_free(mrb, old_table);
66
+ }
67
+
68
+ #define slot_empty_p(slot) ((slot)->key == 0 && !mrb_undef_p((slot)->val))
69
+
45
70
  /* Set the value for the symbol in the instance variable table. */
46
71
  static void
47
72
  iv_put(mrb_state *mrb, iv_tbl *t, mrb_sym sym, mrb_value val)
48
73
  {
49
- segment *seg;
50
- segment *prev = NULL;
51
- segment *matched_seg = NULL;
52
- size_t matched_idx = 0;
53
- size_t i;
74
+ size_t hash, pos, start;
75
+ struct iv_elem *dslot = NULL;
54
76
 
55
77
  if (t == NULL) return;
56
- seg = t->rootseg;
57
- while (seg) {
58
- for (i=0; i<MRB_IV_SEGMENT_SIZE; i++) {
59
- mrb_sym key = seg->key[i];
60
- /* Found room in last segment after last_len */
61
- if (!seg->next && i >= t->last_len) {
62
- seg->key[i] = sym;
63
- seg->val[i] = val;
64
- t->last_len = i+1;
78
+ if (t->alloc == 0) {
79
+ iv_rehash(mrb, t);
80
+ }
81
+ hash = kh_int_hash_func(mrb, sym);
82
+ start = pos = hash & (t->alloc-1);
83
+ for (;;) {
84
+ struct iv_elem *slot = &t->table[pos];
85
+
86
+ if (slot->key == sym) {
87
+ slot->val = val;
88
+ return;
89
+ }
90
+ else if (slot_empty_p(slot)) {
91
+ t->size++;
92
+ slot->key = sym;
93
+ slot->val = val;
94
+ return;
95
+ }
96
+ else if (!dslot && mrb_undef_p(slot->val)) { /* deleted */
97
+ dslot = slot;
98
+ }
99
+ pos = (pos+1) & (t->alloc-1);
100
+ if (pos == start) { /* not found */
101
+ if (dslot) {
65
102
  t->size++;
103
+ dslot->key = sym;
104
+ dslot->val = val;
66
105
  return;
67
106
  }
68
- if (!matched_seg && key == 0) {
69
- matched_seg = seg;
70
- matched_idx = i;
71
- }
72
- else if (key == sym) {
73
- seg->val[i] = val;
74
- return;
75
- }
107
+ /* no room */
108
+ iv_rehash(mrb, t);
109
+ start = pos = hash & (t->alloc-1);
76
110
  }
77
- prev = seg;
78
- seg = seg->next;
79
- }
80
-
81
- /* Not found */
82
- if (matched_seg) {
83
- matched_seg->key[matched_idx] = sym;
84
- matched_seg->val[matched_idx] = val;
85
- t->size++;
86
- return;
87
- }
88
-
89
- seg = (segment*)mrb_malloc(mrb, sizeof(segment));
90
- seg->next = NULL;
91
- seg->key[0] = sym;
92
- seg->val[0] = val;
93
- t->last_len = 1;
94
- t->size++;
95
- if (prev) {
96
- prev->next = seg;
97
- }
98
- else {
99
- t->rootseg = seg;
100
111
  }
101
112
  }
102
113
 
@@ -104,80 +115,81 @@ iv_put(mrb_state *mrb, iv_tbl *t, mrb_sym sym, mrb_value val)
104
115
  static mrb_bool
105
116
  iv_get(mrb_state *mrb, iv_tbl *t, mrb_sym sym, mrb_value *vp)
106
117
  {
107
- segment *seg;
108
- size_t i;
118
+ size_t hash, pos, start;
109
119
 
110
120
  if (t == NULL) return FALSE;
111
- seg = t->rootseg;
112
- while (seg) {
113
- for (i=0; i<MRB_IV_SEGMENT_SIZE; i++) {
114
- mrb_sym key = seg->key[i];
121
+ if (t->alloc == 0) return FALSE;
122
+ if (t->size == 0) return FALSE;
115
123
 
116
- if (!seg->next && i >= t->last_len) {
117
- return FALSE;
118
- }
119
- if (key == sym) {
120
- if (vp) *vp = seg->val[i];
121
- return TRUE;
122
- }
124
+ hash = kh_int_hash_func(mrb, sym);
125
+ start = pos = hash & (t->alloc-1);
126
+ for (;;) {
127
+ struct iv_elem *slot = &t->table[pos];
128
+
129
+ if (slot->key == sym) {
130
+ if (vp) *vp = slot->val;
131
+ return TRUE;
132
+ }
133
+ else if (slot_empty_p(slot)) {
134
+ return FALSE;
135
+ }
136
+ pos = (pos+1) & (t->alloc-1);
137
+ if (pos == start) { /* not found */
138
+ return FALSE;
123
139
  }
124
- seg = seg->next;
125
140
  }
126
- return FALSE;
127
141
  }
128
142
 
129
143
  /* Deletes the value for the symbol from the instance variable table. */
130
144
  static mrb_bool
131
145
  iv_del(mrb_state *mrb, iv_tbl *t, mrb_sym sym, mrb_value *vp)
132
146
  {
133
- segment *seg;
134
- size_t i;
147
+ size_t hash, pos, start;
135
148
 
136
149
  if (t == NULL) return FALSE;
137
- seg = t->rootseg;
138
- while (seg) {
139
- for (i=0; i<MRB_IV_SEGMENT_SIZE; i++) {
140
- mrb_sym key = seg->key[i];
150
+ if (t->alloc == 0) return FALSE;
151
+ if (t->size == 0) return FALSE;
141
152
 
142
- if (!seg->next && i >= t->last_len) {
143
- return FALSE;
144
- }
145
- if (key == sym) {
146
- t->size--;
147
- seg->key[i] = 0;
148
- if (vp) *vp = seg->val[i];
149
- return TRUE;
150
- }
153
+ hash = kh_int_hash_func(mrb, sym);
154
+ start = pos = hash & (t->alloc-1);
155
+ for (;;) {
156
+ struct iv_elem *slot = &t->table[pos];
157
+
158
+ if (slot->key == sym) {
159
+ if (vp) *vp = slot->val;
160
+ t->size--;
161
+ slot->key = 0;
162
+ slot->val = mrb_undef_value();
163
+ return TRUE;
164
+ }
165
+ else if (slot_empty_p(slot)) {
166
+ return FALSE;
167
+ }
168
+ pos = (pos+1) & (t->alloc-1);
169
+ if (pos == start) { /* not found */
170
+ return FALSE;
151
171
  }
152
- seg = seg->next;
153
172
  }
154
- return FALSE;
155
173
  }
156
174
 
157
175
  /* Iterates over the instance variable table. */
158
176
  static void
159
177
  iv_foreach(mrb_state *mrb, iv_tbl *t, mrb_iv_foreach_func *func, void *p)
160
178
  {
161
- segment *seg;
162
179
  size_t i;
163
180
 
164
181
  if (t == NULL) return;
165
- seg = t->rootseg;
166
- while (seg) {
167
- for (i=0; i<MRB_IV_SEGMENT_SIZE; i++) {
168
- mrb_sym key = seg->key[i];
182
+ if (t->alloc == 0) return;
183
+ if (t->size == 0) return;
184
+
185
+ for (i=0; i<t->alloc; i++) {
186
+ struct iv_elem *slot = &t->table[i];
169
187
 
170
- /* no value in last segment after last_len */
171
- if (!seg->next && i >= t->last_len) {
188
+ if (slot->key && !mrb_undef_p(slot->val)) {
189
+ if ((*func)(mrb, slot->key, slot->val, p) != 0) {
172
190
  return;
173
191
  }
174
- if (key != 0) {
175
- if ((*func)(mrb, key, seg->val[i], p) != 0) {
176
- return;
177
- }
178
- }
179
192
  }
180
- seg = seg->next;
181
193
  }
182
194
  return;
183
195
  }
@@ -186,47 +198,28 @@ iv_foreach(mrb_state *mrb, iv_tbl *t, mrb_iv_foreach_func *func, void *p)
186
198
  static size_t
187
199
  iv_size(mrb_state *mrb, iv_tbl *t)
188
200
  {
189
- segment *seg;
190
- size_t size = 0;
191
-
192
201
  if (t == NULL) return 0;
193
- if (t->size > 0) return t->size;
194
- seg = t->rootseg;
195
- while (seg) {
196
- if (seg->next == NULL) {
197
- size += t->last_len;
198
- return size;
199
- }
200
- seg = seg->next;
201
- size += MRB_IV_SEGMENT_SIZE;
202
- }
203
- /* empty iv_tbl */
204
- return 0;
202
+ return t->size;
205
203
  }
206
204
 
207
205
  /* Copy the instance variable table. */
208
206
  static iv_tbl*
209
207
  iv_copy(mrb_state *mrb, iv_tbl *t)
210
208
  {
211
- segment *seg;
212
209
  iv_tbl *t2;
213
-
214
210
  size_t i;
215
211
 
216
- seg = t->rootseg;
217
- t2 = iv_new(mrb);
212
+ if (t == NULL) return NULL;
213
+ if (t->alloc == 0) return NULL;
214
+ if (t->size == 0) return NULL;
218
215
 
219
- while (seg != NULL) {
220
- for (i=0; i<MRB_IV_SEGMENT_SIZE; i++) {
221
- mrb_sym key = seg->key[i];
222
- mrb_value val = seg->val[i];
216
+ t2 = iv_new(mrb);
217
+ for (i=0; i<t->alloc; i++) {
218
+ struct iv_elem *slot = &t->table[i];
223
219
 
224
- if ((seg->next == NULL) && (i >= t->last_len)) {
225
- return t2;
226
- }
227
- iv_put(mrb, t2, key, val);
220
+ if (slot->key && !mrb_undef_p(slot->val)) {
221
+ iv_put(mrb, t2, slot->key, slot->val);
228
222
  }
229
- seg = seg->next;
230
223
  }
231
224
  return t2;
232
225
  }
@@ -235,14 +228,7 @@ iv_copy(mrb_state *mrb, iv_tbl *t)
235
228
  static void
236
229
  iv_free(mrb_state *mrb, iv_tbl *t)
237
230
  {
238
- segment *seg;
239
-
240
- seg = t->rootseg;
241
- while (seg) {
242
- segment *p = seg;
243
- seg = seg->next;
244
- mrb_free(mrb, p);
245
- }
231
+ mrb_free(mrb, t->table);
246
232
  mrb_free(mrb, t);
247
233
  }
248
234
 
@@ -349,7 +335,7 @@ mrb_obj_iv_set_force(mrb_state *mrb, struct RObject *obj, mrb_sym sym, mrb_value
349
335
  obj->iv = iv_new(mrb);
350
336
  }
351
337
  iv_put(mrb, obj->iv, sym, v);
352
- mrb_write_barrier(mrb, (struct RBasic*)obj);
338
+ mrb_field_write_barrier_value(mrb, (struct RBasic*)obj, v);
353
339
  }
354
340
 
355
341
  MRB_API void
@@ -379,11 +365,11 @@ assign_class_name(mrb_state *mrb, struct RObject *obj, mrb_sym sym, mrb_value v)
379
365
  if (namespace_p(obj->tt) && namespace_p(mrb_type(v))) {
380
366
  struct RObject *c = mrb_obj_ptr(v);
381
367
  if (obj != c && ISUPPER(mrb_sym_name_len(mrb, sym, NULL)[0])) {
382
- mrb_sym id_classname = mrb_intern_lit(mrb, "__classname__");
368
+ mrb_sym id_classname = MRB_SYM(__classname__);
383
369
  mrb_value o = mrb_obj_iv_get(mrb, c, id_classname);
384
370
 
385
371
  if (mrb_nil_p(o)) {
386
- mrb_sym id_outer = mrb_intern_lit(mrb, "__outer__");
372
+ mrb_sym id_outer = MRB_SYM(__outer__);
387
373
  o = mrb_obj_iv_get(mrb, c, id_outer);
388
374
 
389
375
  if (mrb_nil_p(o)) {
@@ -643,8 +629,7 @@ mrb_mod_cv_get(mrb_state *mrb, struct RClass *c, mrb_sym sym)
643
629
  if (cls && cls->tt == MRB_TT_SCLASS) {
644
630
  mrb_value klass;
645
631
 
646
- klass = mrb_obj_iv_get(mrb, (struct RObject *)cls,
647
- mrb_intern_lit(mrb, "__attached__"));
632
+ klass = mrb_obj_iv_get(mrb, (struct RObject *)cls, MRB_SYM(__attached__));
648
633
  c = mrb_class_ptr(klass);
649
634
  if (c->tt == MRB_TT_CLASS || c->tt == MRB_TT_MODULE) {
650
635
  given = FALSE;
@@ -679,7 +664,7 @@ mrb_mod_cv_set(mrb_state *mrb, struct RClass *c, mrb_sym sym, mrb_value v)
679
664
  if (iv_get(mrb, t, sym, NULL)) {
680
665
  mrb_check_frozen(mrb, c);
681
666
  iv_put(mrb, t, sym, v);
682
- mrb_write_barrier(mrb, (struct RBasic*)c);
667
+ mrb_field_write_barrier_value(mrb, (struct RBasic*)c, v);
683
668
  return;
684
669
  }
685
670
  c = c->super;
@@ -688,8 +673,7 @@ mrb_mod_cv_set(mrb_state *mrb, struct RClass *c, mrb_sym sym, mrb_value v)
688
673
  if (cls && cls->tt == MRB_TT_SCLASS) {
689
674
  mrb_value klass;
690
675
 
691
- klass = mrb_obj_iv_get(mrb, (struct RObject*)cls,
692
- mrb_intern_lit(mrb, "__attached__"));
676
+ klass = mrb_obj_iv_get(mrb, (struct RObject*)cls, MRB_SYM(__attached__));
693
677
  switch (mrb_type(klass)) {
694
678
  case MRB_TT_CLASS:
695
679
  case MRB_TT_MODULE:
@@ -711,7 +695,7 @@ mrb_mod_cv_set(mrb_state *mrb, struct RClass *c, mrb_sym sym, mrb_value v)
711
695
  }
712
696
 
713
697
  iv_put(mrb, c->iv, sym, v);
714
- mrb_write_barrier(mrb, (struct RBasic*)c);
698
+ mrb_field_write_barrier_value(mrb, (struct RBasic*)c, v);
715
699
  }
716
700
 
717
701
  MRB_API void
@@ -743,11 +727,11 @@ mrb_vm_cv_get(mrb_state *mrb, mrb_sym sym)
743
727
  {
744
728
  struct RClass *c;
745
729
 
746
- struct RProc *p = mrb->c->ci->proc;
730
+ const struct RProc *p = mrb->c->ci->proc;
747
731
 
748
732
  for (;;) {
749
733
  c = MRB_PROC_TARGET_CLASS(p);
750
- if (c->tt != MRB_TT_SCLASS) break;
734
+ if (c && c->tt != MRB_TT_SCLASS) break;
751
735
  p = p->upper;
752
736
  }
753
737
  return mrb_mod_cv_get(mrb, c, sym);
@@ -757,11 +741,11 @@ void
757
741
  mrb_vm_cv_set(mrb_state *mrb, mrb_sym sym, mrb_value v)
758
742
  {
759
743
  struct RClass *c;
760
- struct RProc *p = mrb->c->ci->proc;
744
+ const struct RProc *p = mrb->c->ci->proc;
761
745
 
762
746
  for (;;) {
763
747
  c = MRB_PROC_TARGET_CLASS(p);
764
- if (c->tt != MRB_TT_SCLASS) break;
748
+ if (c && c->tt != MRB_TT_SCLASS) break;
765
749
  p = p->upper;
766
750
  }
767
751
  mrb_mod_cv_set(mrb, c, sym, v);
@@ -803,7 +787,7 @@ L_RETRY:
803
787
  goto L_RETRY;
804
788
  }
805
789
  name = mrb_symbol_value(sym);
806
- return mrb_funcall_argv(mrb, mrb_obj_value(base), mrb_intern_lit(mrb, "const_missing"), 1, &name);
790
+ return mrb_funcall_argv(mrb, mrb_obj_value(base), MRB_SYM(const_missing), 1, &name);
807
791
  }
808
792
 
809
793
  MRB_API mrb_value
@@ -819,9 +803,10 @@ mrb_vm_const_get(mrb_state *mrb, mrb_sym sym)
819
803
  struct RClass *c;
820
804
  struct RClass *c2;
821
805
  mrb_value v;
822
- struct RProc *proc;
806
+ const struct RProc *proc;
823
807
 
824
808
  c = MRB_PROC_TARGET_CLASS(mrb->c->ci->proc);
809
+ if (!c) c = mrb->object_class;
825
810
  if (iv_get(mrb, c->iv, sym, &v)) {
826
811
  return v;
827
812
  }
@@ -829,7 +814,7 @@ mrb_vm_const_get(mrb_state *mrb, mrb_sym sym)
829
814
  while (c2 && c2->tt == MRB_TT_SCLASS) {
830
815
  mrb_value klass;
831
816
 
832
- if (!iv_get(mrb, c2->iv, mrb_intern_lit(mrb, "__attached__"), &klass)) {
817
+ if (!iv_get(mrb, c2->iv, MRB_SYM(__attached__), &klass)) {
833
818
  c2 = NULL;
834
819
  break;
835
820
  }
@@ -864,6 +849,7 @@ mrb_vm_const_set(mrb_state *mrb, mrb_sym sym, mrb_value v)
864
849
  struct RClass *c;
865
850
 
866
851
  c = MRB_PROC_TARGET_CLASS(mrb->c->ci->proc);
852
+ if (!c) c = mrb->object_class;
867
853
  mrb_obj_iv_set(mrb, (struct RObject*)c, sym, v);
868
854
  }
869
855
 
@@ -874,6 +860,12 @@ mrb_const_remove(mrb_state *mrb, mrb_value mod, mrb_sym sym)
874
860
  mrb_iv_remove(mrb, mod, sym);
875
861
  }
876
862
 
863
+ MRB_API void
864
+ mrb_define_const_id(mrb_state *mrb, struct RClass *mod, mrb_sym name, mrb_value v)
865
+ {
866
+ mrb_obj_iv_set(mrb, (struct RObject*)mod, name, v);
867
+ }
868
+
877
869
  MRB_API void
878
870
  mrb_define_const(mrb_state *mrb, struct RClass *mod, const char *name, mrb_value v)
879
871
  {
@@ -1070,7 +1062,7 @@ outer_class(mrb_state *mrb, struct RClass *c)
1070
1062
  {
1071
1063
  mrb_value ov;
1072
1064
 
1073
- ov = mrb_obj_iv_get(mrb, (struct RObject*)c, mrb_intern_lit(mrb, "__outer__"));
1065
+ ov = mrb_obj_iv_get(mrb, (struct RObject*)c, MRB_SYM(__outer__));
1074
1066
  if (mrb_nil_p(ov)) return NULL;
1075
1067
  switch (mrb_type(ov)) {
1076
1068
  case MRB_TT_CLASS:
@@ -1120,14 +1112,22 @@ mrb_class_find_path(mrb_state *mrb, struct RClass *c)
1120
1112
  str = mrb_sym_name_len(mrb, name, &len);
1121
1113
  mrb_str_cat(mrb, path, str, len);
1122
1114
  if (RSTRING_PTR(path)[0] != '#') {
1123
- iv_del(mrb, c->iv, mrb_intern_lit(mrb, "__outer__"), NULL);
1124
- iv_put(mrb, c->iv, mrb_intern_lit(mrb, "__classname__"), path);
1115
+ iv_del(mrb, c->iv, MRB_SYM(__outer__), NULL);
1116
+ iv_put(mrb, c->iv, MRB_SYM(__classname__), path);
1125
1117
  mrb_field_write_barrier_value(mrb, (struct RBasic*)c, path);
1126
1118
  path = mrb_str_dup(mrb, path);
1127
1119
  }
1128
1120
  return path;
1129
1121
  }
1130
1122
 
1123
+ size_t
1124
+ mrb_obj_iv_tbl_memsize(mrb_value obj)
1125
+ {
1126
+ iv_tbl *t = mrb_obj_ptr(obj)->iv;
1127
+ if (t == NULL) return 0;
1128
+ return sizeof(iv_tbl) + t->alloc*sizeof(struct iv_elem);
1129
+ }
1130
+
1131
1131
  #define identchar(c) (ISALNUM(c) || (c) == '_' || !ISASCII(c))
1132
1132
 
1133
1133
  mrb_bool