fn prologue_epilogue(&self, func: &mut ir::Function) -> CodegenResult<()> {
        let _tt = timing::prologue_epilogue();
        // This default implementation is unlikely to be good enough.
        use crate::ir::stackslot::{StackOffset, StackSize};
        use crate::stack_layout::layout_stack;

        let word_size = StackSize::from(self.pointer_bytes());

        // Account for the SpiderMonkey standard prologue pushes.
        if func.signature.call_conv.extends_baldrdash() {
            let bytes = StackSize::from(self.flags().baldrdash_prologue_words()) * word_size;
            let mut ss = ir::StackSlotData::new(ir::StackSlotKind::IncomingArg, bytes);
            ss.offset = Some(-(bytes as StackOffset));
            func.stack_slots.push(ss);
        }

        let is_leaf = func.is_leaf();
        layout_stack(&mut func.stack_slots, is_leaf, word_size)?;
        Ok(())
    }
/// Compute the stack layout and insert prologue and epilogue code into `func`.
///
/// Return an error if the stack frame is too large.
Compute the stack layout and insert prologue and epilogue code into `func`.
Return an error if the stack frame is too large.
Compute the stack layout and insert prologue and epilogue code into ` func ` . Return an error if the stack frame is too large .
fn prologue_epilogue(&self, func: &mut ir::Function) -> CodegenResult<()> {
        let _tt = timing::prologue_epilogue();
        // This default implementation is unlikely to be good enough.
        use crate::ir::stackslot::{StackOffset, StackSize};
        use crate::stack_layout::layout_stack;
        let word_size = StackSize::from(self.pointer_bytes());
        // Account for the SpiderMonkey standard prologue pushes.
        if func.signature.call_conv.extends_baldrdash() {
            let bytes = StackSize::from(self.flags().baldrdash_prologue_words()) * word_size;
            let mut ss = ir::StackSlotData::new(ir::StackSlotKind::IncomingArg, bytes);
            ss.offset = Some(-(bytes as StackOffset));
            func.stack_slots.push(ss);
        }
        let is_leaf = func.is_leaf();
        layout_stack(&mut func.stack_slots, is_leaf, word_size)?;
        Ok(())
    }
fn prologue_epilogue ( & self , func : & mut ir :: Function ) -> CodegenResult < ( ) > { let _tt = timing :: prologue_epilogue ( ) ; // This default implementation is unlikely to be good enough. use crate :: ir :: stackslot :: { StackOffset , StackSize } ; use crate :: stack_layout :: layout_stack ; let word_size = StackSize :: from ( self . pointer_bytes ( ) ) ; // Account for the SpiderMonkey standard prologue pushes. if func . signature . call_conv . extends_baldrdash ( ) { let bytes = StackSize :: from ( self . flags ( ) . baldrdash_prologue_words ( ) ) * word_size ; let mut ss = ir :: StackSlotData :: new ( ir :: StackSlotKind :: IncomingArg , bytes ) ; ss . offset = Some ( - ( bytes as StackOffset ) ) ; func . stack_slots . push ( ss ) ; } let is_leaf = func . is_leaf ( ) ; layout_stack ( & mut func . stack_slots , is_leaf , word_size ) ? ; Ok ( ( ) ) }
Compute the stack layout and insert prologue and epilogue code into `func`.
Compute the stack layout and insert prologue and epilogue code into ` func ` .
&self
func
&mut ir::Function
&self
func
&mut ir::Function