pub(crate) fn push_call_frame(&mut self, ip: usize, args: usize) -> Result<(), VmError> {
        let stack_top = self.stack.swap_stack_bottom(args)?;

        self.call_frames.push(CallFrame {
            ip: self.ip,
            stack_bottom: stack_top,
        });

        self.ip = ip.overflowing_sub(1).0;
        Ok(())
    }
/// Push a new call frame.
///
/// This will cause the `args` number of elements on the stack to be
/// associated and accessible to the new call frame.
Push a new call frame.
This will cause the `args` number of elements on the stack to be
associated and accessible to the new call frame.
Push a new call frame . This will cause the ` args ` number of elements on the stack to be associated and accessible to the new call frame .
pub(crate) fn push_call_frame(&mut self, ip: usize, args: usize) -> Result<(), VmError> {
        let stack_top = self.stack.swap_stack_bottom(args)?;
        self.call_frames.push(CallFrame {
            ip: self.ip,
            stack_bottom: stack_top,
        });
        self.ip = ip.overflowing_sub(1).0;
        Ok(())
    }
pub ( crate ) fn push_call_frame ( & mut self , ip : usize , args : usize ) -> Result < ( ) , VmError > { let stack_top = self . stack . swap_stack_bottom ( args ) ? ; self . call_frames . push ( CallFrame { ip : self . ip , stack_bottom : stack_top , } ) ; self . ip = ip . overflowing_sub ( 1 ) . 0 ; Ok ( ( ) ) }
Push a new call frame.
Push a new call frame .
&mut self
ip
usize
args
usize
&mut self
ip
usize
args
usize