--- /dev/null 2015-11-11 00:08:33.433730035 +0300 +++ new/test/gc/g1/plab/lib/Storage.java 2015-11-17 19:17:57.080880537 +0300 @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package gc.g1.plab.lib; + +/** + * The Storage is used for storing reachable objects. + * Class will store not more than capacity, which can be set during creation. + * If we exceed capacity, object will be stored at existing entries. + * So, if capacity=1, all previously added objects will be unreachable. + */ +public class Storage { + + private int capacity; + + private Object[] array; + private int index; + + /** + * Create Storage object with defined capacity + * + * @param capacity + */ + public Storage(int capacity) { + if (capacity <= 0) { + throw new IllegalArgumentException("Items number should be greater than 0."); + } + this.capacity = capacity; + index = 0; + array = new Object[this.capacity]; + } + + /** + * Store object into Storage. + * + * @param o - Object to store + */ + public void store(Object o) { + if (array == null) { + throw new RuntimeException("Capacity should be set before storing"); + } + array[index % capacity] = o; + ++index; + } + + /** + * Clear all stored objects. + */ + public void clear() { + array = null; + } +}