integration into codegen system

This commit is contained in:
Denis Zharkov
2014-07-09 12:46:23 +04:00
committed by Alexander Udalov
parent 1ecca9f40b
commit feb0918d99
5 changed files with 37 additions and 1 deletions
@@ -138,6 +138,8 @@ public class PropertyCodegen {
AnnotationCodegen annotationCodegen = AnnotationCodegen.forAnnotationDefaultValue(visitor, typeMapper);
annotationCodegen.generateAnnotationDefaultValue(constant, descriptor.getType());
}
visitor.visitEnd();
}
private boolean generateBackingField(@NotNull JetNamedDeclaration p, @NotNull PropertyDescriptor descriptor) {
@@ -41,6 +41,10 @@ public abstract class SignatureCollectingClassBuilderFactory(
return delegate.asBytes((builder as SignatureCollectingClassBuilder)._delegate)
}
public override fun asText(builder: ClassBuilder?): String? {
return delegate.asText((builder as SignatureCollectingClassBuilder)._delegate)
}
private inner class SignatureCollectingClassBuilder(
private val classCreatedFor: JvmDeclarationOrigin,
internal val _delegate: ClassBuilder
@@ -190,6 +190,7 @@ public class AnonymousObjectTransformer {
InlineResult result = inliner.doInline(resultVisitor, new LocalVarRemapper(parameters, 0), false, LabelOwner.NOT_APPLICABLE);
resultVisitor.visitMaxs(-1, -1);
resultVisitor.visitEnd();
return result;
}
@@ -276,6 +277,7 @@ public class AnonymousObjectTransformer {
InlineResult result = inliner.doInline(capturedFieldInitializer, new LocalVarRemapper(constructorParameters, 0), false,
LabelOwner.NOT_APPLICABLE);
constructorVisitor.visitMaxs(-1, -1);
constructorVisitor.visitEnd();
AsmUtil.genClosureFields(capturedFieldsToGenerate, classBuilder);
//TODO for inline method make public class
@@ -17,6 +17,7 @@
package org.jetbrains.jet.codegen.inline;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.org.objectweb.asm.AnnotationVisitor;
import org.jetbrains.org.objectweb.asm.Label;
import org.jetbrains.org.objectweb.asm.MethodVisitor;
import org.jetbrains.org.objectweb.asm.commons.InstructionAdapter;
@@ -76,4 +77,30 @@ public class RemapVisitor extends InliningInstructionAdapter {
super.visitFieldInsn(opcode, owner, name, desc);
}
}
@Override
public AnnotationVisitor visitAnnotationDefault() {
return null;
}
@Override
public void visitMaxs(int maxStack, int maxLocals) {
}
@Override
public void visitEnd() {
}
@Override
public AnnotationVisitor visitAnnotation(String desc, boolean visible) {
return null;
}
@Override
public AnnotationVisitor visitParameterAnnotation(int parameter, String desc, boolean visible) {
return null;
}
}
@@ -23,6 +23,7 @@ import org.jetbrains.jet.codegen.*;
import org.jetbrains.jet.codegen.binding.CodegenBinding;
import org.jetbrains.jet.codegen.inline.InlineCodegenUtil;
import org.jetbrains.jet.codegen.intrinsics.IntrinsicMethods;
import org.jetbrains.jet.codegen.optimization.OptimizationClassBuilderFactory;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.descriptors.ScriptDescriptor;
import org.jetbrains.jet.lang.diagnostics.DiagnosticHolder;
@@ -152,7 +153,7 @@ public class GenerationState {
this.intrinsics = new IntrinsicMethods();
this.classFileFactory = new ClassFileFactory(this, new BuilderFactoryForDuplicateSignatureDiagnostics(
builderFactory, this.bindingContext, diagnostics));
new OptimizationClassBuilderFactory(builderFactory), this.bindingContext, diagnostics));
this.generateNotNullAssertions = generateNotNullAssertions;
this.generateNotNullParamAssertions = generateNotNullParamAssertions;