| // Copyright (c) 2020, 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.ir.analysis.framework.intraprocedural; |
| |
| /** |
| * A transfer function that defines the abstract semantics of the instructions in the program |
| * according to some abstract state {@link StateType}. |
| */ |
| public interface AbstractTransferFunction< |
| Block, Instruction, StateType extends AbstractState<StateType>> { |
| |
| TransferFunctionResult<StateType> apply(Instruction instruction, StateType state); |
| |
| default StateType computeBlockEntryState( |
| Block block, Block predecessor, StateType predecessorExitState) { |
| return predecessorExitState; |
| } |
| } |