Module internal function that manages deserialization of modules.
(binary: &[u8])
| 287 | |
| 288 | /// Module internal function that manages deserialization of modules. |
| 289 | fn deserialize_compiled_module(binary: &[u8]) -> BinaryLoaderResult<CompiledModule> { |
| 290 | let binary_len = binary.len(); |
| 291 | let mut cursor = VersionedCursor::new(binary)?; |
| 292 | let table_count = load_table_count(&mut cursor)?; |
| 293 | let mut tables: Vec<Table> = Vec::new(); |
| 294 | read_tables(&mut cursor, table_count, &mut tables)?; |
| 295 | let content_len = check_tables(&mut tables, binary_len)?; |
| 296 | |
| 297 | let mut table_contents_buffer = Vec::new(); |
| 298 | let table_contents = read_table_contents( |
| 299 | &mut cursor, |
| 300 | &mut table_contents_buffer, |
| 301 | content_len as usize, |
| 302 | )?; |
| 303 | |
| 304 | let mut module = CompiledModule { |
| 305 | version: cursor.version(), |
| 306 | self_module_handle_idx: load_module_handle_index(&mut cursor)?, |
| 307 | ..Default::default() |
| 308 | }; |
| 309 | |
| 310 | build_compiled_module(&mut module, &table_contents, &tables)?; |
| 311 | |
| 312 | Ok(module) |
| 313 | } |
| 314 | |
| 315 | /// Reads all the table headers. |
| 316 | /// |
no test coverage detected