/* * Copyright (C) 2016 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. */ class Main { public String getA() { return "A"; } public String getB() { return "B"; } public String getC() { return "C"; } } class TestInline { public int inlineMonomorphic(Super s) { return s.getValue(); } public int inlinePolymorphic(Super s) { return s.getValue(); } public int inlineMegamorphic(Super s) { return s.getValue(); } public int inlineMissingTypes(Super s) { return s.getValue(); } public int noInlineCache(Super s) { return s.getValue(); } public int inlineMultiMonomorphic(Super s, Secret sec) { return s.getValue() + sec.getIdentity(); } public int inlineMultiPolymorphic(Super s, Secret sec) { return s.getValue() + sec.getIdentity(); } public int inlineTriplePolymorphic(Super s, Secret sec, Secret thr) { return s.getValue() + sec.getIdentity() + thr.getIdentity(); } public int inlineMultiMegamorphic(Super s, Secret sec) { return s.getValue() + sec.getIdentity(); } public int inlineMultiMissingTypes(Super s, Secret sec) { return s.getValue() + sec.getIdentity(); } public int noInlineCacheMulti(Super s, Secret sec) { return s.getValue() + sec.getIdentity(); } } class TestInlineSubtype extends TestInline { public void foobar() { this.inlineMonomorphic(new SubA()); } } abstract class Secret { abstract int getIdentity(); } abstract class Super extends Secret { abstract int getValue(); } class SubA extends Super { int getValue() { return 42; } int getIdentity() { return 24; } } class SubB extends Super { int getValue() { return 38; }; int getIdentity() { return 83; } } class SubD extends Super { int getValue() { return 20; }; int getIdentity() { return 2; }; } class SubE extends Super { int getValue() { return 16; }; int getIdentity() { return 61; }; } // Add a class with lots of methods so we can test profile guided compilation triggers. class ZLotsOfMethods { public void m1() {} public void m2() {} public void m3() {} public void m4() {} public void m5() {} public void m6() {} public void m7() {} public void m8() {} public void m9() {} public void m10() {} public void m11() {} public void m12() {} public void m13() {} public void m14() {} public void m15() {} public void m16() {} public void m17() {} public void m18() {} public void m19() {} public void m20() {} public void m21() {} public void m22() {} public void m23() {} public void m24() {} public void m25() {} public void m26() {} public void m27() {} public void m28() {} public void m29() {} public void m30() {} public void m31() {} public void m32() {} public void m33() {} public void m34() {} public void m35() {} public void m36() {} public void m37() {} public void m38() {} public void m39() {} public void m40() {} public void m41() {} public void m42() {} public void m43() {} public void m44() {} public void m45() {} public void m46() {} public void m47() {} public void m48() {} public void m49() {} public void m50() {} public void m51() {} public void m52() {} public void m53() {} public void m54() {} public void m55() {} public void m56() {} public void m57() {} public void m58() {} public void m59() {} public void m60() {} public void m61() {} public void m62() {} public void m63() {} public void m64() {} public void m65() {} public void m66() {} public void m67() {} public void m68() {} public void m69() {} public void m70() {} public void m71() {} public void m72() {} public void m73() {} public void m74() {} public void m75() {} public void m76() {} public void m77() {} public void m78() {} public void m79() {} public void m80() {} public void m81() {} public void m82() {} public void m83() {} public void m84() {} public void m85() {} public void m86() {} public void m87() {} public void m88() {} public void m89() {} public void m90() {} public void m91() {} public void m92() {} public void m93() {} public void m94() {} public void m95() {} public void m96() {} public void m97() {} public void m98() {} public void m99() {} public void m100() {} public void m101() {} public void m102() {} public void m103() {} public void m104() {} public void m105() {} public void m106() {} public void m107() {} public void m108() {} public void m109() {} public void m110() {} public void m111() {} public void m112() {} public void m113() {} public void m114() {} public void m115() {} public void m116() {} public void m117() {} public void m118() {} public void m119() {} public void m120() {} public void m121() {} public void m122() {} public void m123() {} public void m124() {} public void m125() {} public void m126() {} public void m127() {} public void m128() {} public void m129() {} public void m130() {} public void m131() {} public void m132() {} public void m133() {} public void m134() {} public void m135() {} public void m136() {} public void m137() {} public void m138() {} public void m139() {} public void m140() {} public void m141() {} public void m142() {} public void m143() {} public void m144() {} public void m145() {} public void m146() {} public void m147() {} public void m148() {} public void m149() {} public void m150() {} }