/*
 * Copyright (C) 2011 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import java.util.ArrayList;
import java.util.List;

public class Main implements Runnable {
    public static void main(String[] args) throws Exception {
        Thread[] threads = new Thread[16];
        for (int i = 0; i < threads.length; i++) {
            threads[i] = new Thread(new Main(i));
        }
        for (Thread thread : threads) {
            thread.start();
        }
        for (Thread thread : threads) {
            thread.join();
        }
    }

    private final int id;

    private Main(int id) {
        this.id = id;
    }

    public void run() {
        List l = new ArrayList();
        for (int i = 0; i < 400; i++) {
            l.add(new ArrayList(i));
        }
    }
}

@@ -1168,34 +1168,99 @@
     
-%7D%0A%0A
     
-public void run() %7B
+// Allocate this early so it's independent of how the threads are scheduled on startup.
 %0A   
@@ -1268,13 +1268,13 @@
     
-List 
+this.
 l = 
@@ -1286,19 +1286,58 @@
 rrayList
-();
+%3CObject%3E();%0A    %7D%0A%0A    public void run() %7B
 %0A       
@@ -1361,9 +1361,10 @@
 i %3C 
-4
+10
 00; 
@@ -1362,32 +1362,54 @@
  %3C 1000; i++) %7B%0A
+            try %7B%0A    
             l.ad
@@ -1423,16 +1423,24 @@
 rrayList
+%3CObject%3E
 (i));%0A  
@@ -1445,18 +1445,133 @@
         
+  
-%7D%0A    %7D
+  %7D catch (OutOfMemoryError oom) %7B%0A                // Ignore.%0A            %7D%0A        %7D%0A    %7D%0A%0A    private List%3CObject%3E l;
 %0A%7D%0A

Fix run-test 114 ParallelGC to account for OOM