57 Commits

Author SHA1 Message Date
Max Graey
1882679807 Implement Array.isArray and Array#copyWithin (#331) 2018-11-12 07:45:40 +01:00
Daniel Wirtz
2bdc2a72f1
Use stack IR when emitting text format (#312) 2018-11-08 08:04:24 +01:00
dcodeIO
6f8a0fe03a Rework compileUnaryPostfixExpression
Previously this tried to reuse too much code, making it hard to implement operator overloading
2018-10-29 20:06:21 +01:00
Max Graey
83fa12164f Add TypedArray#fill (#274) 2018-10-26 18:28:31 +02: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
b7e7be20cf Add String.fromUTF8 helper (see #291); Update dist files 2018-10-03 00:49:56 +02:00
Max Graey
53b030fed5 Add Array#join and Array#toString + dtoa (#275) 2018-10-01 22:57:56 +02:00
Max Graey
2874fb9d8a Add trimStart/End aliases (#287) 2018-09-30 22:21:34 +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
41ad2f8a70 Add a more convenient tracing utility for debugging; Fix basic GC test 2018-07-20 16:49:27 +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
a1b75b69b7 Rename memory instructions; Rework constant handling 2018-07-18 23:49:32 +02:00
Max Graey
9dfe39c532 Concretize decimal counting in itoa (#169) 2018-07-13 23:37:27 +02:00
Daniel Wirtz
6228233e04
Minor itoa improvements (#168) 2018-07-13 21:45:39 +02:00
Max Graey
d7c1c608bd Implement itoa32/64 for base 10 (#151) 2018-07-13 15:40:37 +02:00
Max Graey
5ce57a6434 Fix default fromIndex in String#lastIndexOf (#165) 2018-07-13 13:30:48 +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
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
51ede113dd Fix possible out of bounds read in string UTF8 conversion 2018-05-23 15:37:09 +02:00
dcodeIO
829af2285c Fix continue labels in 'for' loops skipping the incrementor 2018-05-23 11:32:12 +02:00
dcodeIO
33b10e347b Properly resolve top level enums to i32s, see #116 2018-05-22 12:06:03 +02:00
dcodeIO
ea0eb7f1a5 Add a simple UTF8 converter, i.e. for calling C++ APIs; Fix disabling 'abort' entirely 2018-05-21 23:14:47 +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
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
dcodeIO
4026c087fd Export the trampoline and provide a helper for functions that take optional arguments 2018-04-17 16:04:29 +02:00
dcodeIO
4929fca363 Move some numeric builtins to stdlib; Minor refactoring 2018-04-17 02:50:38 +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
dcodeIO
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
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
Max Graey
e790eb757f Add string comparison operator overloads (#64) 2018-04-04 21:50:40 +02:00
dcodeIO
5823e35f37 Progress and a tiny WASM binary parser 2018-04-03 23:56:48 +02:00
dcodeIO
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
Daniel Wirtz
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
dcodeIO
19a616dd96 Support indirect calls with omitted arguments 2018-03-24 09:46:22 +01:00