Revert "Prevent Outlining from generating methods with > 255 args"
This reverts commit e0e551933215b00b4f58e16ecaa471260b576a97.
Bug: b/291130232
Bug: b/294146496
Change-Id: I5ce9d4a6e805a957630c64671ae43bab803467aa
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/outliner/OutlinerImpl.java b/src/main/java/com/android/tools/r8/ir/optimize/outliner/OutlinerImpl.java
index 129ffa1..ef163ad 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/outliner/OutlinerImpl.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/outliner/OutlinerImpl.java
@@ -1078,7 +1078,6 @@
}
} else {
arguments.add(value);
- argumentRegisters += value.requiredRegisters();
if (instruction.isInvokeMethod()) {
argumentTypes.add(argumentTypeFromValue(value, instruction.asInvokeMethod(), i));
} else {
@@ -1549,7 +1548,6 @@
representative.getDefinition().getClassFileVersion());
}
});
- assert outlineMethod.getReference().getArity() <= Constants.U8BIT_MAX;
eventConsumer.acceptOutlineMethod(outlineMethod, sites);
generatedOutlines.put(outline, outlineMethod.getReference());
outlineMethods.add(outlineMethod);
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/outliner/OutlineInvokeStaticBailoutTest.java b/src/test/java/com/android/tools/r8/ir/optimize/outliner/OutlineInvokeStaticBailoutTest.java
deleted file mode 100644
index a127403..0000000
--- a/src/test/java/com/android/tools/r8/ir/optimize/outliner/OutlineInvokeStaticBailoutTest.java
+++ /dev/null
@@ -1,426 +0,0 @@
-// Copyright (c) 2023, the R8 project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-package com.android.tools.r8.ir.optimize.outliner;
-
-import com.android.tools.r8.NeverInline;
-import com.android.tools.r8.TestBase;
-import com.android.tools.r8.TestParameters;
-import com.android.tools.r8.TestParametersCollection;
-import com.android.tools.r8.utils.StringUtils;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-
-@RunWith(Parameterized.class)
-// This is a reproduction for b/291130232.
-public class OutlineInvokeStaticBailoutTest extends TestBase {
-
- private static final String EXPECTED_RESULT =
- StringUtils.lines(
- "1000 1001 1002",
- "1003 1004 1005",
- "1006 1007 1008",
- "1009 1010 1011",
- "1012 1013 1014",
- "1015 1016 1017",
- "1018 1019 1020",
- "1021 1022 1023",
- "1024 1025 1026",
- "1027 1028 1029",
- "1030 1031 1032",
- "1033 1034 1035",
- "1036 1037 1038",
- "1039 1040 1041",
- "1042 1043 1044",
- "1045 1046 1047",
- "1048 1049 1050",
- "1051 1052 1053",
- "1054 1055 1056",
- "1057 1058 1059",
- "1060 1061 1062",
- "1063 1064 1065",
- "1066 1067 1068",
- "1069 1070 1071",
- "1072 1073 1074",
- "1075 1076 1077",
- "1078 1079 1080",
- "1081 1082 1083",
- "1084 1085 1086",
- "1087 1088 1089",
- "1090 1091 1092",
- "1093 1094 1095",
- "1096 1097 1098",
- "1099 1100 1101",
- "1102 1103 1104",
- "1105 1106 1107",
- "1108 1109 1110",
- "1111 1112 1113",
- "1114 1115 1116",
- "1117 1118 1119",
- "1120 1121 1122",
- "1123 1124 1125",
- "1126 1127 1128",
- "1129 1130 1131",
- "1132 1133 1134",
- "1135 1136 1137",
- "1138 1139 1140",
- "1141 1142 1143",
- "1144 1145 1146",
- "1147 1148 1149",
- "1150 1151 1152",
- "1153 1154 1155",
- "1156 1157 1158",
- "1159 1160 1161",
- "1162 1163 1164",
- "1165 1166 1167",
- "1168 1169 1170",
- "1171 1172 1173",
- "1174 1175 1176",
- "1177 1178 1179",
- "1180 1181 1182",
- "1183 1184 1185",
- "1186 1187 1188",
- "1189 1190 1191",
- "1192 1193 1194",
- "1195 1196 1197",
- "1198 1199 1200",
- "1201 1202 1203",
- "1204 1205 1206",
- "1207 1208 1209",
- "1210 1211 1212",
- "1213 1214 1215",
- "1216 1217 1218",
- "1219 1220 1221",
- "1222 1223 1224",
- "1225 1226 1227",
- "1228 1229 1230",
- "1231 1232 1233",
- "1234 1235 1236",
- "1237 1238 1239",
- "1240 1241 1242",
- "1243 1244 1245",
- "1246 1247 1248",
- "1249 1250 1251",
- "1252 1253 1254",
- "1255 1256 1257",
- "1258 1259 1260",
- "1261 1262 1263",
- "1264 1265 1266",
- "1267 1268 1269",
- "0 1 2",
- "3 4 5",
- "6 7 8",
- "9 10 11",
- "12 13 14",
- "15 16 17",
- "18 19 20",
- "21 22 23",
- "24 25 26",
- "27 28 29",
- "30 31 32",
- "33 34 35",
- "36 37 38",
- "39 40 41",
- "42 43 44",
- "45 46 47",
- "48 49 50",
- "51 52 53",
- "54 55 56",
- "57 58 59",
- "60 61 62",
- "63 64 65",
- "66 67 68",
- "69 70 71",
- "72 73 74",
- "75 76 77",
- "78 79 80",
- "81 82 83",
- "84 85 86",
- "87 88 89",
- "90 91 92",
- "93 94 95",
- "96 97 98",
- "99 100 101",
- "102 103 104",
- "105 106 107",
- "108 109 110",
- "111 112 113",
- "114 115 116",
- "117 118 119",
- "120 121 122",
- "123 124 125",
- "126 127 128",
- "129 130 131",
- "132 133 134",
- "135 136 137",
- "138 139 140",
- "141 142 143",
- "144 145 146",
- "147 148 149",
- "150 151 152",
- "153 154 155",
- "156 157 158",
- "159 160 161",
- "162 163 164",
- "165 166 167",
- "168 169 170",
- "171 172 173",
- "174 175 176",
- "177 178 179",
- "180 181 182",
- "183 184 185",
- "186 187 188",
- "189 190 191",
- "192 193 194",
- "195 196 197",
- "198 199 200",
- "201 202 203",
- "204 205 206",
- "207 208 209",
- "210 211 212",
- "213 214 215",
- "216 217 218",
- "219 220 221",
- "222 223 224",
- "225 226 227",
- "228 229 230",
- "231 232 233",
- "234 235 236",
- "237 238 239",
- "240 241 242",
- "243 244 245",
- "246 247 248",
- "249 250 251",
- "252 253 254",
- "255 256 257",
- "258 259 260",
- "261 262 263",
- "264 265 266",
- "267 268 269");
-
- private final TestParameters parameters;
-
- @Parameterized.Parameters(name = "{0}")
- public static TestParametersCollection data() {
- return getTestParameters().withAllRuntimesAndApiLevels().build();
- }
-
- public OutlineInvokeStaticBailoutTest(TestParameters parameters) {
- this.parameters = parameters;
- }
-
- @Test
- public void test() throws Exception {
- testForR8(parameters.getBackend())
- .addInnerClasses(getClass())
- .addKeepMainRule(TestClass.class)
- .addOptionsModification(options -> options.outline.threshold = 2)
- .enableInliningAnnotations()
- .setMinApi(parameters)
- .run(parameters.getRuntime(), TestClass.class)
- .assertSuccessWithOutput(EXPECTED_RESULT);
- }
-
- public static class TestClass {
-
- public static void main(String[] args) {
- toOutline1();
- toOutline2();
- }
-
- @NeverInline
- private static void print(String s1, String s2, String s3) {
- System.out.println(s1 + " " + s2 + " " + s3);
- }
-
- @NeverInline
- private static void toOutline1() {
- print("1000", "1001", "1002");
- print("1003", "1004", "1005");
- print("1006", "1007", "1008");
- print("1009", "1010", "1011");
- print("1012", "1013", "1014");
- print("1015", "1016", "1017");
- print("1018", "1019", "1020");
- print("1021", "1022", "1023");
- print("1024", "1025", "1026");
- print("1027", "1028", "1029");
- print("1030", "1031", "1032");
- print("1033", "1034", "1035");
- print("1036", "1037", "1038");
- print("1039", "1040", "1041");
- print("1042", "1043", "1044");
- print("1045", "1046", "1047");
- print("1048", "1049", "1050");
- print("1051", "1052", "1053");
- print("1054", "1055", "1056");
- print("1057", "1058", "1059");
- print("1060", "1061", "1062");
- print("1063", "1064", "1065");
- print("1066", "1067", "1068");
- print("1069", "1070", "1071");
- print("1072", "1073", "1074");
- print("1075", "1076", "1077");
- print("1078", "1079", "1080");
- print("1081", "1082", "1083");
- print("1084", "1085", "1086");
- print("1087", "1088", "1089");
- print("1090", "1091", "1092");
- print("1093", "1094", "1095");
- print("1096", "1097", "1098");
- print("1099", "1100", "1101");
- print("1102", "1103", "1104");
- print("1105", "1106", "1107");
- print("1108", "1109", "1110");
- print("1111", "1112", "1113");
- print("1114", "1115", "1116");
- print("1117", "1118", "1119");
- print("1120", "1121", "1122");
- print("1123", "1124", "1125");
- print("1126", "1127", "1128");
- print("1129", "1130", "1131");
- print("1132", "1133", "1134");
- print("1135", "1136", "1137");
- print("1138", "1139", "1140");
- print("1141", "1142", "1143");
- print("1144", "1145", "1146");
- print("1147", "1148", "1149");
- print("1150", "1151", "1152");
- print("1153", "1154", "1155");
- print("1156", "1157", "1158");
- print("1159", "1160", "1161");
- print("1162", "1163", "1164");
- print("1165", "1166", "1167");
- print("1168", "1169", "1170");
- print("1171", "1172", "1173");
- print("1174", "1175", "1176");
- print("1177", "1178", "1179");
- print("1180", "1181", "1182");
- print("1183", "1184", "1185");
- print("1186", "1187", "1188");
- print("1189", "1190", "1191");
- print("1192", "1193", "1194");
- print("1195", "1196", "1197");
- print("1198", "1199", "1200");
- print("1201", "1202", "1203");
- print("1204", "1205", "1206");
- print("1207", "1208", "1209");
- print("1210", "1211", "1212");
- print("1213", "1214", "1215");
- print("1216", "1217", "1218");
- print("1219", "1220", "1221");
- print("1222", "1223", "1224");
- print("1225", "1226", "1227");
- print("1228", "1229", "1230");
- print("1231", "1232", "1233");
- print("1234", "1235", "1236");
- print("1237", "1238", "1239");
- print("1240", "1241", "1242");
- print("1243", "1244", "1245");
- print("1246", "1247", "1248");
- print("1249", "1250", "1251");
- print("1252", "1253", "1254");
- print("1255", "1256", "1257");
- print("1258", "1259", "1260");
- print("1261", "1262", "1263");
- print("1264", "1265", "1266");
- print("1267", "1268", "1269");
- }
-
- @NeverInline
- private static void toOutline2() {
- print("0", "1", "2");
- print("3", "4", "5");
- print("6", "7", "8");
- print("9", "10", "11");
- print("12", "13", "14");
- print("15", "16", "17");
- print("18", "19", "20");
- print("21", "22", "23");
- print("24", "25", "26");
- print("27", "28", "29");
- print("30", "31", "32");
- print("33", "34", "35");
- print("36", "37", "38");
- print("39", "40", "41");
- print("42", "43", "44");
- print("45", "46", "47");
- print("48", "49", "50");
- print("51", "52", "53");
- print("54", "55", "56");
- print("57", "58", "59");
- print("60", "61", "62");
- print("63", "64", "65");
- print("66", "67", "68");
- print("69", "70", "71");
- print("72", "73", "74");
- print("75", "76", "77");
- print("78", "79", "80");
- print("81", "82", "83");
- print("84", "85", "86");
- print("87", "88", "89");
- print("90", "91", "92");
- print("93", "94", "95");
- print("96", "97", "98");
- print("99", "100", "101");
- print("102", "103", "104");
- print("105", "106", "107");
- print("108", "109", "110");
- print("111", "112", "113");
- print("114", "115", "116");
- print("117", "118", "119");
- print("120", "121", "122");
- print("123", "124", "125");
- print("126", "127", "128");
- print("129", "130", "131");
- print("132", "133", "134");
- print("135", "136", "137");
- print("138", "139", "140");
- print("141", "142", "143");
- print("144", "145", "146");
- print("147", "148", "149");
- print("150", "151", "152");
- print("153", "154", "155");
- print("156", "157", "158");
- print("159", "160", "161");
- print("162", "163", "164");
- print("165", "166", "167");
- print("168", "169", "170");
- print("171", "172", "173");
- print("174", "175", "176");
- print("177", "178", "179");
- print("180", "181", "182");
- print("183", "184", "185");
- print("186", "187", "188");
- print("189", "190", "191");
- print("192", "193", "194");
- print("195", "196", "197");
- print("198", "199", "200");
- print("201", "202", "203");
- print("204", "205", "206");
- print("207", "208", "209");
- print("210", "211", "212");
- print("213", "214", "215");
- print("216", "217", "218");
- print("219", "220", "221");
- print("222", "223", "224");
- print("225", "226", "227");
- print("228", "229", "230");
- print("231", "232", "233");
- print("234", "235", "236");
- print("237", "238", "239");
- print("240", "241", "242");
- print("243", "244", "245");
- print("246", "247", "248");
- print("249", "250", "251");
- print("252", "253", "254");
- print("255", "256", "257");
- print("258", "259", "260");
- print("261", "262", "263");
- print("264", "265", "266");
- print("267", "268", "269");
- }
- }
-}