1# Copyright (C) 2016 The Android Open Source Project 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14 15.class public LSmaliTests; 16.super Ljava/lang/Object; 17 18## CHECK-START: void SmaliTests.testInstanceOf_EQ0_NotInlined(java.lang.Object) builder (after) 19## CHECK-DAG: <<Cst0:i\d+>> IntConstant 0 20## CHECK-DAG: <<IOf:z\d+>> InstanceOf 21## CHECK-DAG: Equal [<<IOf>>,<<Cst0>>] 22 23## CHECK-START: void SmaliTests.testInstanceOf_EQ0_NotInlined(java.lang.Object) instruction_simplifier (before) 24## CHECK: CheckCast 25 26## CHECK-START: void SmaliTests.testInstanceOf_EQ0_NotInlined(java.lang.Object) instruction_simplifier (after) 27## CHECK-NOT: CheckCast 28 29.method public static testInstanceOf_EQ0_NotInlined(Ljava/lang/Object;)V 30 .registers 3 31 32 const v0, 0x0 33 instance-of v1, p0, LSubclassC; 34 if-eq v1, v0, :return 35 36 check-cast p0, LSubclassC; 37 invoke-virtual {p0}, LSubclassC;->$noinline$g()V 38 39 :return 40 return-void 41 42.end method 43 44## CHECK-START: void SmaliTests.testInstanceOf_EQ1_NotInlined(java.lang.Object) builder (after) 45## CHECK-DAG: <<Cst1:i\d+>> IntConstant 1 46## CHECK-DAG: <<IOf:z\d+>> InstanceOf 47## CHECK-DAG: Equal [<<IOf>>,<<Cst1>>] 48 49## CHECK-START: void SmaliTests.testInstanceOf_EQ1_NotInlined(java.lang.Object) instruction_simplifier (before) 50## CHECK: CheckCast 51 52## CHECK-START: void SmaliTests.testInstanceOf_EQ1_NotInlined(java.lang.Object) instruction_simplifier (after) 53## CHECK-NOT: CheckCast 54 55.method public static testInstanceOf_EQ1_NotInlined(Ljava/lang/Object;)V 56 .registers 3 57 58 const v0, 0x1 59 instance-of v1, p0, LSubclassC; 60 if-eq v1, v0, :invoke 61 return-void 62 63 :invoke 64 check-cast p0, LSubclassC; 65 invoke-virtual {p0}, LSubclassC;->$noinline$g()V 66 return-void 67 68.end method 69 70## CHECK-START: void SmaliTests.testInstanceOf_NE0_NotInlined(java.lang.Object) builder (after) 71## CHECK-DAG: <<Cst0:i\d+>> IntConstant 0 72## CHECK-DAG: <<IOf:z\d+>> InstanceOf 73## CHECK-DAG: NotEqual [<<IOf>>,<<Cst0>>] 74 75## CHECK-START: void SmaliTests.testInstanceOf_NE0_NotInlined(java.lang.Object) instruction_simplifier (before) 76## CHECK: CheckCast 77 78## CHECK-START: void SmaliTests.testInstanceOf_NE0_NotInlined(java.lang.Object) instruction_simplifier (after) 79## CHECK-NOT: CheckCast 80 81.method public static testInstanceOf_NE0_NotInlined(Ljava/lang/Object;)V 82 .registers 3 83 84 const v0, 0x0 85 instance-of v1, p0, LSubclassC; 86 if-ne v1, v0, :invoke 87 return-void 88 89 :invoke 90 check-cast p0, LSubclassC; 91 invoke-virtual {p0}, LSubclassC;->$noinline$g()V 92 return-void 93 94.end method 95 96## CHECK-START: void SmaliTests.testInstanceOf_NE1_NotInlined(java.lang.Object) builder (after) 97## CHECK-DAG: <<Cst1:i\d+>> IntConstant 1 98## CHECK-DAG: <<IOf:z\d+>> InstanceOf 99## CHECK-DAG: NotEqual [<<IOf>>,<<Cst1>>] 100 101## CHECK-START: void SmaliTests.testInstanceOf_NE1_NotInlined(java.lang.Object) instruction_simplifier (before) 102## CHECK: CheckCast 103 104## CHECK-START: void SmaliTests.testInstanceOf_NE1_NotInlined(java.lang.Object) instruction_simplifier (after) 105## CHECK-NOT: CheckCast 106 107.method public static testInstanceOf_NE1_NotInlined(Ljava/lang/Object;)V 108 .registers 3 109 110 const v0, 0x1 111 instance-of v1, p0, LSubclassC; 112 if-ne v1, v0, :return 113 114 check-cast p0, LSubclassC; 115 invoke-virtual {p0}, LSubclassC;->$noinline$g()V 116 117 :return 118 return-void 119 120.end method 121