|  | /* | 
|  | * Copyright (c) 2018, the R8 project authors. Please see the AUTHORS file | 
|  | * for details. All rights reserved. Use of this source code is governed by a | 
|  | * BSD-style license that can be found in the LICENSE file. | 
|  | */ | 
|  |  | 
|  | package com.android.tools.r8.cf; | 
|  |  | 
|  | import static org.junit.Assert.assertFalse; | 
|  |  | 
|  | import com.android.tools.r8.R8; | 
|  | import com.android.tools.r8.R8Command; | 
|  | import com.android.tools.r8.ToolHelper; | 
|  | import com.android.tools.r8.cf.code.CfInstruction; | 
|  | import com.android.tools.r8.cf.code.CfMonitor; | 
|  | import com.android.tools.r8.graph.CfCode; | 
|  | import com.android.tools.r8.graph.DexEncodedMethod; | 
|  | import com.android.tools.r8.origin.Origin; | 
|  | import com.android.tools.r8.utils.AndroidAppConsumers; | 
|  | import com.android.tools.r8.utils.codeinspector.CodeInspector; | 
|  | import java.util.Collections; | 
|  | import java.util.List; | 
|  | import org.junit.Test; | 
|  |  | 
|  | public class SynchronizedNoopTestRunner { | 
|  | private byte[] data; | 
|  | static final Class CLASS = SynchronizedNoopTest.class; | 
|  |  | 
|  | @Test | 
|  | public void testSynchronizedNoop() throws Exception { | 
|  | AndroidAppConsumers a = new AndroidAppConsumers(); | 
|  | R8.run( | 
|  | R8Command.builder() | 
|  | .setDisableTreeShaking(true) | 
|  | .setDisableMinification(true) | 
|  | .addClassProgramData(ToolHelper.getClassAsBytes(CLASS), Origin.unknown()) | 
|  | .addLibraryFiles(ToolHelper.getJava8RuntimeJar()) | 
|  | .setProgramConsumer(a.wrapClassFileConsumer(null)) | 
|  | .build()); | 
|  | CodeInspector inspector = new CodeInspector(a.build()); | 
|  | DexEncodedMethod method = | 
|  | inspector.clazz(CLASS).method("void", "noop", Collections.emptyList()).getMethod(); | 
|  | CfCode cfCode = method.getCode().asCfCode(); | 
|  | List<CfInstruction> insns = cfCode.getInstructions(); | 
|  | boolean hasMonitor = insns.stream().anyMatch(insn -> insn instanceof CfMonitor); | 
|  | assertFalse(hasMonitor); | 
|  | } | 
|  | } |