262 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Java
		
	
	
	
			
		
		
	
	
			262 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Java
		
	
	
	
| /*
 | |
|  * 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() {}
 | |
| }
 |