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