Commit Graph

128 Commits

Author SHA1 Message Date
365884ff73 Add String#lastIndexOf and improve tests (#163) 2018-07-10 03:31:51 +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
27e61f8f67 Remove noMemory option; Omit 'start' if 'main' is present; Unwrap more unnecessary blocks 2018-06-27 19:03:39 +02:00
7a8995b18b Properly inline getters; Simplify blocks when last statement returns 2018-06-22 15:26:59 +02:00
525795b354 Infer u32 from 32-bit integer literals if MSB is set 2018-06-21 22:47:37 +02:00
c74eed2bd8 Add initial std Symbol; Fix some type inference issues 2018-06-21 19:42:18 +02:00
1626e50b0f Move Map and Set to stdlib, fixes #17 2018-06-21 16:55:51 +02:00
02e0a91070 Add pointer arithmetic experiment to tests
While questionable, it highlights some of the things that currently do not inline well.
2018-06-21 03:09:58 +02:00
c44cbec2c7 Add initial Set implementation to tests, see #17; Fix check when shrinking a Map 2018-06-21 00:57:46 +02:00
dd4be7b693 Fix some map issues; Simplify internal ArrayBuffer API a bit 2018-06-20 15:51:47 +02:00
48e96cbcf5 Add initial map implementation to tests, see #17 2018-06-19 04:23:22 +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
cea69a6de1 Unify operator overloading and reuse arguments where possible; Update Binaryen; Update dist files 2018-06-05 23:09:08 +02:00
567a5fb064 Implement unary operator overloads (#124) 2018-06-04 17:23:09 +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
51ede113dd Fix possible out of bounds read in string UTF8 conversion 2018-05-23 15:37:09 +02:00
829af2285c Fix continue labels in 'for' loops skipping the incrementor 2018-05-23 11:32:12 +02:00
33b10e347b Properly resolve top level enums to i32s, see #116 2018-05-22 12:06:03 +02:00
ea0eb7f1a5 Add a simple UTF8 converter, i.e. for calling C++ APIs; Fix disabling 'abort' entirely 2018-05-21 23:14:47 +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
ef9b43740d Eliminate leftover temporary function types using latest Binaryen 2018-05-09 16:33:42 +02:00
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
25a1f6230a Suppress some unnecessary blocks and nops; Fix compilation of always 'break'ing 'do's 2018-05-06 05:46:35 +02:00
50f6c1c460 Update internal ABI to zero/sign-extend where necessary only (#87) 2018-05-06 00:00:54 +02:00
8997561670 Update dependencies (#93) 2018-05-03 18:25:32 +02:00
99bde3a5fa Use insertion sort for references in Array#sort (#90)
This fixes that Weak Heap Sort isn't stable and thus might swap equal values, which sometimes results in not deep equal arrays of strings, for example. Insertion sort is stable, so it is used for references instead.
2018-05-02 19:33:17 +02:00
2aea14b518 Add more inline-assembler-ish builtins; Update Binaryen 2018-04-27 19:12:25 +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
391db28fe2 Always try to eliminate branches if tree-shaking is enabled 2018-04-24 23:11:11 +02:00
8465776a1d Use 'super' in Uint8ClampedArray#__set 2018-04-24 00:42:17 +02:00
ddde13a648 Implement Uint8ClampedArray (#82) 2018-04-24 00:33:21 +02:00
63aa648ace Slim down indexed access as far as currently possible
Interestingly, the same code written as statements is significantly slower. See notes.
2018-04-23 23:57:15 +02:00
de98a19eb8 Implement dynamic array literals 2018-04-23 22:49:04 +02:00
fac0fc59b5 Implement Array#map, Array#forEach, Array#filter, Array#reduceRight (#81) 2018-04-22 22:15:38 +02:00
a15457d8b9 Simplify isFinite & isNaN (#78) 2018-04-18 15:14:24 +02:00
4026c087fd Export the trampoline and provide a helper for functions that take optional arguments 2018-04-17 16:04:29 +02:00
4929fca363 Move some numeric builtins to stdlib; Minor refactoring 2018-04-17 02:50:38 +02:00
6d0b5d92c2 Minor string comparision optimizations (#77) 2018-04-16 23:02:55 +02:00
990fa850ff Add more Array#sort tests (#73) 2018-04-15 00:35:17 +02:00
78a679759a Update dependencies 2018-04-13 15:31:23 +02:00
748e811137 Proper isNaN/isFinite without a temp. local 2018-04-12 20:40:00 +02:00
1cea3c6f08 Improve Math#sign (#72) 2018-04-12 19:26:50 +02:00
2002e32c9c Inline small stdlib functions (#71) 2018-04-12 14:17:29 +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
0f49e054d2 Minor optimizations to array sorting
...to get a handle on the code
2018-04-08 01:53:22 +02:00
ac2281b14b Improve memory usage for weakHeap sorting (#68) 2018-04-08 01:03:26 +02:00
9731958738 Implement a mechanism to realloc array buffers; Trap when trying to allocate more than max size; Test allocators in CI 2018-04-08 00:52:19 +02:00
b7ef21950b Add String#repeat method (#67) 2018-04-07 18:59:26 +02:00