//arrow-meta/arrow.meta.dsl.codegen/CodegenSyntax

CodegenSyntax

interface CodegenSyntax : AsmSyntax, IrSyntax

Inheritors

 
MetaPluginSyntax

Functions

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?

Arrow Org
<