//arrow-meta/arrow.meta.dsl.codegen/CodegenSyntax
interface CodegenSyntax : AsmSyntax, IrSyntax
MetaPluginSyntax |
Name | Summary |
---|---|
codegen | [jvm] open fun codegen(applyFunction: CompilerContext.(receiver: StackValue, resolvedCall: ResolvedCall<>, c: ExpressionCodegenExtension.Context) -> StackValue?, applyProperty: CompilerContext.(receiver: StackValue, resolvedCall: ResolvedCall<>, c: ExpressionCodegenExtension.Context) -> StackValue?, generateClassSyntheticParts: CompilerContext.(codegen: ImplementationBodyCodegen) -> Unit): Codegen The codegen function allows us to interact with applyFunction, applyProperty, and generateClassSyntheticParts. Each one of these functions are invoked as the compiled and type checked tree of KtElement and DeclarationDescriptor is processed for codegen. Here, we can alter the bytecode emitted using the Meta ASM DSL. This DSL mirrors the IR DSL offering a match + transform function that allows us to alter the codegen tree. |
irAnonymousInitializer | [jvm] open fun Meta.irAnonymousInitializer(f: IrUtils.(IrAnonymousInitializer) -> IrStatement?): IRGeneration |
irBlock | [jvm] open fun Meta.irBlock(f: IrUtils.(IrBlock) -> IrExpression?): IRGeneration |
irBlockBody | [jvm] open fun Meta.irBlockBody(f: IrUtils.(IrBlockBody) -> IrBody?): IRGeneration |
irBody | [jvm] open fun Meta.irBody(f: IrUtils.(IrBody) -> IrBody?): IRGeneration |
irBranch | [jvm] open fun Meta.irBranch(f: IrUtils.(IrBranch) -> IrBranch?): IRGeneration |
irBreak | [jvm] open fun Meta.irBreak(f: IrUtils.(IrBreak) -> IrExpression?): IRGeneration |
irBreakContinue | [jvm] open fun Meta.irBreakContinue(f: IrUtils.(IrBreakContinue) -> IrExpression?): IRGeneration |
irCall | [jvm] open fun Meta.irCall(f: IrUtils.(IrCall) -> IrElement?): IRGeneration |
irCallableReference | [jvm] open fun Meta.irCallableReference(f: IrUtils.(IrCallableReference<*>) -> IrElement?): IRGeneration |
irCatch | [jvm] open fun Meta.irCatch(f: IrUtils.(IrCatch) -> IrCatch?): IRGeneration |
irClass | [jvm] open fun Meta.irClass(f: IrUtils.(IrClass) -> IrStatement?): IRGeneration |
irClassReference | [jvm] open fun Meta.irClassReference(f: IrUtils.(IrClassReference) -> IrExpression?): IRGeneration |
irComposite | [jvm] open fun Meta.irComposite(f: IrUtils.(IrComposite) -> IrExpression?): IRGeneration |
irConst | [jvm] open fun Meta.irConst(f: IrUtils.(IrConst<*>) -> IrExpression?): IRGeneration |
irConstructor | [jvm] open fun Meta.irConstructor(f: IrUtils.(IrConstructor) -> IrStatement?): IRGeneration |
irConstructorCall | [jvm] open fun Meta.irConstructorCall(f: IrUtils.(IrConstructorCall) -> IrElement?): IRGeneration |
irContainerExpression | [jvm] open fun Meta.irContainerExpression(f: IrUtils.(IrContainerExpression) -> IrExpression?): IRGeneration |
irContinue | [jvm] open fun Meta.irContinue(f: IrUtils.(IrContinue) -> IrExpression?): IRGeneration |
irDeclaration | [jvm] open fun Meta.irDeclaration(f: IrUtils.(IrDeclaration) -> IrStatement?): IRGeneration |
irDeclarationReference | [jvm] open fun Meta.irDeclarationReference(f: IrUtils.(IrDeclarationReference) -> IrExpression?): IRGeneration |
irDelegatingConstructorCall | [jvm] open fun Meta.irDelegatingConstructorCall(f: IrUtils.(IrDelegatingConstructorCall) -> IrElement?): IRGeneration |
irDoWhileLoop | [jvm] open fun Meta.irDoWhileLoop(f: IrUtils.(IrDoWhileLoop) -> IrExpression?): IRGeneration |
irDump | [jvm] open fun Meta.irDump(): IRGeneration |
irDumpKotlinLike | [jvm] open fun Meta.irDumpKotlinLike(options: KotlinLikeDumpOptions = KotlinLikeDumpOptions()): IRGeneration |
irDynamicExpression | [jvm] open fun Meta.irDynamicExpression(f: IrUtils.(IrDynamicExpression) -> IrExpression?): IRGeneration |
irDynamicMemberExpression | [jvm] open fun Meta.irDynamicMemberExpression(f: IrUtils.(IrDynamicMemberExpression) -> IrExpression?): IRGeneration |
irDynamicOperatorExpression | [jvm] open fun Meta.irDynamicOperatorExpression(f: IrUtils.(IrDynamicOperatorExpression) -> IrExpression?): IRGeneration |
irElseBranch | [jvm] open fun Meta.irElseBranch(f: IrUtils.(IrElseBranch) -> IrElseBranch?): IRGeneration |
irEnumConstructorCall | [jvm] open fun Meta.irEnumConstructorCall(f: IrUtils.(IrEnumConstructorCall) -> IrElement?): IRGeneration |
irEnumEntry | [jvm] open fun Meta.irEnumEntry(f: IrUtils.(IrEnumEntry) -> IrStatement?): IRGeneration |
irErrorCallExpression | [jvm] open fun Meta.irErrorCallExpression(f: IrUtils.(IrErrorCallExpression) -> IrExpression?): IRGeneration |
irErrorDeclaration | [jvm] open fun Meta.irErrorDeclaration(f: IrUtils.(IrErrorDeclaration) -> IrStatement?): IRGeneration |
irErrorExpression | [jvm] open fun Meta.irErrorExpression(f: IrUtils.(IrErrorExpression) -> IrExpression?): IRGeneration |
irExpression | [jvm] open fun Meta.irExpression(f: IrUtils.(IrExpression) -> IrExpression?): IRGeneration |
irExpressionBody | [jvm] open fun Meta.irExpressionBody(f: IrUtils.(IrExpressionBody) -> IrBody?): IRGeneration |
irField | [jvm] open fun Meta.irField(f: IrUtils.(IrField) -> IrStatement?): IRGeneration |
irFieldAccess | [jvm] open fun Meta.irFieldAccess(f: IrUtils.(IrFieldAccessExpression) -> IrExpression?): IRGeneration |
irFile | [jvm] open fun Meta.irFile(f: IrUtils.(IrFile) -> IrFile?): IRGeneration |
irFunction | [jvm] open fun Meta.irFunction(f: IrUtils.(IrFunction) -> IrStatement?): IRGeneration |
irFunctionAccess | [jvm] open fun Meta.irFunctionAccess(f: IrUtils.(IrFunctionAccessExpression) -> IrElement?): IRGeneration |
irFunctionReference | [jvm] open fun Meta.irFunctionReference(f: IrUtils.(IrFunctionReference) -> IrElement?): IRGeneration |
IrGeneration | [jvm] open fun IrSyntax.IrGeneration(generate: (compilerContext: CompilerContext, moduleFragment: IrModuleFragment, pluginContext: IrPluginContext) -> Unit): IRGeneration IR, The intermediate representation format, is a structured text format with significant indentation that contains all the information the compiler knows about a program. At this point, the compiler knows the structure of a program based on its sources, what the typed expressions are, and how each of the generic type arguments gets applied. The compiler emits information in this phase that is processed by interpreters and compilers targeting any platform. IR Example |
irGetClass | [jvm] open fun Meta.irGetClass(f: IrUtils.(IrGetClass) -> IrExpression?): IRGeneration |
irGetEnumValue | [jvm] open fun Meta.irGetEnumValue(f: IrUtils.(IrGetEnumValue) -> IrExpression?): IRGeneration |
irGetField | [jvm] open fun Meta.irGetField(f: IrUtils.(IrGetField) -> IrExpression?): IRGeneration |
irGetObjectValue | [jvm] open fun Meta.irGetObjectValue(f: IrUtils.(IrGetObjectValue) -> IrExpression?): IRGeneration |
irGetValue | [jvm] open fun Meta.irGetValue(f: IrUtils.(IrGetValue) -> IrExpression?): IRGeneration |
irInstanceInitializerCall | [jvm] open fun Meta.irInstanceInitializerCall(f: IrUtils.(IrInstanceInitializerCall) -> IrExpression?): IRGeneration |
irLocalDelegatedProperty | [jvm] open fun Meta.irLocalDelegatedProperty(f: IrUtils.(IrLocalDelegatedProperty) -> IrStatement?): IRGeneration |
irLocalDelegatedPropertyReference | [jvm] open fun Meta.irLocalDelegatedPropertyReference(f: IrUtils.(IrLocalDelegatedPropertyReference) -> IrElement?): IRGeneration |
irLoop | [jvm] open fun Meta.irLoop(f: IrUtils.(IrLoop) -> IrExpression?): IRGeneration |
irMemberAccess | [jvm] open fun Meta.irMemberAccess(f: IrUtils.(IrMemberAccessExpression<*>) -> IrElement?): IRGeneration |
irModuleFragment | [jvm] open fun Meta.irModuleFragment(f: IrUtils.(IrModuleFragment) -> IrModuleFragment?): IRGeneration |
irProperty | [jvm] open fun Meta.irProperty(f: IrUtils.(IrProperty) -> IrStatement?): IRGeneration |
irPropertyReference | [jvm] open fun Meta.irPropertyReference(f: IrUtils.(IrPropertyReference) -> IrElement?): IRGeneration |
irReturn | [jvm] open fun Meta.irReturn(f: IrUtils.(IrReturn) -> IrExpression?): IRGeneration |
irSetField | [jvm] open fun Meta.irSetField(f: IrUtils.(IrSetField) -> IrExpression?): IRGeneration |
irSetValue | [jvm] open fun Meta.irSetValue(f: IrUtils.(IrSetValue) -> IrExpression?): IRGeneration |
irSimpleFunction | [jvm] open fun Meta.irSimpleFunction(f: IrUtils.(IrSimpleFunction) -> IrStatement?): IRGeneration |
irSingletonReference | [jvm] open fun Meta.irSingletonReference(f: IrUtils.(IrGetSingletonValue) -> IrExpression?): IRGeneration |
irSpreadElement | [jvm] open fun Meta.irSpreadElement(f: IrUtils.(IrSpreadElement) -> IrSpreadElement?): IRGeneration |
irStringConcatenation | [jvm] open fun Meta.irStringConcatenation(f: IrUtils.(IrStringConcatenation) -> IrExpression?): IRGeneration |
irSuspendableExpression | [jvm] open fun Meta.irSuspendableExpression(f: IrUtils.(IrSuspendableExpression) -> IrExpression?): IRGeneration |
irSuspensionPoint | [jvm] open fun Meta.irSuspensionPoint(f: IrUtils.(IrSuspensionPoint) -> IrExpression?): IRGeneration |
irSyntheticBody | [jvm] open fun Meta.irSyntheticBody(f: IrUtils.(IrSyntheticBody) -> IrBody?): IRGeneration |
irThrow | [jvm] open fun Meta.irThrow(f: IrUtils.(IrThrow) -> IrExpression?): IRGeneration |
irTry | [jvm] open fun Meta.irTry(f: IrUtils.(IrTry) -> IrExpression?): IRGeneration |
irTypeAlias | [jvm] open fun Meta.irTypeAlias(f: IrUtils.(IrTypeAlias) -> IrTypeAlias?): IRGeneration |
irTypeOperator | [jvm] open fun Meta.irTypeOperator(f: IrUtils.(IrTypeOperatorCall) -> IrExpression?): IRGeneration |
irTypeParameter | [jvm] open fun Meta.irTypeParameter(f: IrUtils.(IrTypeParameter) -> IrStatement?): IRGeneration |
irValueAccess | [jvm] open fun Meta.irValueAccess(f: IrUtils.(IrValueAccessExpression) -> IrExpression?): IRGeneration |
irValueParameter | [jvm] open fun Meta.irValueParameter(f: IrUtils.(IrValueParameter) -> IrStatement?): IRGeneration |
irVararg | [jvm] open fun Meta.irVararg(f: IrUtils.(IrVararg) -> IrExpression?): IRGeneration |
irVariable | [jvm] open fun Meta.irVariable(f: IrUtils.(IrVariable) -> IrStatement?): IRGeneration |
irWhen | [jvm] open fun Meta.irWhen(f: IrUtils.(IrWhen) -> IrExpression?): IRGeneration |
irWhileLoop | [jvm] open fun Meta.irWhileLoop(f: IrUtils.(IrWhileLoop) -> IrExpression?): IRGeneration |
Do you like Arrow?
✖