Commit Graph

1840 Commits

Author SHA1 Message Date
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
f37ebaa4ba Bump version to 0.9.0 2018-06-07 11:42:52 -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
Bruce Mitchener
5c5e66cebd Update to capstone 0.4. 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
35f2cae00c Add comments explaining the rustfmt installation dance. 2018-05-31 09:32:02 -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
a6e6b79a2e Remove the install of the wasm-toolchain binary package.
With 8f4a3586e5a787fd32a9afe35df4a9811d92c66b, we now have proper wabt
integration, so we no longer need to download and install a separate
binary package.
2018-05-24 14:52:51 -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
Jonathan Foote
1924039713 cargo fuzz integration (#306)
* added wip translate_module fuzzer

* use local binaryen-rs fork (with shim) for fuzzing

* minor doc cleanup

* check fuzzer integration via CI

* switch back to upstream binaryen-rs; add forgotten integration test directive
2018-05-14 09:31:27 -10:00
Bruce Mitchener
07c65bab11 Update to docopt 1.0. (#332) 2018-05-14 09:27:14 -10:00
Jordan Danford
e9a0a9977d Use SVG version of Gitter icon in README.md (#331) 2018-05-12 07:49:07 -10:00
pup
34b8c00d61 Minor typo fix in constant_hash comment. (#329) 2018-05-12 07:30:15 -10:00