Modifies the program in-place to add references to the named data segments. Args: program: The program to extract segments from. Modified in-place. segments: A list of buffers to append extracted segments to. Modified in-place. buffers: A list of unique buffers a
(
program: Program,
segments: List[AlignedData],
buffers: Sequence[bytes],
name_to_data_entry: Dict[str, DataEntry],
)
| 382 | |
| 383 | |
| 384 | def _extract_named_data( |
| 385 | program: Program, |
| 386 | segments: List[AlignedData], |
| 387 | buffers: Sequence[bytes], |
| 388 | name_to_data_entry: Dict[str, DataEntry], |
| 389 | ) -> None: |
| 390 | """Modifies the program in-place to add references to the named data |
| 391 | segments. |
| 392 | |
| 393 | Args: |
| 394 | program: The program to extract segments from. Modified in-place. |
| 395 | segments: A list of buffers to append extracted segments to. Modified in-place. |
| 396 | buffers: A list of unique buffers and the information required to |
| 397 | serialize them. Not modified. |
| 398 | name_to_data_entry: A map from the blob name to DataEntry. |
| 399 | Not modified. |
| 400 | """ |
| 401 | if program.named_data is not None and len(program.named_data) > 0: |
| 402 | raise ValueError("Program already has named data.") |
| 403 | |
| 404 | # Map from buffer_idx to segment_idx. |
| 405 | segment_index_map: Dict[int, int] = {} |
| 406 | |
| 407 | named_data: List[NamedData] = [] |
| 408 | for name, data_entry in name_to_data_entry.items(): |
| 409 | segment_index = segment_index_map.get(data_entry.buffer_index, None) |
| 410 | if segment_index is None: |
| 411 | segment_index = len(segments) |
| 412 | segment_index_map[data_entry.buffer_index] = segment_index |
| 413 | segments.append( |
| 414 | AlignedData( |
| 415 | Cord(buffers[data_entry.buffer_index]), data_entry.alignment |
| 416 | ) |
| 417 | ) |
| 418 | named_data.append(NamedData(key=name, segment_index=segment_index)) |
| 419 | program.named_data = named_data |
| 420 | |
| 421 | |
| 422 | def serialize_pte_binary( |
no test coverage detected