writeCodeUnits method

Uint8List writeCodeUnits(
  1. Iterable<CodeUnit> codeUnits
)

Bundles codeUnits, each of which must already be loaded.

Implementation

Uint8List writeCodeUnits(Iterable<CodeUnit> codeUnits) {
  const entryWriter = ASTBinaryWriter();

  var entries = [
    for (var codeUnit in codeUnits)
      ASTBinarySectionData(
        ASTBinarySection.archiveEntry.id,
        entryWriter.writeCodeUnit(codeUnit),
      ),
  ];

  var metadata = BytesBuffer();
  metadata.writeLeb128String(ApolloVM.VERSION);
  metadata.writeLeb128UnsignedInt(entries.length);

  return ASTBinaryContainerCodec.encode(
    sections: [
      ASTBinarySectionData(ASTBinarySection.metadata.id, metadata.toBytes()),
      ...entries,
    ],
    flags: ASTBinaryFlags.archive,
    signer: signer,
  );
}