Drop CodegenBinding#enclosingClassDescriptor()

This commit is contained in:
Alexander Udalov
2014-07-14 22:37:21 +04:00
parent 78bdcae65e
commit c25d72d240
4 changed files with 9 additions and 15 deletions
@@ -856,10 +856,13 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
"constructor: " + constructor.getValueParameters().size();
MutableClosure closure = ImplementationBodyCodegen.this.context.closure;
if (closure != null && closure.getCaptureThis() != null) {
Type type = typeMapper.mapType(enclosingClassDescriptor(bindingContext, descriptor));
iv.load(0, classAsmType);
iv.getfield(classAsmType.getInternalName(), CAPTURED_THIS_FIELD, type.getDescriptor());
if (closure != null) {
ClassDescriptor captureThis = closure.getCaptureThis();
if (captureThis != null) {
iv.load(0, classAsmType);
Type type = typeMapper.mapType(captureThis);
iv.getfield(classAsmType.getInternalName(), CAPTURED_THIS_FIELD, type.getDescriptor());
}
}
int parameterIndex = 1; // localVariable 0 = this
@@ -31,9 +31,6 @@ import java.util.List;
import java.util.Map;
public interface CalculatedClosure {
@Nullable
ClassDescriptor getEnclosingClass();
@Nullable
ResolvedCall<ConstructorDescriptor> getSuperCall();
@@ -100,11 +100,6 @@ public class CodegenBinding {
return asmTypeForScriptDescriptor(bindingContext, scriptDescriptor);
}
public static ClassDescriptor enclosingClassDescriptor(BindingContext bindingContext, ClassDescriptor descriptor) {
CalculatedClosure closure = bindingContext.get(CLOSURE, descriptor);
return closure == null ? null : closure.getEnclosingClass();
}
@NotNull
public static ClassDescriptor anonymousClassForFunction(
@NotNull BindingContext bindingContext,
@@ -157,8 +152,8 @@ public class CodegenBinding {
return false;
}
ClassDescriptor enclosing = enclosingClassDescriptor(bindingContext, classDescriptor);
if (enclosing == null) {
MutableClosure closure = bindingContext.get(CLOSURE, classDescriptor);
if (closure == null || closure.getEnclosingClass() == null) {
return false;
}
@@ -50,7 +50,6 @@ public final class MutableClosure implements CalculatedClosure {
}
@Nullable
@Override
public ClassDescriptor getEnclosingClass() {
return enclosingClass;
}