Max Graey
abf3de9076
Fix implicit string to bool conversion ( #567 )
2019-03-31 20:00:54 +02:00
Daniel Wirtz
527d73ece8
Use fully qualified names in generic types ( #544 )
...
* Also fixes infinite parser loops
* Also implements command line option forwarding to node.js
2019-03-25 21:58:19 +01:00
Daniel Wirtz
4e1bba3a24
Use Binaryen's function signature naming scheme ( #522 )
2019-03-01 00:01:23 +01:00
Max Graey
0041572052
Reuse respective opposite overload in std/string comparisions ( #479 )
2019-02-21 00:30:05 +01:00
Daniel Wirtz
0c64f21250
Rework resolver ( #489 )
...
* Rework IR and resolver to use nested lookup tables
* Integrate types into IR
* Make components prefer IR, slimmed down AST
* Implement `export *`
* Add `@lazy` annotation and remove `--noTreeShaking`
* Add `@start` annotation and remove magic `main`
* Related refactoring, cleanup and docs
2019-02-21 00:11:22 +01:00
Daniel Wirtz
2f1a6c44ce
Add SIMD prerequisites ( #469 )
2019-02-07 15:26:26 +01:00
Daniel Wirtz
831054dfd3
Rework inlining logic ( #463 )
2019-02-06 23:42:43 +01:00
dcode
cd1cfe6957
Update Binaryen to latest and rebuild dist files
2019-02-05 17:12:10 +01:00
Daniel Wirtz
ebae7cbd73
Implement optional type parameters ( #360 )
...
* Add a NATIVE<T> macro type to simplify use of a native WebAssembly type
* Add default type parameters for internal helpers for explicit loads and stores
* Unify loadUnsafe/loadUnsafeWithOffset etc. into one
* Renamed loadUnsafe etc. into just LOAD, like a macro
* Implement parsing of index signatures, but ignore them, for properly linting code
* Refactor TypedArray<T> to use macros
2018-12-07 14:33:32 +01:00
Max Graey
6393921c12
Fix unsafeCompare ( #336 )
2018-11-19 12:23:45 +01:00
Daniel Wirtz
2bdc2a72f1
Use stack IR when emitting text format ( #312 )
2018-11-08 08:04:24 +01:00
Max Graey
711f73b15d
Implement String#split ( #301 )
2018-10-18 19:05:35 +02:00
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
4498b28442
Use outer-most identifier when resolving queued exports, fixes #248
2018-09-09 03:51:29 +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
Max Graey
671121bf70
Implement String#padStart/padEnd; Refactor internal string copy, compare and repeat ( #171 )
2018-07-25 16:25:53 +02:00
Max Graey
298a8f1688
Add String.fromCodePoint and 16-bit string compare ( #174 )
2018-07-23 14:32:55 +02:00
dcodeIO
a1b75b69b7
Rename memory instructions; Rework constant handling
2018-07-18 23:49:32 +02:00
Max Graey
d7c1c608bd
Implement itoa32/64 for base 10 ( #151 )
2018-07-13 15:40:37 +02:00
Max Graey
365884ff73
Add String#lastIndexOf and improve tests ( #163 )
2018-07-10 03:31:51 +02:00
dcodeIO
7a8995b18b
Properly inline getters; Simplify blocks when last statement returns
2018-06-22 15:26:59 +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
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
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
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
dcodeIO
4026c087fd
Export the trampoline and provide a helper for functions that take optional arguments
2018-04-17 16:04:29 +02:00
Max Graey
6d0b5d92c2
Minor string comparision optimizations ( #77 )
2018-04-16 23:02:55 +02:00
Daniel Wirtz
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
Max Graey
b7ef21950b
Add String#repeat method ( #67 )
2018-04-07 18:59:26 +02:00
dcodeIO
8770f7b548
New ArrayBuffer/TypedArray; Stdlib restructure; Fix importing stdlib in stdlib; Traverse constructors; Allow initialization of readonly instance fields in constructors
2018-04-07 03:27:22 +02:00
dcodeIO
6268b92eba
Resolve string instances to the program's string class
2018-04-06 00:19:45 +02:00
Max Graey
70a0123554
Fix some cases in string comparision ( #66 )
2018-04-05 17:44:17 +02:00
dcodeIO
26601dcfb1
Make '===' and '!==' ignore operator overloads
...
While not semantically equivalent with JS semantics, this appears to be the right thing to do in AS. Also avoids using changetype just for this purpose, which will eventually become considered unsafe.
2018-04-05 02:42:12 +02:00
dcodeIO
7e90ab161d
Simplify resolve infrastructure; Fix handling of nested element and property accesses
2018-04-05 02:23:03 +02:00