Commit Graph

35 Commits

Author SHA1 Message Date
Jef
cbf34a455b Add factorial tests from spec (after fixing them slightly) 2018-12-19 10:40:31 +01:00
Jef
72855e48c7 Improve behaviour when adding literal to non-literal, materialise local if its value will be changed
Currently the implementation of materializing locals causes compilation to be non-linear in degenerate cases
2018-12-18 19:15:29 +01:00
Jef
5418241dc6 Allow blocks to return values in any register 2018-12-18 17:16:38 +01:00
Jef
74ffb8560c Fix use of locals 2018-12-18 12:12:17 +01:00
Jef
53841cdb07 Add loops 2018-12-17 12:50:29 +01:00
Jef
23b5a56a7d Fix locals not being restored properly (which may cause us to read garbage values from the stack) 2018-12-17 12:16:40 +01:00
Jef
bd2ee53c89 Optimize pop_i32_into, check more fib values 2018-12-15 16:39:38 +01:00
Jef
1e04dc90b6 Make more tests quickcheck-compatible, remove unused code 2018-12-14 16:35:48 +01:00
Jef
b832832c76 Add const folding, fix returning values from blocks 2018-12-14 16:20:28 +01:00
Jef
17ecd049a1 Register allocation V2
This lays the groundwork for other on-the-fly optimisations,
like passing literals through in order to do const folding
in linear time, while compiling.
2018-12-14 14:16:43 +01:00
Jef
4994e3671c Remove unused argument from fibonacci example 2018-12-13 12:26:49 +01:00
Jef
912fa83fff Add benchmarks 2018-12-13 12:26:47 +01:00
Jef
5bb7430976 Add quickcheck, implement simple binary operations 2018-12-13 10:25:37 +01:00
Jef
5b448ce3c7 Stop leaking stack space on function call 2018-12-13 10:25:17 +01:00
Jef
189996accd Fix receiving more than 6 arguments, allow calling functions with more than 6 arguments 2018-12-12 13:23:43 +01:00
Jef
86353cba5e Allow calling functions with any signature 2018-12-12 11:52:48 +01:00
Sergey Pepyakin
b32f77ea02 Add the fib test. 2018-12-11 20:15:26 +01:00
Sergey Pepyakin
0cd70c649a Implement returns. 2018-12-11 20:13:20 +01:00
Sergey Pepyakin
e02dbf1bc2 Add i32 literals support. 2018-12-11 20:12:55 +01:00
Sergey Pepyakin
0e9ba8332f Pass arguments. 2018-12-11 19:46:41 +01:00
Sergey Pepyakin
078486e080 Basic form of a function call 2018-12-07 19:16:42 +01:00
Sergey Pepyakin
5eb43f027a Introduce TranslationContext 2018-11-29 22:28:10 +01:00
Sergey Pepyakin
52c0443368 Pass function sig in function_body::translate 2018-11-29 18:58:14 +01:00
Sergey Pepyakin
13c36612b5 increment → reserve. 2018-11-28 05:45:25 -08:00
Sergey Pepyakin
aa5643b9b5 Implement if then else 2018-11-28 05:45:25 -08:00
Sergey Pepyakin
ba216b2e8a Add a simple i32.eq operator. 2018-11-28 05:45:25 -08:00
Sergey Pepyakin
b42696f207 Add a simple boilerplate. 2018-11-28 05:45:25 -08:00
Sergey Pepyakin
08240761d5 Compile a simple function (#2)
* Implement basics.

* Execute code

* Add wasm2wat test cases.

* abi_loc_for_arg for stack.

* Assert that sp_depth is 0 at the epilogue

* Do 32bit add.

* Assert that RAX can be used as a scratch register

* Reuse assembler.

* Align stack slots.
2018-11-08 13:56:27 -08:00
Dan Gohman
d3bc26bc93 Mention that a goal of lightbeam is linear-time compilation. 2018-10-30 13:00:34 -07:00
Dan Gohman
e32144727d Update project name. 2018-10-30 12:59:49 -07:00
Dan Gohman
dac2eaa3cb Adjust whitespace to match the upstream exception text.
This is a whitespace-only change.
2018-10-30 12:57:52 -07:00
Dan Gohman
8b92b91b0a Update issue tracker URL. 2018-10-30 10:24:06 -07:00
Dan Gohman
34646c6f1f Add some categories and keywords to Cargo.toml. 2018-10-30 10:08:47 -07:00
Dan Gohman
068f86f645 Add a basic README.md. 2018-10-30 10:07:39 -07:00
Dan Gohman
154b35ecc1 Initial experiment. 2018-10-29 12:02:01 -07:00