212 Commits

Author SHA1 Message Date
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
d90cd085e5 Update Binaryen 2018-09-13 23:10:49 +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
Andy Hanson
ef2c0c623e Improve error message for accessing method like a field (#253) 2018-09-10 03:21:30 +02:00
Andy Hanson
3605630747 Support calling the result of a getter (#252) 2018-09-10 03:19:11 +02:00
dcodeIO
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
Daniel Wirtz
dc0f271fc2
Initial GC integration (#196) 2018-08-02 18:23:02 +02:00
dcodeIO
2fa7d6678c Make sure all roots are iterated by delaying builtin generation; Cleanup 2018-07-20 20:33:50 +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
96411c7398 Include a fix for #176 2018-07-19 00:01:00 +02:00
dcodeIO
a1b75b69b7 Rename memory instructions; Rework constant handling 2018-07-18 23:49:32 +02:00
dcodeIO
1928f46cb9 Also handle indirect recursive inlining 2018-07-14 18:21:11 +02:00
dcodeIO
4b8500355a Skip inlining and emit a warning when trying to inline a function into itself 2018-07-14 18:01:19 +02:00
dcodeIO
3b0fd9aac2 Implement isDefined and isConstant builtins 2018-07-14 16:42:00 +02:00
dcodeIO
9e508de69a Implement object literal parsing; Instantiate classes from object literals
Essentially, if the contextual type is a class with a constructor that takes zero arguments or doesn't have a constructor at all, an object literal can be used to initialize a new instance of that class with preset values.
2018-07-14 04:00:04 +02:00
dcodeIO
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
dcodeIO
c4199673ef Support parsing of class expressions, see #161 2018-07-10 03:03:59 +02:00
dcodeIO
c4ebc8c291 Fix missing dependency in asc, see #157; Downgrade ts-node to v6 2018-07-04 21:47:58 +02:00
dcodeIO
82da2d1f6d Add compiler hints 2018-06-29 00:14:42 +02:00
dcodeIO
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
dcodeIO
27e61f8f67 Remove noMemory option; Omit 'start' if 'main' is present; Unwrap more unnecessary blocks 2018-06-27 19:03:39 +02:00
dcodeIO
0d64c9661a Flow improvements
Makes the internal API for working with flows more explicit in an attempt to avoid further issues. Also tackles remaining issues with 'continue' statements in 'for' loops.
2018-06-27 02:53:45 +02:00
dcodeIO
188b4e48ce Try parsing signatures only if node is callable, see #149; Minor refactoring 2018-06-24 01:04:24 +02:00
dcodeIO
7a8995b18b Properly inline getters; Simplify blocks when last statement returns 2018-06-22 15:26:59 +02:00
dcodeIO
525795b354 Infer u32 from 32-bit integer literals if MSB is set 2018-06-21 22:47:37 +02:00
dcodeIO
c74eed2bd8 Add initial std Symbol; Fix some type inference issues 2018-06-21 19:42:18 +02:00
dcodeIO
7ed55f7ea6 Emit a proper error when trying to return a value from a void function, fixes #142 2018-06-21 03:47:05 +02:00
dcodeIO
dd4be7b693 Fix some map issues; Simplify internal ArrayBuffer API a bit 2018-06-20 15:51:47 +02:00
dcodeIO
25b433dca9 Support 'import * as' directives, see #27 2018-06-12 00:45:19 +02:00
dcodeIO
47f2e0950a Make 'instanceof' behave like TS if the lhs is nullable 2018-06-09 02:01:45 +02:00
dcodeIO
7478c8a0d3 Initial implementation of 'instanceof'
Works like an assignability check for now / does not yet honor nullables.
2018-06-07 17:04:41 +02:00
dcodeIO
cea69a6de1 Unify operator overloading and reuse arguments where possible; Update Binaryen; Update dist files 2018-06-05 23:09:08 +02:00
Max Graey
567a5fb064 Implement unary operator overloads (#124) 2018-06-04 17:23:09 +02:00
dcodeIO
f69bccfe09 Add @operator.binary, @operator.prefix, @operator.postfix decorators for #124 2018-06-01 14:17:27 +02:00
dcodeIO
9d25f78fc1 Implement 'this' context parsing and serialization; Other minor improvements 2018-05-30 16:22:56 +02:00
dcodeIO
d0244a9b0f Add an error for missing initializers on default params, fixes #121; Fix detection of terminated switch cases and improve tests, fixes #122 2018-05-27 12:24:16 +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
6c0a5c47d9 Update Binaryen and take care of WebAssembly/binaryen#1547 2018-05-14 16:55:55 +02:00
dcodeIO
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
dcodeIO
ef9b43740d Eliminate leftover temporary function types using latest Binaryen 2018-05-09 16:33:42 +02:00
dcodeIO
1f3bb61fae Fix issues with more than 64 locals, see #99 2018-05-08 22:16:12 +02:00
dcodeIO
27f0621ee9 Add support for the 'mutable-global' proposal behind a feature flag 2018-05-08 09:27:56 +02:00
dcodeIO
1bf0ca6525 Add a mechanism to enable additional (experimental) features and start with sign extension operations; Hashing experimentation 2018-05-08 00:36:19 +02:00
dcodeIO
25a1f6230a Suppress some unnecessary blocks and nops; Fix compilation of always 'break'ing 'do's 2018-05-06 05:46:35 +02:00
Daniel Wirtz
50f6c1c460
Update internal ABI to zero/sign-extend where necessary only (#87) 2018-05-06 00:00:54 +02:00
Alan Pierce
ce2bf00d62 Fix crash when assigning to bool class fields (#95)
With `Type.bool`, size is 1, so dividing by 8 isn't the right way to convert to byteSize. Instead, we need to use the `byteSize` property that does the proper ceiling division.
2018-05-05 23:54:39 +02:00
dcodeIO
8b5d1d7f74 Minor refactoring; Fix n-body TS build 2018-04-28 18:07:20 +02:00
dcodeIO
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
dcodeIO
391db28fe2 Always try to eliminate branches if tree-shaking is enabled 2018-04-24 23:11:11 +02:00