blob: 5a9e20ca5230055fb094c855ab864ae217067c5a [file] [log] [blame]
// 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.optimize;
import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexClass;
import com.android.tools.r8.graph.DexMethod;
import com.android.tools.r8.graph.ProgramMethod;
import com.android.tools.r8.graph.ResolutionResult.SingleResolutionResult;
public class MemberRebindingUtils {
public static boolean isNonReboundMethodReference(
AppView<? extends AppInfoWithClassHierarchy> appView,
DexMethod method,
ProgramMethod context) {
DexClass clazz = appView.definitionForHolder(method, context);
if (clazz == null) {
return false;
}
SingleResolutionResult resolutionResult =
appView.appInfo().resolveMethodOn(clazz, method).asSingleResolution();
return resolutionResult != null
&& resolutionResult.getResolvedHolder().getType() != method.getHolderType();
}
}