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,1781 +0,0 @@
1
- //"use strict";
2
-
3
- // Analyze intertype data. Calculates things that are necessary in order
4
- // to do the final conversion into JavaScript later, for example,
5
- // properties of variables, loop structures of functions, etc.
6
-
7
- var VAR_NATIVE = 'native';
8
- var VAR_NATIVIZED = 'nativized';
9
- var VAR_EMULATED = 'emulated';
10
-
11
- var ENTRY_IDENT = toNiceIdent('%0');
12
-
13
- function recomputeLines(func) {
14
- func.lines = func.labels.map(function(label) { return label.lines }).reduce(concatenator, []);
15
- }
16
-
17
- // Handy sets
18
-
19
- var BRANCH_INVOKE = set('branch', 'invoke');
20
- var LABEL_ENDERS = set('branch', 'return', 'switch');
21
- var SIDE_EFFECT_CAUSERS = set('call', 'invoke', 'atomic');
22
- var UNUNFOLDABLE = set('value', 'structvalue', 'type', 'phiparam');
23
- var SHADOW_FLIP = { i64: 'double', double: 'i64' }; //, i32: 'float', float: 'i32' };
24
-
25
- // Analyzer
26
-
27
- function analyzer(data, sidePass) {
28
- //B.start('analyzer');
29
- var mainPass = !sidePass;
30
-
31
- var item = { items: data };
32
- var data = item;
33
-
34
- var newTypes = {};
35
-
36
- // Gather
37
- // Single-liners
38
- ['globalVariable', 'functionStub', 'unparsedFunction', 'unparsedGlobals', 'unparsedTypes', 'alias'].forEach(function(intertype) {
39
- var temp = splitter(item.items, function(item) { return item.intertype == intertype });
40
- item.items = temp.leftIn;
41
- item[intertype + 's'] = temp.splitOut;
42
- });
43
- var temp = splitter(item.items, function(item) { return item.intertype == 'type' });
44
- item.items = temp.leftIn;
45
- temp.splitOut.forEach(function(type) {
46
- //dprint('types', 'adding defined type: ' + type.name_);
47
- Types.types[type.name_] = type;
48
- newTypes[type.name_] = 1;
49
- if (QUANTUM_SIZE === 1) {
50
- Types.fatTypes[type.name_] = copy(type);
51
- }
52
- });
53
-
54
- // Functions & labels
55
- item.functions = [];
56
- var currLabelFinished = false; // Sometimes LLVM puts a branch in the middle of a label. We need to ignore all lines after that.
57
- item.items.sort(function(a, b) { return a.lineNum - b.lineNum });
58
- for (var i = 0; i < item.items.length; i++) {
59
- var subItem = item.items[i];
60
- assert(subItem.lineNum);
61
- if (subItem.intertype == 'function') {
62
- item.functions.push(subItem);
63
- subItem.endLineNum = null;
64
- subItem.lines = []; // We will fill in the function lines after the legalizer, since it can modify them
65
- subItem.labels = [];
66
- subItem.forceEmulated = false;
67
-
68
- // no explicit 'entry' label in clang on LLVM 2.8 - most of the time, but not all the time! - so we add one if necessary
69
- if (item.items[i+1].intertype !== 'label') {
70
- item.items.splice(i+1, 0, {
71
- intertype: 'label',
72
- ident: ENTRY_IDENT,
73
- lineNum: subItem.lineNum + '.5'
74
- });
75
- }
76
- } else if (subItem.intertype == 'functionEnd') {
77
- item.functions.slice(-1)[0].endLineNum = subItem.lineNum;
78
- } else if (subItem.intertype == 'label') {
79
- item.functions.slice(-1)[0].labels.push(subItem);
80
- subItem.lines = [];
81
- currLabelFinished = false;
82
- } else if (item.functions.length > 0 && item.functions.slice(-1)[0].endLineNum === null) {
83
- // Internal line
84
- if (!currLabelFinished) {
85
- item.functions.slice(-1)[0].labels.slice(-1)[0].lines.push(subItem); // If this line fails, perhaps missing a label?
86
- if (subItem.intertype in LABEL_ENDERS) {
87
- currLabelFinished = true;
88
- }
89
- } else {
90
- print('// WARNING: content after a branch in a label, line: ' + subItem.lineNum);
91
- }
92
- } else {
93
- throw 'ERROR: what is this? ' + dump(subItem);
94
- }
95
- }
96
- delete item.items;
97
-
98
- // CastAway - try to remove bitcasts of double<-->i64, which LLVM sometimes generates unnecessarily
99
- // (load a double, convert to i64, use as i64).
100
- // We optimize this by checking if there are such bitcasts. If so we create a shadow
101
- // variable that is of the other type, and use that in the relevant places. (As SSA, this is valid, and
102
- // variable elimination later will remove the double load if it is no longer needed.)
103
- //
104
- // Note that aside from being an optimization, this is needed for correctness in some cases: If code
105
- // assumes it can bitcast a double to an i64 and back and forth without loss, that may be violated
106
- // due to NaN canonicalization.
107
- function castAway() {
108
- if (USE_TYPED_ARRAYS != 2) return;
109
-
110
- item.functions.forEach(function(func) {
111
- var has = false;
112
- func.labels.forEach(function(label) {
113
- var lines = label.lines;
114
- for (var i = 0; i < lines.length; i++) {
115
- var line = lines[i];
116
- if (line.intertype == 'bitcast' && line.type in SHADOW_FLIP) {
117
- has = true;
118
- }
119
- }
120
- });
121
- if (!has) return;
122
- // there are integer<->floating-point bitcasts, create shadows for everything
123
- var shadowed = {};
124
- func.labels.forEach(function(label) {
125
- var lines = label.lines;
126
- var i = 0;
127
- while (i < lines.length) {
128
- var lines = label.lines;
129
- var line = lines[i];
130
- if (line.intertype == 'load' && line.type in SHADOW_FLIP) {
131
- if (line.pointer.intertype != 'value') { i++; continue } // TODO
132
- shadowed[line.assignTo] = 1;
133
- var shadow = line.assignTo + '$$SHADOW';
134
- var flip = SHADOW_FLIP[line.type];
135
- lines.splice(i + 1, 0, { // if necessary this element will be legalized in the next phase
136
- tokens: null,
137
- indent: 2,
138
- lineNum: line.lineNum + 0.5,
139
- assignTo: shadow,
140
- intertype: 'load',
141
- pointerType: flip + '*',
142
- type: flip,
143
- valueType: flip,
144
- pointer: {
145
- intertype: 'value',
146
- ident: line.pointer.ident,
147
- type: flip + '*'
148
- },
149
- align: line.align,
150
- ident: line.ident
151
- });
152
- // note: no need to update func.lines, it is generated in a later pass
153
- i++;
154
- }
155
- i++;
156
- }
157
- });
158
- // use shadows where possible
159
- func.labels.forEach(function(label) {
160
- var lines = label.lines;
161
- for (var i = 0; i < lines.length; i++) {
162
- var line = lines[i];
163
- if (line.intertype == 'bitcast' && line.type in SHADOW_FLIP && line.ident in shadowed) {
164
- var shadow = line.ident + '$$SHADOW';
165
- line.params[0].ident = shadow;
166
- line.params[0].type = line.type;
167
- line.type2 = line.type;
168
- }
169
- }
170
- });
171
- });
172
- }
173
-
174
- // Legalize LLVM unrealistic types into realistic types.
175
- //
176
- // With full LLVM optimizations, it can generate types like i888 which do not exist in
177
- // any actual hardware implementation, but are useful during optimization. LLVM then
178
- // legalizes these types into real ones during code generation. Sadly, there is no LLVM
179
- // IR pass to legalize them, which would have been useful and nice from a design perspective.
180
- // The LLVM community is also not interested in receiving patches to implement that
181
- // functionality, since it would duplicate existing code from the code generation
182
- // component. Therefore, we implement legalization here in Emscripten.
183
- //
184
- // Currently we just legalize completely unrealistic types into bundles of i32s, and just
185
- // the most common instructions that can be involved with such types: load, store, shifts,
186
- // trunc and zext.
187
- function legalizer() {
188
- // Legalization
189
- if (USE_TYPED_ARRAYS == 2) {
190
- function getLegalVars(base, bits, allowLegal) {
191
- bits = bits || 32; // things like pointers are all i32, but show up as 0 bits from getBits
192
- if (allowLegal && bits <= 32) return [{ intertype: 'value', ident: base + ('i' + bits in Runtime.INT_TYPES ? '' : '$0'), bits: bits, type: 'i' + bits }];
193
- if (isNumber(base)) return getLegalLiterals(base, bits);
194
- if (base[0] == '{') {
195
- warnOnce('seeing source of illegal data ' + base + ', likely an inline struct - assuming zeroinit');
196
- return getLegalLiterals('0', bits);
197
- }
198
- var ret = new Array(Math.ceil(bits/32));
199
- var i = 0;
200
- if (base == 'zeroinitializer' || base == 'undef') base = 0;
201
- while (bits > 0) {
202
- ret[i] = { intertype: 'value', ident: base ? base + '$' + i : '0', bits: Math.min(32, bits), type: 'i' + Math.min(32, bits) };
203
- bits -= 32;
204
- i++;
205
- }
206
- return ret;
207
- }
208
- function getLegalLiterals(text, bits) {
209
- var parsed = parseArbitraryInt(text, bits);
210
- var ret = new Array(Math.ceil(bits/32));
211
- var i = 0;
212
- while (bits > 0) {
213
- ret[i] = { intertype: 'value', ident: (parsed[i]|0).toString(), bits: Math.min(32, bits), type: 'i' + Math.min(32, bits) }; // resign all values
214
- bits -= 32;
215
- i++;
216
- }
217
- return ret;
218
- }
219
- function getLegalStructuralParts(value) {
220
- return value.params.slice(0);
221
- }
222
- function getLegalParams(params, bits) {
223
- return params.map(function(param) {
224
- var value = param.value || param;
225
- if (isNumber(value.ident)) {
226
- return getLegalLiterals(value.ident, bits);
227
- } else if (value.intertype == 'structvalue') {
228
- return getLegalStructuralParts(value).map(function(part) {
229
- part.bits = part.type.substr(1); // can be some nested IR, like LLVM calls
230
- return part;
231
- });
232
- } else {
233
- return getLegalVars(value.ident, bits);
234
- }
235
- });
236
- }
237
- // Uses the right factor to multiply line numbers by so that they fit in between
238
- // the line[i] and the line after it
239
- function interpLines(lines, i, toAdd) {
240
- var prev = i >= 0 ? lines[i].lineNum : -1;
241
- var next = (i < lines.length-1) ? lines[i+1].lineNum : (lines[i].lineNum + 0.5);
242
- var factor = (next - prev)/(4*toAdd.length+3);
243
- for (var k = 0; k < toAdd.length; k++) {
244
- toAdd[k].lineNum = prev + ((k+1)*factor);
245
- assert(k == 0 || toAdd[k].lineNum > toAdd[k-1].lineNum);
246
- }
247
- }
248
- function removeAndAdd(lines, i, toAdd) {
249
- var item = lines[i];
250
- interpLines(lines, i, toAdd);
251
- Array.prototype.splice.apply(lines, [i, 1].concat(toAdd));
252
- if (i > 0) assert(lines[i].lineNum > lines[i-1].lineNum);
253
- if (i + toAdd.length < lines.length) assert(lines[i + toAdd.length - 1].lineNum < lines[i + toAdd.length].lineNum);
254
- return toAdd.length;
255
- }
256
- function legalizeFunctionParameters(params) {
257
- var i = 0;
258
- while (i < params.length) {
259
- var param = params[i];
260
- if (param.intertype == 'value' && isIllegalType(param.type)) {
261
- var toAdd = getLegalVars(param.ident, getBits(param.type)).map(function(element) {
262
- return {
263
- intertype: 'value',
264
- type: 'i' + element.bits,
265
- ident: element.ident,
266
- byval: 0
267
- };
268
- });
269
- Array.prototype.splice.apply(params, [i, 1].concat(toAdd));
270
- i += toAdd.length;
271
- continue;
272
- } else if (param.intertype == 'structvalue') {
273
- // 'flatten' out the struct into scalars
274
- var toAdd = param.params;
275
- toAdd.forEach(function(param) {
276
- param.byval = 0;
277
- });
278
- Array.prototype.splice.apply(params, [i, 1].concat(toAdd));
279
- continue; // do not increment i; proceed to process the new params
280
- }
281
- i++;
282
- }
283
- }
284
- function fixUnfolded(item) {
285
- // Unfolded items may need some correction to work properly in the global scope
286
- if (item.intertype in MATHOPS) {
287
- item.op = item.intertype;
288
- item.intertype = 'mathop';
289
- }
290
- }
291
- data.functions.forEach(function(func) {
292
- // Legalize function params
293
- legalizeFunctionParameters(func.params);
294
- // Legalize lines in labels
295
- var tempId = 0;
296
- func.labels.forEach(function(label) {
297
- if (dcheck('legalizer')) dprint('zz legalizing: \n' + dump(label.lines));
298
- var i = 0, bits;
299
- while (i < label.lines.length) {
300
- var item = label.lines[i];
301
- var value = item;
302
- // Check if we need to legalize here, and do some trivial legalization along the way
303
- var isIllegal = false;
304
- walkInterdata(item, function(item) {
305
- if (item.intertype == 'getelementptr' || (item.intertype == 'call' && item.ident in LLVM.INTRINSICS_32)) {
306
- // Turn i64 args into i32
307
- for (var i = 0; i < item.params.length; i++) {
308
- if (item.params[i].type == 'i64') item.params[i].type = 'i32';
309
- }
310
- } else if (item.intertype == 'inttoptr') {
311
- var input = item.params[0];
312
- if (input.type == 'i64') input.type = 'i32'; // inttoptr can only care about 32 bits anyhow since pointers are 32-bit
313
- }
314
- if (isIllegalType(item.valueType) || isIllegalType(item.type)) {
315
- isIllegal = true;
316
- } else if ((item.intertype == 'load' || item.intertype == 'store') && isStructType(item.valueType)) {
317
- isIllegal = true; // storing an entire structure is illegal
318
- } else if (item.intertype == 'mathop' && item.op == 'trunc' && isIllegalType(item.params[1].ident)) { // trunc stores target value in second ident
319
- isIllegal = true;
320
- }
321
- });
322
- if (!isIllegal) {
323
- //if (dcheck('legalizer')) dprint('no need to legalize \n' + dump(item));
324
- i++;
325
- continue;
326
- }
327
- // Unfold this line. If we unfolded, we need to return and process the lines we just
328
- // generated - they may need legalization too
329
- var unfolded = [];
330
- walkAndModifyInterdata(item, function(subItem) {
331
- // Unfold all non-value interitems that we can, and also unfold all numbers (doing the latter
332
- // makes it easier later since we can then assume illegal expressions are always variables
333
- // accessible through ident$x, and not constants we need to parse then and there)
334
- if (subItem != item && (!(subItem.intertype in UNUNFOLDABLE) ||
335
- (subItem.intertype == 'value' && isNumber(subItem.ident) && isIllegalType(subItem.type)))) {
336
- if (item.intertype == 'phi') {
337
- assert(subItem.intertype == 'value' || subItem.intertype == 'structvalue' || subItem.intertype in PARSABLE_LLVM_FUNCTIONS, 'We can only unfold some expressions in phis');
338
- // we must handle this in the phi itself, if we unfold normally it will not be pushed back with the phi
339
- } else {
340
- var tempIdent = '$$etemp$' + (tempId++);
341
- subItem.assignTo = tempIdent;
342
- unfolded.unshift(subItem);
343
- fixUnfolded(subItem);
344
- return { intertype: 'value', ident: tempIdent, type: subItem.type };
345
- }
346
- } else if (subItem.intertype == 'switch' && isIllegalType(subItem.type)) {
347
- subItem.switchLabels.forEach(function(switchLabel) {
348
- if (switchLabel.value[0] != '$') {
349
- var tempIdent = '$$etemp$' + (tempId++);
350
- unfolded.unshift({
351
- assignTo: tempIdent,
352
- intertype: 'value',
353
- ident: switchLabel.value,
354
- type: subItem.type
355
- });
356
- switchLabel.value = tempIdent;
357
- }
358
- });
359
- }
360
- });
361
- if (unfolded.length > 0) {
362
- interpLines(label.lines, i-1, unfolded);
363
- Array.prototype.splice.apply(label.lines, [i, 0].concat(unfolded));
364
- continue; // remain at this index, to unfold newly generated lines
365
- }
366
- // This is an illegal-containing line, and it is unfolded. Legalize it now
367
- dprint('legalizer', 'Legalizing ' + item.intertype + ' at line ' + item.lineNum);
368
- var finalizer = null;
369
- switch (item.intertype) {
370
- case 'store': {
371
- var toAdd = [];
372
- bits = getBits(item.valueType);
373
- var elements = getLegalParams([item.value], bits)[0];
374
- var j = 0;
375
- elements.forEach(function(element) {
376
- var tempVar = '$st$' + (tempId++) + '$' + j;
377
- toAdd.push({
378
- intertype: 'getelementptr',
379
- assignTo: tempVar,
380
- ident: item.pointer.ident,
381
- type: '[0 x i32]*',
382
- params: [
383
- { intertype: 'value', ident: item.pointer.ident, type: '[0 x i32]*' }, // technically a bitcase is needed in llvm, but not for us
384
- { intertype: 'value', ident: '0', type: 'i32' },
385
- { intertype: 'value', ident: j.toString(), type: 'i32' }
386
- ],
387
- });
388
- var actualSizeType = 'i' + element.bits; // The last one may be smaller than 32 bits
389
- toAdd.push({
390
- intertype: 'store',
391
- valueType: actualSizeType,
392
- value: { intertype: 'value', ident: element.ident, type: actualSizeType },
393
- pointer: { intertype: 'value', ident: tempVar, type: actualSizeType + '*' },
394
- ident: tempVar,
395
- pointerType: actualSizeType + '*',
396
- align: item.align,
397
- });
398
- j++;
399
- });
400
- Types.needAnalysis['[0 x i32]'] = 0;
401
- i += removeAndAdd(label.lines, i, toAdd);
402
- continue;
403
- }
404
- // call, return: Return the first 32 bits, the rest are in temp
405
- case 'call': {
406
- var toAdd = [value];
407
- // legalize parameters
408
- legalizeFunctionParameters(value.params);
409
- // legalize return value, if any
410
- var returnType = getReturnType(item.type);
411
- if (value.assignTo && isIllegalType(returnType)) {
412
- bits = getBits(returnType);
413
- var elements = getLegalVars(item.assignTo, bits);
414
- // legalize return value
415
- value.assignTo = elements[0].ident;
416
- for (var j = 1; j < elements.length; j++) {
417
- var element = elements[j];
418
- toAdd.push({
419
- intertype: 'value',
420
- assignTo: element.ident,
421
- type: 'i' + element.bits,
422
- ident: 'tempRet' + (j - 1)
423
- });
424
- assert(j<10); // TODO: dynamically create more than 10 tempRet-s
425
- }
426
- }
427
- i += removeAndAdd(label.lines, i, toAdd);
428
- continue;
429
- }
430
- case 'landingpad': {
431
- // not much to legalize
432
- i++;
433
- continue;
434
- }
435
- case 'return': {
436
- bits = getBits(item.type);
437
- var elements = getLegalVars(item.value.ident, bits);
438
- item.value.ident = '(';
439
- for (var j = 1; j < elements.length; j++) {
440
- item.value.ident += 'tempRet' + (j-1) + '=' + elements[j].ident + ',';
441
- }
442
- item.value.ident += elements[0].ident + ')';
443
- i++;
444
- continue;
445
- }
446
- case 'invoke': {
447
- legalizeFunctionParameters(value.params);
448
- // We can't add lines after this, since invoke already modifies control flow. So we handle the return in invoke
449
- i++;
450
- continue;
451
- }
452
- case 'value': {
453
- bits = getBits(value.type);
454
- var elements = getLegalVars(item.assignTo, bits);
455
- var values = getLegalLiterals(item.ident, bits);
456
- var j = 0;
457
- var toAdd = elements.map(function(element) {
458
- return {
459
- intertype: 'value',
460
- assignTo: element.ident,
461
- type: 'i' + bits,
462
- ident: values[j++].ident
463
- };
464
- });
465
- i += removeAndAdd(label.lines, i, toAdd);
466
- continue;
467
- }
468
- case 'structvalue': {
469
- bits = getBits(value.type);
470
- var elements = getLegalVars(item.assignTo, bits);
471
- var toAdd = [];
472
- for (var j = 0; j < item.params.length; j++) {
473
- toAdd[j] = {
474
- intertype: 'value',
475
- assignTo: elements[j].ident,
476
- type: 'i32',
477
- ident: item.params[j].ident
478
- };
479
- }
480
- i += removeAndAdd(label.lines, i, toAdd);
481
- continue;
482
- }
483
- case 'load': {
484
- bits = getBits(value.valueType);
485
- var elements = getLegalVars(item.assignTo, bits);
486
- var j = 0;
487
- var toAdd = [];
488
- elements.forEach(function(element) {
489
- var tempVar = '$ld$' + (tempId++) + '$' + j;
490
- toAdd.push({
491
- intertype: 'getelementptr',
492
- assignTo: tempVar,
493
- ident: value.pointer.ident,
494
- type: '[0 x i32]*',
495
- params: [
496
- { intertype: 'value', ident: value.pointer.ident, type: '[0 x i32]*' }, // technically bitcast is needed in llvm, but not for us
497
- { intertype: 'value', ident: '0', type: 'i32' },
498
- { intertype: 'value', ident: j.toString(), type: 'i32' }
499
- ]
500
- });
501
- var newItem = {
502
- intertype: 'load',
503
- assignTo: element.ident,
504
- pointerType: 'i32*',
505
- valueType: 'i32',
506
- type: 'i32',
507
- pointer: { intertype: 'value', ident: tempVar, type: 'i32*' },
508
- ident: tempVar,
509
- align: value.align
510
- };
511
- var newItem2 = null;
512
- // The last one may be smaller than 32 bits
513
- if (element.bits < 32) {
514
- newItem.assignTo += '$preadd$';
515
- newItem2 = {
516
- intertype: 'mathop',
517
- op: 'and',
518
- assignTo: element.ident,
519
- type: 'i32',
520
- params: [{
521
- intertype: 'value',
522
- type: 'i32',
523
- ident: newItem.assignTo
524
- }, {
525
- intertype: 'value',
526
- type: 'i32',
527
- ident: (0xffffffff >>> (32 - element.bits)).toString()
528
- }],
529
- };
530
- }
531
- toAdd.push(newItem);
532
- if (newItem2) toAdd.push(newItem2);
533
- j++;
534
- });
535
- Types.needAnalysis['[0 x i32]'] = 0;
536
- i += removeAndAdd(label.lines, i, toAdd);
537
- continue;
538
- }
539
- case 'phi': {
540
- bits = getBits(value.type);
541
- var toAdd = [];
542
- var elements = getLegalVars(item.assignTo, bits);
543
- var j = 0;
544
- var values = getLegalParams(value.params, bits);
545
- elements.forEach(function(element) {
546
- var k = 0;
547
- toAdd.push({
548
- intertype: 'phi',
549
- assignTo: element.ident,
550
- type: 'i' + element.bits,
551
- params: value.params.map(function(param) {
552
- return {
553
- intertype: 'phiparam',
554
- label: param.label,
555
- value: values[k++][j]
556
- };
557
- })
558
- });
559
- j++;
560
- });
561
- i += removeAndAdd(label.lines, i, toAdd);
562
- continue;
563
- }
564
- case 'switch': {
565
- i++;
566
- continue; // special case, handled in makeComparison
567
- }
568
- case 'va_arg': {
569
- assert(value.type == 'i64');
570
- assert(value.value.type == 'i32*', value.value.type);
571
- i += removeAndAdd(label.lines, i, range(2).map(function(x) {
572
- return {
573
- intertype: 'va_arg',
574
- assignTo: value.assignTo + '$' + x,
575
- type: 'i32',
576
- value: {
577
- intertype: 'value',
578
- ident: value.value.ident, // We read twice from the same i32* var, incrementing // + '$' + x,
579
- type: 'i32*'
580
- }
581
- };
582
- }));
583
- continue;
584
- }
585
- case 'extractvalue': { // XXX we assume 32-bit alignment in extractvalue/insertvalue,
586
- // but in theory they can run on packed structs too (see use getStructuralTypePartBits)
587
- // potentially legalize the actual extracted value too if it is >32 bits, not just the extraction in general
588
- var index = item.indexes[0][0].text;
589
- var parts = getStructureTypeParts(item.type);
590
- var indexedType = parts[index];
591
- var targetBits = getBits(indexedType);
592
- var sourceBits = getBits(item.type);
593
- var elements = getLegalVars(item.assignTo, targetBits, true); // possibly illegal
594
- var sourceElements = getLegalVars(item.ident, sourceBits); // definitely illegal
595
- var toAdd = [];
596
- var sourceIndex = 0;
597
- for (var partIndex = 0; partIndex < parts.length; partIndex++) {
598
- if (partIndex == index) {
599
- for (var j = 0; j < elements.length; j++) {
600
- toAdd.push({
601
- intertype: 'value',
602
- assignTo: elements[j].ident,
603
- type: 'i' + elements[j].bits,
604
- ident: sourceElements[sourceIndex+j].ident
605
- });
606
- }
607
- break;
608
- }
609
- sourceIndex += getStructuralTypePartBits(parts[partIndex])/32;
610
- }
611
- i += removeAndAdd(label.lines, i, toAdd);
612
- continue;
613
- }
614
- case 'insertvalue': {
615
- var index = item.indexes[0][0].text; // the modified index
616
- var parts = getStructureTypeParts(item.type);
617
- var indexedType = parts[index];
618
- var indexBits = getBits(indexedType);
619
- var bits = getBits(item.type); // source and target
620
- bits = getBits(value.type);
621
- var toAdd = [];
622
- var elements = getLegalVars(item.assignTo, bits);
623
- var sourceElements = getLegalVars(item.ident, bits);
624
- var indexElements = getLegalVars(item.value.ident, indexBits, true); // possibly legal
625
- var sourceIndex = 0;
626
- for (var partIndex = 0; partIndex < parts.length; partIndex++) {
627
- var currNum = getStructuralTypePartBits(parts[partIndex])/32;
628
- for (var j = 0; j < currNum; j++) {
629
- toAdd.push({
630
- intertype: 'value',
631
- assignTo: elements[sourceIndex+j].ident,
632
- type: 'i' + elements[sourceIndex+j].bits,
633
- ident: partIndex == index ? indexElements[j].ident : sourceElements[sourceIndex+j].ident
634
- });
635
- }
636
- sourceIndex += currNum;
637
- }
638
- i += removeAndAdd(label.lines, i, toAdd);
639
- continue;
640
- }
641
- case 'bitcast': {
642
- var inType = item.type2;
643
- var outType = item.type;
644
- if ((inType in Runtime.INT_TYPES && outType in Runtime.FLOAT_TYPES) ||
645
- (inType in Runtime.FLOAT_TYPES && outType in Runtime.INT_TYPES)) {
646
- i++;
647
- continue; // special case, handled in processMathop
648
- }
649
- // fall through
650
- }
651
- case 'inttoptr': case 'ptrtoint': case 'zext': case 'sext': case 'trunc': case 'ashr': case 'lshr': case 'shl': case 'or': case 'and': case 'xor': {
652
- value = {
653
- op: item.intertype,
654
- variant: item.variant,
655
- type: item.type,
656
- params: item.params
657
- };
658
- // fall through
659
- }
660
- case 'mathop': {
661
- var toAdd = [];
662
- var sourceBits = getBits(value.params[0].type);
663
- // All mathops can be parametrized by how many shifts we do, and how big the source is
664
- var shifts = 0;
665
- var targetBits = sourceBits;
666
- var processor = null;
667
- var signed = false;
668
- switch (value.op) {
669
- case 'ashr': {
670
- signed = true;
671
- // fall through
672
- }
673
- case 'lshr': {
674
- shifts = parseInt(value.params[1].ident);
675
- break;
676
- }
677
- case 'shl': {
678
- shifts = -parseInt(value.params[1].ident);
679
- break;
680
- }
681
- case 'sext': {
682
- signed = true;
683
- // fall through
684
- }
685
- case 'trunc': case 'zext': case 'ptrtoint': {
686
- targetBits = getBits(value.params[1] ? value.params[1].ident : value.type);
687
- break;
688
- }
689
- case 'inttoptr': {
690
- targetBits = 32;
691
- break;
692
- }
693
- case 'bitcast': {
694
- if (!sourceBits) {
695
- // we can be asked to bitcast doubles or such to integers, handle that as best we can (if it's a double that
696
- // was an x86_fp80, this code will likely break when called)
697
- sourceBits = targetBits = Runtime.getNativeTypeSize(value.params[0].type);
698
- warn('legalizing non-integer bitcast on ll #' + item.lineNum);
699
- }
700
- break;
701
- }
702
- case 'select': {
703
- sourceBits = targetBits = getBits(value.params[1].type);
704
- var params = getLegalParams(value.params.slice(1), sourceBits);
705
- processor = function(result, j) {
706
- return {
707
- intertype: 'mathop',
708
- op: 'select',
709
- type: 'i' + params[0][j].bits,
710
- params: [
711
- value.params[0],
712
- { intertype: 'value', ident: params[0][j].ident, type: 'i' + params[0][j].bits },
713
- { intertype: 'value', ident: params[1][j].ident, type: 'i' + params[1][j].bits }
714
- ]
715
- };
716
- };
717
- break;
718
- }
719
- case 'or': case 'and': case 'xor': case 'icmp': {
720
- var otherElements = getLegalVars(value.params[1].ident, sourceBits);
721
- processor = function(result, j) {
722
- return {
723
- intertype: 'mathop',
724
- op: value.op,
725
- variant: value.variant,
726
- type: 'i' + otherElements[j].bits,
727
- params: [
728
- result,
729
- { intertype: 'value', ident: otherElements[j].ident, type: 'i' + otherElements[j].bits }
730
- ]
731
- };
732
- };
733
- if (value.op == 'icmp') {
734
- if (sourceBits == 64) { // handle the i64 case in processMathOp, where we handle full i64 math
735
- i++;
736
- continue;
737
- }
738
- finalizer = function() {
739
- var ident = '';
740
- for (var i = 0; i < targetElements.length; i++) {
741
- if (i > 0) {
742
- switch(value.variant) {
743
- case 'eq': ident += '&'; break;
744
- case 'ne': ident += '|'; break;
745
- default: throw 'unhandleable illegal icmp: ' + value.variant;
746
- }
747
- }
748
- ident += targetElements[i].ident;
749
- }
750
- return {
751
- intertype: 'value',
752
- ident: ident,
753
- type: 'rawJS',
754
- assignTo: item.assignTo
755
- };
756
- }
757
- }
758
- break;
759
- }
760
- case 'add': case 'sub': case 'sdiv': case 'udiv': case 'mul': case 'urem': case 'srem': {
761
- if (sourceBits < 32) {
762
- // when we add illegal types like i24, we must work on the singleton chunks
763
- item.assignTo += '$0';
764
- item.params[0].ident += '$0';
765
- item.params[1].ident += '$0';
766
- }
767
- // fall through
768
- }
769
- case 'uitofp': case 'sitofp': case 'fptosi': case 'fptoui': {
770
- // We cannot do these in parallel chunks of 32-bit operations. We will handle these in processMathop
771
- i++;
772
- continue;
773
- }
774
- default: throw 'Invalid mathop for legalization: ' + [value.op, item.lineNum, dump(item)];
775
- }
776
- // Do the legalization
777
- var sourceElements = getLegalVars(value.params[0].ident, sourceBits, true);
778
- if (!isNumber(shifts)) {
779
- // We can't statically legalize this, do the operation at runtime TODO: optimize
780
- assert(sourceBits == 64, 'TODO: handle nonconstant shifts on != 64 bits');
781
- assert(PRECISE_I64_MATH, 'Must have precise i64 math for non-constant 64-bit shifts');
782
- Types.preciseI64MathUsed = 1;
783
- value.intertype = 'value';
784
- value.ident = makeVarDef(value.assignTo) + '$0=' +
785
- asmCoercion('_bitshift64' + value.op[0].toUpperCase() + value.op.substr(1) + '(' +
786
- asmCoercion(sourceElements[0].ident, 'i32') + ',' +
787
- asmCoercion(sourceElements[1].ident, 'i32') + ',' +
788
- asmCoercion(value.params[1].ident + '$0', 'i32') + ')', 'i32'
789
- ) + ';' +
790
- makeVarDef(value.assignTo) + '$1=tempRet0;';
791
- value.vars = [[value.assignTo + '$0', 'i32'], [value.assignTo + '$1', 'i32']];
792
- value.assignTo = null;
793
- i++;
794
- continue;
795
- }
796
- var targetElements = getLegalVars(item.assignTo, targetBits);
797
- var sign = shifts >= 0 ? 1 : -1;
798
- var shiftOp = shifts >= 0 ? 'shl' : 'lshr';
799
- var shiftOpReverse = shifts >= 0 ? 'lshr' : 'shl';
800
- var whole = shifts >= 0 ? Math.floor(shifts/32) : Math.ceil(shifts/32);
801
- var fraction = Math.abs(shifts % 32);
802
- if (signed) {
803
- var signedFill = {
804
- intertype: 'mathop',
805
- op: 'select',
806
- variant: 's',
807
- type: 'i32',
808
- params: [{
809
- intertype: 'mathop',
810
- op: 'icmp',
811
- variant: 'slt',
812
- type: 'i32',
813
- params: [
814
- { intertype: 'value', ident: sourceElements[sourceElements.length-1].ident, type: 'i' + Math.min(sourceBits, 32) },
815
- { intertype: 'value', ident: '0', type: 'i32' }
816
- ]
817
- },
818
- { intertype: 'value', ident: '-1', type: 'i32' },
819
- { intertype: 'value', ident: '0', type: 'i32' },
820
- ]
821
- };
822
- }
823
- for (var j = 0; j < targetElements.length; j++) {
824
- var inBounds = j + whole >= 0 && j + whole < sourceElements.length;
825
- var result;
826
- if (inBounds || !signed) {
827
- result = {
828
- intertype: 'value',
829
- ident: inBounds ? sourceElements[j + whole].ident : '0',
830
- type: 'i' + Math.min(sourceBits, 32),
831
- };
832
- if (j == 0 && sourceBits < 32) {
833
- // zext sign correction
834
- var result2 = {
835
- intertype: 'mathop',
836
- op: isUnsignedOp(value.op) ? 'zext' : 'sext',
837
- params: [result, {
838
- intertype: 'type',
839
- ident: 'i32',
840
- type: 'i' + sourceBits
841
- }],
842
- type: 'i32'
843
- };
844
- result = result2;
845
- }
846
- } else {
847
- // out of bounds and signed
848
- result = copy(signedFill);
849
- }
850
- if (fraction != 0) {
851
- var other;
852
- var otherInBounds = j + sign + whole >= 0 && j + sign + whole < sourceElements.length;
853
- if (otherInBounds || !signed) {
854
- other = {
855
- intertype: 'value',
856
- ident: otherInBounds ? sourceElements[j + sign + whole].ident : '0',
857
- type: 'i32',
858
- };
859
- } else {
860
- other = copy(signedFill);
861
- }
862
- other = {
863
- intertype: 'mathop',
864
- op: shiftOp,
865
- type: 'i32',
866
- params: [
867
- other,
868
- { intertype: 'value', ident: (32 - fraction).toString(), type: 'i32' }
869
- ]
870
- };
871
- result = {
872
- intertype: 'mathop',
873
- // shifting in 1s from the top is a special case
874
- op: (signed && shifts >= 0 && j + sign + whole >= sourceElements.length) ? 'ashr' : shiftOpReverse,
875
- type: 'i32',
876
- params: [
877
- result,
878
- { intertype: 'value', ident: fraction.toString(), type: 'i32' }
879
- ]
880
- };
881
- result = {
882
- intertype: 'mathop',
883
- op: 'or',
884
- type: 'i32',
885
- params: [
886
- result,
887
- other
888
- ]
889
- }
890
- }
891
- if (targetElements[j].bits < 32 && shifts < 0) {
892
- // truncate bits that fall off the end. This is not needed in most cases, can probably be optimized out
893
- result = {
894
- intertype: 'mathop',
895
- op: 'and',
896
- type: 'i32',
897
- params: [
898
- result,
899
- { intertype: 'value', ident: (Math.pow(2, targetElements[j].bits)-1).toString(), type: 'i32' }
900
- ]
901
- }
902
- }
903
- if (processor) {
904
- result = processor(result, j);
905
- }
906
- result.assignTo = targetElements[j].ident;
907
- toAdd.push(result);
908
- }
909
- if (targetBits <= 32) {
910
- // We are generating a normal legal type here
911
- legalValue = { intertype: 'value', ident: targetElements[0].ident, type: 'i32' };
912
- if (targetBits < 32) {
913
- legalValue = {
914
- intertype: 'mathop',
915
- op: 'and',
916
- type: 'i32',
917
- params: [
918
- legalValue,
919
- { intertype: 'value', ident: (Math.pow(2, targetBits)-1).toString(), type: 'i32' }
920
- ]
921
- }
922
- };
923
- legalValue.assignTo = item.assignTo;
924
- toAdd.push(legalValue);
925
- } else if (finalizer) {
926
- toAdd.push(finalizer());
927
- }
928
- i += removeAndAdd(label.lines, i, toAdd);
929
- continue;
930
- }
931
- }
932
- assert(0, 'Could not legalize illegal line: ' + [item.lineNum, dump(item)]);
933
- }
934
- if (dcheck('legalizer')) dprint('zz legalized: \n' + dump(label.lines));
935
- });
936
- });
937
- }
938
-
939
- // Add function lines to func.lines, after our modifications to the label lines
940
- data.functions.forEach(function(func) {
941
- func.labels.forEach(function(label) {
942
- func.lines = func.lines.concat(label.lines);
943
- });
944
- });
945
- }
946
-
947
- function addTypeInternal(type) {
948
- if (type.length == 1) return;
949
- if (Types.types[type]) return;
950
- if (['internal', 'hidden', 'inbounds', 'void'].indexOf(type) != -1) return;
951
- if (Runtime.isNumberType(type)) return;
952
- dprint('types', 'Adding type: ' + type);
953
-
954
- // 'blocks': [14 x %struct.X] etc. If this is a pointer, we need
955
- // to look at the underlying type - it was not defined explicitly
956
- // anywhere else.
957
- var nonPointing = removeAllPointing(type);
958
- if (Types.types[nonPointing]) return;
959
- var check = /^\[(\d+)\ x\ (.*)\]$/.exec(nonPointing);
960
- if (check) {
961
- var num = parseInt(check[1]);
962
- num = Math.max(num, 1); // [0 x something] is used not for allocations and such of course, but
963
- // for indexing - for an |array of unknown length|, basically. So we
964
- // define the 'type' as having a single field. TODO: Ensure as a sanity
965
- // check that we never allocate with this (either as a child structure
966
- // in the analyzer, or in calcSize in alloca).
967
- var subType = check[2];
968
- addTypeInternal(subType); // needed for anonymous structure definitions (see below)
969
-
970
- var fields = [subType, subType]; // Two, so we get the flatFactor right. We care about the flatFactor, not the size here. see calculateStructAlignment
971
- Types.types[nonPointing] = {
972
- name_: nonPointing,
973
- fields: fields,
974
- lineNum: '?'
975
- };
976
- newTypes[nonPointing] = 1;
977
- // Also add a |[0 x type]| type
978
- var zerod = '[0 x ' + subType + ']';
979
- if (!Types.types[zerod]) {
980
- Types.types[zerod] = {
981
- name_: zerod,
982
- fields: fields,
983
- lineNum: '?'
984
- };
985
- newTypes[zerod] = 1;
986
- }
987
- return;
988
- }
989
-
990
- // anonymous structure definition, for example |{ i32, i8*, void ()*, i32 }|
991
- if (type[0] == '{' || type[0] == '<') {
992
- type = nonPointing;
993
- var packed = type[0] == '<';
994
- var internal = type;
995
- if (packed) {
996
- if (type[1] !== '{') {
997
- // vector type, <4 x float> etc.
998
- var size = getVectorSize(type);
999
- Types.types[type] = {
1000
- name_: type,
1001
- fields: zeros(size).map(function() {
1002
- return getVectorNativeType(type);
1003
- }),
1004
- packed: false,
1005
- flatSize: 4*size,
1006
- lineNum: '?'
1007
- };
1008
- return;
1009
- }
1010
- if (internal[internal.length-1] != '>') {
1011
- warnOnce('ignoring type ' + internal);
1012
- return; // function pointer or such
1013
- }
1014
- internal = internal.substr(1, internal.length-2);
1015
- }
1016
- assert(internal[0] == '{', internal);
1017
- if (internal[internal.length-1] != '}') {
1018
- warnOnce('ignoring type ' + internal);
1019
- return; // function pointer or such
1020
- }
1021
- internal = internal.substr(2, internal.length-4);
1022
- Types.types[type] = {
1023
- name_: type,
1024
- fields: splitTokenList(tokenize(internal)).map(function(segment) {
1025
- return segment[0].text;
1026
- }),
1027
- packed: packed,
1028
- lineNum: '?'
1029
- };
1030
- newTypes[type] = 1;
1031
- return;
1032
- }
1033
-
1034
- if (isPointerType(type)) return;
1035
- if (['['].indexOf(type) != -1) return;
1036
- Types.types[type] = {
1037
- name_: type,
1038
- fields: [ 'i' + (QUANTUM_SIZE*8) ], // a single quantum size
1039
- flatSize: 1,
1040
- lineNum: '?'
1041
- };
1042
- newTypes[type] = 1;
1043
- }
1044
-
1045
- function addType(type) {
1046
- addTypeInternal(type);
1047
- if (QUANTUM_SIZE === 1) {
1048
- Types.flipTypes();
1049
- addTypeInternal(type);
1050
- Types.flipTypes();
1051
- }
1052
- }
1053
-
1054
- // Typevestigator
1055
- function typevestigator() {
1056
- if (sidePass) { // Do not investigate in the main pass - it is only valid to start to do so in the first side pass,
1057
- // which handles type definitions, and later. Doing so before the first side pass will result in
1058
- // making bad guesses about types which are actually defined
1059
- for (var type in Types.needAnalysis) {
1060
- if (type) addType(type);
1061
- }
1062
- Types.needAnalysis = {};
1063
- }
1064
- }
1065
-
1066
- // Type analyzer
1067
- function analyzeTypes(fatTypes) {
1068
- var types = Types.types;
1069
-
1070
- // 'fields' is the raw list of LLVM fields. However, we embed
1071
- // child structures into parent structures, basically like C.
1072
- // So { int, { int, int }, int } would be represented as
1073
- // an Array of 4 ints. getelementptr on the parent would take
1074
- // values 0, 1, 2, where 2 is the entire middle structure.
1075
- // We also need to be careful with getelementptr to child
1076
- // structures - we return a pointer to the same slab, just
1077
- // a different offset. Likewise, need to be careful for
1078
- // getelementptr of 2 (the last int) - it's real index is 4.
1079
- // The benefit of this approach is inheritance -
1080
- // { { ancestor } , etc. } = descendant
1081
- // In this case it is easy to bitcast ancestor to descendant
1082
- // pointers - nothing needs to be done. If the ancestor were
1083
- // a new slab, it would need some pointer to the outer one
1084
- // for casting in that direction.
1085
- // TODO: bitcasts of non-inheritance cases of embedding (not at start)
1086
- var more = true;
1087
- while (more) {
1088
- more = false;
1089
- for (var typeName in newTypes) {
1090
- var type = types[typeName];
1091
- if (type.flatIndexes) continue;
1092
- var ready = true;
1093
- type.fields.forEach(function(field) {
1094
- if (isStructType(field)) {
1095
- if (!types[field]) {
1096
- addType(field);
1097
- ready = false;
1098
- } else {
1099
- if (!types[field].flatIndexes) {
1100
- newTypes[field] = 1;
1101
- ready = false;
1102
- }
1103
- }
1104
- }
1105
- });
1106
- if (!ready) {
1107
- more = true;
1108
- continue;
1109
- }
1110
-
1111
- Runtime.calculateStructAlignment(type);
1112
-
1113
- if (dcheck('types')) dprint('type (fat=' + !!fatTypes + '): ' + type.name_ + ' : ' + JSON.stringify(type.fields));
1114
- if (dcheck('types')) dprint(' has final size of ' + type.flatSize + ', flatting: ' + type.needsFlattening + ' ? ' + (type.flatFactor ? type.flatFactor : JSON.stringify(type.flatIndexes)));
1115
- }
1116
- }
1117
-
1118
- if (QUANTUM_SIZE === 1 && !fatTypes) {
1119
- Types.flipTypes();
1120
- // Fake a quantum size of 4 for fat types. TODO: Might want non-4 for some reason?
1121
- var trueQuantumSize = QUANTUM_SIZE;
1122
- Runtime.QUANTUM_SIZE = 4;
1123
- analyzeTypes(true);
1124
- Runtime.QUANTUM_SIZE = trueQuantumSize;
1125
- Types.flipTypes();
1126
- }
1127
-
1128
- newTypes = null;
1129
- }
1130
-
1131
- // Variable analyzer
1132
- function variableAnalyzer() {
1133
- // Globals
1134
-
1135
- var old = item.globalVariables;
1136
- item.globalVariables = {};
1137
- old.forEach(function(variable) {
1138
- variable.impl = 'emulated'; // All global variables are emulated, for now. Consider optimizing later if useful
1139
- item.globalVariables[variable.ident] = variable;
1140
- });
1141
-
1142
- // Function locals
1143
-
1144
- item.functions.forEach(function(func) {
1145
- func.variables = {};
1146
-
1147
- // LLVM is SSA, so we always have a single assignment/write. We care about
1148
- // the reads/other uses.
1149
-
1150
- // Function parameters
1151
- func.params.forEach(function(param) {
1152
- if (param.intertype !== 'varargs') {
1153
- if (func.variables[param.ident]) warn('cannot have duplicate variable names: ' + param.ident); // toNiceIdent collisions?
1154
- func.variables[param.ident] = {
1155
- ident: param.ident,
1156
- type: param.type,
1157
- origin: 'funcparam',
1158
- lineNum: func.lineNum,
1159
- rawLinesIndex: -1
1160
- };
1161
- }
1162
- });
1163
-
1164
- // Normal variables
1165
- func.lines.forEach(function(item, i) {
1166
- if (item.assignTo) {
1167
- if (func.variables[item.assignTo]) warn('cannot have duplicate variable names: ' + item.assignTo); // toNiceIdent collisions?
1168
- var variable = func.variables[item.assignTo] = {
1169
- ident: item.assignTo,
1170
- type: item.type,
1171
- origin: item.intertype,
1172
- lineNum: item.lineNum,
1173
- rawLinesIndex: i
1174
- };
1175
- if (variable.origin === 'alloca') {
1176
- variable.allocatedNum = item.ident;
1177
- }
1178
- if (variable.origin === 'call') {
1179
- variable.type = getReturnType(variable.type);
1180
- }
1181
- }
1182
- });
1183
-
1184
- if (QUANTUM_SIZE === 1) {
1185
- // Second pass over variables - notice when types are crossed by bitcast
1186
-
1187
- func.lines.forEach(function(item) {
1188
- if (item.assignTo && item.intertype === 'bitcast') {
1189
- // bitcasts are unique in that they convert one pointer to another. We
1190
- // sometimes need to know the original type of a pointer, so we save that.
1191
- //
1192
- // originalType is the type this variable is created from
1193
- // derivedTypes are the types that this variable is cast into
1194
- func.variables[item.assignTo].originalType = item.type2;
1195
-
1196
- if (!isNumber(item.assignTo)) {
1197
- if (!func.variables[item.assignTo].derivedTypes) {
1198
- func.variables[item.assignTo].derivedTypes = [];
1199
- }
1200
- func.variables[item.assignTo].derivedTypes.push(item.type);
1201
- }
1202
- }
1203
- });
1204
- }
1205
-
1206
- // Analyze variable uses
1207
-
1208
- function analyzeVariableUses() {
1209
- dprint('vars', 'Analyzing variables for ' + func.ident + '\n');
1210
-
1211
- for (vname in func.variables) {
1212
- var variable = func.variables[vname];
1213
-
1214
- // Whether the value itself is used. For an int, always yes. For a pointer,
1215
- // we might never use the pointer's value - we might always just store to it /
1216
- // read from it. If so, then we can optimize away the pointer.
1217
- variable.hasValueTaken = false;
1218
-
1219
- variable.pointingLevels = pointingLevels(variable.type);
1220
-
1221
- variable.uses = 0;
1222
- }
1223
-
1224
- // TODO: improve the analysis precision. bitcast, for example, means we take the value, but perhaps we only use it to load/store
1225
- var inNoop = 0;
1226
- func.lines.forEach(function(line) {
1227
- walkInterdata(line, function(item) {
1228
- if (item.intertype == 'noop') inNoop++;
1229
- if (!inNoop) {
1230
- if (item.ident in func.variables) {
1231
- func.variables[item.ident].uses++;
1232
-
1233
- if (item.intertype != 'load' && item.intertype != 'store') {
1234
- func.variables[item.ident].hasValueTaken = true;
1235
- }
1236
- }
1237
- }
1238
- }, function(item) {
1239
- if (item.intertype == 'noop') inNoop--;
1240
- });
1241
- });
1242
-
1243
- //if (dcheck('vars')) dprint('analyzed variables: ' + dump(func.variables));
1244
- }
1245
-
1246
- analyzeVariableUses();
1247
-
1248
- // Decision time
1249
-
1250
- for (vname in func.variables) {
1251
- var variable = func.variables[vname];
1252
- var pointedType = pointingLevels(variable.type) > 0 ? removePointing(variable.type) : null;
1253
- if (variable.origin == 'getelementptr') {
1254
- // Use our implementation that emulates pointers etc.
1255
- // TODO Can we perhaps nativize some of these? However to do so, we need to discover their
1256
- // true types; we have '?' for them now, as they cannot be discovered in the intertyper.
1257
- variable.impl = VAR_EMULATED;
1258
- } else if (variable.origin == 'funcparam') {
1259
- variable.impl = VAR_EMULATED;
1260
- } else if (variable.type == 'i64*' && USE_TYPED_ARRAYS == 2) {
1261
- variable.impl = VAR_EMULATED;
1262
- } else if (MICRO_OPTS && variable.pointingLevels === 0) {
1263
- // A simple int value, can be implemented as a native variable
1264
- variable.impl = VAR_NATIVE;
1265
- } else if (MICRO_OPTS && variable.origin === 'alloca' && !variable.hasValueTaken &&
1266
- variable.allocatedNum === 1 &&
1267
- (Runtime.isNumberType(pointedType) || Runtime.isPointerType(pointedType))) {
1268
- // A pointer to a value which is only accessible through this pointer. Basically
1269
- // a local value on the stack, which nothing fancy is done on. So we can
1270
- // optimize away the pointing altogether, and just have a native variable
1271
- variable.impl = VAR_NATIVIZED;
1272
- } else {
1273
- variable.impl = VAR_EMULATED;
1274
- }
1275
- if (dcheck('vars')) dprint('// var ' + vname + ': ' + JSON.stringify(variable));
1276
- }
1277
- });
1278
- }
1279
-
1280
- // Sign analyzer
1281
- //
1282
- // Analyze our variables and detect their signs. In USE_TYPED_ARRAYS == 2,
1283
- // we can read signed or unsigned values and prevent the need for signing
1284
- // corrections. If on the other hand we are doing corrections anyhow, then
1285
- // we can skip this pass.
1286
- //
1287
- // For each variable that is the result of a Load, we look a little forward
1288
- // to see where it is used. We only care about mathops, since only they
1289
- // need signs.
1290
- //
1291
- function signalyzer() {
1292
- if (USE_TYPED_ARRAYS != 2 || CORRECT_SIGNS == 1) return;
1293
-
1294
- function seekIdent(item, obj) {
1295
- if (item.ident === obj.ident) {
1296
- obj.found++;
1297
- }
1298
- }
1299
-
1300
- function seekMathop(item, obj) {
1301
- if (item.intertype === 'mathop' && obj.found && !obj.decided) {
1302
- if (isUnsignedOp(item.op, item.variant)) {
1303
- obj.unsigned++;
1304
- } else {
1305
- obj.signed++;
1306
- }
1307
- }
1308
- }
1309
-
1310
- item.functions.forEach(function(func) {
1311
- func.lines.forEach(function(line, i) {
1312
- if (line.intertype === 'load') {
1313
- // Floats have no concept of signedness. Mark them as 'signed', which is the default, for which we do nothing
1314
- if (line.type in Runtime.FLOAT_TYPES) {
1315
- line.unsigned = false;
1316
- return;
1317
- }
1318
- // Booleans are always unsigned
1319
- var data = func.variables[line.assignTo];
1320
- if (data.type === 'i1') {
1321
- line.unsigned = true;
1322
- return;
1323
- }
1324
-
1325
- var total = data.uses;
1326
- if (total === 0) return;
1327
- var obj = { ident: line.assignTo, found: 0, unsigned: 0, signed: 0, total: total };
1328
- // in loops with phis, we can also be used *before* we are defined
1329
- var j = i-1, k = i+1;
1330
- while(1) {
1331
- assert(j >= 0 || k < func.lines.length, 'Signalyzer ran out of space to look for sign indications for line ' + line.lineNum);
1332
- if (j >= 0 && walkInterdata(func.lines[j], seekIdent, seekMathop, obj)) break;
1333
- if (k < func.lines.length && walkInterdata(func.lines[k], seekIdent, seekMathop, obj)) break;
1334
- if (obj.total && obj.found >= obj.total) break; // see comment below
1335
- j -= 1;
1336
- k += 1;
1337
- }
1338
-
1339
- // unsigned+signed might be < total, since the same ident can appear multiple times in the same mathop.
1340
- // found can actually be > total, since we currently have the same ident in a GEP (see cubescript test)
1341
- // in the GEP item, and a child item (we have the ident copied onto the GEP item as a convenience).
1342
- // probably not a bug-causer, but FIXME. see also a reference to this above
1343
- // we also leave the loop above potentially early due to this. otherwise, though, we end up scanning the
1344
- // entire function in some cases which is very slow
1345
- assert(obj.found >= obj.total, 'Could not Signalyze line ' + line.lineNum);
1346
- line.unsigned = obj.unsigned > 0;
1347
- dprint('vars', 'Signalyzer: ' + line.assignTo + ' has unsigned == ' + line.unsigned + ' (line ' + line.lineNum + ')');
1348
- }
1349
- });
1350
- });
1351
- }
1352
-
1353
- // Quantum fixer
1354
- //
1355
- // See settings.js for the meaning of QUANTUM_SIZE. The issue we fix here is,
1356
- // to correct the .ll assembly code so that things work with QUANTUM_SIZE=1.
1357
- //
1358
- function quantumFixer() {
1359
- if (QUANTUM_SIZE !== 1) return;
1360
-
1361
- // ptrs: the indexes of parameters that are pointers, whose originalType is what we want
1362
- // bytes: the index of the 'bytes' parameter
1363
- // TODO: malloc, realloc?
1364
- var FIXABLE_CALLS = {
1365
- 'memcpy': { ptrs: [0,1], bytes: 2 },
1366
- 'memmove': { ptrs: [0,1], bytes: 2 },
1367
- 'memset': { ptrs: [0], bytes: 2 },
1368
- 'qsort': { ptrs: [0], bytes: 2 }
1369
- };
1370
-
1371
- function getSize(types, type, fat) {
1372
- if (types[type]) return types[type].flatSize;
1373
- if (fat) {
1374
- Runtime.QUANTUM_SIZE = 4;
1375
- }
1376
- var ret = Runtime.getNativeTypeSize(type);
1377
- if (fat) {
1378
- Runtime.QUANTUM_SIZE = 1;
1379
- }
1380
- return ret;
1381
- }
1382
-
1383
- function getFlatIndexes(types, type) {
1384
- if (types[type]) return types[type].flatIndexes;
1385
- return [0];
1386
- }
1387
-
1388
- item.functions.forEach(function(func) {
1389
- function getOriginalType(param) {
1390
- function get() {
1391
- if (param.intertype === 'value' && !isNumber(param.ident)) {
1392
- if (func.variables[param.ident]) {
1393
- return func.variables[param.ident].originalType || null;
1394
- } else {
1395
- return item.globalVariables[param.ident].originalType;
1396
- }
1397
- } else if (param.intertype === 'bitcast') {
1398
- return param.params[0].type;
1399
- } else if (param.intertype === 'getelementptr') {
1400
- if (param.params[0].type[0] === '[') return param.params[0].type;
1401
- }
1402
- return null;
1403
- }
1404
- var ret = get();
1405
- if (ret && ret[0] === '[') {
1406
- var check = /^\[(\d+)\ x\ (.*)\]\*$/.exec(ret);
1407
- assert(check);
1408
- ret = check[2] + '*';
1409
- }
1410
- return ret;
1411
- }
1412
-
1413
- func.lines.forEach(function(line) {
1414
- // Call
1415
- if (line.intertype === 'call') {
1416
- var funcIdent = LibraryManager.getRootIdent(line.ident.substr(1));
1417
- var fixData = FIXABLE_CALLS[funcIdent];
1418
- if (!fixData) return;
1419
- var ptrs = fixData.ptrs.map(function(ptr) { return line.params[ptr] });
1420
- var bytes = line.params[fixData.bytes].ident;
1421
-
1422
- // Only consider original types. This assumes memcpy always has pointers bitcast to i8*
1423
- var originalTypes = ptrs.map(getOriginalType);
1424
- for (var i = 0; i < originalTypes.length; i++) {
1425
- if (!originalTypes[i]) return;
1426
- }
1427
- originalTypes = originalTypes.map(function(type) { return removePointing(type) });
1428
- var sizes = originalTypes.map(function(type) { return getSize(Types.types, type) });
1429
- var fatSizes = originalTypes.map(function(type) { return getSize(Types.fatTypes, type, true) });
1430
- // The sizes may not be identical, if we copy a descendant class into a parent class. We use
1431
- // the smaller size in that case. However, this may also be a bug, it is hard to tell, hence a warning
1432
- warn(dedup(sizes).length === 1, 'All sizes should probably be identical here: ' + dump(originalTypes) + ':' + dump(sizes) + ':' +
1433
- line.lineNum);
1434
- warn(dedup(fatSizes).length === 1, 'All fat sizes should probably be identical here: ' + dump(originalTypes) + ':' + dump(sizes) + ':' +
1435
- line.lineNum);
1436
- var size = Math.min.apply(null, sizes);
1437
- var fatSize = Math.min.apply(null, fatSizes);
1438
- if (isNumber(bytes)) {
1439
- // Figure out how much to copy.
1440
- var fixedBytes;
1441
- if (bytes % fatSize === 0) {
1442
- fixedBytes = size*(bytes/fatSize);
1443
- } else if (fatSize % bytes === 0 && size % (fatSize/bytes) === 0) {
1444
- // Assume this is a simple array. XXX We can be wrong though! See next TODO
1445
- fixedBytes = size/(fatSize/bytes);
1446
- } else {
1447
- // Just part of a structure. Align them to see how many fields. Err on copying more.
1448
- // TODO: properly generate a complete structure, including nesteds, and calculate on that
1449
- var flatIndexes = getFlatIndexes(Types.types, originalTypes[0]).concat(size);
1450
- var fatFlatIndexes = getFlatIndexes(Types.fatTypes, originalTypes[0]).concat(fatSize);
1451
- var index = 0;
1452
- var left = bytes;
1453
- fixedBytes = 0;
1454
- while (left > 0) {
1455
- left -= fatFlatIndexes[index+1] - fatFlatIndexes[index]; // note: we copy the alignment bytes too, which is unneeded
1456
- fixedBytes += flatIndexes[index+1] - flatIndexes[index];
1457
- }
1458
- }
1459
- line.params[fixData.bytes].ident = fixedBytes;
1460
- } else {
1461
- line.params[fixData.bytes].intertype = 'jsvalue';
1462
- // We have an assertion in library::memcpy() that this is round
1463
- line.params[fixData.bytes].ident = size + '*(' + bytes + '/' + fatSize + ')';
1464
- }
1465
- }
1466
- });
1467
- });
1468
-
1469
- // 2nd part - fix hardcoded constant offsets in global constants
1470
- values(item.globalVariables).forEach(function(variable) {
1471
- function recurse(item) {
1472
- if (item.contents) {
1473
- item.contents.forEach(recurse);
1474
- } else if (item.intertype === 'getelementptr' && item.params[0].intertype === 'bitcast' && item.params[0].type === 'i8*') {
1475
- var originalType = removePointing(item.params[0].params[0].type);
1476
- var fatSize = getSize(Types.fatTypes, originalType, true);
1477
- var slimSize = getSize(Types.types, originalType, false);
1478
- assert(fatSize % slimSize === 0);
1479
- item.params.slice(1).forEach(function(param) {
1480
- if (param.intertype === 'value' && isNumber(param.ident)) {
1481
- var corrected = parseInt(param.ident)/(fatSize/slimSize);
1482
- assert(corrected % 1 === 0);
1483
- param.ident = corrected.toString();
1484
- }
1485
- });
1486
- } else if (item.params) {
1487
- item.params.forEach(recurse);
1488
- }
1489
- }
1490
- if (!variable.external && variable.value) recurse(variable.value);
1491
- });
1492
- }
1493
-
1494
- function operateOnLabels(line, func) {
1495
- function process(item, id) {
1496
- ['label', 'labelTrue', 'labelFalse', 'toLabel', 'unwindLabel', 'defaultLabel'].forEach(function(id) {
1497
- if (item[id]) {
1498
- func(item, id);
1499
- }
1500
- });
1501
- }
1502
- if (line.intertype in BRANCH_INVOKE) {
1503
- process(line);
1504
- } else if (line.intertype == 'switch') {
1505
- process(line);
1506
- line.switchLabels.forEach(process);
1507
- }
1508
- }
1509
-
1510
- // Label analyzer
1511
- function labelAnalyzer() {
1512
- item.functions.forEach(function(func) {
1513
- func.labelsDict = {};
1514
- func.labelIds = {};
1515
- func.labelIdsInverse = {};
1516
- func.labelIdCounter = 1;
1517
- func.labels.forEach(function(label) {
1518
- if (!(label.ident in func.labelIds)) {
1519
- func.labelIds[label.ident] = func.labelIdCounter++;
1520
- func.labelIdsInverse[func.labelIdCounter-1] = label.ident;
1521
- }
1522
- });
1523
- var entryIdent = func.labels[0].ident;
1524
-
1525
- // Minify label ids to numeric ids.
1526
- func.labels.forEach(function(label) {
1527
- label.ident = func.labelIds[label.ident];
1528
- label.lines.forEach(function(line) {
1529
- operateOnLabels(line, function(item, id) {
1530
- item[id] = func.labelIds[item[id]].toString(); // strings, because we will append as we process
1531
- });
1532
- });
1533
- });
1534
-
1535
- func.labels.forEach(function(label) {
1536
- func.labelsDict[label.ident] = label;
1537
- });
1538
-
1539
- // Correct phis
1540
- func.labels.forEach(function(label) {
1541
- label.lines.forEach(function(phi) {
1542
- if (phi.intertype == 'phi') {
1543
- for (var i = 0; i < phi.params.length; i++) {
1544
- phi.params[i].label = func.labelIds[phi.params[i].label];
1545
- if (VERBOSE && !phi.params[i].label) warn('phi refers to nonexistent label on line ' + phi.lineNum);
1546
- }
1547
- }
1548
- });
1549
- });
1550
-
1551
- func.lines.forEach(function(line) {
1552
- if (line.intertype == 'indirectbr') {
1553
- func.forceEmulated = true;
1554
- }
1555
- });
1556
-
1557
- function getActualLabelId(labelId) {
1558
- if (func.labelsDict[labelId]) return labelId;
1559
- // If not present, it must be a surprisingly-named entry (or undefined behavior, in which case, still ok to use the entry)
1560
- labelId = func.labelIds[entryIdent];
1561
- assert(func.labelsDict[labelId]);
1562
- return labelId;
1563
- }
1564
-
1565
- // Basic longjmp support, see library.js setjmp/longjmp
1566
- var setjmp = toNiceIdent('@setjmp');
1567
- func.setjmpTable = null;
1568
- for (var i = 0; i < func.labels.length; i++) {
1569
- var label = func.labels[i];
1570
- for (var j = 0; j < label.lines.length; j++) {
1571
- var line = label.lines[j];
1572
- if ((line.intertype == 'call' || line.intertype == 'invoke') && line.ident == setjmp) {
1573
- if (line.intertype == 'invoke') {
1574
- // setjmp cannot trigger unwinding, so just reduce the invoke to a call + branch
1575
- line.intertype = 'call';
1576
- label.lines.push({
1577
- intertype: 'branch',
1578
- label: line.toLabel,
1579
- lineNum: line.lineNum + 0.01, // XXX legalizing might confuse this
1580
- });
1581
- line.toLabel = line.unwindLabel = -2;
1582
- }
1583
- // split this label into up to the setjmp (including), then a new label for the rest. longjmp will reach the rest
1584
- var oldLabel = label.ident;
1585
- var newLabel = func.labelIdCounter++;
1586
- if (!func.setjmpTable) func.setjmpTable = [];
1587
- func.setjmpTable.push({ oldLabel: oldLabel, newLabel: newLabel, assignTo: line.assignTo });
1588
- func.labels.splice(i+1, 0, {
1589
- intertype: 'label',
1590
- ident: newLabel,
1591
- lineNum: label.lineNum + 0.5,
1592
- lines: label.lines.slice(j+1)
1593
- });
1594
- func.labelsDict[newLabel] = func.labels[i+1];
1595
- label.lines = label.lines.slice(0, j+1);
1596
- label.lines.push({
1597
- intertype: 'branch',
1598
- label: toNiceIdent(newLabel),
1599
- lineNum: line.lineNum + 0.01, // XXX legalizing might confuse this
1600
- });
1601
- // Correct phis
1602
- func.labels.forEach(function(label) {
1603
- label.lines.forEach(function(phi) {
1604
- if (phi.intertype == 'phi') {
1605
- for (var i = 0; i < phi.params.length; i++) {
1606
- var sourceLabelId = getActualLabelId(phi.params[i].label);
1607
- if (sourceLabelId == oldLabel) {
1608
- phi.params[i].label = newLabel;
1609
- }
1610
- }
1611
- }
1612
- });
1613
- });
1614
- }
1615
- }
1616
- }
1617
- if (func.setjmpTable) {
1618
- func.forceEmulated = true;
1619
- recomputeLines(func);
1620
- }
1621
-
1622
- // Properly implement phis, by pushing them back into the branch
1623
- // that leads to here. We will only have the |var| definition in this location.
1624
-
1625
- // First, push phis back
1626
- func.labels.forEach(function(label) {
1627
- label.lines.forEach(function(phi) {
1628
- if (phi.intertype == 'phi') {
1629
- for (var i = 0; i < phi.params.length; i++) {
1630
- var param = phi.params[i];
1631
- if (VERBOSE && !param.label) warn('phi refers to nonexistent label on line ' + phi.lineNum);
1632
- var sourceLabelId = getActualLabelId(param.label);
1633
- if (sourceLabelId) {
1634
- var sourceLabel = func.labelsDict[sourceLabelId];
1635
- var lastLine = sourceLabel.lines.slice(-1)[0];
1636
- assert(lastLine.intertype in LLVM.PHI_REACHERS, 'Only some can lead to labels with phis:' + [func.ident, label.ident, lastLine.intertype]);
1637
- if (!lastLine.phi) {
1638
- lastLine.phi = true;
1639
- assert(!lastLine.dependent);
1640
- lastLine.dependent = {
1641
- intertype: 'phiassigns',
1642
- params: []
1643
- };
1644
- };
1645
- lastLine.dependent.params.push({
1646
- intertype: 'phiassign',
1647
- ident: phi.assignTo,
1648
- value: param.value,
1649
- targetLabel: label.ident
1650
- });
1651
- }
1652
- }
1653
- // The assign to phi is now just a var
1654
- phi.intertype = 'var';
1655
- phi.ident = phi.assignTo;
1656
- phi.assignTo = null;
1657
- }
1658
- });
1659
- });
1660
-
1661
- if (func.ident in NECESSARY_BLOCKADDRS) {
1662
- Functions.blockAddresses[func.ident] = {};
1663
- for (var needed in NECESSARY_BLOCKADDRS[func.ident]) {
1664
- assert(needed in func.labelIds);
1665
- Functions.blockAddresses[func.ident][needed] = func.labelIds[needed];
1666
- }
1667
- }
1668
- });
1669
- }
1670
-
1671
- // Stack analyzer - calculate the base stack usage
1672
- function stackAnalyzer() {
1673
- data.functions.forEach(function(func) {
1674
- var lines = func.labels[0].lines;
1675
- var hasAlloca = false;
1676
- for (var i = 0; i < lines.length; i++) {
1677
- var item = lines[i];
1678
- if (!item.assignTo || item.intertype != 'alloca' || !isNumber(item.ident)) break;
1679
- item.allocatedSize = func.variables[item.assignTo].impl === VAR_EMULATED ?
1680
- calcAllocatedSize(item.allocatedType)*item.ident: 0;
1681
- hasAlloca = true;
1682
- if (USE_TYPED_ARRAYS === 2) {
1683
- // We need to keep the stack aligned
1684
- item.allocatedSize = Runtime.forceAlign(item.allocatedSize, Runtime.STACK_ALIGN);
1685
- }
1686
- }
1687
- var index = 0;
1688
- for (var i = 0; i < lines.length; i++) {
1689
- var item = lines[i];
1690
- if (!item.assignTo || item.intertype != 'alloca' || !isNumber(item.ident)) break;
1691
- item.allocatedIndex = index;
1692
- index += item.allocatedSize;
1693
- delete item.allocatedSize;
1694
- }
1695
- func.initialStack = index;
1696
- func.otherStackAllocations = false;
1697
- if (func.initialStack === 0 && hasAlloca) func.otherStackAllocations = true; // a single alloca of zero still requires us to emit stack support code
1698
- while (func.initialStack == 0) { // one-time loop with possible abort in the middle
1699
- // If there is no obvious need for stack management, perhaps we don't need it
1700
- // (we try to optimize that way with SKIP_STACK_IN_SMALL). However,
1701
- // we need to note if stack allocations other than initial allocs can happen here
1702
- // If so, we need to rewind the stack when we leave.
1703
-
1704
- // By-value params are causes of additional allocas (although we could in theory make them normal allocas too)
1705
- func.params.forEach(function(param) {
1706
- if (param.byVal) {
1707
- func.otherStackAllocations = true;
1708
- }
1709
- });
1710
- if (func.otherStackAllocations) break;
1711
-
1712
- // Allocas
1713
- var finishedInitial = false;
1714
-
1715
- lines = func.lines; // We need to consider all the function lines now, not just the first label
1716
-
1717
- for (var i = 0; i < lines.length; i++) {
1718
- var item = lines[i];
1719
- if (!finishedInitial && (!item.assignTo || item.intertype != 'alloca' || !isNumber(item.ident))) {
1720
- finishedInitial = true;
1721
- }
1722
- if (item.intertype == 'alloca' && finishedInitial) {
1723
- func.otherStackAllocations = true;
1724
- break;
1725
- }
1726
- }
1727
- if (func.otherStackAllocations) break;
1728
-
1729
- // Varargs
1730
- for (var i = 0; i < lines.length; i++) {
1731
- var item = lines[i];
1732
- if (item.intertype == 'call' && isVarArgsFunctionType(item.type)) {
1733
- func.otherStackAllocations = true;
1734
- break;
1735
- }
1736
- }
1737
- if (func.otherStackAllocations) break;
1738
-
1739
- break;
1740
- }
1741
- });
1742
- }
1743
-
1744
- // ReLooper - reconstruct nice loops, as much as possible
1745
- // This is now done in the jsify stage, using compiled relooper2
1746
- function relooper() {
1747
- function makeBlock(labels, entries, labelsDict, forceEmulated) {
1748
- if (labels.length == 0) return null;
1749
- dprint('relooping', 'prelooping: ' + entries + ',' + labels.length + ' labels');
1750
- assert(entries && entries[0]); // need at least 1 entry
1751
-
1752
- var emulated = {
1753
- type: 'emulated',
1754
- id: 'B',
1755
- labels: labels,
1756
- entries: entries.slice(0)
1757
- };
1758
- return emulated;
1759
- }
1760
- item.functions.forEach(function(func) {
1761
- dprint('relooping', "// relooping function: " + func.ident);
1762
- func.block = makeBlock(func.labels, [func.labels[0].ident], func.labelsDict, func.forceEmulated);
1763
- });
1764
- }
1765
-
1766
- // main
1767
- castAway();
1768
- legalizer();
1769
- typevestigator();
1770
- analyzeTypes();
1771
- variableAnalyzer();
1772
- signalyzer();
1773
- quantumFixer();
1774
- labelAnalyzer();
1775
- stackAnalyzer();
1776
- relooper();
1777
-
1778
- //B.stop('analyzer');
1779
- return item;
1780
- }
1781
-