Commit Graph

53 Commits

Author SHA1 Message Date
c92643832c move stuff, run both untouched and optimized 2019-05-21 15:02:39 +02:00
f73d807d5a rt hooks all over the place
still some work to do on optimizing away retain/release calls, but this looks promising
2019-05-15 21:17:41 +02:00
ba1a0c2369 Initial new rt integration 2019-05-12 13:50:28 +02:00
8ec51423ca Merge branch 'master' into runtime 2019-04-08 18:37:38 +02:00
5b58b9aa8d Update Binaryen to latest (#571) 2019-04-08 08:18:21 +02:00
e1070cee86 rtti & refactoring 2019-04-06 20:17:48 +02:00
3bcd32f3ba directize 2019-04-02 10:12:57 +02:00
7693b543f4 optimize array literal init, warn on unsupported inlining 2019-03-19 08:20:10 +01:00
84ddd97761 if that's what's necessary 2019-03-14 06:09:49 +01:00
a5e14a0eaa srsly 2019-03-14 05:11:03 +01:00
6163a73ab5 take a step back 2019-03-14 04:33:58 +01:00
e38f627c8b more 2019-03-13 22:35:47 +01:00
cb77760562 unsafe, stub 2019-03-10 21:38:15 +01:00
0ad9d560e0 integrate 2019-03-09 00:40:03 +01:00
252b843c4b General cleanup (#525)
* Cleans up and trims the overly large builtins file by ~1600 lines
* Properly propagate inline assembler-like argument types
* Use https in examples
* Reformat README
2019-03-08 14:24:48 +01:00
8e5b9c734b Add atomic definitions (#524) 2019-03-02 10:14:09 +01:00
e1f1a3b49c Implement v128 instructions (#508) 2019-02-28 17:36:22 +01:00
aad263e670 Add isArrayLike builtin (#453) 2019-02-27 21:47:52 +01:00
f318d68383 Add isFunction and isNullable builtins (#504) 2019-02-22 01:11:05 +01:00
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
1bd1d26152 Put atomics behind a feature flag (#470) 2019-02-07 18:21:09 +01:00
7ce3296b5e Add atomic built-ins (#440) 2019-02-07 15:25:49 +01:00
2131c51932 Rework constructor handling (#446) 2019-02-02 16:03:21 +01:00
f714afab3c Implement explicit this type (#373)
* Add backing classes for basic types (I32...)
* Move standard numeric constants to backing classes
2019-01-09 12:45:29 +01:00
1149abf824 Add 'instantiate<T>' builtin (like 'new' but from a type), see #349 2018-11-29 15:28:08 +01:00
4e89456dcb Add more numeric builtins (#330) 2018-11-12 07:42:28 +01:00
ff87857f40 Change semantics of f32/f64.MIN_VALUE to match JS's Number.MIN_VALUE
* Also renames MIN_POSITIVE_VALUE to MIN_NORMAL_VALUE
* Also adds POSITIVE_INFINITY/NEGATIVE_INFINITY and NaN
2018-10-01 22:54:00 +02:00
dc0f271fc2 Initial GC integration (#196) 2018-08-02 18:23:02 +02:00
34839353fd Inline isNaN and isFinite
Looking at our existing tests it seems that inlining these can be performed by reusing locals most of the time, and sometimes enables erasing quite a bit of unnecessary code when optimizing.
2018-07-19 04:12:40 +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
3b0fd9aac2 Implement isDefined and isConstant builtins 2018-07-14 16:42:00 +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
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
2aea14b518 Add more inline-assembler-ish builtins; Update Binaryen 2018-04-27 19:12:25 +02:00
06f99406be Experimenting with inline-assembler-ish explicit builtins
Starting with explicit loads and stores as part of the respective type namespaces. Might become handy for use with portable code, because these can be polyfilled, while load<T> and store<T> can't.
2018-04-27 00:08:41 +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
a15457d8b9 Simplify isFinite & isNaN (#78) 2018-04-18 15:14:24 +02:00
4929fca363 Move some numeric builtins to stdlib; Minor refactoring 2018-04-17 02:50:38 +02:00
ee73a4d28f Initial type parameter inference, see #61
This catches the most common cases but doesn't yet implement inference involving the return type because some prequesites are not yet in place (see test case).
2018-04-13 12:25:27 +02:00
dcc0e284fb Make type checking builtins also accept just a type argument 2018-04-07 23:31:36 +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
c80bf35747 Move fmod/fmodf to builtins and bind them to the '%' operator 2018-03-24 18:39:20 +01:00
721d77012b Math scaffolding 2018-03-24 17:18:15 +01:00
664f2a1c0d Add offsetof<T> builtin; Put a function's trampoline into the function table if a it has optional parameters; TypedArray scaffolding 2018-03-24 00:38:49 +01:00
49f4d3dff1 Eliminate @builtin decorator for compatibility with TS 2018-03-21 16:29:08 +01:00
477669d7a3 Add min. normalized positive value (MIN_POSITIVE_VALUE) for floats (#50) 2018-03-21 01:06:56 +01:00
2ed9fac171 Initial compile time type check builtins 2018-03-17 12:54:37 +01:00
4633fdab96 Update binary expression inference, see #35; Update dependencies 2018-03-01 19:42:07 +01:00