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
@@ -3,35 +3,33 @@
3
3
  spec.author = 'mruby developers'
4
4
  spec.summary = 'mruby compiler library'
5
5
 
6
- current_dir = spec.dir
7
- current_build_dir = spec.build_dir
8
-
9
- lex_def = "#{current_dir}/core/lex.def"
10
- core_objs = Dir.glob("#{current_dir}/core/*.c").map { |f|
6
+ lex_def = "#{dir}/core/lex.def"
7
+ core_objs = Dir.glob("#{dir}/core/*.c").map { |f|
11
8
  next nil if build.cxx_exception_enabled? and f =~ /(codegen).c$/
12
- objfile(f.pathmap("#{current_build_dir}/core/%n"))
9
+ objfile(f.pathmap("#{build_dir}/core/%n"))
13
10
  }.compact
14
11
 
15
12
  if build.cxx_exception_enabled?
16
13
  core_objs <<
17
- build.compile_as_cxx("#{current_build_dir}/core/y.tab.c", "#{current_build_dir}/core/y.tab.cxx",
18
- objfile("#{current_build_dir}/y.tab"), ["#{current_dir}/core"]) <<
19
- build.compile_as_cxx("#{current_dir}/core/codegen.c", "#{current_build_dir}/core/codegen.cxx")
14
+ build.compile_as_cxx("#{dir}/core/y.tab.c", "#{build_dir}/core/y.tab.cxx",
15
+ objfile("#{build_dir}/y.tab"), ["#{dir}/core"]) <<
16
+ build.compile_as_cxx("#{dir}/core/codegen.c", "#{build_dir}/core/codegen.cxx")
20
17
  else
21
- core_objs << objfile("#{current_build_dir}/core/y.tab")
22
- file objfile("#{current_build_dir}/core/y.tab") => "#{current_build_dir}/core/y.tab.c" do |t|
23
- cc.run t.name, t.prerequisites.first, [], ["#{current_dir}/core"]
18
+ core_objs << objfile("#{build_dir}/core/y.tab")
19
+ file objfile("#{build_dir}/core/y.tab") => "#{dir}/core/y.tab.c" do |t|
20
+ cc.run t.name, t.prerequisites.first, [], ["#{dir}/core"]
24
21
  end
25
22
  end
26
23
 
27
24
  # Parser
28
- file "#{current_build_dir}/core/y.tab.c" => ["#{current_dir}/core/parse.y", lex_def] do |t|
29
- mkdir_p File.dirname t.name
25
+ file "#{dir}/core/y.tab.c" => ["#{dir}/core/parse.y", lex_def] do |t|
30
26
  yacc.run t.name, t.prerequisites.first
27
+ content = File.read(t.name).gsub(/^#line +\d+ +"\K.*$/){$&.relative_path}
28
+ File.write(t.name, content)
31
29
  end
32
30
 
33
31
  # Lexical analyzer
34
- file lex_def => "#{current_dir}/core/keywords" do |t|
32
+ file lex_def => "#{dir}/core/keywords" do |t|
35
33
  gperf.run t.name, t.prerequisites.first
36
34
  end
37
35
 
@@ -107,7 +107,7 @@ def to_r
107
107
  [Fixnum, Float].each do |cls|
108
108
  [:+, :-, :*, :/, :==].each do |op|
109
109
  cls.instance_eval do
110
- original_operator_name = "__original_operator_#{op}_complex"
110
+ original_operator_name = :"__original_operator_#{op}_complex"
111
111
  alias_method original_operator_name, op
112
112
  define_method op do |rhs|
113
113
  if rhs.is_a? Complex
@@ -174,7 +174,7 @@ div_pair(struct float_pair *q, struct float_pair const *a,
174
174
  static mrb_value
175
175
  complex_div(mrb_state *mrb, mrb_value self)
176
176
  {
177
- mrb_value rhs;
177
+ mrb_value rhs = mrb_get_arg1(mrb);
178
178
  struct mrb_complex *a, *b;
179
179
  struct float_pair ar, ai, br, bi;
180
180
  struct float_pair br2, bi2;
@@ -183,7 +183,6 @@ complex_div(mrb_state *mrb, mrb_value self)
183
183
  struct float_pair ai_br, ar_bi;
184
184
  struct float_pair zr, zi;
185
185
 
186
- mrb_get_args(mrb, "o", &rhs);
187
186
  a = complex_ptr(mrb, self);
188
187
  b = complex_ptr(mrb, rhs);
189
188
 
@@ -8,7 +8,7 @@ mrb_protect(mrb_state *mrb, mrb_func_t body, mrb_value data, mrb_bool *state)
8
8
  struct mrb_jmpbuf *prev_jmp = mrb->jmp;
9
9
  struct mrb_jmpbuf c_jmp;
10
10
  mrb_value result = mrb_nil_value();
11
- mrb_int ai = mrb_gc_arena_save(mrb);
11
+ int ai = mrb_gc_arena_save(mrb);
12
12
 
13
13
  if (state) { *state = FALSE; }
14
14
 
@@ -34,7 +34,7 @@ mrb_ensure(mrb_state *mrb, mrb_func_t body, mrb_value b_data, mrb_func_t ensure,
34
34
  struct mrb_jmpbuf *prev_jmp = mrb->jmp;
35
35
  struct mrb_jmpbuf c_jmp;
36
36
  mrb_value result;
37
- mrb_int ai = mrb_gc_arena_save(mrb);
37
+ int ai = mrb_gc_arena_save(mrb);
38
38
 
39
39
  MRB_TRY(&c_jmp) {
40
40
  mrb->jmp = &c_jmp;
@@ -71,7 +71,7 @@ mrb_rescue_exceptions(mrb_state *mrb, mrb_func_t body, mrb_value b_data, mrb_fun
71
71
  mrb_value result;
72
72
  mrb_bool error_matched = FALSE;
73
73
  mrb_int i;
74
- mrb_int ai = mrb_gc_arena_save(mrb);
74
+ int ai = mrb_gc_arena_save(mrb);
75
75
 
76
76
  MRB_TRY(&c_jmp) {
77
77
  mrb->jmp = &c_jmp;
@@ -9,217 +9,6 @@
9
9
  mrb_value mrb_exec_irep(mrb_state *mrb, mrb_value self, struct RProc *p);
10
10
  mrb_value mrb_obj_instance_eval(mrb_state *mrb, mrb_value self);
11
11
 
12
- static struct mrb_irep *
13
- get_closure_irep(mrb_state *mrb, int level)
14
- {
15
- struct RProc *proc = mrb->c->ci[-1].proc;
16
-
17
- while (level--) {
18
- if (!proc) return NULL;
19
- proc = proc->upper;
20
- }
21
- if (!proc) return NULL;
22
- if (MRB_PROC_CFUNC_P(proc)) {
23
- return NULL;
24
- }
25
- return proc->body.irep;
26
- }
27
-
28
- /* search for irep lev above the bottom */
29
- static mrb_irep*
30
- search_irep(mrb_irep *top, int bnest, int lev, mrb_irep *bottom)
31
- {
32
- int i;
33
-
34
- for (i=0; i<top->rlen; i++) {
35
- mrb_irep* tmp = top->reps[i];
36
-
37
- if (tmp == bottom) return top;
38
- tmp = search_irep(tmp, bnest-1, lev, bottom);
39
- if (tmp) {
40
- if (bnest == lev) return top;
41
- return tmp;
42
- }
43
- }
44
- return NULL;
45
- }
46
-
47
- static uint16_t
48
- search_variable(mrb_state *mrb, mrb_sym vsym, int bnest)
49
- {
50
- mrb_irep *virep;
51
- int level;
52
- int pos;
53
-
54
- for (level = 0; (virep = get_closure_irep(mrb, level)); level++) {
55
- if (virep->lv == NULL) {
56
- continue;
57
- }
58
- for (pos = 0; pos < virep->nlocals - 1; pos++) {
59
- if (vsym == virep->lv[pos].name) {
60
- return (pos+1)<<8 | (level+bnest);
61
- }
62
- }
63
- }
64
-
65
- return 0;
66
- }
67
-
68
- static int
69
- irep_argc(mrb_irep *irep)
70
- {
71
- mrb_code c;
72
-
73
- c = irep->iseq[0];
74
- if (c == OP_ENTER) {
75
- mrb_aspec ax = PEEK_W(irep->iseq+1);
76
- /* extra 1 means a slot for block */
77
- return MRB_ASPEC_REQ(ax)+MRB_ASPEC_OPT(ax)+MRB_ASPEC_REST(ax)+MRB_ASPEC_POST(ax)+1;
78
- }
79
- return 0;
80
- }
81
-
82
- static mrb_bool
83
- potential_upvar_p(struct mrb_locals *lv, uint16_t v, int argc, uint16_t nlocals)
84
- {
85
- if (v >= nlocals) return FALSE;
86
- /* skip arguments */
87
- if (v < argc+1) return FALSE;
88
- return TRUE;
89
- }
90
-
91
- extern uint8_t mrb_insn_size[];
92
- extern uint8_t mrb_insn_size1[];
93
- extern uint8_t mrb_insn_size2[];
94
- extern uint8_t mrb_insn_size3[];
95
-
96
- static void
97
- patch_irep(mrb_state *mrb, mrb_irep *irep, int bnest, mrb_irep *top)
98
- {
99
- int i;
100
- uint32_t a;
101
- uint16_t b;
102
- uint8_t c;
103
- mrb_code insn;
104
- int argc = irep_argc(irep);
105
- mrb_code *iseq = (mrb_code *)irep->iseq;
106
-
107
- mrb_assert((irep->flags & MRB_ISEQ_NO_FREE) == 0);
108
-
109
- for (i = 0; i < irep->ilen; ) {
110
- insn = iseq[i];
111
- switch(insn){
112
- case OP_EPUSH:
113
- a = PEEK_B(iseq+i+1);
114
- patch_irep(mrb, irep->reps[a], bnest + 1, top);
115
- break;
116
-
117
- case OP_LAMBDA:
118
- case OP_BLOCK:
119
- a = PEEK_B(iseq+i+1);
120
- b = PEEK_B(iseq+i+2);
121
- patch_irep(mrb, irep->reps[b], bnest + 1, top);
122
- break;
123
-
124
- case OP_SEND:
125
- b = PEEK_B(iseq+i+2);
126
- c = PEEK_B(iseq+i+3);
127
- if (c != 0) {
128
- break;
129
- }
130
- else {
131
- uint16_t arg = search_variable(mrb, irep->syms[b], bnest);
132
- if (arg != 0) {
133
- /* must replace */
134
- iseq[i] = OP_GETUPVAR;
135
- iseq[i+2] = arg >> 8;
136
- iseq[i+3] = arg & 0xff;
137
- }
138
- }
139
- break;
140
-
141
- case OP_MOVE:
142
- a = PEEK_B(iseq+i+1);
143
- b = PEEK_B(iseq+i+2);
144
- /* src part */
145
- if (potential_upvar_p(irep->lv, b, argc, irep->nlocals)) {
146
- uint16_t arg = search_variable(mrb, irep->lv[b - 1].name, bnest);
147
- if (arg != 0) {
148
- /* must replace */
149
- iseq[i] = insn = OP_GETUPVAR;
150
- iseq[i+2] = arg >> 8;
151
- iseq[i+3] = arg & 0xff;
152
- }
153
- }
154
- /* dst part */
155
- if (potential_upvar_p(irep->lv, a, argc, irep->nlocals)) {
156
- uint16_t arg = search_variable(mrb, irep->lv[a - 1].name, bnest);
157
- if (arg != 0) {
158
- /* must replace */
159
- iseq[i] = insn = OP_SETUPVAR;
160
- iseq[i+1] = (mrb_code)b;
161
- iseq[i+2] = arg >> 8;
162
- iseq[i+3] = arg & 0xff;
163
- }
164
- }
165
- break;
166
-
167
- case OP_GETUPVAR:
168
- a = PEEK_B(iseq+i+1);
169
- b = PEEK_B(iseq+i+2);
170
- c = PEEK_B(iseq+i+3);
171
- {
172
- int lev = c+1;
173
- mrb_irep *tmp = search_irep(top, bnest, lev, irep);
174
- if (potential_upvar_p(tmp->lv, b, irep_argc(tmp), tmp->nlocals)) {
175
- uint16_t arg = search_variable(mrb, tmp->lv[b-1].name, bnest);
176
- if (arg != 0) {
177
- /* must replace */
178
- iseq[i] = OP_GETUPVAR;
179
- iseq[i+2] = arg >> 8;
180
- iseq[i+3] = arg & 0xff;
181
- }
182
- }
183
- }
184
- break;
185
-
186
- case OP_SETUPVAR:
187
- a = PEEK_B(iseq+i+1);
188
- b = PEEK_B(iseq+i+2);
189
- c = PEEK_B(iseq+i+3);
190
- {
191
- int lev = c+1;
192
- mrb_irep *tmp = search_irep(top, bnest, lev, irep);
193
- if (potential_upvar_p(tmp->lv, b, irep_argc(tmp), tmp->nlocals)) {
194
- uint16_t arg = search_variable(mrb, tmp->lv[b-1].name, bnest);
195
- if (arg != 0) {
196
- /* must replace */
197
- iseq[i] = OP_SETUPVAR;
198
- iseq[i+1] = a;
199
- iseq[i+2] = arg >> 8;
200
- iseq[i+3] = arg & 0xff;
201
- }
202
- }
203
- }
204
- break;
205
-
206
- case OP_EXT1:
207
- insn = PEEK_B(iseq+i+1);
208
- i += mrb_insn_size1[insn]+1;
209
- continue;
210
- case OP_EXT2:
211
- insn = PEEK_B(iseq+i+1);
212
- i += mrb_insn_size2[insn]+1;
213
- continue;
214
- case OP_EXT3:
215
- insn = PEEK_B(iseq+i+1);
216
- i += mrb_insn_size3[insn]+1;
217
- continue;
218
- }
219
- i+=mrb_insn_size[insn];
220
- }
221
- }
222
-
223
12
  void mrb_codedump_all(mrb_state*, struct RProc*);
224
13
 
225
14
  static struct RProc*
@@ -243,7 +32,8 @@ create_proc_from_string(mrb_state *mrb, char *s, mrb_int len, mrb_value binding,
243
32
  mrbc_filename(mrb, cxt, file ? file : "(eval)");
244
33
  cxt->capture_errors = TRUE;
245
34
  cxt->no_optimize = TRUE;
246
- cxt->on_eval = TRUE;
35
+ ci = (mrb->c->ci > mrb->c->cibase) ? mrb->c->ci - 1 : mrb->c->cibase;
36
+ cxt->upper = ci->proc && MRB_PROC_CFUNC_P(ci->proc) ? NULL : ci->proc;
247
37
 
248
38
  p = mrb_parse_nstring(mrb, s, len, cxt);
249
39
 
@@ -298,7 +88,7 @@ create_proc_from_string(mrb_state *mrb, char *s, mrb_int len, mrb_value binding,
298
88
  e->mid = ci->mid;
299
89
  e->stack = ci[1].stackent;
300
90
  e->cxt = mrb->c;
301
- MRB_ENV_SET_STACK_LEN(e, ci->proc->body.irep->nlocals);
91
+ MRB_ENV_SET_LEN(e, ci->proc->body.irep->nlocals);
302
92
  bidx = ci->argc;
303
93
  if (ci->argc < 0) bidx = 2;
304
94
  else bidx += 1;
@@ -311,7 +101,6 @@ create_proc_from_string(mrb_state *mrb, char *s, mrb_int len, mrb_value binding,
311
101
  }
312
102
  proc->upper = ci->proc;
313
103
  mrb->c->ci->target_class = target_class;
314
- patch_irep(mrb, proc->body.irep, 0, proc->body.irep);
315
104
  /* mrb_codedump_all(mrb, proc); */
316
105
 
317
106
  mrb_parser_free(p);
@@ -130,3 +130,24 @@ def do_eval(code)
130
130
  EOS
131
131
  }
132
132
  end
133
+
134
+ assert('Calling the same method as the variable name') do
135
+ hoge = Object.new
136
+ def hoge.fuga
137
+ "Hit!"
138
+ end
139
+ assert_equal("Hit!") { fuga = "Miss!"; eval "hoge.fuga" }
140
+ assert_equal("Hit!") { fuga = "Miss!"; -> { eval "hoge.fuga" }.call }
141
+ assert_equal("Hit!") { -> { fuga = "Miss!"; eval "hoge.fuga" }.call }
142
+ assert_equal("Hit!") { fuga = "Miss!"; eval("-> { hoge.fuga }").call }
143
+ end
144
+
145
+ assert('Access numbered parameter from eval') do
146
+ hoge = Object.new
147
+ def hoge.fuga(a, &b)
148
+ b.call(a)
149
+ end
150
+ assert_equal(6) {
151
+ hoge.fuga(3) { _1 + eval("_1") }
152
+ }
153
+ end
@@ -291,8 +291,7 @@ mrb_fiber_alive_p(mrb_state *mrb, mrb_value self)
291
291
  static mrb_value
292
292
  fiber_eq(mrb_state *mrb, mrb_value self)
293
293
  {
294
- mrb_value other;
295
- mrb_get_args(mrb, "o", &other);
294
+ mrb_value other = mrb_get_arg1(mrb);
296
295
 
297
296
  if (!mrb_fiber_p(other)) {
298
297
  return mrb_false_value();
@@ -53,10 +53,8 @@ hash_slice(mrb_state *mrb, mrb_value hash)
53
53
  mrb_int argc, i;
54
54
 
55
55
  mrb_get_args(mrb, "*", &argv, &argc);
56
- if (argc == 0) {
57
- return mrb_hash_new_capa(mrb, argc);
58
- }
59
56
  result = mrb_hash_new_capa(mrb, argc);
57
+ if (argc == 0) return result; /* empty hash */
60
58
  for (i = 0; i < argc; i++) {
61
59
  mrb_value key = argv[i];
62
60
  mrb_value val;
@@ -8,8 +8,7 @@ istruct_test_initialize(mrb_state *mrb, mrb_value self)
8
8
  {
9
9
  char *string = (char*)mrb_istruct_ptr(self);
10
10
  mrb_int size = mrb_istruct_size();
11
- mrb_value object;
12
- mrb_get_args(mrb, "o", &object);
11
+ mrb_value object = mrb_get_arg1(mrb);
13
12
 
14
13
  if (mrb_fixnum_p(object)) {
15
14
  strncpy(string, "fixnum", size-1);
@@ -45,8 +44,8 @@ istruct_test_length(mrb_state *mrb, mrb_value self)
45
44
  static mrb_value
46
45
  istruct_test_test_receive(mrb_state *mrb, mrb_value self)
47
46
  {
48
- mrb_value object;
49
- mrb_get_args(mrb, "o", &object);
47
+ mrb_value object = mrb_get_arg1(mrb);
48
+
50
49
  if (mrb_obj_class(mrb, object) != mrb_class_get(mrb, "InlineStructTest"))
51
50
  {
52
51
  mrb_raise(mrb, E_TYPE_ERROR, "Expected InlineStructTest");
@@ -5,10 +5,24 @@
5
5
  #ifndef MRUBY_IO_H
6
6
  #define MRUBY_IO_H
7
7
 
8
+ #include <mruby.h>
9
+
10
+ #ifdef MRB_DISABLE_STDIO
11
+ # error IO and File conflicts 'MRB_DISABLE_STDIO' configuration in your 'build_config.rb'
12
+ #endif
13
+
8
14
  #if defined(__cplusplus)
9
15
  extern "C" {
10
16
  #endif
11
17
 
18
+ #if defined(MRB_WITHOUT_IO_PREAD_PWRITE)
19
+ # undef MRB_WITH_IO_PREAD_PWRITE
20
+ #elif !defined(MRB_WITH_IO_PREAD_PWRITE)
21
+ # if defined(__unix__) || defined(__MACH__)
22
+ # define MRB_WITH_IO_PREAD_PWRITE
23
+ # endif
24
+ #endif
25
+
12
26
  struct mrb_io {
13
27
  int fd; /* file descriptor, or -1 */
14
28
  int fd2; /* file descriptor to write if it's different from fd, or -1 */
@@ -19,13 +33,31 @@ struct mrb_io {
19
33
  is_socket:1;
20
34
  };
21
35
 
22
- #define FMODE_READABLE 0x00000001
23
- #define FMODE_WRITABLE 0x00000002
24
- #define FMODE_READWRITE (FMODE_READABLE|FMODE_WRITABLE)
25
- #define FMODE_BINMODE 0x00000004
26
- #define FMODE_APPEND 0x00000040
27
- #define FMODE_CREATE 0x00000080
28
- #define FMODE_TRUNC 0x00000800
36
+ #define MRB_O_RDONLY 0x0000
37
+ #define MRB_O_WRONLY 0x0001
38
+ #define MRB_O_RDWR 0x0002
39
+ #define MRB_O_ACCMODE (MRB_O_RDONLY | MRB_O_WRONLY | MRB_O_RDWR)
40
+ #define MRB_O_NONBLOCK 0x0004
41
+ #define MRB_O_APPEND 0x0008
42
+ #define MRB_O_SYNC 0x0010
43
+ #define MRB_O_NOFOLLOW 0x0020
44
+ #define MRB_O_CREAT 0x0040
45
+ #define MRB_O_TRUNC 0x0080
46
+ #define MRB_O_EXCL 0x0100
47
+ #define MRB_O_NOCTTY 0x0200
48
+ #define MRB_O_DIRECT 0x0400
49
+ #define MRB_O_BINARY 0x0800
50
+ #define MRB_O_SHARE_DELETE 0x1000
51
+ #define MRB_O_TMPFILE 0x2000
52
+ #define MRB_O_NOATIME 0x4000
53
+ #define MRB_O_DSYNC 0x00008000
54
+ #define MRB_O_RSYNC 0x00010000
55
+
56
+ #define MRB_O_RDONLY_P(f) ((mrb_bool)(((f) & MRB_O_ACCMODE) == MRB_O_RDONLY))
57
+ #define MRB_O_WRONLY_P(f) ((mrb_bool)(((f) & MRB_O_ACCMODE) == MRB_O_WRONLY))
58
+ #define MRB_O_RDWR_P(f) ((mrb_bool)(((f) & MRB_O_ACCMODE) == MRB_O_RDWR))
59
+ #define MRB_O_READABLE_P(f) ((mrb_bool)((((f) & MRB_O_ACCMODE) | 2) == 2))
60
+ #define MRB_O_WRITABLE_P(f) ((mrb_bool)(((((f) & MRB_O_ACCMODE) + 1) & 2) == 2))
29
61
 
30
62
  #define E_IO_ERROR (mrb_class_get(mrb, "IOError"))
31
63
  #define E_EOF_ERROR (mrb_class_get(mrb, "EOFError"))