blob: 84cc34b2fb887ec650cf63b41f3ec423d42acf7a [file] [log] [blame]
// Copyright (c) 2023, 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.profile.art.model;
import com.android.tools.r8.references.ClassReference;
import java.util.function.Consumer;
/**
* Represents a class rule from an ART baseline profile, backed by {@link ClassReference}. Class
* rules currently contain no other information than the class reference.
*/
public class ExternalArtProfileClassRule extends ExternalArtProfileRule {
private final ClassReference classReference;
ExternalArtProfileClassRule(ClassReference classReference) {
assert classReference != null;
this.classReference = classReference;
}
public static Builder builder() {
return new Builder();
}
@Override
public void accept(
Consumer<ExternalArtProfileClassRule> classRuleConsumer,
Consumer<ExternalArtProfileMethodRule> methodRuleConsumer) {
classRuleConsumer.accept(this);
}
public ClassReference getClassReference() {
return classReference;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
ExternalArtProfileClassRule methodRule = (ExternalArtProfileClassRule) obj;
return classReference.equals(methodRule.classReference);
}
@Override
public int hashCode() {
return classReference.hashCode();
}
public static class Builder {
private ClassReference classReference;
public Builder setClassReference(ClassReference classReference) {
this.classReference = classReference;
return this;
}
public ExternalArtProfileClassRule build() {
return new ExternalArtProfileClassRule(classReference);
}
}
}