blob: 950e31fdfb8ba1ec85969468cbc9645637c021f7 [file] [log] [blame]
// Copyright (c) 2017, 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.code;
import com.android.tools.r8.graph.DexMethod;
import com.android.tools.r8.ir.optimize.Inliner.InlineAction;
import com.android.tools.r8.ir.optimize.InliningOracle;
import java.util.List;
public abstract class InvokeMethod extends Invoke {
private DexMethod method;
public InvokeMethod(DexMethod target, Value result, List<Value> arguments) {
super(result, arguments);
this.method = target;
}
public DexMethod getInvokedMethod() {
return method;
}
@Override
public boolean identicalNonValueParts(Instruction other) {
return method == other.asInvokeMethod().getInvokedMethod();
}
@Override
public int compareNonValueParts(Instruction other) {
return getInvokedMethod().slowCompareTo(other.asInvokeMethod().getInvokedMethod());
}
@Override
public String toString() {
return super.toString() + "; method: " + method.toSourceString();
}
@Override
public boolean isInvokeMethod() {
return true;
}
@Override
public InvokeMethod asInvokeMethod() {
return this;
}
public abstract InlineAction computeInlining(InliningOracle decider);
}