Rename "Stackmap" to "StackMap"
And "stackmap" to "stack_map". This commit is purely mechanical.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
//! ABI definitions.
|
||||
|
||||
use crate::binemit::Stackmap;
|
||||
use crate::binemit::StackMap;
|
||||
use crate::ir::StackSlot;
|
||||
use crate::machinst::*;
|
||||
use crate::settings;
|
||||
@@ -96,14 +96,14 @@ pub trait ABIBody {
|
||||
/// Store to a spillslot.
|
||||
fn store_spillslot(&self, slot: SpillSlot, ty: Type, from_reg: Reg) -> Self::I;
|
||||
|
||||
/// Generate a stackmap, given a list of spillslots and the emission state
|
||||
/// Generate a stack map, given a list of spillslots and the emission state
|
||||
/// at a given program point (prior to emission fo the safepointing
|
||||
/// instruction).
|
||||
fn spillslots_to_stackmap(
|
||||
fn spillslots_to_stack_map(
|
||||
&self,
|
||||
slots: &[SpillSlot],
|
||||
state: &<Self::I as MachInstEmit>::State,
|
||||
) -> Stackmap;
|
||||
) -> StackMap;
|
||||
|
||||
/// Generate a prologue, post-regalloc. This should include any stack
|
||||
/// frame or other setup necessary to use the other methods (`load_arg`,
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
//! Given these invariants, we argue why each optimization preserves execution
|
||||
//! semantics below (grep for "Preserves execution semantics").
|
||||
|
||||
use crate::binemit::{Addend, CodeOffset, CodeSink, Reloc, Stackmap};
|
||||
use crate::binemit::{Addend, CodeOffset, CodeSink, Reloc, StackMap};
|
||||
use crate::ir::{ExternalName, Opcode, SourceLoc, TrapCode};
|
||||
use crate::machinst::{BlockIndex, MachInstLabelUse, VCodeInst};
|
||||
use crate::timing;
|
||||
@@ -169,8 +169,8 @@ pub struct MachBuffer<I: VCodeInst> {
|
||||
call_sites: SmallVec<[MachCallSite; 16]>,
|
||||
/// Any source location mappings referring to this code.
|
||||
srclocs: SmallVec<[MachSrcLoc; 64]>,
|
||||
/// Any stackmaps referring to this code.
|
||||
stackmaps: SmallVec<[MachStackMap; 8]>,
|
||||
/// Any stack maps referring to this code.
|
||||
stack_maps: SmallVec<[MachStackMap; 8]>,
|
||||
/// The current source location in progress (after `start_srcloc()` and
|
||||
/// before `end_srcloc()`). This is a (start_offset, src_loc) tuple.
|
||||
cur_srcloc: Option<(CodeOffset, SourceLoc)>,
|
||||
@@ -234,8 +234,8 @@ pub struct MachBufferFinalized {
|
||||
call_sites: SmallVec<[MachCallSite; 16]>,
|
||||
/// Any source location mappings referring to this code.
|
||||
srclocs: SmallVec<[MachSrcLoc; 64]>,
|
||||
/// Any stackmaps referring to this code.
|
||||
stackmaps: SmallVec<[MachStackMap; 8]>,
|
||||
/// Any stack maps referring to this code.
|
||||
stack_maps: SmallVec<[MachStackMap; 8]>,
|
||||
}
|
||||
|
||||
static UNKNOWN_LABEL_OFFSET: CodeOffset = 0xffff_ffff;
|
||||
@@ -261,8 +261,8 @@ impl MachLabel {
|
||||
}
|
||||
}
|
||||
|
||||
/// A stackmap extent, when creating a stackmap.
|
||||
pub enum StackmapExtent {
|
||||
/// A stack map extent, when creating a stack map.
|
||||
pub enum StackMapExtent {
|
||||
/// The stack map starts at this instruction, and ends after the number of upcoming bytes
|
||||
/// (note: this is a code offset diff).
|
||||
UpcomingBytes(CodeOffset),
|
||||
@@ -282,7 +282,7 @@ impl<I: VCodeInst> MachBuffer<I> {
|
||||
traps: SmallVec::new(),
|
||||
call_sites: SmallVec::new(),
|
||||
srclocs: SmallVec::new(),
|
||||
stackmaps: SmallVec::new(),
|
||||
stack_maps: SmallVec::new(),
|
||||
cur_srcloc: None,
|
||||
label_offsets: SmallVec::new(),
|
||||
label_aliases: SmallVec::new(),
|
||||
@@ -1151,7 +1151,7 @@ impl<I: VCodeInst> MachBuffer<I> {
|
||||
traps: self.traps,
|
||||
call_sites: self.call_sites,
|
||||
srclocs: self.srclocs,
|
||||
stackmaps: self.stackmaps,
|
||||
stack_maps: self.stack_maps,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1212,28 +1212,28 @@ impl<I: VCodeInst> MachBuffer<I> {
|
||||
}
|
||||
}
|
||||
|
||||
/// Add stackmap metadata for this program point: a set of stack offsets (from SP upward) that
|
||||
/// contain live references.
|
||||
/// Add stack map metadata for this program point: a set of stack offsets
|
||||
/// (from SP upward) that contain live references.
|
||||
///
|
||||
/// The `offset_to_fp` value is the offset from the nominal SP (at which the `stack_offsets`
|
||||
/// are based) and the FP value. By subtracting `offset_to_fp` from each `stack_offsets`
|
||||
/// element, one can obtain live-reference offsets from FP instead.
|
||||
pub fn add_stackmap(&mut self, extent: StackmapExtent, stackmap: Stackmap) {
|
||||
pub fn add_stack_map(&mut self, extent: StackMapExtent, stack_map: StackMap) {
|
||||
let (start, end) = match extent {
|
||||
StackmapExtent::UpcomingBytes(insn_len) => {
|
||||
StackMapExtent::UpcomingBytes(insn_len) => {
|
||||
let start_offset = self.cur_offset();
|
||||
(start_offset, start_offset + insn_len)
|
||||
}
|
||||
StackmapExtent::StartedAtOffset(start_offset) => {
|
||||
StackMapExtent::StartedAtOffset(start_offset) => {
|
||||
let end_offset = self.cur_offset();
|
||||
debug_assert!(end_offset >= start_offset);
|
||||
(start_offset, end_offset)
|
||||
}
|
||||
};
|
||||
self.stackmaps.push(MachStackMap {
|
||||
self.stack_maps.push(MachStackMap {
|
||||
offset: start,
|
||||
offset_end: end,
|
||||
stackmap,
|
||||
stack_map,
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1295,9 +1295,9 @@ impl MachBufferFinalized {
|
||||
sink.end_codegen();
|
||||
}
|
||||
|
||||
/// Get the stackmap metadata for this code.
|
||||
pub fn stackmaps(&self) -> &[MachStackMap] {
|
||||
&self.stackmaps[..]
|
||||
/// Get the stack map metadata for this code.
|
||||
pub fn stack_maps(&self) -> &[MachStackMap] {
|
||||
&self.stack_maps[..]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1378,17 +1378,17 @@ pub struct MachSrcLoc {
|
||||
pub loc: SourceLoc,
|
||||
}
|
||||
|
||||
/// Record of stackmap metadata: stack offsets containing references.
|
||||
/// Record of stack map metadata: stack offsets containing references.
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct MachStackMap {
|
||||
/// The code offset at which this stackmap applies.
|
||||
/// The code offset at which this stack map applies.
|
||||
pub offset: CodeOffset,
|
||||
/// The code offset just past the "end" of the instruction: that is, the
|
||||
/// offset of the first byte of the following instruction, or equivalently,
|
||||
/// the start offset plus the instruction length.
|
||||
pub offset_end: CodeOffset,
|
||||
/// The Stackmap itself.
|
||||
pub stackmap: Stackmap,
|
||||
/// The stack map itself.
|
||||
pub stack_map: StackMap,
|
||||
}
|
||||
|
||||
/// Record of branch instruction in the buffer, to facilitate editing.
|
||||
|
||||
@@ -23,7 +23,7 @@ where
|
||||
// Build the lowering context.
|
||||
let lower = Lower::new(f, abi, block_order)?;
|
||||
// Lower the IR.
|
||||
let (mut vcode, stackmap_request_info) = {
|
||||
let (mut vcode, stack_map_request_info) = {
|
||||
let _tt = timing::vcode_lower();
|
||||
lower.lower(b)?
|
||||
};
|
||||
@@ -62,11 +62,11 @@ where
|
||||
|
||||
// If either there are no reference-typed values, or else there are
|
||||
// but there are no safepoints at which we need to know about them,
|
||||
// then we don't need stackmaps.
|
||||
let sri = if stackmap_request_info.reftyped_vregs.len() > 0
|
||||
&& stackmap_request_info.safepoint_insns.len() > 0
|
||||
// then we don't need stack maps.
|
||||
let sri = if stack_map_request_info.reftyped_vregs.len() > 0
|
||||
&& stack_map_request_info.safepoint_insns.len() > 0
|
||||
{
|
||||
Some(&stackmap_request_info)
|
||||
Some(&stack_map_request_info)
|
||||
} else {
|
||||
None
|
||||
};
|
||||
|
||||
@@ -778,10 +778,10 @@ impl<'func, I: VCodeInst> Lower<'func, I> {
|
||||
self.copy_bbs_to_vcode();
|
||||
|
||||
// Now that we've emitted all instructions into the VCodeBuilder, let's build the VCode.
|
||||
let (vcode, stackmap_info) = self.vcode.build();
|
||||
let (vcode, stack_map_info) = self.vcode.build();
|
||||
debug!("built vcode: {:?}", vcode);
|
||||
|
||||
Ok((vcode, stackmap_info))
|
||||
Ok((vcode, stack_map_info))
|
||||
}
|
||||
|
||||
/// Get the actual inputs for a value. This is the implementation for
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
//!
|
||||
//! ```
|
||||
|
||||
use crate::binemit::{CodeInfo, CodeOffset, Stackmap};
|
||||
use crate::binemit::{CodeInfo, CodeOffset, StackMap};
|
||||
use crate::ir::condcodes::IntCC;
|
||||
use crate::ir::{Function, Type};
|
||||
use crate::result::CodegenResult;
|
||||
@@ -279,7 +279,7 @@ pub trait MachInstEmitState<I: MachInst>: Default + Clone + Debug {
|
||||
fn new(abi: &dyn ABIBody<I = I>) -> Self;
|
||||
/// Update the emission state before emitting an instruction that is a
|
||||
/// safepoint.
|
||||
fn pre_safepoint(&mut self, _stackmap: Stackmap) {}
|
||||
fn pre_safepoint(&mut self, _stack_map: StackMap) {}
|
||||
}
|
||||
|
||||
/// The result of a `MachBackend::compile_function()` call. Contains machine
|
||||
|
||||
@@ -94,7 +94,7 @@ pub struct VCode<I: VCodeInst> {
|
||||
safepoint_insns: Vec<InsnIndex>,
|
||||
|
||||
/// For each safepoint entry in `safepoint_insns`, a list of `SpillSlot`s.
|
||||
/// These are used to generate actual stackmaps at emission. Filled in
|
||||
/// These are used to generate actual stack maps at emission. Filled in
|
||||
/// post-regalloc.
|
||||
safepoint_slots: Vec<Vec<SpillSlot>>,
|
||||
}
|
||||
@@ -117,8 +117,8 @@ pub struct VCodeBuilder<I: VCodeInst> {
|
||||
/// In-progress VCode.
|
||||
vcode: VCode<I>,
|
||||
|
||||
/// In-progress stackmap-request info.
|
||||
stackmap_info: StackmapRequestInfo,
|
||||
/// In-progress stack map-request info.
|
||||
stack_map_info: StackmapRequestInfo,
|
||||
|
||||
/// Index of the last block-start in the vcode.
|
||||
block_start: InsnIndex,
|
||||
@@ -135,7 +135,7 @@ impl<I: VCodeInst> VCodeBuilder<I> {
|
||||
pub fn new(abi: Box<dyn ABIBody<I = I>>, block_order: BlockLoweringOrder) -> VCodeBuilder<I> {
|
||||
let reftype_class = I::ref_type_regclass(abi.flags());
|
||||
let vcode = VCode::new(abi, block_order);
|
||||
let stackmap_info = StackmapRequestInfo {
|
||||
let stack_map_info = StackmapRequestInfo {
|
||||
reftype_class,
|
||||
reftyped_vregs: vec![],
|
||||
safepoint_insns: vec![],
|
||||
@@ -143,7 +143,7 @@ impl<I: VCodeInst> VCodeBuilder<I> {
|
||||
|
||||
VCodeBuilder {
|
||||
vcode,
|
||||
stackmap_info,
|
||||
stack_map_info,
|
||||
block_start: 0,
|
||||
succ_start: 0,
|
||||
cur_srcloc: SourceLoc::default(),
|
||||
@@ -169,7 +169,7 @@ impl<I: VCodeInst> VCodeBuilder<I> {
|
||||
}
|
||||
self.vcode.vreg_types[vreg.get_index()] = ty;
|
||||
if is_reftype(ty) {
|
||||
self.stackmap_info.reftyped_vregs.push(vreg);
|
||||
self.stack_map_info.reftyped_vregs.push(vreg);
|
||||
self.vcode.have_ref_values = true;
|
||||
}
|
||||
}
|
||||
@@ -222,7 +222,7 @@ impl<I: VCodeInst> VCodeBuilder<I> {
|
||||
self.vcode.insts.push(insn);
|
||||
self.vcode.srclocs.push(self.cur_srcloc);
|
||||
if is_safepoint {
|
||||
self.stackmap_info
|
||||
self.stack_map_info
|
||||
.safepoint_insns
|
||||
.push(InstIx::new((self.vcode.insts.len() - 1) as u32));
|
||||
}
|
||||
@@ -239,12 +239,12 @@ impl<I: VCodeInst> VCodeBuilder<I> {
|
||||
}
|
||||
|
||||
/// Build the final VCode, returning the vcode itself as well as auxiliary
|
||||
/// information, such as the stackmap request information.
|
||||
/// information, such as the stack map request information.
|
||||
pub fn build(self) -> (VCode<I>, StackmapRequestInfo) {
|
||||
// TODO: come up with an abstraction for "vcode and auxiliary data". The
|
||||
// auxiliary data needs to be separate from the vcode so that it can be
|
||||
// referenced as the vcode is mutated (e.g. by the register allocator).
|
||||
(self.vcode, self.stackmap_info)
|
||||
(self.vcode, self.stack_map_info)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -460,11 +460,11 @@ impl<I: VCodeInst> VCode<I> {
|
||||
&& self.safepoint_insns[safepoint_idx] == iix
|
||||
{
|
||||
if self.safepoint_slots[safepoint_idx].len() > 0 {
|
||||
let stackmap = self.abi.spillslots_to_stackmap(
|
||||
let stack_map = self.abi.spillslots_to_stack_map(
|
||||
&self.safepoint_slots[safepoint_idx][..],
|
||||
&state,
|
||||
);
|
||||
state.pre_safepoint(stackmap);
|
||||
state.pre_safepoint(stack_map);
|
||||
}
|
||||
safepoint_idx += 1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user