Commit Graph

8918 Commits

Author SHA1 Message Date
Dan Gohman
f3ea2d5d66 Tidy up documentation comment syntax. 2018-11-12 06:38:50 -08:00
Dan Gohman
076850549d Clarify an assertion error message. 2018-11-12 06:38:46 -08:00
Dan Gohman
7b27fdbf54 Avoid cloning an InstructionData when it isn't needed. 2018-11-09 15:13:42 -08:00
Dan Gohman
a0c2b40c17 Remove unnecessary pub keywords. 2018-11-09 15:11:03 -08:00
Dan Gohman
d54569cbdd Fix a typo in a comment. 2018-11-09 15:10:17 -08:00
Benjamin Bouvier
ce2364ddd9 [build] Remove dead code in Python and move assertions to the Rust code generator; 2018-11-09 09:23:36 -08:00
Benjamin Bouvier
add4043bb5 [build] Introduce a TargetIsaBuilder to better encapsulate the TargetIsa;
It was the caller's responsibility to call TargetIsa::check() before;
now one can't manipulate a TargetIsa without calling the
TargetIsaBuilder::finish() method, which is less error-prone and more in
line with what's coming for other things we're going to generate in the
meta crate.

Also splits the construction of a RegClass in two parts: a prototype is
made first when declaring the RegClass, and missing bits are filled in
when adding it to the TargetIsa(Builder). This avoids an awkward passing
of the isa to the RegClass ctor.
2018-11-09 09:23:36 -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
Benjamin Bouvier
f896bfb946 Prefix fixed_results/fixed_value_arguments with num to indicate they return a usize; 2018-11-08 11:41:04 -08:00
Benjamin Bouvier
e13b0886dc SimpleJIT: Ignore result of writeln! to avoid a compiler warning when writing the perf map; 2018-11-08 11:41:04 -08:00
Dan Gohman
8b5ad467c6 Fix missing newline. 2018-11-07 16:45:36 -08:00
Dan Gohman
47a33474ef Fix a typo in the category name. 2018-11-07 16:28:37 -08:00
Dan Gohman
1d14f5ddbd Use cranelift-entity with default features.
The meta crate doesn't need to support no_std, so it can just use
default settings.
2018-11-07 16:24:19 -08:00
Dan Gohman
14dfc0d1b6 Bump version to 0.23.0. 2018-11-07 16:18:04 -08:00
Dan Gohman
ad8a19c7ff Update no_std support. 2018-11-07 16:14:11 -08:00
Dan Gohman
38e8667f97 Adjust whitespace to match the upstream exception text.
This is a whitespace-only change.
2018-11-07 16:07:51 -08:00
Dan Gohman
19dc75f45a Add preopt to the maintainer scripts. 2018-11-07 16:07:51 -08:00
Dan Gohman
fd875c3f5a Pass TargetFrontendConfig by value rather than by reference. 2018-11-07 16:01:15 -08:00
Dan Gohman
b476f823d4 Update to target_lexicon 0.2.0. 2018-11-07 16:01:15 -08:00
Lachlan Sneff
3409af7c07 Add early-stage optimization crate (#556)
* Add simple constant folding and folding tests
2018-11-07 15:59:29 -08:00
Dan Gohman
bdcc06eb15 When lowering br_table to branches, delete the old jump tables.
This prevents codegen from emitting unused readonly data.
2018-11-07 11:49:51 +01:00
Dan Gohman
997424a4c5 Add more comments explaining ghost instructions. 2018-11-07 11:03:23 +01:00
Dan Gohman
26da67b394 Add a verifier check that ghost instructions don't have encodings. 2018-11-07 11:03:23 +01:00
Dan Gohman
88bbbca6cd Make regalloc visit fallthrough_return instructions.
Add an explicit "is_ghost" property to selected instructions, and use
that to determine whether reload and coloring should visit instructions.
This allows them to visit fallthrough_return instructions and insert
fills and register moves as needed.
2018-11-07 11:03:23 +01:00
Dan Gohman
681cb5e20a Assert that the non-fixed inputs to return match the function's signature. 2018-11-07 10:51:19 +01:00
Dan Gohman
05c0b3bdd1 Insert copies to support a value being used as multiple return values.
When one value is used multiple times for separate return values, we
need to copy it to produce a new value, so that each value can be
allocated a different register.
2018-11-07 10:51:19 +01:00
Dan Gohman
5ea6c57b95 Update to the new wasmparser and port to the new readers API.
The new wasmparser API provides dedicated reader types for each section
type, which significantly simplifies the code.

This also changes WasmError::from_binary_reader_error into a From
trait so that we don't have to do .map_err(from_binary_reader_error)
throughout the code.
2018-11-06 15:54:17 -08:00
Dan Gohman
9e084dbadc Update to wabt 0.7.0. 2018-11-06 13:24:45 -08:00
Benjamin Bouvier
bcbb2d01cc [build] Stop using Python code to generate the register files; 2018-11-06 13:12:17 -08:00
Benjamin Bouvier
b7f2acf0ea [build] Implement registers code generation in the Rust meta crate; 2018-11-06 13:12:17 -08:00
Benjamin Bouvier
4f2d7dd54f [build] Move Isa enum to the meta library; 2018-11-06 13:12:17 -08:00
Benjamin Bouvier
17e88ed1c5 [build] Use the Rust-generated types files in place of the Python one; 2018-11-06 13:12:17 -08:00
Dan Gohman
8d7538049c Pass TargetFrontendConfig by value rather than by reference.
Passing it by reference was an artifact of an earlier version of the
TargetFrontendConfig code, but it's no longer needed, as
TargetFrontendConfig is now a Copy type.
2018-11-06 07:03:04 -08:00
Dan Gohman
3ff8867e57 Split the default edge of a br_table.
When splitting critical edges for a br_table to handle arguments being
passed, split the default edge along with the normal table edges.
2018-11-06 15:53:05 +01:00
Dan Gohman
d72ebe53d4 Use the correct base address for memories. 2018-11-02 16:18:18 -07:00
Dan Gohman
a5cad9a748 Fix a typo in a comment. 2018-11-02 13:56:38 -07:00
Dan Gohman
d4f8eb7453 Introduce a TargetFrontendConfig type. (#570)
* Introduce a `TargetFrontendConfig` type.

`TargetFrontendConfig` is information specific to the target which is
provided to frontends to allow them to produce Cranelift IR for the
target. Currently this includes the pointer size and the default calling
convention.

The default calling convention is now inferred from the target, rather
than being a setting. cranelift-native is now just a provider of target
information, rather than also being a provider of settings, which gives
it a clearer role.

And instead of having cranelift-frontend routines require the whole
`TargetIsa`, just require the `TargetFrontendConfig`, and add a way to
get the `TargetFrontendConfig` from a `Module`.

Fixes #529.
Fixes #555.
2018-11-02 13:51:42 -07:00
Joe Howarth
7094d9f470 Prefix verifier errors with ; (#585)
* Prefix verifier errors with ;

extract arrow drawing code into helper
print ; at beginning of line followed by arrow and error body
2018-11-02 13:47:39 -07:00
bjorn3
6f8c3012c6 SimpleJit perf map (#571)
* SimpleJit perf map
2018-11-02 12:57:14 -07:00
Dan Gohman
9471c06da4 Update to use newer Rust features.
This re-introduces several cleanups that we previously deferred for not
supporting Rust 1.25.
2018-10-31 12:54:16 -07:00
Dan Gohman
62e55f63e6 Update the minimum supported Rust version to 1.29.
We no longer need the Ubuntu LTS restriction, so now the only only
constraint I'm aware of is Firefox's policy. Fortunately, that tracks
the latest stable delayed by only two weeks. So this puts is at
Rust 1.29 now.
2018-10-31 12:54:16 -07:00
Dan Gohman
8e114a2703 Update authors in Cargo.toml. 2018-10-30 13:08:42 -07:00
Dan Gohman
4a41d2d6c6 Delete obsolete clippy scripts. 2018-10-30 13:08:42 -07:00
Dan Gohman
0ff372a6b8 Adjust whitespace to match the upstream exception text.
This is a whitespace-only change.
2018-10-30 13:08:42 -07: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
5d9591d1ef Adjust whitespace to match the upstream exception text.
This is a whitespace-only change.
2018-10-30 11:28:08 -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