1#!/bin/bash 2# 3# Copyright (C) 2008 The Android Open Source Project 4# 5# Licensed under the Apache License, Version 2.0 (the "License"); 6# you may not use this file except in compliance with the License. 7# You may obtain a copy of the License at 8# 9# http://www.apache.org/licenses/LICENSE-2.0 10# 11# Unless required by applicable law or agreed to in writing, software 12# distributed under the License is distributed on an "AS IS" BASIS, 13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14# See the License for the specific language governing permissions and 15# limitations under the License. 16 17# Stop if something fails. 18set -e 19 20# Write out files with 65500 total static fields, instance fields, and methods 21# to exceed the dex format's limits. 22mkdir src 23awk ' 24BEGIN { 25 writeFileField("FillerStatic", "static public int staticInt"); 26 writeFileField("FillerField", "public int fieldInt"); 27 writeFileMethod("FillerMethod"); 28} 29function writeFileField(name, type) { 30 fileName = "src/" name ".java"; 31 printf("public class %s {\n", name) > fileName; 32 for (i = 1; i <= 65500; i++) { 33 printf(" %s%d;\n", type, i) > fileName; 34 } 35 printf("}\n") > fileName; 36} 37function writeFileMethod(name) { 38 fileName = "src/" name ".java"; 39 printf("public class %s {\n", name) > fileName; 40 for (i = 1; i <= 65500; i++) { 41 printf(" public void meth%d() { }\n", i) > fileName; 42 } 43 printf("}\n") > fileName; 44}' 45 46# The test relies on the error message produced by dx, not jack, so keep building with dx for now 47# (b/19467889). 48mkdir classes 49${JAVAC} -d classes `find src -name '*.java'` 50${DX} -JXmx1024m --dex --no-optimize classes 51