test/hotspot/jtreg/gc/cms/TestBubbleUpRef.java
author erikj
Tue, 12 Sep 2017 19:03:39 +0200
changeset 47216 71c04702a3d5
parent 40854 hotspot/test/gc/cms/TestBubbleUpRef.java@f20df9375ac9
child 50455 2b73cce96dce
permissions -rw-r--r--
8187443: Forest Consolidation: Move files to unified layout Reviewed-by: darcy, ihse
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
35923
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
     1
/*
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
     2
 * Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
     4
 *
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
     7
 * published by the Free Software Foundation.
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
     8
 *
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    13
 * accompanied this code).
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    14
 *
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    18
 *
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    21
 * questions.
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    22
 */
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    23
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    24
import java.lang.ref.ReferenceQueue;
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    25
import java.lang.ref.WeakReference;
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    26
import java.util.LinkedList;
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    27
import java.util.ListIterator;
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    28
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    29
/*
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    30
 * @test
39414
4adf52148100 8160088: update hotspot tests depending on GC to use @requires vm.gc.X
dfazunen
parents: 35923
diff changeset
    31
 * @requires vm.gc.ConcMarkSweep
35923
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    32
 * @key cte_test
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    33
 * @bug 4950157
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    34
 * @summary Stress the behavior of ergonomics when the heap is nearly full and
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    35
 *          stays nearly full.
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    36
 * @run main/othervm
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    37
 *  -XX:+UseConcMarkSweepGC -XX:-CMSYield -XX:-CMSPrecleanRefLists1
40854
f20df9375ac9 8164133: Tests gc/arguments/TestAlignmentToUseLargePages.java and gc/cms/TestBubbleUpRef.java use too small heap
dfazunen
parents: 39414
diff changeset
    38
 *  -XX:CMSInitiatingOccupancyFraction=0 -Xmx80m TestBubbleUpRef 16000 50 10000
35923
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    39
 */
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    40
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    41
/**
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    42
 * Test program to stress the behavior of ergonomics when the
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    43
 * heap is nearly full and stays nearly full.
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    44
 * This is a test to catch references that have been discovered
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    45
 * during concurrent marking and whose referents have been
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    46
 * cleared by the mutator.
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    47
 * Allocate objects with weak references until the heap is full
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    48
 * Free the objects.
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    49
 * Do work so that concurrent marking has a chance to work
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    50
 * Clear the referents out of the weak references
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    51
 * System.gc() in the hopes that it will acquire the collection
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    52
 * Free the weak references
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    53
 * Do it again.
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    54
 *
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    55
 * Use the following VM options
40854
f20df9375ac9 8164133: Tests gc/arguments/TestAlignmentToUseLargePages.java and gc/cms/TestBubbleUpRef.java use too small heap
dfazunen
parents: 39414
diff changeset
    56
 *     -Xmx80m -XX:-CMSYield [-XX:+UseConcMarkSweepGC] -XX:-CMSPrecleanRefLists1
35923
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    57
 *      -XX:CMSInitiatingOccupancyFraction=0
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    58
 *
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    59
 * Use parameter:
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    60
 *     args[0] - array size  (16000)
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    61
 *     args[1] - iterations  (50)
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    62
 *     args[2] - work        (10000)
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    63
 */
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    64
class MyList extends LinkedList {
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    65
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    66
    int[] a;
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    67
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    68
    MyList(int size) {
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    69
        a = new int[size];
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    70
    }
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    71
}
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    72
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    73
class MyRefList extends LinkedList {
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    74
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    75
    WeakReference ref;
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    76
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    77
    MyRefList(Object o, ReferenceQueue rq) {
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    78
        ref = new WeakReference(o, rq);
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    79
    }
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    80
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    81
    void clearReferent() {
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    82
        ref.clear();
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    83
    }
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    84
}
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    85
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    86
public class TestBubbleUpRef {
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    87
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    88
    MyList list;
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    89
    MyRefList refList;
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    90
    ReferenceQueue rq;
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    91
    int refListLen;
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    92
    int arraySize;
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    93
    int iterations;
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    94
    int workUnits;
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    95
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    96
    TestBubbleUpRef(int as, int cnt, int wk) {
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    97
        arraySize = as;
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    98
        iterations = cnt;
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
    99
        workUnits = wk;
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   100
        list = new MyList(arraySize);
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   101
        refList = new MyRefList(list, rq);
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   102
    }
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   103
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   104
    public void fill() {
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   105
        System.out.println("fill() " + iterations + " times");
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   106
        int count = 0;
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   107
        while (true) {
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   108
            try {
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   109
                // Allocations
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   110
                MyList next = new MyList(arraySize);
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   111
                list.add(next);
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   112
                MyRefList nextRef = new MyRefList(next, rq);
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   113
                refList.add(nextRef);
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   114
            } catch (OutOfMemoryError e) {
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   115
                // When the heap is full
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   116
                try {
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   117
                    if (count++ > iterations) {
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   118
                        return;
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   119
                    }
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   120
                    System.out.println("Freeing list");
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   121
                    while (!list.isEmpty()) {
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   122
                        list.removeFirst();
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   123
                    }
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   124
                    System.out.println("Doing work");
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   125
                    int j = 0;
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   126
                    for (int i = 1; i < workUnits; i++) {
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   127
                        j = j + i;
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   128
                    }
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   129
                    System.out.println("Clearing refs");
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   130
                    ListIterator listIt = refList.listIterator();
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   131
                    while (listIt.hasNext()) {
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   132
                        MyRefList next = (MyRefList) listIt.next();
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   133
                        next.clearReferent();
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   134
                    }
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   135
                    System.gc();
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   136
                    System.out.println("Freeing refs");
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   137
                    while (!refList.isEmpty()) {
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   138
                        refList.removeFirst();
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   139
                    }
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   140
                } catch (OutOfMemoryError e2) {
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   141
                    System.err.println("Out of Memory - 2 ");
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   142
                    continue;
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   143
                }
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   144
            } catch (Exception e) {
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   145
                System.err.println("Unexpected exception: " + e);
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   146
                return;
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   147
            }
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   148
        }
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   149
    }
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   150
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   151
    /**
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   152
     * Test entry point.
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   153
     *     args[0] - array size  (is the size of the int array in a list item)
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   154
     *     args[1] - iterations  (is the number of out-of-memory exceptions before exit)
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   155
     *     args[2] - work        (is the work done between allocations)
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   156
     * @param args
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   157
     */
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   158
    public static void main(String[] args) {
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   159
        // Get the input parameters.
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   160
        if (args.length != 3) {
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   161
            throw new IllegalArgumentException("Wrong number of input argumets");
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   162
        }
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   163
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   164
        int as = Integer.parseInt(args[0]);
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   165
        int cnt = Integer.parseInt(args[1]);
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   166
        int work = Integer.parseInt(args[2]);
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   167
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   168
        System.out.println("<array size> " + as + "\n"
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   169
                + "<OOM's> " + cnt + "\n"
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   170
                + "<work units> " + work + "\n");
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   171
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   172
        // Initialization
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   173
        TestBubbleUpRef b = new TestBubbleUpRef(as, cnt, work);
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   174
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   175
        // Run the test
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   176
        try {
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   177
            b.fill();
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   178
        } catch (OutOfMemoryError e) {
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   179
            b = null; // Free memory before trying to print anything
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   180
            System.err.println("Out of Memory - exiting ");
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   181
        } catch (Exception e) {
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   182
            System.err.println("Exiting ");
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   183
        }
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   184
    }
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   185
}
45c44344f6b7 8147003: Move BubbleUpRef test into CMS directory
dfazunen
parents:
diff changeset
   186