script_core 0.2.2 → 0.2.7

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 (376) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +41 -45
  3. data/.travis.yml +2 -1
  4. data/Gemfile +3 -3
  5. data/README.md +7 -1
  6. data/bootstrap.sh +2 -2
  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 +106 -0
  138. data/ext/enterprise_script_service/mruby/.github/workflows/codeql-analysis.yml +51 -0
  139. data/ext/enterprise_script_service/mruby/.github/workflows/main.yml +24 -0
  140. data/ext/enterprise_script_service/mruby/.gitignore +3 -0
  141. data/ext/enterprise_script_service/mruby/.travis.yml +6 -9
  142. data/ext/enterprise_script_service/mruby/AUTHORS +1 -0
  143. data/ext/enterprise_script_service/mruby/Doxyfile +1 -1
  144. data/ext/enterprise_script_service/mruby/LICENSE +1 -1
  145. data/ext/enterprise_script_service/mruby/README.md +6 -2
  146. data/ext/enterprise_script_service/mruby/appveyor.yml +9 -12
  147. data/ext/enterprise_script_service/mruby/appveyor_config.rb +9 -0
  148. data/ext/enterprise_script_service/mruby/build_config.rb +6 -6
  149. data/ext/enterprise_script_service/mruby/doc/guides/compile.md +6 -2
  150. data/ext/enterprise_script_service/mruby/doc/guides/debugger.md +1 -1
  151. data/ext/enterprise_script_service/mruby/doc/guides/mrbconf.md +4 -8
  152. data/ext/enterprise_script_service/mruby/doc/limitations.md +10 -10
  153. data/ext/enterprise_script_service/mruby/doc/opcode.md +108 -95
  154. data/ext/enterprise_script_service/mruby/examples/targets/build_config_ArduinoDue.rb +2 -2
  155. data/ext/enterprise_script_service/mruby/examples/targets/build_config_IntelEdison.rb +2 -2
  156. data/ext/enterprise_script_service/mruby/examples/targets/build_config_IntelGalileo.rb +2 -2
  157. data/ext/enterprise_script_service/mruby/examples/targets/build_config_RX630.rb +2 -2
  158. data/ext/enterprise_script_service/mruby/examples/targets/build_config_chipKITMax32.rb +2 -2
  159. data/ext/enterprise_script_service/mruby/examples/targets/build_config_dreamcast_shelf.rb +108 -0
  160. data/ext/enterprise_script_service/mruby/include/mrbconf.h +10 -7
  161. data/ext/enterprise_script_service/mruby/include/mruby.h +24 -9
  162. data/ext/enterprise_script_service/mruby/include/mruby/array.h +4 -0
  163. data/ext/enterprise_script_service/mruby/include/mruby/boxing_nan.h +11 -2
  164. data/ext/enterprise_script_service/mruby/include/mruby/boxing_word.h +0 -10
  165. data/ext/enterprise_script_service/mruby/include/mruby/common.h +10 -0
  166. data/ext/enterprise_script_service/mruby/include/mruby/compile.h +11 -3
  167. data/ext/enterprise_script_service/mruby/include/mruby/dump.h +1 -17
  168. data/ext/enterprise_script_service/mruby/include/mruby/irep.h +10 -0
  169. data/ext/enterprise_script_service/mruby/include/mruby/istruct.h +4 -1
  170. data/ext/enterprise_script_service/mruby/include/mruby/khash.h +23 -5
  171. data/ext/enterprise_script_service/mruby/include/mruby/numeric.h +1 -0
  172. data/ext/enterprise_script_service/mruby/include/mruby/ops.h +3 -2
  173. data/ext/enterprise_script_service/mruby/include/mruby/proc.h +13 -8
  174. data/ext/enterprise_script_service/mruby/include/mruby/string.h +2 -1
  175. data/ext/enterprise_script_service/mruby/include/mruby/value.h +32 -41
  176. data/ext/enterprise_script_service/mruby/include/mruby/version.h +4 -4
  177. data/ext/enterprise_script_service/mruby/lib/mruby/build.rb +2 -30
  178. data/ext/enterprise_script_service/mruby/lib/mruby/build/command.rb +21 -46
  179. data/ext/enterprise_script_service/mruby/lib/mruby/gem.rb +9 -0
  180. data/ext/enterprise_script_service/mruby/lib/mruby/source.rb +3 -1
  181. data/ext/enterprise_script_service/mruby/mrbgems/default.gembox +7 -0
  182. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/mrblib/array.rb +0 -31
  183. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/src/array.c +5 -8
  184. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/test/array.rb +0 -13
  185. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-config/mrbgem.rake +5 -2
  186. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c +0 -1
  187. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdbconf.h +5 -1
  188. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +7 -3
  189. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/tools/mrbc/mrbc.c +24 -21
  190. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/mrbgem.rake +0 -1
  191. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +6 -2
  192. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-strip/tools/mruby-strip/mruby-strip.c +6 -2
  193. data/ext/enterprise_script_service/mruby/mrbgems/mruby-class-ext/src/class.c +6 -1
  194. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/codegen.c +76 -48
  195. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/parse.y +107 -32
  196. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/y.tab.c +13153 -0
  197. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/mrbgem.rake +13 -15
  198. data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/mrblib/complex.rb +1 -1
  199. data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/src/complex.c +1 -2
  200. data/ext/enterprise_script_service/mruby/mrbgems/mruby-error/src/exception.c +3 -3
  201. data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/src/eval.c +3 -214
  202. data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/test/eval.rb +21 -0
  203. data/ext/enterprise_script_service/mruby/mrbgems/mruby-fiber/src/fiber.c +1 -2
  204. data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/src/hash-ext.c +1 -3
  205. data/ext/enterprise_script_service/mruby/mrbgems/mruby-inline-struct/test/inline.c +3 -4
  206. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/include/mruby/ext/io.h +39 -7
  207. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrbgem.rake +2 -8
  208. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/file_constants.rb +0 -16
  209. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/io.rb +7 -12
  210. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file.c +77 -32
  211. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file_test.c +18 -36
  212. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/io.c +324 -122
  213. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/file.rb +18 -12
  214. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/io.rb +32 -0
  215. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/mruby_io_test.c +57 -49
  216. data/ext/enterprise_script_service/mruby/mrbgems/mruby-kernel-ext/src/kernel.c +6 -8
  217. data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/src/metaprog.c +15 -17
  218. data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/test/metaprog.rb +9 -0
  219. data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/src/method.c +4 -5
  220. data/ext/enterprise_script_service/mruby/mrbgems/mruby-object-ext/src/object.c +3 -12
  221. data/ext/enterprise_script_service/mruby/mrbgems/mruby-objectspace/src/mruby_objectspace.c +0 -1
  222. data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/src/pack.c +113 -10
  223. data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/src/print.c +6 -3
  224. data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/src/proc.c +2 -2
  225. data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/src/range.c +1 -3
  226. data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/mrblib/rational.rb +1 -3
  227. data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/src/rational.c +9 -9
  228. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/src/mrb_sleep.c +1 -1
  229. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrbgem.rake +1 -1
  230. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/test/sockettest.c +3 -2
  231. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/src/sprintf.c +62 -25
  232. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/test/sprintf.rb +5 -23
  233. data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/src/string.c +4 -5
  234. data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/src/struct.c +5 -11
  235. data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/src/symbol.c +1 -1
  236. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/mrbgem.rake +1 -0
  237. data/ext/enterprise_script_service/mruby/mrbgems/mruby-time/src/time.c +11 -15
  238. data/ext/enterprise_script_service/mruby/mrblib/00class.rb +10 -0
  239. data/ext/enterprise_script_service/mruby/mrblib/hash.rb +3 -3
  240. data/ext/enterprise_script_service/mruby/src/array.c +25 -11
  241. data/ext/enterprise_script_service/mruby/src/backtrace.c +2 -2
  242. data/ext/enterprise_script_service/mruby/src/class.c +48 -32
  243. data/ext/enterprise_script_service/mruby/src/codedump.c +4 -0
  244. data/ext/enterprise_script_service/mruby/src/debug.c +8 -5
  245. data/ext/enterprise_script_service/mruby/src/dump.c +3 -65
  246. data/ext/enterprise_script_service/mruby/src/error.c +58 -7
  247. data/ext/enterprise_script_service/mruby/src/etc.c +13 -5
  248. data/ext/enterprise_script_service/mruby/src/fmt_fp.c +98 -21
  249. data/ext/enterprise_script_service/mruby/src/gc.c +15 -280
  250. data/ext/enterprise_script_service/mruby/src/hash.c +13 -21
  251. data/ext/enterprise_script_service/mruby/src/kernel.c +6 -9
  252. data/ext/enterprise_script_service/mruby/src/load.c +56 -30
  253. data/ext/enterprise_script_service/mruby/src/numeric.c +50 -70
  254. data/ext/enterprise_script_service/mruby/src/object.c +23 -5
  255. data/ext/enterprise_script_service/mruby/src/print.c +27 -3
  256. data/ext/enterprise_script_service/mruby/src/proc.c +26 -7
  257. data/ext/enterprise_script_service/mruby/src/range.c +4 -12
  258. data/ext/enterprise_script_service/mruby/src/state.c +34 -11
  259. data/ext/enterprise_script_service/mruby/src/string.c +93 -56
  260. data/ext/enterprise_script_service/mruby/src/symbol.c +13 -12
  261. data/ext/enterprise_script_service/mruby/src/vm.c +48 -53
  262. data/ext/enterprise_script_service/mruby/tasks/gitlab.rake +19 -22
  263. data/ext/enterprise_script_service/mruby/tasks/mrbgems.rake +1 -1
  264. data/ext/enterprise_script_service/mruby/tasks/toolchains/android.rake +46 -1
  265. data/ext/enterprise_script_service/mruby/tasks/toolchains/gcc.rake +3 -3
  266. data/ext/enterprise_script_service/mruby/tasks/toolchains/openwrt.rake +6 -6
  267. data/ext/enterprise_script_service/mruby/tasks/toolchains/visualcpp.rake +8 -8
  268. data/ext/enterprise_script_service/mruby/test/assert.rb +5 -4
  269. data/ext/enterprise_script_service/mruby/test/t/ensure.rb +8 -26
  270. data/ext/enterprise_script_service/mruby/test/t/exception.rb +2 -2
  271. data/ext/enterprise_script_service/mruby/test/t/kernel.rb +15 -24
  272. data/ext/enterprise_script_service/mruby/travis_config.rb +0 -14
  273. data/ext/enterprise_script_service/msgpack/.github/depends/boost.sh +56 -0
  274. data/ext/enterprise_script_service/msgpack/.github/workflows/coverage.yml +62 -0
  275. data/ext/enterprise_script_service/msgpack/.github/workflows/gha.yml +304 -0
  276. data/ext/enterprise_script_service/msgpack/CHANGELOG.md +11 -0
  277. data/ext/enterprise_script_service/msgpack/CMakeLists.txt +82 -39
  278. data/ext/enterprise_script_service/msgpack/Files.cmake +22 -12
  279. data/ext/enterprise_script_service/msgpack/QUICKSTART-C.md +26 -29
  280. data/ext/enterprise_script_service/msgpack/README.md +3 -2
  281. data/ext/enterprise_script_service/msgpack/appveyor.yml +6 -2
  282. data/ext/enterprise_script_service/msgpack/ci/build_cmake.sh +3 -1
  283. data/ext/enterprise_script_service/msgpack/cmake/CodeCoverage.cmake +55 -0
  284. data/ext/enterprise_script_service/msgpack/codecov.yml +36 -0
  285. data/ext/enterprise_script_service/msgpack/example/CMakeLists.txt +9 -5
  286. data/ext/enterprise_script_service/msgpack/example/boost/CMakeLists.txt +1 -1
  287. data/ext/enterprise_script_service/msgpack/example/c/CMakeLists.txt +17 -6
  288. data/ext/enterprise_script_service/msgpack/example/c/boundary.c +296 -0
  289. data/ext/enterprise_script_service/msgpack/example/c/jsonconv.c +419 -0
  290. data/ext/enterprise_script_service/msgpack/example/c/simple_c.c +1 -1
  291. data/ext/enterprise_script_service/msgpack/example/cpp03/CMakeLists.txt +3 -3
  292. data/ext/enterprise_script_service/msgpack/example/cpp11/CMakeLists.txt +2 -2
  293. data/ext/enterprise_script_service/msgpack/example/x3/CMakeLists.txt +2 -2
  294. data/ext/enterprise_script_service/msgpack/include/msgpack/pack.h +24 -1
  295. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/array_ref.hpp +5 -4
  296. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/boost/optional.hpp +4 -4
  297. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp17/vector_byte.hpp +8 -8
  298. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/map.hpp +4 -4
  299. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector.hpp +4 -4
  300. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_char.hpp +8 -8
  301. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_unsigned_char.hpp +8 -8
  302. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/wstring.hpp +4 -4
  303. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/unpack.hpp +6 -6
  304. data/ext/enterprise_script_service/msgpack/include/msgpack/version_master.h +2 -2
  305. data/ext/enterprise_script_service/msgpack/include/msgpack/zbuffer.h +4 -4
  306. data/ext/enterprise_script_service/msgpack/make_file_list.sh +38 -11
  307. data/ext/enterprise_script_service/msgpack/src/vrefbuffer.c +6 -0
  308. data/ext/enterprise_script_service/msgpack/test/CMakeLists.txt +86 -64
  309. data/ext/enterprise_script_service/msgpack/test/array_ref.cpp +4 -0
  310. data/ext/enterprise_script_service/msgpack/test/boost_fusion.cpp +4 -0
  311. data/ext/enterprise_script_service/msgpack/test/boost_optional.cpp +4 -0
  312. data/ext/enterprise_script_service/msgpack/test/boost_string_ref.cpp +4 -1
  313. data/ext/enterprise_script_service/msgpack/test/boost_string_view.cpp +4 -0
  314. data/ext/enterprise_script_service/msgpack/test/boost_variant.cpp +4 -0
  315. data/ext/enterprise_script_service/msgpack/test/buffer.cpp +4 -47
  316. data/ext/enterprise_script_service/msgpack/test/buffer_c.cpp +148 -0
  317. data/ext/enterprise_script_service/msgpack/test/carray.cpp +4 -0
  318. data/ext/enterprise_script_service/msgpack/test/cases.cpp +8 -4
  319. data/ext/enterprise_script_service/msgpack/test/convert.cpp +8 -4
  320. data/ext/enterprise_script_service/msgpack/test/fixint.cpp +4 -0
  321. data/ext/enterprise_script_service/msgpack/test/fixint_c.cpp +4 -0
  322. data/ext/enterprise_script_service/msgpack/test/fuzz_unpack_pack_fuzzer_cpp11.cpp +4 -0
  323. data/ext/enterprise_script_service/msgpack/test/iterator_cpp11.cpp +4 -0
  324. data/ext/enterprise_script_service/msgpack/test/json.cpp +4 -0
  325. data/ext/enterprise_script_service/msgpack/test/limit.cpp +8 -4
  326. data/ext/enterprise_script_service/msgpack/test/msgpack_basic.cpp +4 -0
  327. data/ext/enterprise_script_service/msgpack/test/msgpack_c.cpp +159 -0
  328. data/ext/enterprise_script_service/msgpack/test/msgpack_container.cpp +4 -0
  329. data/ext/enterprise_script_service/msgpack/test/msgpack_cpp11.cpp +32 -27
  330. data/ext/enterprise_script_service/msgpack/test/msgpack_cpp17.cpp +4 -0
  331. data/ext/enterprise_script_service/msgpack/test/msgpack_stream.cpp +4 -0
  332. data/ext/enterprise_script_service/msgpack/test/msgpack_tuple.cpp +4 -1
  333. data/ext/enterprise_script_service/msgpack/test/msgpack_vref.cpp +4 -0
  334. data/ext/enterprise_script_service/msgpack/test/msgpack_x3_parse.cpp +4 -0
  335. data/ext/enterprise_script_service/msgpack/test/object.cpp +4 -1
  336. data/ext/enterprise_script_service/msgpack/test/object_with_zone.cpp +12 -8
  337. data/ext/enterprise_script_service/msgpack/test/pack_unpack.cpp +30 -26
  338. data/ext/enterprise_script_service/msgpack/test/pack_unpack_c.cpp +4 -0
  339. data/ext/enterprise_script_service/msgpack/test/raw.cpp +4 -0
  340. data/ext/enterprise_script_service/msgpack/test/reference.cpp +4 -0
  341. data/ext/enterprise_script_service/msgpack/test/reference_cpp11.cpp +4 -0
  342. data/ext/enterprise_script_service/msgpack/test/reference_wrapper_cpp11.cpp +4 -0
  343. data/ext/enterprise_script_service/msgpack/test/shared_ptr_cpp11.cpp +4 -0
  344. data/ext/enterprise_script_service/msgpack/test/size_equal_only.cpp +4 -0
  345. data/ext/enterprise_script_service/msgpack/test/streaming.cpp +8 -4
  346. data/ext/enterprise_script_service/msgpack/test/streaming_c.cpp +4 -0
  347. data/ext/enterprise_script_service/msgpack/test/unique_ptr_cpp11.cpp +4 -0
  348. data/ext/enterprise_script_service/msgpack/test/user_class.cpp +16 -12
  349. data/ext/enterprise_script_service/msgpack/test/version.cpp +4 -0
  350. data/ext/enterprise_script_service/msgpack/test/visitor.cpp +4 -0
  351. data/ext/enterprise_script_service/msgpack/test/zone.cpp +4 -0
  352. data/lib/script_core/engine.rb +24 -5
  353. data/lib/script_core/executable.rb +4 -3
  354. data/lib/script_core/result.rb +1 -5
  355. data/lib/script_core/service_channel.rb +1 -0
  356. data/lib/script_core/version.rb +1 -1
  357. data/lib/tasks/script_core.rake +3 -1
  358. data/script_core.gemspec +2 -2
  359. data/spec/dummy/app/lib/script_engine.rb +64 -5
  360. metadata +68 -30
  361. data/ext/enterprise_script_service/libseccomp/src/arch-aarch64-syscalls.c +0 -559
  362. data/ext/enterprise_script_service/libseccomp/src/arch-arm-syscalls.c +0 -570
  363. data/ext/enterprise_script_service/libseccomp/src/arch-mips-syscalls.c +0 -562
  364. data/ext/enterprise_script_service/libseccomp/src/arch-mips64-syscalls.c +0 -562
  365. data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32-syscalls.c +0 -562
  366. data/ext/enterprise_script_service/libseccomp/src/arch-parisc-syscalls.c +0 -542
  367. data/ext/enterprise_script_service/libseccomp/src/arch-ppc-syscalls.c +0 -559
  368. data/ext/enterprise_script_service/libseccomp/src/arch-ppc64-syscalls.c +0 -559
  369. data/ext/enterprise_script_service/libseccomp/src/arch-s390-syscalls.c +0 -626
  370. data/ext/enterprise_script_service/libseccomp/src/arch-s390x-syscalls.c +0 -626
  371. data/ext/enterprise_script_service/libseccomp/src/arch-x32-syscalls.c +0 -558
  372. data/ext/enterprise_script_service/libseccomp/src/arch-x86-syscalls.c +0 -692
  373. data/ext/enterprise_script_service/libseccomp/src/arch-x86_64-syscalls.c +0 -559
  374. data/ext/enterprise_script_service/libseccomp/tests/18-sim-basic_whitelist.tests +0 -32
  375. data/ext/enterprise_script_service/libseccomp/tests/34-sim-basic_blacklist.tests +0 -32
  376. data/ext/enterprise_script_service/msgpack/.travis.yml +0 -258
