1*795d594fSAndroid Build Coastguard Worker /* 2*795d594fSAndroid Build Coastguard Worker * Copyright (C) 2021 The Android Open Source Project 3*795d594fSAndroid Build Coastguard Worker * 4*795d594fSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*795d594fSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*795d594fSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*795d594fSAndroid Build Coastguard Worker * 8*795d594fSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*795d594fSAndroid Build Coastguard Worker * 10*795d594fSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*795d594fSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*795d594fSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*795d594fSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*795d594fSAndroid Build Coastguard Worker * limitations under the License. 15*795d594fSAndroid Build Coastguard Worker */ 16*795d594fSAndroid Build Coastguard Worker 17*795d594fSAndroid Build Coastguard Worker public class Main { 18*795d594fSAndroid Build Coastguard Worker public static class Inner { 19*795d594fSAndroid Build Coastguard Worker String str; 20*795d594fSAndroid Build Coastguard Worker int[] arr = {1, 2, 3}; 21*795d594fSAndroid Build Coastguard Worker 22*795d594fSAndroid Build Coastguard Worker // Test 1: This test checks whether the SuspendCheck is removed from a simple field get. 23*795d594fSAndroid Build Coastguard Worker 24*795d594fSAndroid Build Coastguard Worker /// CHECK-START: java.lang.String Main$Inner.$noinline$removeSuspendCheckFieldGet() register (before) 25*795d594fSAndroid Build Coastguard Worker /// CHECK: SuspendCheck 26*795d594fSAndroid Build Coastguard Worker /// CHECK: InstanceFieldGet 27*795d594fSAndroid Build Coastguard Worker /// CHECK-START: java.lang.String Main$Inner.$noinline$removeSuspendCheckFieldGet() register (after) 28*795d594fSAndroid Build Coastguard Worker /// CHECK-NOT: SuspendCheck 29*795d594fSAndroid Build Coastguard Worker /// CHECK: InstanceFieldGet $noinline$removeSuspendCheckFieldGet()30*795d594fSAndroid Build Coastguard Worker public String $noinline$removeSuspendCheckFieldGet() { 31*795d594fSAndroid Build Coastguard Worker return this.str; 32*795d594fSAndroid Build Coastguard Worker } 33*795d594fSAndroid Build Coastguard Worker 34*795d594fSAndroid Build Coastguard Worker // Test 2: This test checks whether the SuspendCheck is removed from a simple array get. 35*795d594fSAndroid Build Coastguard Worker 36*795d594fSAndroid Build Coastguard Worker /// CHECK-START: int Main$Inner.$noinline$removeSuspendCheckArrayGet() register (before) 37*795d594fSAndroid Build Coastguard Worker /// CHECK: SuspendCheck 38*795d594fSAndroid Build Coastguard Worker /// CHECK: ArrayGet 39*795d594fSAndroid Build Coastguard Worker /// CHECK-START: int Main$Inner.$noinline$removeSuspendCheckArrayGet() register (after) 40*795d594fSAndroid Build Coastguard Worker /// CHECK-NOT: SuspendCheck 41*795d594fSAndroid Build Coastguard Worker /// CHECK: ArrayGet $noinline$removeSuspendCheckArrayGet()42*795d594fSAndroid Build Coastguard Worker public int $noinline$removeSuspendCheckArrayGet() { 43*795d594fSAndroid Build Coastguard Worker return this.arr[0]; 44*795d594fSAndroid Build Coastguard Worker } 45*795d594fSAndroid Build Coastguard Worker 46*795d594fSAndroid Build Coastguard Worker // Test 3: This test checks whether the SuspendCheck is removed from a simple array set. 47*795d594fSAndroid Build Coastguard Worker 48*795d594fSAndroid Build Coastguard Worker /// CHECK-START: int Main$Inner.$noinline$removeSuspendCheckArraySet() register (before) 49*795d594fSAndroid Build Coastguard Worker /// CHECK: SuspendCheck 50*795d594fSAndroid Build Coastguard Worker /// CHECK: ArraySet 51*795d594fSAndroid Build Coastguard Worker /// CHECK-START: int Main$Inner.$noinline$removeSuspendCheckArraySet() register (after) 52*795d594fSAndroid Build Coastguard Worker /// CHECK-NOT: SuspendCheck 53*795d594fSAndroid Build Coastguard Worker /// CHECK: ArraySet $noinline$removeSuspendCheckArraySet()54*795d594fSAndroid Build Coastguard Worker public int $noinline$removeSuspendCheckArraySet() { 55*795d594fSAndroid Build Coastguard Worker return this.arr[0] = 2; 56*795d594fSAndroid Build Coastguard Worker } 57*795d594fSAndroid Build Coastguard Worker } 58*795d594fSAndroid Build Coastguard Worker main(String[] args)59*795d594fSAndroid Build Coastguard Worker public static void main(String[] args) throws Exception { 60*795d594fSAndroid Build Coastguard Worker Inner i = new Inner(); 61*795d594fSAndroid Build Coastguard Worker i.$noinline$removeSuspendCheckFieldGet(); 62*795d594fSAndroid Build Coastguard Worker i.$noinline$removeSuspendCheckArrayGet(); 63*795d594fSAndroid Build Coastguard Worker i.$noinline$removeSuspendCheckArraySet(); 64*795d594fSAndroid Build Coastguard Worker } 65*795d594fSAndroid Build Coastguard Worker }