script_core 0.2.2 → 0.2.7

Sign up to get free protection for your applications and to get access to all the features.
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