/*-----------------------------------------------------Routines::startRoutine-+ | | +----------------------------------------------------------------------------*/ void Routines::startRoutine( CallType ct, CodeBuffer & cb, int top, RexxString ** stack, Arguments::PresenceBits presenceBits ) { save(); m_base = m_top = top; // don't change the stack top. m_args.~Arguments(); new(&m_args) Arguments(stack, presenceBits, m_base); if (ct == CT_SUBROUTINE) { --m_base; } m_isProcedure = false; m_ct = ct; m_posCur = cb.getRunPos(); }
/*---------------------------------------------------Routines::startInterpret-+ | | +----------------------------------------------------------------------------*/ void Routines::startInterpret( CodeBuffer & cb, int top, int base, bool isInteractiveTrace ) { save(); // set the new values m_isProcedure = false; m_ct = CT_INTERPRET; m_posCur = cb.getRunPos(); m_posEnd = cb.getEndPos(); m_top = top; m_base = base; if (isInteractiveTrace) { m_signals |= SIG_DISABLED; // trap everything } }