Skip to content

Commit 1377e86

Browse files
natebiggsCommit Queue
authored andcommitted
[kernel] Read constant table before deserializing metadata in BinaryBuilder.
Change-Id: Icf5d22e32eefb371c4b60d4039ab0455181450b5 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/421360 Reviewed-by: Jens Johansen <[email protected]> Commit-Queue: Nate Biggs <[email protected]>
1 parent 772197c commit 1377e86

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

pkg/kernel/lib/binary/ast_from_binary.dart

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -890,12 +890,6 @@ class BinaryBuilder {
890890
_byteOffset = index.binaryOffsetForCanonicalNames;
891891
readLinkTable(component.root);
892892

893-
// TODO(alexmarkov): reverse metadata mappings and read forwards
894-
_byteOffset = index.binaryOffsetForStringTable; // Read backwards.
895-
_readMetadataMappings(component, index.binaryOffsetForMetadataPayloads);
896-
897-
_associateMetadata(component, _componentStartOffset);
898-
899893
_byteOffset = index.binaryOffsetForSourceTable;
900894
Map<Uri, Source> uriToSource = readUriToSource(readCoverage: true);
901895
_mergeUriToSource(component.uriToSource, uriToSource);
@@ -904,6 +898,14 @@ class BinaryBuilder {
904898
readConstantTable();
905899
// We don't need the constant table index on the dart side.
906900

901+
// TODO(alexmarkov): reverse metadata mappings and read forwards
902+
// Ensure constant table is loaded before metadata is read as it may contain
903+
// references to the constant table.
904+
_byteOffset = index.binaryOffsetForStringTable; // Read backwards.
905+
_readMetadataMappings(component, index.binaryOffsetForMetadataPayloads);
906+
907+
_associateMetadata(component, _componentStartOffset);
908+
907909
int numberOfLibraries = index.libraryCount;
908910

909911
SubComponentView? result;

0 commit comments

Comments
 (0)