Class ListLiteralAsmGenerator
java.lang.Object
org.ek9lang.compiler.backend.jvm.AbstractAsmGenerator
org.ek9lang.compiler.backend.jvm.ListLiteralAsmGenerator
- All Implemented Interfaces:
Consumer<ListLiteralInstr>
final class ListLiteralAsmGenerator
extends AbstractAsmGenerator
implements Consumer<ListLiteralInstr>
Generates JVM bytecode for LIST_LITERAL IR instructions.
Uses pre-sized ArrayList constructor for optimal allocation:
new ArrayList(N) avoids all resizing and internal array copies.
Then populates via per-element _addAss() calls.
Bytecode sequence:
- Execute setup instructions (evaluate elements, RETAIN/SCOPE_REGISTER)
NEW listType+DUP+LDC elementCount+INVOKESPECIAL <init>(I)V- Store to result variable
- For each element: load result, load element,
INVOKEVIRTUAL _addAss(Any)V
-
Field Summary
Fields inherited from class AbstractAsmGenerator
classWriter, constructTargetTuple -
Constructor Summary
ConstructorsConstructorDescriptionListLiteralAsmGenerator(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
-
ListLiteralAsmGenerator
ListLiteralAsmGenerator(ConstructTargetTuple constructTargetTuple, OutputVisitor outputVisitor, org.objectweb.asm.ClassWriter classWriter)
-
-
Method Details
-
accept
- Specified by:
acceptin interfaceConsumer<ListLiteralInstr>
-