1*795d594fSAndroid Build Coastguard Worker /* 2*795d594fSAndroid Build Coastguard Worker * Copyright (C) 2016 The Android Open Source Project 3*795d594fSAndroid Build Coastguard Worker * 4*795d594fSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*795d594fSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*795d594fSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*795d594fSAndroid Build Coastguard Worker * 8*795d594fSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*795d594fSAndroid Build Coastguard Worker * 10*795d594fSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*795d594fSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*795d594fSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*795d594fSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*795d594fSAndroid Build Coastguard Worker * limitations under the License. 15*795d594fSAndroid Build Coastguard Worker */ 16*795d594fSAndroid Build Coastguard Worker 17*795d594fSAndroid Build Coastguard Worker class Main { getA()18*795d594fSAndroid Build Coastguard Worker public String getA() { 19*795d594fSAndroid Build Coastguard Worker return "A"; 20*795d594fSAndroid Build Coastguard Worker } getB()21*795d594fSAndroid Build Coastguard Worker public String getB() { 22*795d594fSAndroid Build Coastguard Worker return "B"; 23*795d594fSAndroid Build Coastguard Worker } getC()24*795d594fSAndroid Build Coastguard Worker public String getC() { 25*795d594fSAndroid Build Coastguard Worker return "C"; 26*795d594fSAndroid Build Coastguard Worker } 27*795d594fSAndroid Build Coastguard Worker } 28*795d594fSAndroid Build Coastguard Worker 29*795d594fSAndroid Build Coastguard Worker class TestInline { inlineMonomorphic(Super s)30*795d594fSAndroid Build Coastguard Worker public int inlineMonomorphic(Super s) { 31*795d594fSAndroid Build Coastguard Worker return s.getValue(); 32*795d594fSAndroid Build Coastguard Worker } 33*795d594fSAndroid Build Coastguard Worker inlinePolymorphic(Super s)34*795d594fSAndroid Build Coastguard Worker public int inlinePolymorphic(Super s) { 35*795d594fSAndroid Build Coastguard Worker return s.getValue(); 36*795d594fSAndroid Build Coastguard Worker } 37*795d594fSAndroid Build Coastguard Worker inlineMegamorphic(Super s)38*795d594fSAndroid Build Coastguard Worker public int inlineMegamorphic(Super s) { 39*795d594fSAndroid Build Coastguard Worker return s.getValue(); 40*795d594fSAndroid Build Coastguard Worker } 41*795d594fSAndroid Build Coastguard Worker inlineMissingTypes(Super s)42*795d594fSAndroid Build Coastguard Worker public int inlineMissingTypes(Super s) { 43*795d594fSAndroid Build Coastguard Worker return s.getValue(); 44*795d594fSAndroid Build Coastguard Worker } 45*795d594fSAndroid Build Coastguard Worker noInlineCache(Super s)46*795d594fSAndroid Build Coastguard Worker public int noInlineCache(Super s) { 47*795d594fSAndroid Build Coastguard Worker return s.getValue(); 48*795d594fSAndroid Build Coastguard Worker } 49*795d594fSAndroid Build Coastguard Worker inlineMultiMonomorphic(Super s, Secret sec)50*795d594fSAndroid Build Coastguard Worker public int inlineMultiMonomorphic(Super s, Secret sec) { 51*795d594fSAndroid Build Coastguard Worker return s.getValue() + sec.getIdentity(); 52*795d594fSAndroid Build Coastguard Worker } 53*795d594fSAndroid Build Coastguard Worker inlineMultiPolymorphic(Super s, Secret sec)54*795d594fSAndroid Build Coastguard Worker public int inlineMultiPolymorphic(Super s, Secret sec) { 55*795d594fSAndroid Build Coastguard Worker return s.getValue() + sec.getIdentity(); 56*795d594fSAndroid Build Coastguard Worker } 57*795d594fSAndroid Build Coastguard Worker inlineTriplePolymorphic(Super s, Secret sec, Secret thr)58*795d594fSAndroid Build Coastguard Worker public int inlineTriplePolymorphic(Super s, Secret sec, Secret thr) { 59*795d594fSAndroid Build Coastguard Worker return s.getValue() + sec.getIdentity() + thr.getIdentity(); 60*795d594fSAndroid Build Coastguard Worker } 61*795d594fSAndroid Build Coastguard Worker inlineMultiMegamorphic(Super s, Secret sec)62*795d594fSAndroid Build Coastguard Worker public int inlineMultiMegamorphic(Super s, Secret sec) { 63*795d594fSAndroid Build Coastguard Worker return s.getValue() + sec.getIdentity(); 64*795d594fSAndroid Build Coastguard Worker } 65*795d594fSAndroid Build Coastguard Worker inlineMultiMissingTypes(Super s, Secret sec)66*795d594fSAndroid Build Coastguard Worker public int inlineMultiMissingTypes(Super s, Secret sec) { 67*795d594fSAndroid Build Coastguard Worker return s.getValue() + sec.getIdentity(); 68*795d594fSAndroid Build Coastguard Worker } 69*795d594fSAndroid Build Coastguard Worker noInlineCacheMulti(Super s, Secret sec)70*795d594fSAndroid Build Coastguard Worker public int noInlineCacheMulti(Super s, Secret sec) { 71*795d594fSAndroid Build Coastguard Worker return s.getValue() + sec.getIdentity(); 72*795d594fSAndroid Build Coastguard Worker } 73*795d594fSAndroid Build Coastguard Worker } 74*795d594fSAndroid Build Coastguard Worker 75*795d594fSAndroid Build Coastguard Worker class TestInlineSubtype extends TestInline { foobar()76*795d594fSAndroid Build Coastguard Worker public void foobar() { 77*795d594fSAndroid Build Coastguard Worker this.inlineMonomorphic(new SubA()); 78*795d594fSAndroid Build Coastguard Worker } 79*795d594fSAndroid Build Coastguard Worker } 80*795d594fSAndroid Build Coastguard Worker 81*795d594fSAndroid Build Coastguard Worker abstract class Secret { getIdentity()82*795d594fSAndroid Build Coastguard Worker abstract int getIdentity(); 83*795d594fSAndroid Build Coastguard Worker } 84*795d594fSAndroid Build Coastguard Worker 85*795d594fSAndroid Build Coastguard Worker abstract class Super extends Secret { getValue()86*795d594fSAndroid Build Coastguard Worker abstract int getValue(); 87*795d594fSAndroid Build Coastguard Worker } 88*795d594fSAndroid Build Coastguard Worker 89*795d594fSAndroid Build Coastguard Worker class SubA extends Super { getValue()90*795d594fSAndroid Build Coastguard Worker int getValue() { return 42; } getIdentity()91*795d594fSAndroid Build Coastguard Worker int getIdentity() { return 24; } 92*795d594fSAndroid Build Coastguard Worker } 93*795d594fSAndroid Build Coastguard Worker 94*795d594fSAndroid Build Coastguard Worker class SubB extends Super { getValue()95*795d594fSAndroid Build Coastguard Worker int getValue() { return 38; }; getIdentity()96*795d594fSAndroid Build Coastguard Worker int getIdentity() { return 83; } 97*795d594fSAndroid Build Coastguard Worker } 98*795d594fSAndroid Build Coastguard Worker 99*795d594fSAndroid Build Coastguard Worker class SubD extends Super { getValue()100*795d594fSAndroid Build Coastguard Worker int getValue() { return 20; }; getIdentity()101*795d594fSAndroid Build Coastguard Worker int getIdentity() { return 2; }; 102*795d594fSAndroid Build Coastguard Worker } 103*795d594fSAndroid Build Coastguard Worker 104*795d594fSAndroid Build Coastguard Worker class SubE extends Super { getValue()105*795d594fSAndroid Build Coastguard Worker int getValue() { return 16; }; getIdentity()106*795d594fSAndroid Build Coastguard Worker int getIdentity() { return 61; }; 107*795d594fSAndroid Build Coastguard Worker } 108*795d594fSAndroid Build Coastguard Worker 109*795d594fSAndroid Build Coastguard Worker // Add a class with lots of methods so we can test profile guided compilation triggers. 110*795d594fSAndroid Build Coastguard Worker class ZLotsOfMethods { m1()111*795d594fSAndroid Build Coastguard Worker public void m1() {} m2()112*795d594fSAndroid Build Coastguard Worker public void m2() {} m3()113*795d594fSAndroid Build Coastguard Worker public void m3() {} m4()114*795d594fSAndroid Build Coastguard Worker public void m4() {} m5()115*795d594fSAndroid Build Coastguard Worker public void m5() {} m6()116*795d594fSAndroid Build Coastguard Worker public void m6() {} m7()117*795d594fSAndroid Build Coastguard Worker public void m7() {} m8()118*795d594fSAndroid Build Coastguard Worker public void m8() {} m9()119*795d594fSAndroid Build Coastguard Worker public void m9() {} m10()120*795d594fSAndroid Build Coastguard Worker public void m10() {} m11()121*795d594fSAndroid Build Coastguard Worker public void m11() {} m12()122*795d594fSAndroid Build Coastguard Worker public void m12() {} m13()123*795d594fSAndroid Build Coastguard Worker public void m13() {} m14()124*795d594fSAndroid Build Coastguard Worker public void m14() {} m15()125*795d594fSAndroid Build Coastguard Worker public void m15() {} m16()126*795d594fSAndroid Build Coastguard Worker public void m16() {} m17()127*795d594fSAndroid Build Coastguard Worker public void m17() {} m18()128*795d594fSAndroid Build Coastguard Worker public void m18() {} m19()129*795d594fSAndroid Build Coastguard Worker public void m19() {} m20()130*795d594fSAndroid Build Coastguard Worker public void m20() {} m21()131*795d594fSAndroid Build Coastguard Worker public void m21() {} m22()132*795d594fSAndroid Build Coastguard Worker public void m22() {} m23()133*795d594fSAndroid Build Coastguard Worker public void m23() {} m24()134*795d594fSAndroid Build Coastguard Worker public void m24() {} m25()135*795d594fSAndroid Build Coastguard Worker public void m25() {} m26()136*795d594fSAndroid Build Coastguard Worker public void m26() {} m27()137*795d594fSAndroid Build Coastguard Worker public void m27() {} m28()138*795d594fSAndroid Build Coastguard Worker public void m28() {} m29()139*795d594fSAndroid Build Coastguard Worker public void m29() {} m30()140*795d594fSAndroid Build Coastguard Worker public void m30() {} m31()141*795d594fSAndroid Build Coastguard Worker public void m31() {} m32()142*795d594fSAndroid Build Coastguard Worker public void m32() {} m33()143*795d594fSAndroid Build Coastguard Worker public void m33() {} m34()144*795d594fSAndroid Build Coastguard Worker public void m34() {} m35()145*795d594fSAndroid Build Coastguard Worker public void m35() {} m36()146*795d594fSAndroid Build Coastguard Worker public void m36() {} m37()147*795d594fSAndroid Build Coastguard Worker public void m37() {} m38()148*795d594fSAndroid Build Coastguard Worker public void m38() {} m39()149*795d594fSAndroid Build Coastguard Worker public void m39() {} m40()150*795d594fSAndroid Build Coastguard Worker public void m40() {} m41()151*795d594fSAndroid Build Coastguard Worker public void m41() {} m42()152*795d594fSAndroid Build Coastguard Worker public void m42() {} m43()153*795d594fSAndroid Build Coastguard Worker public void m43() {} m44()154*795d594fSAndroid Build Coastguard Worker public void m44() {} m45()155*795d594fSAndroid Build Coastguard Worker public void m45() {} m46()156*795d594fSAndroid Build Coastguard Worker public void m46() {} m47()157*795d594fSAndroid Build Coastguard Worker public void m47() {} m48()158*795d594fSAndroid Build Coastguard Worker public void m48() {} m49()159*795d594fSAndroid Build Coastguard Worker public void m49() {} m50()160*795d594fSAndroid Build Coastguard Worker public void m50() {} m51()161*795d594fSAndroid Build Coastguard Worker public void m51() {} m52()162*795d594fSAndroid Build Coastguard Worker public void m52() {} m53()163*795d594fSAndroid Build Coastguard Worker public void m53() {} m54()164*795d594fSAndroid Build Coastguard Worker public void m54() {} m55()165*795d594fSAndroid Build Coastguard Worker public void m55() {} m56()166*795d594fSAndroid Build Coastguard Worker public void m56() {} m57()167*795d594fSAndroid Build Coastguard Worker public void m57() {} m58()168*795d594fSAndroid Build Coastguard Worker public void m58() {} m59()169*795d594fSAndroid Build Coastguard Worker public void m59() {} m60()170*795d594fSAndroid Build Coastguard Worker public void m60() {} m61()171*795d594fSAndroid Build Coastguard Worker public void m61() {} m62()172*795d594fSAndroid Build Coastguard Worker public void m62() {} m63()173*795d594fSAndroid Build Coastguard Worker public void m63() {} m64()174*795d594fSAndroid Build Coastguard Worker public void m64() {} m65()175*795d594fSAndroid Build Coastguard Worker public void m65() {} m66()176*795d594fSAndroid Build Coastguard Worker public void m66() {} m67()177*795d594fSAndroid Build Coastguard Worker public void m67() {} m68()178*795d594fSAndroid Build Coastguard Worker public void m68() {} m69()179*795d594fSAndroid Build Coastguard Worker public void m69() {} m70()180*795d594fSAndroid Build Coastguard Worker public void m70() {} m71()181*795d594fSAndroid Build Coastguard Worker public void m71() {} m72()182*795d594fSAndroid Build Coastguard Worker public void m72() {} m73()183*795d594fSAndroid Build Coastguard Worker public void m73() {} m74()184*795d594fSAndroid Build Coastguard Worker public void m74() {} m75()185*795d594fSAndroid Build Coastguard Worker public void m75() {} m76()186*795d594fSAndroid Build Coastguard Worker public void m76() {} m77()187*795d594fSAndroid Build Coastguard Worker public void m77() {} m78()188*795d594fSAndroid Build Coastguard Worker public void m78() {} m79()189*795d594fSAndroid Build Coastguard Worker public void m79() {} m80()190*795d594fSAndroid Build Coastguard Worker public void m80() {} m81()191*795d594fSAndroid Build Coastguard Worker public void m81() {} m82()192*795d594fSAndroid Build Coastguard Worker public void m82() {} m83()193*795d594fSAndroid Build Coastguard Worker public void m83() {} m84()194*795d594fSAndroid Build Coastguard Worker public void m84() {} m85()195*795d594fSAndroid Build Coastguard Worker public void m85() {} m86()196*795d594fSAndroid Build Coastguard Worker public void m86() {} m87()197*795d594fSAndroid Build Coastguard Worker public void m87() {} m88()198*795d594fSAndroid Build Coastguard Worker public void m88() {} m89()199*795d594fSAndroid Build Coastguard Worker public void m89() {} m90()200*795d594fSAndroid Build Coastguard Worker public void m90() {} m91()201*795d594fSAndroid Build Coastguard Worker public void m91() {} m92()202*795d594fSAndroid Build Coastguard Worker public void m92() {} m93()203*795d594fSAndroid Build Coastguard Worker public void m93() {} m94()204*795d594fSAndroid Build Coastguard Worker public void m94() {} m95()205*795d594fSAndroid Build Coastguard Worker public void m95() {} m96()206*795d594fSAndroid Build Coastguard Worker public void m96() {} m97()207*795d594fSAndroid Build Coastguard Worker public void m97() {} m98()208*795d594fSAndroid Build Coastguard Worker public void m98() {} m99()209*795d594fSAndroid Build Coastguard Worker public void m99() {} m100()210*795d594fSAndroid Build Coastguard Worker public void m100() {} m101()211*795d594fSAndroid Build Coastguard Worker public void m101() {} m102()212*795d594fSAndroid Build Coastguard Worker public void m102() {} m103()213*795d594fSAndroid Build Coastguard Worker public void m103() {} m104()214*795d594fSAndroid Build Coastguard Worker public void m104() {} m105()215*795d594fSAndroid Build Coastguard Worker public void m105() {} m106()216*795d594fSAndroid Build Coastguard Worker public void m106() {} m107()217*795d594fSAndroid Build Coastguard Worker public void m107() {} m108()218*795d594fSAndroid Build Coastguard Worker public void m108() {} m109()219*795d594fSAndroid Build Coastguard Worker public void m109() {} m110()220*795d594fSAndroid Build Coastguard Worker public void m110() {} m111()221*795d594fSAndroid Build Coastguard Worker public void m111() {} m112()222*795d594fSAndroid Build Coastguard Worker public void m112() {} m113()223*795d594fSAndroid Build Coastguard Worker public void m113() {} m114()224*795d594fSAndroid Build Coastguard Worker public void m114() {} m115()225*795d594fSAndroid Build Coastguard Worker public void m115() {} m116()226*795d594fSAndroid Build Coastguard Worker public void m116() {} m117()227*795d594fSAndroid Build Coastguard Worker public void m117() {} m118()228*795d594fSAndroid Build Coastguard Worker public void m118() {} m119()229*795d594fSAndroid Build Coastguard Worker public void m119() {} m120()230*795d594fSAndroid Build Coastguard Worker public void m120() {} m121()231*795d594fSAndroid Build Coastguard Worker public void m121() {} m122()232*795d594fSAndroid Build Coastguard Worker public void m122() {} m123()233*795d594fSAndroid Build Coastguard Worker public void m123() {} m124()234*795d594fSAndroid Build Coastguard Worker public void m124() {} m125()235*795d594fSAndroid Build Coastguard Worker public void m125() {} m126()236*795d594fSAndroid Build Coastguard Worker public void m126() {} m127()237*795d594fSAndroid Build Coastguard Worker public void m127() {} m128()238*795d594fSAndroid Build Coastguard Worker public void m128() {} m129()239*795d594fSAndroid Build Coastguard Worker public void m129() {} m130()240*795d594fSAndroid Build Coastguard Worker public void m130() {} m131()241*795d594fSAndroid Build Coastguard Worker public void m131() {} m132()242*795d594fSAndroid Build Coastguard Worker public void m132() {} m133()243*795d594fSAndroid Build Coastguard Worker public void m133() {} m134()244*795d594fSAndroid Build Coastguard Worker public void m134() {} m135()245*795d594fSAndroid Build Coastguard Worker public void m135() {} m136()246*795d594fSAndroid Build Coastguard Worker public void m136() {} m137()247*795d594fSAndroid Build Coastguard Worker public void m137() {} m138()248*795d594fSAndroid Build Coastguard Worker public void m138() {} m139()249*795d594fSAndroid Build Coastguard Worker public void m139() {} m140()250*795d594fSAndroid Build Coastguard Worker public void m140() {} m141()251*795d594fSAndroid Build Coastguard Worker public void m141() {} m142()252*795d594fSAndroid Build Coastguard Worker public void m142() {} m143()253*795d594fSAndroid Build Coastguard Worker public void m143() {} m144()254*795d594fSAndroid Build Coastguard Worker public void m144() {} m145()255*795d594fSAndroid Build Coastguard Worker public void m145() {} m146()256*795d594fSAndroid Build Coastguard Worker public void m146() {} m147()257*795d594fSAndroid Build Coastguard Worker public void m147() {} m148()258*795d594fSAndroid Build Coastguard Worker public void m148() {} m149()259*795d594fSAndroid Build Coastguard Worker public void m149() {} m150()260*795d594fSAndroid Build Coastguard Worker public void m150() {} 261*795d594fSAndroid Build Coastguard Worker } 262