writeMethodSpec method
MethodSpecIndex
writeMethodSpec({
- required MethodDefOrRef method,
- required List<
MetadataType> generics,
Writes a MethodSpec
row, returning the corresponding index.
Implementation
MethodSpecIndex writeMethodSpec({
required MethodDefOrRef method,
required List<MetadataType> generics,
}) {
assert(
generics.isNotEmpty,
'MethodSpec requires at least one generic argument.',
);
final buffer = BytesBuilder(copy: false)
..addByte(CallingConvention.GENERICINST)
..add(CompressedInteger.encode(generics.length));
for (final genericType in generics) {
_encodeType(genericType, buffer);
}
final table = _tableStream[MetadataTableId.methodSpec];
final index = MethodSpecIndex(table.length);
table.add(
MethodSpec(
method: method,
instantiation: _blobHeap.insert(buffer.takeBytes()),
),
);
return index;
}