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:

  1. Execute setup instructions (evaluate keys/values, RETAIN/SCOPE_REGISTER)
  2. NEW dictType + DUP + INVOKESPECIAL <init>()V
  3. Store to result variable
  4. For each entry:
    1. NEW entryType + DUP
    2. Load key, load value
    3. INVOKESPECIAL entryType.<init>(K,V)V
    4. Load result, swap, INVOKEVIRTUAL dictType._addAss(DictEntry)V