package com.oracle.svm.hosted.meta;
import com.oracle.graal.pointsto.meta.AnalysisType;
import jdk.vm.ci.meta.JavaKind;
public class HostedArrayClass extends HostedClass {
private final HostedType componentType;
private final HostedType baseType;
private final int arrayDepth;
public HostedArrayClass(HostedUniverse universe, AnalysisType wrapped, JavaKind kind, JavaKind storageKind, HostedClass superClass, HostedInterface[] interfaces, HostedType componentType) {
super(universe, wrapped, kind, storageKind, superClass, interfaces, true);
this.componentType = componentType;
HostedType cur = this;
int depth = 0;
while (cur.getComponentType() != null) {
cur = cur.getComponentType();
depth++;
}
this.baseType = cur;
this.arrayDepth = depth;
assert componentType.arrayType == null;
componentType.arrayType = this;
}
@Override
public boolean isInstanceClass() {
assert !wrapped.isInstanceClass();
return false;
}
@Override
public boolean isArray() {
assert wrapped.isArray();
return true;
}
@Override
public final HostedType getComponentType() {
return componentType;
}
@Override
public HostedType getBaseType() {
return baseType;
}
@Override
public int getArrayDimension() {
return arrayDepth;
}
@Override
public HostedField[] getInstanceFields(boolean includeSuperclasses) {
return new HostedField[0];
}
@Override
public boolean isLocal() {
return false;
}
@Override
public boolean isMember() {
return false;
}
@Override
int compareToEqualClass(HostedType other) {
assert getClass().equals(other.getClass());
return getComponentType().compareTo(other.getComponentType());
}
}