Commit Graph

91 Commits

Author SHA1 Message Date
d90cd085e5 Update Binaryen 2018-09-13 23:10:49 +02:00
dc0f271fc2 Initial GC integration (#196) 2018-08-02 18:23:02 +02:00
2fa7d6678c Make sure all roots are iterated by delaying builtin generation; Cleanup 2018-07-20 20:33:50 +02:00
41ad2f8a70 Add a more convenient tracing utility for debugging; Fix basic GC test 2018-07-20 16:49:27 +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
a1b75b69b7 Rename memory instructions; Rework constant handling 2018-07-18 23:49:32 +02:00
4b8500355a Skip inlining and emit a warning when trying to inline a function into itself 2018-07-14 18:01:19 +02:00
3b0fd9aac2 Implement isDefined and isConstant builtins 2018-07-14 16:42:00 +02:00
cd14b296ce Refactor resolve infrastructure to its own file
This has become a little clumsy over time. Doesn't hurt to have it in its own place to get a grasp of it more easily.
2018-07-13 00:22:22 +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
558ed78cc9 Add a more helpful error message when you haven't defined an allocator (#108)
Also adds a system for writing tests that assert that certain error codes are triggered so that I could test this.
2018-05-22 12:09:05 +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
50f6c1c460 Update internal ABI to zero/sign-extend where necessary only (#87) 2018-05-06 00:00:54 +02:00
8b5d1d7f74 Minor refactoring; Fix n-body TS build 2018-04-28 18:07:20 +02:00
2aea14b518 Add more inline-assembler-ish builtins; Update Binaryen 2018-04-27 19:12:25 +02:00
06f99406be Experimenting with inline-assembler-ish explicit builtins
Starting with explicit loads and stores as part of the respective type namespaces. Might become handy for use with portable code, because these can be polyfilled, while load<T> and store<T> can't.
2018-04-27 00:08:41 +02:00
6d6d1dddcf Improve inlining where locals can be aliased; Add a crude mechanism for explicit unchecked array accesses
The `unchecked` builtin should be handled with ultimate care and it would be a lot better if there'd be a mechanism doing this automatically.
2018-04-25 05:04:35 +02:00
2ff1bb745a Fix some diagnostic issues when skipping invalid statements, see #80; Make game-of-life example somewhat interactive; Update dist files 2018-04-22 23:13:02 +02:00
9579086699 Add what we have for GC so far
Not functional yet, but might be good to have for discussing it.
2018-04-18 16:32:07 +02:00
5a2f834c0d Fix game-of-life example inconsistencies; Fix ternary expression issues in void contexts and variable statements; Simplify HEAP_BASE handling 2018-04-18 15:12:33 +02:00
4929fca363 Move some numeric builtins to stdlib; Minor refactoring 2018-04-17 02:50:38 +02:00
748e811137 Proper isNaN/isFinite without a temp. local 2018-04-12 20:40:00 +02:00
623597c23a Make the transition to ArrayBuffer backed Arrays (#70)
* Traverse base classes when resolving overloads
* Implement preliminary TypedArray accessors
* Extract decorator flags from common flags to make space
* Add '**' overload
* Implement basic explicit inlining
* Support inlining of instance methods
* Reduce number of required locals when inlining
* Implement inlining of operator overloads
* Fix issues when inlining generic functions
2018-04-11 23:35:19 +02:00
dcc0e284fb Make type checking builtins also accept just a type argument 2018-04-07 23:31:36 +02:00
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
59a22c1842 A little 'asinit' CLI tool for quickly setting up a project; Minor refactoring 2018-04-01 23:46:41 +02:00
6ff69394f0 Minor cleanup 2018-03-31 18:18:55 +02:00
e75d006d26 Implement Math/Mathf.pow 2018-03-26 03:50:06 +02:00
721d77012b Math scaffolding 2018-03-24 17:18:15 +01:00
664f2a1c0d Add offsetof<T> builtin; Put a function's trampoline into the function table if a it has optional parameters; TypedArray scaffolding 2018-03-24 00:38:49 +01:00
9cc0fcd611 Initial ArrayBuffer implementation; Conditional allocation within constructors; Explicit constructor return values 2018-03-23 01:47:01 +01:00
00e6d613a9 Fix an issue with asc not finding bundled library files in the browser; Minor cleanup 2018-03-21 23:27:53 +01:00
49f4d3dff1 Eliminate @builtin decorator for compatibility with TS 2018-03-21 16:29:08 +01:00
2c0ddf4f80 Support 'this' in static functions, fixes #45; Fix propagation of 'ambient' flag 2018-03-20 12:02:05 +01:00
0fef69e445 Set up documentation generation 2018-03-19 01:12:18 +01:00
5eb10d404f Document the purpose of most files 2018-03-17 23:41:48 +01:00
2ed9fac171 Initial compile time type check builtins 2018-03-17 12:54:37 +01:00
faac3c31eb AST cleanup; Definition generators scaffolding 2018-03-17 01:37:05 +01:00
23a7db4dc3 Ensure consistent variable modifiers
'var' is a distinct local or mutable global, 'let' a shared local
2018-03-13 02:32:10 +01:00
423533c6b0 Implement function types / indirect calls / trampolines (#39) 2018-03-12 14:06:39 +01:00
4633fdab96 Update binary expression inference, see #35; Update dependencies 2018-03-01 19:42:07 +01:00
d4c00eaba3 Revised implicit type conversions; Initial function expression compilation 2018-02-28 01:48:01 +01:00
8dc517e352 Cleanup; Initial tslint integration 2018-02-25 00:13:39 +01:00
48cbbbbd68 More cleanup 2018-02-16 18:57:51 +01:00
d31e484b15 Cleanup; Fix an issue with 'let' declarations reusing a local 2018-02-14 19:21:31 +01:00
ad92d91f01 Move built-in declarations to actual sources; Remove declaration is null checks; Resolve calls 2018-02-09 02:31:48 +01:00
4736227879 Update binaryen to latest nightly; Source map support 2018-02-02 03:07:54 +01:00
9e3b6f202d Naive parseFloat 2018-01-29 07:42:40 +01:00
3165f4337f Refactor compilation of aborts and terminate with unreachable
Because of the latter, we can't test it anymore without trapping, but that's somewhat the point
2018-01-27 17:02:52 +01:00
5d76ba9437 Wire assertions to global abort, see #8 2018-01-27 16:23:00 +01:00