webruby 0.2.7 → 0.9.1

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 (1537) hide show
  1. checksums.yaml +4 -4
  2. data/lib/webruby/environment.rb +24 -8
  3. data/lib/webruby/rake/files.rake +6 -22
  4. data/lib/webruby/rake/general.rake +1 -1
  5. data/lib/webruby/rake/mruby.rake +1 -0
  6. data/lib/webruby/utility.rb +14 -0
  7. data/modules/mruby/AUTHORS +14 -0
  8. data/modules/mruby/CONTRIBUTING.md +7 -4
  9. data/modules/mruby/INSTALL +28 -11
  10. data/modules/mruby/MITL +13 -13
  11. data/modules/mruby/Makefile +4 -5
  12. data/modules/mruby/README.md +54 -49
  13. data/modules/mruby/Rakefile +36 -6
  14. data/modules/mruby/benchmark/ao-render.rb +1 -2
  15. data/modules/mruby/benchmark/bm_app_lc_fizzbuzz.rb +52 -0
  16. data/modules/mruby/benchmark/fib39.rb +0 -0
  17. data/modules/mruby/bintest/mrbc.rb +12 -0
  18. data/modules/mruby/build_config.rb +32 -2
  19. data/modules/mruby/doc/api/README.md +30 -0
  20. data/modules/mruby/doc/api/mruby.h.md +69 -0
  21. data/modules/mruby/doc/compile/README.md +208 -99
  22. data/modules/mruby/doc/debugger/README.md +370 -0
  23. data/modules/mruby/doc/language/Core.md +1590 -0
  24. data/modules/mruby/doc/language/README.md +9 -0
  25. data/modules/mruby/doc/language/generator.rb +15 -0
  26. data/modules/mruby/doc/language/mrbdoc/lib/mrbdoc_analyze.rb +231 -0
  27. data/modules/mruby/doc/language/mrbdoc/lib/mrbdoc_docu.rb +118 -0
  28. data/modules/mruby/doc/language/mrbdoc/mrbdoc.rb +38 -0
  29. data/modules/mruby/doc/mrbconf/README.md +160 -0
  30. data/modules/mruby/doc/mrbgems/README.md +136 -66
  31. data/modules/mruby/examples/mrbgems/c_and_ruby_extension_example/mrbgem.rake +1 -1
  32. data/modules/mruby/examples/mrbgems/c_and_ruby_extension_example/src/example.c +1 -1
  33. data/modules/mruby/examples/mrbgems/c_extension_example/mrbgem.rake +1 -1
  34. data/modules/mruby/examples/mrbgems/c_extension_example/src/example.c +1 -1
  35. data/modules/mruby/examples/mrbgems/ruby_extension_example/mrbgem.rake +1 -1
  36. data/modules/mruby/examples/targets/{ArduinoDue.rb → build_config_ArduinoDue.rb} +32 -6
  37. data/modules/mruby/examples/targets/build_config_IntelGalileo.rb +106 -0
  38. data/modules/mruby/examples/targets/{chipKitMax32.rb → build_config_chipKITMax32.rb} +26 -7
  39. data/modules/mruby/include/mrbconf.h +25 -1
  40. data/modules/mruby/include/mruby/array.h +32 -22
  41. data/modules/mruby/include/mruby/boxing_nan.h +94 -0
  42. data/modules/mruby/include/mruby/boxing_no.h +49 -0
  43. data/modules/mruby/include/mruby/boxing_word.h +119 -0
  44. data/modules/mruby/include/mruby/class.h +15 -13
  45. data/modules/mruby/include/mruby/compile.h +43 -36
  46. data/modules/mruby/include/mruby/data.h +13 -5
  47. data/modules/mruby/include/mruby/debug.h +9 -9
  48. data/modules/mruby/include/mruby/dump.h +32 -23
  49. data/modules/mruby/include/mruby/error.h +36 -0
  50. data/modules/mruby/include/mruby/gc.h +11 -6
  51. data/modules/mruby/include/mruby/hash.h +12 -12
  52. data/modules/mruby/include/mruby/irep.h +9 -3
  53. data/modules/mruby/include/mruby/khash.h +58 -41
  54. data/modules/mruby/include/mruby/numeric.h +38 -4
  55. data/modules/mruby/include/mruby/object.h +55 -0
  56. data/modules/mruby/include/mruby/opcode.h +160 -0
  57. data/modules/mruby/include/mruby/proc.h +19 -5
  58. data/modules/mruby/include/mruby/range.h +4 -3
  59. data/modules/mruby/include/mruby/re.h +20 -0
  60. data/modules/mruby/include/mruby/string.h +86 -47
  61. data/modules/mruby/include/mruby/value.h +100 -374
  62. data/modules/mruby/include/mruby/variable.h +34 -32
  63. data/modules/mruby/include/mruby/version.h +40 -0
  64. data/modules/mruby/include/mruby.h +211 -139
  65. data/modules/mruby/minirake +16 -9
  66. data/modules/mruby/mrbgems/default.gembox +12 -0
  67. data/modules/mruby/mrbgems/full-core.gembox +3 -3
  68. data/modules/mruby/mrbgems/mruby-array-ext/mrbgem.rake +1 -0
  69. data/modules/mruby/mrbgems/mruby-array-ext/mrblib/array.rb +488 -8
  70. data/modules/mruby/mrbgems/mruby-array-ext/src/array.c +57 -31
  71. data/modules/mruby/mrbgems/mruby-array-ext/test/array.rb +231 -45
  72. data/modules/mruby/mrbgems/mruby-bin-debugger/bintest/mrdb.rb +286 -0
  73. data/modules/mruby/mrbgems/mruby-bin-debugger/bintest/print.rb +701 -0
  74. data/modules/mruby/mrbgems/mruby-bin-debugger/mrbgem.rake +9 -0
  75. data/modules/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apibreak.c +516 -0
  76. data/modules/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apibreak.h +26 -0
  77. data/modules/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apilist.c +235 -0
  78. data/modules/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apilist.h +14 -0
  79. data/modules/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c +78 -0
  80. data/modules/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.h +13 -0
  81. data/modules/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdbreak.c +428 -0
  82. data/modules/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdmisc.c +501 -0
  83. data/modules/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdprint.c +58 -0
  84. data/modules/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdrun.c +54 -0
  85. data/modules/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c +746 -0
  86. data/modules/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.h +163 -0
  87. data/modules/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdbconf.h +16 -0
  88. data/modules/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdberror.h +20 -0
  89. data/modules/mruby/mrbgems/mruby-bin-mirb/bintest/mirb.rb +12 -0
  90. data/modules/mruby/mrbgems/mruby-bin-mirb/mrbgem.rake +14 -1
  91. data/modules/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +154 -72
  92. data/modules/mruby/mrbgems/mruby-bin-mruby/bintest/mruby.rb +46 -0
  93. data/modules/mruby/mrbgems/mruby-bin-mruby/mrbgem.rake +1 -0
  94. data/modules/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +37 -28
  95. data/modules/mruby/mrbgems/mruby-bin-mruby-config/mrbgem.rake +30 -0
  96. data/modules/mruby/mrbgems/mruby-bin-mruby-config/mruby-config +16 -0
  97. data/modules/mruby/mrbgems/mruby-bin-mruby-config/mruby-config.bat +30 -0
  98. data/modules/mruby/mrbgems/mruby-bin-strip/bintest/mruby-strip.rb +73 -0
  99. data/modules/mruby/mrbgems/mruby-bin-strip/mrbgem.rake +6 -0
  100. data/modules/mruby/mrbgems/mruby-bin-strip/tools/mruby-strip/mruby-strip.c +155 -0
  101. data/modules/mruby/mrbgems/mruby-enum-ext/mrbgem.rake +1 -0
  102. data/modules/mruby/mrbgems/mruby-enum-ext/mrblib/enum.rb +555 -21
  103. data/modules/mruby/mrbgems/mruby-enum-ext/test/enum.rb +119 -0
  104. data/modules/mruby/mrbgems/mruby-enum-lazy/mrbgem.rake +7 -0
  105. data/modules/mruby/mrbgems/mruby-enum-lazy/mrblib/lazy.rb +150 -0
  106. data/modules/mruby/mrbgems/mruby-enum-lazy/test/lazy.rb +47 -0
  107. data/modules/mruby/mrbgems/mruby-enumerator/mrbgem.rake +7 -0
  108. data/modules/mruby/mrbgems/mruby-enumerator/mrblib/enumerator.rb +636 -0
  109. data/modules/mruby/mrbgems/mruby-enumerator/test/enumerator.rb +537 -0
  110. data/modules/mruby/mrbgems/mruby-eval/mrbgem.rake +1 -0
  111. data/modules/mruby/mrbgems/mruby-eval/src/eval.c +243 -4
  112. data/modules/mruby/mrbgems/mruby-eval/test/eval.rb +80 -0
  113. data/modules/mruby/mrbgems/mruby-exit/mrbgem.rake +1 -0
  114. data/modules/mruby/mrbgems/mruby-exit/src/mruby-exit.c +1 -1
  115. data/modules/mruby/mrbgems/mruby-fiber/mrbgem.rake +1 -0
  116. data/modules/mruby/mrbgems/mruby-fiber/src/fiber.c +157 -51
  117. data/modules/mruby/mrbgems/mruby-fiber/test/fiber.rb +179 -35
  118. data/modules/mruby/mrbgems/mruby-hash-ext/mrbgem.rake +3 -0
  119. data/modules/mruby/mrbgems/mruby-hash-ext/mrblib/hash.rb +241 -1
  120. data/modules/mruby/mrbgems/mruby-hash-ext/src/hash-ext.c +11 -19
  121. data/modules/mruby/mrbgems/mruby-hash-ext/test/hash.rb +138 -1
  122. data/modules/mruby/mrbgems/mruby-kernel-ext/mrbgem.rake +5 -0
  123. data/modules/mruby/mrbgems/mruby-kernel-ext/src/kernel.c +183 -0
  124. data/modules/mruby/mrbgems/mruby-kernel-ext/test/kernel.rb +53 -0
  125. data/modules/mruby/mrbgems/mruby-math/mrbgem.rake +1 -0
  126. data/modules/mruby/mrbgems/mruby-math/src/math.c +107 -14
  127. data/modules/mruby/mrbgems/mruby-math/test/math.rb +16 -0
  128. data/modules/mruby/mrbgems/mruby-numeric-ext/mrbgem.rake +1 -0
  129. data/modules/mruby/mrbgems/mruby-numeric-ext/mrblib/numeric_ext.rb +5 -0
  130. data/modules/mruby/mrbgems/mruby-numeric-ext/test/numeric.rb +9 -1
  131. data/modules/mruby/mrbgems/mruby-object-ext/mrbgem.rake +1 -0
  132. data/modules/mruby/mrbgems/mruby-object-ext/mrblib/object.rb +19 -0
  133. data/modules/mruby/mrbgems/mruby-object-ext/src/object.c +5 -8
  134. data/modules/mruby/mrbgems/mruby-object-ext/test/object.rb +16 -0
  135. data/modules/mruby/mrbgems/mruby-objectspace/mrbgem.rake +1 -0
  136. data/modules/mruby/mrbgems/mruby-objectspace/src/mruby_objectspace.c +121 -53
  137. data/modules/mruby/mrbgems/mruby-objectspace/test/objectspace.rb +27 -4
  138. data/modules/mruby/mrbgems/mruby-print/mrbgem.rake +1 -0
  139. data/modules/mruby/mrbgems/mruby-print/src/print.c +3 -5
  140. data/modules/mruby/mrbgems/mruby-proc-ext/mrbgem.rake +1 -0
  141. data/modules/mruby/mrbgems/mruby-proc-ext/src/proc.c +89 -19
  142. data/modules/mruby/mrbgems/mruby-proc-ext/test/proc.c +56 -0
  143. data/modules/mruby/mrbgems/mruby-proc-ext/test/proc.rb +47 -0
  144. data/modules/mruby/mrbgems/mruby-random/mrbgem.rake +1 -0
  145. data/modules/mruby/mrbgems/mruby-random/src/mt19937ar.c +30 -25
  146. data/modules/mruby/mrbgems/mruby-random/src/mt19937ar.h +6 -3
  147. data/modules/mruby/mrbgems/mruby-random/src/random.c +157 -137
  148. data/modules/mruby/mrbgems/mruby-random/src/random.h +3 -3
  149. data/modules/mruby/mrbgems/mruby-random/test/random.rb +9 -9
  150. data/modules/mruby/mrbgems/mruby-range-ext/mrbgem.rake +1 -0
  151. data/modules/mruby/mrbgems/mruby-range-ext/src/range.c +57 -3
  152. data/modules/mruby/mrbgems/mruby-range-ext/test/range.rb +9 -0
  153. data/modules/mruby/mrbgems/mruby-sprintf/mrbgem.rake +1 -0
  154. data/modules/mruby/mrbgems/mruby-sprintf/mrblib/string.rb +9 -0
  155. data/modules/mruby/mrbgems/mruby-sprintf/src/sprintf.c +29 -23
  156. data/modules/mruby/mrbgems/mruby-sprintf/test/sprintf.rb +7 -2
  157. data/modules/mruby/mrbgems/mruby-string-ext/mrbgem.rake +1 -0
  158. data/modules/mruby/mrbgems/mruby-string-ext/mrblib/string.rb +250 -11
  159. data/modules/mruby/mrbgems/mruby-string-ext/src/string.c +220 -5
  160. data/modules/mruby/mrbgems/mruby-string-ext/test/string.rb +326 -4
  161. data/modules/mruby/mrbgems/mruby-string-utf8/mrbgem.rake +2 -0
  162. data/modules/mruby/mrbgems/mruby-string-utf8/src/string.c +486 -52
  163. data/modules/mruby/mrbgems/mruby-string-utf8/test/string.rb +97 -14
  164. data/modules/mruby/mrbgems/mruby-struct/mrbgem.rake +1 -0
  165. data/modules/mruby/mrbgems/mruby-struct/mrblib/struct.rb +31 -0
  166. data/modules/mruby/mrbgems/mruby-struct/src/struct.c +178 -196
  167. data/modules/mruby/mrbgems/mruby-struct/test/struct.rb +115 -61
  168. data/modules/mruby/mrbgems/mruby-symbol-ext/mrbgem.rake +1 -0
  169. data/modules/mruby/mrbgems/mruby-symbol-ext/mrblib/symbol.rb +22 -17
  170. data/modules/mruby/mrbgems/mruby-symbol-ext/src/symbol.c +20 -11
  171. data/modules/mruby/mrbgems/mruby-symbol-ext/test/symbol.rb +14 -0
  172. data/modules/mruby/mrbgems/mruby-time/mrbgem.rake +1 -0
  173. data/modules/mruby/mrbgems/mruby-time/mrblib/time.rb +9 -0
  174. data/modules/mruby/mrbgems/mruby-time/src/time.c +98 -37
  175. data/modules/mruby/mrbgems/mruby-time/test/time.rb +152 -148
  176. data/modules/mruby/mrbgems/mruby-toplevel-ext/mrbgem.rake +1 -0
  177. data/modules/mruby/mrbgems/mruby-toplevel-ext/test/toplevel.rb +1 -1
  178. data/modules/mruby/mrblib/array.rb +110 -4
  179. data/modules/mruby/mrblib/class.rb +1 -22
  180. data/modules/mruby/mrblib/compar.rb +10 -30
  181. data/modules/mruby/mrblib/enum.rb +64 -52
  182. data/modules/mruby/mrblib/error.rb +9 -4
  183. data/modules/mruby/mrblib/hash.rb +164 -23
  184. data/modules/mruby/mrblib/kernel.rb +26 -22
  185. data/modules/mruby/mrblib/mrblib.rake +4 -4
  186. data/modules/mruby/mrblib/numeric.rb +22 -9
  187. data/modules/mruby/mrblib/range.rb +24 -2
  188. data/modules/mruby/mrblib/string.rb +15 -3
  189. data/modules/mruby/src/array.c +279 -339
  190. data/modules/mruby/src/backtrace.c +68 -16
  191. data/modules/mruby/src/class.c +539 -379
  192. data/modules/mruby/src/codegen.c +424 -207
  193. data/modules/mruby/src/compar.c +1 -1
  194. data/modules/mruby/src/crc.c +7 -6
  195. data/modules/mruby/src/debug.c +37 -36
  196. data/modules/mruby/src/dump.c +463 -213
  197. data/modules/mruby/src/enum.c +1 -1
  198. data/modules/mruby/src/error.c +91 -92
  199. data/modules/mruby/src/error.h +3 -19
  200. data/modules/mruby/src/etc.c +85 -82
  201. data/modules/mruby/src/gc.c +134 -108
  202. data/modules/mruby/src/hash.c +161 -565
  203. data/modules/mruby/src/init.c +2 -13
  204. data/modules/mruby/src/kernel.c +217 -251
  205. data/modules/mruby/src/load.c +280 -283
  206. data/modules/mruby/src/mrb_throw.h +41 -0
  207. data/modules/mruby/src/mruby_core.rake +57 -7
  208. data/modules/mruby/src/node.h +104 -104
  209. data/modules/mruby/src/numeric.c +221 -208
  210. data/modules/mruby/src/object.c +41 -42
  211. data/modules/mruby/src/opcode.h +2 -160
  212. data/modules/mruby/src/parse.y +3430 -3223
  213. data/modules/mruby/src/pool.c +13 -9
  214. data/modules/mruby/src/print.c +20 -17
  215. data/modules/mruby/src/proc.c +77 -21
  216. data/modules/mruby/src/range.c +55 -45
  217. data/modules/mruby/src/state.c +95 -31
  218. data/modules/mruby/src/string.c +462 -468
  219. data/modules/mruby/src/symbol.c +95 -85
  220. data/modules/mruby/src/variable.c +104 -74
  221. data/modules/mruby/src/version.c +13 -0
  222. data/modules/mruby/src/vm.c +528 -296
  223. data/modules/mruby/tasks/libmruby.rake +9 -5
  224. data/modules/mruby/tasks/mrbgem_spec.rake +130 -26
  225. data/modules/mruby/tasks/mrbgems.rake +21 -11
  226. data/modules/mruby/tasks/mrbgems_test.rake +46 -40
  227. data/modules/mruby/tasks/mruby_build.rake +54 -12
  228. data/modules/mruby/tasks/mruby_build_commands.rake +34 -5
  229. data/modules/mruby/tasks/mruby_build_gem.rake +25 -3
  230. data/modules/mruby/tasks/ruby_ext.rake +11 -2
  231. data/modules/mruby/tasks/toolchains/clang.rake +2 -1
  232. data/modules/mruby/tasks/toolchains/gcc.rake +26 -3
  233. data/modules/mruby/tasks/toolchains/visualcpp.rake +17 -8
  234. data/modules/mruby/test/assert.rb +30 -8
  235. data/modules/mruby/test/bintest.rb +10 -0
  236. data/modules/mruby/test/driver.c +74 -24
  237. data/modules/mruby/test/init_mrbtest.c +21 -2
  238. data/modules/mruby/test/mrbtest.rake +27 -5
  239. data/modules/mruby/test/t/argumenterror.rb +0 -5
  240. data/modules/mruby/test/t/array.rb +23 -7
  241. data/modules/mruby/test/t/bs_block.rb +32 -0
  242. data/modules/mruby/test/t/class.rb +29 -5
  243. data/modules/mruby/test/t/comparable.rb +20 -12
  244. data/modules/mruby/test/t/enumerable.rb +33 -7
  245. data/modules/mruby/test/t/exception.rb +63 -38
  246. data/modules/mruby/test/t/false.rb +2 -4
  247. data/modules/mruby/test/t/float.rb +39 -4
  248. data/modules/mruby/test/t/hash.rb +40 -6
  249. data/modules/mruby/test/t/indexerror.rb +0 -4
  250. data/modules/mruby/test/t/integer.rb +41 -5
  251. data/modules/mruby/test/t/kernel.rb +90 -3
  252. data/modules/mruby/test/t/localjumperror.rb +4 -4
  253. data/modules/mruby/test/t/methods.rb +1 -1
  254. data/modules/mruby/test/t/module.rb +43 -13
  255. data/modules/mruby/test/t/nameerror.rb +0 -4
  256. data/modules/mruby/test/t/nil.rb +5 -0
  257. data/modules/mruby/test/t/nomethoderror.rb +11 -2
  258. data/modules/mruby/test/t/numeric.rb +18 -4
  259. data/modules/mruby/test/t/proc.rb +59 -6
  260. data/modules/mruby/test/t/range.rb +15 -5
  261. data/modules/mruby/test/t/rangeerror.rb +0 -4
  262. data/modules/mruby/test/t/standarderror.rb +0 -4
  263. data/modules/mruby/test/t/string.rb +56 -12
  264. data/modules/mruby/test/t/superclass.rb +46 -0
  265. data/modules/mruby/test/t/symbol.rb +0 -4
  266. data/modules/mruby/test/t/syntax.rb +134 -1
  267. data/modules/mruby/test/t/true.rb +2 -4
  268. data/modules/mruby/test/t/typeerror.rb +0 -5
  269. data/modules/mruby/test/t/unicode.rb +35 -0
  270. data/modules/mruby/tools/mrbc/mrbc.c +9 -12
  271. data/modules/mruby/travis_config.rb +22 -2
  272. metadata +98 -1299
  273. data/modules/emscripten/AUTHORS +0 -117
  274. data/modules/emscripten/CONTRIBUTING.markdown +0 -5
  275. data/modules/emscripten/ChangeLog +0 -468
  276. data/modules/emscripten/LICENSE +0 -94
  277. data/modules/emscripten/README.markdown +0 -14
  278. data/modules/emscripten/cmake/Modules/FindOpenAL.cmake +0 -26
  279. data/modules/emscripten/cmake/Platform/Emscripten.cmake +0 -228
  280. data/modules/emscripten/em++ +0 -12
  281. data/modules/emscripten/em++.bat +0 -2
  282. data/modules/emscripten/em-config +0 -24
  283. data/modules/emscripten/em-config.bat +0 -2
  284. data/modules/emscripten/emar +0 -24
  285. data/modules/emscripten/emar.bat +0 -2
  286. data/modules/emscripten/emcc +0 -2069
  287. data/modules/emscripten/emcc.bat +0 -2
  288. data/modules/emscripten/emcc.py +0 -5
  289. data/modules/emscripten/emconfigure +0 -27
  290. data/modules/emscripten/emconfigure.bat +0 -2
  291. data/modules/emscripten/emlink.py +0 -33
  292. data/modules/emscripten/emmake +0 -29
  293. data/modules/emscripten/emmake.bat +0 -2
  294. data/modules/emscripten/emranlib +0 -9
  295. data/modules/emscripten/emranlib.bat +0 -2
  296. data/modules/emscripten/emrun +0 -1087
  297. data/modules/emscripten/emrun.bat +0 -2
  298. data/modules/emscripten/emscons +0 -20
  299. data/modules/emscripten/emscripten.py +0 -1347
  300. data/modules/emscripten/package.json +0 -7
  301. data/modules/emscripten/patches/README +0 -4
  302. data/modules/emscripten/patches/series +0 -2
  303. data/modules/emscripten/scons-tools/closure.py +0 -28
  304. data/modules/emscripten/scons-tools/emscripten.py +0 -364
  305. data/modules/emscripten/scons-tools/llvm.py +0 -34
  306. data/modules/emscripten/src/analyzer.js +0 -1781
  307. data/modules/emscripten/src/closure-externs.js +0 -110
  308. data/modules/emscripten/src/compiler.html +0 -48
  309. data/modules/emscripten/src/compiler.js +0 -331
  310. data/modules/emscripten/src/compiler_phase.html +0 -33
  311. data/modules/emscripten/src/corruptionCheck.js +0 -98
  312. data/modules/emscripten/src/determinstic.js +0 -20
  313. data/modules/emscripten/src/embind/embind.js +0 -1677
  314. data/modules/emscripten/src/embind/emval.js +0 -284
  315. data/modules/emscripten/src/emrun_postjs.js +0 -20
  316. data/modules/emscripten/src/emrun_prejs.js +0 -5
  317. data/modules/emscripten/src/emscripten-source-map.min.js +0 -31
  318. data/modules/emscripten/src/experimental/allow_loopvars_from_memsetcpy_inasm.diff +0 -97
  319. data/modules/emscripten/src/experimental/batching.diff +0 -44
  320. data/modules/emscripten/src/experimental/functypeopt.diff +0 -113
  321. data/modules/emscripten/src/experimental/multiple_heaps.diff +0 -175
  322. data/modules/emscripten/src/experimental/noncallgraphprofiling.diff +0 -197
  323. data/modules/emscripten/src/experimental/optimize_memcpy_for_ta1.diff +0 -124
  324. data/modules/emscripten/src/experimental/remove__label__s.diff +0 -140
  325. data/modules/emscripten/src/experimental/renderer_cache_hash.diff +0 -99
  326. data/modules/emscripten/src/experimental/sdl_key_forwarding.diff +0 -57
  327. data/modules/emscripten/src/experimental/simplifyGeneratedFunctionsDetection.diff +0 -336
  328. data/modules/emscripten/src/experimental/stringCache.diff +0 -147
  329. data/modules/emscripten/src/fastLong.js +0 -299
  330. data/modules/emscripten/src/gl-matrix.js +0 -1952
  331. data/modules/emscripten/src/headless.js +0 -295
  332. data/modules/emscripten/src/headlessCanvas.js +0 -618
  333. data/modules/emscripten/src/hello_world.js +0 -92
  334. data/modules/emscripten/src/intertyper.js +0 -1228
  335. data/modules/emscripten/src/jsifier.js +0 -1969
  336. data/modules/emscripten/src/library.js +0 -9196
  337. data/modules/emscripten/src/library_browser.js +0 -988
  338. data/modules/emscripten/src/library_egl.js +0 -564
  339. data/modules/emscripten/src/library_fs.js +0 -1619
  340. data/modules/emscripten/src/library_gc.js +0 -236
  341. data/modules/emscripten/src/library_gl.js +0 -5194
  342. data/modules/emscripten/src/library_glfw.js +0 -585
  343. data/modules/emscripten/src/library_glut.js +0 -504
  344. data/modules/emscripten/src/library_idbfs.js +0 -216
  345. data/modules/emscripten/src/library_jansson.js +0 -320
  346. data/modules/emscripten/src/library_memfs.js +0 -303
  347. data/modules/emscripten/src/library_nodefs.js +0 -286
  348. data/modules/emscripten/src/library_openal.js +0 -915
  349. data/modules/emscripten/src/library_path.js +0 -133
  350. data/modules/emscripten/src/library_sdl.js +0 -2728
  351. data/modules/emscripten/src/library_sockfs.js +0 -578
  352. data/modules/emscripten/src/library_strtok_r.c +0 -97
  353. data/modules/emscripten/src/library_tty.js +0 -146
  354. data/modules/emscripten/src/library_uuid.js +0 -140
  355. data/modules/emscripten/src/library_xlib.js +0 -23
  356. data/modules/emscripten/src/long.js +0 -1609
  357. data/modules/emscripten/src/modules.js +0 -543
  358. data/modules/emscripten/src/parseTools.js +0 -2723
  359. data/modules/emscripten/src/postamble.js +0 -239
  360. data/modules/emscripten/src/postamble_sharedlib.js +0 -16
  361. data/modules/emscripten/src/preamble.js +0 -1233
  362. data/modules/emscripten/src/preamble_sharedlib.js +0 -25
  363. data/modules/emscripten/src/proxyClient.js +0 -82
  364. data/modules/emscripten/src/proxyWorker.js +0 -143
  365. data/modules/emscripten/src/relooper/README.markdown +0 -14
  366. data/modules/emscripten/src/relooper/Relooper.cpp +0 -1301
  367. data/modules/emscripten/src/relooper/Relooper.h +0 -257
  368. data/modules/emscripten/src/relooper/doit.sh +0 -70
  369. data/modules/emscripten/src/relooper/emscripten/glue.js +0 -67
  370. data/modules/emscripten/src/relooper/emscripten/test.js +0 -44
  371. data/modules/emscripten/src/relooper/fuzzer.py +0 -131
  372. data/modules/emscripten/src/relooper/ministring.h +0 -35
  373. data/modules/emscripten/src/relooper/paper.pdf +0 -0
  374. data/modules/emscripten/src/relooper/test.cpp +0 -290
  375. data/modules/emscripten/src/relooper/test.txt +0 -317
  376. data/modules/emscripten/src/relooper/test2.c +0 -44
  377. data/modules/emscripten/src/relooper/test2.txt +0 -26
  378. data/modules/emscripten/src/relooper/test3.c +0 -42
  379. data/modules/emscripten/src/relooper/test3.txt +0 -56
  380. data/modules/emscripten/src/relooper/test4.cpp +0 -40
  381. data/modules/emscripten/src/relooper/test4.txt +0 -44
  382. data/modules/emscripten/src/relooper/test5.cpp +0 -40
  383. data/modules/emscripten/src/relooper/test5.txt +0 -56
  384. data/modules/emscripten/src/relooper/test6.cpp +0 -31
  385. data/modules/emscripten/src/relooper/test6.txt +0 -26
  386. data/modules/emscripten/src/relooper/test_dead.cpp +0 -28
  387. data/modules/emscripten/src/relooper/test_dead.txt +0 -9
  388. data/modules/emscripten/src/relooper/test_debug.cpp +0 -30
  389. data/modules/emscripten/src/relooper/test_debug.txt +0 -142
  390. data/modules/emscripten/src/relooper/test_fuzz1.cpp +0 -52
  391. data/modules/emscripten/src/relooper/test_fuzz1.txt +0 -72
  392. data/modules/emscripten/src/relooper/test_fuzz2.cpp +0 -34
  393. data/modules/emscripten/src/relooper/test_fuzz2.txt +0 -30
  394. data/modules/emscripten/src/relooper/test_fuzz3.cpp +0 -36
  395. data/modules/emscripten/src/relooper/test_fuzz3.txt +0 -25
  396. data/modules/emscripten/src/relooper/test_fuzz4.cpp +0 -38
  397. data/modules/emscripten/src/relooper/test_fuzz4.txt +0 -41
  398. data/modules/emscripten/src/relooper/test_fuzz5.cpp +0 -57
  399. data/modules/emscripten/src/relooper/test_fuzz5.txt +0 -86
  400. data/modules/emscripten/src/relooper/test_fuzz6.cpp +0 -322
  401. data/modules/emscripten/src/relooper/test_fuzz6.txt +0 -291
  402. data/modules/emscripten/src/relooper/test_inf.cpp +0 -813
  403. data/modules/emscripten/src/relooper/test_inf.txt +0 -1131
  404. data/modules/emscripten/src/relooper/testit.sh +0 -62
  405. data/modules/emscripten/src/relooper/updateit.sh +0 -17
  406. data/modules/emscripten/src/runtime.js +0 -604
  407. data/modules/emscripten/src/settings.js +0 -476
  408. data/modules/emscripten/src/shell.html +0 -95
  409. data/modules/emscripten/src/shell.js +0 -173
  410. data/modules/emscripten/src/shell_sharedlib.js +0 -29
  411. data/modules/emscripten/src/simd.js +0 -1128
  412. data/modules/emscripten/src/socket.io.js +0 -3870
  413. data/modules/emscripten/src/struct_info.json +0 -1077
  414. data/modules/emscripten/src/utility.js +0 -411
  415. data/modules/emscripten/src/wrtcp.js +0 -821
  416. data/modules/emscripten/system/bin/sdl-config +0 -13
  417. data/modules/emscripten/system/include/AL/al.h +0 -172
  418. data/modules/emscripten/system/include/AL/alc.h +0 -84
  419. data/modules/emscripten/system/include/EGL/egl.h +0 -329
  420. data/modules/emscripten/system/include/EGL/eglext.h +0 -398
  421. data/modules/emscripten/system/include/EGL/eglplatform.h +0 -141
  422. data/modules/emscripten/system/include/GL/freeglut_std.h +0 -628
  423. data/modules/emscripten/system/include/GL/gl.h +0 -2241
  424. data/modules/emscripten/system/include/GL/glew.h +0 -6
  425. data/modules/emscripten/system/include/GL/glext.h +0 -11127
  426. data/modules/emscripten/system/include/GL/glfw.h +0 -518
  427. data/modules/emscripten/system/include/GL/glu.h +0 -353
  428. data/modules/emscripten/system/include/GL/glut.h +0 -21
  429. data/modules/emscripten/system/include/GLES/gl.h +0 -770
  430. data/modules/emscripten/system/include/GLES/glext.h +0 -1278
  431. data/modules/emscripten/system/include/GLES/glplatform.h +0 -30
  432. data/modules/emscripten/system/include/GLES2/gl2.h +0 -621
  433. data/modules/emscripten/system/include/GLES2/gl2ext.h +0 -803
  434. data/modules/emscripten/system/include/GLES2/gl2platform.h +0 -30
  435. data/modules/emscripten/system/include/KHR/khrplatform.h +0 -277
  436. data/modules/emscripten/system/include/SDL/COPYING +0 -19
  437. data/modules/emscripten/system/include/SDL/SDL.h +0 -162
  438. data/modules/emscripten/system/include/SDL/SDL_assert.h +0 -241
  439. data/modules/emscripten/system/include/SDL/SDL_atomic.h +0 -318
  440. data/modules/emscripten/system/include/SDL/SDL_audio.h +0 -509
  441. data/modules/emscripten/system/include/SDL/SDL_blendmode.h +0 -60
  442. data/modules/emscripten/system/include/SDL/SDL_clipboard.h +0 -75
  443. data/modules/emscripten/system/include/SDL/SDL_compat.h +0 -365
  444. data/modules/emscripten/system/include/SDL/SDL_config.h +0 -48
  445. data/modules/emscripten/system/include/SDL/SDL_config.h.in +0 -297
  446. data/modules/emscripten/system/include/SDL/SDL_config_android.h +0 -133
  447. data/modules/emscripten/system/include/SDL/SDL_config_iphoneos.h +0 -148
  448. data/modules/emscripten/system/include/SDL/SDL_config_macosx.h +0 -172
  449. data/modules/emscripten/system/include/SDL/SDL_config_minimal.h +0 -74
  450. data/modules/emscripten/system/include/SDL/SDL_config_nintendods.h +0 -129
  451. data/modules/emscripten/system/include/SDL/SDL_config_pandora.h +0 -125
  452. data/modules/emscripten/system/include/SDL/SDL_config_windows.h +0 -207
  453. data/modules/emscripten/system/include/SDL/SDL_config_wiz.h +0 -119
  454. data/modules/emscripten/system/include/SDL/SDL_copying.h +0 -20
  455. data/modules/emscripten/system/include/SDL/SDL_cpuinfo.h +0 -150
  456. data/modules/emscripten/system/include/SDL/SDL_endian.h +0 -248
  457. data/modules/emscripten/system/include/SDL/SDL_error.h +0 -77
  458. data/modules/emscripten/system/include/SDL/SDL_events.h +0 -640
  459. data/modules/emscripten/system/include/SDL/SDL_gesture.h +0 -91
  460. data/modules/emscripten/system/include/SDL/SDL_gfxPrimitives.h +0 -246
  461. data/modules/emscripten/system/include/SDL/SDL_haptic.h +0 -1200
  462. data/modules/emscripten/system/include/SDL/SDL_hints.h +0 -206
  463. data/modules/emscripten/system/include/SDL/SDL_image.h +0 -138
  464. data/modules/emscripten/system/include/SDL/SDL_input.h +0 -87
  465. data/modules/emscripten/system/include/SDL/SDL_joystick.h +0 -208
  466. data/modules/emscripten/system/include/SDL/SDL_keyboard.h +0 -169
  467. data/modules/emscripten/system/include/SDL/SDL_keycode.h +0 -344
  468. data/modules/emscripten/system/include/SDL/SDL_loadso.h +0 -85
  469. data/modules/emscripten/system/include/SDL/SDL_log.h +0 -211
  470. data/modules/emscripten/system/include/SDL/SDL_main.h +0 -98
  471. data/modules/emscripten/system/include/SDL/SDL_mixer.h +0 -634
  472. data/modules/emscripten/system/include/SDL/SDL_mouse.h +0 -213
  473. data/modules/emscripten/system/include/SDL/SDL_mutex.h +0 -248
  474. data/modules/emscripten/system/include/SDL/SDL_name.h +0 -11
  475. data/modules/emscripten/system/include/SDL/SDL_opengl.h +0 -11116
  476. data/modules/emscripten/system/include/SDL/SDL_opengles.h +0 -38
  477. data/modules/emscripten/system/include/SDL/SDL_opengles2.h +0 -38
  478. data/modules/emscripten/system/include/SDL/SDL_pixels.h +0 -423
  479. data/modules/emscripten/system/include/SDL/SDL_platform.h +0 -160
  480. data/modules/emscripten/system/include/SDL/SDL_power.h +0 -79
  481. data/modules/emscripten/system/include/SDL/SDL_quit.h +0 -58
  482. data/modules/emscripten/system/include/SDL/SDL_rect.h +0 -136
  483. data/modules/emscripten/system/include/SDL/SDL_render.h +0 -615
  484. data/modules/emscripten/system/include/SDL/SDL_revision.h +0 -2
  485. data/modules/emscripten/system/include/SDL/SDL_revision.h.orig +0 -2
  486. data/modules/emscripten/system/include/SDL/SDL_rotozoom.h +0 -123
  487. data/modules/emscripten/system/include/SDL/SDL_rwops.h +0 -220
  488. data/modules/emscripten/system/include/SDL/SDL_scancode.h +0 -398
  489. data/modules/emscripten/system/include/SDL/SDL_shape.h +0 -147
  490. data/modules/emscripten/system/include/SDL/SDL_stdinc.h +0 -764
  491. data/modules/emscripten/system/include/SDL/SDL_surface.h +0 -499
  492. data/modules/emscripten/system/include/SDL/SDL_syswm.h +0 -241
  493. data/modules/emscripten/system/include/SDL/SDL_thread.h +0 -182
  494. data/modules/emscripten/system/include/SDL/SDL_timer.h +0 -108
  495. data/modules/emscripten/system/include/SDL/SDL_touch.h +0 -124
  496. data/modules/emscripten/system/include/SDL/SDL_ttf.h +0 -249
  497. data/modules/emscripten/system/include/SDL/SDL_types.h +0 -29
  498. data/modules/emscripten/system/include/SDL/SDL_version.h +0 -166
  499. data/modules/emscripten/system/include/SDL/SDL_video.h +0 -820
  500. data/modules/emscripten/system/include/SDL/begin_code.h +0 -135
  501. data/modules/emscripten/system/include/SDL/close_code.h +0 -37
  502. data/modules/emscripten/system/include/X11/X.h +0 -717
  503. data/modules/emscripten/system/include/X11/Xatom.h +0 -79
  504. data/modules/emscripten/system/include/X11/Xfuncproto.h +0 -127
  505. data/modules/emscripten/system/include/X11/Xlib.h +0 -4023
  506. data/modules/emscripten/system/include/X11/Xosdefs.h +0 -116
  507. data/modules/emscripten/system/include/X11/Xutil.h +0 -826
  508. data/modules/emscripten/system/include/X11/keysym.h +0 -73
  509. data/modules/emscripten/system/include/X11/keysymdef.h +0 -2389
  510. data/modules/emscripten/system/include/compat/ctype.h +0 -34
  511. data/modules/emscripten/system/include/compat/malloc.h +0 -48
  512. data/modules/emscripten/system/include/compat/math.h +0 -14
  513. data/modules/emscripten/system/include/compat/netdb.h +0 -22
  514. data/modules/emscripten/system/include/compat/stdarg.h +0 -16
  515. data/modules/emscripten/system/include/compat/stdlib.h +0 -16
  516. data/modules/emscripten/system/include/compat/string.h +0 -17
  517. data/modules/emscripten/system/include/compat/sys/socketvar.h +0 -14
  518. data/modules/emscripten/system/include/compat/sys/stat.h +0 -20
  519. data/modules/emscripten/system/include/compat/sys/timeb.h +0 -35
  520. data/modules/emscripten/system/include/compat/time.h +0 -18
  521. data/modules/emscripten/system/include/compat/unistd.h +0 -16
  522. data/modules/emscripten/system/include/compat/wchar.h +0 -23
  523. data/modules/emscripten/system/include/compat/wctype.h +0 -23
  524. data/modules/emscripten/system/include/compat/xlocale.h +0 -19
  525. data/modules/emscripten/system/include/emscripten/bind.h +0 -1210
  526. data/modules/emscripten/system/include/emscripten/emmintrin.h +0 -87
  527. data/modules/emscripten/system/include/emscripten/emscripten.h +0 -519
  528. data/modules/emscripten/system/include/emscripten/val.h +0 -311
  529. data/modules/emscripten/system/include/emscripten/vector.h +0 -34
  530. data/modules/emscripten/system/include/emscripten/wire.h +0 -393
  531. data/modules/emscripten/system/include/emscripten/xmmintrin.h +0 -131
  532. data/modules/emscripten/system/include/execinfo.h +0 -44
  533. data/modules/emscripten/system/include/gc.h +0 -70
  534. data/modules/emscripten/system/include/gfx/png.h +0 -3798
  535. data/modules/emscripten/system/include/gfx/pngconf.h +0 -1665
  536. data/modules/emscripten/system/include/gfx/tiff.h +0 -654
  537. data/modules/emscripten/system/include/gfx/tiffconf.h +0 -104
  538. data/modules/emscripten/system/include/gfx/tiffio.h +0 -526
  539. data/modules/emscripten/system/include/gfx/tiffvers.h +0 -9
  540. data/modules/emscripten/system/include/jansson.h +0 -323
  541. data/modules/emscripten/system/include/jansson_config.h +0 -54
  542. data/modules/emscripten/system/include/libc/aio.h +0 -69
  543. data/modules/emscripten/system/include/libc/alloca.h +0 -21
  544. data/modules/emscripten/system/include/libc/ar.h +0 -25
  545. data/modules/emscripten/system/include/libc/arpa/ftp.h +0 -35
  546. data/modules/emscripten/system/include/libc/arpa/inet.h +0 -36
  547. data/modules/emscripten/system/include/libc/arpa/nameser.h +0 -467
  548. data/modules/emscripten/system/include/libc/arpa/nameser_compat.h +0 -2
  549. data/modules/emscripten/system/include/libc/arpa/telnet.h +0 -251
  550. data/modules/emscripten/system/include/libc/arpa/tftp.h +0 -31
  551. data/modules/emscripten/system/include/libc/assert.h +0 -19
  552. data/modules/emscripten/system/include/libc/bits/alltypes.h +0 -397
  553. data/modules/emscripten/system/include/libc/bits/endian.h +0 -1
  554. data/modules/emscripten/system/include/libc/bits/errno.h +0 -134
  555. data/modules/emscripten/system/include/libc/bits/fcntl.h +0 -38
  556. data/modules/emscripten/system/include/libc/bits/fenv.h +0 -34
  557. data/modules/emscripten/system/include/libc/bits/float.h +0 -17
  558. data/modules/emscripten/system/include/libc/bits/io.h +0 -0
  559. data/modules/emscripten/system/include/libc/bits/ioctl.h +0 -197
  560. data/modules/emscripten/system/include/libc/bits/ipc.h +0 -14
  561. data/modules/emscripten/system/include/libc/bits/limits.h +0 -8
  562. data/modules/emscripten/system/include/libc/bits/mman.h +0 -62
  563. data/modules/emscripten/system/include/libc/bits/msg.h +0 -16
  564. data/modules/emscripten/system/include/libc/bits/posix.h +0 -2
  565. data/modules/emscripten/system/include/libc/bits/reg.h +0 -19
  566. data/modules/emscripten/system/include/libc/bits/setjmp.h +0 -1
  567. data/modules/emscripten/system/include/libc/bits/shm.h +0 -18
  568. data/modules/emscripten/system/include/libc/bits/signal.h +0 -112
  569. data/modules/emscripten/system/include/libc/bits/socket.h +0 -17
  570. data/modules/emscripten/system/include/libc/bits/stat.h +0 -22
  571. data/modules/emscripten/system/include/libc/bits/statfs.h +0 -7
  572. data/modules/emscripten/system/include/libc/bits/stdarg.h +0 -4
  573. data/modules/emscripten/system/include/libc/bits/stdint.h +0 -20
  574. data/modules/emscripten/system/include/libc/bits/syscall.h +0 -696
  575. data/modules/emscripten/system/include/libc/bits/termios.h +0 -160
  576. data/modules/emscripten/system/include/libc/bits/user.h +0 -48
  577. data/modules/emscripten/system/include/libc/byteswap.h +0 -26
  578. data/modules/emscripten/system/include/libc/complex.h +0 -125
  579. data/modules/emscripten/system/include/libc/cpio.h +0 -29
  580. data/modules/emscripten/system/include/libc/crypt.h +0 -20
  581. data/modules/emscripten/system/include/libc/ctype.h +0 -67
  582. data/modules/emscripten/system/include/libc/dirent.h +0 -79
  583. data/modules/emscripten/system/include/libc/dlfcn.h +0 -42
  584. data/modules/emscripten/system/include/libc/elf.h +0 -2555
  585. data/modules/emscripten/system/include/libc/endian.h +0 -82
  586. data/modules/emscripten/system/include/libc/err.h +0 -25
  587. data/modules/emscripten/system/include/libc/errno.h +0 -27
  588. data/modules/emscripten/system/include/libc/fcntl.h +0 -175
  589. data/modules/emscripten/system/include/libc/features.h +0 -32
  590. data/modules/emscripten/system/include/libc/fenv.h +0 -28
  591. data/modules/emscripten/system/include/libc/float.h +0 -34
  592. data/modules/emscripten/system/include/libc/fnmatch.h +0 -29
  593. data/modules/emscripten/system/include/libc/ftw.h +0 -42
  594. data/modules/emscripten/system/include/libc/getopt.h +0 -31
  595. data/modules/emscripten/system/include/libc/glob.h +0 -48
  596. data/modules/emscripten/system/include/libc/grp.h +0 -52
  597. data/modules/emscripten/system/include/libc/iconv.h +0 -24
  598. data/modules/emscripten/system/include/libc/ifaddrs.h +0 -35
  599. data/modules/emscripten/system/include/libc/inttypes.h +0 -227
  600. data/modules/emscripten/system/include/libc/iso646.h +0 -20
  601. data/modules/emscripten/system/include/libc/langinfo.h +0 -88
  602. data/modules/emscripten/system/include/libc/lastlog.h +0 -1
  603. data/modules/emscripten/system/include/libc/libgen.h +0 -15
  604. data/modules/emscripten/system/include/libc/libintl.h +0 -25
  605. data/modules/emscripten/system/include/libc/limits.h +0 -146
  606. data/modules/emscripten/system/include/libc/link.h +0 -54
  607. data/modules/emscripten/system/include/libc/locale.h +0 -82
  608. data/modules/emscripten/system/include/libc/malloc.h +0 -0
  609. data/modules/emscripten/system/include/libc/math.h +0 -422
  610. data/modules/emscripten/system/include/libc/memory.h +0 -1
  611. data/modules/emscripten/system/include/libc/mntent.h +0 -44
  612. data/modules/emscripten/system/include/libc/monetary.h +0 -23
  613. data/modules/emscripten/system/include/libc/mqueue.h +0 -36
  614. data/modules/emscripten/system/include/libc/net/ethernet.h +0 -55
  615. data/modules/emscripten/system/include/libc/net/if.h +0 -135
  616. data/modules/emscripten/system/include/libc/net/if_arp.h +0 -133
  617. data/modules/emscripten/system/include/libc/net/route.h +0 -124
  618. data/modules/emscripten/system/include/libc/netdb.h +0 -161
  619. data/modules/emscripten/system/include/libc/netinet/ether.h +0 -14
  620. data/modules/emscripten/system/include/libc/netinet/icmp6.h +0 -305
  621. data/modules/emscripten/system/include/libc/netinet/if_ether.h +0 -126
  622. data/modules/emscripten/system/include/libc/netinet/in.h +0 -336
  623. data/modules/emscripten/system/include/libc/netinet/in_systm.h +0 -9
  624. data/modules/emscripten/system/include/libc/netinet/ip.h +0 -186
  625. data/modules/emscripten/system/include/libc/netinet/ip6.h +0 -142
  626. data/modules/emscripten/system/include/libc/netinet/ip_icmp.h +0 -192
  627. data/modules/emscripten/system/include/libc/netinet/tcp.h +0 -71
  628. data/modules/emscripten/system/include/libc/netinet/udp.h +0 -35
  629. data/modules/emscripten/system/include/libc/netpacket/packet.h +0 -44
  630. data/modules/emscripten/system/include/libc/nl_types.h +0 -22
  631. data/modules/emscripten/system/include/libc/paths.h +0 -32
  632. data/modules/emscripten/system/include/libc/poll.h +0 -46
  633. data/modules/emscripten/system/include/libc/pthread.h +0 -222
  634. data/modules/emscripten/system/include/libc/pty.h +0 -18
  635. data/modules/emscripten/system/include/libc/pwd.h +0 -49
  636. data/modules/emscripten/system/include/libc/readme.txt +0 -3
  637. data/modules/emscripten/system/include/libc/regex.h +0 -62
  638. data/modules/emscripten/system/include/libc/resolv.h +0 -144
  639. data/modules/emscripten/system/include/libc/sched.h +0 -132
  640. data/modules/emscripten/system/include/libc/search.h +0 -51
  641. data/modules/emscripten/system/include/libc/semaphore.h +0 -35
  642. data/modules/emscripten/system/include/libc/setjmp.h +0 -42
  643. data/modules/emscripten/system/include/libc/shadow.h +0 -44
  644. data/modules/emscripten/system/include/libc/signal.h +0 -255
  645. data/modules/emscripten/system/include/libc/spawn.h +0 -74
  646. data/modules/emscripten/system/include/libc/stdalign.h +0 -15
  647. data/modules/emscripten/system/include/libc/stdarg.h +0 -25
  648. data/modules/emscripten/system/include/libc/stdbool.h +0 -14
  649. data/modules/emscripten/system/include/libc/stddef.h +0 -18
  650. data/modules/emscripten/system/include/libc/stdint.h +0 -117
  651. data/modules/emscripten/system/include/libc/stdio.h +0 -199
  652. data/modules/emscripten/system/include/libc/stdio_ext.h +0 -34
  653. data/modules/emscripten/system/include/libc/stdlib.h +0 -171
  654. data/modules/emscripten/system/include/libc/stdnoreturn.h +0 -5
  655. data/modules/emscripten/system/include/libc/string.h +0 -102
  656. data/modules/emscripten/system/include/libc/strings.h +0 -35
  657. data/modules/emscripten/system/include/libc/stropts.h +0 -139
  658. data/modules/emscripten/system/include/libc/sys/acct.h +0 -75
  659. data/modules/emscripten/system/include/libc/sys/cachectl.h +0 -22
  660. data/modules/emscripten/system/include/libc/sys/dir.h +0 -2
  661. data/modules/emscripten/system/include/libc/sys/epoll.h +0 -67
  662. data/modules/emscripten/system/include/libc/sys/errno.h +0 -2
  663. data/modules/emscripten/system/include/libc/sys/eventfd.h +0 -26
  664. data/modules/emscripten/system/include/libc/sys/fcntl.h +0 -2
  665. data/modules/emscripten/system/include/libc/sys/file.h +0 -21
  666. data/modules/emscripten/system/include/libc/sys/fsuid.h +0 -20
  667. data/modules/emscripten/system/include/libc/sys/inotify.h +0 -57
  668. data/modules/emscripten/system/include/libc/sys/io.h +0 -17
  669. data/modules/emscripten/system/include/libc/sys/ioctl.h +0 -14
  670. data/modules/emscripten/system/include/libc/sys/ipc.h +0 -42
  671. data/modules/emscripten/system/include/libc/sys/klog.h +0 -14
  672. data/modules/emscripten/system/include/libc/sys/mman.h +0 -55
  673. data/modules/emscripten/system/include/libc/sys/mount.h +0 -72
  674. data/modules/emscripten/system/include/libc/sys/msg.h +0 -52
  675. data/modules/emscripten/system/include/libc/sys/mtio.h +0 -188
  676. data/modules/emscripten/system/include/libc/sys/param.h +0 -35
  677. data/modules/emscripten/system/include/libc/sys/personality.h +0 -46
  678. data/modules/emscripten/system/include/libc/sys/poll.h +0 -2
  679. data/modules/emscripten/system/include/libc/sys/prctl.h +0 -101
  680. data/modules/emscripten/system/include/libc/sys/procfs.h +0 -65
  681. data/modules/emscripten/system/include/libc/sys/ptrace.h +0 -96
  682. data/modules/emscripten/system/include/libc/sys/reboot.h +0 -20
  683. data/modules/emscripten/system/include/libc/sys/reg.h +0 -9
  684. data/modules/emscripten/system/include/libc/sys/resource.h +0 -103
  685. data/modules/emscripten/system/include/libc/sys/select.h +0 -42
  686. data/modules/emscripten/system/include/libc/sys/sem.h +0 -82
  687. data/modules/emscripten/system/include/libc/sys/sendfile.h +0 -22
  688. data/modules/emscripten/system/include/libc/sys/shm.h +0 -61
  689. data/modules/emscripten/system/include/libc/sys/signal.h +0 -2
  690. data/modules/emscripten/system/include/libc/sys/signalfd.h +0 -44
  691. data/modules/emscripten/system/include/libc/sys/socket.h +0 -299
  692. data/modules/emscripten/system/include/libc/sys/stat.h +0 -114
  693. data/modules/emscripten/system/include/libc/sys/statfs.h +0 -32
  694. data/modules/emscripten/system/include/libc/sys/statvfs.h +0 -57
  695. data/modules/emscripten/system/include/libc/sys/stropts.h +0 -1
  696. data/modules/emscripten/system/include/libc/sys/swap.h +0 -21
  697. data/modules/emscripten/system/include/libc/sys/syscall.h +0 -6
  698. data/modules/emscripten/system/include/libc/sys/sysctl.h +0 -17
  699. data/modules/emscripten/system/include/libc/sys/sysinfo.h +0 -36
  700. data/modules/emscripten/system/include/libc/sys/syslog.h +0 -1
  701. data/modules/emscripten/system/include/libc/sys/sysmacros.h +0 -15
  702. data/modules/emscripten/system/include/libc/sys/termios.h +0 -2
  703. data/modules/emscripten/system/include/libc/sys/time.h +0 -57
  704. data/modules/emscripten/system/include/libc/sys/timerfd.h +0 -24
  705. data/modules/emscripten/system/include/libc/sys/times.h +0 -26
  706. data/modules/emscripten/system/include/libc/sys/timex.h +0 -98
  707. data/modules/emscripten/system/include/libc/sys/ttydefaults.h +0 -39
  708. data/modules/emscripten/system/include/libc/sys/types.h +0 -91
  709. data/modules/emscripten/system/include/libc/sys/ucontext.h +0 -1
  710. data/modules/emscripten/system/include/libc/sys/uio.h +0 -48
  711. data/modules/emscripten/system/include/libc/sys/un.h +0 -32
  712. data/modules/emscripten/system/include/libc/sys/user.h +0 -16
  713. data/modules/emscripten/system/include/libc/sys/utsname.h +0 -30
  714. data/modules/emscripten/system/include/libc/sys/vfs.h +0 -1
  715. data/modules/emscripten/system/include/libc/sys/wait.h +0 -55
  716. data/modules/emscripten/system/include/libc/sys/xattr.h +0 -30
  717. data/modules/emscripten/system/include/libc/syscall.h +0 -1
  718. data/modules/emscripten/system/include/libc/sysexits.h +0 -21
  719. data/modules/emscripten/system/include/libc/syslog.h +0 -104
  720. data/modules/emscripten/system/include/libc/tar.h +0 -33
  721. data/modules/emscripten/system/include/libc/termios.h +0 -46
  722. data/modules/emscripten/system/include/libc/tgmath.h +0 -270
  723. data/modules/emscripten/system/include/libc/time.h +0 -132
  724. data/modules/emscripten/system/include/libc/ucontext.h +0 -25
  725. data/modules/emscripten/system/include/libc/ulimit.h +0 -17
  726. data/modules/emscripten/system/include/libc/unistd.h +0 -519
  727. data/modules/emscripten/system/include/libc/utime.h +0 -24
  728. data/modules/emscripten/system/include/libc/utmp.h +0 -47
  729. data/modules/emscripten/system/include/libc/utmpx.h +0 -58
  730. data/modules/emscripten/system/include/libc/values.h +0 -39
  731. data/modules/emscripten/system/include/libc/wchar.h +0 -183
  732. data/modules/emscripten/system/include/libc/wctype.h +0 -77
  733. data/modules/emscripten/system/include/libc/wordexp.h +0 -42
  734. data/modules/emscripten/system/include/libcxx/CREDITS.TXT +0 -123
  735. data/modules/emscripten/system/include/libcxx/LICENSE.txt +0 -76
  736. data/modules/emscripten/system/include/libcxx/__bit_reference +0 -1287
  737. data/modules/emscripten/system/include/libcxx/__config +0 -610
  738. data/modules/emscripten/system/include/libcxx/__debug +0 -218
  739. data/modules/emscripten/system/include/libcxx/__functional_03 +0 -2130
  740. data/modules/emscripten/system/include/libcxx/__functional_base +0 -615
  741. data/modules/emscripten/system/include/libcxx/__functional_base_03 +0 -1087
  742. data/modules/emscripten/system/include/libcxx/__hash_table +0 -2457
  743. data/modules/emscripten/system/include/libcxx/__locale +0 -1445
  744. data/modules/emscripten/system/include/libcxx/__mutex_base +0 -407
  745. data/modules/emscripten/system/include/libcxx/__split_buffer +0 -654
  746. data/modules/emscripten/system/include/libcxx/__sso_allocator +0 -77
  747. data/modules/emscripten/system/include/libcxx/__std_stream +0 -359
  748. data/modules/emscripten/system/include/libcxx/__tree +0 -2309
  749. data/modules/emscripten/system/include/libcxx/__tuple +0 -305
  750. data/modules/emscripten/system/include/libcxx/__tuple_03 +0 -27
  751. data/modules/emscripten/system/include/libcxx/__undef_min_max +0 -27
  752. data/modules/emscripten/system/include/libcxx/algorithm +0 -5679
  753. data/modules/emscripten/system/include/libcxx/array +0 -342
  754. data/modules/emscripten/system/include/libcxx/atomic +0 -1531
  755. data/modules/emscripten/system/include/libcxx/bitset +0 -1081
  756. data/modules/emscripten/system/include/libcxx/cassert +0 -25
  757. data/modules/emscripten/system/include/libcxx/ccomplex +0 -29
  758. data/modules/emscripten/system/include/libcxx/cctype +0 -164
  759. data/modules/emscripten/system/include/libcxx/cerrno +0 -393
  760. data/modules/emscripten/system/include/libcxx/cfenv +0 -82
  761. data/modules/emscripten/system/include/libcxx/cfloat +0 -78
  762. data/modules/emscripten/system/include/libcxx/chrono +0 -1027
  763. data/modules/emscripten/system/include/libcxx/cinttypes +0 -259
  764. data/modules/emscripten/system/include/libcxx/ciso646 +0 -25
  765. data/modules/emscripten/system/include/libcxx/climits +0 -48
  766. data/modules/emscripten/system/include/libcxx/clocale +0 -53
  767. data/modules/emscripten/system/include/libcxx/cmath +0 -1690
  768. data/modules/emscripten/system/include/libcxx/codecvt +0 -550
  769. data/modules/emscripten/system/include/libcxx/complex +0 -1567
  770. data/modules/emscripten/system/include/libcxx/complex.h +0 -35
  771. data/modules/emscripten/system/include/libcxx/condition_variable +0 -256
  772. data/modules/emscripten/system/include/libcxx/csetjmp +0 -52
  773. data/modules/emscripten/system/include/libcxx/csignal +0 -58
  774. data/modules/emscripten/system/include/libcxx/cstdarg +0 -48
  775. data/modules/emscripten/system/include/libcxx/cstdbool +0 -32
  776. data/modules/emscripten/system/include/libcxx/cstddef +0 -103
  777. data/modules/emscripten/system/include/libcxx/cstdint +0 -191
  778. data/modules/emscripten/system/include/libcxx/cstdio +0 -182
  779. data/modules/emscripten/system/include/libcxx/cstdlib +0 -172
  780. data/modules/emscripten/system/include/libcxx/cstring +0 -112
  781. data/modules/emscripten/system/include/libcxx/ctgmath +0 -29
  782. data/modules/emscripten/system/include/libcxx/ctime +0 -72
  783. data/modules/emscripten/system/include/libcxx/cwchar +0 -217
  784. data/modules/emscripten/system/include/libcxx/cwctype +0 -213
  785. data/modules/emscripten/system/include/libcxx/deque +0 -2873
  786. data/modules/emscripten/system/include/libcxx/dynarray +0 -311
  787. data/modules/emscripten/system/include/libcxx/exception +0 -250
  788. data/modules/emscripten/system/include/libcxx/ext/__hash +0 -46
  789. data/modules/emscripten/system/include/libcxx/ext/hash_map +0 -1007
  790. data/modules/emscripten/system/include/libcxx/ext/hash_set +0 -661
  791. data/modules/emscripten/system/include/libcxx/forward_list +0 -1663
  792. data/modules/emscripten/system/include/libcxx/fstream +0 -1431
  793. data/modules/emscripten/system/include/libcxx/functional +0 -2418
  794. data/modules/emscripten/system/include/libcxx/future +0 -2615
  795. data/modules/emscripten/system/include/libcxx/initializer_list +0 -118
  796. data/modules/emscripten/system/include/libcxx/iomanip +0 -651
  797. data/modules/emscripten/system/include/libcxx/ios +0 -1023
  798. data/modules/emscripten/system/include/libcxx/iosfwd +0 -194
  799. data/modules/emscripten/system/include/libcxx/iostream +0 -60
  800. data/modules/emscripten/system/include/libcxx/istream +0 -1716
  801. data/modules/emscripten/system/include/libcxx/iterator +0 -1568
  802. data/modules/emscripten/system/include/libcxx/limits +0 -813
  803. data/modules/emscripten/system/include/libcxx/list +0 -2355
  804. data/modules/emscripten/system/include/libcxx/locale +0 -4465
  805. data/modules/emscripten/system/include/libcxx/map +0 -2045
  806. data/modules/emscripten/system/include/libcxx/memory +0 -5448
  807. data/modules/emscripten/system/include/libcxx/mutex +0 -566
  808. data/modules/emscripten/system/include/libcxx/new +0 -146
  809. data/modules/emscripten/system/include/libcxx/numeric +0 -197
  810. data/modules/emscripten/system/include/libcxx/optional +0 -697
  811. data/modules/emscripten/system/include/libcxx/ostream +0 -1295
  812. data/modules/emscripten/system/include/libcxx/queue +0 -717
  813. data/modules/emscripten/system/include/libcxx/random +0 -6725
  814. data/modules/emscripten/system/include/libcxx/ratio +0 -487
  815. data/modules/emscripten/system/include/libcxx/readme.txt +0 -1
  816. data/modules/emscripten/system/include/libcxx/regex +0 -6487
  817. data/modules/emscripten/system/include/libcxx/scoped_allocator +0 -578
  818. data/modules/emscripten/system/include/libcxx/set +0 -1189
  819. data/modules/emscripten/system/include/libcxx/shared_mutex +0 -419
  820. data/modules/emscripten/system/include/libcxx/sstream +0 -972
  821. data/modules/emscripten/system/include/libcxx/stack +0 -292
  822. data/modules/emscripten/system/include/libcxx/stdexcept +0 -162
  823. data/modules/emscripten/system/include/libcxx/streambuf +0 -564
  824. data/modules/emscripten/system/include/libcxx/string +0 -4198
  825. data/modules/emscripten/system/include/libcxx/strstream +0 -400
  826. data/modules/emscripten/system/include/libcxx/support/ibm/limits.h +0 -99
  827. data/modules/emscripten/system/include/libcxx/support/ibm/support.h +0 -54
  828. data/modules/emscripten/system/include/libcxx/support/ibm/xlocale.h +0 -326
  829. data/modules/emscripten/system/include/libcxx/support/solaris/floatingpoint.h +0 -5
  830. data/modules/emscripten/system/include/libcxx/support/solaris/wchar.h +0 -38
  831. data/modules/emscripten/system/include/libcxx/support/solaris/xlocale.h +0 -146
  832. data/modules/emscripten/system/include/libcxx/support/win32/limits_win32.h +0 -79
  833. data/modules/emscripten/system/include/libcxx/support/win32/locale_win32.h +0 -129
  834. data/modules/emscripten/system/include/libcxx/support/win32/math_win32.h +0 -115
  835. data/modules/emscripten/system/include/libcxx/support/win32/support.h +0 -119
  836. data/modules/emscripten/system/include/libcxx/system_error +0 -642
  837. data/modules/emscripten/system/include/libcxx/tgmath.h +0 -29
  838. data/modules/emscripten/system/include/libcxx/thread +0 -458
  839. data/modules/emscripten/system/include/libcxx/tuple +0 -1102
  840. data/modules/emscripten/system/include/libcxx/type_traits +0 -3292
  841. data/modules/emscripten/system/include/libcxx/typeindex +0 -103
  842. data/modules/emscripten/system/include/libcxx/typeinfo +0 -124
  843. data/modules/emscripten/system/include/libcxx/unordered_map +0 -2078
  844. data/modules/emscripten/system/include/libcxx/unordered_set +0 -1379
  845. data/modules/emscripten/system/include/libcxx/utility +0 -768
  846. data/modules/emscripten/system/include/libcxx/valarray +0 -4779
  847. data/modules/emscripten/system/include/libcxx/vector +0 -3246
  848. data/modules/emscripten/system/include/unwind.h +0 -154
  849. data/modules/emscripten/system/include/uuid/uuid.h +0 -35
  850. data/modules/emscripten/system/include/zconf.h +0 -428
  851. data/modules/emscripten/system/include/zlib.h +0 -1613
  852. data/modules/emscripten/system/lib/compiler-rt/LICENSE.TXT +0 -97
  853. data/modules/emscripten/system/lib/compiler-rt/divdi3.c +0 -47
  854. data/modules/emscripten/system/lib/compiler-rt/int_endianness.h +0 -116
  855. data/modules/emscripten/system/lib/compiler-rt/int_lib.h +0 -46
  856. data/modules/emscripten/system/lib/compiler-rt/int_math.h +0 -67
  857. data/modules/emscripten/system/lib/compiler-rt/int_types.h +0 -140
  858. data/modules/emscripten/system/lib/compiler-rt/int_util.h +0 -29
  859. data/modules/emscripten/system/lib/compiler-rt/muldi3.c +0 -56
  860. data/modules/emscripten/system/lib/compiler-rt/readme.txt +0 -20
  861. data/modules/emscripten/system/lib/compiler-rt/udivdi3.c +0 -36
  862. data/modules/emscripten/system/lib/compiler-rt/udivmoddi4.c +0 -251
  863. data/modules/emscripten/system/lib/debugging.cpp +0 -24
  864. data/modules/emscripten/system/lib/dlmalloc.c +0 -6297
  865. data/modules/emscripten/system/lib/embind/bind.cpp +0 -63
  866. data/modules/emscripten/system/lib/libc/gen/err.c +0 -49
  867. data/modules/emscripten/system/lib/libc/gen/errx.c +0 -49
  868. data/modules/emscripten/system/lib/libc/gen/verr.c +0 -58
  869. data/modules/emscripten/system/lib/libc/gen/verrx.c +0 -51
  870. data/modules/emscripten/system/lib/libc/gen/vwarn.c +0 -55
  871. data/modules/emscripten/system/lib/libc/gen/vwarnx.c +0 -48
  872. data/modules/emscripten/system/lib/libc/gen/warn.c +0 -49
  873. data/modules/emscripten/system/lib/libc/gen/warnx.c +0 -49
  874. data/modules/emscripten/system/lib/libc/musl/COPYRIGHT +0 -92
  875. data/modules/emscripten/system/lib/libc/musl/readme.txt +0 -9
  876. data/modules/emscripten/system/lib/libc/musl/src/ctype/alpha.h +0 -125
  877. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswalnum.c +0 -7
  878. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswalpha.c +0 -14
  879. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswblank.c +0 -8
  880. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswcntrl.c +0 -10
  881. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswctype.c +0 -63
  882. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswdigit.c +0 -9
  883. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswgraph.c +0 -7
  884. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswlower.c +0 -6
  885. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswprint.c +0 -19
  886. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswpunct.c +0 -12
  887. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswspace.c +0 -19
  888. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswupper.c +0 -6
  889. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswxdigit.c +0 -7
  890. data/modules/emscripten/system/lib/libc/musl/src/ctype/nonspacing.h +0 -62
  891. data/modules/emscripten/system/lib/libc/musl/src/ctype/punct.h +0 -109
  892. data/modules/emscripten/system/lib/libc/musl/src/ctype/towctrans.c +0 -268
  893. data/modules/emscripten/system/lib/libc/musl/src/ctype/wcswidth.c +0 -8
  894. data/modules/emscripten/system/lib/libc/musl/src/ctype/wctrans.c +0 -16
  895. data/modules/emscripten/system/lib/libc/musl/src/ctype/wcwidth.c +0 -29
  896. data/modules/emscripten/system/lib/libc/musl/src/ctype/wide.h +0 -42
  897. data/modules/emscripten/system/lib/libc/musl/src/internal/libc.c +0 -22
  898. data/modules/emscripten/system/lib/libc/musl/src/internal/libc.h +0 -71
  899. data/modules/emscripten/system/lib/libc/musl/src/internal/locale_impl.h +0 -5
  900. data/modules/emscripten/system/lib/libc/musl/src/internal/stdio_impl.h +0 -92
  901. data/modules/emscripten/system/lib/libc/musl/src/locale/big5.h +0 -1085
  902. data/modules/emscripten/system/lib/libc/musl/src/locale/codepages.h +0 -238
  903. data/modules/emscripten/system/lib/libc/musl/src/locale/gb18030.h +0 -1836
  904. data/modules/emscripten/system/lib/libc/musl/src/locale/hkscs.h +0 -390
  905. data/modules/emscripten/system/lib/libc/musl/src/locale/iconv.c +0 -454
  906. data/modules/emscripten/system/lib/libc/musl/src/locale/iswalnum_l.c +0 -6
  907. data/modules/emscripten/system/lib/libc/musl/src/locale/iswalpha_l.c +0 -6
  908. data/modules/emscripten/system/lib/libc/musl/src/locale/iswblank_l.c +0 -6
  909. data/modules/emscripten/system/lib/libc/musl/src/locale/iswcntrl_l.c +0 -6
  910. data/modules/emscripten/system/lib/libc/musl/src/locale/iswctype_l.c +0 -9
  911. data/modules/emscripten/system/lib/libc/musl/src/locale/iswdigit_l.c +0 -6
  912. data/modules/emscripten/system/lib/libc/musl/src/locale/iswgraph_l.c +0 -6
  913. data/modules/emscripten/system/lib/libc/musl/src/locale/iswlower_l.c +0 -6
  914. data/modules/emscripten/system/lib/libc/musl/src/locale/iswprint_l.c +0 -6
  915. data/modules/emscripten/system/lib/libc/musl/src/locale/iswpunct_l.c +0 -6
  916. data/modules/emscripten/system/lib/libc/musl/src/locale/iswspace_l.c +0 -6
  917. data/modules/emscripten/system/lib/libc/musl/src/locale/iswupper_l.c +0 -6
  918. data/modules/emscripten/system/lib/libc/musl/src/locale/iswxdigit_l.c +0 -6
  919. data/modules/emscripten/system/lib/libc/musl/src/locale/jis0208.h +0 -550
  920. data/modules/emscripten/system/lib/libc/musl/src/locale/ksc.h +0 -640
  921. data/modules/emscripten/system/lib/libc/musl/src/locale/legacychars.h +0 -39
  922. data/modules/emscripten/system/lib/libc/musl/src/locale/strfmon.c +0 -101
  923. data/modules/emscripten/system/lib/libc/musl/src/locale/strxfrm.c +0 -18
  924. data/modules/emscripten/system/lib/libc/musl/src/locale/towctrans_l.c +0 -6
  925. data/modules/emscripten/system/lib/libc/musl/src/locale/towlower_l.c +0 -9
  926. data/modules/emscripten/system/lib/libc/musl/src/locale/towupper_l.c +0 -9
  927. data/modules/emscripten/system/lib/libc/musl/src/locale/wcscoll.c +0 -16
  928. data/modules/emscripten/system/lib/libc/musl/src/locale/wcscoll_l.c +0 -6
  929. data/modules/emscripten/system/lib/libc/musl/src/locale/wcsxfrm.c +0 -21
  930. data/modules/emscripten/system/lib/libc/musl/src/locale/wcsxfrm_l.c +0 -6
  931. data/modules/emscripten/system/lib/libc/musl/src/locale/wctrans_l.c +0 -6
  932. data/modules/emscripten/system/lib/libc/musl/src/locale/wctype_l.c +0 -9
  933. data/modules/emscripten/system/lib/libc/musl/src/multibyte/btowc.c +0 -7
  934. data/modules/emscripten/system/lib/libc/musl/src/multibyte/internal.c +0 -38
  935. data/modules/emscripten/system/lib/libc/musl/src/multibyte/internal.h +0 -22
  936. data/modules/emscripten/system/lib/libc/musl/src/multibyte/mblen.c +0 -17
  937. data/modules/emscripten/system/lib/libc/musl/src/multibyte/mbrlen.c +0 -18
  938. data/modules/emscripten/system/lib/libc/musl/src/multibyte/mbrtowc.c +0 -57
  939. data/modules/emscripten/system/lib/libc/musl/src/multibyte/mbsinit.c +0 -17
  940. data/modules/emscripten/system/lib/libc/musl/src/multibyte/mbsnrtowcs.c +0 -65
  941. data/modules/emscripten/system/lib/libc/musl/src/multibyte/mbsrtowcs.c +0 -100
  942. data/modules/emscripten/system/lib/libc/musl/src/multibyte/mbstowcs.c +0 -7
  943. data/modules/emscripten/system/lib/libc/musl/src/multibyte/mbtowc.c +0 -53
  944. data/modules/emscripten/system/lib/libc/musl/src/multibyte/wcrtomb.c +0 -38
  945. data/modules/emscripten/system/lib/libc/musl/src/multibyte/wcsnrtombs.c +0 -52
  946. data/modules/emscripten/system/lib/libc/musl/src/multibyte/wcsrtombs.c +0 -58
  947. data/modules/emscripten/system/lib/libc/musl/src/multibyte/wcstombs.c +0 -7
  948. data/modules/emscripten/system/lib/libc/musl/src/multibyte/wctob.c +0 -8
  949. data/modules/emscripten/system/lib/libc/musl/src/multibyte/wctomb.c +0 -18
  950. data/modules/emscripten/system/lib/libc/musl/src/regex/regcomp.c +0 -3352
  951. data/modules/emscripten/system/lib/libc/musl/src/regex/regerror.c +0 -35
  952. data/modules/emscripten/system/lib/libc/musl/src/regex/regexec.c +0 -1011
  953. data/modules/emscripten/system/lib/libc/musl/src/regex/tre-mem.c +0 -158
  954. data/modules/emscripten/system/lib/libc/musl/src/regex/tre.h +0 -231
  955. data/modules/emscripten/system/lib/libc/musl/src/stdio/fwprintf.c +0 -13
  956. data/modules/emscripten/system/lib/libc/musl/src/stdio/swprintf.c +0 -14
  957. data/modules/emscripten/system/lib/libc/musl/src/stdio/vfwprintf.c +0 -361
  958. data/modules/emscripten/system/lib/libc/musl/src/stdio/vswprintf.c +0 -53
  959. data/modules/emscripten/system/lib/libc/musl/src/stdio/vwprintf.c +0 -7
  960. data/modules/emscripten/system/lib/libc/musl/src/stdio/wprintf.c +0 -13
  961. data/modules/emscripten/system/lib/libc/musl/src/stdlib/ecvt.c +0 -19
  962. data/modules/emscripten/system/lib/libc/musl/src/stdlib/fcvt.c +0 -25
  963. data/modules/emscripten/system/lib/libc/musl/src/stdlib/gcvt.c +0 -8
  964. data/modules/emscripten/system/lib/libc/musl/src/string/wcpcpy.c +0 -6
  965. data/modules/emscripten/system/lib/libc/musl/src/string/wcpncpy.c +0 -6
  966. data/modules/emscripten/system/lib/libc/musl/src/string/wcscasecmp.c +0 -7
  967. data/modules/emscripten/system/lib/libc/musl/src/string/wcscasecmp_l.c +0 -6
  968. data/modules/emscripten/system/lib/libc/musl/src/string/wcscat.c +0 -7
  969. data/modules/emscripten/system/lib/libc/musl/src/string/wcschr.c +0 -8
  970. data/modules/emscripten/system/lib/libc/musl/src/string/wcscmp.c +0 -7
  971. data/modules/emscripten/system/lib/libc/musl/src/string/wcscpy.c +0 -8
  972. data/modules/emscripten/system/lib/libc/musl/src/string/wcscspn.c +0 -10
  973. data/modules/emscripten/system/lib/libc/musl/src/string/wcsdup.c +0 -11
  974. data/modules/emscripten/system/lib/libc/musl/src/string/wcslen.c +0 -8
  975. data/modules/emscripten/system/lib/libc/musl/src/string/wcsncasecmp.c +0 -9
  976. data/modules/emscripten/system/lib/libc/musl/src/string/wcsncasecmp_l.c +0 -6
  977. data/modules/emscripten/system/lib/libc/musl/src/string/wcsncat.c +0 -10
  978. data/modules/emscripten/system/lib/libc/musl/src/string/wcsncmp.c +0 -7
  979. data/modules/emscripten/system/lib/libc/musl/src/string/wcsncpy.c +0 -9
  980. data/modules/emscripten/system/lib/libc/musl/src/string/wcsnlen.c +0 -8
  981. data/modules/emscripten/system/lib/libc/musl/src/string/wcspbrk.c +0 -7
  982. data/modules/emscripten/system/lib/libc/musl/src/string/wcsrchr.c +0 -8
  983. data/modules/emscripten/system/lib/libc/musl/src/string/wcsspn.c +0 -8
  984. data/modules/emscripten/system/lib/libc/musl/src/string/wcsstr.c +0 -108
  985. data/modules/emscripten/system/lib/libc/musl/src/string/wcstok.c +0 -12
  986. data/modules/emscripten/system/lib/libc/musl/src/string/wcswcs.c +0 -6
  987. data/modules/emscripten/system/lib/libc/musl/src/string/wmemchr.c +0 -8
  988. data/modules/emscripten/system/lib/libc/musl/src/string/wmemcmp.c +0 -8
  989. data/modules/emscripten/system/lib/libc/musl/src/string/wmemcpy.c +0 -9
  990. data/modules/emscripten/system/lib/libc/musl/src/string/wmemmove.c +0 -12
  991. data/modules/emscripten/system/lib/libc/musl/src/string/wmemset.c +0 -9
  992. data/modules/emscripten/system/lib/libc/stdlib/getopt_long.c +0 -511
  993. data/modules/emscripten/system/lib/libc/stdlib/strtod.c +0 -305
  994. data/modules/emscripten/system/lib/libc.symbols +0 -81
  995. data/modules/emscripten/system/lib/libcextra.symbols +0 -115
  996. data/modules/emscripten/system/lib/libcxx/CREDITS.TXT +0 -123
  997. data/modules/emscripten/system/lib/libcxx/LICENSE.txt +0 -76
  998. data/modules/emscripten/system/lib/libcxx/algorithm.cpp +0 -84
  999. data/modules/emscripten/system/lib/libcxx/bind.cpp +0 -30
  1000. data/modules/emscripten/system/lib/libcxx/chrono.cpp +0 -132
  1001. data/modules/emscripten/system/lib/libcxx/condition_variable.cpp +0 -81
  1002. data/modules/emscripten/system/lib/libcxx/debug.cpp +0 -530
  1003. data/modules/emscripten/system/lib/libcxx/exception.cpp +0 -307
  1004. data/modules/emscripten/system/lib/libcxx/future.cpp +0 -291
  1005. data/modules/emscripten/system/lib/libcxx/hash.cpp +0 -570
  1006. data/modules/emscripten/system/lib/libcxx/ios.cpp +0 -460
  1007. data/modules/emscripten/system/lib/libcxx/iostream.cpp +0 -68
  1008. data/modules/emscripten/system/lib/libcxx/locale.cpp +0 -6169
  1009. data/modules/emscripten/system/lib/libcxx/memory.cpp +0 -223
  1010. data/modules/emscripten/system/lib/libcxx/mutex.cpp +0 -253
  1011. data/modules/emscripten/system/lib/libcxx/new.cpp +0 -239
  1012. data/modules/emscripten/system/lib/libcxx/optional.cpp +0 -25
  1013. data/modules/emscripten/system/lib/libcxx/random.cpp +0 -74
  1014. data/modules/emscripten/system/lib/libcxx/readme.txt +0 -1
  1015. data/modules/emscripten/system/lib/libcxx/regex.cpp +0 -325
  1016. data/modules/emscripten/system/lib/libcxx/shared_mutex.cpp +0 -101
  1017. data/modules/emscripten/system/lib/libcxx/stdexcept.cpp +0 -200
  1018. data/modules/emscripten/system/lib/libcxx/string.cpp +0 -530
  1019. data/modules/emscripten/system/lib/libcxx/strstream.cpp +0 -329
  1020. data/modules/emscripten/system/lib/libcxx/support/solaris/README +0 -4
  1021. data/modules/emscripten/system/lib/libcxx/support/solaris/mbsnrtowcs.inc +0 -76
  1022. data/modules/emscripten/system/lib/libcxx/support/solaris/wcsnrtombs.inc +0 -93
  1023. data/modules/emscripten/system/lib/libcxx/support/solaris/xlocale.c +0 -245
  1024. data/modules/emscripten/system/lib/libcxx/support/win32/locale_win32.cpp +0 -95
  1025. data/modules/emscripten/system/lib/libcxx/support/win32/support.cpp +0 -166
  1026. data/modules/emscripten/system/lib/libcxx/symbols +0 -2699
  1027. data/modules/emscripten/system/lib/libcxx/system_error.cpp +0 -205
  1028. data/modules/emscripten/system/lib/libcxx/thread.cpp +0 -225
  1029. data/modules/emscripten/system/lib/libcxx/typeinfo.cpp +0 -73
  1030. data/modules/emscripten/system/lib/libcxx/utility.cpp +0 -17
  1031. data/modules/emscripten/system/lib/libcxx/valarray.cpp +0 -56
  1032. data/modules/emscripten/system/lib/libcxxabi/CREDITS.TXT +0 -38
  1033. data/modules/emscripten/system/lib/libcxxabi/LICENSE.TXT +0 -76
  1034. data/modules/emscripten/system/lib/libcxxabi/include/cxa_demangle.h +0 -167
  1035. data/modules/emscripten/system/lib/libcxxabi/include/cxxabi.h +0 -175
  1036. data/modules/emscripten/system/lib/libcxxabi/lib/buildit +0 -99
  1037. data/modules/emscripten/system/lib/libcxxabi/readme.txt +0 -1
  1038. data/modules/emscripten/system/lib/libcxxabi/src/abort_message.cpp +0 -50
  1039. data/modules/emscripten/system/lib/libcxxabi/src/abort_message.h +0 -33
  1040. data/modules/emscripten/system/lib/libcxxabi/src/cxa_aux_runtime.cpp +0 -34
  1041. data/modules/emscripten/system/lib/libcxxabi/src/cxa_demangle.cpp +0 -11036
  1042. data/modules/emscripten/system/lib/libcxxabi/src/cxa_exception.cpp +0 -622
  1043. data/modules/emscripten/system/lib/libcxxabi/src/cxa_exception.hpp +0 -123
  1044. data/modules/emscripten/system/lib/libcxxabi/src/cxa_exception_storage.cpp +0 -91
  1045. data/modules/emscripten/system/lib/libcxxabi/src/cxa_guard.cpp +0 -231
  1046. data/modules/emscripten/system/lib/libcxxabi/src/cxa_handlers.cpp +0 -125
  1047. data/modules/emscripten/system/lib/libcxxabi/src/cxa_handlers.hpp +0 -54
  1048. data/modules/emscripten/system/lib/libcxxabi/src/cxa_new_delete.cpp +0 -242
  1049. data/modules/emscripten/system/lib/libcxxabi/src/cxa_personality.cpp +0 -1055
  1050. data/modules/emscripten/system/lib/libcxxabi/src/cxa_unexpected.cpp +0 -27
  1051. data/modules/emscripten/system/lib/libcxxabi/src/cxa_vector.cpp +0 -367
  1052. data/modules/emscripten/system/lib/libcxxabi/src/cxa_virtual.cpp +0 -31
  1053. data/modules/emscripten/system/lib/libcxxabi/src/exception.cpp +0 -41
  1054. data/modules/emscripten/system/lib/libcxxabi/src/fallback_malloc.ipp +0 -174
  1055. data/modules/emscripten/system/lib/libcxxabi/src/private_typeinfo.cpp +0 -1146
  1056. data/modules/emscripten/system/lib/libcxxabi/src/private_typeinfo.h +0 -248
  1057. data/modules/emscripten/system/lib/libcxxabi/src/stdexcept.cpp +0 -169
  1058. data/modules/emscripten/system/lib/libcxxabi/src/typeinfo.cpp +0 -53
  1059. data/modules/emscripten/system/lib/libcxxabi/symbols +0 -236
  1060. data/modules/emscripten/system/lib/sdl.cpp +0 -13
  1061. data/modules/emscripten/system/lib/sdl.symbols +0 -1
  1062. data/modules/emscripten/third_party/CppHeaderParser/CppHeaderParser/CppHeaderParser.py +0 -2347
  1063. data/modules/emscripten/third_party/CppHeaderParser/CppHeaderParser/__init__.py +0 -4
  1064. data/modules/emscripten/third_party/CppHeaderParser/CppHeaderParser/doc/CppHeaderParser.html +0 -657
  1065. data/modules/emscripten/third_party/CppHeaderParser/CppHeaderParser/examples/SampleClass.h +0 -147
  1066. data/modules/emscripten/third_party/CppHeaderParser/CppHeaderParser/examples/readSampleClass.py +0 -74
  1067. data/modules/emscripten/third_party/CppHeaderParser/PKG-INFO +0 -249
  1068. data/modules/emscripten/third_party/CppHeaderParser/README.html +0 -544
  1069. data/modules/emscripten/third_party/CppHeaderParser/README.txt +0 -226
  1070. data/modules/emscripten/third_party/CppHeaderParser/setup.py +0 -43
  1071. data/modules/emscripten/third_party/ansidecl.h +0 -371
  1072. data/modules/emscripten/third_party/closure-compiler/COPYING +0 -202
  1073. data/modules/emscripten/third_party/closure-compiler/README +0 -292
  1074. data/modules/emscripten/third_party/closure-compiler/compiler.jar +0 -0
  1075. data/modules/emscripten/third_party/closure-compiler/readme.txt +0 -3
  1076. data/modules/emscripten/third_party/cp-demangle.h +0 -161
  1077. data/modules/emscripten/third_party/demangle.h +0 -549
  1078. data/modules/emscripten/third_party/demangler.py +0 -49
  1079. data/modules/emscripten/third_party/gcc_demangler.c +0 -4226
  1080. data/modules/emscripten/third_party/gcc_demangler.js +0 -21282
  1081. data/modules/emscripten/third_party/jni/emjvm.cpp +0 -133
  1082. data/modules/emscripten/third_party/jni/emjvm.h +0 -8
  1083. data/modules/emscripten/third_party/jni/emjvm.js +0 -185
  1084. data/modules/emscripten/third_party/jni/jni.h +0 -1154
  1085. data/modules/emscripten/third_party/libiberty.h +0 -634
  1086. data/modules/emscripten/third_party/lzma.js/README.markdown +0 -37
  1087. data/modules/emscripten/third_party/lzma.js/doit.bat +0 -4
  1088. data/modules/emscripten/third_party/lzma.js/doit.sh +0 -44
  1089. data/modules/emscripten/third_party/lzma.js/lzip/AUTHORS +0 -7
  1090. data/modules/emscripten/third_party/lzma.js/lzip/COPYING +0 -676
  1091. data/modules/emscripten/third_party/lzma.js/lzip/ChangeLog +0 -201
  1092. data/modules/emscripten/third_party/lzma.js/lzip/INSTALL +0 -56
  1093. data/modules/emscripten/third_party/lzma.js/lzip/Makefile +0 -160
  1094. data/modules/emscripten/third_party/lzma.js/lzip/Makefile.in +0 -138
  1095. data/modules/emscripten/third_party/lzma.js/lzip/NEWS +0 -22
  1096. data/modules/emscripten/third_party/lzma.js/lzip/README +0 -77
  1097. data/modules/emscripten/third_party/lzma.js/lzip/arg_parser.cc +0 -204
  1098. data/modules/emscripten/third_party/lzma.js/lzip/arg_parser.h +0 -106
  1099. data/modules/emscripten/third_party/lzma.js/lzip/configure +0 -192
  1100. data/modules/emscripten/third_party/lzma.js/lzip/decoder.cc +0 -252
  1101. data/modules/emscripten/third_party/lzma.js/lzip/decoder.h +0 -268
  1102. data/modules/emscripten/third_party/lzma.js/lzip/encoder.cc +0 -643
  1103. data/modules/emscripten/third_party/lzma.js/lzip/encoder.h +0 -582
  1104. data/modules/emscripten/third_party/lzma.js/lzip/fast_encoder.cc +0 -378
  1105. data/modules/emscripten/third_party/lzma.js/lzip/fast_encoder.h +0 -171
  1106. data/modules/emscripten/third_party/lzma.js/lzip/lzip.h +0 -264
  1107. data/modules/emscripten/third_party/lzma.js/lzip/main.cc +0 -545
  1108. data/modules/emscripten/third_party/lzma.js/lzma-decoder.js +0 -27
  1109. data/modules/emscripten/third_party/lzma.js/lzma-full.js +0 -27
  1110. data/modules/emscripten/third_party/lzma.js/native_test.sh +0 -5
  1111. data/modules/emscripten/third_party/lzma.js/post.js +0 -13
  1112. data/modules/emscripten/third_party/lzma.js/pre.js +0 -13
  1113. data/modules/emscripten/third_party/lzma.js/test-decoder.js +0 -39
  1114. data/modules/emscripten/third_party/lzma.js/test-full.html +0 -9
  1115. data/modules/emscripten/third_party/lzma.js/test-full.js +0 -78
  1116. data/modules/emscripten/third_party/ply/ANNOUNCE +0 -40
  1117. data/modules/emscripten/third_party/ply/CHANGES +0 -1093
  1118. data/modules/emscripten/third_party/ply/PKG-INFO +0 -22
  1119. data/modules/emscripten/third_party/ply/README +0 -271
  1120. data/modules/emscripten/third_party/ply/TODO +0 -16
  1121. data/modules/emscripten/third_party/ply/doc/internal.html +0 -874
  1122. data/modules/emscripten/third_party/ply/doc/makedoc.py +0 -194
  1123. data/modules/emscripten/third_party/ply/doc/ply.html +0 -3262
  1124. data/modules/emscripten/third_party/ply/example/BASIC/README +0 -79
  1125. data/modules/emscripten/third_party/ply/example/BASIC/basic.py +0 -71
  1126. data/modules/emscripten/third_party/ply/example/BASIC/basiclex.py +0 -74
  1127. data/modules/emscripten/third_party/ply/example/BASIC/basiclog.py +0 -79
  1128. data/modules/emscripten/third_party/ply/example/BASIC/basinterp.py +0 -441
  1129. data/modules/emscripten/third_party/ply/example/BASIC/basparse.py +0 -424
  1130. data/modules/emscripten/third_party/ply/example/BASIC/dim.bas +0 -14
  1131. data/modules/emscripten/third_party/ply/example/BASIC/func.bas +0 -5
  1132. data/modules/emscripten/third_party/ply/example/BASIC/gcd.bas +0 -22
  1133. data/modules/emscripten/third_party/ply/example/BASIC/gosub.bas +0 -13
  1134. data/modules/emscripten/third_party/ply/example/BASIC/hello.bas +0 -4
  1135. data/modules/emscripten/third_party/ply/example/BASIC/linear.bas +0 -17
  1136. data/modules/emscripten/third_party/ply/example/BASIC/maxsin.bas +0 -12
  1137. data/modules/emscripten/third_party/ply/example/BASIC/powers.bas +0 -13
  1138. data/modules/emscripten/third_party/ply/example/BASIC/rand.bas +0 -4
  1139. data/modules/emscripten/third_party/ply/example/BASIC/sales.bas +0 -20
  1140. data/modules/emscripten/third_party/ply/example/BASIC/sears.bas +0 -18
  1141. data/modules/emscripten/third_party/ply/example/BASIC/sqrt1.bas +0 -5
  1142. data/modules/emscripten/third_party/ply/example/BASIC/sqrt2.bas +0 -4
  1143. data/modules/emscripten/third_party/ply/example/GardenSnake/GardenSnake.py +0 -709
  1144. data/modules/emscripten/third_party/ply/example/GardenSnake/README +0 -5
  1145. data/modules/emscripten/third_party/ply/example/README +0 -10
  1146. data/modules/emscripten/third_party/ply/example/ansic/README +0 -2
  1147. data/modules/emscripten/third_party/ply/example/ansic/clex.py +0 -164
  1148. data/modules/emscripten/third_party/ply/example/ansic/cparse.py +0 -863
  1149. data/modules/emscripten/third_party/ply/example/calc/calc.py +0 -107
  1150. data/modules/emscripten/third_party/ply/example/calcdebug/calc.py +0 -113
  1151. data/modules/emscripten/third_party/ply/example/classcalc/calc.py +0 -157
  1152. data/modules/emscripten/third_party/ply/example/cleanup.sh +0 -2
  1153. data/modules/emscripten/third_party/ply/example/closurecalc/calc.py +0 -130
  1154. data/modules/emscripten/third_party/ply/example/hedit/hedit.py +0 -48
  1155. data/modules/emscripten/third_party/ply/example/newclasscalc/calc.py +0 -160
  1156. data/modules/emscripten/third_party/ply/example/optcalc/README +0 -9
  1157. data/modules/emscripten/third_party/ply/example/optcalc/calc.py +0 -119
  1158. data/modules/emscripten/third_party/ply/example/unicalc/calc.py +0 -117
  1159. data/modules/emscripten/third_party/ply/example/yply/README +0 -41
  1160. data/modules/emscripten/third_party/ply/example/yply/ylex.py +0 -112
  1161. data/modules/emscripten/third_party/ply/example/yply/yparse.py +0 -217
  1162. data/modules/emscripten/third_party/ply/example/yply/yply.py +0 -53
  1163. data/modules/emscripten/third_party/ply/ply/__init__.py +0 -4
  1164. data/modules/emscripten/third_party/ply/ply/cpp.py +0 -898
  1165. data/modules/emscripten/third_party/ply/ply/ctokens.py +0 -133
  1166. data/modules/emscripten/third_party/ply/ply/lex.py +0 -1058
  1167. data/modules/emscripten/third_party/ply/ply/yacc.py +0 -3276
  1168. data/modules/emscripten/third_party/ply/setup.py +0 -31
  1169. data/modules/emscripten/third_party/ply/test/README +0 -7
  1170. data/modules/emscripten/third_party/ply/test/calclex.py +0 -49
  1171. data/modules/emscripten/third_party/ply/test/cleanup.sh +0 -4
  1172. data/modules/emscripten/third_party/ply/test/lex_closure.py +0 -54
  1173. data/modules/emscripten/third_party/ply/test/lex_doc1.py +0 -26
  1174. data/modules/emscripten/third_party/ply/test/lex_dup1.py +0 -29
  1175. data/modules/emscripten/third_party/ply/test/lex_dup2.py +0 -33
  1176. data/modules/emscripten/third_party/ply/test/lex_dup3.py +0 -31
  1177. data/modules/emscripten/third_party/ply/test/lex_empty.py +0 -20
  1178. data/modules/emscripten/third_party/ply/test/lex_error1.py +0 -24
  1179. data/modules/emscripten/third_party/ply/test/lex_error2.py +0 -26
  1180. data/modules/emscripten/third_party/ply/test/lex_error3.py +0 -27
  1181. data/modules/emscripten/third_party/ply/test/lex_error4.py +0 -27
  1182. data/modules/emscripten/third_party/ply/test/lex_hedit.py +0 -47
  1183. data/modules/emscripten/third_party/ply/test/lex_ignore.py +0 -31
  1184. data/modules/emscripten/third_party/ply/test/lex_ignore2.py +0 -29
  1185. data/modules/emscripten/third_party/ply/test/lex_literal1.py +0 -25
  1186. data/modules/emscripten/third_party/ply/test/lex_literal2.py +0 -25
  1187. data/modules/emscripten/third_party/ply/test/lex_many_tokens.py +0 -27
  1188. data/modules/emscripten/third_party/ply/test/lex_module.py +0 -10
  1189. data/modules/emscripten/third_party/ply/test/lex_module_import.py +0 -42
  1190. data/modules/emscripten/third_party/ply/test/lex_object.py +0 -55
  1191. data/modules/emscripten/third_party/ply/test/lex_opt_alias.py +0 -54
  1192. data/modules/emscripten/third_party/ply/test/lex_optimize.py +0 -50
  1193. data/modules/emscripten/third_party/ply/test/lex_optimize2.py +0 -50
  1194. data/modules/emscripten/third_party/ply/test/lex_optimize3.py +0 -52
  1195. data/modules/emscripten/third_party/ply/test/lex_re1.py +0 -27
  1196. data/modules/emscripten/third_party/ply/test/lex_re2.py +0 -27
  1197. data/modules/emscripten/third_party/ply/test/lex_re3.py +0 -29
  1198. data/modules/emscripten/third_party/ply/test/lex_rule1.py +0 -27
  1199. data/modules/emscripten/third_party/ply/test/lex_rule2.py +0 -29
  1200. data/modules/emscripten/third_party/ply/test/lex_rule3.py +0 -27
  1201. data/modules/emscripten/third_party/ply/test/lex_state1.py +0 -40
  1202. data/modules/emscripten/third_party/ply/test/lex_state2.py +0 -40
  1203. data/modules/emscripten/third_party/ply/test/lex_state3.py +0 -42
  1204. data/modules/emscripten/third_party/ply/test/lex_state4.py +0 -41
  1205. data/modules/emscripten/third_party/ply/test/lex_state5.py +0 -40
  1206. data/modules/emscripten/third_party/ply/test/lex_state_noerror.py +0 -39
  1207. data/modules/emscripten/third_party/ply/test/lex_state_norule.py +0 -40
  1208. data/modules/emscripten/third_party/ply/test/lex_state_try.py +0 -45
  1209. data/modules/emscripten/third_party/ply/test/lex_token1.py +0 -19
  1210. data/modules/emscripten/third_party/ply/test/lex_token2.py +0 -22
  1211. data/modules/emscripten/third_party/ply/test/lex_token3.py +0 -24
  1212. data/modules/emscripten/third_party/ply/test/lex_token4.py +0 -26
  1213. data/modules/emscripten/third_party/ply/test/lex_token5.py +0 -31
  1214. data/modules/emscripten/third_party/ply/test/lex_token_dup.py +0 -29
  1215. data/modules/emscripten/third_party/ply/test/testlex.py +0 -606
  1216. data/modules/emscripten/third_party/ply/test/testyacc.py +0 -347
  1217. data/modules/emscripten/third_party/ply/test/yacc_badargs.py +0 -68
  1218. data/modules/emscripten/third_party/ply/test/yacc_badid.py +0 -77
  1219. data/modules/emscripten/third_party/ply/test/yacc_badprec.py +0 -64
  1220. data/modules/emscripten/third_party/ply/test/yacc_badprec2.py +0 -68
  1221. data/modules/emscripten/third_party/ply/test/yacc_badprec3.py +0 -68
  1222. data/modules/emscripten/third_party/ply/test/yacc_badrule.py +0 -68
  1223. data/modules/emscripten/third_party/ply/test/yacc_badtok.py +0 -68
  1224. data/modules/emscripten/third_party/ply/test/yacc_dup.py +0 -68
  1225. data/modules/emscripten/third_party/ply/test/yacc_error1.py +0 -68
  1226. data/modules/emscripten/third_party/ply/test/yacc_error2.py +0 -68
  1227. data/modules/emscripten/third_party/ply/test/yacc_error3.py +0 -67
  1228. data/modules/emscripten/third_party/ply/test/yacc_error4.py +0 -72
  1229. data/modules/emscripten/third_party/ply/test/yacc_inf.py +0 -56
  1230. data/modules/emscripten/third_party/ply/test/yacc_literal.py +0 -69
  1231. data/modules/emscripten/third_party/ply/test/yacc_misplaced.py +0 -68
  1232. data/modules/emscripten/third_party/ply/test/yacc_missing1.py +0 -68
  1233. data/modules/emscripten/third_party/ply/test/yacc_nested.py +0 -33
  1234. data/modules/emscripten/third_party/ply/test/yacc_nodoc.py +0 -67
  1235. data/modules/emscripten/third_party/ply/test/yacc_noerror.py +0 -66
  1236. data/modules/emscripten/third_party/ply/test/yacc_nop.py +0 -68
  1237. data/modules/emscripten/third_party/ply/test/yacc_notfunc.py +0 -66
  1238. data/modules/emscripten/third_party/ply/test/yacc_notok.py +0 -67
  1239. data/modules/emscripten/third_party/ply/test/yacc_prec1.py +0 -68
  1240. data/modules/emscripten/third_party/ply/test/yacc_rr.py +0 -72
  1241. data/modules/emscripten/third_party/ply/test/yacc_rr_unused.py +0 -30
  1242. data/modules/emscripten/third_party/ply/test/yacc_simple.py +0 -68
  1243. data/modules/emscripten/third_party/ply/test/yacc_sr.py +0 -63
  1244. data/modules/emscripten/third_party/ply/test/yacc_term1.py +0 -68
  1245. data/modules/emscripten/third_party/ply/test/yacc_unused.py +0 -77
  1246. data/modules/emscripten/third_party/ply/test/yacc_unused_rule.py +0 -72
  1247. data/modules/emscripten/third_party/ply/test/yacc_uprec.py +0 -63
  1248. data/modules/emscripten/third_party/ply/test/yacc_uprec2.py +0 -63
  1249. data/modules/emscripten/third_party/readme.txt +0 -7
  1250. data/modules/emscripten/third_party/stb_image.c +0 -4673
  1251. data/modules/emscripten/third_party/websockify/CHANGES.txt +0 -23
  1252. data/modules/emscripten/third_party/websockify/LICENSE.txt +0 -16
  1253. data/modules/emscripten/third_party/websockify/MANIFEST.in +0 -1
  1254. data/modules/emscripten/third_party/websockify/Makefile +0 -11
  1255. data/modules/emscripten/third_party/websockify/README.md +0 -168
  1256. data/modules/emscripten/third_party/websockify/Windows/Windows Service Readme.txt +0 -39
  1257. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/Program.cs +0 -24
  1258. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/ProjectInstaller.Designer.cs +0 -61
  1259. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/ProjectInstaller.cs +0 -19
  1260. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/ProjectInstaller.resx +0 -129
  1261. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/Properties/AssemblyInfo.cs +0 -36
  1262. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/Service1.Designer.cs +0 -37
  1263. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/Service1.cs +0 -41
  1264. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/noVNC Websocket.csproj +0 -75
  1265. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/noVNC Websocket.sln +0 -20
  1266. data/modules/emscripten/third_party/websockify/docs/LICENSE.GPL-3 +0 -621
  1267. data/modules/emscripten/third_party/websockify/docs/LICENSE.LGPL-3 +0 -165
  1268. data/modules/emscripten/third_party/websockify/docs/LICENSE.MPL-2.0 +0 -373
  1269. data/modules/emscripten/third_party/websockify/docs/TODO +0 -9
  1270. data/modules/emscripten/third_party/websockify/docs/flash_policy.txt +0 -4
  1271. data/modules/emscripten/third_party/websockify/docs/latency_results.txt +0 -114
  1272. data/modules/emscripten/third_party/websockify/docs/notes +0 -17
  1273. data/modules/emscripten/third_party/websockify/docs/release.txt +0 -9
  1274. data/modules/emscripten/third_party/websockify/docs/websockify.1 +0 -110
  1275. data/modules/emscripten/third_party/websockify/include/VT100.js +0 -919
  1276. data/modules/emscripten/third_party/websockify/include/base64.js +0 -114
  1277. data/modules/emscripten/third_party/websockify/include/keysym.js +0 -99
  1278. data/modules/emscripten/third_party/websockify/include/util.js +0 -359
  1279. data/modules/emscripten/third_party/websockify/include/web-socket-js/README.txt +0 -109
  1280. data/modules/emscripten/third_party/websockify/include/web-socket-js/WebSocketMain.swf +0 -0
  1281. data/modules/emscripten/third_party/websockify/include/web-socket-js/swfobject.js +0 -4
  1282. data/modules/emscripten/third_party/websockify/include/web-socket-js/web_socket.js +0 -391
  1283. data/modules/emscripten/third_party/websockify/include/websock.js +0 -422
  1284. data/modules/emscripten/third_party/websockify/include/webutil.js +0 -216
  1285. data/modules/emscripten/third_party/websockify/include/wsirc.js +0 -235
  1286. data/modules/emscripten/third_party/websockify/include/wstelnet.js +0 -335
  1287. data/modules/emscripten/third_party/websockify/other/Makefile +0 -14
  1288. data/modules/emscripten/third_party/websockify/other/README.md +0 -51
  1289. data/modules/emscripten/third_party/websockify/other/launch.sh +0 -108
  1290. data/modules/emscripten/third_party/websockify/other/project.clj +0 -13
  1291. data/modules/emscripten/third_party/websockify/other/websocket.c +0 -802
  1292. data/modules/emscripten/third_party/websockify/other/websocket.h +0 -84
  1293. data/modules/emscripten/third_party/websockify/other/websocket.rb +0 -456
  1294. data/modules/emscripten/third_party/websockify/other/websockify.c +0 -385
  1295. data/modules/emscripten/third_party/websockify/other/websockify.clj +0 -233
  1296. data/modules/emscripten/third_party/websockify/other/websockify.js +0 -196
  1297. data/modules/emscripten/third_party/websockify/other/websockify.rb +0 -171
  1298. data/modules/emscripten/third_party/websockify/other/wswrap +0 -22
  1299. data/modules/emscripten/third_party/websockify/rebind +0 -18
  1300. data/modules/emscripten/third_party/websockify/rebind.c +0 -94
  1301. data/modules/emscripten/third_party/websockify/run +0 -5
  1302. data/modules/emscripten/third_party/websockify/setup.py +0 -30
  1303. data/modules/emscripten/third_party/websockify/tests/b64_vs_utf8.py +0 -29
  1304. data/modules/emscripten/third_party/websockify/tests/base64.html +0 -91
  1305. data/modules/emscripten/third_party/websockify/tests/base64.js +0 -12
  1306. data/modules/emscripten/third_party/websockify/tests/echo.html +0 -148
  1307. data/modules/emscripten/third_party/websockify/tests/echo.py +0 -75
  1308. data/modules/emscripten/third_party/websockify/tests/echo.rb +0 -62
  1309. data/modules/emscripten/third_party/websockify/tests/latency.html +0 -290
  1310. data/modules/emscripten/third_party/websockify/tests/latency.py +0 -75
  1311. data/modules/emscripten/third_party/websockify/tests/load.html +0 -250
  1312. data/modules/emscripten/third_party/websockify/tests/load.py +0 -167
  1313. data/modules/emscripten/third_party/websockify/tests/plain_echo.html +0 -168
  1314. data/modules/emscripten/third_party/websockify/tests/simple.html +0 -68
  1315. data/modules/emscripten/third_party/websockify/tests/utf8-list.py +0 -22
  1316. data/modules/emscripten/third_party/websockify/websockify/__init__.py +0 -2
  1317. data/modules/emscripten/third_party/websockify/websockify/websocket.py +0 -982
  1318. data/modules/emscripten/third_party/websockify/websockify/websocketproxy.py +0 -393
  1319. data/modules/emscripten/third_party/websockify/websockify.py +0 -5
  1320. data/modules/emscripten/third_party/websockify/wsirc.html +0 -99
  1321. data/modules/emscripten/third_party/websockify/wstelnet.html +0 -74
  1322. data/modules/emscripten/tools/__init__.py +0 -0
  1323. data/modules/emscripten/tools/asm_module.py +0 -275
  1324. data/modules/emscripten/tools/autodebugger.py +0 -291
  1325. data/modules/emscripten/tools/autodebugger_c.py +0 -37
  1326. data/modules/emscripten/tools/autodebugger_indenter.py +0 -18
  1327. data/modules/emscripten/tools/autodebugger_js.py +0 -47
  1328. data/modules/emscripten/tools/autodediffer.py +0 -60
  1329. data/modules/emscripten/tools/bindings_generator.py +0 -832
  1330. data/modules/emscripten/tools/bisect_pair.py +0 -88
  1331. data/modules/emscripten/tools/cache.py +0 -196
  1332. data/modules/emscripten/tools/clean_webconsole.py +0 -34
  1333. data/modules/emscripten/tools/crunch-worker.js +0 -124
  1334. data/modules/emscripten/tools/diff_autodebugger.py +0 -15
  1335. data/modules/emscripten/tools/eliminator/asm-eliminator-test-output.js +0 -307
  1336. data/modules/emscripten/tools/eliminator/asm-eliminator-test.js +0 -382
  1337. data/modules/emscripten/tools/eliminator/eliminator-test-output.js +0 -6136
  1338. data/modules/emscripten/tools/eliminator/eliminator-test.js +0 -8879
  1339. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/README.html +0 -888
  1340. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/README.org +0 -463
  1341. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/bin/uglifyjs +0 -317
  1342. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/docstyle.css +0 -75
  1343. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/lib/object-ast.js +0 -75
  1344. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/lib/parse-js.js +0 -1363
  1345. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/lib/process.js +0 -2005
  1346. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/lib/squeeze-more.js +0 -51
  1347. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/package.json +0 -22
  1348. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/beautify.js +0 -28
  1349. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/testparser.js +0 -402
  1350. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/array1.js +0 -1
  1351. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/array2.js +0 -1
  1352. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/array3.js +0 -1
  1353. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/array4.js +0 -1
  1354. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/assignment.js +0 -1
  1355. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/concatstring.js +0 -1
  1356. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/const.js +0 -1
  1357. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/empty-blocks.js +0 -1
  1358. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/forstatement.js +0 -1
  1359. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/if.js +0 -1
  1360. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/ifreturn.js +0 -1
  1361. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/ifreturn2.js +0 -1
  1362. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue10.js +0 -1
  1363. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue11.js +0 -1
  1364. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue13.js +0 -1
  1365. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue14.js +0 -1
  1366. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue16.js +0 -1
  1367. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue17.js +0 -1
  1368. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue20.js +0 -1
  1369. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue21.js +0 -1
  1370. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue25.js +0 -1
  1371. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue27.js +0 -1
  1372. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue28.js +0 -1
  1373. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue29.js +0 -1
  1374. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue30.js +0 -1
  1375. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue34.js +0 -1
  1376. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue4.js +0 -1
  1377. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue48.js +0 -1
  1378. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue50.js +0 -1
  1379. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue53.js +0 -1
  1380. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue54.1.js +0 -1
  1381. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue68.js +0 -1
  1382. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue69.js +0 -1
  1383. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue9.js +0 -1
  1384. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/mangle.js +0 -1
  1385. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/strict-equals.js +0 -1
  1386. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/var.js +0 -1
  1387. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/with.js +0 -1
  1388. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/array1.js +0 -3
  1389. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/array2.js +0 -4
  1390. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/array3.js +0 -4
  1391. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/array4.js +0 -6
  1392. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/assignment.js +0 -20
  1393. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/concatstring.js +0 -3
  1394. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/const.js +0 -5
  1395. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/empty-blocks.js +0 -4
  1396. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/forstatement.js +0 -10
  1397. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/if.js +0 -6
  1398. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/ifreturn.js +0 -9
  1399. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/ifreturn2.js +0 -16
  1400. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue10.js +0 -1
  1401. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue11.js +0 -3
  1402. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue13.js +0 -1
  1403. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue14.js +0 -1
  1404. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue16.js +0 -1
  1405. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue17.js +0 -4
  1406. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue20.js +0 -1
  1407. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue21.js +0 -6
  1408. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue25.js +0 -7
  1409. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue27.js +0 -1
  1410. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue28.js +0 -3
  1411. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue29.js +0 -1
  1412. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue30.js +0 -3
  1413. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue34.js +0 -3
  1414. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue4.js +0 -3
  1415. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue48.js +0 -1
  1416. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue50.js +0 -9
  1417. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue53.js +0 -1
  1418. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue54.1.js +0 -3
  1419. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue68.js +0 -5
  1420. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue69.js +0 -1
  1421. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue9.js +0 -4
  1422. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/mangle.js +0 -5
  1423. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/strict-equals.js +0 -3
  1424. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/var.js +0 -3
  1425. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/with.js +0 -2
  1426. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/scripts.js +0 -55
  1427. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/tmp/hoist.js +0 -33
  1428. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/tmp/instrument.js +0 -97
  1429. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/tmp/instrument2.js +0 -138
  1430. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/tmp/test.js +0 -16
  1431. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/uglify-js.js +0 -17
  1432. data/modules/emscripten/tools/eliminator/safe-eliminator-test-output.js +0 -85
  1433. data/modules/emscripten/tools/eliminator/safe-eliminator-test.js +0 -103
  1434. data/modules/emscripten/tools/emconfiguren.py +0 -19
  1435. data/modules/emscripten/tools/emmaken.py +0 -230
  1436. data/modules/emscripten/tools/emmakenxx.py +0 -18
  1437. data/modules/emscripten/tools/exec_llvm.py +0 -50
  1438. data/modules/emscripten/tools/file2json.py +0 -49
  1439. data/modules/emscripten/tools/file_packager.py +0 -719
  1440. data/modules/emscripten/tools/find_bigfuncs.py +0 -23
  1441. data/modules/emscripten/tools/find_bigis.py +0 -18
  1442. data/modules/emscripten/tools/find_bigvars.py +0 -24
  1443. data/modules/emscripten/tools/fix_closure.py +0 -88
  1444. data/modules/emscripten/tools/gen_struct_info.py +0 -509
  1445. data/modules/emscripten/tools/ie7_fix.py +0 -14
  1446. data/modules/emscripten/tools/js-optimizer.js +0 -4023
  1447. data/modules/emscripten/tools/js_optimizer.py +0 -357
  1448. data/modules/emscripten/tools/jsrun.py +0 -37
  1449. data/modules/emscripten/tools/ll-strip.py +0 -56
  1450. data/modules/emscripten/tools/make_file.py +0 -19
  1451. data/modules/emscripten/tools/make_minigzip.py +0 -13
  1452. data/modules/emscripten/tools/merge_asm.py +0 -26
  1453. data/modules/emscripten/tools/namespacer.py +0 -95
  1454. data/modules/emscripten/tools/nativize_llvm.py +0 -34
  1455. data/modules/emscripten/tools/node_modules/source-map/CHANGELOG.md +0 -58
  1456. data/modules/emscripten/tools/node_modules/source-map/LICENSE +0 -28
  1457. data/modules/emscripten/tools/node_modules/source-map/Makefile.dryice.js +0 -166
  1458. data/modules/emscripten/tools/node_modules/source-map/README.md +0 -347
  1459. data/modules/emscripten/tools/node_modules/source-map/build/assert-shim.js +0 -56
  1460. data/modules/emscripten/tools/node_modules/source-map/build/mini-require.js +0 -152
  1461. data/modules/emscripten/tools/node_modules/source-map/build/prefix-source-map.jsm +0 -20
  1462. data/modules/emscripten/tools/node_modules/source-map/build/prefix-utils.jsm +0 -18
  1463. data/modules/emscripten/tools/node_modules/source-map/build/suffix-browser.js +0 -8
  1464. data/modules/emscripten/tools/node_modules/source-map/build/suffix-source-map.jsm +0 -6
  1465. data/modules/emscripten/tools/node_modules/source-map/build/suffix-utils.jsm +0 -21
  1466. data/modules/emscripten/tools/node_modules/source-map/build/test-prefix.js +0 -8
  1467. data/modules/emscripten/tools/node_modules/source-map/build/test-suffix.js +0 -3
  1468. data/modules/emscripten/tools/node_modules/source-map/lib/source-map/array-set.js +0 -96
  1469. data/modules/emscripten/tools/node_modules/source-map/lib/source-map/base64-vlq.js +0 -144
  1470. data/modules/emscripten/tools/node_modules/source-map/lib/source-map/base64.js +0 -42
  1471. data/modules/emscripten/tools/node_modules/source-map/lib/source-map/binary-search.js +0 -81
  1472. data/modules/emscripten/tools/node_modules/source-map/lib/source-map/source-map-consumer.js +0 -430
  1473. data/modules/emscripten/tools/node_modules/source-map/lib/source-map/source-map-generator.js +0 -381
  1474. data/modules/emscripten/tools/node_modules/source-map/lib/source-map/source-node.js +0 -353
  1475. data/modules/emscripten/tools/node_modules/source-map/lib/source-map/util.js +0 -117
  1476. data/modules/emscripten/tools/node_modules/source-map/lib/source-map.js +0 -8
  1477. data/modules/emscripten/tools/node_modules/source-map/node_modules/amdefine/LICENSE +0 -58
  1478. data/modules/emscripten/tools/node_modules/source-map/node_modules/amdefine/README.md +0 -119
  1479. data/modules/emscripten/tools/node_modules/source-map/node_modules/amdefine/amdefine.js +0 -299
  1480. data/modules/emscripten/tools/node_modules/source-map/node_modules/amdefine/package.json +0 -33
  1481. data/modules/emscripten/tools/node_modules/source-map/package.json +0 -74
  1482. data/modules/emscripten/tools/node_modules/source-map/test/run-tests.js +0 -73
  1483. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-api.js +0 -26
  1484. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-array-set.js +0 -71
  1485. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-base64-vlq.js +0 -24
  1486. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-base64.js +0 -35
  1487. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-binary-search.js +0 -54
  1488. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-dog-fooding.js +0 -72
  1489. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-source-map-consumer.js +0 -306
  1490. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-source-map-generator.js +0 -391
  1491. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-source-node.js +0 -282
  1492. data/modules/emscripten/tools/node_modules/source-map/test/source-map/util.js +0 -152
  1493. data/modules/emscripten/tools/reproduceriter.js +0 -216
  1494. data/modules/emscripten/tools/reproduceriter.py +0 -160
  1495. data/modules/emscripten/tools/response_file.py +0 -34
  1496. data/modules/emscripten/tools/scan_js.py +0 -20
  1497. data/modules/emscripten/tools/scan_ll.py +0 -18
  1498. data/modules/emscripten/tools/scons/site_scons/site_tools/emscripten/__init__.py +0 -3
  1499. data/modules/emscripten/tools/scons/site_scons/site_tools/emscripten/emscripten.py +0 -46
  1500. data/modules/emscripten/tools/settings_template_readonly.py +0 -49
  1501. data/modules/emscripten/tools/shared.py +0 -1705
  1502. data/modules/emscripten/tools/source-maps/sourcemap2json.js +0 -15
  1503. data/modules/emscripten/tools/source-maps/sourcemapper.js +0 -208
  1504. data/modules/emscripten/tools/split.py +0 -105
  1505. data/modules/emscripten/tools/split_asm.py +0 -30
  1506. data/modules/emscripten/tools/tempfiles.py +0 -41
  1507. data/modules/emscripten/tools/test-js-optimizer-asm-last-output.js +0 -75
  1508. data/modules/emscripten/tools/test-js-optimizer-asm-last.js +0 -91
  1509. data/modules/emscripten/tools/test-js-optimizer-asm-minlast-output.js +0 -2
  1510. data/modules/emscripten/tools/test-js-optimizer-asm-minlast.js +0 -8
  1511. data/modules/emscripten/tools/test-js-optimizer-asm-outline1-output.js +0 -929
  1512. data/modules/emscripten/tools/test-js-optimizer-asm-outline1.js +0 -351
  1513. data/modules/emscripten/tools/test-js-optimizer-asm-outline2-output.js +0 -793
  1514. data/modules/emscripten/tools/test-js-optimizer-asm-outline2.js +0 -606
  1515. data/modules/emscripten/tools/test-js-optimizer-asm-outline3-output.js +0 -28
  1516. data/modules/emscripten/tools/test-js-optimizer-asm-outline3.js +0 -30
  1517. data/modules/emscripten/tools/test-js-optimizer-asm-pre-output.js +0 -522
  1518. data/modules/emscripten/tools/test-js-optimizer-asm-pre.js +0 -533
  1519. data/modules/emscripten/tools/test-js-optimizer-asm-regs-min-output.js +0 -36
  1520. data/modules/emscripten/tools/test-js-optimizer-asm-regs-min.js +0 -37
  1521. data/modules/emscripten/tools/test-js-optimizer-asm-regs-output.js +0 -106
  1522. data/modules/emscripten/tools/test-js-optimizer-asm-regs.js +0 -110
  1523. data/modules/emscripten/tools/test-js-optimizer-asm-relocate-output.js +0 -9
  1524. data/modules/emscripten/tools/test-js-optimizer-asm-relocate.js +0 -12
  1525. data/modules/emscripten/tools/test-js-optimizer-output.js +0 -291
  1526. data/modules/emscripten/tools/test-js-optimizer-regs-output.js +0 -232
  1527. data/modules/emscripten/tools/test-js-optimizer-regs.js +0 -237
  1528. data/modules/emscripten/tools/test-js-optimizer-t2-output.js +0 -91
  1529. data/modules/emscripten/tools/test-js-optimizer-t2.js +0 -92
  1530. data/modules/emscripten/tools/test-js-optimizer-t2c-output.js +0 -17
  1531. data/modules/emscripten/tools/test-js-optimizer-t2c.js +0 -18
  1532. data/modules/emscripten/tools/test-js-optimizer-t3-output.js +0 -49
  1533. data/modules/emscripten/tools/test-js-optimizer-t3.js +0 -50
  1534. data/modules/emscripten/tools/test-js-optimizer.js +0 -401
  1535. data/modules/emscripten/tools/validate_asmjs.py +0 -82
  1536. data/modules/mruby/mrblib/print.rb +0 -18
  1537. data/modules/mruby/src/re.h +0 -12
