/* * Copyright (C) 2014 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. */ // Note that $opt$ is a marker for the optimizing compiler to test // it does compile the method. public class Main { public static void assertEquals(long expected, long result) { if (expected != result) { throw new Error("Expected: " + expected + ", found: " + result); } } public static void main(String[] args) { long value = 0L; // Sum[i = 0..499](i) = 499 * 500 / 2 = 124750L. assertEquals(124750L, $opt$LargeFrame(value)); } static long $opt$LargeFrame(long value) { // The argument `value` is used to defeat the constant folding // optimization and force the compiler to allocate these variables // on the stack. long l0 = 0L + value; long l1 = 1L + value; long l2 = 2L + value; long l3 = 3L + value; long l4 = 4L + value; long l5 = 5L + value; long l6 = 6L + value; long l7 = 7L + value; long l8 = 8L + value; long l9 = 9L + value; long l10 = 10L + value; long l11 = 11L + value; long l12 = 12L + value; long l13 = 13L + value; long l14 = 14L + value; long l15 = 15L + value; long l16 = 16L + value; long l17 = 17L + value; long l18 = 18L + value; long l19 = 19L + value; long l20 = 20L + value; long l21 = 21L + value; long l22 = 22L + value; long l23 = 23L + value; long l24 = 24L + value; long l25 = 25L + value; long l26 = 26L + value; long l27 = 27L + value; long l28 = 28L + value; long l29 = 29L + value; long l30 = 30L + value; long l31 = 31L + value; long l32 = 32L + value; long l33 = 33L + value; long l34 = 34L + value; long l35 = 35L + value; long l36 = 36L + value; long l37 = 37L + value; long l38 = 38L + value; long l39 = 39L + value; long l40 = 40L + value; long l41 = 41L + value; long l42 = 42L + value; long l43 = 43L + value; long l44 = 44L + value; long l45 = 45L + value; long l46 = 46L + value; long l47 = 47L + value; long l48 = 48L + value; long l49 = 49L + value; long l50 = 50L + value; long l51 = 51L + value; long l52 = 52L + value; long l53 = 53L + value; long l54 = 54L + value; long l55 = 55L + value; long l56 = 56L + value; long l57 = 57L + value; long l58 = 58L + value; long l59 = 59L + value; long l60 = 60L + value; long l61 = 61L + value; long l62 = 62L + value; long l63 = 63L + value; long l64 = 64L + value; long l65 = 65L + value; long l66 = 66L + value; long l67 = 67L + value; long l68 = 68L + value; long l69 = 69L + value; long l70 = 70L + value; long l71 = 71L + value; long l72 = 72L + value; long l73 = 73L + value; long l74 = 74L + value; long l75 = 75L + value; long l76 = 76L + value; long l77 = 77L + value; long l78 = 78L + value; long l79 = 79L + value; long l80 = 80L + value; long l81 = 81L + value; long l82 = 82L + value; long l83 = 83L + value; long l84 = 84L + value; long l85 = 85L + value; long l86 = 86L + value; long l87 = 87L + value; long l88 = 88L + value; long l89 = 89L + value; long l90 = 90L + value; long l91 = 91L + value; long l92 = 92L + value; long l93 = 93L + value; long l94 = 94L + value; long l95 = 95L + value; long l96 = 96L + value; long l97 = 97L + value; long l98 = 98L + value; long l99 = 99L + value; long l100 = 100L + value; long l101 = 101L + value; long l102 = 102L + value; long l103 = 103L + value; long l104 = 104L + value; long l105 = 105L + value; long l106 = 106L + value; long l107 = 107L + value; long l108 = 108L + value; long l109 = 109L + value; long l110 = 110L + value; long l111 = 111L + value; long l112 = 112L + value; long l113 = 113L + value; long l114 = 114L + value; long l115 = 115L + value; long l116 = 116L + value; long l117 = 117L + value; long l118 = 118L + value; long l119 = 119L + value; long l120 = 120L + value; long l121 = 121L + value; long l122 = 122L + value; long l123 = 123L + value; long l124 = 124L + value; long l125 = 125L + value; long l126 = 126L + value; long l127 = 127L + value; long l128 = 128L + value; long l129 = 129L + value; long l130 = 130L + value; long l131 = 131L + value; long l132 = 132L + value; long l133 = 133L + value; long l134 = 134L + value; long l135 = 135L + value; long l136 = 136L + value; long l137 = 137L + value; long l138 = 138L + value; long l139 = 139L + value; long l140 = 140L + value; long l141 = 141L + value; long l142 = 142L + value; long l143 = 143L + value; long l144 = 144L + value; long l145 = 145L + value; long l146 = 146L + value; long l147 = 147L + value; long l148 = 148L + value; long l149 = 149L + value; long l150 = 150L + value; long l151 = 151L + value; long l152 = 152L + value; long l153 = 153L + value; long l154 = 154L + value; long l155 = 155L + value; long l156 = 156L + value; long l157 = 157L + value; long l158 = 158L + value; long l159 = 159L + value; long l160 = 160L + value; long l161 = 161L + value; long l162 = 162L + value; long l163 = 163L + value; long l164 = 164L + value; long l165 = 165L + value; long l166 = 166L + value; long l167 = 167L + value; long l168 = 168L + value; long l169 = 169L + value; long l170 = 170L + value; long l171 = 171L + value; long l172 = 172L + value; long l173 = 173L + value; long l174 = 174L + value; long l175 = 175L + value; long l176 = 176L + value; long l177 = 177L + value; long l178 = 178L + value; long l179 = 179L + value; long l180 = 180L + value; long l181 = 181L + value; long l182 = 182L + value; long l183 = 183L + value; long l184 = 184L + value; long l185 = 185L + value; long l186 = 186L + value; long l187 = 187L + value; long l188 = 188L + value; long l189 = 189L + value; long l190 = 190L + value; long l191 = 191L + value; long l192 = 192L + value; long l193 = 193L + value; long l194 = 194L + value; long l195 = 195L + value; long l196 = 196L + value; long l197 = 197L + value; long l198 = 198L + value; long l199 = 199L + value; long l200 = 200L + value; long l201 = 201L + value; long l202 = 202L + value; long l203 = 203L + value; long l204 = 204L + value; long l205 = 205L + value; long l206 = 206L + value; long l207 = 207L + value; long l208 = 208L + value; long l209 = 209L + value; long l210 = 210L + value; long l211 = 211L + value; long l212 = 212L + value; long l213 = 213L + value; long l214 = 214L + value; long l215 = 215L + value; long l216 = 216L + value; long l217 = 217L + value; long l218 = 218L + value; long l219 = 219L + value; long l220 = 220L + value; long l221 = 221L + value; long l222 = 222L + value; long l223 = 223L + value; long l224 = 224L + value; long l225 = 225L + value; long l226 = 226L + value; long l227 = 227L + value; long l228 = 228L + value; long l229 = 229L + value; long l230 = 230L + value; long l231 = 231L + value; long l232 = 232L + value; long l233 = 233L + value; long l234 = 234L + value; long l235 = 235L + value; long l236 = 236L + value; long l237 = 237L + value; long l238 = 238L + value; long l239 = 239L + value; long l240 = 240L + value; long l241 = 241L + value; long l242 = 242L + value; long l243 = 243L + value; long l244 = 244L + value; long l245 = 245L + value; long l246 = 246L + value; long l247 = 247L + value; long l248 = 248L + value; long l249 = 249L + value; long l250 = 250L + value; long l251 = 251L + value; long l252 = 252L + value; long l253 = 253L + value; long l254 = 254L + value; long l255 = 255L + value; long l256 = 256L + value; long l257 = 257L + value; long l258 = 258L + value; long l259 = 259L + value; long l260 = 260L + value; long l261 = 261L + value; long l262 = 262L + value; long l263 = 263L + value; long l264 = 264L + value; long l265 = 265L + value; long l266 = 266L + value; long l267 = 267L + value; long l268 = 268L + value; long l269 = 269L + value; long l270 = 270L + value; long l271 = 271L + value; long l272 = 272L + value; long l273 = 273L + value; long l274 = 274L + value; long l275 = 275L + value; long l276 = 276L + value; long l277 = 277L + value; long l278 = 278L + value; long l279 = 279L + value; long l280 = 280L + value; long l281 = 281L + value; long l282 = 282L + value; long l283 = 283L + value; long l284 = 284L + value; long l285 = 285L + value; long l286 = 286L + value; long l287 = 287L + value; long l288 = 288L + value; long l289 = 289L + value; long l290 = 290L + value; long l291 = 291L + value; long l292 = 292L + value; long l293 = 293L + value; long l294 = 294L + value; long l295 = 295L + value; long l296 = 296L + value; long l297 = 297L + value; long l298 = 298L + value; long l299 = 299L + value; long l300 = 300L + value; long l301 = 301L + value; long l302 = 302L + value; long l303 = 303L + value; long l304 = 304L + value; long l305 = 305L + value; long l306 = 306L + value; long l307 = 307L + value; long l308 = 308L + value; long l309 = 309L + value; long l310 = 310L + value; long l311 = 311L + value; long l312 = 312L + value; long l313 = 313L + value; long l314 = 314L + value; long l315 = 315L + value; long l316 = 316L + value; long l317 = 317L + value; long l318 = 318L + value; long l319 = 319L + value; long l320 = 320L + value; long l321 = 321L + value; long l322 = 322L + value; long l323 = 323L + value; long l324 = 324L + value; long l325 = 325L + value; long l326 = 326L + value; long l327 = 327L + value; long l328 = 328L + value; long l329 = 329L + value; long l330 = 330L + value; long l331 = 331L + value; long l332 = 332L + value; long l333 = 333L + value; long l334 = 334L + value; long l335 = 335L + value; long l336 = 336L + value; long l337 = 337L + value; long l338 = 338L + value; long l339 = 339L + value; long l340 = 340L + value; long l341 = 341L + value; long l342 = 342L + value; long l343 = 343L + value; long l344 = 344L + value; long l345 = 345L + value; long l346 = 346L + value; long l347 = 347L + value; long l348 = 348L + value; long l349 = 349L + value; long l350 = 350L + value; long l351 = 351L + value; long l352 = 352L + value; long l353 = 353L + value; long l354 = 354L + value; long l355 = 355L + value; long l356 = 356L + value; long l357 = 357L + value; long l358 = 358L + value; long l359 = 359L + value; long l360 = 360L + value; long l361 = 361L + value; long l362 = 362L + value; long l363 = 363L + value; long l364 = 364L + value; long l365 = 365L + value; long l366 = 366L + value; long l367 = 367L + value; long l368 = 368L + value; long l369 = 369L + value; long l370 = 370L + value; long l371 = 371L + value; long l372 = 372L + value; long l373 = 373L + value; long l374 = 374L + value; long l375 = 375L + value; long l376 = 376L + value; long l377 = 377L + value; long l378 = 378L + value; long l379 = 379L + value; long l380 = 380L + value; long l381 = 381L + value; long l382 = 382L + value; long l383 = 383L + value; long l384 = 384L + value; long l385 = 385L + value; long l386 = 386L + value; long l387 = 387L + value; long l388 = 388L + value; long l389 = 389L + value; long l390 = 390L + value; long l391 = 391L + value; long l392 = 392L + value; long l393 = 393L + value; long l394 = 394L + value; long l395 = 395L + value; long l396 = 396L + value; long l397 = 397L + value; long l398 = 398L + value; long l399 = 399L + value; long l400 = 400L + value; long l401 = 401L + value; long l402 = 402L + value; long l403 = 403L + value; long l404 = 404L + value; long l405 = 405L + value; long l406 = 406L + value; long l407 = 407L + value; long l408 = 408L + value; long l409 = 409L + value; long l410 = 410L + value; long l411 = 411L + value; long l412 = 412L + value; long l413 = 413L + value; long l414 = 414L + value; long l415 = 415L + value; long l416 = 416L + value; long l417 = 417L + value; long l418 = 418L + value; long l419 = 419L + value; long l420 = 420L + value; long l421 = 421L + value; long l422 = 422L + value; long l423 = 423L + value; long l424 = 424L + value; long l425 = 425L + value; long l426 = 426L + value; long l427 = 427L + value; long l428 = 428L + value; long l429 = 429L + value; long l430 = 430L + value; long l431 = 431L + value; long l432 = 432L + value; long l433 = 433L + value; long l434 = 434L + value; long l435 = 435L + value; long l436 = 436L + value; long l437 = 437L + value; long l438 = 438L + value; long l439 = 439L + value; long l440 = 440L + value; long l441 = 441L + value; long l442 = 442L + value; long l443 = 443L + value; long l444 = 444L + value; long l445 = 445L + value; long l446 = 446L + value; long l447 = 447L + value; long l448 = 448L + value; long l449 = 449L + value; long l450 = 450L + value; long l451 = 451L + value; long l452 = 452L + value; long l453 = 453L + value; long l454 = 454L + value; long l455 = 455L + value; long l456 = 456L + value; long l457 = 457L + value; long l458 = 458L + value; long l459 = 459L + value; long l460 = 460L + value; long l461 = 461L + value; long l462 = 462L + value; long l463 = 463L + value; long l464 = 464L + value; long l465 = 465L + value; long l466 = 466L + value; long l467 = 467L + value; long l468 = 468L + value; long l469 = 469L + value; long l470 = 470L + value; long l471 = 471L + value; long l472 = 472L + value; long l473 = 473L + value; long l474 = 474L + value; long l475 = 475L + value; long l476 = 476L + value; long l477 = 477L + value; long l478 = 478L + value; long l479 = 479L + value; long l480 = 480L + value; long l481 = 481L + value; long l482 = 482L + value; long l483 = 483L + value; long l484 = 484L + value; long l485 = 485L + value; long l486 = 486L + value; long l487 = 487L + value; long l488 = 488L + value; long l489 = 489L + value; long l490 = 490L + value; long l491 = 491L + value; long l492 = 492L + value; long l493 = 493L + value; long l494 = 494L + value; long l495 = 495L + value; long l496 = 496L + value; long l497 = 497L + value; long l498 = 498L + value; long l499 = 499L + value; l1 += l0; l2 += l1; l3 += l2; l4 += l3; l5 += l4; l6 += l5; l7 += l6; l8 += l7; l9 += l8; l10 += l9; l11 += l10; l12 += l11; l13 += l12; l14 += l13; l15 += l14; l16 += l15; l17 += l16; l18 += l17; l19 += l18; l20 += l19; l21 += l20; l22 += l21; l23 += l22; l24 += l23; l25 += l24; l26 += l25; l27 += l26; l28 += l27; l29 += l28; l30 += l29; l31 += l30; l32 += l31; l33 += l32; l34 += l33; l35 += l34; l36 += l35; l37 += l36; l38 += l37; l39 += l38; l40 += l39; l41 += l40; l42 += l41; l43 += l42; l44 += l43; l45 += l44; l46 += l45; l47 += l46; l48 += l47; l49 += l48; l50 += l49; l51 += l50; l52 += l51; l53 += l52; l54 += l53; l55 += l54; l56 += l55; l57 += l56; l58 += l57; l59 += l58; l60 += l59; l61 += l60; l62 += l61; l63 += l62; l64 += l63; l65 += l64; l66 += l65; l67 += l66; l68 += l67; l69 += l68; l70 += l69; l71 += l70; l72 += l71; l73 += l72; l74 += l73; l75 += l74; l76 += l75; l77 += l76; l78 += l77; l79 += l78; l80 += l79; l81 += l80; l82 += l81; l83 += l82; l84 += l83; l85 += l84; l86 += l85; l87 += l86; l88 += l87; l89 += l88; l90 += l89; l91 += l90; l92 += l91; l93 += l92; l94 += l93; l95 += l94; l96 += l95; l97 += l96; l98 += l97; l99 += l98; l100 += l99; l101 += l100; l102 += l101; l103 += l102; l104 += l103; l105 += l104; l106 += l105; l107 += l106; l108 += l107; l109 += l108; l110 += l109; l111 += l110; l112 += l111; l113 += l112; l114 += l113; l115 += l114; l116 += l115; l117 += l116; l118 += l117; l119 += l118; l120 += l119; l121 += l120; l122 += l121; l123 += l122; l124 += l123; l125 += l124; l126 += l125; l127 += l126; l128 += l127; l129 += l128; l130 += l129; l131 += l130; l132 += l131; l133 += l132; l134 += l133; l135 += l134; l136 += l135; l137 += l136; l138 += l137; l139 += l138; l140 += l139; l141 += l140; l142 += l141; l143 += l142; l144 += l143; l145 += l144; l146 += l145; l147 += l146; l148 += l147; l149 += l148; l150 += l149; l151 += l150; l152 += l151; l153 += l152; l154 += l153; l155 += l154; l156 += l155; l157 += l156; l158 += l157; l159 += l158; l160 += l159; l161 += l160; l162 += l161; l163 += l162; l164 += l163; l165 += l164; l166 += l165; l167 += l166; l168 += l167; l169 += l168; l170 += l169; l171 += l170; l172 += l171; l173 += l172; l174 += l173; l175 += l174; l176 += l175; l177 += l176; l178 += l177; l179 += l178; l180 += l179; l181 += l180; l182 += l181; l183 += l182; l184 += l183; l185 += l184; l186 += l185; l187 += l186; l188 += l187; l189 += l188; l190 += l189; l191 += l190; l192 += l191; l193 += l192; l194 += l193; l195 += l194; l196 += l195; l197 += l196; l198 += l197; l199 += l198; l200 += l199; l201 += l200; l202 += l201; l203 += l202; l204 += l203; l205 += l204; l206 += l205; l207 += l206; l208 += l207; l209 += l208; l210 += l209; l211 += l210; l212 += l211; l213 += l212; l214 += l213; l215 += l214; l216 += l215; l217 += l216; l218 += l217; l219 += l218; l220 += l219; l221 += l220; l222 += l221; l223 += l222; l224 += l223; l225 += l224; l226 += l225; l227 += l226; l228 += l227; l229 += l228; l230 += l229; l231 += l230; l232 += l231; l233 += l232; l234 += l233; l235 += l234; l236 += l235; l237 += l236; l238 += l237; l239 += l238; l240 += l239; l241 += l240; l242 += l241; l243 += l242; l244 += l243; l245 += l244; l246 += l245; l247 += l246; l248 += l247; l249 += l248; l250 += l249; l251 += l250; l252 += l251; l253 += l252; l254 += l253; l255 += l254; l256 += l255; l257 += l256; l258 += l257; l259 += l258; l260 += l259; l261 += l260; l262 += l261; l263 += l262; l264 += l263; l265 += l264; l266 += l265; l267 += l266; l268 += l267; l269 += l268; l270 += l269; l271 += l270; l272 += l271; l273 += l272; l274 += l273; l275 += l274; l276 += l275; l277 += l276; l278 += l277; l279 += l278; l280 += l279; l281 += l280; l282 += l281; l283 += l282; l284 += l283; l285 += l284; l286 += l285; l287 += l286; l288 += l287; l289 += l288; l290 += l289; l291 += l290; l292 += l291; l293 += l292; l294 += l293; l295 += l294; l296 += l295; l297 += l296; l298 += l297; l299 += l298; l300 += l299; l301 += l300; l302 += l301; l303 += l302; l304 += l303; l305 += l304; l306 += l305; l307 += l306; l308 += l307; l309 += l308; l310 += l309; l311 += l310; l312 += l311; l313 += l312; l314 += l313; l315 += l314; l316 += l315; l317 += l316; l318 += l317; l319 += l318; l320 += l319; l321 += l320; l322 += l321; l323 += l322; l324 += l323; l325 += l324; l326 += l325; l327 += l326; l328 += l327; l329 += l328; l330 += l329; l331 += l330; l332 += l331; l333 += l332; l334 += l333; l335 += l334; l336 += l335; l337 += l336; l338 += l337; l339 += l338; l340 += l339; l341 += l340; l342 += l341; l343 += l342; l344 += l343; l345 += l344; l346 += l345; l347 += l346; l348 += l347; l349 += l348; l350 += l349; l351 += l350; l352 += l351; l353 += l352; l354 += l353; l355 += l354; l356 += l355; l357 += l356; l358 += l357; l359 += l358; l360 += l359; l361 += l360; l362 += l361; l363 += l362; l364 += l363; l365 += l364; l366 += l365; l367 += l366; l368 += l367; l369 += l368; l370 += l369; l371 += l370; l372 += l371; l373 += l372; l374 += l373; l375 += l374; l376 += l375; l377 += l376; l378 += l377; l379 += l378; l380 += l379; l381 += l380; l382 += l381; l383 += l382; l384 += l383; l385 += l384; l386 += l385; l387 += l386; l388 += l387; l389 += l388; l390 += l389; l391 += l390; l392 += l391; l393 += l392; l394 += l393; l395 += l394; l396 += l395; l397 += l396; l398 += l397; l399 += l398; l400 += l399; l401 += l400; l402 += l401; l403 += l402; l404 += l403; l405 += l404; l406 += l405; l407 += l406; l408 += l407; l409 += l408; l410 += l409; l411 += l410; l412 += l411; l413 += l412; l414 += l413; l415 += l414; l416 += l415; l417 += l416; l418 += l417; l419 += l418; l420 += l419; l421 += l420; l422 += l421; l423 += l422; l424 += l423; l425 += l424; l426 += l425; l427 += l426; l428 += l427; l429 += l428; l430 += l429; l431 += l430; l432 += l431; l433 += l432; l434 += l433; l435 += l434; l436 += l435; l437 += l436; l438 += l437; l439 += l438; l440 += l439; l441 += l440; l442 += l441; l443 += l442; l444 += l443; l445 += l444; l446 += l445; l447 += l446; l448 += l447; l449 += l448; l450 += l449; l451 += l450; l452 += l451; l453 += l452; l454 += l453; l455 += l454; l456 += l455; l457 += l456; l458 += l457; l459 += l458; l460 += l459; l461 += l460; l462 += l461; l463 += l462; l464 += l463; l465 += l464; l466 += l465; l467 += l466; l468 += l467; l469 += l468; l470 += l469; l471 += l470; l472 += l471; l473 += l472; l474 += l473; l475 += l474; l476 += l475; l477 += l476; l478 += l477; l479 += l478; l480 += l479; l481 += l480; l482 += l481; l483 += l482; l484 += l483; l485 += l484; l486 += l485; l487 += l486; l488 += l487; l489 += l488; l490 += l489; l491 += l490; l492 += l491; l493 += l492; l494 += l493; l495 += l494; l496 += l495; l497 += l496; l498 += l497; l499 += l498; // Create a branch to beat the large method check. if (l498 == l499) { return l498; } else { return l499; } } }