cranelift: Implement serialize/deserialize for stack maps

When the `enable-serde` feature is set.
This commit is contained in:
Nick Fitzgerald
2020-05-27 12:06:35 -07:00
parent 7d350c673c
commit 2e7b3ba8de
2 changed files with 4 additions and 1 deletions

View File

@@ -15,7 +15,8 @@ const NUM_BITS: usize = core::mem::size_of::<Num>() * 8;
/// The first value in the bitmap is of the lowest addressed slot on the stack. /// The first value in the bitmap is of the lowest addressed slot on the stack.
/// As all stacks in Isa's supported by Cranelift grow down, this means that /// As all stacks in Isa's supported by Cranelift grow down, this means that
/// first value is of the top of the stack and values proceed down the stack. /// first value is of the top of the stack and values proceed down the stack.
#[derive(Clone, Debug)] #[derive(Clone, Debug, PartialEq, Eq)]
#[cfg_attr(feature = "enable-serde", derive(serde::Deserialize, serde::Serialize))]
pub struct Stackmap { pub struct Stackmap {
bitmap: Vec<BitSet<Num>>, bitmap: Vec<BitSet<Num>>,
mapped_words: u32, mapped_words: u32,

View File

@@ -5,12 +5,14 @@
//! //!
//! If you would like to add support for larger bitsets in the future, you need to change the trait //! If you would like to add support for larger bitsets in the future, you need to change the trait
//! bound Into<u32> and the u32 in the implementation of `max_bits()`. //! bound Into<u32> and the u32 in the implementation of `max_bits()`.
use core::convert::{From, Into}; use core::convert::{From, Into};
use core::mem::size_of; use core::mem::size_of;
use core::ops::{Add, BitOr, Shl, Sub}; use core::ops::{Add, BitOr, Shl, Sub};
/// A small bitset built on a single primitive integer type /// A small bitset built on a single primitive integer type
#[derive(Clone, Copy, Debug, PartialEq, Eq)] #[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[cfg_attr(feature = "enable-serde", derive(serde::Serialize, serde::Deserialize))]
pub struct BitSet<T>(pub T); pub struct BitSet<T>(pub T);
impl<T> BitSet<T> impl<T> BitSet<T>