- /*
- * @(#)StackImpl.java 1.11 04/06/21
- *
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
-
- package com.sun.corba.se.impl.orbutil ;
-
- import java.util.EmptyStackException ;
-
- // We implement a Stack here instead of using java.util.Stack because
- // java.util.Stack is thread-safe, negatively impacting performance.
- // We use an ArrayList instead since it is not thread-safe.
- // RequestInfoStack is used quite frequently.
- public class StackImpl {
- // The stack for RequestInfo objects.
- private Object[] data = new Object[3] ;
- private int top = -1 ;
-
- // Tests if this stack is empty.
- public final boolean empty() {
- return top == -1;
- }
-
- // Looks at the object at the top of this stack without removing it
- // from the stack.
- public final Object peek() {
- if (empty())
- throw new EmptyStackException();
-
- return data[ top ];
- }
-
- // Removes the object at the top of this stack and returns that
- // object as the value of this function.
- public final Object pop() {
- Object obj = peek() ;
- data[top] = null ;
- top-- ;
- return obj;
- }
-
- private void ensure()
- {
- if (top == (data.length-1)) {
- int newSize = 2*data.length ;
- Object[] newData = new Object[ newSize ] ;
- System.arraycopy( data, 0, newData, 0, data.length ) ;
- data = newData ;
- }
- }
-
- // Pushes an item onto the top of the stack
- public final Object push( Object item ) {
- ensure() ;
- top++ ;
- data[top] = item;
- return item;
- }
- }