@@ -1,24 +1,26 @@
1
- /*
1
+ /*
2
2
  ** vm.c - virtual machine for mruby
3
3
  **
4
4
  ** See Copyright Notice in mruby.h
5
5
  */
6
6
 
7
- #include <setjmp.h>
8
7
  #include <stddef.h>
9
8
  #include <stdarg.h>
9
+ #include <math.h>
10
10
  #include "mruby.h"
11
11
  #include "mruby/array.h"
12
12
  #include "mruby/class.h"
13
13
  #include "mruby/hash.h"
14
14
  #include "mruby/irep.h"
15
+ #include "mruby/numeric.h"
15
16
  #include "mruby/proc.h"
16
17
  #include "mruby/range.h"
17
18
  #include "mruby/string.h"
18
19
  #include "mruby/variable.h"
19
- #include "error.h"
20
- #include "opcode.h"
20
+ #include "mruby/error.h"
21
+ #include "mruby/opcode.h"
21
22
  #include "value_array.h"
23
+ #include "mrb_throw.h"
22
24
 
23
25
  #ifndef ENABLE_STDIO
24
26
  #if defined(__cplusplus)
@@ -30,20 +32,6 @@ void abort(void);
30
32
  #endif
31
33
  #endif
32
34
 
33
- #define SET_TRUE_VALUE(r) MRB_SET_VALUE(r, MRB_TT_TRUE, value.i, 1)
34
- #define SET_FALSE_VALUE(r) MRB_SET_VALUE(r, MRB_TT_FALSE, value.i, 1)
35
- #define SET_NIL_VALUE(r) MRB_SET_VALUE(r, MRB_TT_FALSE, value.i, 0)
36
- #define SET_INT_VALUE(r,n) MRB_SET_VALUE(r, MRB_TT_FIXNUM, value.i, (n))
37
- #define SET_SYM_VALUE(r,v) MRB_SET_VALUE(r, MRB_TT_SYMBOL, value.sym, (v))
38
- #define SET_OBJ_VALUE(r,v) MRB_SET_VALUE(r, (((struct RObject*)(v))->tt), value.p, (v))
39
- #ifdef MRB_NAN_BOXING
40
- #define SET_FLT_VALUE(mrb,r,v) r.f = (v)
41
- #elif defined(MRB_WORD_BOXING)
42
- #define SET_FLT_VALUE(mrb,r,v) r = mrb_float_value(mrb, (v))
43
- #else
44
- #define SET_FLT_VALUE(mrb,r,v) MRB_SET_VALUE(r, MRB_TT_FLOAT, value.f, (v))
45
- #endif
46
-
47
35
  #define STACK_INIT_SIZE 128
