Daniel Wirtz
f7c734789e
Update Binaryen to latest; Various fixes
2018-10-11 08:49:08 +02:00
dcodeIO
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
dcodeIO
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
Daniel Wirtz
dc0f271fc2
Initial GC integration ( #196 )
2018-08-02 18:23:02 +02:00
dcodeIO
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
dcodeIO
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
dcodeIO
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
dcodeIO
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
dcodeIO
829af2285c
Fix continue labels in 'for' loops skipping the incrementor
2018-05-23 11:32:12 +02:00
dcodeIO
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
dcodeIO
6c0a5c47d9
Update Binaryen and take care of WebAssembly/binaryen#1547
2018-05-14 16:55:55 +02:00
Daniel Wirtz
50f6c1c460
Update internal ABI to zero/sign-extend where necessary only ( #87 )
2018-05-06 00:00:54 +02:00
Max Graey
a15457d8b9
Simplify isFinite & isNaN ( #78 )
2018-04-18 15:14:24 +02:00
dcodeIO
4929fca363
Move some numeric builtins to stdlib; Minor refactoring
2018-04-17 02:50:38 +02:00
dcodeIO
748e811137
Proper isNaN/isFinite without a temp. local
2018-04-12 20:40:00 +02:00
dcodeIO
06198a3723
Rename lib prefix to '~lib' (parens aren't valid); Add built-in alignof<T>; Prepare for ArrayBufferView
2018-04-02 19:05:26 +02:00
Daniel Wirtz
164f134053
Even more math ( #56 )
...
Remaining implementations of JavaScript's Math functions (except sin/cos/tan), both double (Math) and single (Mathf) precision, ported from musl incl. tests from libc-test, plus some changes to match JS semantics. Also binds fmod to `%` and pow to `**`.
2018-03-30 17:25:54 +02:00