cranelift: Implement serialize/deserialize for stack maps
When the `enable-serde` feature is set.
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user