wasmtime/runtime/vm/mpk/
disabled.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
//! Noop implementations of MPK primitives for environments that do not support
//! the feature.

#![allow(missing_docs)]

#[cfg(feature = "pooling-allocator")]
use crate::prelude::*;

#[cfg(feature = "pooling-allocator")]
pub fn is_supported() -> bool {
    false
}

#[cfg(feature = "pooling-allocator")]
pub fn keys(_: usize) -> &'static [ProtectionKey] {
    &[]
}

#[cfg(any(feature = "async", feature = "pooling-allocator"))]
pub fn allow(_: ProtectionMask) {}

#[cfg(feature = "async")]
pub fn current_mask() -> ProtectionMask {
    ProtectionMask
}

#[derive(Clone, Copy, Debug)]
pub enum ProtectionKey {}

impl ProtectionKey {
    #[cfg(feature = "pooling-allocator")]
    pub fn protect(&self, _: &mut [u8]) -> Result<()> {
        match *self {}
    }
    #[cfg(feature = "pooling-allocator")]
    pub fn as_stripe(&self) -> usize {
        match *self {}
    }
}

#[derive(Clone, Copy, Debug)]
#[cfg(any(feature = "async", feature = "pooling-allocator"))]
pub struct ProtectionMask;

#[cfg(any(feature = "async", feature = "pooling-allocator"))]
impl ProtectionMask {
    #[cfg(any(feature = "async", feature = "pooling-allocator"))]
    pub fn all() -> Self {
        Self
    }
    #[cfg(feature = "pooling-allocator")]
    pub fn zero() -> Self {
        Self
    }
    #[cfg(feature = "pooling-allocator")]
    pub fn or(self, _: ProtectionKey) -> Self {
        Self
    }
}