af00bdeefe
use more useful defaults for -O, fix an utoa issue
2019-05-24 14:45:27 +02:00
51fdf9db4f
fix
2019-05-23 03:08:25 +02:00
3e480d9423
progress
2019-05-20 23:10:06 +02:00
da4a7751fd
optimize logical and/or, initial null checking in flows
2019-04-09 03:04:45 +02:00
c16c19e18d
unify runtime header
2019-04-08 23:22:13 +02:00
e1070cee86
rtti & refactoring
2019-04-06 20:17:48 +02:00
a3095478a3
Merge branch 'master' into runtime
2019-03-27 16:10:59 +01:00
b2adf8b1e2
Update dependencies and rebuild dist files
2019-03-27 15:50:05 +01:00
3146f8f9e0
use gc interface directly, document
2019-03-26 23:35:08 +01:00
7693b543f4
optimize array literal init, warn on unsupported inlining
2019-03-19 08:20:10 +01:00
f21b339563
checked builtin array get, optimize abv layout
2019-03-17 08:46:26 +01:00
e63c6bd388
local flow flags, see what works
2019-03-17 01:35:44 +01:00
cdec865bef
Update Binaryen to latest nightly
2019-03-08 16:19:46 +01:00
208dc2f1de
Implement Mathf.sin/cos/tan ( #491 )
2019-03-05 19:36:22 +01:00
4e1bba3a24
Use Binaryen's function signature naming scheme ( #522 )
2019-03-01 00:01:23 +01:00
7184db6dde
Update Binaryen to latest and regenerate dist files
2019-02-28 18:26:04 +01:00
6b495f71d0
Ensure Math.clz32/imul compatibility with JS ( #474 )
2019-02-21 00:32:58 +01:00
0c64f21250
Rework resolver ( #489 )
...
* Rework IR and resolver to use nested lookup tables
* Integrate types into IR
* Make components prefer IR, slimmed down AST
* Implement `export *`
* Add `@lazy` annotation and remove `--noTreeShaking`
* Add `@start` annotation and remove magic `main`
* Related refactoring, cleanup and docs
2019-02-21 00:11:22 +01:00
2f1a6c44ce
Add SIMD prerequisites ( #469 )
2019-02-07 15:26:26 +01:00
831054dfd3
Rework inlining logic ( #463 )
2019-02-06 23:42:43 +01:00
cd1cfe6957
Update Binaryen to latest and rebuild dist files
2019-02-05 17:12:10 +01:00
c7441066dc
Minor math tweaks + ipow32f/ipow64f ( #428 )
2019-01-24 23:17:44 +01:00
d3715688fc
Fix Math.imul and add tests ( #432 )
2019-01-24 01:23:53 +01:00
20f4092eb2
Update Binaryen and other dependencies; Update dist files
2019-01-09 13:02:47 +01:00
a661ff7d89
Update Binaryen to latest
2018-12-01 03:09:43 +01:00
c30c62e383
Cast to bool by comparing to zero ( #343 )
2018-11-23 15:20:52 +01:00
4944280cdc
Add Math.signbit ( #333 )
2018-11-18 11:46:48 +01:00
410036e445
Use mixed Horner scheme in Math.exp/expm1 to improve instruction parallelization ( #311 )
2018-11-09 17:56:42 +01:00
4f95dce6e2
Do not emit debug info by default
...
This basically flips the --noDebug flag to become a --debug flag, so some optimizations, like inlining, aren't skipped by default, which might be unexpected.
2018-11-09 12:28:10 +01:00
2bdc2a72f1
Use stack IR when emitting text format ( #312 )
2018-11-08 08:04:24 +01:00
d864bef1eb
Improve per-bit divmod loop for mod & rem ( #307 )
2018-10-30 15:10:50 +01:00
e58582e9e9
Minor remquof improvemnts ( #306 )
2018-10-27 18:27:54 +02:00
376afd45fc
Improve Math routines; Add Mathf-specific prng ( #297 )
2018-10-26 00:10:17 +02:00
f7c734789e
Update Binaryen to latest; Various fixes
2018-10-11 08:49:08 +02:00
16d1a833dd
Always add a null function at table index zero
...
This allows function references (a table index internally) to be nullable
2018-09-17 01:48:35 +02:00
d90cd085e5
Update Binaryen
2018-09-13 23:10:49 +02:00
6949cf9f9e
Switch signed/unsigned instructions when upcasting 32- to 64-bit integers, fixes #247
...
Matches C semantics now. Turns around some instructions in tests, especially libm, but doesn't break anything.
2018-09-10 14:25:33 +02:00
c27b6e8951
Add integer power functions ( #212 )
2018-09-09 04:07:27 +02:00
631478c7c9
Rework static memory segment creation; Fix stdlib gc hooks not marking own fields; Align everything to 8 bytes that might be touched by GC
2018-08-04 00:36:59 +02:00
dc0f271fc2
Initial GC integration ( #196 )
2018-08-02 18:23:02 +02:00
34839353fd
Inline isNaN and isFinite
...
Looking at our existing tests it seems that inlining these can be performed by reusing locals most of the time, and sometimes enables erasing quite a bit of unnecessary code when optimizing.
2018-07-19 04:12:40 +02:00
26e46f6f86
Reintroduce builtin decorator so these can appear anywhere in stdlib again
...
Avoids wrapping an undocumented function within 'memory.size' for example.
2018-07-19 02:10:04 +02:00
9c16363796
Initial external decorator for annotating explicit import names; Use file name as default module name in imports; Emit empty memory if there are no static segments; Update TLSF and examples accordingly
2018-06-28 01:44:32 +02:00
7a8995b18b
Properly inline getters; Simplify blocks when last statement returns
2018-06-22 15:26:59 +02:00
c6ec5e2832
Utilize Binaryen's -O4
...
When specifying -O3 or -Oz, asc now automatically increases the optimize level to 4, then including costly non-LLVM optimizations for blocky code, in turn achieving similar results as an LLVM-based generator.
2018-06-09 14:05:33 +02:00
7ad13f9d65
Add a 'call_indirect' builtin to emit arbitrary calls (might trap at runtime); Optimize 'for' loop compilation a bit
2018-05-25 15:59:17 +02:00
829af2285c
Fix continue labels in 'for' loops skipping the incrementor
2018-05-23 11:32:12 +02:00
73417a9a06
Move 'abort' out of builtins and make it overridable
...
Now defaults to 'env.abort' as imported in lib/env.ts, but can be overridden through '--use abort=someThingElseOrNothingAtAll'
2018-05-21 18:48:29 +02:00
6c0a5c47d9
Update Binaryen and take care of WebAssembly/binaryen#1547
2018-05-14 16:55:55 +02:00
e415377cda
Avoid trampolines where optional arguments are constant literals, see #102 ; Fix temporary local flags not being cleared; Fix inlined temporary locals not being free'd; Fix inlined flows not breaking after returns; Allow changetype of u32s, i.e. function pointers
2018-05-11 16:31:56 +02:00