Commit Graph

345 Commits

Author SHA1 Message Date
dc4e2060ba Add unary postfix operator overloading (#309) 2018-10-30 15:23:18 +01:00
d864bef1eb Improve per-bit divmod loop for mod & rem (#307) 2018-10-30 15:10:50 +01:00
d864977a1a Add Array#concat and add a return type for Array#push (#214) 2018-10-30 15:07:53 +01:00
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
0bb5cb829e Support definite assignment assertion x!: i32 (#260) 2018-10-27 18:29:59 +02:00
e58582e9e9 Minor remquof improvemnts (#306) 2018-10-27 18:27:54 +02:00
83fa12164f Add TypedArray#fill (#274) 2018-10-26 18:28:31 +02:00
376afd45fc Improve Math routines; Add Mathf-specific prng (#297) 2018-10-26 00:10:17 +02:00
711f73b15d Implement String#split (#301) 2018-10-18 19:05:35 +02:00
f7c734789e Update Binaryen to latest; Various fixes 2018-10-11 08:49:08 +02:00
63d4579118 Fix some array function parsing and serialization issues
Quite similar to #256 and also uses its test, but also fixes the serializer and doesn't try to parse an untyped 'x => x'.
2018-10-04 09:53:47 +02:00
eeb8a8fd6c Make sure temp locals don't collide when allocating literal arrays, fixes #281
Originally part of #288
2018-10-03 01:32:28 +02:00
db0e82fbc3 Add a .data pointer on ArrayBuffers for convenience, see #291 2018-10-03 01:06:48 +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
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
2874fb9d8a Add trimStart/End aliases (#287) 2018-09-30 22:21:34 +02:00
3f035395cd Add Array#fill (#250) 2018-09-19 00:59:22 +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
9613d29d93 Add a setter for Pointer<T>#value 2018-09-15 03:19:41 +02:00
3f93808914 Integrate Buffer<T> experiment into Pointer<T>; Remove CArray 2018-09-15 02:54:30 +02:00
029dde7c3c Add raw buffer experiment to tests 2018-09-14 01:25:31 +02:00
d90cd085e5 Update Binaryen 2018-09-13 23:10:49 +02:00
6949cf9f9e Switch signed/unsigned instructions when upcasting 32- to 64-bit integers, fixes #247
Matches C semantics now. Turns around some instructions in tests, especially libm, but doesn't break anything.
2018-09-10 14:25:33 +02:00
3605630747 Support calling the result of a getter (#252) 2018-09-10 03:19:11 +02:00
c27b6e8951 Add integer power functions (#212) 2018-09-09 04:07:27 +02:00
4498b28442 Use outer-most identifier when resolving queued exports, fixes #248 2018-09-09 03:51:29 +02:00
947cee08c7 Implement <TypedArray>#sort and improve default comparator (#208) 2018-08-04 15:30:03 +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
a1e2071da6 Fix n-body visualization 2018-07-22 02:55:46 +02:00
3c1f0dc1f8 More cleanup 2018-07-20 22:37:25 +02:00
2fa7d6678c Make sure all roots are iterated by delaying builtin generation; Cleanup 2018-07-20 20:33:50 +02:00
41ad2f8a70 Add a more convenient tracing utility for debugging; Fix basic GC test 2018-07-20 16:49:27 +02:00
fafaf423b4 Make an interface around gc.* fwiw 2018-07-19 16:15:56 +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
1928f46cb9 Also handle indirect recursive inlining 2018-07-14 18:21:11 +02:00
4b8500355a Skip inlining and emit a warning when trying to inline a function into itself 2018-07-14 18:01:19 +02:00
3b0fd9aac2 Implement isDefined and isConstant builtins 2018-07-14 16:42:00 +02:00
10a9f407bf Support object literal shorthands 2018-07-14 15:18:45 +02:00
c636eddcd2 Legalize casting object literals to classes when linting 2018-07-14 15:00:07 +02:00
29081b6323 Assert that comparator is not null in Array#sort (#155) 2018-07-14 14:56:05 +02:00
9e508de69a Implement object literal parsing; Instantiate classes from object literals
Essentially, if the contextual type is a class with a constructor that takes zero arguments or doesn't have a constructor at all, an object literal can be used to initialize a new instance of that class with preset values.
2018-07-14 04:00:04 +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