Exemple #1
0
 /**
  * Pops the given number of types from the output frame stack.
  *
  * @param elements the number of types that must be popped.
  */
 private void pop(final int elements) {
   if (outputStackTop >= elements) {
     outputStackTop -= elements;
   } else {
     // if the number of elements to be popped is greater than the number
     // of elements in the output stack, clear it, and pops the remaining
     // elements from the input stack.
     owner.inputStackTop -= elements - outputStackTop;
     outputStackTop = 0;
   }
 }
Exemple #2
0
 /**
  * Pushes a new type onto the output frame stack.
  *
  * @param type the type that must be pushed.
  */
 private void push(final int type) {
   // creates and/or resizes the output stack array if necessary
   if (outputStack == null) {
     outputStack = new int[10];
   }
   int n = outputStack.length;
   if (outputStackTop >= n) {
     int[] t = new int[Math.max(outputStackTop + 1, 2 * n)];
     System.arraycopy(outputStack, 0, t, 0, n);
     outputStack = t;
   }
   // pushes the type on the output stack
   outputStack[outputStackTop++] = type;
   // updates the maximun height reached by the output stack, if needed
   int top = owner.inputStackTop + outputStackTop;
   if (top > owner.outputStackMax) {
     owner.outputStackMax = top;
   }
 }