| // Copyright (c) 2019, 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.shaking; |
| |
| import com.android.tools.r8.graph.ProgramMethod; |
| import com.android.tools.r8.shaking.RootSetUtils.RootSetBuilder; |
| import java.util.function.Consumer; |
| |
| public abstract class DelayedRootSetActionItem { |
| |
| public boolean isInterfaceMethodSyntheticBridgeAction() { |
| return false; |
| } |
| |
| public InterfaceMethodSyntheticBridgeAction asInterfaceMethodSyntheticBridgeAction() { |
| return null; |
| } |
| |
| public static class InterfaceMethodSyntheticBridgeAction extends DelayedRootSetActionItem { |
| private final ProgramMethod methodToKeep; |
| private final ProgramMethod singleTarget; |
| private final Consumer<RootSetBuilder> action; |
| |
| InterfaceMethodSyntheticBridgeAction( |
| ProgramMethod methodToKeep, ProgramMethod singleTarget, Consumer<RootSetBuilder> action) { |
| this.methodToKeep = methodToKeep; |
| this.singleTarget = singleTarget; |
| this.action = action; |
| } |
| |
| public ProgramMethod getMethodToKeep() { |
| return methodToKeep; |
| } |
| |
| public ProgramMethod getSingleTarget() { |
| return singleTarget; |
| } |
| |
| public Consumer<RootSetBuilder> getAction() { |
| return action; |
| } |
| |
| @Override |
| public boolean isInterfaceMethodSyntheticBridgeAction() { |
| return true; |
| } |
| |
| @Override |
| public InterfaceMethodSyntheticBridgeAction asInterfaceMethodSyntheticBridgeAction() { |
| return this; |
| } |
| } |
| } |