Commit Graph

123 Commits

Author SHA1 Message Date
5eb10d404f Document the purpose of most files 2018-03-17 23:41:48 +01:00
83e96892f2 Statically eliminate unnecessary branches in generic contexts
In order to use the new compile time type checks in generics, untaken branches must be skipped because these might be invalid.
2018-03-17 14:40:58 +01:00
faac3c31eb AST cleanup; Definition generators scaffolding 2018-03-17 01:37:05 +01:00
507482adb2 Pull more (possibly) repeated loads to locals 2018-03-14 00:27:35 +01:00
081ac768ae Give some love to the linter 2018-03-13 14:03:57 +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
7ee6e1cf7b Fix compilation of immediate called function expressions 2018-03-12 22:34:40 +01:00
423533c6b0 Implement function types / indirect calls / trampolines (#39) 2018-03-12 14:06:39 +01:00
d81ce5f907 Retain wrap state in parenthesized expressions; Void statements fwiw 2018-03-04 18:52:12 +01:00
f754b24819 Fix asc bundle with webpack 4, see #36; Function expression progress 2018-03-03 18:38:38 +01:00
a5e31200d3 Fix memory imports, see #36 2018-03-02 12:57:33 +01:00
4633fdab96 Update binary expression inference, see #35; Update dependencies 2018-03-01 19:42:07 +01:00
02dce5a518 Add importMemory option to asc, see #36 2018-02-28 18:38:42 +01:00
d4c00eaba3 Revised implicit type conversions; Initial function expression compilation 2018-02-28 01:48:01 +01:00
bda6cb9792 Initial function expression parsing 2018-02-27 02:28:36 +01:00
8dc517e352 Cleanup; Initial tslint integration 2018-02-25 00:13:39 +01:00
6b459259f9 Add memoryBase compiler option
This allows having fixed-size application-specific memory in front, followed by compiler-generated static memory and the heap.
2018-02-17 00:16:08 +01:00
3d7e8b2b7a More cleanup and a possible fix for #29 2018-02-16 11:55:13 +01:00
f729444320 Fix increment/decrement not wrapping small ints in simplified case, see #26 2018-02-15 09:22:46 +01:00
d31e484b15 Cleanup; Fix an issue with 'let' declarations reusing a local 2018-02-14 19:21:31 +01:00
b1c6ccab2a Use long.js in JS and native i64 in WASM; Compile literals more thoroughly 2018-02-14 09:18:43 +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
002fba3067 Initial parseInt using loads, see #8 2018-01-28 23:42:55 +01:00
1b0ed61072 Field initializers and constructors 2018-01-28 15:13:31 +01:00
5d76ba9437 Wire assertions to global abort, see #8 2018-01-27 16:23:00 +01:00
de066fc128 Preliminary strings
While not well-wrought, it's at least possible now to log some stuff when debugging
2018-01-27 05:35:14 +01:00
b548b5c81f Properly resolve enum value siblings 2018-01-24 03:08:09 +01:00
29935948f2 Precompute extensions of inlined constants
Besides eliminating unnecessary extensions, this also allows the use of enum values in long int contexts
2018-01-23 16:40:47 +01:00
2fa7fc7885 Take advantage of smaller integer load and store ops 2018-01-23 15:44:25 +01:00
5d142ba647 Unify target checks 2018-01-21 17:52:44 +01:00
64c939fdc4 Initial implementation of 'new'
This doesn't yet call the constructor or use provided parameters and just allocates raw memory
2018-01-19 16:13:14 +01:00
ef7a095494 Report if a function isn't guaranteed to return 2018-01-19 04:16:18 +01:00
7be4f9fabb Control flow evaluator; Support for block-level let/const variables 2018-01-18 23:34:12 +01:00
1c4b0ddc57 Moved noEmit to compiler frontend; Added I/O and compile time measuring 2018-01-18 15:45:34 +01:00
9cdfa35938 Initial implementation if ugc, see #16; Fix tests 2018-01-18 01:48:03 +01:00
461daab2a2 Handle static readonly members like constants 2018-01-17 06:56:12 +01:00
1662950f3c Refactor TLSF to a more TS-friendly structure 2018-01-17 02:08:14 +01:00
d1fed692f6 Moved AST serialization to extra (not ultimately needed by asc) 2018-01-15 19:00:18 +01:00
f2ba4b4a76 Filler implementation for std Set 2018-01-15 00:08:06 +01:00
49d29fc9f2 More std array 2018-01-14 21:17:43 +01:00
2c009c67d3 Initial element access compilation; Carefully approaching std array 2018-01-13 23:38:07 +01:00
2df318a7ec Implicitly alias stdlib exports as program globals, see #8 2018-01-12 15:36:17 +01:00
3980e53bb7 Let the optimizer decide what it takes to become a select 2018-01-12 05:03:25 +01:00
d89703cdad Transition to TypeFlags for specific type checks; Optimize logical ops a bit 2018-01-10 23:19:14 +01:00
fc777b3a89 Builtins rewrite with type parameter inference; Small integer math optimizations; Switchify 2018-01-10 13:09:05 +01:00
9846f6c033 Add showcase compiler test incl. respective features and fixes 2018-01-05 18:19:32 +01:00
2d0f5f3087 Comma expressions fwiw 2018-01-05 01:55:59 +01:00
7e9b58428b Always compile globals because initializers might have side effects 2018-01-04 06:00:42 +01:00