Main.java revision a06d66a4ee60926127b9498b7ff0b3e37a24fccf
1790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray/* 2790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray* Copyright (C) 2015 The Android Open Source Project 3790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray* 4790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray* Licensed under the Apache License, Version 2.0 (the "License"); 5790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray* you may not use this file except in compliance with the License. 6790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray* You may obtain a copy of the License at 7790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray* 8790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray* http://www.apache.org/licenses/LICENSE-2.0 9790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray* 10790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray* Unless required by applicable law or agreed to in writing, software 11790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray* distributed under the License is distributed on an "AS IS" BASIS, 12790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray* See the License for the specific language governing permissions and 14790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray* limitations under the License. 15790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray*/ 16790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray 17790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffraypublic final class Main { 18790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray 19790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray public void invokeVirtual() { 20790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray } 21790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray 22a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: void Main.inlineSharpenInvokeVirtual(Main) inliner (before) 23a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Invoke:v\d+>> InvokeStaticOrDirect 24a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: ReturnVoid 25790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray 26a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: void Main.inlineSharpenInvokeVirtual(Main) inliner (after) 27a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-NOT: InvokeStaticOrDirect 28790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray 29790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray public static void inlineSharpenInvokeVirtual(Main m) { 30790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray m.invokeVirtual(); 31790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray } 32790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray 33a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: int Main.inlineSharpenStringInvoke() inliner (before) 34a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Invoke:i\d+>> InvokeStaticOrDirect 35a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Invoke>>] 36790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray 37a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: int Main.inlineSharpenStringInvoke() inliner (after) 38a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-NOT: InvokeStaticOrDirect 39790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray 40a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: int Main.inlineSharpenStringInvoke() inliner (after) 41a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Field:i\d+>> InstanceFieldGet 42a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Field>>] 43790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray 44790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray public static int inlineSharpenStringInvoke() { 45790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray return "Foo".length(); 46790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray } 47790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray 48790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray public static void main(String[] args) { 49790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray inlineSharpenInvokeVirtual(new Main()); 50790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray if (inlineSharpenStringInvoke() != 3) { 51790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray throw new Error("Expected 3"); 52790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray } 53790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray } 54790412959a6413a585f45fc5f77fe7106311a00cNicolas Geoffray} 55