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