Bug 1661723; Bump Cranelift to a7f7c23bf9c37c642da962d575b7c99007918872; r=lth

Differential Revision: https://phabricator.services.mozilla.com/D88784
This commit is contained in:
Benjamin Bouvier 2020-08-31 16:34:29 +00:00
parent eadff29860
commit 1893cc05f1
8 changed files with 29 additions and 20 deletions

View File

@ -60,7 +60,7 @@ rev = "3224e2dee65c0726c448484d4c3c43956b9330ec"
[source."https://github.com/bytecodealliance/wasmtime"] [source."https://github.com/bytecodealliance/wasmtime"]
git = "https://github.com/bytecodealliance/wasmtime" git = "https://github.com/bytecodealliance/wasmtime"
replace-with = "vendored-sources" replace-with = "vendored-sources"
rev = "7c856542854bc8c5da9d5fb1a0b41f3c660d8484" rev = "a7f7c23bf9c37c642da962d575b7c99007918872"
[source."https://github.com/badboy/failure"] [source."https://github.com/badboy/failure"]
git = "https://github.com/badboy/failure" git = "https://github.com/badboy/failure"

14
Cargo.lock generated
View File

@ -769,7 +769,7 @@ dependencies = [
[[package]] [[package]]
name = "cranelift-bforest" name = "cranelift-bforest"
version = "0.66.0" version = "0.66.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=7c856542854bc8c5da9d5fb1a0b41f3c660d8484#7c856542854bc8c5da9d5fb1a0b41f3c660d8484" source = "git+https://github.com/bytecodealliance/wasmtime?rev=a7f7c23bf9c37c642da962d575b7c99007918872#a7f7c23bf9c37c642da962d575b7c99007918872"
dependencies = [ dependencies = [
"cranelift-entity 0.66.0", "cranelift-entity 0.66.0",
] ]
@ -777,7 +777,7 @@ dependencies = [
[[package]] [[package]]
name = "cranelift-codegen" name = "cranelift-codegen"
version = "0.66.0" version = "0.66.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=7c856542854bc8c5da9d5fb1a0b41f3c660d8484#7c856542854bc8c5da9d5fb1a0b41f3c660d8484" source = "git+https://github.com/bytecodealliance/wasmtime?rev=a7f7c23bf9c37c642da962d575b7c99007918872#a7f7c23bf9c37c642da962d575b7c99007918872"
dependencies = [ dependencies = [
"byteorder", "byteorder",
"cranelift-bforest", "cranelift-bforest",
@ -794,7 +794,7 @@ dependencies = [
[[package]] [[package]]
name = "cranelift-codegen-meta" name = "cranelift-codegen-meta"
version = "0.66.0" version = "0.66.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=7c856542854bc8c5da9d5fb1a0b41f3c660d8484#7c856542854bc8c5da9d5fb1a0b41f3c660d8484" source = "git+https://github.com/bytecodealliance/wasmtime?rev=a7f7c23bf9c37c642da962d575b7c99007918872#a7f7c23bf9c37c642da962d575b7c99007918872"
dependencies = [ dependencies = [
"cranelift-codegen-shared", "cranelift-codegen-shared",
"cranelift-entity 0.66.0", "cranelift-entity 0.66.0",
@ -803,7 +803,7 @@ dependencies = [
[[package]] [[package]]
name = "cranelift-codegen-shared" name = "cranelift-codegen-shared"
version = "0.66.0" version = "0.66.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=7c856542854bc8c5da9d5fb1a0b41f3c660d8484#7c856542854bc8c5da9d5fb1a0b41f3c660d8484" source = "git+https://github.com/bytecodealliance/wasmtime?rev=a7f7c23bf9c37c642da962d575b7c99007918872#a7f7c23bf9c37c642da962d575b7c99007918872"
[[package]] [[package]]
name = "cranelift-entity" name = "cranelift-entity"
@ -813,12 +813,12 @@ source = "git+https://github.com/PLSysSec/lucet_sandbox_compiler?rev=477d8fc53a6
[[package]] [[package]]
name = "cranelift-entity" name = "cranelift-entity"
version = "0.66.0" version = "0.66.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=7c856542854bc8c5da9d5fb1a0b41f3c660d8484#7c856542854bc8c5da9d5fb1a0b41f3c660d8484" source = "git+https://github.com/bytecodealliance/wasmtime?rev=a7f7c23bf9c37c642da962d575b7c99007918872#a7f7c23bf9c37c642da962d575b7c99007918872"
[[package]] [[package]]
name = "cranelift-frontend" name = "cranelift-frontend"
version = "0.66.0" version = "0.66.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=7c856542854bc8c5da9d5fb1a0b41f3c660d8484#7c856542854bc8c5da9d5fb1a0b41f3c660d8484" source = "git+https://github.com/bytecodealliance/wasmtime?rev=a7f7c23bf9c37c642da962d575b7c99007918872#a7f7c23bf9c37c642da962d575b7c99007918872"
dependencies = [ dependencies = [
"cranelift-codegen", "cranelift-codegen",
"log", "log",
@ -829,7 +829,7 @@ dependencies = [
[[package]] [[package]]
name = "cranelift-wasm" name = "cranelift-wasm"
version = "0.66.0" version = "0.66.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=7c856542854bc8c5da9d5fb1a0b41f3c660d8484#7c856542854bc8c5da9d5fb1a0b41f3c660d8484" source = "git+https://github.com/bytecodealliance/wasmtime?rev=a7f7c23bf9c37c642da962d575b7c99007918872#a7f7c23bf9c37c642da962d575b7c99007918872"
dependencies = [ dependencies = [
"cranelift-codegen", "cranelift-codegen",
"cranelift-entity 0.66.0", "cranelift-entity 0.66.0",

View File

@ -75,8 +75,8 @@ failure_derive = { git = "https://github.com/badboy/failure", rev = "64af847bc5f
[patch.crates-io.cranelift-codegen] [patch.crates-io.cranelift-codegen]
git = "https://github.com/bytecodealliance/wasmtime" git = "https://github.com/bytecodealliance/wasmtime"
rev = "7c856542854bc8c5da9d5fb1a0b41f3c660d8484" rev = "a7f7c23bf9c37c642da962d575b7c99007918872"
[patch.crates-io.cranelift-wasm] [patch.crates-io.cranelift-wasm]
git = "https://github.com/bytecodealliance/wasmtime" git = "https://github.com/bytecodealliance/wasmtime"
rev = "7c856542854bc8c5da9d5fb1a0b41f3c660d8484" rev = "a7f7c23bf9c37c642da962d575b7c99007918872"

File diff suppressed because one or more lines are too long

View File

@ -124,10 +124,18 @@ impl ABIMachineImpl for AArch64MachineImpl {
let mut next_stack: u64 = 0; let mut next_stack: u64 = 0;
let mut ret = vec![]; let mut ret = vec![];
let max_reg_vals = match (args_or_rets, is_baldrdash) { // Note on return values: on the regular non-baldrdash ABI, we may return values in 8
(ArgsOrRets::Args, _) => 8, // x0-x7, v0-v7 // registers for V128 and I64 registers independently of the number of register values
(ArgsOrRets::Rets, false) => 8, // x0-x7, v0-v7 // returned in the other class. That is, we can return values in up to 8 integer and 8
(ArgsOrRets::Rets, true) => 1, // x0 or v0 // vector registers at once.
// In Baldrdash, we can only use one register for return value for all the register
// classes. That is, we can't return values in both one integer and one vector register;
// only one return value may be in a register.
let (max_per_class_reg_vals, mut remaining_reg_vals) = match (args_or_rets, is_baldrdash) {
(ArgsOrRets::Args, _) => (8, 16), // x0-x7 and v0-v7
(ArgsOrRets::Rets, false) => (8, 16), // x0-x7 and v0-v7
(ArgsOrRets::Rets, true) => (1, 1), // x0 or v0, but not both
}; };
for i in 0..params.len() { for i in 0..params.len() {
@ -167,7 +175,7 @@ impl ABIMachineImpl for AArch64MachineImpl {
if let Some(param) = try_fill_baldrdash_reg(call_conv, param) { if let Some(param) = try_fill_baldrdash_reg(call_conv, param) {
assert!(rc == RegClass::I64); assert!(rc == RegClass::I64);
ret.push(param); ret.push(param);
} else if *next_reg < max_reg_vals { } else if *next_reg < max_per_class_reg_vals && remaining_reg_vals > 0 {
let reg = match rc { let reg = match rc {
RegClass::I64 => xreg(*next_reg), RegClass::I64 => xreg(*next_reg),
RegClass::V128 => vreg(*next_reg), RegClass::V128 => vreg(*next_reg),
@ -179,6 +187,7 @@ impl ABIMachineImpl for AArch64MachineImpl {
param.extension, param.extension,
)); ));
*next_reg += 1; *next_reg += 1;
remaining_reg_vals -= 1;
} else { } else {
// Compute size. Every arg takes a minimum slot of 8 bytes. (16-byte // Compute size. Every arg takes a minimum slot of 8 bytes. (16-byte
// stack alignment happens separately after all args.) // stack alignment happens separately after all args.)
@ -202,7 +211,7 @@ impl ABIMachineImpl for AArch64MachineImpl {
let extra_arg = if add_ret_area_ptr { let extra_arg = if add_ret_area_ptr {
debug_assert!(args_or_rets == ArgsOrRets::Args); debug_assert!(args_or_rets == ArgsOrRets::Args);
if next_xreg < max_reg_vals { if next_xreg < max_per_class_reg_vals && remaining_reg_vals > 0 {
ret.push(ABIArg::Reg( ret.push(ABIArg::Reg(
xreg(next_xreg).to_real_reg(), xreg(next_xreg).to_real_reg(),
I64, I64,

View File

@ -621,7 +621,7 @@ fn lower_insn_to_regs<C: LowerCtx<I = Inst>>(
let lhs = input_to_reg(ctx, inputs[0]); let lhs = input_to_reg(ctx, inputs[0]);
let (count, rhs) = if let Some(cst) = ctx.get_constant(inputs[1].insn) { let (count, rhs) = if let Some(cst) = ctx.get_input(insn, 1).constant {
let cst = if op == Opcode::Rotl || op == Opcode::Rotr { let cst = if op == Opcode::Rotl || op == Opcode::Rotr {
// Mask rotation count, according to Cranelift's semantics. // Mask rotation count, according to Cranelift's semantics.
(cst as u8) & (dst_ty.bits() as u8 - 1) (cst as u8) & (dst_ty.bits() as u8 - 1)

View File

@ -1 +1 @@
{"files":{"Cargo.toml":"0ac209bc13b1152b67c8ab3e0a87ab512d966367758cc7fa131096dbe97a1da8","LICENSE":"268872b9816f90fd8e85db5a28d33f8150ebb8dd016653fb39ef1f94f2686bc5","README.md":"96ceffbfd88fb06e3b41aa4d3087cffbbf8441d04eba7ab09662a72ab600a321","src/boxed_slice.rs":"69d539b72460c0aba1d30e0b72efb0c29d61558574d751c784794e14abf41352","src/iter.rs":"61fefdc49cafad4cacba5f5a7ad2396a23160642c688a7f0b0734277391847cd","src/keys.rs":"b8c2fba26dee15bf3d1880bb2b41e8d66fe1428d242ee6d9fd30ee94bbd0407d","src/lib.rs":"5ecb434f18c343f68c7080514c71f8c79c21952d1774beffa1bf348b6dd77b05","src/list.rs":"4bf609eb7cc7c000c18da746596d5fcc67eece3f919ee2d76e19f6ac371640d1","src/map.rs":"e5ce79a7536dc147092be4965785b55e24b11356554be57afab38a7a93f47f4e","src/packed_option.rs":"d931ba5ce07a5c77c8a62bb07316db21c101bc3fa1eb6ffd396f8a8944958185","src/primary.rs":"20fe2c1b9645606c5fd5d416225f1e6a4bea17ee7de73ef5492c113263a29dd6","src/set.rs":"b040054b8baa0599e64df9ee841640688e2a73b6eabbdc5a4f15334412db052a","src/sparse.rs":"536e31fdcf64450526f5e5b85e97406c26b998bc7e0d8161b6b449c24265449f"},"package":null} {"files":{"Cargo.toml":"0ac209bc13b1152b67c8ab3e0a87ab512d966367758cc7fa131096dbe97a1da8","LICENSE":"268872b9816f90fd8e85db5a28d33f8150ebb8dd016653fb39ef1f94f2686bc5","README.md":"96ceffbfd88fb06e3b41aa4d3087cffbbf8441d04eba7ab09662a72ab600a321","src/boxed_slice.rs":"69d539b72460c0aba1d30e0b72efb0c29d61558574d751c784794e14abf41352","src/iter.rs":"61fefdc49cafad4cacba5f5a7ad2396a23160642c688a7f0b0734277391847cd","src/keys.rs":"b8c2fba26dee15bf3d1880bb2b41e8d66fe1428d242ee6d9fd30ee94bbd0407d","src/lib.rs":"72aca3bf830dce85a8b5f2325b589810ca06ae09e8d2daf137524ad6e6737bbe","src/list.rs":"4bf609eb7cc7c000c18da746596d5fcc67eece3f919ee2d76e19f6ac371640d1","src/map.rs":"e5ce79a7536dc147092be4965785b55e24b11356554be57afab38a7a93f47f4e","src/packed_option.rs":"d931ba5ce07a5c77c8a62bb07316db21c101bc3fa1eb6ffd396f8a8944958185","src/primary.rs":"20fe2c1b9645606c5fd5d416225f1e6a4bea17ee7de73ef5492c113263a29dd6","src/set.rs":"b040054b8baa0599e64df9ee841640688e2a73b6eabbdc5a4f15334412db052a","src/sparse.rs":"536e31fdcf64450526f5e5b85e97406c26b998bc7e0d8161b6b449c24265449f"},"package":null}

View File

@ -92,7 +92,7 @@ macro_rules! entity_impl {
} }
impl $entity { impl $entity {
/// Return the underlying index value as a `u32`. /// Create a new instance from a `u32`.
#[allow(dead_code)] #[allow(dead_code)]
pub fn from_u32(x: u32) -> Self { pub fn from_u32(x: u32) -> Self {
debug_assert!(x < $crate::__core::u32::MAX); debug_assert!(x < $crate::__core::u32::MAX);