porffor 0.1.0 → 0.2.0-77e30e8

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 (658) hide show
  1. package/README.md +184 -204
  2. package/compiler/2c.js +377 -0
  3. package/compiler/builtins/base64.js +91 -91
  4. package/compiler/builtins.js +19 -13
  5. package/compiler/codeGen.js +1313 -418
  6. package/compiler/decompile.js +35 -9
  7. package/compiler/embedding.js +9 -5
  8. package/compiler/encoding.js +8 -2
  9. package/compiler/index.js +55 -17
  10. package/compiler/log.js +15 -0
  11. package/compiler/opt.js +357 -258
  12. package/compiler/parse.js +24 -1
  13. package/compiler/prototype.js +263 -56
  14. package/compiler/sections.js +51 -8
  15. package/compiler/wasmSpec.js +3 -0
  16. package/compiler/wrap.js +21 -7
  17. package/package.json +6 -1
  18. package/porf.cmd +1 -1
  19. package/rhemyn/README.md +37 -0
  20. package/rhemyn/compile.js +214 -0
  21. package/rhemyn/parse.js +321 -0
  22. package/rhemyn/test/parse.js +59 -0
  23. package/runner/index.js +54 -31
  24. package/runner/info.js +37 -2
  25. package/runner/profile.js +1 -2
  26. package/runner/repl.js +13 -11
  27. package/runner/results.json +1 -0
  28. package/runner/transform.js +15 -36
  29. package/runner/version.js +10 -0
  30. package/CNAME +0 -1
  31. package/index.html +0 -1264
  32. package/logo.png +0 -0
  33. package/sw.js +0 -26
  34. package/test/array_1.js +0 -8
  35. package/test/array_push.js +0 -8
  36. package/test/assignop_1.js +0 -15
  37. package/test/bitwise_1.js +0 -6
  38. package/test/bool_1.js +0 -3
  39. package/test/boolean.js +0 -6
  40. package/test/break_1.js +0 -6
  41. package/test/break_2.js +0 -12
  42. package/test/conditional_1.js +0 -3
  43. package/test/conditional_2.js +0 -4
  44. package/test/console_1.js +0 -2
  45. package/test/continue_1.js +0 -6
  46. package/test/continue_2.js +0 -10
  47. package/test/empty.js +0 -1
  48. package/test/ending_exp_1.js +0 -2
  49. package/test/ending_exp_2.js +0 -6
  50. package/test/eq_1.js +0 -4
  51. package/test/eq_2.js +0 -4
  52. package/test/eq_3.js +0 -5
  53. package/test/export_1.js +0 -9
  54. package/test/factorial.js +0 -3
  55. package/test/fibonacci.js +0 -16
  56. package/test/float_div0.js +0 -2
  57. package/test/float_frac.js +0 -2
  58. package/test/float_isfinite.js +0 -29
  59. package/test/float_isinteger.js +0 -13
  60. package/test/float_isnan.js +0 -20
  61. package/test/float_issafeinteger.js +0 -11
  62. package/test/float_large.js +0 -2
  63. package/test/float_math_funcs.js +0 -24
  64. package/test/float_math_random.js +0 -6
  65. package/test/float_nan.js +0 -3
  66. package/test/float_number_values.js +0 -12
  67. package/test/for_1.js +0 -4
  68. package/test/for_2.js +0 -4
  69. package/test/func_1.js +0 -16
  70. package/test/func_2.js +0 -6
  71. package/test/func_3.js +0 -10
  72. package/test/global_1.js +0 -8
  73. package/test/global_2.js +0 -10
  74. package/test/if_1.js +0 -6
  75. package/test/if_2.js +0 -9
  76. package/test/if_3.js +0 -7
  77. package/test/iife_1.js +0 -8
  78. package/test/iife_2.js +0 -8
  79. package/test/index.js +0 -93
  80. package/test/int_number_values.js +0 -6
  81. package/test/logic_1.js +0 -7
  82. package/test/logic_2.js +0 -7
  83. package/test/math_1.js +0 -6
  84. package/test/math_2.js +0 -12
  85. package/test/math_3.js +0 -6
  86. package/test/number_func.js +0 -4
  87. package/test/return_1.js +0 -8
  88. package/test/return_2.js +0 -11
  89. package/test/tailcall_1.js +0 -10
  90. package/test/throw_1.js +0 -2
  91. package/test/throw_2.js +0 -4
  92. package/test/throw_3.js +0 -2
  93. package/test/throw_4.js +0 -3
  94. package/test/try_1.js +0 -7
  95. package/test/unary_1.js +0 -4
  96. package/test/unary_2.js +0 -5
  97. package/test/unary_3.js +0 -6
  98. package/test/unary_4.js +0 -12
  99. package/test/unary_5.js +0 -8
  100. package/test/undefined_1.js +0 -8
  101. package/test/undefined_2.js +0 -10
  102. package/test/updateexp_1.js +0 -9
  103. package/test/vars_1.js +0 -5
  104. package/test/vars_2.js +0 -9
  105. package/test/while_1.js +0 -6
  106. package/test262/compare.js +0 -30
  107. package/test262/index.js +0 -314
  108. package/test262/node_modules/.bin/esparse +0 -12
  109. package/test262/node_modules/.bin/esparse.cmd +0 -17
  110. package/test262/node_modules/.bin/esparse.ps1 +0 -28
  111. package/test262/node_modules/.bin/esvalidate +0 -12
  112. package/test262/node_modules/.bin/esvalidate.cmd +0 -17
  113. package/test262/node_modules/.bin/esvalidate.ps1 +0 -28
  114. package/test262/node_modules/.bin/js-yaml +0 -12
  115. package/test262/node_modules/.bin/js-yaml.cmd +0 -17
  116. package/test262/node_modules/.bin/js-yaml.ps1 +0 -28
  117. package/test262/node_modules/.package-lock.json +0 -0
  118. package/test262/node_modules/@nodelib/fs.scandir/LICENSE +0 -21
  119. package/test262/node_modules/@nodelib/fs.scandir/README.md +0 -171
  120. package/test262/node_modules/@nodelib/fs.scandir/out/adapters/fs.d.ts +0 -20
  121. package/test262/node_modules/@nodelib/fs.scandir/out/adapters/fs.js +0 -19
  122. package/test262/node_modules/@nodelib/fs.scandir/out/constants.d.ts +0 -4
  123. package/test262/node_modules/@nodelib/fs.scandir/out/constants.js +0 -17
  124. package/test262/node_modules/@nodelib/fs.scandir/out/index.d.ts +0 -12
  125. package/test262/node_modules/@nodelib/fs.scandir/out/index.js +0 -26
  126. package/test262/node_modules/@nodelib/fs.scandir/out/providers/async.d.ts +0 -7
  127. package/test262/node_modules/@nodelib/fs.scandir/out/providers/async.js +0 -104
  128. package/test262/node_modules/@nodelib/fs.scandir/out/providers/common.d.ts +0 -1
  129. package/test262/node_modules/@nodelib/fs.scandir/out/providers/common.js +0 -13
  130. package/test262/node_modules/@nodelib/fs.scandir/out/providers/sync.d.ts +0 -5
  131. package/test262/node_modules/@nodelib/fs.scandir/out/providers/sync.js +0 -54
  132. package/test262/node_modules/@nodelib/fs.scandir/out/settings.d.ts +0 -20
  133. package/test262/node_modules/@nodelib/fs.scandir/out/settings.js +0 -24
  134. package/test262/node_modules/@nodelib/fs.scandir/out/types/index.d.ts +0 -20
  135. package/test262/node_modules/@nodelib/fs.scandir/out/types/index.js +0 -2
  136. package/test262/node_modules/@nodelib/fs.scandir/out/utils/fs.d.ts +0 -2
  137. package/test262/node_modules/@nodelib/fs.scandir/out/utils/fs.js +0 -19
  138. package/test262/node_modules/@nodelib/fs.scandir/out/utils/index.d.ts +0 -2
  139. package/test262/node_modules/@nodelib/fs.scandir/out/utils/index.js +0 -5
  140. package/test262/node_modules/@nodelib/fs.scandir/package.json +0 -44
  141. package/test262/node_modules/@nodelib/fs.stat/LICENSE +0 -21
  142. package/test262/node_modules/@nodelib/fs.stat/README.md +0 -126
  143. package/test262/node_modules/@nodelib/fs.stat/out/adapters/fs.d.ts +0 -13
  144. package/test262/node_modules/@nodelib/fs.stat/out/adapters/fs.js +0 -17
  145. package/test262/node_modules/@nodelib/fs.stat/out/index.d.ts +0 -12
  146. package/test262/node_modules/@nodelib/fs.stat/out/index.js +0 -26
  147. package/test262/node_modules/@nodelib/fs.stat/out/providers/async.d.ts +0 -4
  148. package/test262/node_modules/@nodelib/fs.stat/out/providers/async.js +0 -36
  149. package/test262/node_modules/@nodelib/fs.stat/out/providers/sync.d.ts +0 -3
  150. package/test262/node_modules/@nodelib/fs.stat/out/providers/sync.js +0 -23
  151. package/test262/node_modules/@nodelib/fs.stat/out/settings.d.ts +0 -16
  152. package/test262/node_modules/@nodelib/fs.stat/out/settings.js +0 -16
  153. package/test262/node_modules/@nodelib/fs.stat/out/types/index.d.ts +0 -4
  154. package/test262/node_modules/@nodelib/fs.stat/out/types/index.js +0 -2
  155. package/test262/node_modules/@nodelib/fs.stat/package.json +0 -37
  156. package/test262/node_modules/@nodelib/fs.walk/LICENSE +0 -21
  157. package/test262/node_modules/@nodelib/fs.walk/README.md +0 -215
  158. package/test262/node_modules/@nodelib/fs.walk/out/index.d.ts +0 -14
  159. package/test262/node_modules/@nodelib/fs.walk/out/index.js +0 -34
  160. package/test262/node_modules/@nodelib/fs.walk/out/providers/async.d.ts +0 -12
  161. package/test262/node_modules/@nodelib/fs.walk/out/providers/async.js +0 -30
  162. package/test262/node_modules/@nodelib/fs.walk/out/providers/index.d.ts +0 -4
  163. package/test262/node_modules/@nodelib/fs.walk/out/providers/index.js +0 -9
  164. package/test262/node_modules/@nodelib/fs.walk/out/providers/stream.d.ts +0 -12
  165. package/test262/node_modules/@nodelib/fs.walk/out/providers/stream.js +0 -34
  166. package/test262/node_modules/@nodelib/fs.walk/out/providers/sync.d.ts +0 -10
  167. package/test262/node_modules/@nodelib/fs.walk/out/providers/sync.js +0 -14
  168. package/test262/node_modules/@nodelib/fs.walk/out/readers/async.d.ts +0 -30
  169. package/test262/node_modules/@nodelib/fs.walk/out/readers/async.js +0 -97
  170. package/test262/node_modules/@nodelib/fs.walk/out/readers/common.d.ts +0 -7
  171. package/test262/node_modules/@nodelib/fs.walk/out/readers/common.js +0 -31
  172. package/test262/node_modules/@nodelib/fs.walk/out/readers/reader.d.ts +0 -6
  173. package/test262/node_modules/@nodelib/fs.walk/out/readers/reader.js +0 -11
  174. package/test262/node_modules/@nodelib/fs.walk/out/readers/sync.d.ts +0 -15
  175. package/test262/node_modules/@nodelib/fs.walk/out/readers/sync.js +0 -59
  176. package/test262/node_modules/@nodelib/fs.walk/out/settings.d.ts +0 -30
  177. package/test262/node_modules/@nodelib/fs.walk/out/settings.js +0 -26
  178. package/test262/node_modules/@nodelib/fs.walk/out/types/index.d.ts +0 -8
  179. package/test262/node_modules/@nodelib/fs.walk/out/types/index.js +0 -2
  180. package/test262/node_modules/@nodelib/fs.walk/package.json +0 -44
  181. package/test262/node_modules/argparse/CHANGELOG.md +0 -185
  182. package/test262/node_modules/argparse/LICENSE +0 -21
  183. package/test262/node_modules/argparse/README.md +0 -257
  184. package/test262/node_modules/argparse/index.js +0 -3
  185. package/test262/node_modules/argparse/lib/action/append/constant.js +0 -47
  186. package/test262/node_modules/argparse/lib/action/append.js +0 -53
  187. package/test262/node_modules/argparse/lib/action/count.js +0 -40
  188. package/test262/node_modules/argparse/lib/action/help.js +0 -47
  189. package/test262/node_modules/argparse/lib/action/store/constant.js +0 -43
  190. package/test262/node_modules/argparse/lib/action/store/false.js +0 -27
  191. package/test262/node_modules/argparse/lib/action/store/true.js +0 -26
  192. package/test262/node_modules/argparse/lib/action/store.js +0 -50
  193. package/test262/node_modules/argparse/lib/action/subparsers.js +0 -149
  194. package/test262/node_modules/argparse/lib/action/version.js +0 -47
  195. package/test262/node_modules/argparse/lib/action.js +0 -146
  196. package/test262/node_modules/argparse/lib/action_container.js +0 -482
  197. package/test262/node_modules/argparse/lib/argparse.js +0 -14
  198. package/test262/node_modules/argparse/lib/argument/error.js +0 -50
  199. package/test262/node_modules/argparse/lib/argument/exclusive.js +0 -54
  200. package/test262/node_modules/argparse/lib/argument/group.js +0 -75
  201. package/test262/node_modules/argparse/lib/argument_parser.js +0 -1161
  202. package/test262/node_modules/argparse/lib/const.js +0 -21
  203. package/test262/node_modules/argparse/lib/help/added_formatters.js +0 -87
  204. package/test262/node_modules/argparse/lib/help/formatter.js +0 -795
  205. package/test262/node_modules/argparse/lib/namespace.js +0 -76
  206. package/test262/node_modules/argparse/lib/utils.js +0 -57
  207. package/test262/node_modules/argparse/package.json +0 -34
  208. package/test262/node_modules/braces/CHANGELOG.md +0 -184
  209. package/test262/node_modules/braces/LICENSE +0 -21
  210. package/test262/node_modules/braces/README.md +0 -593
  211. package/test262/node_modules/braces/index.js +0 -170
  212. package/test262/node_modules/braces/lib/compile.js +0 -57
  213. package/test262/node_modules/braces/lib/constants.js +0 -57
  214. package/test262/node_modules/braces/lib/expand.js +0 -113
  215. package/test262/node_modules/braces/lib/parse.js +0 -333
  216. package/test262/node_modules/braces/lib/stringify.js +0 -32
  217. package/test262/node_modules/braces/lib/utils.js +0 -112
  218. package/test262/node_modules/braces/package.json +0 -77
  219. package/test262/node_modules/esprima/ChangeLog +0 -235
  220. package/test262/node_modules/esprima/LICENSE.BSD +0 -21
  221. package/test262/node_modules/esprima/README.md +0 -46
  222. package/test262/node_modules/esprima/bin/esparse.js +0 -139
  223. package/test262/node_modules/esprima/bin/esvalidate.js +0 -236
  224. package/test262/node_modules/esprima/dist/esprima.js +0 -6709
  225. package/test262/node_modules/esprima/package.json +0 -112
  226. package/test262/node_modules/fast-glob/LICENSE +0 -21
  227. package/test262/node_modules/fast-glob/README.md +0 -859
  228. package/test262/node_modules/fast-glob/out/index.d.ts +0 -40
  229. package/test262/node_modules/fast-glob/out/index.js +0 -102
  230. package/test262/node_modules/fast-glob/out/managers/tasks.d.ts +0 -22
  231. package/test262/node_modules/fast-glob/out/managers/tasks.js +0 -110
  232. package/test262/node_modules/fast-glob/out/providers/async.d.ts +0 -9
  233. package/test262/node_modules/fast-glob/out/providers/async.js +0 -23
  234. package/test262/node_modules/fast-glob/out/providers/filters/deep.d.ts +0 -16
  235. package/test262/node_modules/fast-glob/out/providers/filters/deep.js +0 -62
  236. package/test262/node_modules/fast-glob/out/providers/filters/entry.d.ts +0 -16
  237. package/test262/node_modules/fast-glob/out/providers/filters/entry.js +0 -63
  238. package/test262/node_modules/fast-glob/out/providers/filters/error.d.ts +0 -8
  239. package/test262/node_modules/fast-glob/out/providers/filters/error.js +0 -15
  240. package/test262/node_modules/fast-glob/out/providers/matchers/matcher.d.ts +0 -33
  241. package/test262/node_modules/fast-glob/out/providers/matchers/matcher.js +0 -45
  242. package/test262/node_modules/fast-glob/out/providers/matchers/partial.d.ts +0 -4
  243. package/test262/node_modules/fast-glob/out/providers/matchers/partial.js +0 -38
  244. package/test262/node_modules/fast-glob/out/providers/provider.d.ts +0 -19
  245. package/test262/node_modules/fast-glob/out/providers/provider.js +0 -48
  246. package/test262/node_modules/fast-glob/out/providers/stream.d.ts +0 -11
  247. package/test262/node_modules/fast-glob/out/providers/stream.js +0 -31
  248. package/test262/node_modules/fast-glob/out/providers/sync.d.ts +0 -9
  249. package/test262/node_modules/fast-glob/out/providers/sync.js +0 -23
  250. package/test262/node_modules/fast-glob/out/providers/transformers/entry.d.ts +0 -8
  251. package/test262/node_modules/fast-glob/out/providers/transformers/entry.js +0 -26
  252. package/test262/node_modules/fast-glob/out/readers/async.d.ts +0 -10
  253. package/test262/node_modules/fast-glob/out/readers/async.js +0 -35
  254. package/test262/node_modules/fast-glob/out/readers/reader.d.ts +0 -15
  255. package/test262/node_modules/fast-glob/out/readers/reader.js +0 -33
  256. package/test262/node_modules/fast-glob/out/readers/stream.d.ts +0 -14
  257. package/test262/node_modules/fast-glob/out/readers/stream.js +0 -55
  258. package/test262/node_modules/fast-glob/out/readers/sync.d.ts +0 -12
  259. package/test262/node_modules/fast-glob/out/readers/sync.js +0 -43
  260. package/test262/node_modules/fast-glob/out/settings.d.ts +0 -164
  261. package/test262/node_modules/fast-glob/out/settings.js +0 -57
  262. package/test262/node_modules/fast-glob/out/types/index.d.ts +0 -31
  263. package/test262/node_modules/fast-glob/out/types/index.js +0 -2
  264. package/test262/node_modules/fast-glob/out/utils/array.d.ts +0 -2
  265. package/test262/node_modules/fast-glob/out/utils/array.js +0 -22
  266. package/test262/node_modules/fast-glob/out/utils/errno.d.ts +0 -2
  267. package/test262/node_modules/fast-glob/out/utils/errno.js +0 -7
  268. package/test262/node_modules/fast-glob/out/utils/fs.d.ts +0 -4
  269. package/test262/node_modules/fast-glob/out/utils/fs.js +0 -19
  270. package/test262/node_modules/fast-glob/out/utils/index.d.ts +0 -8
  271. package/test262/node_modules/fast-glob/out/utils/index.js +0 -17
  272. package/test262/node_modules/fast-glob/out/utils/path.d.ts +0 -13
  273. package/test262/node_modules/fast-glob/out/utils/path.js +0 -68
  274. package/test262/node_modules/fast-glob/out/utils/pattern.d.ts +0 -47
  275. package/test262/node_modules/fast-glob/out/utils/pattern.js +0 -188
  276. package/test262/node_modules/fast-glob/out/utils/stream.d.ts +0 -4
  277. package/test262/node_modules/fast-glob/out/utils/stream.js +0 -17
  278. package/test262/node_modules/fast-glob/out/utils/string.d.ts +0 -2
  279. package/test262/node_modules/fast-glob/out/utils/string.js +0 -11
  280. package/test262/node_modules/fast-glob/package.json +0 -81
  281. package/test262/node_modules/fastq/.github/dependabot.yml +0 -11
  282. package/test262/node_modules/fastq/.github/workflows/ci.yml +0 -50
  283. package/test262/node_modules/fastq/LICENSE +0 -13
  284. package/test262/node_modules/fastq/README.md +0 -309
  285. package/test262/node_modules/fastq/bench.js +0 -66
  286. package/test262/node_modules/fastq/example.js +0 -14
  287. package/test262/node_modules/fastq/example.mjs +0 -11
  288. package/test262/node_modules/fastq/index.d.ts +0 -37
  289. package/test262/node_modules/fastq/package.json +0 -52
  290. package/test262/node_modules/fastq/queue.js +0 -289
  291. package/test262/node_modules/fastq/test/example.ts +0 -81
  292. package/test262/node_modules/fastq/test/promise.js +0 -248
  293. package/test262/node_modules/fastq/test/test.js +0 -566
  294. package/test262/node_modules/fastq/test/tsconfig.json +0 -11
  295. package/test262/node_modules/fill-range/LICENSE +0 -21
  296. package/test262/node_modules/fill-range/README.md +0 -237
  297. package/test262/node_modules/fill-range/index.js +0 -249
  298. package/test262/node_modules/fill-range/package.json +0 -69
  299. package/test262/node_modules/glob-parent/CHANGELOG.md +0 -110
  300. package/test262/node_modules/glob-parent/LICENSE +0 -15
  301. package/test262/node_modules/glob-parent/README.md +0 -137
  302. package/test262/node_modules/glob-parent/index.js +0 -42
  303. package/test262/node_modules/glob-parent/package.json +0 -48
  304. package/test262/node_modules/graceful-fs/LICENSE +0 -15
  305. package/test262/node_modules/graceful-fs/README.md +0 -143
  306. package/test262/node_modules/graceful-fs/clone.js +0 -23
  307. package/test262/node_modules/graceful-fs/graceful-fs.js +0 -448
  308. package/test262/node_modules/graceful-fs/legacy-streams.js +0 -118
  309. package/test262/node_modules/graceful-fs/package.json +0 -53
  310. package/test262/node_modules/graceful-fs/polyfills.js +0 -355
  311. package/test262/node_modules/is-extglob/LICENSE +0 -21
  312. package/test262/node_modules/is-extglob/README.md +0 -107
  313. package/test262/node_modules/is-extglob/index.js +0 -20
  314. package/test262/node_modules/is-extglob/package.json +0 -69
  315. package/test262/node_modules/is-glob/LICENSE +0 -21
  316. package/test262/node_modules/is-glob/README.md +0 -206
  317. package/test262/node_modules/is-glob/index.js +0 -150
  318. package/test262/node_modules/is-glob/package.json +0 -81
  319. package/test262/node_modules/is-number/LICENSE +0 -21
  320. package/test262/node_modules/is-number/README.md +0 -187
  321. package/test262/node_modules/is-number/index.js +0 -18
  322. package/test262/node_modules/is-number/package.json +0 -82
  323. package/test262/node_modules/js-yaml/CHANGELOG.md +0 -557
  324. package/test262/node_modules/js-yaml/LICENSE +0 -21
  325. package/test262/node_modules/js-yaml/README.md +0 -299
  326. package/test262/node_modules/js-yaml/bin/js-yaml.js +0 -132
  327. package/test262/node_modules/js-yaml/dist/js-yaml.js +0 -3989
  328. package/test262/node_modules/js-yaml/dist/js-yaml.min.js +0 -1
  329. package/test262/node_modules/js-yaml/index.js +0 -7
  330. package/test262/node_modules/js-yaml/lib/js-yaml/common.js +0 -59
  331. package/test262/node_modules/js-yaml/lib/js-yaml/dumper.js +0 -850
  332. package/test262/node_modules/js-yaml/lib/js-yaml/exception.js +0 -43
  333. package/test262/node_modules/js-yaml/lib/js-yaml/loader.js +0 -1644
  334. package/test262/node_modules/js-yaml/lib/js-yaml/mark.js +0 -76
  335. package/test262/node_modules/js-yaml/lib/js-yaml/schema/core.js +0 -18
  336. package/test262/node_modules/js-yaml/lib/js-yaml/schema/default_full.js +0 -25
  337. package/test262/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js +0 -28
  338. package/test262/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js +0 -17
  339. package/test262/node_modules/js-yaml/lib/js-yaml/schema/json.js +0 -25
  340. package/test262/node_modules/js-yaml/lib/js-yaml/schema.js +0 -108
  341. package/test262/node_modules/js-yaml/lib/js-yaml/type/binary.js +0 -138
  342. package/test262/node_modules/js-yaml/lib/js-yaml/type/bool.js +0 -35
  343. package/test262/node_modules/js-yaml/lib/js-yaml/type/float.js +0 -116
  344. package/test262/node_modules/js-yaml/lib/js-yaml/type/int.js +0 -173
  345. package/test262/node_modules/js-yaml/lib/js-yaml/type/js/function.js +0 -93
  346. package/test262/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js +0 -60
  347. package/test262/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js +0 -28
  348. package/test262/node_modules/js-yaml/lib/js-yaml/type/map.js +0 -8
  349. package/test262/node_modules/js-yaml/lib/js-yaml/type/merge.js +0 -12
  350. package/test262/node_modules/js-yaml/lib/js-yaml/type/null.js +0 -34
  351. package/test262/node_modules/js-yaml/lib/js-yaml/type/omap.js +0 -44
  352. package/test262/node_modules/js-yaml/lib/js-yaml/type/pairs.js +0 -53
  353. package/test262/node_modules/js-yaml/lib/js-yaml/type/seq.js +0 -8
  354. package/test262/node_modules/js-yaml/lib/js-yaml/type/set.js +0 -29
  355. package/test262/node_modules/js-yaml/lib/js-yaml/type/str.js +0 -8
  356. package/test262/node_modules/js-yaml/lib/js-yaml/type/timestamp.js +0 -88
  357. package/test262/node_modules/js-yaml/lib/js-yaml/type.js +0 -61
  358. package/test262/node_modules/js-yaml/lib/js-yaml.js +0 -39
  359. package/test262/node_modules/js-yaml/package.json +0 -49
  360. package/test262/node_modules/klaw/CHANGELOG.md +0 -62
  361. package/test262/node_modules/klaw/LICENSE +0 -15
  362. package/test262/node_modules/klaw/README.md +0 -252
  363. package/test262/node_modules/klaw/package.json +0 -40
  364. package/test262/node_modules/klaw/src/index.js +0 -56
  365. package/test262/node_modules/merge2/LICENSE +0 -21
  366. package/test262/node_modules/merge2/README.md +0 -144
  367. package/test262/node_modules/merge2/index.js +0 -144
  368. package/test262/node_modules/merge2/package.json +0 -43
  369. package/test262/node_modules/micromatch/LICENSE +0 -21
  370. package/test262/node_modules/micromatch/README.md +0 -1011
  371. package/test262/node_modules/micromatch/index.js +0 -467
  372. package/test262/node_modules/micromatch/package.json +0 -119
  373. package/test262/node_modules/picomatch/CHANGELOG.md +0 -136
  374. package/test262/node_modules/picomatch/LICENSE +0 -21
  375. package/test262/node_modules/picomatch/README.md +0 -708
  376. package/test262/node_modules/picomatch/index.js +0 -3
  377. package/test262/node_modules/picomatch/lib/constants.js +0 -179
  378. package/test262/node_modules/picomatch/lib/parse.js +0 -1091
  379. package/test262/node_modules/picomatch/lib/picomatch.js +0 -342
  380. package/test262/node_modules/picomatch/lib/scan.js +0 -391
  381. package/test262/node_modules/picomatch/lib/utils.js +0 -64
  382. package/test262/node_modules/picomatch/package.json +0 -81
  383. package/test262/node_modules/queue-microtask/LICENSE +0 -20
  384. package/test262/node_modules/queue-microtask/README.md +0 -90
  385. package/test262/node_modules/queue-microtask/index.d.ts +0 -2
  386. package/test262/node_modules/queue-microtask/index.js +0 -9
  387. package/test262/node_modules/queue-microtask/package.json +0 -55
  388. package/test262/node_modules/reusify/.coveralls.yml +0 -1
  389. package/test262/node_modules/reusify/.travis.yml +0 -28
  390. package/test262/node_modules/reusify/LICENSE +0 -22
  391. package/test262/node_modules/reusify/README.md +0 -145
  392. package/test262/node_modules/reusify/benchmarks/createNoCodeFunction.js +0 -30
  393. package/test262/node_modules/reusify/benchmarks/fib.js +0 -13
  394. package/test262/node_modules/reusify/benchmarks/reuseNoCodeFunction.js +0 -38
  395. package/test262/node_modules/reusify/package.json +0 -45
  396. package/test262/node_modules/reusify/reusify.js +0 -33
  397. package/test262/node_modules/reusify/test.js +0 -66
  398. package/test262/node_modules/run-parallel/LICENSE +0 -20
  399. package/test262/node_modules/run-parallel/README.md +0 -85
  400. package/test262/node_modules/run-parallel/index.js +0 -51
  401. package/test262/node_modules/run-parallel/package.json +0 -58
  402. package/test262/node_modules/sprintf-js/LICENSE +0 -24
  403. package/test262/node_modules/sprintf-js/README.md +0 -88
  404. package/test262/node_modules/sprintf-js/bower.json +0 -14
  405. package/test262/node_modules/sprintf-js/demo/angular.html +0 -20
  406. package/test262/node_modules/sprintf-js/dist/angular-sprintf.min.js +0 -4
  407. package/test262/node_modules/sprintf-js/dist/angular-sprintf.min.js.map +0 -1
  408. package/test262/node_modules/sprintf-js/dist/angular-sprintf.min.map +0 -1
  409. package/test262/node_modules/sprintf-js/dist/sprintf.min.js +0 -4
  410. package/test262/node_modules/sprintf-js/dist/sprintf.min.js.map +0 -1
  411. package/test262/node_modules/sprintf-js/dist/sprintf.min.map +0 -1
  412. package/test262/node_modules/sprintf-js/gruntfile.js +0 -36
  413. package/test262/node_modules/sprintf-js/package.json +0 -22
  414. package/test262/node_modules/sprintf-js/src/angular-sprintf.js +0 -18
  415. package/test262/node_modules/sprintf-js/src/sprintf.js +0 -208
  416. package/test262/node_modules/sprintf-js/test/test.js +0 -82
  417. package/test262/node_modules/test262-stream/.jshintignore +0 -2
  418. package/test262/node_modules/test262-stream/.jshintrc +0 -6
  419. package/test262/node_modules/test262-stream/.travis.yml +0 -5
  420. package/test262/node_modules/test262-stream/CONTRIBUTING.md +0 -37
  421. package/test262/node_modules/test262-stream/LICENSE-MICROSOFT.txt +0 -27
  422. package/test262/node_modules/test262-stream/LICENSE.txt +0 -27
  423. package/test262/node_modules/test262-stream/README.md +0 -71
  424. package/test262/node_modules/test262-stream/lib/builder.js +0 -46
  425. package/test262/node_modules/test262-stream/lib/compile.js +0 -24
  426. package/test262/node_modules/test262-stream/lib/create-scenarios.js +0 -29
  427. package/test262/node_modules/test262-stream/lib/index.js +0 -187
  428. package/test262/node_modules/test262-stream/lib/test-file.js +0 -150
  429. package/test262/node_modules/test262-stream/package.json +0 -26
  430. package/test262/node_modules/test262-stream/test/collateral/invalid-missing-harness/fake-test262/test/a-test-file.js +0 -16
  431. package/test262/node_modules/test262-stream/test/collateral/invalid-version-other-accepted/fake-test262/harness/assert.js +0 -17
  432. package/test262/node_modules/test262-stream/test/collateral/invalid-version-other-accepted/fake-test262/harness/doneprintHandle.js +0 -6
  433. package/test262/node_modules/test262-stream/test/collateral/invalid-version-other-accepted/fake-test262/harness/sta.js +0 -12
  434. package/test262/node_modules/test262-stream/test/collateral/invalid-version-other-accepted/fake-test262/package.json +0 -3
  435. package/test262/node_modules/test262-stream/test/collateral/invalid-version-other-accepted/fake-test262/test/strict.js +0 -9
  436. package/test262/node_modules/test262-stream/test/collateral/invalid-version-unsupported/fake-test262/harness/assert.js +0 -17
  437. package/test262/node_modules/test262-stream/test/collateral/invalid-version-unsupported/fake-test262/harness/doneprintHandle.js +0 -6
  438. package/test262/node_modules/test262-stream/test/collateral/invalid-version-unsupported/fake-test262/harness/sta.js +0 -12
  439. package/test262/node_modules/test262-stream/test/collateral/invalid-version-unsupported/fake-test262/package.json +0 -3
  440. package/test262/node_modules/test262-stream/test/collateral/invalid-version-unsupported/fake-test262/test/strict.js +0 -9
  441. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/asyncNegative_default.js +0 -49
  442. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/asyncNegative_strict_mode.js +0 -50
  443. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/async_default.js +0 -48
  444. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/async_strict_mode.js +0 -49
  445. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/bothStrict_default.js +0 -46
  446. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/bothStrict_strict_mode.js +0 -47
  447. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/error_default.js +0 -39
  448. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/error_strict_mode.js +0 -40
  449. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/module_default.js +0 -37
  450. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/module_strict_mode.js +0 -38
  451. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/negative-empty_default.js +0 -37
  452. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/negative-empty_strict_mode.js +0 -38
  453. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/noStrict_default.js +0 -36
  454. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/rawNoStrict_default.js +0 -14
  455. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/rawStrict_default.js +0 -15
  456. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/strict_strict_mode.js +0 -41
  457. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/asyncNegative_default.json +0 -22
  458. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/asyncNegative_strict_mode.json +0 -22
  459. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/async_default.json +0 -18
  460. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/async_strict_mode.json +0 -18
  461. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/bothStrict_default.json +0 -24
  462. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/bothStrict_strict_mode.json +0 -24
  463. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/error_default.json +0 -19
  464. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/error_strict_mode.json +0 -19
  465. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/module_default.json +0 -17
  466. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/module_strict_mode.json +0 -17
  467. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/negative-empty_default.json +0 -19
  468. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/negative-empty_strict_mode.json +0 -19
  469. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/noStrict_default.json +0 -17
  470. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/rawNoStrict_default.json +0 -14
  471. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/rawStrict_default.json +0 -14
  472. package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/strict_strict_mode.json +0 -21
  473. package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/harness/assert.js +0 -17
  474. package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/harness/doneprintHandle.js +0 -6
  475. package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/harness/sta.js +0 -12
  476. package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/async.js +0 -10
  477. package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/asyncNegative.js +0 -11
  478. package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/bothStrict.js +0 -15
  479. package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/error.js +0 -8
  480. package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/module.js +0 -6
  481. package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/module_FIXTURE.js +0 -2
  482. package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/negative-empty.js +0 -6
  483. package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/noStrict.js +0 -5
  484. package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/rawNoStrict.js +0 -14
  485. package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/rawStrict.js +0 -15
  486. package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/strict.js +0 -9
  487. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/expected-content/test/bothStrict_default.js +0 -46
  488. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/expected-content/test/bothStrict_strict_mode.js +0 -47
  489. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/expected-metadata/test/bothStrict_default.json +0 -24
  490. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/expected-metadata/test/bothStrict_strict_mode.json +0 -24
  491. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/harness/assert.js +0 -17
  492. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/harness/doneprintHandle.js +0 -6
  493. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/harness/sta.js +0 -12
  494. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/bothStrict.js +0 -15
  495. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-0_FIXTURE.js +0 -2
  496. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-1_FIXTURE.js +0 -2
  497. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-2_FIXTURE.js +0 -2
  498. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-3_FIXTURE.js +0 -2
  499. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-4_FIXTURE.js +0 -2
  500. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-5_FIXTURE.js +0 -2
  501. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-6_FIXTURE.js +0 -2
  502. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-7_FIXTURE.js +0 -2
  503. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-8_FIXTURE.js +0 -2
  504. package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-9_FIXTURE.txt +0 -2
  505. package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/expected-content/test/raw_default.js +0 -15
  506. package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/expected-content/test/runtime_default.js +0 -38
  507. package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/expected-content/test/runtime_strict_mode.js +0 -39
  508. package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/expected-metadata/test/raw_default.json +0 -14
  509. package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/expected-metadata/test/runtime_default.json +0 -15
  510. package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/expected-metadata/test/runtime_strict_mode.json +0 -15
  511. package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/fake-test262/harness/assert.js +0 -17
  512. package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/fake-test262/harness/sta.js +0 -12
  513. package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/fake-test262/test/raw.js +0 -15
  514. package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/fake-test262/test/runtime.js +0 -7
  515. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/asyncNegative_default.js +0 -11
  516. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/asyncNegative_strict_mode.js +0 -12
  517. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/async_default.js +0 -10
  518. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/async_strict_mode.js +0 -11
  519. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/bothStrict_default.js +0 -15
  520. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/bothStrict_strict_mode.js +0 -16
  521. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/error_default.js +0 -8
  522. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/error_strict_mode.js +0 -9
  523. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/module_default.js +0 -6
  524. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/module_strict_mode.js +0 -7
  525. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/negative-empty_default.js +0 -6
  526. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/negative-empty_strict_mode.js +0 -7
  527. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/noStrict_default.js +0 -5
  528. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/rawNoStrict_default.js +0 -14
  529. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/rawStrict_default.js +0 -15
  530. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/strict_strict_mode.js +0 -10
  531. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/asyncNegative_default.json +0 -18
  532. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/asyncNegative_strict_mode.json +0 -18
  533. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/async_default.json +0 -14
  534. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/async_strict_mode.json +0 -14
  535. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/bothStrict_default.json +0 -21
  536. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/bothStrict_strict_mode.json +0 -21
  537. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/error_default.json +0 -16
  538. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/error_strict_mode.json +0 -16
  539. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/module_default.json +0 -14
  540. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/module_strict_mode.json +0 -14
  541. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/negative-empty_default.json +0 -16
  542. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/negative-empty_strict_mode.json +0 -16
  543. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/noStrict_default.json +0 -14
  544. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/rawNoStrict_default.json +0 -14
  545. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/rawStrict_default.json +0 -14
  546. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/strict_strict_mode.json +0 -18
  547. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/harness/assert.js +0 -17
  548. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/harness/doneprintHandle.js +0 -6
  549. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/harness/sta.js +0 -12
  550. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/async.js +0 -10
  551. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/asyncNegative.js +0 -11
  552. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/bothStrict.js +0 -15
  553. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/error.js +0 -8
  554. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/module.js +0 -6
  555. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/module_FIXTURE.js +0 -2
  556. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/negative-empty.js +0 -6
  557. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/noStrict.js +0 -5
  558. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/rawNoStrict.js +0 -14
  559. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/rawStrict.js +0 -15
  560. package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/strict.js +0 -9
  561. package/test262/node_modules/test262-stream/test/collateral/valid-version-ignored/expected-content/test/strict_strict_mode.js +0 -41
  562. package/test262/node_modules/test262-stream/test/collateral/valid-version-ignored/expected-metadata/test/strict_strict_mode.json +0 -21
  563. package/test262/node_modules/test262-stream/test/collateral/valid-version-ignored/fake-test262/harness/assert.js +0 -17
  564. package/test262/node_modules/test262-stream/test/collateral/valid-version-ignored/fake-test262/harness/doneprintHandle.js +0 -6
  565. package/test262/node_modules/test262-stream/test/collateral/valid-version-ignored/fake-test262/harness/sta.js +0 -12
  566. package/test262/node_modules/test262-stream/test/collateral/valid-version-ignored/fake-test262/package.json +0 -3
  567. package/test262/node_modules/test262-stream/test/collateral/valid-version-ignored/fake-test262/test/strict.js +0 -9
  568. package/test262/node_modules/test262-stream/test/collateral/valid-version-supported/expected-content/test/strict_strict_mode.js +0 -41
  569. package/test262/node_modules/test262-stream/test/collateral/valid-version-supported/expected-metadata/test/strict_strict_mode.json +0 -21
  570. package/test262/node_modules/test262-stream/test/collateral/valid-version-supported/fake-test262/harness/assert.js +0 -17
  571. package/test262/node_modules/test262-stream/test/collateral/valid-version-supported/fake-test262/harness/doneprintHandle.js +0 -6
  572. package/test262/node_modules/test262-stream/test/collateral/valid-version-supported/fake-test262/harness/sta.js +0 -12
  573. package/test262/node_modules/test262-stream/test/collateral/valid-version-supported/fake-test262/package.json +0 -3
  574. package/test262/node_modules/test262-stream/test/collateral/valid-version-supported/fake-test262/test/strict.js +0 -9
  575. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/missing-raw-flag_default.js +0 -44
  576. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/missing-raw-flag_strict_mode.js +0 -45
  577. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/raw-with-ls-and-license-on-same-line_default.js +0 -20
  578. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/raw-with-ls-multiline-block_default.js +0 -18
  579. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/raw-with-ls_default.js +0 -17
  580. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/raw-with-ps-and-license-on-same-line_default.js +0 -20
  581. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/raw-with-ps-multiline-block_default.js +0 -18
  582. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/raw-with-ps_default.js +0 -17
  583. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/rawWithLicense_default.js +0 -21
  584. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/raw_default.js +0 -17
  585. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/missing-raw-flag_default.json +0 -22
  586. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/missing-raw-flag_strict_mode.json +0 -22
  587. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/raw-with-ls-and-license-on-same-line_default.json +0 -21
  588. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/raw-with-ls-multiline-block_default.json +0 -21
  589. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/raw-with-ls_default.json +0 -21
  590. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/raw-with-ps-and-license-on-same-line_default.json +0 -21
  591. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/raw-with-ps-multiline-block_default.json +0 -21
  592. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/raw-with-ps_default.json +0 -21
  593. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/rawWithLicense_default.json +0 -21
  594. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/raw_default.json +0 -21
  595. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/harness/assert.js +0 -17
  596. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/harness/doneprintHandle.js +0 -6
  597. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/harness/sta.js +0 -12
  598. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/missing-raw-flag.js +0 -13
  599. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/raw-with-ls-and-license-on-same-line.js +0 -20
  600. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/raw-with-ls-multiline-block.js +0 -18
  601. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/raw-with-ls.js +0 -17
  602. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/raw-with-ps-and-license-on-same-line.js +0 -20
  603. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/raw-with-ps-multiline-block.js +0 -18
  604. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/raw-with-ps.js +0 -17
  605. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/raw.js +0 -17
  606. package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/rawWithLicense.js +0 -21
  607. package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/custom-includes/assert.js +0 -17
  608. package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/custom-includes/doneprintHandle.js +0 -9
  609. package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/custom-includes/sta.js +0 -13
  610. package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/expected-content/test/async_default.js +0 -52
  611. package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/expected-content/test/async_strict_mode.js +0 -53
  612. package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/expected-content/test/bothStrict_default.js +0 -47
  613. package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/expected-content/test/bothStrict_strict_mode.js +0 -48
  614. package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/expected-metadata/test/async_default.json +0 -18
  615. package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/expected-metadata/test/async_strict_mode.json +0 -18
  616. package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/expected-metadata/test/bothStrict_default.json +0 -24
  617. package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/expected-metadata/test/bothStrict_strict_mode.json +0 -24
  618. package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/fake-test262/harness/assert.js +0 -17
  619. package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/fake-test262/harness/doneprintHandle.js +0 -6
  620. package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/fake-test262/test/async.js +0 -10
  621. package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/fake-test262/test/bothStrict.js +0 -15
  622. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-content/test/async/asyncNegative_default.js +0 -49
  623. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-content/test/async/asyncNegative_strict_mode.js +0 -50
  624. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-content/test/async/async_default.js +0 -48
  625. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-content/test/async/async_strict_mode.js +0 -49
  626. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-content/test/bothStrict_default.js +0 -46
  627. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-content/test/bothStrict_strict_mode.js +0 -47
  628. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-content/test/strict/no/noStrict_default.js +0 -36
  629. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-content/test/strict/no/rawNoStrict_default.js +0 -14
  630. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-metadata/test/async/asyncNegative_default.json +0 -22
  631. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-metadata/test/async/asyncNegative_strict_mode.json +0 -22
  632. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-metadata/test/async/async_default.json +0 -18
  633. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-metadata/test/async/async_strict_mode.json +0 -18
  634. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-metadata/test/bothStrict_default.json +0 -24
  635. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-metadata/test/bothStrict_strict_mode.json +0 -24
  636. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-metadata/test/strict/no/noStrict_default.json +0 -17
  637. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-metadata/test/strict/no/rawNoStrict_default.json +0 -14
  638. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/harness/assert.js +0 -17
  639. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/harness/doneprintHandle.js +0 -6
  640. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/harness/sta.js +0 -12
  641. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/async/async.js +0 -10
  642. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/async/asyncNegative.js +0 -11
  643. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/bothStrict.js +0 -15
  644. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/error.js +0 -8
  645. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/negative-empty.js +0 -6
  646. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/strict/no/noStrict.js +0 -5
  647. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/strict/no/rawNoStrict.js +0 -14
  648. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/strict/rawStrict.js +0 -15
  649. package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/strict/strict.js +0 -9
  650. package/test262/node_modules/test262-stream/test/test.js +0 -319
  651. package/test262/node_modules/to-regex-range/LICENSE +0 -21
  652. package/test262/node_modules/to-regex-range/README.md +0 -305
  653. package/test262/node_modules/to-regex-range/index.js +0 -288
  654. package/test262/node_modules/to-regex-range/package.json +0 -88
  655. package/test262/package-lock.json +0 -279
  656. package/test262/package.json +0 -6
  657. package/test262/prelude.js +0 -75
  658. package/test262/results.json +0 -1
