StackFrame constructor

StackFrame(
  1. int callIndex,
  2. dynamic evalIndex
)

Implementation

StackFrame(int callIndex, evalIndex)
:
  locals = Queue<int>(),
  evals = Queue<int>()
{
  returnAddr = Z.engine.callStack[callIndex];
  returnVar = Z.engine.callStack[++callIndex];

  var totalLocals = Z.engine.callStack[++callIndex];

  for(int i = 0; i < totalLocals; i++){
    locals.addFirst(Z.engine.callStack[++callIndex]);
  }

  totalArgsPassed = Z.engine.callStack[++callIndex];

  nextCallStackIndex = callIndex + 1;

  if (nextCallStackIndex! >= Z.engine.callStack.length) {
    nextCallStackIndex = null;
  }

  var eStack = Z.engine.stack[evalIndex];

  while(eStack != Engine.stackMarker){
      evals.addFirst(eStack);
      eStack = Z.engine.stack[++evalIndex];
  }

  if (nextCallStackIndex != null) {
    nextEvalStackIndex = evalIndex + 1;
  }
}