48
36
  #define CALLINFO_INIT_SIZE 32
49
37
 
@@ -64,9 +52,6 @@ The value below allows about 60000 recursive calls in the simplest case. */
64
52
  # define DEBUG(x)
65
53
  #endif
66
54
 
67
- #define TO_STR(x) TO_STR_(x)
68
- #define TO_STR_(x) #x
69
-
70
55
  #define ARENA_RESTORE(mrb,ai) (mrb)->arena_idx = (ai)
71
56
 
72
57
  static inline void
@@ -109,6 +94,7 @@ stack_init(mrb_state *mrb)
109
94
  c->ciend = c->cibase + CALLINFO_INIT_SIZE;
110
95
  c->ci = c->cibase;
111
96
  c->ci->target_class = mrb->object_class;
97
+ c->ci->stackent = c->stack;
112
98
  }
113
99
 
114
100
  static inline void
@@ -116,42 +102,62 @@ envadjust(mrb_state *mrb, mrb_value *oldbase, mrb_value *newbase)
116
102
  {
117
103
  mrb_callinfo *ci = mrb->c->cibase;
118
104
 
105
+ if (newbase == oldbase) return;
119
106
  while (ci <= mrb->c->ci) {
120
107
  struct REnv *e = ci->env;
121
- if (e && e->cioff >= 0) {
108
+ if (e && MRB_ENV_STACK_SHARED_P(e)) {
122
109
  ptrdiff_t off = e->stack - oldbase;
123
110
 
124
111
  e->stack = newbase + off;
125
112
  }
113
+ ci->stackent = newbase + (ci->stackent - oldbase);
126
114
  ci++;
127
115
  }
128
116
  }
129
117
 
118
+ static inline void
119
+ init_new_stack_space(mrb_state *mrb, int room, int keep)
120
+ {
121
+ if (room > keep) {
122
+ /* do not leave uninitialized malloc region */
123
+ stack_clear(&(mrb->c->stack[keep]), room - keep);
124
+ }
125
+ }
126
+
130
127
  /** def rec ; $deep =+ 1 ; if $deep > 1000 ; return 0 ; end ; rec ; end */
131
128
 
132
129
  static void
133
- stack_extend_alloc(mrb_state *mrb, int room)
130
+ stack_extend_alloc(mrb_state *mrb, int room, int keep)
134
131
  {
135
132
  mrb_value *oldbase = mrb->c->stbase;
136
133
  int size = mrb->c->stend - mrb->c->stbase;
137
134
  int off = mrb->c->stack - mrb->c->stbase;
138
135
 
136
+ #ifdef MRB_STACK_EXTEND_DOUBLING
137
+ if (room <= size)
138
+ size *= 2;
139
+ else
140
+ size += room;
141
+ #else
139
142
  /* Use linear stack growth.
140
143
  It is slightly slower than doubling the stack space,
141
144
  but it saves memory on small devices. */
142
- if (room <= size)
145
+ if (room <= MRB_STACK_GROWTH)
143
146
  size += MRB_STACK_GROWTH;
144
147
  else
145
148
  size += room;
149
+ #endif
146
150
 
147
151
  mrb->c->stbase = (mrb_value *)mrb_realloc(mrb, mrb->c->stbase, sizeof(mrb_value) * size);
148
152
  mrb->c->stack = mrb->c->stbase + off;
149
153
  mrb->c->stend = mrb->c->stbase + size;
150
154
  envadjust(mrb, oldbase, mrb->c->stbase);
155
+
151
156
  /* Raise an exception if the new stack size will be too large,
152
157
  to prevent infinite recursion. However, do this only after resizing the stack, so mrb_raise has stack space to work with. */
153
158
  if (size > MRB_STACK_MAX) {
154
- mrb_raise(mrb, E_RUNTIME_ERROR, "stack level too deep. (limit=" TO_STR(MRB_STACK_MAX) ")");
159
+ init_new_stack_space(mrb, room, keep);
160
+ mrb_raise(mrb, E_SYSSTACK_ERROR, "stack level too deep. (limit=" MRB_STRINGIZE(MRB_STACK_MAX) ")");
155
161
  }
156
162
  }
157
163
 
@@ -159,12 +165,9 @@ static inline void
159
165
  stack_extend(mrb_state *mrb, int room, int keep)
160
166
  {
161
167
  if (mrb->c->stack + room >= mrb->c->stend) {
162
- stack_extend_alloc(mrb, room);
163
- }
164
- if (room > keep) {
165
- /* do not leave uninitialized malloc region */
166
- stack_clear(&(mrb->c->stack[keep]), room - keep);
168
+ stack_extend_alloc(mrb, room, keep);
167
169
  }
170
+ init_new_stack_space(mrb, room, keep);
168
171
  }
169
172
 
170
173
  static inline struct REnv*
@@ -184,7 +187,7 @@ is_strict(mrb_state *mrb, struct REnv *e)
184
187
  {
185
188
  int cioff = e->cioff;
186
189
 
187
- if (cioff >= 0 && mrb->c->cibase[cioff].proc &&
190
+ if (MRB_ENV_STACK_SHARED_P(e) && mrb->c->cibase[cioff].proc &&
188
191
  MRB_PROC_STRICT_P(mrb->c->cibase[cioff].proc)) {
189
192
  return TRUE;
190
193
  }
@@ -224,12 +227,12 @@ cipush(mrb_state *mrb)
224
227
  c->ciend = c->cibase + size * 2;
225
228
  }
226
229
  ci = ++c->ci;
227
- ci->nregs = 2; /* protect method_missing arg and block */
228
230
  ci->eidx = eidx;
229
231
  ci->ridx = ridx;
230
232
  ci->env = 0;
231
233
  ci->pc = 0;
232
234
  ci->err = 0;
235
+ ci->proc = 0;
233
236
 
234
237
  return ci;
235
238
  }
@@ -241,12 +244,15 @@ cipop(mrb_state *mrb)
241
244
 
242
245
  if (c->ci->env) {
243
246
  struct REnv *e = c->ci->env;
244
- size_t len = (size_t)e->flags;
247
+ size_t len = (size_t)MRB_ENV_STACK_LEN(e);
245
248
  mrb_value *p = (mrb_value *)mrb_malloc(mrb, sizeof(mrb_value)*len);
246
249
 
247
- e->cioff = -1;
248
- stack_copy(p, e->stack, len);
250
+ MRB_ENV_UNSHARE_STACK(e);
251
+ if (len > 0) {
252
+ stack_copy(p, e->stack, len);
253
+ }
249
254
  e->stack = p;
255
+ mrb_write_barrier(mrb, (struct RBasic *)e);
250
256
  }
251
257
 
252
258
  c->ci--;
@@ -265,7 +271,7 @@ ecall(mrb_state *mrb, int i)
265
271
  if (mrb->c->ci->eidx > i)
266
272
  mrb->c->ci->eidx = i;
267
273
  ci = cipush(mrb);
268
- ci->stackidx = mrb->c->stack - mrb->c->stbase;
274
+ ci->stackent = mrb->c->stack;
269
275
  ci->mid = ci[-1].mid;
270
276
  ci->acc = CI_ACC_SKIP;
271
277
  ci->argc = 0;
@@ -283,64 +289,50 @@ ecall(mrb_state *mrb, int i)
283
289
  #define MRB_FUNCALL_ARGC_MAX 16
284
290
  #endif
285
291
 
286
- mrb_value
287
- mrb_funcall(mrb_state *mrb, mrb_value self, const char *name, int argc, ...)
292
+ MRB_API mrb_value
293
+ mrb_funcall(mrb_state *mrb, mrb_value self, const char *name, mrb_int argc, ...)
288
294
  {
295
+ mrb_value argv[MRB_FUNCALL_ARGC_MAX];
296
+ va_list ap;
297
+ mrb_int i;
289
298
  mrb_sym mid = mrb_intern_cstr(mrb, name);
290
299
 
291
- if (argc == 0) {
292
- return mrb_funcall_argv(mrb, self, mid, 0, 0);
300
+ if (argc > MRB_FUNCALL_ARGC_MAX) {
301
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "Too long arguments. (limit=" MRB_STRINGIZE(MRB_FUNCALL_ARGC_MAX) ")");
293
302
  }
294
- else if (argc == 1) {
295
- mrb_value v;
296
- va_list ap;
297
-
298
- va_start(ap, argc);
299
- v = va_arg(ap, mrb_value);
300
- va_end(ap);
301
- return mrb_funcall_argv(mrb, self, mid, 1, &v);
302
- }
303
- else {
304
- mrb_value argv[MRB_FUNCALL_ARGC_MAX];
305
- va_list ap;
306
- int i;
307
-
308
- if (argc > MRB_FUNCALL_ARGC_MAX) {
309
- mrb_raise(mrb, E_ARGUMENT_ERROR, "Too long arguments. (limit=" TO_STR(MRB_FUNCALL_ARGC_MAX) ")");
310
- }
311
303
 
312
- va_start(ap, argc);
313
- for (i = 0; i < argc; i++) {
314
- argv[i] = va_arg(ap, mrb_value);
315
- }
316
- va_end(ap);
317
- return mrb_funcall_argv(mrb, self, mid, argc, argv);
304
+ va_start(ap, argc);
305
+ for (i = 0; i < argc; i++) {
306
+ argv[i] = va_arg(ap, mrb_value);
318
307
  }
308
+ va_end(ap);
309
+ return mrb_funcall_argv(mrb, self, mid, argc, argv);
319
310
  }
320
311
 
321
- mrb_value
322
- mrb_funcall_with_block(mrb_state *mrb, mrb_value self, mrb_sym mid, int argc, mrb_value *argv, mrb_value blk)
312
+ MRB_API mrb_value
313
+ mrb_funcall_with_block(mrb_state *mrb, mrb_value self, mrb_sym mid, mrb_int argc, const mrb_value *argv, mrb_value blk)
323
314
  {
324
315
  mrb_value val;
325
316
 
326
317
  if (!mrb->jmp) {
327
- jmp_buf c_jmp;
318
+ struct mrb_jmpbuf c_jmp;
328
319
  mrb_callinfo *old_ci = mrb->c->ci;
329
320
 
330
- if (setjmp(c_jmp) != 0) { /* error */
321
+ MRB_TRY(&c_jmp) {
322
+ mrb->jmp = &c_jmp;
323
+ /* recursive call */
324
+ val = mrb_funcall_with_block(mrb, self, mid, argc, argv, blk);
325
+ mrb->jmp = 0;
326
+ }
327
+ MRB_CATCH(&c_jmp) { /* error */
331
328
  while (old_ci != mrb->c->ci) {
332
- mrb->c->stack = mrb->c->stbase + mrb->c->ci->stackidx;
329
+ mrb->c->stack = mrb->c->ci->stackent;
333
330
  cipop(mrb);
334
331
  }
335
332
  mrb->jmp = 0;
336
333
  val = mrb_obj_value(mrb->exc);
337
334
  }
338
- else {
339
- mrb->jmp = &c_jmp;
340
- /* recursive call */
341
- val = mrb_funcall_with_block(mrb, self, mid, argc, argv, blk);
342
- mrb->jmp = 0;
343
- }
335
+ MRB_END_EXC(&c_jmp);
344
336
  }
345
337
  else {
346
338
  struct RProc *p;
@@ -367,22 +359,24 @@ mrb_funcall_with_block(mrb_state *mrb, mrb_value self, mrb_sym mid, int argc, mr
367
359
  ci = cipush(mrb);
368
360
  ci->mid = mid;
369
361
  ci->proc = p;
370
- ci->stackidx = mrb->c->stack - mrb->c->stbase;
362
+ ci->stackent = mrb->c->stack;
371
363
  ci->argc = argc;
372
364
  ci->target_class = c;
365
+ mrb->c->stack = mrb->c->stack + n;
373
366
  if (MRB_PROC_CFUNC_P(p)) {
374
367
  ci->nregs = argc + 2;
368
+ stack_extend(mrb, ci->nregs, 0);
375
369
  }
376
370
  else {
377
371
  ci->nregs = p->body.irep->nregs + n;
372
+ stack_extend(mrb, ci->nregs, argc+2);
378
373
  }
379
- mrb->c->stack = mrb->c->stack + n;
380
-
381
- stack_extend(mrb, ci->nregs, 0);
382
374
  mrb->c->stack[0] = self;
383
375
  if (undef) {
384
376
  mrb->c->stack[1] = mrb_symbol_value(undef);
385
- stack_copy(mrb->c->stack+2, argv, argc-1);
377
+ if (argc > 1) {
378
+ stack_copy(mrb->c->stack+2, argv, argc-1);
379
+ }
386
380
  }
387
381
  else if (argc > 0) {
388
382
  stack_copy(mrb->c->stack+1, argv, argc);
@@ -394,7 +388,7 @@ mrb_funcall_with_block(mrb_state *mrb, mrb_value self, mrb_sym mid, int argc, mr
394
388
 
395
389
  ci->acc = CI_ACC_DIRECT;
396
390
  val = p->body.func(mrb, self);
397
- mrb->c->stack = mrb->c->stbase + mrb->c->ci->stackidx;
391
+ mrb->c->stack = mrb->c->ci->stackent;
398
392
  cipop(mrb);
399
393
  mrb_gc_arena_restore(mrb, ai);
400
394
  }
@@ -407,14 +401,179 @@ mrb_funcall_with_block(mrb_state *mrb, mrb_value self, mrb_sym mid, int argc, mr
407
401
  return val;
408
402
  }
409
403
 
410
- mrb_value
411
- mrb_funcall_argv(mrb_state *mrb, mrb_value self, mrb_sym mid, int argc, mrb_value *argv)
404
+ MRB_API mrb_value
405
+ mrb_funcall_argv(mrb_state *mrb, mrb_value self, mrb_sym mid, mrb_int argc, const mrb_value *argv)
412
406
  {
413
407
  return mrb_funcall_with_block(mrb, self, mid, argc, argv, mrb_nil_value());
414
408
  }
415
409
 
410
+ /* 15.3.1.3.4 */
411
+ /* 15.3.1.3.44 */
412
+ /*
413
+ * call-seq:
414
+ * obj.send(symbol [, args...]) -> obj
415
+ * obj.__send__(symbol [, args...]) -> obj
416
+ *
417
+ * Invokes the method identified by _symbol_, passing it any
418
+ * arguments specified. You can use <code>__send__</code> if the name
419
+ * +send+ clashes with an existing method in _obj_.
420
+ *
421
+ * class Klass
422
+ * def hello(*args)
423
+ * "Hello " + args.join(' ')
424
+ * end
425
+ * end
426
+ * k = Klass.new
427
+ * k.send :hello, "gentle", "readers" #=> "Hello gentle readers"
428
+ */
429
+ MRB_API mrb_value
430
+ mrb_f_send(mrb_state *mrb, mrb_value self)
431
+ {
432
+ mrb_sym name;
433
+ mrb_value block, *argv, *regs;
434
+ mrb_int argc, i, len;
435
+ struct RProc *p;
436
+ struct RClass *c;
437
+ mrb_callinfo *ci;
438
+
439
+ mrb_get_args(mrb, "n*&", &name, &argv, &argc, &block);
440
+
441
+ c = mrb_class(mrb, self);
442
+ p = mrb_method_search_vm(mrb, &c, name);
443
+
444
+ if (!p) { /* call method_mising */
445
+ return mrb_funcall_with_block(mrb, self, name, argc, argv, block);
446
+ }
447
+
448
+ ci = mrb->c->ci;
449
+ ci->mid = name;
450
+ ci->target_class = c;
451
+ ci->proc = p;
452
+ regs = mrb->c->stack+1;
453
+ /* remove first symbol from arguments */
454
+ if (ci->argc >= 0) {
455
+ for (i=0,len=ci->argc; i<len; i++) {
456
+ regs[i] = regs[i+1];
457
+ }
458
+ ci->argc--;
459
+ }
460
+ else { /* variable length arguments */
461
+ mrb_ary_shift(mrb, regs[0]);
462
+ }
463
+
464
+ if (MRB_PROC_CFUNC_P(p)) {
465
+ return p->body.func(mrb, self);
466
+ }
467
+
468
+ ci->nregs = p->body.irep->nregs;
469
+ ci = cipush(mrb);
470
+ ci->nregs = 0;
471
+ ci->target_class = 0;
472
+ ci->pc = p->body.irep->iseq;
473
+ ci->stackent = mrb->c->stack;
474
+ ci->acc = 0;
475
+
476
+ return self;
477
+ }
478
+
479
+ static mrb_value
480
+ eval_under(mrb_state *mrb, mrb_value self, mrb_value blk, struct RClass *c)
481
+ {
482
+ struct RProc *p;
483
+ mrb_callinfo *ci;
484
+
485
+ if (mrb_nil_p(blk)) {
486
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "no block given");
487
+ }
488
+ ci = mrb->c->ci;
489
+ if (ci->acc == CI_ACC_DIRECT) {
490
+ return mrb_yield_with_class(mrb, blk, 0, 0, self, c);
491
+ }
492
+ ci->target_class = c;
493
+ p = mrb_proc_ptr(blk);
494
+ ci->proc = p;
495
+ if (MRB_PROC_CFUNC_P(p)) {
496
+ return p->body.func(mrb, self);
497
+ }
498
+ ci->nregs = p->body.irep->nregs;
499
+ ci = cipush(mrb);
500
+ ci->nregs = 0;
501
+ ci->target_class = 0;
502
+ ci->pc = p->body.irep->iseq;
503
+ ci->stackent = mrb->c->stack;
504
+ ci->acc = 0;
505
+
506
+ return self;
507
+ }
508
+
509
+ /* 15.2.2.4.35 */
510
+ /*
511
+ * call-seq:
512
+ * mod.class_eval {| | block } -> obj
513
+ * mod.module_eval {| | block } -> obj
514
+ *
515
+ * Evaluates block in the context of _mod_. This can
516
+ * be used to add methods to a class. <code>module_eval</code> returns
517
+ * the result of evaluating its argument.
518
+ */
519
+ mrb_value
520
+ mrb_mod_module_eval(mrb_state *mrb, mrb_value mod)
521
+ {
522
+ mrb_value a, b;
523
+
524
+ if (mrb_get_args(mrb, "|S&", &a, &b) == 1) {
525
+ mrb_raise(mrb, E_NOTIMP_ERROR, "module_eval/class_eval with string not implemented");
526
+ }
527
+ return eval_under(mrb, mod, b, mrb_class_ptr(mod));
528
+ }
529
+
530
+ /* 15.3.1.3.18 */
531
+ /*
532
+ * call-seq:
533
+ * obj.instance_eval {| | block } -> obj
534
+ *
535
+ * Evaluates the given block,within the context of the receiver (_obj_).
536
+ * In order to set the context, the variable +self+ is set to _obj_ while
537
+ * the code is executing, giving the code access to _obj_'s
538
+ * instance variables. In the version of <code>instance_eval</code>
539
+ * that takes a +String+, the optional second and third
540
+ * parameters supply a filename and starting line number that are used
541
+ * when reporting compilation errors.
542
+ *
543
+ * class KlassWithSecret
544
+ * def initialize
545
+ * @secret = 99
546
+ * end
547
+ * end
548
+ * k = KlassWithSecret.new
549
+ * k.instance_eval { @secret } #=> 99
550
+ */
416
551
  mrb_value
417
- mrb_yield_internal(mrb_state *mrb, mrb_value b, int argc, mrb_value *argv, mrb_value self, struct RClass *c)
552
+ mrb_obj_instance_eval(mrb_state *mrb, mrb_value self)
553
+ {
554
+ mrb_value a, b;
555
+ mrb_value cv;
556
+ struct RClass *c;
557
+
558
+ if (mrb_get_args(mrb, "|S&", &a, &b) == 1) {
559
+ mrb_raise(mrb, E_NOTIMP_ERROR, "instance_eval with string not implemented");
560
+ }
561
+ switch (mrb_type(self)) {
562
+ case MRB_TT_SYMBOL:
563
+ case MRB_TT_FIXNUM:
564
+ case MRB_TT_FLOAT:
565
+ c = 0;
566
+ break;
567
+ default:
568
+ cv = mrb_singleton_class(mrb, self);
569
+ c = mrb_class_ptr(cv);
570
+ break;
571
+ }
572
+ return eval_under(mrb, self, b, c);
573
+ }
574
+
575
+ MRB_API mrb_value
576
+ mrb_yield_with_class(mrb_state *mrb, mrb_value b, mrb_int argc, const mrb_value *argv, mrb_value self, struct RClass *c)
418
577
  {
419
578
  struct RProc *p;
420
579
  mrb_sym mid = mrb->c->ci->mid;
@@ -429,19 +588,20 @@ mrb_yield_internal(mrb_state *mrb, mrb_value b, int argc, mrb_value *argv, mrb_v
429
588
  ci = cipush(mrb);
430
589
  ci->mid = mid;
431
590
  ci->proc = p;
432
- ci->stackidx = mrb->c->stack - mrb->c->stbase;
591
+ ci->stackent = mrb->c->stack;
433
592
  ci->argc = argc;
434
593
  ci->target_class = c;
594
+ ci->acc = CI_ACC_SKIP;
595
+ mrb->c->stack = mrb->c->stack + n;
435
596
  if (MRB_PROC_CFUNC_P(p)) {
436
597
  ci->nregs = argc + 2;
598
+ stack_extend(mrb, ci->nregs, 0);
437
599
  }
438
600
  else {
439
- ci->nregs = p->body.irep->nregs + 1;
601
+ ci->nregs = p->body.irep->nregs;
602
+ stack_extend(mrb, ci->nregs, argc+2);
440
603
  }
441
- ci->acc = CI_ACC_SKIP;
442
- mrb->c->stack = mrb->c->stack + n;
443
604
 
444
- stack_extend(mrb, ci->nregs, 0);
445
605
  mrb->c->stack[0] = self;
446
606
  if (argc > 0) {
447
607
  stack_copy(mrb->c->stack+1, argv, argc);
@@ -450,7 +610,7 @@ mrb_yield_internal(mrb_state *mrb, mrb_value b, int argc, mrb_value *argv, mrb_v
450
610
 
451
611
  if (MRB_PROC_CFUNC_P(p)) {
452
612
  val = p->body.func(mrb, self);
453
- mrb->c->stack = mrb->c->stbase + mrb->c->ci->stackidx;
613
+ mrb->c->stack = mrb->c->ci->stackent;
454
614
  cipop(mrb);
455
615
  }
456
616
  else {
@@ -459,20 +619,20 @@ mrb_yield_internal(mrb_state *mrb, mrb_value b, int argc, mrb_value *argv, mrb_v
459
619
  return val;
460
620
  }
461
621
 
462
- mrb_value
463
- mrb_yield_argv(mrb_state *mrb, mrb_value b, int argc, mrb_value *argv)
622
+ MRB_API mrb_value
623
+ mrb_yield_argv(mrb_state *mrb, mrb_value b, mrb_int argc, const mrb_value *argv)
464
624
  {
465
625
  struct RProc *p = mrb_proc_ptr(b);
466
626
 
467
- return mrb_yield_internal(mrb, b, argc, argv, p->env->stack[0], p->target_class);
627
+ return mrb_yield_with_class(mrb, b, argc, argv, p->env->stack[0], p->target_class);
468
628
  }
469
629
 
470
- mrb_value
630
+ MRB_API mrb_value
471
631
  mrb_yield(mrb_state *mrb, mrb_value b, mrb_value arg)
472
632
  {
473
633
  struct RProc *p = mrb_proc_ptr(b);
474
634
 
475
- return mrb_yield_internal(mrb, b, 1, &arg, p->env->stack[0], p->target_class);
635
+ return mrb_yield_with_class(mrb, b, 1, &arg, p->env->stack[0], p->target_class);
476
636
  }
477
637
 
478
638
  typedef enum {
@@ -491,14 +651,14 @@ localjump_error(mrb_state *mrb, localjump_error_kind kind)
491
651
  mrb_value exc;
492
652
 
493
653
  msg = mrb_str_buf_new(mrb, sizeof(lead) + 7);
494
- mrb_str_buf_cat(mrb, msg, lead, sizeof(lead) - 1);
495
- mrb_str_buf_cat(mrb, msg, kind_str[kind], kind_str_len[kind]);
654
+ mrb_str_cat(mrb, msg, lead, sizeof(lead) - 1);
655
+ mrb_str_cat(mrb, msg, kind_str[kind], kind_str_len[kind]);
496
656
  exc = mrb_exc_new_str(mrb, E_LOCALJUMP_ERROR, msg);
497
657
  mrb->exc = mrb_obj_ptr(exc);
498
658
  }
499
659
 
500
660
  static void
501
- argnum_error(mrb_state *mrb, int num)
661
+ argnum_error(mrb_state *mrb, mrb_int num)
502
662
  {
503
663
  mrb_value exc;
504
664
  mrb_value str;
@@ -524,7 +684,7 @@ argnum_error(mrb_state *mrb, int num)
524
684
  #define CODE_FETCH_HOOK(mrb, irep, pc, regs)
525
685
  #endif
526
686
 
527
- #ifdef __GNUC__
687
+ #if defined __GNUC__ || defined __clang__ || defined __INTEL_COMPILER
528
688
  #define DIRECT_THREADED
529
689
  #endif
530
690
 
@@ -552,7 +712,7 @@ void mrb_gv_val_set(mrb_state *mrb, mrb_sym sym, mrb_value val);
552
712
 
553
713
  #define CALL_MAXARGS 127
554
714
 
555
- mrb_value
715
+ MRB_API mrb_value
556
716
  mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int stack_keep)
557
717
  {
558
718
  /* mrb_assert(mrb_proc_cfunc_p(proc)) */
@@ -563,8 +723,8 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
563
723
  mrb_value *regs = NULL;
564
724
  mrb_code i;
565
725
  int ai = mrb_gc_arena_save(mrb);
566
- jmp_buf *prev_jmp = (jmp_buf *)mrb->jmp;
567
- jmp_buf c_jmp;
726
+ struct mrb_jmpbuf *prev_jmp = mrb->jmp;
727
+ struct mrb_jmpbuf c_jmp;
568
728
 
569
729
  #ifdef DIRECT_THREADED
570
730
  static void *optable[] = {
@@ -591,19 +751,22 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
591
751
  };
592
752
  #endif
593
753
 
754
+ mrb_bool exc_catched = FALSE;
755
+ RETRY_TRY_BLOCK:
594
756
 
595
- if (setjmp(c_jmp) == 0) {
596
- mrb->jmp = &c_jmp;
597
- }
598
- else {
757
+ MRB_TRY(&c_jmp) {
758
+
759
+ if (exc_catched) {
760
+ exc_catched = FALSE;
599
761
  goto L_RAISE;
600
762
  }
763
+ mrb->jmp = &c_jmp;
601
764
  if (!mrb->c->stack) {
602
765
  stack_init(mrb);
603
766
  }
604
767
  stack_extend(mrb, irep->nregs, stack_keep);
605
768
  mrb->c->ci->proc = proc;
606
- mrb->c->ci->nregs = irep->nregs + 1;
769
+ mrb->c->ci->nregs = irep->nregs;
607
770
  regs = mrb->c->stack;
608
771
  regs[0] = self;
609
772
 
@@ -621,18 +784,18 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
621
784
 
622
785
  CASE(OP_LOADL) {
623
786
  /* A Bx R(A) := Pool(Bx) */
624
- regs[GETARG_A(i)] = pool[GETARG_Bx(i)];
787
+ regs[GETARG_A(i)] = pool[GETARG_Bx(i)];
625
788
  NEXT;
626
789
  }
627
790
 
628
791
  CASE(OP_LOADI) {
629
- /* A Bx R(A) := sBx */
792
+ /* A sBx R(A) := sBx */
630
793
  SET_INT_VALUE(regs[GETARG_A(i)], GETARG_sBx(i));
631
794
  NEXT;
632
795
  }
633
796
 
634
797
  CASE(OP_LOADSYM) {
635
- /* A B R(A) := Sym(B) */
798
+ /* A Bx R(A) := Syms(Bx) */
636
799
  SET_SYM_VALUE(regs[GETARG_A(i)], syms[GETARG_Bx(i)]);
637
800
  NEXT;
638
801
  }
@@ -656,13 +819,13 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
656
819
  }
657
820
 
658
821
  CASE(OP_GETGLOBAL) {
659
- /* A B R(A) := getglobal(Sym(B)) */
822
+ /* A Bx R(A) := getglobal(Syms(Bx)) */
660
823
  regs[GETARG_A(i)] = mrb_gv_get(mrb, syms[GETARG_Bx(i)]);
661
824
  NEXT;
662
825
  }
663
826
 
664
827
  CASE(OP_SETGLOBAL) {
665
- /* setglobal(Sym(b), R(A)) */
828
+ /* setglobal(Syms(Bx), R(A)) */
666
829
  mrb_gv_set(mrb, syms[GETARG_Bx(i)], regs[GETARG_A(i)]);
667
830
  NEXT;
668
831
  }
@@ -686,13 +849,13 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
686
849
  }
687
850
 
688
851
  CASE(OP_SETIV) {
689
- /* ivset(Sym(B),R(A)) */
852
+ /* ivset(Syms(Bx),R(A)) */
690
853
  mrb_vm_iv_set(mrb, syms[GETARG_Bx(i)], regs[GETARG_A(i)]);
691
854
  NEXT;
692
855
  }
693
856
 
694
857
  CASE(OP_GETCV) {
695
- /* A B R(A) := ivget(Sym(B)) */
858
+ /* A Bx R(A) := cvget(Syms(Bx)) */
696
859
  ERR_PC_SET(mrb, pc);
697
860
  regs[GETARG_A(i)] = mrb_vm_cv_get(mrb, syms[GETARG_Bx(i)]);
698
861
  ERR_PC_CLR(mrb);
@@ -700,13 +863,13 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
700
863
  }
701
864
 
702
865
  CASE(OP_SETCV) {
703
- /* ivset(Sym(B),R(A)) */
866
+ /* cvset(Syms(Bx),R(A)) */
704
867
  mrb_vm_cv_set(mrb, syms[GETARG_Bx(i)], regs[GETARG_A(i)]);
705
868
  NEXT;
706
869
  }
707
870
 
708
871
  CASE(OP_GETCONST) {
709
- /* A B R(A) := constget(Sym(B)) */
872
+ /* A Bx R(A) := constget(Syms(Bx)) */
710
873
  mrb_value val;
711
874
 
712
875
  ERR_PC_SET(mrb, pc);
@@ -718,13 +881,13 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
718
881
  }
719
882
 
720
883
  CASE(OP_SETCONST) {
721
- /* A B constset(Sym(B),R(A)) */
884
+ /* A Bx constset(Syms(Bx),R(A)) */
722
885
  mrb_vm_const_set(mrb, syms[GETARG_Bx(i)], regs[GETARG_A(i)]);
723
886
  NEXT;
724
887
  }
725
888
 
726
889
  CASE(OP_GETMCNST) {
727
- /* A B C R(A) := R(C)::Sym(B) */
890
+ /* A Bx R(A) := R(A)::Syms(Bx) */
728
891
  mrb_value val;
729
892
  int a = GETARG_A(i);
730
893
 
@@ -737,7 +900,7 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
737
900
  }
738
901
 
739
902
  CASE(OP_SETMCNST) {
740
- /* A B C R(A+1)::Sym(B) := R(A) */
903
+ /* A Bx R(A+1)::Syms(Bx) := R(A) */
741
904
  int a = GETARG_A(i);
742
905
 
743
906
  mrb_const_set(mrb, regs[a+1], syms[GETARG_Bx(i)], regs[a]);
@@ -763,7 +926,6 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
763
926
 
764
927
  CASE(OP_SETUPVAR) {
765
928
  /* A B C uvset(B,C,R(A)) */
766
- /* A B C R(A) := uvget(B,C) */
767
929
  int up = GETARG_C(i);
768
930
 
769
931
  struct REnv *e = uvenv(mrb, up);
@@ -793,7 +955,7 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
793
955
  }
794
956
 
795
957
  CASE(OP_JMPNOT) {
796
- /* A sBx if R(A) pc+=sBx */
958
+ /* A sBx if !R(A) pc+=sBx */
797
959
  if (!mrb_test(regs[GETARG_A(i)])) {
798
960
  pc += GETARG_sBx(i);
799
961
  JUMP;
@@ -820,6 +982,7 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
820
982
  }
821
983
 
822
984
  CASE(OP_POPERR) {
985
+ /* A A.times{rescue_pop()} */
823
986
  int a = GETARG_A(i);
824
987
 
825
988
  while (a--) {
@@ -864,7 +1027,7 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
864
1027
  }
865
1028
 
866
1029
  CASE(OP_LOADNIL) {
867
- /* A B R(A) := nil */
1030
+ /* A R(A) := nil */
868
1031
  int a = GETARG_A(i);
869
1032
 
870
1033
  SET_NIL_VALUE(regs[a]);
@@ -872,12 +1035,13 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
872
1035
  }
873
1036
 
874
1037
  CASE(OP_SENDB) {
1038
+ /* A B C R(A) := call(R(A),Syms(B),R(A+1),...,R(A+C),&R(A+C+1))*/
875
1039
  /* fall through */
876
1040
  };
877
1041
 
878
1042
  L_SEND:
879
1043
  CASE(OP_SEND) {
880
- /* A B C R(A) := call(R(A),Sym(B),R(A+1),... ,R(A+C-1)) */
1044
+ /* A B C R(A) := call(R(A),Syms(B),R(A+1),...,R(A+C)) */
881
1045
  int a = GETARG_A(i);
882
1046
  int n = GETARG_C(i);
883
1047
  struct RProc *m;
@@ -915,19 +1079,8 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
915
1079
  ci = cipush(mrb);
916
1080
  ci->mid = mid;
917
1081
  ci->proc = m;
918
- ci->stackidx = mrb->c->stack - mrb->c->stbase;
919
- if (n == CALL_MAXARGS) {
920
- ci->argc = -1;
921
- }
922
- else {
923
- ci->argc = n;
924
- }
925
- if (c->tt == MRB_TT_ICLASS) {
926
- ci->target_class = c->c;
927
- }
928
- else {
929
- ci->target_class = c;
930
- }
1082
+ ci->stackent = mrb->c->stack;
1083
+ ci->target_class = c;
931
1084
 
932
1085
  ci->pc = pc + 1;
933
1086
  ci->acc = a;
@@ -937,9 +1090,11 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
937
1090
 
938
1091
  if (MRB_PROC_CFUNC_P(m)) {
939
1092
  if (n == CALL_MAXARGS) {
1093
+ ci->argc = -1;
940
1094
  ci->nregs = 3;
941
1095
  }
942
1096
  else {
1097
+ ci->argc = n;
943
1098
  ci->nregs = n + 2;
944
1099
  }
945
1100
  result = m->body.func(mrb, recv);
@@ -950,12 +1105,13 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
950
1105
  ci = mrb->c->ci;
951
1106
  if (!ci->target_class) { /* return from context modifying method (resume/yield) */
952
1107
  if (!MRB_PROC_CFUNC_P(ci[-1].proc)) {
953
- irep = ci[-1].proc->body.irep;
1108
+ proc = ci[-1].proc;
1109
+ irep = proc->body.irep;
954
1110
  pool = irep->pool;
955
1111
  syms = irep->syms;
956
1112
  }
957
1113
  }
958
- regs = mrb->c->stack = mrb->c->stbase + ci->stackidx;
1114
+ regs = mrb->c->stack = ci->stackent;
959
1115
  pc = ci->pc;
960
1116
  cipop(mrb);
961
1117
  JUMP;
@@ -967,11 +1123,13 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
967
1123
  pool = irep->pool;
968
1124
  syms = irep->syms;
969
1125
  ci->nregs = irep->nregs;
970
- if (ci->argc < 0) {
1126
+ if (n == CALL_MAXARGS) {
1127
+ ci->argc = -1;
971
1128
  stack_extend(mrb, (irep->nregs < 3) ? 3 : irep->nregs, 3);
972
1129
  }
973
1130
  else {
974
- stack_extend(mrb, irep->nregs, ci->argc+2);
1131
+ ci->argc = n;
1132
+ stack_extend(mrb, irep->nregs, n+2);
975
1133
  }
976
1134
  regs = mrb->c->stack;
977
1135
  pc = irep->iseq;
@@ -980,7 +1138,7 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
980
1138
  }
981
1139
 
982
1140
  CASE(OP_FSEND) {
983
- /* A B C R(A) := fcall(R(A),Sym(B),R(A+1),... ,R(A+C)) */
1141
+ /* A B C R(A) := fcall(R(A),Syms(B),R(A+1),... ,R(A+C-1)) */
984
1142
  NEXT;
985
1143
  }
986
1144
 
@@ -1010,7 +1168,7 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1010
1168
  if (mrb->exc) goto L_RAISE;
1011
1169
  /* pop stackpos */
1012
1170
  ci = mrb->c->ci;
1013
- regs = mrb->c->stack = mrb->c->stbase + ci->stackidx;
1171
+ regs = mrb->c->stack = ci->stackent;
1014
1172
  regs[ci->acc] = recv;
1015
1173
  pc = ci->pc;
1016
1174
  cipop(mrb);
@@ -1034,17 +1192,17 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1034
1192
  stack_extend(mrb, (irep->nregs < 3) ? 3 : irep->nregs, 3);
1035
1193
  }
1036
1194
  else {
1037
- stack_extend(mrb, irep->nregs, ci->argc+2);
1195
+ stack_extend(mrb, irep->nregs, ci->argc+2);
1038
1196
  }
1039
1197
  regs = mrb->c->stack;
1040
1198
  regs[0] = m->env->stack[0];
1041
- pc = m->body.irep->iseq;
1199
+ pc = irep->iseq;
1042
1200
  JUMP;
1043
1201
  }
1044
1202
  }
1045
1203
 
1046
1204
  CASE(OP_SUPER) {
1047
- /* A B C R(A) := super(R(A+1),... ,R(A+C-1)) */
1205
+ /* A C R(A) := super(R(A+1),... ,R(A+C+1)) */
1048
1206
  mrb_value recv;
1049
1207
  mrb_callinfo *ci = mrb->c->ci;
1050
1208
  struct RProc *m;
@@ -1072,7 +1230,7 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1072
1230
  ci = cipush(mrb);
1073
1231
  ci->mid = mid;
1074
1232
  ci->proc = m;
1075
- ci->stackidx = mrb->c->stack - mrb->c->stbase;
1233
+ ci->stackent = mrb->c->stack;
1076
1234
  if (n == CALL_MAXARGS) {
1077
1235
  ci->argc = -1;
1078
1236
  }
@@ -1087,11 +1245,17 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1087
1245
  mrb->c->stack[0] = recv;
1088
1246
 
1089
1247
  if (MRB_PROC_CFUNC_P(m)) {
1248
+ if (n == CALL_MAXARGS) {
1249
+ ci->nregs = 3;
1250
+ }
1251
+ else {
1252
+ ci->nregs = n + 2;
1253
+ }
1090
1254
  mrb->c->stack[0] = m->body.func(mrb, recv);
1091
1255
  mrb_gc_arena_restore(mrb, ai);
1092
1256
  if (mrb->exc) goto L_RAISE;
1093
1257
  /* pop stackpos */
1094
- regs = mrb->c->stack = mrb->c->stbase + mrb->c->ci->stackidx;
1258
+ regs = mrb->c->stack = mrb->c->ci->stackent;
1095
1259
  cipop(mrb);
1096
1260
  NEXT;
1097
1261
  }
@@ -1109,7 +1273,7 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1109
1273
  stack_extend(mrb, (irep->nregs < 3) ? 3 : irep->nregs, 3);
1110
1274
  }
1111
1275
  else {
1112
- stack_extend(mrb, irep->nregs, ci->argc+2);
1276
+ stack_extend(mrb, irep->nregs, ci->argc+2);
1113
1277
  }
1114
1278
  regs = mrb->c->stack;
1115
1279
  pc = irep->iseq;
@@ -1132,8 +1296,7 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1132
1296
  struct REnv *e = uvenv(mrb, lv-1);
1133
1297
  if (!e) {
1134
1298
  mrb_value exc;
1135
- static const char m[] = "super called outside of method";
1136
- exc = mrb_exc_new(mrb, E_NOMETHOD_ERROR, m, sizeof(m) - 1);
1299
+ exc = mrb_exc_new_str_lit(mrb, E_NOMETHOD_ERROR, "super called outside of method");
1137
1300
  mrb->exc = mrb_obj_ptr(exc);
1138
1301
  goto L_RAISE;
1139
1302
  }
@@ -1155,7 +1318,9 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1155
1318
  }
1156
1319
  regs[a] = mrb_ary_new_capa(mrb, m1+len+m2);
1157
1320
  rest = mrb_ary_ptr(regs[a]);
1158
- stack_copy(rest->ptr, stack, m1);
1321
+ if (m1 > 0) {
1322
+ stack_copy(rest->ptr, stack, m1);
1323
+ }
1159
1324
  if (len > 0) {
1160
1325
  stack_copy(rest->ptr+m1, pp, len);
1161
1326
  }
@@ -1170,17 +1335,17 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1170
1335
  }
1171
1336
 
1172
1337
  CASE(OP_ENTER) {
1173
- /* Ax arg setup according to flags (24=5:5:1:5:5:1:1) */
1338
+ /* Ax arg setup according to flags (23=5:5:1:5:5:1:1) */
1174
1339
  /* number of optional arguments times OP_JMP should follow */
1175
1340
  mrb_aspec ax = GETARG_Ax(i);
1176
- int m1 = (ax>>18)&0x1f;
1177
- int o = (ax>>13)&0x1f;
1178
- int r = (ax>>12)&0x1;
1179
- int m2 = (ax>>7)&0x1f;
1341
+ int m1 = MRB_ASPEC_REQ(ax);
1342
+ int o = MRB_ASPEC_OPT(ax);
1343
+ int r = MRB_ASPEC_REST(ax);
1344
+ int m2 = MRB_ASPEC_POST(ax);
1180
1345
  /* unused
1181
- int k = (ax>>2)&0x1f;
1182
- int kd = (ax>>1)&0x1;
1183
- int b = (ax>>0)& 0x1;
1346
+ int k = MRB_ASPEC_KEY(ax);
1347
+ int kd = MRB_ASPEC_KDICT(ax);
1348
+ int b = MRB_ASPEC_BLOCK(ax);
1184
1349
  */
1185
1350
  int argc = mrb->c->ci->argc;
1186
1351
  mrb_value *argv = regs+1;
@@ -1188,6 +1353,9 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1188
1353
  int len = m1 + o + r + m2;
1189
1354
  mrb_value *blk = &argv[argc < 0 ? 1 : argc];
1190
1355
 
1356
+ if (!mrb_nil_p(*blk) && mrb_type(*blk) != MRB_TT_PROC) {
1357
+ *blk = mrb_convert_type(mrb, *blk, MRB_TT_PROC, "Proc", "to_proc");
1358
+ }
1191
1359
  if (argc < 0) {
1192
1360
  struct RArray *ary = mrb_ary_ptr(regs[1]);
1193
1361
  argv = ary->ptr;
@@ -1203,40 +1371,47 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1203
1371
  }
1204
1372
  }
1205
1373
  else if (len > 1 && argc == 1 && mrb_array_p(argv[0])) {
1374
+ mrb_gc_protect(mrb, argv[0]);
1206
1375
  argc = mrb_ary_ptr(argv[0])->len;
1207
1376
  argv = mrb_ary_ptr(argv[0])->ptr;
1208
1377
  }
1209
1378
  mrb->c->ci->argc = len;
1210
1379
  if (argc < len) {
1380
+ int mlen = m2;
1381
+ if (argc < m1+m2) {
1382
+ if (m1 < argc)
1383
+ mlen = argc - m1;
1384
+ else
1385
+ mlen = 0;
1386
+ }
1211
1387
  regs[len+1] = *blk; /* move block */
1388
+ SET_NIL_VALUE(regs[argc+1]);
1212
1389
  if (argv0 != argv) {
1213
- value_move(&regs[1], argv, argc-m2); /* m1 + o */
1390
+ value_move(&regs[1], argv, argc-mlen); /* m1 + o */
1214
1391
  }
1215
- if (m2) {
1216
- int mlen = m2;
1217
- if (argc-m2 <= m1) {
1218
- mlen = argc - m1;
1219
- }
1392
+ if (mlen) {
1220
1393
  value_move(&regs[len-m2+1], &argv[argc-mlen], mlen);
1221
1394
  }
1222
1395
  if (r) {
1223
1396
  regs[m1+o+1] = mrb_ary_new_capa(mrb, 0);
1224
1397
  }
1225
- if (o == 0) pc++;
1398
+ if (o == 0 || argc < m1+m2) pc++;
1226
1399
  else
1227
1400
  pc += argc - m1 - m2 + 1;
1228
1401
  }
1229
1402
  else {
1403
+ int rnum = 0;
1230
1404
  if (argv0 != argv) {
1231
1405
  regs[len+1] = *blk; /* move block */
1232
1406
  value_move(&regs[1], argv, m1+o);
1233
1407
  }
1234
1408
  if (r) {
1235
- regs[m1+o+1] = mrb_ary_new_from_values(mrb, argc-m1-o-m2, argv+m1+o);
1409
+ rnum = argc-m1-o-m2;
1410
+ regs[m1+o+1] = mrb_ary_new_from_values(mrb, rnum, argv+m1+o);
1236
1411
  }
1237
1412
  if (m2) {
1238
1413
  if (argc-m2 > m1) {
1239
- value_move(&regs[m1+o+r+1], &argv[argc-m2], m2);
1414
+ value_move(&regs[m1+o+r+1], &argv[m1+o+rnum], m2);
1240
1415
  }
1241
1416
  }
1242
1417
  if (argv0 == argv) {
@@ -1248,7 +1423,7 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1248
1423
  }
1249
1424
 
1250
1425
  CASE(OP_KARG) {
1251
- /* A B C R(A) := kdict[Sym(B)]; if C kdict.rm(Sym(B)) */
1426
+ /* A B C R(A) := kdict[Syms(B)]; if C kdict.rm(Syms(B)) */
1252
1427
  /* if C == 2; raise unless kdict.empty? */
1253
1428
  /* OP_JMP should follow to skip init code */
1254
1429
  NEXT;
@@ -1263,7 +1438,7 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1263
1438
  i = MKOP_AB(OP_RETURN, GETARG_A(i), OP_R_NORMAL);
1264
1439
  /* fall through */
1265
1440
  CASE(OP_RETURN) {
1266
- /* A return R(A) */
1441
+ /* A B return R(A) (B=normal,in-block return/break) */
1267
1442
  if (mrb->exc) {
1268
1443
  mrb_callinfo *ci;
1269
1444
  int eidx;
@@ -1283,10 +1458,10 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1283
1458
  while (ci[0].ridx == ci[-1].ridx) {
1284
1459
  cipop(mrb);
1285
1460
  ci = mrb->c->ci;
1286
- mrb->c->stack = mrb->c->stbase + ci[1].stackidx;
1461
+ mrb->c->stack = ci[1].stackent;
1287
1462
  if (ci[1].acc == CI_ACC_SKIP && prev_jmp) {
1288
1463
  mrb->jmp = prev_jmp;
1289
- mrb_longjmp(mrb);
1464
+ MRB_THROW(prev_jmp);
1290
1465
  }
1291
1466
  if (ci > mrb->c->cibase) {
1292
1467
  while (eidx > ci[-1].eidx) {
@@ -1295,17 +1470,28 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1295
1470
  }
1296
1471
  else if (ci == mrb->c->cibase) {
1297
1472
  if (ci->ridx == 0) {
1298
- regs = mrb->c->stack = mrb->c->stbase;
1299
- goto L_STOP;
1473
+ if (mrb->c == mrb->root_c) {
1474
+ regs = mrb->c->stack = mrb->c->stbase;
1475
+ goto L_STOP;
1476
+ }
1477
+ else {
1478
+ struct mrb_context *c = mrb->c;
1479
+
1480
+ mrb->c = c->prev;
1481
+ c->prev = NULL;
1482
+ goto L_RAISE;
1483
+ }
1300
1484
  }
1301
1485
  break;
1302
1486
  }
1303
1487
  }
1304
1488
  L_RESCUE:
1305
- irep = ci->proc->body.irep;
1489
+ if (ci->ridx == 0) goto L_STOP;
1490
+ proc = ci->proc;
1491
+ irep = proc->body.irep;
1306
1492
  pool = irep->pool;
1307
1493
  syms = irep->syms;
1308
- regs = mrb->c->stack = mrb->c->stbase + ci[1].stackidx;
1494
+ regs = mrb->c->stack = ci[1].stackent;
1309
1495
  pc = mrb->c->rescue[--ci->ridx];
1310
1496
  }
1311
1497
  else {
@@ -1315,11 +1501,11 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1315
1501
 
1316
1502
  switch (GETARG_B(i)) {
1317
1503
  case OP_R_RETURN:
1318
- // Fall through to OP_R_NORMAL otherwise
1504
+ /* Fall through to OP_R_NORMAL otherwise */
1319
1505
  if (proc->env && !MRB_PROC_STRICT_P(proc)) {
1320
1506
  struct REnv *e = top_env(mrb, proc);
1321
1507
 
1322
- if (e->cioff < 0) {
1508
+ if (!MRB_ENV_STACK_SHARED_P(e)) {
1323
1509
  localjump_error(mrb, LOCALJUMP_ERROR_RETURN);
1324
1510
  goto L_RAISE;
1325
1511
  }
@@ -1338,7 +1524,7 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1338
1524
  goto L_RAISE;
1339
1525
  }
1340
1526
  if (mrb->c->prev->ci == mrb->c->prev->cibase) {
1341
- mrb_value exc = mrb_exc_new_str(mrb, E_RUNTIME_ERROR, mrb_str_new(mrb, "double resume", 13));
1527
+ mrb_value exc = mrb_exc_new_str_lit(mrb, E_FIBER_ERROR, "double resume");
1342
1528
  mrb->exc = mrb_obj_ptr(exc);
1343
1529
  goto L_RAISE;
1344
1530
  }
@@ -1350,11 +1536,26 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1350
1536
  ci = mrb->c->ci;
1351
1537
  break;
1352
1538
  case OP_R_BREAK:
1353
- if (proc->env->cioff < 0) {
1539
+ if (!proc->env || !MRB_ENV_STACK_SHARED_P(proc->env)) {
1354
1540
  localjump_error(mrb, LOCALJUMP_ERROR_BREAK);
1355
1541
  goto L_RAISE;
1356
1542
  }
1357
- ci = mrb->c->ci = mrb->c->cibase + proc->env->cioff + 1;
1543
+ /* break from fiber block */
1544
+ if (mrb->c->ci == mrb->c->cibase && mrb->c->ci->pc) {
1545
+ struct mrb_context *c = mrb->c;
1546
+
1547
+ mrb->c = c->prev;
1548
+ c->prev = NULL;
1549
+ }
1550
+ ci = mrb->c->ci;
1551
+ mrb->c->ci = mrb->c->cibase + proc->env->cioff + 1;
1552
+ while (ci > mrb->c->ci) {
1553
+ if (ci[-1].acc == CI_ACC_SKIP) {
1554
+ mrb->c->ci = ci;
1555
+ break;
1556
+ }
1557
+ ci--;
1558
+ }
1358
1559
  break;
1359
1560
  default:
1360
1561
  /* cannot happen */
@@ -1366,7 +1567,7 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1366
1567
  cipop(mrb);
1367
1568
  acc = ci->acc;
1368
1569
  pc = ci->pc;
1369
- regs = mrb->c->stack = mrb->c->stbase + ci->stackidx;
1570
+ regs = mrb->c->stack = ci->stackent;
1370
1571
  if (acc == CI_ACC_SKIP) {
1371
1572
  mrb->jmp = prev_jmp;
1372
1573
  return v;
@@ -1383,7 +1584,7 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1383
1584
  }
1384
1585
 
1385
1586
  CASE(OP_TAILCALL) {
1386
- /* A B C return call(R(A),Sym(B),R(A+1),... ,R(A+C-1)) */
1587
+ /* A B C return call(R(A),Syms(B),R(A+1),... ,R(A+C+1)) */
1387
1588
  int a = GETARG_A(i);
1388
1589
  int n = GETARG_C(i);
1389
1590
  struct RProc *m;
@@ -1437,7 +1638,7 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1437
1638
  stack_extend(mrb, (irep->nregs < 3) ? 3 : irep->nregs, 3);
1438
1639
  }
1439
1640
  else {
1440
- stack_extend(mrb, irep->nregs, ci->argc+2);
1641
+ stack_extend(mrb, irep->nregs, ci->argc+2);
1441
1642
  }
1442
1643
  regs = mrb->c->stack;
1443
1644
  pc = irep->iseq;
@@ -1468,18 +1669,9 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1468
1669
  NEXT;
1469
1670
  }
1470
1671
 
1471
- #define attr_i value.i
1472
- #ifdef MRB_NAN_BOXING
1473
- #define attr_f f
1474
- #elif defined(MRB_WORD_BOXING)
1475
- #define attr_f value.fp->f
1476
- #else
1477
- #define attr_f value.f
1478
- #endif
1479
-
1480
1672
  #define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
1481
1673
  #define OP_MATH_BODY(op,v1,v2) do {\
1482
- regs[a].v1 = regs[a].v1 op regs[a+1].v2;\
1674
+ v1(regs[a]) = v1(regs[a]) op v2(regs[a+1]);\
1483
1675
  } while(0)
1484
1676
 
1485
1677
  CASE(OP_ADD) {
@@ -1495,13 +1687,8 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1495
1687
 
1496
1688
  x = mrb_fixnum(regs_a[0]);
1497
1689
  y = mrb_fixnum(regs_a[1]);
1498
- z = x + y;
1499
- #ifdef MRB_WORD_BOXING
1500
- z = (z << MRB_FIXNUM_SHIFT) / (1 << MRB_FIXNUM_SHIFT);
1501
- #endif
1502
- if ((x < 0) != (z < 0) && ((x < 0) ^ (y < 0)) == 0) {
1503
- /* integer overflow */
1504
- SET_FLT_VALUE(mrb, regs_a[0], (mrb_float)x + (mrb_float)y);
1690
+ if (mrb_int_add_overflow(x, y, &z)) {
1691
+ SET_FLOAT_VALUE(mrb, regs_a[0], (mrb_float)x + (mrb_float)y);
1505
1692
  break;
1506
1693
  }
1507
1694
  SET_INT_VALUE(regs[a], z);
@@ -1511,7 +1698,7 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1511
1698
  {
1512
1699
  mrb_int x = mrb_fixnum(regs[a]);
1513
1700
  mrb_float y = mrb_float(regs[a+1]);
1514
- SET_FLT_VALUE(mrb, regs[a], (mrb_float)x + y);
1701
+ SET_FLOAT_VALUE(mrb, regs[a], (mrb_float)x + y);
1515
1702
  }
1516
1703
  break;
1517
1704
  case TYPES2(MRB_TT_FLOAT,MRB_TT_FIXNUM):
@@ -1519,10 +1706,10 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1519
1706
  {
1520
1707
  mrb_float x = mrb_float(regs[a]);
1521
1708
  mrb_int y = mrb_fixnum(regs[a+1]);
1522
- SET_FLT_VALUE(mrb, regs[a], x + y);
1709
+ SET_FLOAT_VALUE(mrb, regs[a], x + y);
1523
1710
  }
1524
1711
  #else
1525
- OP_MATH_BODY(+,attr_f,attr_i);
1712
+ OP_MATH_BODY(+,mrb_float,mrb_fixnum);
1526
1713
  #endif
1527
1714
  break;
1528
1715
  case TYPES2(MRB_TT_FLOAT,MRB_TT_FLOAT):
@@ -1530,10 +1717,10 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1530
1717
  {
1531
1718
  mrb_float x = mrb_float(regs[a]);
1532
1719
  mrb_float y = mrb_float(regs[a+1]);
1533
- SET_FLT_VALUE(mrb, regs[a], x + y);
1720
+ SET_FLOAT_VALUE(mrb, regs[a], x + y);
1534
1721
  }
1535
1722
  #else
1536
- OP_MATH_BODY(+,attr_f,attr_f);
1723
+ OP_MATH_BODY(+,mrb_float,mrb_float);
1537
1724
  #endif
1538
1725
  break;
1539
1726
  case TYPES2(MRB_TT_STRING,MRB_TT_STRING):
@@ -1558,13 +1745,8 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1558
1745
 
1559
1746
  x = mrb_fixnum(regs[a]);
1560
1747
  y = mrb_fixnum(regs[a+1]);
1561
- z = x - y;
1562
- #ifdef MRB_WORD_BOXING
1563
- z = (z << MRB_FIXNUM_SHIFT) / (1 << MRB_FIXNUM_SHIFT);
1564
- #endif
1565
- if (((x < 0) ^ (y < 0)) != 0 && (x < 0) != (z < 0)) {
1566
- /* integer overflow */
1567
- SET_FLT_VALUE(mrb, regs[a], (mrb_float)x - (mrb_float)y);
1748
+ if (mrb_int_sub_overflow(x, y, &z)) {
1749
+ SET_FLOAT_VALUE(mrb, regs[a], (mrb_float)x - (mrb_float)y);
1568
1750
  break;
1569
1751
  }
1570
1752
  SET_INT_VALUE(regs[a], z);
@@ -1574,7 +1756,7 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1574
1756
  {
1575
1757
  mrb_int x = mrb_fixnum(regs[a]);
1576
1758
  mrb_float y = mrb_float(regs[a+1]);
1577
- SET_FLT_VALUE(mrb, regs[a], (mrb_float)x - y);
1759
+ SET_FLOAT_VALUE(mrb, regs[a], (mrb_float)x - y);
1578
1760
  }
1579
1761
  break;
1580
1762
  case TYPES2(MRB_TT_FLOAT,MRB_TT_FIXNUM):
@@ -1582,10 +1764,10 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1582
1764
  {
1583
1765
  mrb_float x = mrb_float(regs[a]);
1584
1766
  mrb_int y = mrb_fixnum(regs[a+1]);
1585
- SET_FLT_VALUE(mrb, regs[a], x - y);
1767
+ SET_FLOAT_VALUE(mrb, regs[a], x - y);
1586
1768
  }
1587
1769
  #else
1588
- OP_MATH_BODY(-,attr_f,attr_i);
1770
+ OP_MATH_BODY(-,mrb_float,mrb_fixnum);
1589
1771
  #endif
1590
1772
  break;
1591
1773
  case TYPES2(MRB_TT_FLOAT,MRB_TT_FLOAT):
@@ -1593,10 +1775,10 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1593
1775
  {
1594
1776
  mrb_float x = mrb_float(regs[a]);
1595
1777
  mrb_float y = mrb_float(regs[a+1]);
1596
- SET_FLT_VALUE(mrb, regs[a], x - y);
1778
+ SET_FLOAT_VALUE(mrb, regs[a], x - y);
1597
1779
  }
1598
1780
  #else
1599
- OP_MATH_BODY(-,attr_f,attr_f);
1781
+ OP_MATH_BODY(-,mrb_float,mrb_float);
1600
1782
  #endif
1601
1783
  break;
1602
1784
  default:
@@ -1613,19 +1795,24 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1613
1795
  switch (TYPES2(mrb_type(regs[a]),mrb_type(regs[a+1]))) {
1614
1796
  case TYPES2(MRB_TT_FIXNUM,MRB_TT_FIXNUM):
1615
1797
  {
1616
- mrb_int x, y, z;
1798
+ mrb_value z;
1617
1799
 
1618
- x = mrb_fixnum(regs[a]);
1619
- y = mrb_fixnum(regs[a+1]);
1620
- z = x * y;
1621
- #ifdef MRB_WORD_BOXING
1622
- z = (z << MRB_FIXNUM_SHIFT) / (1 << MRB_FIXNUM_SHIFT);
1623
- #endif
1624
- if (x != 0 && z/x != y) {
1625
- SET_FLT_VALUE(mrb, regs[a], (mrb_float)x * (mrb_float)y);
1626
- }
1627
- else {
1628
- SET_INT_VALUE(regs[a], z);
1800
+ z = mrb_fixnum_mul(mrb, regs[a], regs[a+1]);
1801
+
1802
+ switch (mrb_type(z)) {
1803
+ case MRB_TT_FIXNUM:
1804
+ {
1805
+ SET_INT_VALUE(regs[a], mrb_fixnum(z));
1806
+ }
1807
+ break;
1808
+ case MRB_TT_FLOAT:
1809
+ {
1810
+ SET_FLOAT_VALUE(mrb, regs[a], mrb_float(z));
1811
+ }
1812
+ break;
1813
+ default:
1814
+ /* cannot happen */
1815
+ break;
1629
1816
  }
1630
1817
  }
1631
1818
  break;
@@ -1633,7 +1820,7 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1633
1820
  {
1634
1821
  mrb_int x = mrb_fixnum(regs[a]);
1635
1822
  mrb_float y = mrb_float(regs[a+1]);
1636
- SET_FLT_VALUE(mrb, regs[a], (mrb_float)x * y);
1823
+ SET_FLOAT_VALUE(mrb, regs[a], (mrb_float)x * y);
1637
1824
  }
1638
1825
  break;
1639
1826
  case TYPES2(MRB_TT_FLOAT,MRB_TT_FIXNUM):
@@ -1641,10 +1828,10 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1641
1828
  {
1642
1829
  mrb_float x = mrb_float(regs[a]);
1643
1830
  mrb_int y = mrb_fixnum(regs[a+1]);
1644
- SET_FLT_VALUE(mrb, regs[a], x * y);
1831
+ SET_FLOAT_VALUE(mrb, regs[a], x * y);
1645
1832
  }
1646
1833
  #else
1647
- OP_MATH_BODY(*,attr_f,attr_i);
1834
+ OP_MATH_BODY(*,mrb_float,mrb_fixnum);
1648
1835
  #endif
1649
1836
  break;
1650
1837
  case TYPES2(MRB_TT_FLOAT,MRB_TT_FLOAT):
@@ -1652,10 +1839,10 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1652
1839
  {
1653
1840
  mrb_float x = mrb_float(regs[a]);
1654
1841
  mrb_float y = mrb_float(regs[a+1]);
1655
- SET_FLT_VALUE(mrb, regs[a], x * y);
1842
+ SET_FLOAT_VALUE(mrb, regs[a], x * y);
1656
1843
  }
1657
1844
  #else
1658
- OP_MATH_BODY(*,attr_f,attr_f);
1845
+ OP_MATH_BODY(*,mrb_float,mrb_float);
1659
1846
  #endif
1660
1847
  break;
1661
1848
  default:
@@ -1674,14 +1861,14 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1674
1861
  {
1675
1862
  mrb_int x = mrb_fixnum(regs[a]);
1676
1863
  mrb_int y = mrb_fixnum(regs[a+1]);
1677
- SET_FLT_VALUE(mrb, regs[a], (mrb_float)x / (mrb_float)y);
1864
+ SET_FLOAT_VALUE(mrb, regs[a], (mrb_float)x / (mrb_float)y);
1678
1865
  }
1679
1866
  break;
1680
1867
  case TYPES2(MRB_TT_FIXNUM,MRB_TT_FLOAT):
1681
1868
  {
1682
1869
  mrb_int x = mrb_fixnum(regs[a]);
1683
1870
  mrb_float y = mrb_float(regs[a+1]);
1684
- SET_FLT_VALUE(mrb, regs[a], (mrb_float)x / y);
1871
+ SET_FLOAT_VALUE(mrb, regs[a], (mrb_float)x / y);
1685
1872
  }
1686
1873
  break;
1687
1874
  case TYPES2(MRB_TT_FLOAT,MRB_TT_FIXNUM):
@@ -1689,10 +1876,10 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1689
1876
  {
1690
1877
  mrb_float x = mrb_float(regs[a]);
1691
1878
  mrb_int y = mrb_fixnum(regs[a+1]);
1692
- SET_FLT_VALUE(mrb, regs[a], x / y);
1879
+ SET_FLOAT_VALUE(mrb, regs[a], x / y);
1693
1880
  }
1694
1881
  #else
1695
- OP_MATH_BODY(/,attr_f,attr_i);
1882
+ OP_MATH_BODY(/,mrb_float,mrb_fixnum);
1696
1883
  #endif
1697
1884
  break;
1698
1885
  case TYPES2(MRB_TT_FLOAT,MRB_TT_FLOAT):
@@ -1700,15 +1887,20 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1700
1887
  {
1701
1888
  mrb_float x = mrb_float(regs[a]);
1702
1889
  mrb_float y = mrb_float(regs[a+1]);
1703
- SET_FLT_VALUE(mrb, regs[a], x / y);
1890
+ SET_FLOAT_VALUE(mrb, regs[a], x / y);
1704
1891
  }
1705
1892
  #else
1706
- OP_MATH_BODY(/,attr_f,attr_f);
1893
+ OP_MATH_BODY(/,mrb_float,mrb_float);
1707
1894
  #endif
1708
1895
  break;
1709
1896
  default:
1710
1897
  goto L_SEND;
1711
1898
  }
1899
+ #ifdef MRB_NAN_BOXING
1900
+ if (isnan(mrb_float(regs[a]))) {
1901
+ regs[a] = mrb_float_value(mrb, mrb_float(regs[a]));
1902
+ }
1903
+ #endif
1712
1904
  NEXT;
1713
1905
  }
1714
1906
 
@@ -1720,26 +1912,25 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1720
1912
  switch (mrb_type(regs[a])) {
1721
1913
  case MRB_TT_FIXNUM:
1722
1914
  {
1723
- mrb_int x = regs[a].attr_i;
1915
+ mrb_int x = mrb_fixnum(regs[a]);
1724
1916
  mrb_int y = GETARG_C(i);
1725
- mrb_int z = x + y;
1917
+ mrb_int z;
1726
1918
 
1727
- if (((x < 0) ^ (y < 0)) == 0 && (x < 0) != (z < 0)) {
1728
- /* integer overflow */
1729
- SET_FLT_VALUE(mrb, regs[a], (mrb_float)x + (mrb_float)y);
1919
+ if (mrb_int_add_overflow(x, y, &z)) {
1920
+ SET_FLOAT_VALUE(mrb, regs[a], (mrb_float)x + (mrb_float)y);
1730
1921
  break;
1731
1922
  }
1732
- regs[a].attr_i = z;
1923
+ SET_INT_VALUE(regs[a], z);
1733
1924
  }
1734
1925
  break;
1735
1926
  case MRB_TT_FLOAT:
1736
1927
  #ifdef MRB_WORD_BOXING
1737
1928
  {
1738
1929
  mrb_float x = mrb_float(regs[a]);
1739
- SET_FLT_VALUE(mrb, regs[a], x + GETARG_C(i));
1930
+ SET_FLOAT_VALUE(mrb, regs[a], x + GETARG_C(i));
1740
1931
  }
1741
1932
  #else
1742
- regs[a].attr_f += GETARG_C(i);
1933
+ mrb_float(regs[a]) += GETARG_C(i);
1743
1934
  #endif
1744
1935
  break;
1745
1936
  default:
@@ -1759,16 +1950,15 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1759
1950
  switch (mrb_type(regs_a[0])) {
1760
1951
  case MRB_TT_FIXNUM:
1761
1952
  {
1762
- mrb_int x = regs_a[0].attr_i;
1953
+ mrb_int x = mrb_fixnum(regs_a[0]);
1763
1954
  mrb_int y = GETARG_C(i);
1764
- mrb_int z = x - y;
1955
+ mrb_int z;
1765
1956
 
1766
- if ((x < 0) != (z < 0) && ((x < 0) ^ (y < 0)) != 0) {
1767
- /* integer overflow */
1768
- SET_FLT_VALUE(mrb, regs_a[0], (mrb_float)x - (mrb_float)y);
1957
+ if (mrb_int_sub_overflow(x, y, &z)) {
1958
+ SET_FLOAT_VALUE(mrb, regs_a[0], (mrb_float)x - (mrb_float)y);
1769
1959
  }
1770
1960
  else {
1771
- regs_a[0].attr_i = z;
1961
+ SET_INT_VALUE(regs_a[0], z);
1772
1962
  }
1773
1963
  }
1774
1964
  break;
@@ -1776,10 +1966,10 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1776
1966
  #ifdef MRB_WORD_BOXING
1777
1967
  {
1778
1968
  mrb_float x = mrb_float(regs[a]);
1779
- SET_FLT_VALUE(mrb, regs[a], x - GETARG_C(i));
1969
+ SET_FLOAT_VALUE(mrb, regs[a], x - GETARG_C(i));
1780
1970
  }
1781
1971
  #else
1782
- regs_a[0].attr_f -= GETARG_C(i);
1972
+ mrb_float(regs_a[0]) -= GETARG_C(i);
1783
1973
  #endif
1784
1974
  break;
1785
1975
  default:
@@ -1790,38 +1980,37 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1790
1980
  NEXT;
1791
1981
  }
1792
1982
 
1793
- #define OP_CMP_BODY(op,v1,v2) do {\
1794
- if (regs[a].v1 op regs[a+1].v2) {\
1795
- SET_TRUE_VALUE(regs[a]);\
1796
- }\
1797
- else {\
1798
- SET_FALSE_VALUE(regs[a]);\
1799
- }\
1800
- } while(0)
1983
+ #define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
1801
1984
 
1802
1985
  #define OP_CMP(op) do {\
1803
- int a = GETARG_A(i);\
1986
+ int result;\
1804
1987
  /* need to check if - is overridden */\
1805
1988
  switch (TYPES2(mrb_type(regs[a]),mrb_type(regs[a+1]))) {\
1806
1989
  case TYPES2(MRB_TT_FIXNUM,MRB_TT_FIXNUM):\
1807
- OP_CMP_BODY(op,attr_i,attr_i);\
1990
+ result = OP_CMP_BODY(op,mrb_fixnum,mrb_fixnum);\
1808
1991
  break;\
1809
1992
  case TYPES2(MRB_TT_FIXNUM,MRB_TT_FLOAT):\
1810
- OP_CMP_BODY(op,attr_i,attr_f);\
1993
+ result = OP_CMP_BODY(op,mrb_fixnum,mrb_float);\
1811
1994
  break;\
1812
1995
  case TYPES2(MRB_TT_FLOAT,MRB_TT_FIXNUM):\
1813
- OP_CMP_BODY(op,attr_f,attr_i);\
1996
+ result = OP_CMP_BODY(op,mrb_float,mrb_fixnum);\
1814
1997
  break;\
1815
1998
  case TYPES2(MRB_TT_FLOAT,MRB_TT_FLOAT):\
1816
- OP_CMP_BODY(op,attr_f,attr_f);\
1999
+ result = OP_CMP_BODY(op,mrb_float,mrb_float);\
1817
2000
  break;\
1818
2001
  default:\
1819
2002
  goto L_SEND;\
1820
2003
  }\
2004
+ if (result) {\
2005
+ SET_TRUE_VALUE(regs[a]);\
2006
+ }\
2007
+ else {\
2008
+ SET_FALSE_VALUE(regs[a]);\
2009
+ }\
1821
2010
  } while(0)
1822
2011
 
1823
2012
  CASE(OP_EQ) {
1824
- /* A B C R(A) := R(A)<R(A+1) (Syms[B]=:==,C=1)*/
2013
+ /* A B C R(A) := R(A)==R(A+1) (Syms[B]=:==,C=1)*/
1825
2014
  int a = GETARG_A(i);
1826
2015
  if (mrb_obj_eq(mrb, regs[a], regs[a+1])) {
1827
2016
  SET_TRUE_VALUE(regs[a]);
@@ -1834,24 +2023,28 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1834
2023
 
1835
2024
  CASE(OP_LT) {
1836
2025
  /* A B C R(A) := R(A)<R(A+1) (Syms[B]=:<,C=1)*/
2026
+ int a = GETARG_A(i);
1837
2027
  OP_CMP(<);
1838
2028
  NEXT;
1839
2029
  }
1840
2030
 
1841
2031
  CASE(OP_LE) {
1842
2032
  /* A B C R(A) := R(A)<=R(A+1) (Syms[B]=:<=,C=1)*/
2033
+ int a = GETARG_A(i);
1843
2034
  OP_CMP(<=);
1844
2035
  NEXT;
1845
2036
  }
1846
2037
 
1847
2038
  CASE(OP_GT) {
1848
- /* A B C R(A) := R(A)<R(A+1) (Syms[B]=:<,C=1)*/
2039
+ /* A B C R(A) := R(A)>R(A+1) (Syms[B]=:>,C=1)*/
2040
+ int a = GETARG_A(i);
1849
2041
  OP_CMP(>);
1850
2042
  NEXT;
1851
2043
  }
1852
2044
 
1853
2045
  CASE(OP_GE) {
1854
- /* A B C R(A) := R(A)<=R(A+1) (Syms[B]=:<=,C=1)*/
2046
+ /* A B C R(A) := R(A)>=R(A+1) (Syms[B]=:>=,C=1)*/
2047
+ int a = GETARG_A(i);
1855
2048
  OP_CMP(>=);
1856
2049
  NEXT;
1857
2050
  }
@@ -1920,7 +2113,7 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1920
2113
  else {
1921
2114
  struct RArray *ary = mrb_ary_ptr(v);
1922
2115
  int len = ary->len;
1923
- int i;
2116
+ int idx;
1924
2117
 
1925
2118
  if (len > pre + post) {
1926
2119
  regs[a++] = mrb_ary_new_from_values(mrb, len - pre - post, ary->ptr+pre);
@@ -1930,12 +2123,12 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1930
2123
  }
1931
2124
  else {
1932
2125
  regs[a++] = mrb_ary_new_capa(mrb, 0);
1933
- for (i=0; i+pre<len; i++) {
1934
- regs[a+i] = ary->ptr[pre+i];
2126
+ for (idx=0; idx+pre<len; idx++) {
2127
+ regs[a+idx] = ary->ptr[pre+idx];
1935
2128
  }
1936
- while (i < post) {
1937
- SET_NIL_VALUE(regs[a+i]);
1938
- i++;
2129
+ while (idx < post) {
2130
+ SET_NIL_VALUE(regs[a+idx]);
2131
+ idx++;
1939
2132
  }
1940
2133
  }
1941
2134
  }
@@ -1982,6 +2175,15 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1982
2175
  }
1983
2176
  else {
1984
2177
  p = mrb_proc_new(mrb, irep->reps[GETARG_b(i)]);
2178
+ if (c & OP_L_METHOD) {
2179
+ if (p->target_class->tt == MRB_TT_SCLASS) {
2180
+ mrb_value klass;
2181
+ klass = mrb_obj_iv_get(mrb,
2182
+ (struct RObject *)p->target_class,
2183
+ mrb_intern_lit(mrb, "__attached__"));
2184
+ p->target_class = mrb_class_ptr(klass);
2185
+ }
2186
+ }
1985
2187
  }
1986
2188
  if (c & OP_L_STRICT) p->flags |= MRB_PROC_STRICT;
1987
2189
  regs[GETARG_A(i)] = mrb_obj_value(p);
@@ -1996,7 +2198,7 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
1996
2198
  }
1997
2199
 
1998
2200
  CASE(OP_CLASS) {
1999
- /* A B R(A) := newclass(R(A),Sym(B),R(A+1)) */
2201
+ /* A B R(A) := newclass(R(A),Syms(B),R(A+1)) */
2000
2202
  struct RClass *c = 0;
2001
2203
  int a = GETARG_A(i);
2002
2204
  mrb_value base, super;
@@ -2014,7 +2216,7 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
2014
2216
  }
2015
2217
 
2016
2218
  CASE(OP_MODULE) {
2017
- /* A B R(A) := newmodule(R(A),Sym(B)) */
2219
+ /* A B R(A) := newmodule(R(A),Syms(B)) */
2018
2220
  struct RClass *c = 0;
2019
2221
  int a = GETARG_A(i);
2020
2222
  mrb_value base;
@@ -2042,7 +2244,7 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
2042
2244
  ci->pc = pc + 1;
2043
2245
  ci->acc = a;
2044
2246
  ci->mid = 0;
2045
- ci->stackidx = mrb->c->stack - mrb->c->stbase;
2247
+ ci->stackent = mrb->c->stack;
2046
2248
  ci->argc = 0;
2047
2249
  ci->target_class = mrb_class_ptr(recv);
2048
2250
 
@@ -2054,11 +2256,12 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
2054
2256
  ci->proc = p;
2055
2257
 
2056
2258
  if (MRB_PROC_CFUNC_P(p)) {
2259
+ ci->nregs = 0;
2057
2260
  mrb->c->stack[0] = p->body.func(mrb, recv);
2058
2261
  mrb_gc_arena_restore(mrb, ai);
2059
2262
  if (mrb->exc) goto L_RAISE;
2060
2263
  /* pop stackpos */
2061
- regs = mrb->c->stack = mrb->c->stbase + mrb->c->ci->stackidx;
2264
+ regs = mrb->c->stack = mrb->c->ci->stackent;
2062
2265
  cipop(mrb);
2063
2266
  NEXT;
2064
2267
  }
@@ -2075,7 +2278,7 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
2075
2278
  }
2076
2279
 
2077
2280
  CASE(OP_METHOD) {
2078
- /* A B R(A).newmethod(Sym(B),R(A+1)) */
2281
+ /* A B R(A).newmethod(Syms(B),R(A+1)) */
2079
2282
  int a = GETARG_A(i);
2080
2283
  struct RClass *c = mrb_class_ptr(regs[a]);
2081
2284
 
@@ -2092,10 +2295,9 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
2092
2295
  }
2093
2296
 
2094
2297
  CASE(OP_TCLASS) {
2095
- /* A B R(A) := target_class */
2298
+ /* A R(A) := target_class */
2096
2299
  if (!mrb->c->ci->target_class) {
2097
- static const char msg[] = "no target class or module";
2098
- mrb_value exc = mrb_exc_new(mrb, E_TYPE_ERROR, msg, sizeof(msg) - 1);
2300
+ mrb_value exc = mrb_exc_new_str_lit(mrb, E_TYPE_ERROR, "no target class or module");
2099
2301
  mrb->exc = mrb_obj_ptr(exc);
2100
2302
  goto L_RAISE;
2101
2303
  }
@@ -2112,11 +2314,15 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
2112
2314
  }
2113
2315
 
2114
2316
  CASE(OP_DEBUG) {
2115
- /* A debug print R(A),R(B),R(C) */
2317
+ /* A B C debug print R(A),R(B),R(C) */
2318
+ #ifdef ENABLE_DEBUG
2319
+ mrb->debug_op_hook(mrb, irep, pc, regs);
2320
+ #else
2116
2321
  #ifdef ENABLE_STDIO
2117
2322
  printf("OP_DEBUG %d %d %d\n", GETARG_A(i), GETARG_B(i), GETARG_C(i));
2118
2323
  #else
2119
2324
  abort();
2325
+ #endif
2120
2326
  #endif
2121
2327
  NEXT;
2122
2328
  }
@@ -2125,10 +2331,10 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
2125
2331
  /* stop VM */
2126
2332
  L_STOP:
2127
2333
  {
2128
- int n = mrb->c->ci->eidx;
2129
-
2130
- while (n--) {
2131
- ecall(mrb, n);
2334
+ int eidx_stop = mrb->c->ci == mrb->c->cibase ? 0 : mrb->c->ci[-1].eidx;
2335
+ int eidx = mrb->c->ci->eidx;
2336
+ while (eidx > eidx_stop) {
2337
+ ecall(mrb, --eidx);
2132
2338
  }
2133
2339
  }
2134
2340
  ERR_PC_CLR(mrb);
@@ -2155,16 +2361,42 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int
2155
2361
  }
2156
2362
  }
2157
2363
  END_DISPATCH;
2364
+
2365
+ }
2366
+ MRB_CATCH(&c_jmp) {
2367
+ exc_catched = TRUE;
2368
+ goto RETRY_TRY_BLOCK;
2369
+ }
2370
+ MRB_END_EXC(&c_jmp);
2158
2371
  }
2159
2372
 
2160
- mrb_value
2373
+ MRB_API mrb_value
2161
2374
  mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
2162
2375
  {
2163
- return mrb_context_run(mrb, proc, self, mrb->c->ci->argc + 2); /* argc + 2 (receiver and block) */
2376
+ return mrb_context_run(mrb, proc, self, mrb->c->ci->argc + 2); /* argc + 2 (receiver and block) */
2377
+ }
2378
+
2379
+ MRB_API mrb_value
2380
+ mrb_toplevel_run_keep(mrb_state *mrb, struct RProc *proc, unsigned int stack_keep)
2381
+ {
2382
+ mrb_callinfo *ci;
2383
+ mrb_value v;
2384
+
2385
+ if (!mrb->c->cibase || mrb->c->ci == mrb->c->cibase) {
2386
+ return mrb_context_run(mrb, proc, mrb_top_self(mrb), stack_keep);
2387
+ }
2388
+ ci = cipush(mrb);
2389
+ ci->nregs = 1; /* protect the receiver */
2390
+ ci->acc = CI_ACC_SKIP;
2391
+ ci->target_class = mrb->object_class;
2392
+ v = mrb_context_run(mrb, proc, mrb_top_self(mrb), stack_keep);
2393
+ cipop(mrb);
2394
+
2395
+ return v;
2164
2396
  }
2165
2397
 
2166
- void
2167
- mrb_longjmp(mrb_state *mrb)
2398
+ MRB_API mrb_value
2399
+ mrb_toplevel_run(mrb_state *mrb, struct RProc *proc)
2168
2400
  {
2169
- longjmp(*(jmp_buf*)mrb->jmp, 1);
2401
+ return mrb_toplevel_run_keep(mrb, proc, 0);
2170
2402
  }