Introduce ClassDescriptor#getDefaultObjectDescriptor()

ClassDescriptor#getClassObjectDescriptor (with old semantics) is now a utility
Process usages and replace with calls to a new method where appropriate
This commit is contained in:
Pavel V. Talanov
2015-01-30 15:33:09 +03:00
parent 945072a129
commit f482768acf
26 changed files with 68 additions and 88 deletions
@@ -1915,7 +1915,7 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
Type type = typeMapper.mapType((ClassDescriptor) enumClass);
return StackValue.field(type, type, descriptor.getName().asString(), true, StackValue.none());
}
ClassDescriptor classObjectDescriptor = classDescriptor.getClassObjectDescriptor();
ClassDescriptor classObjectDescriptor = classDescriptor.getDefaultObjectDescriptor();
if (classObjectDescriptor != null) {
return StackValue.singleton(classObjectDescriptor, typeMapper);
}
@@ -960,7 +960,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
private void generateFieldForSingleton() {
if (isEnumEntry(descriptor) || isClassObject(descriptor)) return;
ClassDescriptor classObjectDescriptor = descriptor.getClassObjectDescriptor();
ClassDescriptor classObjectDescriptor = descriptor.getDefaultObjectDescriptor();
ClassDescriptor fieldTypeDescriptor;
JetClassOrObject original;
if (isObject(descriptor)) {
@@ -1022,7 +1022,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
private int putClassObjectInLocalVar(ExpressionCodegen codegen) {
FrameMap frameMap = codegen.myFrameMap;
ClassDescriptor classObjectDescriptor = descriptor.getClassObjectDescriptor();
ClassDescriptor classObjectDescriptor = descriptor.getDefaultObjectDescriptor();
int classObjectIndex = frameMap.getIndex(classObjectDescriptor);
if (classObjectIndex == -1) {
classObjectIndex = frameMap.enter(classObjectDescriptor, OBJECT_TYPE);
@@ -62,8 +62,8 @@ public class ClassContext extends FieldOwnerContext<ClassDescriptor> {
@Nullable
public CodegenContext getClassObjectContext() {
if (getContextDescriptor().getClassObjectDescriptor() != null) {
return findChildContext(getContextDescriptor().getClassObjectDescriptor());
if (getContextDescriptor().getDefaultObjectDescriptor() != null) {
return findChildContext(getContextDescriptor().getDefaultObjectDescriptor());
}
return null;
}