19099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez/*
29099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez * Copyright (C) 2015 The Android Open Source Project
39099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez *
49099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez * Licensed under the Apache License, Version 2.0 (the "License");
59099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez * you may not use this file except in compliance with the License.
69099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez * You may obtain a copy of the License at
79099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez *
89099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez *      http://www.apache.org/licenses/LICENSE-2.0
99099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez *
109099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez * Unless required by applicable law or agreed to in writing, software
119099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez * distributed under the License is distributed on an "AS IS" BASIS,
129099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez * See the License for the specific language governing permissions and
149099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez * limitations under the License.
159099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez */
169099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez
179099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchezpublic class Main {
18a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil  /// CHECK-START: void Main.InstanceOfPreChecked(java.lang.Object) instruction_simplifier (after)
19a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil  /// CHECK:       InstanceOf must_do_null_check:false
209099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez  public void InstanceOfPreChecked(Object o) throws Exception {
219099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez    o.toString();
229099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez    if (o instanceof Main) {
239099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez      throw new Exception();
249099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez    }
259099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez  }
269099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez
27a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil  /// CHECK-START: void Main.InstanceOf(java.lang.Object) instruction_simplifier (after)
28a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil  /// CHECK:       InstanceOf must_do_null_check:true
299099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez  public void InstanceOf(Object o) throws Exception {
309099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez    if (o instanceof Main) {
319099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez      throw new Exception();
329099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez    }
339099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez  }
349099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez
35a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil  /// CHECK-START: void Main.CheckCastPreChecked(java.lang.Object) instruction_simplifier (after)
36a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil  /// CHECK:       CheckCast must_do_null_check:false
379099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez  public void CheckCastPreChecked(Object o) {
389099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez    o.toString();
39e918d38535f210fe669eb3f18e7f286e5b687419Guillaume "Vermeille" Sanchez    ((Main)o).$noinline$Bar();
409099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez  }
419099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez
42a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil  /// CHECK-START: void Main.CheckCast(java.lang.Object) instruction_simplifier (after)
43a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil  /// CHECK:       CheckCast must_do_null_check:true
449099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez  public void CheckCast(Object o) {
45e918d38535f210fe669eb3f18e7f286e5b687419Guillaume "Vermeille" Sanchez    ((Main)o).$noinline$Bar();
469099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez  }
479099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez
48e918d38535f210fe669eb3f18e7f286e5b687419Guillaume "Vermeille" Sanchez  void $noinline$Bar() {throw new RuntimeException();}
499099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez
509099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez  public static void main(String[] sa) {
519099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez    Main t = new Main();
529099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez  }
539099ef709240f3b039f521f344c778e846840e8fGuillaume "Vermeille" Sanchez}
54