@@ -48,14 +48,14 @@ sym_validate_len(mrb_state *mrb, size_t len)
48
48
  static const char pack_table[] = "_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
49
49
 
50
50
  static mrb_sym
51
- sym_inline_pack(const char *name, uint16_t len)
51
+ sym_inline_pack(const char *name, size_t len)
52
52
  {
53
- const int lower_length_max = (MRB_SYMBOL_BIT - 2) / 5;
54
- const int mix_length_max = (MRB_SYMBOL_BIT - 2) / 6;
53
+ const size_t lower_length_max = (MRB_SYMBOL_BIT - 2) / 5;
54
+ const size_t mix_length_max = (MRB_SYMBOL_BIT - 2) / 6;
55
55
 
56
56
  char c;
57
57
  const char *p;
58
- int i;
58
+ size_t i;
59
59
  mrb_sym sym = 0;
60
60
  mrb_bool lower = TRUE;
61
61
 
@@ -124,7 +124,7 @@ symhash(const char *key, size_t len)
124
124
  }
125
125
 
126
126
  static mrb_sym
127
- find_symbol(mrb_state *mrb, const char *name, uint16_t len, uint8_t *hashp)
127
+ find_symbol(mrb_state *mrb, const char *name, size_t len, uint8_t *hashp)
128
128
  {
129
129
  mrb_sym i;
130
130
  symbol_name *sname;
@@ -172,11 +172,13 @@ sym_intern(mrb_state *mrb, const char *name, size_t len, mrb_bool lit)
172
172
  if (sym > 0) return sym;
173
173
 
174
174
  /* registering a new symbol */
175
- sym = ++mrb->symidx;
175
+ sym = mrb->symidx + 1;
176
176
  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));
