Beispiel #1
0
/*-----------------------------------------------------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();
}
Beispiel #2
0
/*---------------------------------------------------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
   }
}