Cache resolved Views in Map
This commit is contained in:
+8
@@ -21,6 +21,10 @@ import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall
|
||||
import org.jetbrains.jet.codegen.StackValue
|
||||
import org.jetbrains.jet.codegen.state.JetTypeMapper
|
||||
import org.jetbrains.org.objectweb.asm.commons.InstructionAdapter
|
||||
import org.jetbrains.jet.codegen.ClassBodyCodegen
|
||||
import org.jetbrains.jet.codegen.ClassBuilder
|
||||
import org.jetbrains.jet.lang.psi.JetClassOrObject
|
||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor
|
||||
|
||||
public trait ExpressionCodegenExtension {
|
||||
class object : ProjectExtensionDescriptor<ExpressionCodegenExtension>("org.jetbrains.kotlin.expressionCodegenExtension", javaClass<ExpressionCodegenExtension>())
|
||||
@@ -32,4 +36,8 @@ public trait ExpressionCodegenExtension {
|
||||
|
||||
// return null if not applicable
|
||||
public fun apply(receiver: StackValue, resolvedCall: ResolvedCall<*>, c: ExpressionCodegenExtension.Context): StackValue?
|
||||
|
||||
public fun generateClassSyntheticParts(codegen: ClassBuilder, clazz: JetClassOrObject, descriptor: DeclarationDescriptor) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -23,6 +23,7 @@ import com.intellij.util.ArrayUtil;
|
||||
import kotlin.*;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.codegen.extensions.ExpressionCodegenExtension;
|
||||
import org.jetbrains.kotlin.backend.common.CodegenUtil;
|
||||
import org.jetbrains.kotlin.backend.common.CodegenUtilKt;
|
||||
import org.jetbrains.kotlin.backend.common.DataClassMethodGenerator;
|
||||
@@ -400,6 +401,10 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
|
||||
generateToArray();
|
||||
|
||||
genClosureFields(context.closure, v, typeMapper);
|
||||
|
||||
for (ExpressionCodegenExtension extension : ExpressionCodegenExtension.Default.getInstances(state.getProject())) {
|
||||
extension.generateClassSyntheticParts(v, myClass, descriptor);
|
||||
}
|
||||
}
|
||||
|
||||
private void generateReflectionObjectFieldIfNeeded() {
|
||||
|
||||
Reference in New Issue
Block a user