reallocateStacks method

void reallocateStacks()

Implementation

void reallocateStacks() {
  var old_stack_length = (stateStack.isEmpty ? 0 : stateStack.length),
      stack_length = old_stack_length + STACK_INCREMENT;

  if (stateStack.isEmpty) {
    stateStack = List.filled(stack_length, 0);
    locationStack = List.filled(stack_length, 0);
    tempStack = List.filled(stack_length, 0);
    prevStack = List.filled(stack_length, 0);
    nextStack = List.filled(stack_length, 0);
    scopeIndex = List.filled(stack_length, 0);
    scopePosition = List.filled(stack_length, 0);
  } else {
    ArrayList.copy(stateStack, 0, stateStack = List.filled(stack_length, 0),
        0, old_stack_length);
    ArrayList.copy(locationStack, 0,
        locationStack = List.filled(stack_length, 0), 0, old_stack_length);

    ArrayList.copy(tempStack, 0, tempStack = List.filled(stack_length, 0), 0,
        old_stack_length);
    ArrayList.copy(prevStack, 0, prevStack = List.filled(stack_length, 0), 0,
        old_stack_length);
    ArrayList.copy(nextStack, 0, nextStack = List.filled(stack_length, 0), 0,
        old_stack_length);
    ArrayList.copy(scopeIndex, 0, scopeIndex = List.filled(stack_length, 0),
        0, old_stack_length);
    ArrayList.copy(scopePosition, 0,
        scopePosition = List.filled(stack_length, 0), 0, old_stack_length);
  }
  return;
}