Commit Graph

1309 Commits

Author SHA1 Message Date
Dan Gohman
c03d67a4ff Update for wasm memory instruction renaming.
The wasm spec renamed `grow_memory` and `current_memory` to
`memory.grow` and `memory.size`, respectively. Update cretonne's names
to follow.

Also, update to wasmparser 0.17.0, which also renames its corresponding
operators.
2018-06-12 05:02:25 -07:00
Dan Gohman
0daa560368 Accept redundant alias definitions.
In the text format, allow aliases to be defined multiple times, as long
as they're always aliasing the same value.

write.rs is already emitting redundant aliases, because it emits them at
their uses, so this change allows the parser to be able to parse such
code.
2018-06-12 05:02:25 -07:00
Dan Gohman
00d7d3a774 Implement IntoIterator for PrimaryMap.
This makes iterating through a `PrimaryMap` more consistent with
iterating through a `Vec`.
2018-06-12 05:02:17 -07:00
Dan Gohman
fdf89edbfe Fail loudly if a build.rs dependency path can't be printed. 2018-06-09 13:22:44 -07:00
Sergey Pepyakin
e4fe1db3b8 Assert that stack_limit is none. 2018-06-09 13:18:12 -07:00
Sergey Pepyakin
ddc8c91419 Displaying stack_limit 2018-06-09 13:18:12 -07:00
Sergey Pepyakin
73b6468d25 Parsing stack_limit 2018-06-09 13:18:12 -07:00
Sergey Pepyakin
effe770c5f Add stack_limit global_var in Function 2018-06-09 13:18:12 -07:00
Sergey Pepyakin
e9111d1de2 Ditch stack_check instruction 2018-06-09 13:18:12 -07:00
Dan Gohman
944251260b Bump version to 0.9.0 2018-06-07 11:46:36 -07:00
Dan Gohman
f5c1273fcf Use cfg_attr to tidy up an extern crate declaration. 2018-06-07 11:34:55 -07:00
Dan Gohman
b2b20a95a1 Fix missing no_std support in cretonne-module.
And, tidy up the extern crate declarations in the std replacement modules.
2018-06-07 11:34:55 -07:00
Dan Gohman
750483b9ac Update to hashmap_core 0.1.6. 2018-06-07 10:45:30 -07:00
Dan Gohman
6ec3a3f7a1 Pass the "std" feature through to target-lexicon. 2018-06-07 09:56:45 -07:00
Bruce Mitchener
e49e1e20c6 Update to region 0.3. 2018-06-06 10:15:09 -07:00
Bruce Mitchener
36d4e0a13c Update to goblin 0.0.15. 2018-06-06 10:15:09 -07:00
Dan Gohman
970045c309 Set clobbers_flags to False for urm_noflags_abcd.
`urm_noflags` is a variant of `urm` which doesn't clobber the flags, and
`urm_noflags_abcd` is a further variant for ABCD registers, so it also
doesn't clobber the flags.
2018-06-05 11:30:35 -07:00
Dan Gohman
eb94664285 Add assertions to check translate_call and translate_call_indirect.
Assert that the results produced by translate_call and
translate_call_indirect match the results of the call signatures.
2018-06-05 09:21:23 -07:00
Dan Gohman
4e64fc11c9 Rename subtest's Result to SubtestResult.
This avoids naming confusion with the standard `Result`, which is
included in the prelude.
2018-06-05 09:21:23 -07:00
Dan Gohman
1087ff3a01 Use to_string() instead of write!(&mut text, "{}", .... 2018-06-05 09:21:23 -07:00
Dan Gohman
4a4453dc47 Use to_string() instead of format!("{}", ...). 2018-06-05 09:21:23 -07:00
Dan Gohman
22a7c56108 Use Context::for_function to simplify the code. 2018-06-05 09:21:23 -07:00
Dan Gohman
ae8fc69406 Use &'static str rather than Cow<str> for pass names. 2018-06-05 09:20:59 -07:00
Dan Gohman
6c003d68cd Factor out pointer_bits() and pointer_bytes() helper functions. 2018-05-31 11:21:26 -07:00
Dan Gohman
f48c1d4f89 Update to target-lexicon 0.0.1 and faerie 0.4.1.
This fixes handling of custom targets.
2018-05-30 17:25:48 -07:00
Dan Gohman
4e67e08efd Use the target-lexicon crate.
This switches from a custom list of architectures to use the
target-lexicon crate.

 - "set is_64bit=1; isa x86" is replaced with "target x86_64", and
   similar for other architectures, and the `is_64bit` flag is removed
   entirely.

 - The `is_compressed` flag is removed too; it's no longer being used to
   control REX prefixes on x86-64, ARM and Thumb are separate
   architectures in target-lexicon, and we can figure out how to
   select RISC-V compressed encodings when we're ready.
2018-05-30 06:13:35 -07:00
Lachlan Sneff
2f3008aa40 Use "nightly" feature of raw-cpuid when possible. 2018-05-29 15:57:21 -07:00
Dan Gohman
a1fe0f82e1 Update to the latest stable rustfmt, 0.4.2-stable (febbb36 2018-04-12). 2018-05-29 10:37:38 -07:00
Dan Gohman
7045c41418 Add a comment about implementing Keys in terms of Range in the future. 2018-05-29 10:21:52 -07:00
Dan Gohman
7733ca1173 Implement entity's Iter in terms of std::iter::Enumerate.
Entity's `Iter` is essentially an `Enumerate`, so just use an
`Enumerate` under the covers. This makes the code simpler.
2018-05-29 10:21:52 -07:00
Dan Gohman
c21af29c79 Legalize libcall signatures.
Explicitly legalize signatures created for libcalls.
2018-05-29 10:21:52 -07:00
Dan Gohman
d8eaa19dda Make an assert message more verbose. 2018-05-29 10:21:52 -07:00
Dan Gohman
7720a571fc Fix reverse iteration in cretonne-entity's Iter.
A `DoubleEndedIterator` needs to track both a forward position and a
reverse position, so that `next_back()` can pop from the back of the
sequence.
2018-05-29 10:21:52 -07:00
Dan Gohman
09fb914823 Make an assert message more verbose. 2018-05-25 11:41:55 -07:00
Dan Gohman
6b88cd44a8 Update to rustfmt-preview (#348)
* Update to rustfmt-preview.

* Run "cargo fmt --all" with rustfmt 0.4.1.

rustfmt 0.4.1 is the latest release of rustfmt-preview available on the
stable channel.

* Fix a long line that rustfmt 0.4.1 can't handle.

* Remove unneeded commas left behind by rustfmt.
2018-05-25 11:38:38 -07:00
Dan Gohman
99f6055c55 Fix warnings reported by bashate.
See https://pypi.org/project/bashate/ for more info.
2018-05-24 16:53:34 -07:00
Dan Gohman
d46ceedc98 Tidy up unneeded commmas. 2018-05-24 14:52:51 -07:00
data-pup
191bab162b Optimize 0.0 floating point constants. (#344)
* Optimize 0.0 floating point constants. Rather than using the existing
process of emitting bit patterns and moving them into floating point
registers, use the `xorps` instruction to zero out the register.

* is_zero predicate function will not accept negative zero. Fixed formatting for encoding recipe and filetests.
2018-05-24 14:16:25 -07:00
Ram
4afb28ef59 Use wabt, and make the wasm subcommand optional. (#347)
* Use wabt for wasm testing.

* Use wabt in cton-util.

* Make the wasm subcommand optional.
2018-05-24 08:23:00 -07:00
Dan Gohman
b855184ae1 Make WasmError and WasmResult public types. 2018-05-22 09:37:33 -07:00
Dan Gohman
f835a1b662 Followup to #345 to fix no_std errors. 2018-05-22 07:23:28 -07:00
Dan Gohman
89e7d56120 Allow wasm embedders to reject wasm modules with unsupported features. (#345)
Define `WasmError` (and an accompanying `WasmResult`) to represent
errors translating WebAssembly functions. Make `translate_call` and
related functions return `WasmResult`s so that embedders have the
flexibility to reject features they don't support.

Move `InvalidInput` out of `CtonError` and into `WasmError`, where it's
now named `InvalidWebAssembly`, as it's a WebAssembly-specific error
condition. Also extend it to preserve the original error message and
bytecode offset.
2018-05-21 20:49:19 -07:00
Dan Gohman
923ea8ada9 Add assertions to check that postopt encoding succeeds. 2018-05-18 15:40:45 -07:00
Amanieu d'Antras
e9d362d902 Improve coalescing performance by using a FxHashMap (#340)
* Use FxHashMap instead of HashMap for better performance

* Replace the binary search in the coalescing pass with a FxHashMap

This speeds up coalescing by up to 16% and overall compilation by 9%
2018-05-18 15:40:08 -07:00
Amanieu d'Antras
80fdfb2376 Optimize partition_slice (#341)
* Generate debug symbols in optimized builds.

This allows profiling tools to provide more accurate information,
especially details about inlined functions.

* Rewrite and optimize partition_slice

This improves the performance of the register allocation passes
which use LiveValueTracker.
2018-05-18 12:54:00 -07:00
Dan Gohman
4c150907bf Issue better error messages in use_var and def_var.
Include the name of the variable when diagnosing uses and defs of
undeclared variables. And, add an assert to def_var to check that the
declared type of a variable matches the value type of the def.

With this change, `Variable` implementations must now implement `Debug`.
2018-05-14 20:11:51 -10:00
Dan Gohman
f986acfe7c Correct an assert message, spotted by @MarkSwanson 2018-05-14 20:11:51 -10:00
Dan Gohman
842cd13bd1 Improve the error message when python isn't installed. 2018-05-14 20:11:51 -10:00
pup
34b8c00d61 Minor typo fix in constant_hash comment. (#329) 2018-05-12 07:30:15 -10:00
pup
b36fc6b75f Issue 311 - Add a pass to make NaN bits deterministic. (#322) 2018-05-09 15:11:58 -05:00