Class DictLiteralAsmGenerator
java.lang.Object
org.ek9lang.compiler.backend.jvm.AbstractAsmGenerator
org.ek9lang.compiler.backend.jvm.DictLiteralAsmGenerator
- All Implemented Interfaces:
Consumer<DictLiteralInstr>
final class DictLiteralAsmGenerator
extends AbstractAsmGenerator
implements Consumer<DictLiteralInstr>
Generates JVM bytecode for DICT_LITERAL IR instructions.
Creates the dict wrapper via default constructor, then for each entry
constructs a DictEntry wrapper with key and value, and calls
_addAss(DictEntry) on the dict wrapper.
Bytecode sequence:
- Execute setup instructions (evaluate keys/values, RETAIN/SCOPE_REGISTER)
NEW dictType+DUP+INVOKESPECIAL <init>()V- Store to result variable
- For each entry:
NEW entryType+DUP- Load key, load value
INVOKESPECIAL entryType.<init>(K,V)V- Load result, swap,
INVOKEVIRTUAL dictType._addAss(DictEntry)V
-
Field Summary
Fields inherited from class AbstractAsmGenerator
classWriter, constructTargetTuple -
Constructor Summary
ConstructorsConstructorDescriptionDictLiteralAsmGenerator(ConstructTargetTuple constructTargetTuple, OutputVisitor outputVisitor, org.objectweb.asm.ClassWriter classWriter) -
Method Summary
Methods inherited from class AbstractAsmGenerator
convertToJvmDescriptor, convertToJvmName, extractFieldName, generateBooleanLiteral, generateCharacterLiteral, generateDebugInfo, generateFloatLiteral, generateIntegerLiteral, generateLoadVariable, generateLocalVariableTable, generateMethodDescriptor, generateObjectLiteral, generateStackOperation, generateStoreVariable, generateStoreVariableAsInt, generateStringLiteral, getCurrentMethodVisitor, getFieldDescriptor, getMethodContext, getOrCreateLabel, getOwnerClassName, getVariableIndex, isFieldAccess, isVariableAllocated, isVariableFieldAccess, setCurrentMethodVisitor, setSharedMethodContext, toJvmFieldName, trackTempVariableFromLiteral, trackTempVariableFromLoad
-
Constructor Details
-
DictLiteralAsmGenerator
DictLiteralAsmGenerator(ConstructTargetTuple constructTargetTuple, OutputVisitor outputVisitor, org.objectweb.asm.ClassWriter classWriter)
-
-
Method Details
-
accept
- Specified by:
acceptin interfaceConsumer<DictLiteralInstr>
-