Struct cranelift_codegen::VCodeConstants
source · pub struct VCodeConstants { /* private fields */ }
Expand description
This structure tracks the large constants used in VCode that will be emitted separately by the MachBuffer.
First, during the lowering phase, constants are inserted using [VCodeConstants.insert]; an intermediate handle, [VCodeConstant], tracks what constants are used in this phase. Some deduplication is performed, when possible, as constant values are inserted.
Secondly, during the emission phase, the MachBuffer assigns MachLabels for each of the constants so that instructions can refer to the value’s memory location. The MachBuffer then writes the constant values to the buffer.
Implementations§
source§impl VCodeConstants
impl VCodeConstants
sourcepub fn with_capacity(expected_num_constants: usize) -> Self
pub fn with_capacity(expected_num_constants: usize) -> Self
Initialize the structure with the expected number of constants.
sourcepub fn insert(&mut self, data: VCodeConstantData) -> VCodeConstant
pub fn insert(&mut self, data: VCodeConstantData) -> VCodeConstant
Insert a constant; using this method indicates that a constant value will be used and thus
will be emitted to the MachBuffer
. The current implementation can deduplicate constants
that are VCodeConstantData::Pool or VCodeConstantData::WellKnown but not
VCodeConstantData::Generated.
sourcepub fn keys(&self) -> Keys<VCodeConstant>
pub fn keys(&self) -> Keys<VCodeConstant>
Iterate over the [VCodeConstant] keys inserted in this structure.
sourcepub fn iter(&self) -> impl Iterator<Item = (VCodeConstant, &VCodeConstantData)>
pub fn iter(&self) -> impl Iterator<Item = (VCodeConstant, &VCodeConstantData)>
Iterate over the [VCodeConstant] keys and the data (as a byte slice) inserted in this structure.
sourcepub fn get(&self, c: VCodeConstant) -> &VCodeConstantData
pub fn get(&self, c: VCodeConstant) -> &VCodeConstantData
Returns the data associated with the specified constant.
sourcepub fn pool_uses(&self, constant: &VCodeConstantData) -> bool
pub fn pool_uses(&self, constant: &VCodeConstantData) -> bool
Checks if the given VCodeConstantData is registered as used by the pool.