package/compiler/opt.js CHANGED
@@ -1,11 +1,7 @@
1
1
  import { Opcodes, Valtype } from "./wasmSpec.js";
2
2
  import { number } from "./embedding.js";
3
-
4
- // deno compat
5
- if (typeof process === 'undefined' && typeof Deno !== 'undefined') {
6
- const textEncoder = new TextEncoder();
7
- globalThis.process = { argv: ['', '', ...Deno.args], stdout: { write: str => Deno.writeAllSync(Deno.stdout, textEncoder.encode(str)) } };
8
- }
3
+ import { read_signedLEB128, read_ieee754_binary64 } from "./encoding.js";
4
+ import { log } from "./log.js";
9
5
 
10
6
  const performWasmOp = (op, a, b) => {
11
7
  switch (op) {
@@ -15,12 +11,12 @@ const performWasmOp = (op, a, b) => {
15
11
  }
16
12
  };
17
13
 
18
- export default (funcs, globals) => {
14
+ export default (funcs, globals, pages) => {
19
15
  const optLevel = parseInt(process.argv.find(x => x.startsWith('-O'))?.[2] ?? 1);
20
16
  if (optLevel === 0) return;
21
17
 
22
18
  const tailCall = process.argv.includes('-tail-call');
23
- if (tailCall) log('opt', 'tail call proposal is not widely implemented! (you used -tail-call)');
19
+ if (tailCall) log.warning('opt', 'tail call proposal is not widely implemented! (you used -tail-call)');
24
20
 
25
21
  if (optLevel >= 2 && !process.argv.includes('-opt-no-inline')) {
26
22
  // inline pass (very WIP)
@@ -95,7 +91,6 @@ export default (funcs, globals) => {
95
91
  }
96
92
 
97
93
  if (t.index > c.index) t.index--; // adjust index if after removed func
98
- if (c.memory) t.memory = true;
99
94
  }
100
95
 
101
96
  funcs.splice(funcs.indexOf(c), 1); // remove func from funcs
@@ -108,328 +103,432 @@ export default (funcs, globals) => {
108
103
  for (const f of funcs) {
109
104
  const wasm = f.wasm;
110
105
 
111
- let depth = [];
106
+ let runs = 2; // how many by default? add arg?
107
+ while (runs > 0) {
108
+ runs--;
112
109
 
113
- let getCount = {}, setCount = {};
114
- for (const x in f.locals) {
115
- getCount[f.locals[x].idx] = 0;
116
- setCount[f.locals[x].idx] = 0;
117
- }
110
+ let depth = [];
111
+
112
+ let getCount = {}, setCount = {};
113
+ for (const x in f.locals) {
114
+ getCount[f.locals[x].idx] = 0;
115
+ setCount[f.locals[x].idx] = 0;
116
+ }
118
117
 
119
- // main pass
120
- for (let i = 0; i < wasm.length; i++) {
121
- let inst = wasm[i];
122
-
123
- if (inst[0] === Opcodes.if || inst[0] === Opcodes.loop || inst[0] === Opcodes.block) depth.push(inst[0]);
124
- if (inst[0] === Opcodes.end) depth.pop();
125
-
126
- if (inst[0] === Opcodes.local_get) getCount[inst[1]]++;
127
- if (inst[0] === Opcodes.local_set || inst[0] === Opcodes.local_tee) setCount[inst[1]]++;
128
-
129
- if (inst[0] === Opcodes.block) {
130
- // remove unneeded blocks (no brs inside)
131
- // block
132
- // ...
133
- // end
134
- // -->
135
- // ...
136
-
137
- let hasBranch = false, j = i, depth = 0;
138
- for (; j < wasm.length; j++) {
139
- const op = wasm[j][0];
140
- if (op === Opcodes.if || op === Opcodes.block || op === Opcodes.loop || op === Opcodes.try) depth++;
141
- if (op === Opcodes.end) {
142
- depth--;
143
- if (depth <= 0) break;
118
+ // main pass
119
+ for (let i = 0; i < wasm.length; i++) {
120
+ let inst = wasm[i];
121
+
122
+ if (inst[0] === Opcodes.if || inst[0] === Opcodes.loop || inst[0] === Opcodes.block) depth.push(inst[0]);
123
+ if (inst[0] === Opcodes.end) depth.pop();
124
+
125
+ if (inst[0] === Opcodes.local_get) getCount[inst[1]]++;
126
+ if (inst[0] === Opcodes.local_set || inst[0] === Opcodes.local_tee) setCount[inst[1]]++;
127
+
128
+ if (inst[0] === Opcodes.block) {
129
+ // remove unneeded blocks (no brs inside)
130
+ // block
131
+ // ...
132
+ // end
133
+ // -->
134
+ // ...
135
+
136
+ let hasBranch = false, j = i, depth = 0;
137
+ for (; j < wasm.length; j++) {
138
+ const op = wasm[j][0];
139
+ if (op === Opcodes.if || op === Opcodes.block || op === Opcodes.loop || op === Opcodes.try) depth++;
140
+ if (op === Opcodes.end) {
141
+ depth--;
142
+ if (depth <= 0) break;
143
+ }
144
+ if (op === Opcodes.br || op === Opcodes.br_if) {
145
+ hasBranch = true;
146
+ break;
147
+ }
144
148
  }
145
- if (op === Opcodes.br) {
146
- hasBranch = true;
147
- break;
149
+
150
+ if (!hasBranch) {
151
+ wasm.splice(i, 1); // remove this inst (block)
152
+ if (i > 0) i--;
153
+ inst = wasm[i];
154
+
155
+ wasm.splice(j - 1, 1); // remove end of this block
156
+
157
+ if (optLog) log('opt', `removed unneeded block in for loop`);
148
158
  }
149
159
  }
150
160
 
151
- if (!hasBranch) {
152
- wasm.splice(i, 1); // remove this inst (block)
153
- i--;
161
+ if (inst[inst.length - 1] === 'string_only' && !pages.hasString) {
162
+ // remove this inst
163
+ wasm.splice(i, 1);
164
+ if (i > 0) i--;
154
165
  inst = wasm[i];
166
+ }
155
167
 
156
- wasm.splice(j - 1, 1); // remove end of this block
168
+ if (inst[inst.length - 1] === 'string_only|start' && !pages.hasString) {
169
+ let j = i;
170
+ for (; j < wasm.length; j++) {
171
+ const op = wasm[j];
172
+ if (op[op.length - 1] === 'string_only|end') break;
173
+ }
174
+
175
+ // remove section
176
+ wasm.splice(i, 1 + j - i);
157
177
 
158
- if (optLog) log('opt', `removed unneeded block in for loop`);
178
+ if (i > 0) i--;
179
+ inst = wasm[i];
159
180
  }
160
- }
161
181
 
162
- if (i < 1) continue;
163
- let lastInst = wasm[i - 1];
182
+ if (inst[0] === Opcodes.if && typeof inst[2] === 'string') {
183
+ // remove unneeded typeswitch checks
184
+
185
+ const type = inst[2].split('|')[1];
186
+ let missing = false;
187
+ if (type === 'Array') missing = !pages.hasArray;
188
+ if (type === 'String') missing = !pages.hasString;
189
+
190
+ if (missing) {
191
+ let j = i, depth = 0;
192
+ for (; j < wasm.length; j++) {
193
+ const op = wasm[j][0];
194
+ if (op === Opcodes.if || op === Opcodes.block || op === Opcodes.loop || op === Opcodes.try) depth++;
195
+ if (op === Opcodes.end) {
196
+ depth--;
197
+ if (depth <= 0) break;
198
+ }
199
+ }
164
200
 
165
- if (lastInst[1] === inst[1] && lastInst[0] === Opcodes.local_set && inst[0] === Opcodes.local_get) {
166
- // replace set, get -> tee (sets and returns)
167
- // local.set 0
168
- // local.get 0
169
- // -->
170
- // local.tee 0
201
+ wasm.splice(i - 3, 4 + j - i); // remove cond and this if
202
+ i -= 4;
203
+ inst = wasm[i];
171
204
 
172
- lastInst[0] = Opcodes.local_tee; // replace last inst opcode (set -> tee)
173
- wasm.splice(i, 1); // remove this inst (get)
205
+ if (optLog) log('opt', `removed unneeded typeswitch check`);
206
+ }
207
+ }
174
208
 
175
- getCount[inst[1]]--;
176
- i--;
177
- // if (optLog) log('opt', `consolidated set, get -> tee`);
178
- continue;
179
- }
209
+ if (inst[0] === Opcodes.end && inst[1] === 'TYPESWITCH_end') {
210
+ // remove unneeded entire typeswitch
180
211
 
181
- if ((lastInst[0] === Opcodes.local_get || lastInst[0] === Opcodes.global_get) && inst[0] === Opcodes.drop) {
182
- // replace get, drop -> nothing
183
- // local.get 0
184
- // drop
185
- // -->
186
- //
212
+ let j = i - 1, depth = -1, checks = 0;
213
+ for (; j > 0; j--) {
214
+ const op = wasm[j][0];
215
+ if (op === Opcodes.if || op === Opcodes.block || op === Opcodes.loop || op === Opcodes.try) {
216
+ depth++;
217
+ if (depth === 0) break;
218
+ }
219
+ if (op === Opcodes.end) depth--;
220
+ if (wasm[j][2]?.startsWith?.('TYPESWITCH')) checks++;
221
+ }
187
222
 
188
- getCount[lastInst[1]]--;
223
+ if (checks === 0) {
224
+ wasm.splice(j - 1, 2, [ Opcodes.drop ]); // remove typeswitch start
225
+ wasm.splice(i - 1, 1); // remove this inst
189
226
 
190
- wasm.splice(i - 1, 2); // remove this inst and last
191
- i -= 2;
192
- continue;
193
- }
227
+ if (optLog) log('opt', 'removed unneeded entire typeswitch');
194
228
 
195
- if (lastInst[0] === Opcodes.local_tee && inst[0] === Opcodes.drop) {
196
- // replace tee, drop -> set
197
- // local.tee 0
198
- // drop
199
- // -->
200
- // local.set 0
229
+ if (i > 0) i--;
230
+ continue;
231
+ }
232
+ }
201
233
 
202
- getCount[lastInst[1]]--;
234
+ if (i < 1) continue;
235
+ let lastInst = wasm[i - 1];
203
236
 
204
- lastInst[0] = Opcodes.local_set; // change last op
237
+ if (lastInst[1] === inst[1] && lastInst[0] === Opcodes.local_set && inst[0] === Opcodes.local_get) {
238
+ // replace set, get -> tee (sets and returns)
239
+ // local.set 0
240
+ // local.get 0
241
+ // -->
242
+ // local.tee 0
205
243
 
206
- wasm.splice(i, 1); // remove this inst
207
- i--;
208
- continue;
209
- }
244
+ lastInst[0] = Opcodes.local_tee; // replace last inst opcode (set -> tee)
245
+ wasm.splice(i, 1); // remove this inst (get)
210
246
 
211
- if ((lastInst[0] === Opcodes.i32_const || lastInst[0] === Opcodes.i64_const || lastInst[0] === Opcodes.f64_const) && inst[0] === Opcodes.drop) {
212
- // replace const, drop -> <nothing>
213
- // i32.const 0
214
- // drop
215
- // -->
216
- // <nothing>>
247
+ getCount[inst[1]]--;
248
+ i--;
249
+ // if (optLog) log('opt', `consolidated set, get -> tee`);
250
+ continue;
251
+ }
217
252
 
218
- wasm.splice(i - 1, 2); // remove this inst
219
- i -= 2;
220
- continue;
221
- }
253
+ if ((lastInst[0] === Opcodes.local_get || lastInst[0] === Opcodes.global_get) && inst[0] === Opcodes.drop) {
254
+ // replace get, drop -> nothing
255
+ // local.get 0
256
+ // drop
257
+ // -->
258
+ //
222
259
 
223
- if (inst[0] === Opcodes.eq && lastInst[0] === Opcodes.const && lastInst[1] === 0 && valtype !== 'f64') {
224
- // replace const 0, eq -> eqz
225
- // i32.const 0
226
- // i32.eq
227
- // -->
228
- // i32.eqz
229
-
230
- inst[0] = Opcodes.eqz[0][0]; // eq -> eqz
231
- wasm.splice(i - 1, 1); // remove const 0
232
- i--;
233
- continue;
234
- }
260
+ getCount[lastInst[1]]--;
235
261
 
236
- if (inst[0] === Opcodes.i32_wrap_i64 && (lastInst[0] === Opcodes.i64_extend_i32_s || lastInst[0] === Opcodes.i64_extend_i32_u)) {
237
- // remove unneeded i32 -> i64 -> i32
238
- // i64.extend_i32_s
239
- // i32.wrap_i64
240
- // -->
241
- // <nothing>
242
-
243
- wasm.splice(i - 1, 2); // remove this inst and last
244
- i -= 2;
245
- // if (optLog) log('opt', `removed redundant i32 -> i64 -> i32 conversion ops`);
246
- continue;
247
- }
262
+ wasm.splice(i - 1, 2); // remove this inst and last
263
+ i -= 2;
264
+ continue;
265
+ }
248
266
 
249
- if (inst[0] === Opcodes.i32_trunc_sat_f64_s[0] && (lastInst[0] === Opcodes.f64_convert_i32_u || lastInst[0] === Opcodes.f64_convert_i32_s)) {
250
- // remove unneeded i32 -> f64 -> i32
251
- // f64.convert_i32_s || f64.convert_i32_u
252
- // i32.trunc_sat_f64_s || i32.trunc_sat_f64_u
253
- // -->
254
- // <nothing>
255
-
256
- wasm.splice(i - 1, 2); // remove this inst and last
257
- i -= 2;
258
- // if (optLog) log('opt', `removed redundant i32 -> f64 -> i32 conversion ops`);
259
- continue;
260
- }
267
+ if (lastInst[0] === Opcodes.local_tee && inst[0] === Opcodes.drop) {
268
+ // replace tee, drop -> set
269
+ // local.tee 0
270
+ // drop
271
+ // -->
272
+ // local.set 0
261
273
 
262
- if (tailCall && lastInst[0] === Opcodes.call && inst[0] === Opcodes.return) {
263
- // replace call, return with tail calls (return_call)
264
- // call X
265
- // return
266
- // -->
267
- // return_call X
274
+ getCount[lastInst[1]]--;
268
275
 
269
- lastInst[0] = Opcodes.return_call; // change last inst return -> return_call
276
+ lastInst[0] = Opcodes.local_set; // change last op
270
277
 
271
- wasm.splice(i, 1); // remove this inst (return)
272
- i--;
273
- if (optLog) log('opt', `tail called return, call`);
274
- continue;
275
- }
278
+ wasm.splice(i, 1); // remove this inst
279
+ i--;
280
+ continue;
281
+ }
276
282
 
277
- if (false && i === wasm.length - 1 && inst[0] === Opcodes.return) {
278
- // replace final return, end -> end (wasm has implicit return)
279
- // return
280
- // end
281
- // -->
282
- // end
283
-
284
- wasm.splice(i, 1); // remove this inst (return)
285
- i--;
286
- // if (optLog) log('opt', `removed redundant return at end`);
287
- continue;
288
- }
283
+ if ((lastInst[0] === Opcodes.i32_const || lastInst[0] === Opcodes.i64_const || lastInst[0] === Opcodes.f64_const) && inst[0] === Opcodes.drop) {
284
+ // replace const, drop -> <nothing>
285
+ // i32.const 0
286
+ // drop
287
+ // -->
288
+ // <nothing>
289
+
290
+ wasm.splice(i - 1, 2); // remove these inst
291
+ i -= 2;
292
+ continue;
293
+ }
294
+
295
+ if (inst[0] === Opcodes.eq && lastInst[0] === Opcodes.const && lastInst[1] === 0 && valtype !== 'f64') {
296
+ // replace const 0, eq -> eqz
297
+ // i32.const 0
298
+ // i32.eq
299
+ // -->
300
+ // i32.eqz
301
+
302
+ inst[0] = Opcodes.eqz[0][0]; // eq -> eqz
303
+ wasm.splice(i - 1, 1); // remove const 0
304
+ i--;
305
+ continue;
306
+ }
307
+
308
+ if (inst[0] === Opcodes.i32_wrap_i64 && (lastInst[0] === Opcodes.i64_extend_i32_s || lastInst[0] === Opcodes.i64_extend_i32_u)) {
309
+ // remove unneeded i32 -> i64 -> i32
310
+ // i64.extend_i32_s
311
+ // i32.wrap_i64
312
+ // -->
313
+ // <nothing>
289
314
 
290
- if (i < 2) continue;
291
- const lastLastInst = wasm[i - 2];
315
+ wasm.splice(i - 1, 2); // remove this inst and last
316
+ i -= 2;
317
+ // if (optLog) log('opt', `removed redundant i32 -> i64 -> i32 conversion ops`);
318
+ continue;
319
+ }
320
+
321
+ if (inst[0] === Opcodes.i32_trunc_sat_f64_s[0] && (lastInst[0] === Opcodes.f64_convert_i32_u || lastInst[0] === Opcodes.f64_convert_i32_s)) {
322
+ // remove unneeded i32 -> f64 -> i32
323
+ // f64.convert_i32_s || f64.convert_i32_u
324
+ // i32.trunc_sat_f64_s || i32.trunc_sat_f64_u
325
+ // -->
326
+ // <nothing>
327
+
328
+ wasm.splice(i - 1, 2); // remove this inst and last
329
+ i -= 2;
330
+ // if (optLog) log('opt', `removed redundant i32 -> f64 -> i32 conversion ops`);
331
+ continue;
332
+ }
333
+
334
+ if (lastInst[0] === Opcodes.const && (inst === Opcodes.i32_to || inst === Opcodes.i32_to_u)) {
335
+ // change const and immediate i32 convert to i32 const
336
+ // f64.const 0
337
+ // i32.trunc_sat_f64_s || i32.trunc_sat_f64_u
338
+ // -->
339
+ // i32.const 0
340
+
341
+ wasm[i - 1] = number((valtype === 'f64' ? read_ieee754_binary64 : read_signedLEB128)(lastInst.slice(1)), Valtype.i32)[0]; // f64.const -> i32.const
342
+
343
+ wasm.splice(i, 1); // remove this inst
344
+ i--;
345
+ if (optLog) log('opt', `converted const -> i32 convert into i32 const`);
346
+ continue;
347
+ }
348
+
349
+ if (lastInst[0] === Opcodes.i32_const && (inst === Opcodes.i32_from || inst === Opcodes.i32_from_u)) {
350
+ // change i32 const and immediate convert to const (opposite way of previous)
351
+ // i32.const 0
352
+ // f64.convert_i32_s || f64.convert_i32_u
353
+ // -->
354
+ // f64.const 0
355
+
356
+ wasm[i - 1] = number(read_signedLEB128(lastInst.slice(1)))[0]; // i32.const -> f64.const
357
+
358
+ wasm.splice(i, 1); // remove this inst
359
+ i--;
360
+ if (optLog) log('opt', `converted i32 const -> convert into const`);
361
+ continue;
362
+ }
363
+
364
+ if (tailCall && lastInst[0] === Opcodes.call && inst[0] === Opcodes.return) {
365
+ // replace call, return with tail calls (return_call)
366
+ // call X
367
+ // return
368
+ // -->
369
+ // return_call X
370
+
371
+ lastInst[0] = Opcodes.return_call; // change last inst return -> return_call
372
+
373
+ wasm.splice(i, 1); // remove this inst (return)
374
+ i--;
375
+ if (optLog) log('opt', `tail called return, call`);
376
+ continue;
377
+ }
378
+
379
+ if (false && i === wasm.length - 1 && inst[0] === Opcodes.return) {
380
+ // replace final return, end -> end (wasm has implicit return)
381
+ // return
382
+ // end
383
+ // -->
384
+ // end
292
385
 
293
- if (depth.length === 2) {
294
- // hack to remove unneeded before get in for loops with (...; i++)
295
- if (lastLastInst[0] === Opcodes.end && lastInst[1] === inst[1] && lastInst[0] === Opcodes.local_get && inst[0] === Opcodes.local_get) {
386
+ wasm.splice(i, 1); // remove this inst (return)
387
+ i--;
388
+ // if (optLog) log('opt', `removed redundant return at end`);
389
+ continue;
390
+ }
391
+
392
+ // remove unneeded before get with update exprs (n++, etc) when value is unused
393
+ if (i < wasm.length - 4 && lastInst[1] === inst[1] && lastInst[0] === Opcodes.local_get && inst[0] === Opcodes.local_get && wasm[i + 1][0] === Opcodes.const && [Opcodes.add, Opcodes.sub].includes(wasm[i + 2][0]) && wasm[i + 3][0] === Opcodes.local_set && wasm[i + 3][1] === inst[1] && (wasm[i + 4][0] === Opcodes.drop || wasm[i + 4][0] === Opcodes.br)) {
296
394
  // local.get 1
297
395
  // local.get 1
298
396
  // -->
299
397
  // local.get 1
300
398
 
301
399
  // remove drop at the end as well
302
- if (wasm[i + 4][0] === Opcodes.drop) {
303
- wasm.splice(i + 4, 1);
304
- }
400
+ if (wasm[i + 4][0] === Opcodes.drop) wasm.splice(i + 4, 1);
305
401
 
306
402
  wasm.splice(i, 1); // remove this inst (second get)
307
403
  i--;
308
404
  continue;
309
405
  }
310
- }
311
406
 
312
- if (lastLastInst[1] === inst[1] && inst[0] === Opcodes.local_get && lastInst[0] === Opcodes.local_tee && lastLastInst[0] === Opcodes.local_set) {
313
- // local.set x
314
- // local.tee y
315
- // local.get x
316
- // -->
317
- // <nothing>
318
-
319
- wasm.splice(i - 2, 3); // remove this, last, 2nd last insts
320
- if (optLog) log('opt', `removed redundant inline param local handling`);
321
- i -= 3;
322
- continue;
407
+ if (i < 2) continue;
408
+ const lastLastInst = wasm[i - 2];
409
+
410
+ if (lastLastInst[1] === inst[1] && inst[0] === Opcodes.local_get && lastInst[0] === Opcodes.local_tee && lastLastInst[0] === Opcodes.local_set) {
411
+ // local.set x
412
+ // local.tee y
413
+ // local.get x
414
+ // -->
415
+ // <nothing>
416
+
417
+ wasm.splice(i - 2, 3); // remove this, last, 2nd last insts
418
+ if (optLog) log('opt', `removed redundant inline param local handling`);
419
+ i -= 3;
420
+ continue;
421
+ }
323
422
  }
324
- }
325
423
 
326
- if (optLevel < 2) continue;
424
+ if (optLevel < 2) continue;
327
425
 
328
- if (optLog) log('opt', `get counts: ${Object.keys(f.locals).map(x => `${x} (${f.locals[x].idx}): ${getCount[f.locals[x].idx]}`).join(', ')}`);
426
+ if (optLog) log('opt', `get counts: ${Object.keys(f.locals).map(x => `${x} (${f.locals[x].idx}): ${getCount[f.locals[x].idx]}`).join(', ')}`);
329
427
 
330
- // remove unneeded var: remove pass
331
- // locals only got once. we don't need to worry about sets/else as these are only candidates and we will check for matching set + get insts in wasm
332
- let unneededCandidates = Object.keys(getCount).filter(x => getCount[x] === 0 || (getCount[x] === 1 && setCount[x] === 0)).map(x => parseInt(x));
333
- if (optLog) log('opt', `found unneeded locals candidates: ${unneededCandidates.join(', ')} (${unneededCandidates.length}/${Object.keys(getCount).length})`);
428
+ // remove unneeded var: remove pass
429
+ // locals only got once. we don't need to worry about sets/else as these are only candidates and we will check for matching set + get insts in wasm
430
+ let unneededCandidates = Object.keys(getCount).filter(x => getCount[x] === 0 || (getCount[x] === 1 && setCount[x] === 0)).map(x => parseInt(x));
431
+ if (optLog) log('opt', `found unneeded locals candidates: ${unneededCandidates.join(', ')} (${unneededCandidates.length}/${Object.keys(getCount).length})`);
334
432
 
335
- // note: disabled for now due to instability
336
- if (unneededCandidates.length > 0 && false) for (let i = 0; i < wasm.length; i++) {
337
- if (i < 1) continue;
433
+ // note: disabled for now due to instability
434
+ if (unneededCandidates.length > 0 && false) for (let i = 0; i < wasm.length; i++) {
435
+ if (i < 1) continue;
338
436
 
339
- const inst = wasm[i];
340
- const lastInst = wasm[i - 1];
437
+ const inst = wasm[i];
438
+ const lastInst = wasm[i - 1];
341
439
 
342
- if (lastInst[1] === inst[1] && lastInst[0] === Opcodes.local_set && inst[0] === Opcodes.local_get && unneededCandidates.includes(inst[1])) {
343
- // local.set N
344
- // local.get N
345
- // -->
346
- // <nothing>
440
+ if (lastInst[1] === inst[1] && lastInst[0] === Opcodes.local_set && inst[0] === Opcodes.local_get && unneededCandidates.includes(inst[1])) {
441
+ // local.set N
442
+ // local.get N
443
+ // -->
444
+ // <nothing>
347
445
 
348
- wasm.splice(i - 1, 2); // remove insts
349
- i -= 2;
350
- delete f.locals[Object.keys(f.locals)[inst[1]]]; // remove from locals
351
- if (optLog) log('opt', `removed redundant local (get set ${inst[1]})`);
352
- }
446
+ wasm.splice(i - 1, 2); // remove insts
447
+ i -= 2;
448
+ delete f.locals[Object.keys(f.locals)[inst[1]]]; // remove from locals
449
+ if (optLog) log('opt', `removed redundant local (get set ${inst[1]})`);
450
+ }
353
451
 
354
- if (inst[0] === Opcodes.local_tee && unneededCandidates.includes(inst[1])) {
355
- // local.tee N
356
- // -->
357
- // <nothing>
452
+ if (inst[0] === Opcodes.local_tee && unneededCandidates.includes(inst[1])) {
453
+ // local.tee N
454
+ // -->
455
+ // <nothing>
358
456
 
359
- wasm.splice(i, 1); // remove inst
360
- i--;
457
+ wasm.splice(i, 1); // remove inst
458
+ i--;
361
459
 
362
- const localName = Object.keys(f.locals)[inst[1]];
363
- const removedIdx = f.locals[localName].idx;
364
- delete f.locals[localName]; // remove from locals
460
+ const localName = Object.keys(f.locals)[inst[1]];
461
+ const removedIdx = f.locals[localName].idx;
462
+ delete f.locals[localName]; // remove from locals
365
463
 
366
- // fix locals index for locals after
367
- for (const x in f.locals) {
368
- const local = f.locals[x];
369
- if (local.idx > removedIdx) local.idx--;
370
- }
464
+ // fix locals index for locals after
465
+ for (const x in f.locals) {
466
+ const local = f.locals[x];
467
+ if (local.idx > removedIdx) local.idx--;
468
+ }
371
469
 
372
- for (const inst of wasm) {
373
- if ((inst[0] === Opcodes.local_get || inst[0] === Opcodes.local_set || inst[0] === Opcodes.local_tee) && inst[1] > removedIdx) inst[1]--;
374
- }
470
+ for (const inst of wasm) {
471
+ if ((inst[0] === Opcodes.local_get || inst[0] === Opcodes.local_set || inst[0] === Opcodes.local_tee) && inst[1] > removedIdx) inst[1]--;
472
+ }
375
473
 
376
- unneededCandidates.splice(unneededCandidates.indexOf(inst[1]), 1);
377
- unneededCandidates = unneededCandidates.map(x => x > removedIdx ? (x - 1) : x);
474
+ unneededCandidates.splice(unneededCandidates.indexOf(inst[1]), 1);
475
+ unneededCandidates = unneededCandidates.map(x => x > removedIdx ? (x - 1) : x);
378
476
 
379
- if (optLog) log('opt', `removed redundant local ${localName} (tee ${inst[1]})`);
477
+ if (optLog) log('opt', `removed redundant local ${localName} (tee ${inst[1]})`);
478
+ }
380
479
  }
381
- }
382
480
 
383
- const useCount = {};
384
- for (const x in f.locals) useCount[f.locals[x].idx] = 0;
481
+ const useCount = {};
482
+ for (const x in f.locals) useCount[f.locals[x].idx] = 0;
385
483
 
386
- // final pass
387
- depth = [];
388
- for (let i = 0; i < wasm.length; i++) {
389
- let inst = wasm[i];
390
- if (inst[0] === Opcodes.local_get || inst[0] === Opcodes.local_set || inst[0] === Opcodes.local_tee) useCount[inst[1]]++;
484
+ // final pass
485
+ depth = [];
486
+ for (let i = 0; i < wasm.length; i++) {
487
+ let inst = wasm[i];
488
+ if (inst[0] === Opcodes.local_get || inst[0] === Opcodes.local_set || inst[0] === Opcodes.local_tee) useCount[inst[1]]++;
391
489
 
392
- if (inst[0] === Opcodes.if || inst[0] === Opcodes.loop || inst[0] === Opcodes.block) depth.push(inst[0]);
393
- if (inst[0] === Opcodes.end) depth.pop();
490
+ if (inst[0] === Opcodes.if || inst[0] === Opcodes.loop || inst[0] === Opcodes.block) depth.push(inst[0]);
491
+ if (inst[0] === Opcodes.end) depth.pop();
394
492
 
395
- if (i < 2) continue;
396
- const lastInst = wasm[i - 1];
397
- const lastLastInst = wasm[i - 2];
493
+ if (i < 2) continue;
494
+ const lastInst = wasm[i - 1];
495
+ const lastLastInst = wasm[i - 2];
398
496
 
399
- // todo: add more math ops
400
- if (optLevel >= 3 && (inst[0] === Opcodes.add || inst[0] === Opcodes.sub || inst[0] === Opcodes.mul) && lastLastInst[0] === Opcodes.const && lastInst[0] === Opcodes.const) {
401
- // inline const math ops
402
- // i32.const a
403
- // i32.const b
404
- // i32.add
405
- // -->
406
- // i32.const a + b
497
+ // todo: add more math ops
498
+ if (optLevel >= 3 && (inst[0] === Opcodes.add || inst[0] === Opcodes.sub || inst[0] === Opcodes.mul) && lastLastInst[0] === Opcodes.const && lastInst[0] === Opcodes.const) {
499
+ // inline const math ops
500
+ // i32.const a
501
+ // i32.const b
502
+ // i32.add
503
+ // -->
504
+ // i32.const a + b
407
505
 
408
- // does not work with leb encoded
409
- if (lastInst.length > 2 || lastLastInst.length > 2) continue;
506
+ // does not work with leb encoded
507
+ if (lastInst.length > 2 || lastLastInst.length > 2) continue;
410
508
 
411
- let a = lastLastInst[1];
412
- let b = lastInst[1];
509
+ let a = lastLastInst[1];
510
+ let b = lastInst[1];
413
511
 
414
- const val = performWasmOp(inst[0], a, b);
415
- if (optLog) log('opt', `inlined math op (${a} ${inst[0].toString(16)} ${b} -> ${val})`);
512
+ const val = performWasmOp(inst[0], a, b);
513
+ if (optLog) log('opt', `inlined math op (${a} ${inst[0].toString(16)} ${b} -> ${val})`);
416
514
 
417
- wasm.splice(i - 2, 3, ...number(val)); // remove consts, math op and add new const
418
- i -= 2;
515
+ wasm.splice(i - 2, 3, ...number(val)); // remove consts, math op and add new const
516
+ i -= 2;
517
+ }
419
518
  }
420
- }
421
519
 
422
- const localIdxs = Object.values(f.locals).map(x => x.idx);
423
- // remove unused locals (cleanup)
424
- for (const x in useCount) {
425
- if (useCount[x] === 0) {
426
- const name = Object.keys(f.locals)[localIdxs.indexOf(parseInt(x))];
427
- if (optLog) log('opt', `removed internal local ${x} (${name})`);
428
- delete f.locals[name];
520
+ const localIdxs = Object.values(f.locals).map(x => x.idx);
521
+ // remove unused locals (cleanup)
522
+ for (const x in useCount) {
523
+ if (useCount[x] === 0) {
524
+ const name = Object.keys(f.locals)[localIdxs.indexOf(parseInt(x))];
525
+ if (optLog) log('opt', `removed internal local ${x} (${name})`);
526
+ delete f.locals[name];
527
+ }
429
528
  }
430
- }
431
529
 
432
- if (optLog) log('opt', `final use counts: ${Object.keys(f.locals).map(x => `${x} (${f.locals[x].idx}): ${useCount[f.locals[x].idx]}`).join(', ')}`);
530
+ if (optLog) log('opt', `final use counts: ${Object.keys(f.locals).map(x => `${x} (${f.locals[x].idx}): ${useCount[f.locals[x].idx]}`).join(', ')}`);
531
+ }
433
532
  }
434
533
 
435
534
  // return funcs;