f7c734789e
Update Binaryen to latest; Various fixes
2018-10-11 08:49:08 +02:00
b7e7be20cf
Add String.fromUTF8 helper (see #291 ); Update dist files
2018-10-03 00:49:56 +02:00
53b030fed5
Add Array#join and Array#toString + dtoa ( #275 )
2018-10-01 22:57:56 +02:00
2874fb9d8a
Add trimStart/End aliases ( #287 )
2018-09-30 22:21:34 +02:00
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
4498b28442
Use outer-most identifier when resolving queued exports, fixes #248
2018-09-09 03:51:29 +02:00
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
dc0f271fc2
Initial GC integration ( #196 )
2018-08-02 18:23:02 +02:00
671121bf70
Implement String#padStart/padEnd; Refactor internal string copy, compare and repeat ( #171 )
2018-07-25 16:25:53 +02:00
298a8f1688
Add String.fromCodePoint and 16-bit string compare ( #174 )
2018-07-23 14:32:55 +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
9dfe39c532
Concretize decimal counting in itoa ( #169 )
2018-07-13 23:37:27 +02:00
6228233e04
Minor itoa improvements ( #168 )
2018-07-13 21:45:39 +02:00
d7c1c608bd
Implement itoa32/64 for base 10 ( #151 )
2018-07-13 15:40:37 +02:00
5ce57a6434
Fix default fromIndex in String#lastIndexOf ( #165 )
2018-07-13 13:30:48 +02:00
365884ff73
Add String#lastIndexOf and improve tests ( #163 )
2018-07-10 03:31:51 +02:00
7a8995b18b
Properly inline getters; Simplify blocks when last statement returns
2018-06-22 15:26:59 +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
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
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
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
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
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
6268b92eba
Resolve string instances to the program's string class
2018-04-06 00:19:45 +02:00
70a0123554
Fix some cases in string comparision ( #66 )
2018-04-05 17:44:17 +02:00
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
e790eb757f
Add string comparison operator overloads ( #64 )
2018-04-04 21:50:40 +02:00
5823e35f37
Progress and a tiny WASM binary parser
2018-04-03 23:56:48 +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
164f134053
Even more math ( #56 )
...
Remaining implementations of JavaScript's Math functions (except sin/cos/tan), both double (Math) and single (Mathf) precision, ported from musl incl. tests from libc-test, plus some changes to match JS semantics. Also binds fmod to `%` and pow to `**`.
2018-03-30 17:25:54 +02:00
19a616dd96
Support indirect calls with omitted arguments
2018-03-24 09:46:22 +01:00
2738eee9cd
Call trampolines with the actual number of provided operands
...
When calling indirectly, the number of required operands might not be known at compile time and providing the actual number of operands instead solves this.
2018-03-23 15:00:09 +01:00
4adb69f73a
Binary expression operator overloads for +/==; Check allocation flow in ternary expressions; Cache empty array buffers; Sealed decorator for non-derivable internals
2018-03-23 12:45:29 +01:00
faac3c31eb
AST cleanup; Definition generators scaffolding
2018-03-17 01:37:05 +01:00
423533c6b0
Implement function types / indirect calls / trampolines ( #39 )
2018-03-12 14:06:39 +01:00
d4c00eaba3
Revised implicit type conversions; Initial function expression compilation
2018-02-28 01:48:01 +01:00