blob: e889a40ba1423fb789cdbf93e3d6e72a5cc207cd [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.graph;
import com.android.tools.r8.graph.analysis.EnqueuerAnalysis;
import com.android.tools.r8.shaking.Enqueuer.EnqueuerDefinitionSupplier;
import com.android.tools.r8.shaking.EnqueuerWorklist;
public class GenericSignatureEnqueuerAnalysis extends EnqueuerAnalysis {
private final EnqueuerDefinitionSupplier enqueuerDefinitionSupplier;
public GenericSignatureEnqueuerAnalysis(EnqueuerDefinitionSupplier enqueuerDefinitionSupplier) {
this.enqueuerDefinitionSupplier = enqueuerDefinitionSupplier;
}
@Override
public void processNewlyLiveClass(DexProgramClass clazz, EnqueuerWorklist worklist) {
new GenericSignatureTypeVisitor(clazz, enqueuerDefinitionSupplier::definitionFor)
.visitClassSignature(clazz.getClassSignature());
}
@Override
public void processNewlyLiveField(ProgramField field, ProgramDefinition context) {
new GenericSignatureTypeVisitor(context, enqueuerDefinitionSupplier::definitionFor)
.visitFieldTypeSignature(field.getDefinition().getGenericSignature());
}
@Override
public void processNewlyLiveMethod(ProgramMethod method, ProgramDefinition context) {
new GenericSignatureTypeVisitor(context, enqueuerDefinitionSupplier::definitionFor)
.visitMethodSignature(method.getDefinition().getGenericSignature());
}
}