blob: 2c67ac36ea4926383c571320ca039977bb49fca6 [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.utils;
import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexEncodedMethod;
import com.android.tools.r8.graph.DexReference;
import com.android.tools.r8.graph.GraphLens;
import com.google.common.collect.Sets;
import java.util.Set;
import java.util.function.Consumer;
public class LensUtils {
public static Set<DexEncodedMethod> rewrittenWithRenamedSignature(
Set<DexEncodedMethod> methods, DexDefinitionSupplier definitions, GraphLens lens) {
Set<DexEncodedMethod> result = Sets.newIdentityHashSet();
for (DexEncodedMethod method : methods) {
result.add(lens.mapDexEncodedMethod(method, definitions));
}
return result;
}
public static <T extends DexReference> void rewriteAndApplyIfNotPrimitiveType(
GraphLens graphLens, T reference, Consumer<T> rewrittenConsumer) {
T rewrittenReference = graphLens.rewriteReference(reference);
// Enum unboxing can change a class type to int which leads to errors going forward since
// the root set should not have primitive types.
if (rewrittenReference.isDexType() && rewrittenReference.asDexType().isPrimitiveType()) {
return;
}
rewrittenConsumer.accept(rewrittenReference);
}
}