| /* | |
| * 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() {} | |
| } |