177
+ size_t symcapa = mrb->symcapa;
178
+ if (symcapa == 0) symcapa = 100;
179
+ else symcapa = (size_t)(symcapa * 6 / 5);
180
+ mrb->symtbl = (symbol_name*)mrb_realloc(mrb, mrb->symtbl, sizeof(symbol_name)*(symcapa+1));
181
+ mrb->symcapa = symcapa;
180
182
  }
181
183
  sname = &mrb->symtbl[sym];
182
184
  sname->len = (uint16_t)len;
@@ -201,7 +203,7 @@ sym_intern(mrb_state *mrb, const char *name, size_t len, mrb_bool lit)
201
203
  else {
202
204
  sname->prev = 0;
203
205
  }
204
- mrb->symhash[hash] = sym;
206
+ mrb->symhash[hash] = mrb->symidx = sym;
205
207
 
206
208
  return sym<<SYMBOL_NORMAL_SHIFT;
207
209
  }
@@ -562,10 +564,9 @@ mrb_sym_dump(mrb_state *mrb, mrb_sym sym)
562
564
  static mrb_value
563
565
  sym_cmp(mrb_state *mrb, mrb_value s1)
564
566
  {
565
- mrb_value s2;
567
+ mrb_value s2 = mrb_get_arg1(mrb);
566
568
  mrb_sym sym1, sym2;
567
569
 
568
- mrb_get_args(mrb, "o", &s2);
569
570
  if (!mrb_symbol_p(s2)) return mrb_nil_value();
570
571
  sym1 = mrb_symbol(s1);
571
572
  sym2 = mrb_symbol(s2);
@@ -6,7 +6,9 @@
6
6
 
7
7
  #include <stddef.h>
8
8
  #include <stdarg.h>
9
+ #ifndef MRB_WITHOUT_FLOAT
9
10
  #include <math.h>
11
+ #endif
10
12
  #include <mruby.h>
11
13
  #include <mruby/array.h>
12
14
  #include <mruby/class.h>
@@ -150,7 +152,7 @@ envadjust(mrb_state *mrb, mrb_value *oldbase, mrb_value *newbase, size_t oldsize
150
152
  struct REnv *e = ci->env;
151
153
  mrb_value *st;
152
154
 
153
- if (e && MRB_ENV_STACK_SHARED_P(e) &&
155
+ if (e && MRB_ENV_ONSTACK_P(e) &&
154
156
  (st = e->stack) && oldbase <= st && st < oldbase+oldsize) {
155
157
  ptrdiff_t off = e->stack - oldbase;
156
158
 
@@ -160,7 +162,7 @@ envadjust(mrb_state *mrb, mrb_value *oldbase, mrb_value *newbase, size_t oldsize
160
162
  if (ci->proc && MRB_PROC_ENV_P(ci->proc) && ci->env != MRB_PROC_ENV(ci->proc)) {
161
163
  e = MRB_PROC_ENV(ci->proc);
162
164
 
163
- if (e && MRB_ENV_STACK_SHARED_P(e) &&
165
+ if (e && MRB_ENV_ONSTACK_P(e) &&
164
166
  (st = e->stack) && oldbase <= st && st < oldbase+oldsize) {
165
167
  ptrdiff_t off = e->stack - oldbase;
166
168
 
@@ -295,10 +297,10 @@ mrb_env_unshare(mrb_state *mrb, struct REnv *e)
295
297
  {
296
298
  if (e == NULL) return;
297
299
  else {
298
- size_t len = (size_t)MRB_ENV_STACK_LEN(e);
300
+ size_t len = (size_t)MRB_ENV_LEN(e);
299
301
  mrb_value *p;
300
302
 
301
- if (!MRB_ENV_STACK_SHARED_P(e)) return;
303
+ if (!MRB_ENV_ONSTACK_P(e)) return;
302
304
  if (e->cxt != mrb->c) return;
303
305
  if (e == mrb->c->cibase->env) return; /* for mirb */
304
306
  p = (mrb_value *)mrb_malloc(mrb, sizeof(mrb_value)*len);
@@ -306,7 +308,7 @@ mrb_env_unshare(mrb_state *mrb, struct REnv *e)
306
308
  stack_copy(p, e->stack, len);
307
309
  }
308
310
  e->stack = p;
309
- MRB_ENV_UNSHARE_STACK(e);
311
+ MRB_ENV_CLOSE(e);
310
312
  mrb_write_barrier(mrb, (struct RBasic *)e);
311
313
  }
312
314
  }
@@ -322,6 +324,7 @@ cipop(mrb_state *mrb)
322
324
  }
323
325
 
324
326
  void mrb_exc_set(mrb_state *mrb, mrb_value exc);
327
+ static mrb_value mrb_run(mrb_state *mrb, struct RProc* proc, mrb_value self);
325
328
 
326
329
  static void
327
330
  ecall(mrb_state *mrb)
@@ -333,10 +336,12 @@ ecall(mrb_state *mrb)
333
336
  struct REnv *env;
334
337
  ptrdiff_t cioff;
335
338
  int ai = mrb_gc_arena_save(mrb);
336
- uint16_t i = --c->eidx;
339
+ uint16_t i;
337
340
  int nregs;
338
341
 
339
- if (i<0) return;
342
+ if (c->eidx == 0) return;
343
+ i = --c->eidx;
344
+
340
345
  /* restrict total call depth of ecall() */
341
346
  if (++mrb->ecall_nest > MRB_ECALL_DEPTH_MAX) {
342
347
  mrb_exc_raise(mrb, mrb_obj_value(mrb->stack_err));
@@ -428,6 +433,7 @@ MRB_API mrb_value
428
433
  mrb_funcall_with_block(mrb_state *mrb, mrb_value self, mrb_sym mid, mrb_int argc, const mrb_value *argv, mrb_value blk)
429
434
  {
430
435
  mrb_value val;
436
+ int ai = mrb_gc_arena_save(mrb);
431
437
 
432
438
  if (!mrb->jmp) {
433
439
  struct mrb_jmpbuf c_jmp;
@@ -516,19 +522,17 @@ mrb_funcall_with_block(mrb_state *mrb, mrb_value self, mrb_sym mid, mrb_int argc
516
522
  mrb->c->stack[argc+1] = blk;
517
523
 
518
524
  if (MRB_METHOD_CFUNC_P(m)) {
519
- int ai = mrb_gc_arena_save(mrb);
520
-
521
525
  ci->acc = CI_ACC_DIRECT;
522
526
  val = MRB_METHOD_CFUNC(m)(mrb, self);
523
527
  mrb->c->stack = mrb->c->ci->stackent;
524
528
  cipop(mrb);
525
- mrb_gc_arena_restore(mrb, ai);
526
529
  }
527
530
  else {
528
531
  ci->acc = CI_ACC_SKIP;
529
532
  val = mrb_run(mrb, MRB_METHOD_PROC(m), self);
530
533
  }
531
534
  }
535
+ mrb_gc_arena_restore(mrb, ai);
532
536
  mrb_gc_protect(mrb, val);
533
537
  return val;
534
538
  }
@@ -623,7 +627,7 @@ mrb_f_send(mrb_state *mrb, mrb_value self)
623
627
  ci->argc--;
624
628
  }
625
629
  else { /* variable length arguments */
626
- mrb_ary_shift(mrb, regs[0]);
630
+ regs[0] = mrb_ary_subseq(mrb, regs[0], 1, RARRAY_LEN(regs[0]) - 1);
627
631
  }
628
632
 
629
633
  if (MRB_METHOD_CFUNC_P(m)) {
@@ -647,8 +651,7 @@ eval_under(mrb_state *mrb, mrb_value self, mrb_value blk, struct RClass *c)
647
651
  }
648
652
  ci = mrb->c->ci;
649
653
  if (ci->acc == CI_ACC_DIRECT) {
650
- ci->target_class = c;
651
- return mrb_yield_cont(mrb, blk, self, 1, &self);
654
+ return mrb_yield_with_class(mrb, blk, 1, &self, self, c);
652
655
  }
653
656
  ci->target_class = c;
654
657
  p = mrb_proc_ptr(blk);
@@ -723,26 +726,11 @@ mrb_value
723
726
  mrb_obj_instance_eval(mrb_state *mrb, mrb_value self)
724
727
  {
725
728
  mrb_value a, b;
726
- mrb_value cv;
727
- struct RClass *c;
728
729
 
729
730
  if (mrb_get_args(mrb, "|S&", &a, &b) == 1) {
730
731
  mrb_raise(mrb, E_NOTIMP_ERROR, "instance_eval with string not implemented");
731
732
  }
732
- switch (mrb_type(self)) {
733
- case MRB_TT_SYMBOL:
734
- case MRB_TT_FIXNUM:
735
- #ifndef MRB_WITHOUT_FLOAT
736
- case MRB_TT_FLOAT:
737
- #endif
738
- c = 0;
739
- break;
740
- default:
741
- cv = mrb_singleton_class(mrb, self);
742
- c = mrb_class_ptr(cv);
743
- break;
744
- }
745
- return eval_under(mrb, self, b, c);
733
+ return eval_under(mrb, self, b, mrb_singleton_class_ptr(mrb, self));
746
734
  }
747
735
 
748
736
  MRB_API mrb_value
@@ -766,16 +754,25 @@ mrb_yield_with_class(mrb_state *mrb, mrb_value b, mrb_int argc, const mrb_value
766
754
  ci = cipush(mrb);
767
755
  ci->mid = mid;
768
756
  ci->proc = p;
769
- ci->stackent = mrb->c->stack;
770
- ci->argc = (int)argc;
771
757
  ci->target_class = c;
772
758
  ci->acc = CI_ACC_SKIP;
773
- n = MRB_PROC_CFUNC_P(p) ? (int)(argc+2) : p->body.irep->nregs;
774
- mrb->c->stack = mrb->c->stack + n;
759
+ ci->stackent = mrb->c->stack;
760
+ mrb->c->stack += n;
761
+ if (argc >= CALL_MAXARGS) {
762
+ ci->argc = -1;
763
+ n = 3;
764
+ }
765
+ else {
766
+ ci->argc = (int)argc;
767
+ n = argc + 2;
768
+ }
775
769
  mrb_stack_extend(mrb, n);
776
-
777
770
  mrb->c->stack[0] = self;
778
- if (argc > 0) {
771
+ if (ci->argc < 0) {
772
+ mrb->c->stack[1] = mrb_ary_new_from_values(mrb, argc, argv);
773
+ argc = 1;
774
+ }
775
+ else if (argc > 0) {
779
776
  stack_copy(mrb->c->stack+1, argv, argc);
780
777
  }
781
778
  mrb->c->stack[argc+1] = mrb_nil_value();
@@ -1061,6 +1058,11 @@ RETRY_TRY_BLOCK:
1061
1058
  NEXT;
1062
1059
  }
1063
1060
 
1061
+ CASE(OP_LOADI16, BS) {
1062
+ SET_INT_VALUE(regs[a], (mrb_int)(int16_t)b);
1063
+ NEXT;
1064
+ }
1065
+
1064
1066
  CASE(OP_LOADSYM, BB) {
1065
1067
  SET_SYM_VALUE(regs[a], syms[b]);
1066
1068
  NEXT;
@@ -1098,13 +1100,13 @@ RETRY_TRY_BLOCK:
1098
1100
  }
1099
1101
 
1100
1102
  CASE(OP_GETSV, BB) {
1101
- mrb_value val = mrb_vm_special_get(mrb, b);
1103
+ mrb_value val = mrb_vm_special_get(mrb, syms[b]);
1102
1104
  regs[a] = val;
1103
1105
  NEXT;
1104
1106
  }
1105
1107
 
1106
1108
  CASE(OP_SETSV, BB) {
1107
- mrb_vm_special_set(mrb, b, regs[a]);
1109
+ mrb_vm_special_set(mrb, syms[b], regs[a]);
1108
1110
  NEXT;
1109
1111
  }
1110
1112
 
@@ -1167,7 +1169,7 @@ RETRY_TRY_BLOCK:
1167
1169
  mrb_value *regs_a = regs + a;
1168
1170
  struct REnv *e = uvenv(mrb, c);
1169
1171
 
1170
- if (e && b < MRB_ENV_STACK_LEN(e)) {
1172
+ if (e && b < MRB_ENV_LEN(e)) {
1171
1173
  *regs_a = e->stack[b];
1172
1174
  }
1173
1175
  else {
@@ -1182,7 +1184,7 @@ RETRY_TRY_BLOCK:
1182
1184
  if (e) {
1183
1185
  mrb_value *regs_a = regs + a;
1184
1186
 
1185
- if (b < MRB_ENV_STACK_LEN(e)) {
1187
+ if (b < MRB_ENV_LEN(e)) {
1186
1188
  e->stack[b] = *regs_a;
1187
1189
  mrb_write_barrier(mrb, (struct RBasic*)e);
1188
1190
  }
@@ -1495,14 +1497,7 @@ RETRY_TRY_BLOCK:
1495
1497
  ci->target_class = MRB_PROC_TARGET_CLASS(m);
1496
1498
  ci->proc = m;
1497
1499
  if (MRB_PROC_ENV_P(m)) {
1498
- mrb_sym mid;
1499
- struct REnv *e = MRB_PROC_ENV(m);
1500
-
1501
- mid = e->mid;
1502
- if (mid) ci->mid = mid;
1503
- if (!e->stack) {
1504
- e->stack = mrb->c->stack;
1505
- }
1500
+ ci->mid = MRB_PROC_ENV(m)->mid;
1506
1501
  }
1507
1502
 
1508
1503
  /* prepare stack */
@@ -1698,7 +1693,7 @@ RETRY_TRY_BLOCK:
1698
1693
  else {
1699
1694
  struct REnv *e = uvenv(mrb, lv-1);
1700
1695
  if (!e) goto L_NOSUPER;
1701
- if (MRB_ENV_STACK_LEN(e) <= m1+r+m2+kd+1)
1696
+ if (MRB_ENV_LEN(e) <= m1+r+m2+kd+1)
1702
1697
  goto L_NOSUPER;
1703
1698
  stack = e->stack + 1;
1704
1699
  }
@@ -2024,7 +2019,7 @@ RETRY_TRY_BLOCK:
2024
2019
  if (MRB_PROC_ENV_P(dst)) {
2025
2020
  struct REnv *e = MRB_PROC_ENV(dst);
2026
2021
 
2027
- if (!MRB_ENV_STACK_SHARED_P(e) || (e->cxt && e->cxt != mrb->c)) {
2022
+ if (!MRB_ENV_ONSTACK_P(e) || (e->cxt && e->cxt != mrb->c)) {
2028
2023
  localjump_error(mrb, LOCALJUMP_ERROR_RETURN);
2029
2024
  goto L_RAISE;
2030
2025
  }
@@ -2079,7 +2074,7 @@ RETRY_TRY_BLOCK:
2079
2074
  mrb_exc_set(mrb, exc);
2080
2075
  goto L_RAISE;
2081
2076
  }
2082
- if (!MRB_PROC_ENV_P(proc) || !MRB_ENV_STACK_SHARED_P(MRB_PROC_ENV(proc))) {
2077
+ if (!MRB_PROC_ENV_P(proc) || !MRB_ENV_ONSTACK_P(MRB_PROC_ENV(proc))) {
2083
2078
  goto L_BREAK_ERROR;
2084
2079
  }
2085
2080
  else {
@@ -2179,8 +2174,8 @@ RETRY_TRY_BLOCK:
2179
2174
  if (lv == 0) stack = regs + 1;
2180
2175
  else {
2181
2176
  struct REnv *e = uvenv(mrb, lv-1);
2182
- if (!e || (!MRB_ENV_STACK_SHARED_P(e) && e->mid == 0) ||
2183
- MRB_ENV_STACK_LEN(e) <= m1+r+m2+1) {
2177
+ if (!e || (!MRB_ENV_ONSTACK_P(e) && e->mid == 0) ||
2178
+ MRB_ENV_LEN(e) <= m1+r+m2+1) {
2184
2179
  localjump_error(mrb, LOCALJUMP_ERROR_YIELD);
2185
2180
  goto L_RAISE;
2186
2181
  }
@@ -2825,7 +2820,7 @@ RETRY_TRY_BLOCK:
2825
2820
  MRB_END_EXC(&c_jmp);
2826
2821
  }
2827
2822
 
2828
- MRB_API mrb_value
2823
+ static mrb_value
2829
2824
  mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
2830
2825
  {
2831
2826
  if (mrb->c->ci->argc < 0) {
@@ -63,28 +63,25 @@ def run_cmd(cmd)
63
63
  configs = []
64
64
  [true, false].each do |mode_32|
65
65
  ['', 'MRB_USE_FLOAT'].each do |float_conf|
66
- ['', 'MRB_INT16', 'MRB_INT64'].each do |int_conf|
67
- ['', 'MRB_NAN_BOXING', 'MRB_WORD_BOXING'].each do |boxing_conf|
68
- ['', 'MRB_UTF8_STRING'].each do |utf8_conf|
69
- next if (float_conf == 'MRB_USE_FLOAT') && (boxing_conf == 'MRB_NAN_BOXING')
70
- next if (int_conf == 'MRB_INT64') && (boxing_conf == 'MRB_NAN_BOXING')
71
- next if (int_conf == 'MRB_INT16') && (boxing_conf == 'MRB_WORD_BOXING')
72
- next if (int_conf == 'MRB_INT64') && (boxing_conf == 'MRB_WORD_BOXING') && mode_32
73
- env = [float_conf, int_conf, boxing_conf, utf8_conf].map do |conf|
74
- conf == '' ? nil : "-D#{conf}=1"
75
- end.compact.join(' ')
76
- bit = mode_32 ? '-m32 ' : ''
77
- _info = ''
78
- _info += mode_32 ? '32bit ' : '64bit '
79
- _info += float_conf['USE'] ? 'float ' : ''
80
- _info += int_conf['16'] ? 'int16 ' : ''
81
- _info += int_conf['64'] ? 'int64 ' : ''
82
- _info += boxing_conf['NAN'] ? 'nan ' : ''
83
- _info += boxing_conf['WORD'] ? 'word ' : ''
84
- _info += utf8_conf['UTF8'] ? 'utf8 ' : ''
85
- _info = _info.gsub(/ +/, ' ').strip.tr(' ', '_')
86
- configs << { '_info' => _info, 'CFLAGS' => "#{bit}#{env}", 'LDFLAGS' => bit.strip.to_s }
87
- end
66
+ ['', 'MRB_NAN_BOXING', 'MRB_WORD_BOXING'].each do |boxing_conf|
67
+ ['', 'MRB_UTF8_STRING'].each do |utf8_conf|
68
+ next if (float_conf == 'MRB_USE_FLOAT') && (boxing_conf == 'MRB_NAN_BOXING')
69
+ next if (int_conf == 'MRB_INT64') && (boxing_conf == 'MRB_NAN_BOXING')
70
+ next if (int_conf == 'MRB_INT64') && (boxing_conf == 'MRB_WORD_BOXING') && mode_32
71
+ env = [float_conf, int_conf, boxing_conf, utf8_conf].map do |conf|
72
+ conf == '' ? nil : "-D#{conf}=1"
73
+ end.compact.join(' ')
74
+ bit = mode_32 ? '-m32 ' : ''
75
+ _info = ''
76
+ _info += mode_32 ? '32bit ' : '64bit '
77
+ _info += float_conf['USE'] ? 'float ' : ''
78
+ _info += int_conf['16'] ? 'int16 ' : ''
79
+ _info += int_conf['64'] ? 'int64 ' : ''
80
+ _info += boxing_conf['NAN'] ? 'nan ' : ''
81
+ _info += boxing_conf['WORD'] ? 'word ' : ''
82
+ _info += utf8_conf['UTF8'] ? 'utf8 ' : ''
83
+ _info = _info.gsub(/ +/, ' ').strip.tr(' ', '_')
84
+ configs << { '_info' => _info, 'CFLAGS' => "#{bit}#{env}", 'LDFLAGS' => bit.strip.to_s }
88
85
  end
89
86
  end
90
87
  end
@@ -7,7 +7,7 @@
7
7
  # loader all gems
8
8
  self.libmruby_objs << objfile("#{build_dir}/mrbgems/gem_init")
9
9
  file objfile("#{build_dir}/mrbgems/gem_init") => ["#{build_dir}/mrbgems/gem_init.c", "#{build_dir}/LEGAL"]
10
- file "#{build_dir}/mrbgems/gem_init.c" => [MRUBY_CONFIG, __FILE__] do |t|
10
+ file "#{build_dir}/mrbgems/gem_init.c" => [MRUBY_CONFIG, __FILE__, *Dir.glob("#{build_dir}/mrbgems/mruby-*/*.c")] do |t|
11
11
  mkdir_p "#{build_dir}/mrbgems"
12
12
  open(t.name, 'w') do |f|
13
13
  gem_func_gems = gems.select { |g| g.generate_functions }
@@ -10,6 +10,7 @@ class MRuby::Toolchain::Android
10
10
  ~/Android/Sdk/ndk-bundle
11
11
  %LOCALAPPDATA%/Android/android-sdk/ndk-bundle
12
12
  %LOCALAPPDATA%/Android/android-ndk
13
+ %LOCALAPPDATA%/Android/Sdk/ndk/*
13
14
  ~/Library/Android/sdk/ndk-bundle
14
15
  ~/Library/Android/ndk
15
16
  }
@@ -40,6 +41,19 @@ def message
40
41
  end
41
42
  end
42
43
 
44
+ class SysrootNotReady < StandardError
45
+ def message
46
+ <<-EOM
47
+ Couldn't find standard header files
48
+ Please Move/Copy important file inside
49
+ <NDK_HOME>/sysroot/usr/include/
50
+ to
51
+ <NDK_HOME>/platforms/<ANDROID_VERSION>/<ARCH>/usr/include/
52
+ Higher NDK version will be use.
53
+ EOM
54
+ end
55
+ end
56
+
43
57
  attr_reader :params
44
58
 
45
59
  def initialize(params)
@@ -74,6 +88,25 @@ def home_path
74
88
  path.gsub! '%LOCALAPPDATA%', ENV['LOCALAPPDATA'] || '%LOCALAPPDATA%'
75
89
  path.gsub! '\\', '/'
76
90
  path.gsub! '~', Dir.home || '~'
91
+ path.gsub!('*') do
92
+ next nil unless path[-1] == "*"
93
+ dirs = Dir.glob(path).collect do |d|
94
+ m = d.match(/(\d+)\.(\d+)\.(\d+)$/)
95
+ m ? [m[1], m[2], m[3]].collect { |v| v.to_i } : nil
96
+ end
97
+ dirs.compact!
98
+ dirs.sort! do |before, after|
99
+ f = 0
100
+ if (f = (after.first <=> before.first)) != 0
101
+ next f
102
+ elsif (f = (after[1] <=> before[1])) != 0
103
+ next f
104
+ else
105
+ next after.last <=> before.last
106
+ end
107
+ end
108
+ dirs.empty? ? nil.to_s : dirs.first.join(".")
109
+ end
77
110
  File.directory?(path)
78
111
  } || raise(AndroidNDKHomeNotFound)
79
112
  )
@@ -146,7 +179,8 @@ def arch
146
179
  end
147
180
 
148
181
  def sysroot
149
- @sysroot ||= home_path.join('platforms', platform,
182
+ return @sysroot if @sysroot
183
+ sysroot_path = home_path.join('platforms', platform,
150
184
  case arch
151
185
  when /armeabi/ then 'arch-arm'
152
186
  when /arm64-v8a/ then 'arch-arm64'
@@ -156,6 +190,11 @@ def sysroot
156
190
  when /mips/ then 'arch-mips'
157
191
  end
158
192
  ).to_s
193
+ if Dir.exist?(File.join(sysroot_path, "usr", "include"))
194
+ return @sysroot = sysroot_path
195
+ else
196
+ raise(SysrootNotReady)
197
+ end
159
198
  end
160
199
 
161
200
  def platform
@@ -259,6 +298,12 @@ def ctarget
259
298
  def cflags
260
299
  flags = []
261
300
 
301
+ case RUBY_PLATFORM
302
+ when /mswin|mingw|win32/
303
+ # Build for Android dont need window flag
304
+ flags += %W(-U_WIN32 -U_WIN64)
305
+ end
306
+
262
307
  flags += %W(-MMD -MP -D__android__ -DANDROID --sysroot="#{sysroot}")
263
308
  flags += ctarget
264
309
  case toolchain